From 2e53110ef74055fae56ef47b01855f43e23e8b74 Mon Sep 17 00:00:00 2001 From: supernovahs <91280922+supernovahs@users.noreply.github.com> Date: Thu, 10 Oct 2024 22:49:22 +0530 Subject: [PATCH] update alloy (#144) this pr updates alloy to latest, uses forge bind --alloy to generate bindings . Since those bindings use alloy::providers, alloy::primitives. I had to change the use of alloy_provider to alloy::providers etc for the whole codebase, else it gives the classic error `Same variable , but a different version` --------- Co-authored-by: supernovahs --- .gitmodules | 2 +- Cargo.lock | 436 +- Cargo.toml | 59 +- crates/chainio/clients/avsregistry/Cargo.toml | 4 +- .../chainio/clients/avsregistry/src/error.rs | 5 +- .../clients/avsregistry/src/fake_reader.rs | 8 +- .../chainio/clients/avsregistry/src/reader.rs | 43 +- .../chainio/clients/avsregistry/src/writer.rs | 18 +- crates/chainio/clients/elcontracts/Cargo.toml | 4 +- .../chainio/clients/elcontracts/src/error.rs | 7 +- .../chainio/clients/elcontracts/src/reader.rs | 27 +- .../chainio/clients/elcontracts/src/writer.rs | 45 +- crates/chainio/clients/eth/Cargo.toml | 9 +- crates/chainio/clients/eth/src/client.rs | 6 +- .../clients/eth/src/instrumented_client.rs | 47 +- crates/chainio/clients/fireblocks/Cargo.toml | 4 +- .../chainio/clients/fireblocks/src/error.rs | 2 +- crates/chainio/clients/fireblocks/src/lib.rs | 8 +- crates/chainio/txmanager/Cargo.toml | 9 +- .../txmanager/src/simple_tx_manager.rs | 22 +- crates/crypto/bls/src/lib.rs | 10 +- crates/eigen-cli/Cargo.toml | 1 + crates/eigen-cli/src/eigen_address.rs | 29 +- crates/eigen-cli/src/lib.rs | 6 +- crates/nodeapi/src/lib.rs | 8 +- .../services/avsregistry/src/chaincaller.rs | 2 +- .../src/fake_avs_registry_service.rs | 2 +- crates/services/avsregistry/src/lib.rs | 2 +- crates/services/bls_aggregation/Cargo.toml | 1 + .../bls_aggregation/src/bls_agg_test.rs | 52 +- crates/services/operatorsinfo/Cargo.toml | 3 +- .../src/operatorsinfo_inmemory.rs | 9 +- crates/signer/Cargo.toml | 1 + crates/signer/src/signer.rs | 14 +- crates/signer/src/web3_signer.rs | 16 +- crates/types/src/operator.rs | 16 +- crates/utils/Cargo.toml | 12 +- crates/utils/json/AVSDirectory.json | 1 - crates/utils/json/BLSApkRegistry.json | 1 - crates/utils/json/ContractsRegistry.json | 1 - crates/utils/json/DelegationManager.json | 1 - crates/utils/json/ECDSAStakeRegistry.json | 1 - crates/utils/json/EigenPod.json | 1 - crates/utils/json/EigenPodManager.json | 1 - crates/utils/json/IAVSDirectory.json | 1 - crates/utils/json/IBLSSignatureChecker.json | 1 - crates/utils/json/IERC20.json | 185 - crates/utils/json/IRegistryCoordinator.json | 1 - crates/utils/json/ISlasher.json | 1 - crates/utils/json/IStrategy.json | 1 - crates/utils/json/MockAvsServiceManager.json | 1 - crates/utils/json/OperatorStateRetriever.json | 1 - crates/utils/json/RegistryCoordinator.json | 1 - crates/utils/json/ServiceManagerBase.json | 1 - crates/utils/json/StakeRegistry.json | 1 - crates/utils/json/StrategyManager.json | 1 - crates/utils/src/address.rs | 219 + crates/utils/src/addressupgradeable.rs | 221 + crates/utils/src/avsdirectory.rs | 5653 +++++++ crates/utils/src/beaconchainproofs.rs | 221 + crates/utils/src/binding.rs | 132 - crates/utils/src/bitmaputils.rs | 219 + crates/utils/src/blsapkregistry.rs | 5475 ++++++ crates/utils/src/blsapkregistrystorage.rs | 5222 ++++++ crates/utils/src/blssignaturechecker.rs | 3304 ++++ crates/utils/src/bn254.rs | 216 + crates/utils/src/checkpointsupgradeable.rs | 222 + crates/utils/src/configsreadwriter.rs | 425 + crates/utils/src/context.rs | 219 + crates/utils/src/contextupgradeable.rs | 392 + crates/utils/src/contractsregistry.rs | 1527 ++ crates/utils/src/delegationmanager.rs | 13873 ++++++++++++++++ crates/utils/src/deploymockavs.rs | 2701 +++ crates/utils/src/deploymockavsregistries.rs | 2270 +++ .../deploytokensstrategiescreatequorums.rs | 567 + crates/utils/src/ecdsa.rs | 216 + crates/utils/src/ecdsaservicemanagerbase.rs | 3829 +++++ crates/utils/src/ecdsastakeregistry.rs | 8203 +++++++++ .../src/ecdsastakeregistryequalweight.rs | 9455 +++++++++++ .../src/ecdsastakeregistryeventsanderrors.rs | 3159 ++++ .../src/ecdsastakeregistrypermissioned.rs | 9455 +++++++++++ crates/utils/src/ecdsastakeregistrystorage.rs | 3155 ++++ crates/utils/src/ecdsaupgradeable.rs | 221 + crates/utils/src/eigenlayercontractsparser.rs | 427 + crates/utils/src/eip1271signatureutils.rs | 222 + crates/utils/src/eip712.rs | 218 + crates/utils/src/ejectionmanager.rs | 3818 +++++ crates/utils/src/emptycontract.rs | 418 + crates/utils/src/endian.rs | 218 + crates/utils/src/erc1967proxy.rs | 785 + crates/utils/src/erc1967upgrade.rs | 661 + crates/utils/src/erc20.rs | 2570 +++ crates/utils/src/iavsdirectory.rs | 2217 +++ crates/utils/src/ibeacon.rs | 423 + crates/utils/src/ibeaconchainoracle.rs | 446 + crates/utils/src/iblsapkregistry.rs | 4378 +++++ crates/utils/src/iblssignaturechecker.rs | 2488 +++ crates/utils/src/idelegationmanager.rs | 9646 +++++++++++ crates/utils/src/ieigenpod.rs | 6840 ++++++++ crates/utils/src/ieigenpodmanager.rs | 6124 +++++++ crates/utils/src/iejectionmanager.rs | 1809 ++ crates/utils/src/ierc1271.rs | 463 + crates/utils/src/ierc1271upgradeable.rs | 468 + crates/utils/src/ierc165.rs | 440 + crates/utils/src/ierc1822proxiable.rs | 425 + crates/utils/src/ierc20.rs | 1669 ++ crates/utils/src/ierc20metadata.rs | 2102 +++ crates/utils/src/ierc20permit.rs | 848 + crates/utils/src/ierc721.rs | 2557 +++ crates/utils/src/ierc721enumerable.rs | 3051 ++++ crates/utils/src/ierc721metadata.rs | 3004 ++++ crates/utils/src/ierc721tokenreceiver.rs | 500 + crates/utils/src/iethposdeposit.rs | 1018 ++ crates/utils/src/iindexregistry.rs | 2705 +++ crates/utils/src/indexregistry.rs | 3401 ++++ crates/utils/src/indexregistrystorage.rs | 3314 ++++ crates/utils/src/initializable.rs | 390 + crates/utils/src/ipausable.rs | 1782 ++ crates/utils/src/ipauserregistry.rs | 916 + crates/utils/src/iregistry.rs | 428 + crates/utils/src/iregistrycoordinator.rs | 5696 +++++++ crates/utils/src/irewardscoordinator.rs | 8438 ++++++++++ crates/utils/src/iservicemanager.rs | 2655 +++ crates/utils/src/iservicemanagerui.rs | 1634 ++ crates/utils/src/isignatureutils.rs | 221 + crates/utils/src/islasher.rs | 4960 ++++++ crates/utils/src/isocketupdater.rs | 621 + crates/utils/src/istakeregistry.rs | 6639 ++++++++ crates/utils/src/istrategy.rs | 2224 +++ crates/utils/src/istrategymanager.rs | 3976 +++++ crates/utils/src/lib.rs | 148 +- crates/utils/src/mathupgradeable.rs | 221 + crates/utils/src/merkle.rs | 218 + crates/utils/src/mockavscontractsparser.rs | 426 + crates/utils/src/mockavsservicemanager.rs | 6864 ++++++++ crates/utils/src/mockerc20.rs | 2639 +++ crates/utils/src/mockerc721.rs | 3150 ++++ crates/utils/src/operatorstateretriever.rs | 2112 +++ crates/utils/src/ownable.rs | 906 + crates/utils/src/ownableupgradeable.rs | 1041 ++ crates/utils/src/pausable.rs | 1782 ++ crates/utils/src/pauserregistry.rs | 1356 ++ crates/utils/src/proxy.rs | 229 + crates/utils/src/proxyadmin.rs | 1775 ++ crates/utils/src/registeroperators.rs | 695 + crates/utils/src/registrycoordinator.rs | 13749 +++++++++++++++ .../utils/src/registrycoordinatorstorage.rs | 7121 ++++++++ crates/utils/src/safecastupgradeable.rs | 221 + crates/utils/src/safeerc20.rs | 219 + crates/utils/src/servicemanagerbase.rs | 3678 ++++ crates/utils/src/servicemanagerbasestorage.rs | 3534 ++++ crates/utils/src/servicemanagerrouter.rs | 806 + .../utils/src/signaturecheckerupgradeable.rs | 222 + crates/utils/src/stakeregistry.rs | 7822 +++++++++ crates/utils/src/stakeregistrystorage.rs | 7341 ++++++++ crates/utils/src/storageslot.rs | 219 + crates/utils/src/strategybase.rs | 4265 +++++ crates/utils/src/strategybasetvllimits.rs | 5395 ++++++ crates/utils/src/strategymanager.rs | 7679 +++++++++ crates/utils/src/strings.rs | 219 + crates/utils/src/stringsupgradeable.rs | 221 + .../src/tokenandstrategycontractsparser.rs | 427 + .../utils/src/transparentupgradeableproxy.rs | 1649 ++ crates/utils/src/updateoperators.rs | 695 + ...get_operators_stake_in_quorums_at_block.rs | 7 +- testing/testing-utils/Cargo.toml | 5 +- testing/testing-utils/src/anvil_constants.rs | 24 +- testing/testing-utils/src/transaction.rs | 3 +- 168 files changed, 280504 insertions(+), 755 deletions(-) delete mode 100644 crates/utils/json/AVSDirectory.json delete mode 100644 crates/utils/json/BLSApkRegistry.json delete mode 100644 crates/utils/json/ContractsRegistry.json delete mode 100644 crates/utils/json/DelegationManager.json delete mode 100644 crates/utils/json/ECDSAStakeRegistry.json delete mode 100644 crates/utils/json/EigenPod.json delete mode 100644 crates/utils/json/EigenPodManager.json delete mode 100644 crates/utils/json/IAVSDirectory.json delete mode 100644 crates/utils/json/IBLSSignatureChecker.json delete mode 100644 crates/utils/json/IERC20.json delete mode 100644 crates/utils/json/IRegistryCoordinator.json delete mode 100644 crates/utils/json/ISlasher.json delete mode 100644 crates/utils/json/IStrategy.json delete mode 100644 crates/utils/json/MockAvsServiceManager.json delete mode 100644 crates/utils/json/OperatorStateRetriever.json delete mode 100644 crates/utils/json/RegistryCoordinator.json delete mode 100644 crates/utils/json/ServiceManagerBase.json delete mode 100644 crates/utils/json/StakeRegistry.json delete mode 100644 crates/utils/json/StrategyManager.json create mode 100644 crates/utils/src/address.rs create mode 100644 crates/utils/src/addressupgradeable.rs create mode 100644 crates/utils/src/avsdirectory.rs create mode 100644 crates/utils/src/beaconchainproofs.rs delete mode 100644 crates/utils/src/binding.rs create mode 100644 crates/utils/src/bitmaputils.rs create mode 100644 crates/utils/src/blsapkregistry.rs create mode 100644 crates/utils/src/blsapkregistrystorage.rs create mode 100644 crates/utils/src/blssignaturechecker.rs create mode 100644 crates/utils/src/bn254.rs create mode 100644 crates/utils/src/checkpointsupgradeable.rs create mode 100644 crates/utils/src/configsreadwriter.rs create mode 100644 crates/utils/src/context.rs create mode 100644 crates/utils/src/contextupgradeable.rs create mode 100644 crates/utils/src/contractsregistry.rs create mode 100644 crates/utils/src/delegationmanager.rs create mode 100644 crates/utils/src/deploymockavs.rs create mode 100644 crates/utils/src/deploymockavsregistries.rs create mode 100644 crates/utils/src/deploytokensstrategiescreatequorums.rs create mode 100644 crates/utils/src/ecdsa.rs create mode 100644 crates/utils/src/ecdsaservicemanagerbase.rs create mode 100644 crates/utils/src/ecdsastakeregistry.rs create mode 100644 crates/utils/src/ecdsastakeregistryequalweight.rs create mode 100644 crates/utils/src/ecdsastakeregistryeventsanderrors.rs create mode 100644 crates/utils/src/ecdsastakeregistrypermissioned.rs create mode 100644 crates/utils/src/ecdsastakeregistrystorage.rs create mode 100644 crates/utils/src/ecdsaupgradeable.rs create mode 100644 crates/utils/src/eigenlayercontractsparser.rs create mode 100644 crates/utils/src/eip1271signatureutils.rs create mode 100644 crates/utils/src/eip712.rs create mode 100644 crates/utils/src/ejectionmanager.rs create mode 100644 crates/utils/src/emptycontract.rs create mode 100644 crates/utils/src/endian.rs create mode 100644 crates/utils/src/erc1967proxy.rs create mode 100644 crates/utils/src/erc1967upgrade.rs create mode 100644 crates/utils/src/erc20.rs create mode 100644 crates/utils/src/iavsdirectory.rs create mode 100644 crates/utils/src/ibeacon.rs create mode 100644 crates/utils/src/ibeaconchainoracle.rs create mode 100644 crates/utils/src/iblsapkregistry.rs create mode 100644 crates/utils/src/iblssignaturechecker.rs create mode 100644 crates/utils/src/idelegationmanager.rs create mode 100644 crates/utils/src/ieigenpod.rs create mode 100644 crates/utils/src/ieigenpodmanager.rs create mode 100644 crates/utils/src/iejectionmanager.rs create mode 100644 crates/utils/src/ierc1271.rs create mode 100644 crates/utils/src/ierc1271upgradeable.rs create mode 100644 crates/utils/src/ierc165.rs create mode 100644 crates/utils/src/ierc1822proxiable.rs create mode 100644 crates/utils/src/ierc20.rs create mode 100644 crates/utils/src/ierc20metadata.rs create mode 100644 crates/utils/src/ierc20permit.rs create mode 100644 crates/utils/src/ierc721.rs create mode 100644 crates/utils/src/ierc721enumerable.rs create mode 100644 crates/utils/src/ierc721metadata.rs create mode 100644 crates/utils/src/ierc721tokenreceiver.rs create mode 100644 crates/utils/src/iethposdeposit.rs create mode 100644 crates/utils/src/iindexregistry.rs create mode 100644 crates/utils/src/indexregistry.rs create mode 100644 crates/utils/src/indexregistrystorage.rs create mode 100644 crates/utils/src/initializable.rs create mode 100644 crates/utils/src/ipausable.rs create mode 100644 crates/utils/src/ipauserregistry.rs create mode 100644 crates/utils/src/iregistry.rs create mode 100644 crates/utils/src/iregistrycoordinator.rs create mode 100644 crates/utils/src/irewardscoordinator.rs create mode 100644 crates/utils/src/iservicemanager.rs create mode 100644 crates/utils/src/iservicemanagerui.rs create mode 100644 crates/utils/src/isignatureutils.rs create mode 100644 crates/utils/src/islasher.rs create mode 100644 crates/utils/src/isocketupdater.rs create mode 100644 crates/utils/src/istakeregistry.rs create mode 100644 crates/utils/src/istrategy.rs create mode 100644 crates/utils/src/istrategymanager.rs create mode 100644 crates/utils/src/mathupgradeable.rs create mode 100644 crates/utils/src/merkle.rs create mode 100644 crates/utils/src/mockavscontractsparser.rs create mode 100644 crates/utils/src/mockavsservicemanager.rs create mode 100644 crates/utils/src/mockerc20.rs create mode 100644 crates/utils/src/mockerc721.rs create mode 100644 crates/utils/src/operatorstateretriever.rs create mode 100644 crates/utils/src/ownable.rs create mode 100644 crates/utils/src/ownableupgradeable.rs create mode 100644 crates/utils/src/pausable.rs create mode 100644 crates/utils/src/pauserregistry.rs create mode 100644 crates/utils/src/proxy.rs create mode 100644 crates/utils/src/proxyadmin.rs create mode 100644 crates/utils/src/registeroperators.rs create mode 100644 crates/utils/src/registrycoordinator.rs create mode 100644 crates/utils/src/registrycoordinatorstorage.rs create mode 100644 crates/utils/src/safecastupgradeable.rs create mode 100644 crates/utils/src/safeerc20.rs create mode 100644 crates/utils/src/servicemanagerbase.rs create mode 100644 crates/utils/src/servicemanagerbasestorage.rs create mode 100644 crates/utils/src/servicemanagerrouter.rs create mode 100644 crates/utils/src/signaturecheckerupgradeable.rs create mode 100644 crates/utils/src/stakeregistry.rs create mode 100644 crates/utils/src/stakeregistrystorage.rs create mode 100644 crates/utils/src/storageslot.rs create mode 100644 crates/utils/src/strategybase.rs create mode 100644 crates/utils/src/strategybasetvllimits.rs create mode 100644 crates/utils/src/strategymanager.rs create mode 100644 crates/utils/src/strings.rs create mode 100644 crates/utils/src/stringsupgradeable.rs create mode 100644 crates/utils/src/tokenandstrategycontractsparser.rs create mode 100644 crates/utils/src/transparentupgradeableproxy.rs create mode 100644 crates/utils/src/updateoperators.rs diff --git a/.gitmodules b/.gitmodules index cc55d6f0..af8cef93 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,6 @@ [submodule "crates/contracts/bindings/utils/middleware"] path = crates/contracts/bindings/utils/middleware - url = git@github.com:Layr-Labs/eigenlayer-middleware.git + url = https://github.com/Layr-Labs/eigenlayer-middleware branch = m2-mainnet [submodule "crates/contracts/lib/forge-std"] path = crates/contracts/lib/forge-std diff --git a/Cargo.lock b/Cargo.lock index 4d05860c..44295128 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -65,6 +65,32 @@ version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +[[package]] +name = "alloy" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "056f2c01b2aed86e15b43c47d109bfc8b82553dc34e66452875e51247ec31ab2" +dependencies = [ + "alloy-consensus", + "alloy-contract", + "alloy-core", + "alloy-eips", + "alloy-genesis", + "alloy-network", + "alloy-provider", + "alloy-pubsub", + "alloy-rpc-client", + "alloy-rpc-types", + "alloy-serde", + "alloy-signer", + "alloy-signer-aws", + "alloy-signer-local", + "alloy-transport", + "alloy-transport-http", + "alloy-transport-ipc", + "alloy-transport-ws", +] + [[package]] name = "alloy-chains" version = "0.1.30" @@ -77,29 +103,33 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "0.1.4" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da374e868f54c7f4ad2ad56829827badca388efd645f8cf5fccc61c2b5343504" +checksum = "705687d5bfd019fee57cf9e206b27b30a9a9617535d5590a02b171e813208f8e" dependencies = [ "alloy-eips", "alloy-primitives", "alloy-rlp", "alloy-serde", + "auto_impl", "c-kzg", + "derive_more 1.0.0", "serde", ] [[package]] name = "alloy-contract" -version = "0.1.4" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dc6957ff706f9e5f6fd42f52a93e4bce476b726c92d077b348de28c4a76730c" +checksum = "917f7d12cf3971dc8c11c9972f732b35ccb9aaaf5f28f2f87e9e6523bee3a8ad" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", "alloy-network", + "alloy-network-primitives", "alloy-primitives", "alloy-provider", + "alloy-pubsub", "alloy-rpc-types-eth", "alloy-sol-types", "alloy-transport", @@ -108,11 +138,24 @@ dependencies = [ "thiserror", ] +[[package]] +name = "alloy-core" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eeb750349efda145ca6aada68d0336067f7f364d7d44ef09e2cf000b040c5e99" +dependencies = [ + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-primitives", + "alloy-rlp", + "alloy-sol-types", +] + [[package]] name = "alloy-dyn-abi" -version = "0.7.7" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413902aa18a97569e60f679c23f46a18db1656d87ab4d4e49d0e1e52042f66df" +checksum = "f95d76a38cae906fd394a5afb0736aaceee5432efe76addfd71048e623e208af" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -125,16 +168,42 @@ dependencies = [ "winnow", ] +[[package]] +name = "alloy-eip2930" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0069cf0642457f87a01a014f6dc29d5d893cd4fd8fddf0c3cdfad1bb3ebafc41" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "serde", +] + +[[package]] +name = "alloy-eip7702" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea59dc42102bc9a1905dc57901edc6dd48b9f38115df86c7d252acba70d71d04" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "k256", + "serde", +] + [[package]] name = "alloy-eips" -version = "0.1.4" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f76ecab54890cdea1e4808fc0891c7e6cfcf71fe1a9fe26810c7280ef768f4ed" +checksum = "6ffb906284a1e1f63c4607da2068c8197458a352d0b3e9796e67353d72a9be85" dependencies = [ + "alloy-eip2930", + "alloy-eip7702", "alloy-primitives", "alloy-rlp", "alloy-serde", "c-kzg", + "derive_more 1.0.0", "once_cell", "serde", "sha2", @@ -142,9 +211,9 @@ dependencies = [ [[package]] name = "alloy-genesis" -version = "0.1.4" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bca15afde1b6d15e3fc1c97421262b1bbb37aee45752e3c8b6d6f13f776554ff" +checksum = "8429cf4554eed9b40feec7f4451113e76596086447550275e3def933faf47ce3" dependencies = [ "alloy-primitives", "alloy-serde", @@ -153,9 +222,9 @@ dependencies = [ [[package]] name = "alloy-json-abi" -version = "0.7.7" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc05b04ac331a9f07e3a4036ef7926e49a8bf84a99a1ccfc7e2ab55a5fcbb372" +checksum = "03c66eec1acdd96b39b995b8f5ee5239bc0c871d62c527ae1ac9fd1d7fecd455" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -165,11 +234,12 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "0.1.4" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d6f34930b7e3e2744bcc79056c217f00cb2abb33bc5d4ff88da7623c5bb078b" +checksum = "f8fa8a1a3c4cbd221f2b8e3693aeb328fca79a757fe556ed08e47bbbc2a70db7" dependencies = [ "alloy-primitives", + "alloy-sol-types", "serde", "serde_json", "thiserror", @@ -178,13 +248,14 @@ dependencies = [ [[package]] name = "alloy-network" -version = "0.1.4" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25f6895fc31b48fa12306ef9b4f78b7764f8bd6d7d91cdb0a40e233704a0f23f" +checksum = "85fa23a6a9d612b52e402c995f2d582c25165ec03ac6edf64c861a76bc5b87cd" dependencies = [ "alloy-consensus", "alloy-eips", "alloy-json-rpc", + "alloy-network-primitives", "alloy-primitives", "alloy-rpc-types-eth", "alloy-serde", @@ -196,15 +267,29 @@ dependencies = [ "thiserror", ] +[[package]] +name = "alloy-network-primitives" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "801492711d4392b2ccf5fc0bc69e299fa1aab15167d74dcaa9aab96a54f684bd" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-serde", + "serde", +] + [[package]] name = "alloy-node-bindings" -version = "0.1.4" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "494b2fb0276a78ec13791446a417c2517eee5c8e8a8c520ae0681975b8056e5c" +checksum = "4f1334a738aa1710cb8227441b3fcc319202ce78e967ef37406940242df4a454" dependencies = [ "alloy-genesis", "alloy-primitives", "k256", + "rand", "serde_json", "tempfile", "thiserror", @@ -214,43 +299,51 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "0.7.7" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccb3ead547f4532bc8af961649942f0b9c16ee9226e26caa3f38420651cc0bf4" +checksum = "8ecb848c43f6b06ae3de2e4a67496cbbabd78ae87db0f1248934f15d76192c6a" dependencies = [ "alloy-rlp", "bytes", "cfg-if", "const-hex", - "derive_more", + "derive_more 1.0.0", + "foldhash", + "hashbrown 0.15.0", "hex-literal", + "indexmap 2.5.0", "itoa", "k256", "keccak-asm", + "paste", "proptest", "rand", "ruint", + "rustc-hash 2.0.0", "serde", + "sha3", "tiny-keccak", ] [[package]] name = "alloy-provider" -version = "0.1.4" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c538bfa893d07e27cb4f3c1ab5f451592b7c526d511d62b576a2ce59e146e4a" +checksum = "fcfaa4ffec0af04e3555686b8aacbcdf7d13638133a0672749209069750f78a6" dependencies = [ "alloy-chains", "alloy-consensus", "alloy-eips", "alloy-json-rpc", "alloy-network", + "alloy-network-primitives", "alloy-primitives", "alloy-pubsub", "alloy-rpc-client", "alloy-rpc-types-eth", "alloy-transport", "alloy-transport-http", + "alloy-transport-ipc", "alloy-transport-ws", "async-stream", "async-trait", @@ -263,6 +356,7 @@ dependencies = [ "reqwest 0.12.7", "serde", "serde_json", + "thiserror", "tokio", "tracing", "url", @@ -270,9 +364,9 @@ dependencies = [ [[package]] name = "alloy-pubsub" -version = "0.1.4" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a7341322d9bc0e49f6e9fd9f2eb8e30f73806f2dd12cbb3d6bab2694c921f87" +checksum = "f32cef487122ae75c91eb50154c70801d71fabdb976fec6c49e0af5e6486ab15" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -283,7 +377,7 @@ dependencies = [ "serde_json", "tokio", "tokio-stream", - "tower", + "tower 0.5.1", "tracing", ] @@ -311,15 +405,16 @@ dependencies = [ [[package]] name = "alloy-rpc-client" -version = "0.1.4" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ba31bae67773fd5a60020bea900231f8396202b7feca4d0c70c6b59308ab4a8" +checksum = "370143ed581aace6e663342d21d209c6b2e34ee6142f7d6675adb518deeaf0dc" dependencies = [ "alloy-json-rpc", "alloy-primitives", "alloy-pubsub", "alloy-transport", "alloy-transport-http", + "alloy-transport-ipc", "alloy-transport-ws", "futures", "pin-project", @@ -328,44 +423,62 @@ dependencies = [ "serde_json", "tokio", "tokio-stream", - "tower", + "tower 0.5.1", "tracing", "url", ] [[package]] name = "alloy-rpc-types" -version = "0.1.4" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "184a7a42c7ba9141cc9e76368356168c282c3bc3d9e5d78f3556bdfe39343447" +checksum = "9ffc534b7919e18f35e3aa1f507b6f3d9d92ec298463a9f6beaac112809d8d06" dependencies = [ + "alloy-primitives", + "alloy-rpc-types-engine", "alloy-rpc-types-eth", "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-rpc-types-engine" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0285c4c09f838ab830048b780d7f4a4f460f309aa1194bb049843309524c64c" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "derive_more 1.0.0", + "strum", ] [[package]] name = "alloy-rpc-types-eth" -version = "0.1.4" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab4123ee21f99ba4bd31bfa36ba89112a18a500f8b452f02b35708b1b951e2b9" +checksum = "413f4aa3ccf2c3e4234a047c5fa4727916d7daf25a89f9b765df0ba09784fd87" dependencies = [ "alloy-consensus", "alloy-eips", + "alloy-network-primitives", "alloy-primitives", "alloy-rlp", "alloy-serde", "alloy-sol-types", + "derive_more 1.0.0", "itertools 0.13.0", "serde", "serde_json", - "thiserror", ] [[package]] name = "alloy-serde" -version = "0.1.4" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9416c52959e66ead795a11f4a86c248410e9e368a0765710e57055b8a1774dd6" +checksum = "9dff0ab1cdd43ca001e324dc27ee0e8606bd2161d6623c63e0e0b8c4dfc13600" dependencies = [ "alloy-primitives", "serde", @@ -374,9 +487,9 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "0.1.4" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b33753c09fa1ad85e5b092b8dc2372f1e337a42e84b9b4cff9fede75ba4adb32" +checksum = "2fd4e0ad79c81a27ca659be5d176ca12399141659fef2bcbfdc848da478f4504" dependencies = [ "alloy-primitives", "async-trait", @@ -388,9 +501,9 @@ dependencies = [ [[package]] name = "alloy-signer-aws" -version = "0.1.4" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63ce17bfd5aa38e14b9c83b553d93c76e1bd5641a2db45f381f81619fd3e54ca" +checksum = "417e19d9844350d11f7426d4920a5df777f8c2abbb7a70d9de6f1faf284db15b" dependencies = [ "alloy-consensus", "alloy-network", @@ -406,9 +519,9 @@ dependencies = [ [[package]] name = "alloy-signer-local" -version = "0.1.4" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dfc9c26fe6c6f1bad818c9a976de9044dd12e1f75f1f156a801ee3e8148c1b6" +checksum = "494e0a256f3e99f2426f994bcd1be312c02cb8f88260088dacb33a8b8936475f" dependencies = [ "alloy-consensus", "alloy-network", @@ -422,13 +535,13 @@ dependencies = [ [[package]] name = "alloy-sol-macro" -version = "0.7.7" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b40397ddcdcc266f59f959770f601ce1280e699a91fc1862f29cef91707cd09" +checksum = "661c516eb1fa3294cc7f2fb8955b3b609d639c282ac81a4eedb14d3046db503a" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", - "proc-macro-error", + "proc-macro-error2", "proc-macro2", "quote", "syn 2.0.77", @@ -436,16 +549,16 @@ dependencies = [ [[package]] name = "alloy-sol-macro-expander" -version = "0.7.7" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "867a5469d61480fea08c7333ffeca52d5b621f5ca2e44f271b117ec1fc9a0525" +checksum = "ecbabb8fc3d75a0c2cea5215be22e7a267e3efde835b0f2a8922f5e3f5d47683" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", "const-hex", "heck", "indexmap 2.5.0", - "proc-macro-error", + "proc-macro-error2", "proc-macro2", "quote", "syn 2.0.77", @@ -455,9 +568,9 @@ dependencies = [ [[package]] name = "alloy-sol-macro-input" -version = "0.7.7" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e482dc33a32b6fadbc0f599adea520bd3aaa585c141a80b404d0a3e3fa72528" +checksum = "16517f2af03064485150d89746b8ffdcdbc9b6eeb3d536fb66efd7c2846fbc75" dependencies = [ "alloy-json-abi", "const-hex", @@ -472,9 +585,9 @@ dependencies = [ [[package]] name = "alloy-sol-type-parser" -version = "0.7.7" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbcba3ca07cf7975f15d871b721fb18031eec8bce51103907f6dcce00b255d98" +checksum = "c07ebb0c1674ff8cbb08378d7c2e0e27919d2a2dae07ad3bca26174deda8d389" dependencies = [ "serde", "winnow", @@ -482,9 +595,9 @@ dependencies = [ [[package]] name = "alloy-sol-types" -version = "0.7.7" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a91ca40fa20793ae9c3841b83e74569d1cc9af29a2f5237314fd3452d51e38c7" +checksum = "8e448d879903624863f608c552d10efb0e0905ddbee98b0049412799911eb062" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -495,9 +608,9 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "0.1.4" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01b51a291f949f755e6165c3ed562883175c97423703703355f4faa4b7d0a57c" +checksum = "2ac3e97dad3d31770db0fc89bd6a63b789fbae78963086733f960cf32c483904" dependencies = [ "alloy-json-rpc", "base64 0.22.1", @@ -507,31 +620,50 @@ dependencies = [ "serde_json", "thiserror", "tokio", - "tower", + "tower 0.5.1", "tracing", "url", ] [[package]] name = "alloy-transport-http" -version = "0.1.4" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86d65871f9f1cafe1ed25cde2f1303be83e6473e995a2d56c275ae4fcce6119c" +checksum = "b367dcccada5b28987c2296717ee04b9a5637aacd78eacb1726ef211678b5212" dependencies = [ "alloy-json-rpc", "alloy-transport", "reqwest 0.12.7", "serde_json", - "tower", + "tower 0.5.1", "tracing", "url", ] +[[package]] +name = "alloy-transport-ipc" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b90cf9cde7f2fce617da52768ee28f522264b282d148384a4ca0ea85af04fa3a" +dependencies = [ + "alloy-json-rpc", + "alloy-pubsub", + "alloy-transport", + "bytes", + "futures", + "interprocess", + "pin-project", + "serde_json", + "tokio", + "tokio-util", + "tracing", +] + [[package]] name = "alloy-transport-ws" -version = "0.1.4" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aec83fd052684556c78c54df111433493267234d82321c2236560c752f595f20" +checksum = "7153b88690de6a50bba81c11e1d706bc41dbb90126d607404d60b763f6a3947f" dependencies = [ "alloy-pubsub", "alloy-transport", @@ -540,7 +672,7 @@ dependencies = [ "rustls 0.23.13", "serde_json", "tokio", - "tokio-tungstenite 0.23.1", + "tokio-tungstenite 0.24.0", "tracing", "ws_stream_wasm", ] @@ -1787,12 +1919,6 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" -[[package]] -name = "convert_case" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" - [[package]] name = "core-foundation" version = "0.9.4" @@ -1946,11 +2072,12 @@ dependencies = [ [[package]] name = "dashmap" -version = "5.5.3" +version = "6.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" dependencies = [ "cfg-if", + "crossbeam-utils", "hashbrown 0.14.5", "lock_api", "once_cell", @@ -2000,13 +2127,32 @@ version = "0.99.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" dependencies = [ - "convert_case", "proc-macro2", "quote", - "rustc_version 0.4.1", "syn 2.0.77", ] +[[package]] +name = "derive_more" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", + "unicode-xid", +] + [[package]] name = "digest" version = "0.9.0" @@ -2081,6 +2227,12 @@ dependencies = [ "serde_json", ] +[[package]] +name = "doctest-file" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aac81fa3e28d21450aa4d2ac065992ba96a1d7303efbce51a95f4fd175b67562" + [[package]] name = "dunce" version = "1.0.5" @@ -2105,15 +2257,10 @@ dependencies = [ name = "eigen-chainio-txmanager" version = "0.1.0" dependencies = [ + "alloy", "alloy-consensus", - "alloy-eips", - "alloy-network", "alloy-node-bindings", "alloy-primitives", - "alloy-provider", - "alloy-rpc-types-eth", - "alloy-signer-local", - "alloy-transport-http", "eigen-logging", "eigen-signer", "k256", @@ -2127,6 +2274,7 @@ dependencies = [ name = "eigen-cli" version = "0.1.0" dependencies = [ + "alloy", "alloy-contract", "alloy-json-rpc", "alloy-primitives", @@ -2161,11 +2309,9 @@ dependencies = [ name = "eigen-client-avsregistry" version = "0.1.0" dependencies = [ - "alloy-contract", + "alloy", "alloy-node-bindings", "alloy-primitives", - "alloy-provider", - "alloy-rpc-types", "alloy-signer", "alloy-signer-local", "ark-ff 0.4.2", @@ -2188,8 +2334,7 @@ dependencies = [ name = "eigen-client-elcontracts" version = "0.1.0" dependencies = [ - "alloy-contract", - "alloy-eips", + "alloy", "alloy-primitives", "alloy-provider", "alloy-signer-local", @@ -2208,18 +2353,11 @@ dependencies = [ name = "eigen-client-eth" version = "0.1.0" dependencies = [ - "alloy-consensus", - "alloy-eips", + "alloy", "alloy-json-rpc", "alloy-node-bindings", "alloy-primitives", - "alloy-provider", - "alloy-pubsub", "alloy-rlp", - "alloy-rpc-types-eth", - "alloy-transport", - "alloy-transport-http", - "alloy-transport-ws", "async-trait", "eigen-logging", "eigen-metrics-collectors-rpc-calls", @@ -2238,10 +2376,8 @@ dependencies = [ name = "eigen-client-fireblocks" version = "0.1.0" dependencies = [ - "alloy-contract", + "alloy", "alloy-primitives", - "alloy-provider", - "alloy-rpc-types", "chrono", "eigen-utils", "hex", @@ -2385,6 +2521,7 @@ dependencies = [ name = "eigen-services-blsaggregation" version = "0.1.0" dependencies = [ + "alloy", "alloy-node-bindings", "alloy-primitives", "alloy-provider", @@ -2414,9 +2551,8 @@ dependencies = [ name = "eigen-services-operatorsinfo" version = "0.1.0" dependencies = [ + "alloy", "alloy-primitives", - "alloy-provider", - "alloy-rpc-types", "alloy-signer-local", "anyhow", "ark-bn254", @@ -2441,6 +2577,7 @@ dependencies = [ name = "eigen-signer" version = "0.1.0" dependencies = [ + "alloy", "alloy-consensus", "alloy-network", "alloy-node-bindings", @@ -2465,12 +2602,9 @@ dependencies = [ name = "eigen-testing-utils" version = "0.1.0" dependencies = [ - "alloy-network", + "alloy", "alloy-primitives", - "alloy-provider", - "alloy-transport-http", "eigen-utils", - "once_cell", "serde", "serde_json", "testcontainers", @@ -2494,15 +2628,7 @@ dependencies = [ name = "eigen-utils" version = "0.1.0" dependencies = [ - "alloy-contract", - "alloy-json-rpc", - "alloy-network", - "alloy-provider", - "alloy-pubsub", - "alloy-signer-local", - "alloy-sol-types", - "alloy-transport", - "alloy-transport-http", + "alloy", "reqwest 0.12.7", ] @@ -3085,6 +3211,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" + [[package]] name = "foreign-types" version = "0.3.2" @@ -3375,6 +3507,16 @@ dependencies = [ "allocator-api2", ] +[[package]] +name = "hashbrown" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +dependencies = [ + "foldhash", + "serde", +] + [[package]] name = "hashers" version = "1.0.1" @@ -3727,7 +3869,7 @@ dependencies = [ "pin-project-lite", "socket2", "tokio", - "tower", + "tower 0.4.13", "tower-service", "tracing", ] @@ -3899,6 +4041,21 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "interprocess" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2f4e4a06d42fab3e85ab1b419ad32b09eab58b901d40c57935ff92db3287a13" +dependencies = [ + "doctest-file", + "futures-core", + "libc", + "recvmsg", + "tokio", + "widestring", + "windows-sys 0.52.0", +] + [[package]] name = "ipconfig" version = "0.3.2" @@ -5146,27 +5303,25 @@ dependencies = [ ] [[package]] -name = "proc-macro-error" -version = "1.0.4" +name = "proc-macro-error-attr2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" dependencies = [ - "proc-macro-error-attr", "proc-macro2", "quote", - "syn 1.0.109", - "version_check", ] [[package]] -name = "proc-macro-error-attr" -version = "1.0.4" +name = "proc-macro-error2" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" dependencies = [ + "proc-macro-error-attr2", "proc-macro2", "quote", - "version_check", + "syn 2.0.77", ] [[package]] @@ -5301,6 +5456,7 @@ dependencies = [ "libc", "rand_chacha", "rand_core", + "serde", ] [[package]] @@ -5360,6 +5516,12 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "recvmsg" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3edd4d5d42c92f0a659926464d4cce56b562761267ecf0f469d85b7de384175" + [[package]] name = "redox_syscall" version = "0.5.4" @@ -5915,7 +6077,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eca070c12893629e2cc820a9761bedf6ce1dcddc9852984d1dc734b8bd9bd024" dependencies = [ "cfg-if", - "derive_more", + "derive_more 0.99.18", "parity-scale-codec", "scale-info-derive", ] @@ -6504,9 +6666,9 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.7.7" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c837dc8852cb7074e46b444afb81783140dab12c58867b49fb3898fbafedf7ea" +checksum = "20e7b52ad118b2153644eea95c6fc740b6c1555b2344fdab763fc9de4075f665" dependencies = [ "paste", "proc-macro2", @@ -6824,9 +6986,9 @@ dependencies = [ [[package]] name = "tokio-tungstenite" -version = "0.23.1" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6989540ced10490aaf14e6bad2e3d33728a2813310a0c71d1574304c49631cd" +checksum = "edc5f74e248dc973e0dbb7b74c7e0d6fcc301c694ff50049504004ef4d0cdcd9" dependencies = [ "futures-util", "log", @@ -6834,7 +6996,7 @@ dependencies = [ "rustls-pki-types", "tokio", "tokio-rustls 0.26.0", - "tungstenite 0.23.0", + "tungstenite 0.24.0", "webpki-roots 0.26.5", ] @@ -6898,7 +7060,20 @@ dependencies = [ "tokio", "tower-layer", "tower-service", - "tracing", +] + +[[package]] +name = "tower" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 0.1.2", + "tower-layer", + "tower-service", ] [[package]] @@ -6919,7 +7094,6 @@ version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -7022,9 +7196,9 @@ dependencies = [ [[package]] name = "tungstenite" -version = "0.23.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e2e2ce1e47ed2994fd43b04c8f618008d4cabdd5ee34027cf14f9d918edd9c8" +checksum = "18e5b8366ee7a95b16d32197d0b2604b43a0be89dc5fac9f8e96ccafbaedda8a" dependencies = [ "byteorder", "bytes", diff --git a/Cargo.toml b/Cargo.toml index 25bcf332..aafd4f91 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -119,45 +119,40 @@ uuid = { version = "1.10.0", features = ["v4"] } parking_lot = "0.12" #alloy -alloy-chains = "0.1.15" -alloy-consensus = { version = "0.1", default-features = false } -alloy-contract = { version = "0.1", default-features = false } -alloy-dyn-abi = "0.7.2" -alloy-eips = { version = "0.1", default-features = false } -alloy-genesis = { version = "0.1", default-features = false } -alloy-json-rpc = { version = "0.1", default-features = false } -alloy-network = { version = "0.1", default-features = false } -alloy-node-bindings = { version = "0.1", default-features = false } -alloy-primitives = "0.7.2" -alloy-provider = { version = "0.1", default-features = false, features = [ +alloy-chains = "0.1.36" +alloy-consensus = { version = "0.4.2", default-features = false } +alloy-contract = { version = "0.4.2", default-features = false } +alloy-dyn-abi = "0.8.7" +alloy-eips = { version = "0.4.2", default-features = false } +alloy-genesis = { version = "0.4.2", default-features = false } +alloy-json-rpc = { version = "0.4.2", default-features = false } +alloy-network = { version = "0.4.2", default-features = false } +alloy-node-bindings = { version = "0.4.2", default-features = false } +alloy-primitives = "0.8.7" +alloy-provider = { version = "0.4.2", default-features = false, features = [ "reqwest", "ws", ] } -alloy-pubsub = { version = "0.1", default-features = false } -alloy-rlp = "0.3.4" -alloy-rpc-client = "0.1" -alloy-rpc-types = { version = "0.1", default-features = false, features = [ +alloy-pubsub = { version = "0.4.2", default-features = false } +alloy-rlp = "0.3.8" +alloy-rpc-client = "0.4.2" +alloy-rpc-types = { version = "0.4.2", default-features = false, features = [ "eth", ] } -alloy-rpc-types-admin = { version = "0.1", default-features = false } -alloy-rpc-types-anvil = { version = "0.1", default-features = false } -alloy-rpc-types-beacon = { version = "0.1", default-features = false } -alloy-rpc-types-engine = { version = "0.1", default-features = false } -alloy-rpc-types-eth = { version = "0.1", default-features = false } -alloy-rpc-types-trace = { version = "0.1", default-features = false } -alloy-rpc-types-txpool = { version = "0.1", default-features = false } -alloy-serde = { version = "0.1", default-features = false } -alloy-signer = { version = "0.1", default-features = false } -alloy-signer-aws = "0.1" -alloy-signer-local = { version = "0.1", default-features = false } -alloy-sol-types = "0.7.2" -alloy-transport = { version = "0.1" } -alloy-transport-http = { version = "0.1", features = [ +alloy-rpc-types-eth = "0.4.2" +alloy-serde = { version = "0.4.2", default-features = false } +alloy-signer = { version = "0.4.2", default-features = false } +alloy-signer-aws = "0.4.2" +alloy-signer-local = { version = "0.4.2", default-features = false } +alloy-sol-types = "0.8.7" +alloy-transport = { version = "0.4.2" } +alloy-transport-http = { version = "0.4.2", features = [ "reqwest-rustls-tls", ], default-features = false } -alloy-transport-ipc = { version = "0.1", default-features = false } -alloy-transport-ws = { version = "0.1", default-features = false } -alloy-trie = "0.4" +alloy-transport-ipc = { version = "0.4.2", default-features = false } +alloy-transport-ws = { version = "0.4.2", default-features = false } +alloy-trie = "0.6.0" +alloy = { version = "0.4.2", features = ["sol-types", "contract","full","signer-aws"] } anvil-utils = { path = "examples/anvil-utils" } avsregistry-read = { path = "examples/avsregistry-read" } avsregistry-write = { path = "examples/avsregistry-write" } diff --git a/crates/chainio/clients/avsregistry/Cargo.toml b/crates/chainio/clients/avsregistry/Cargo.toml index 72208f26..bc6772ac 100644 --- a/crates/chainio/clients/avsregistry/Cargo.toml +++ b/crates/chainio/clients/avsregistry/Cargo.toml @@ -9,10 +9,8 @@ repository.workspace = true license-file.workspace = true [dependencies] -alloy-contract.workspace = true +alloy.workspace = true alloy-primitives.workspace = true -alloy-provider.workspace = true -alloy-rpc-types.workspace = true alloy-signer.workspace = true alloy-signer-local.workspace = true async-trait.workspace = true diff --git a/crates/chainio/clients/avsregistry/src/error.rs b/crates/chainio/clients/avsregistry/src/error.rs index 6f23b547..69ffb393 100644 --- a/crates/chainio/clients/avsregistry/src/error.rs +++ b/crates/chainio/clients/avsregistry/src/error.rs @@ -1,4 +1,4 @@ -use alloy_contract::Error as AlloyError; +use alloy::contract::Error as AlloyError; use eigen_client_elcontracts::error::ElContractsError; use eigen_crypto_bls::error::BlsError; use thiserror::Error; @@ -157,6 +157,9 @@ pub enum AvsRegistryError { /// Invalid Signature #[error("Invalid signature")] InvalidSignature, + /// Parse BigInt + #[error("big int error")] + ParseBigIntError, } impl From for AvsRegistryError { diff --git a/crates/chainio/clients/avsregistry/src/fake_reader.rs b/crates/chainio/clients/avsregistry/src/fake_reader.rs index 23f17b7f..7da43ce9 100644 --- a/crates/chainio/clients/avsregistry/src/fake_reader.rs +++ b/crates/chainio/clients/avsregistry/src/fake_reader.rs @@ -1,11 +1,9 @@ use crate::{error::AvsRegistryError, reader::AvsRegistryReader}; -use alloy_primitives::{Address, Bytes, FixedBytes}; +use alloy_primitives::{aliases::U96, Address, Bytes, FixedBytes}; use async_trait::async_trait; use eigen_crypto_bls::BlsKeyPair; use eigen_types::test::TestOperator; -use eigen_utils::binding::OperatorStateRetriever; - -const OPERATOR_STAKE: u128 = 123; +use eigen_utils::operatorstateretriever::OperatorStateRetriever; /// This struct is used to test AvsRegistryServiceChainCaller methods. #[derive(Debug)] @@ -45,7 +43,7 @@ impl AvsRegistryReader for FakeAvsRegistryReader { Ok(vec![vec![OperatorStateRetriever::Operator { operator: self.operator_address, operatorId: self.operator_id, - stake: OPERATOR_STAKE, + stake: U96::from(123), }]]) } diff --git a/crates/chainio/clients/avsregistry/src/reader.rs b/crates/chainio/clients/avsregistry/src/reader.rs index cf4dc744..19471547 100644 --- a/crates/chainio/clients/avsregistry/src/reader.rs +++ b/crates/chainio/clients/avsregistry/src/reader.rs @@ -1,7 +1,7 @@ use crate::error::AvsRegistryError; -use alloy_primitives::{Address, Bytes, FixedBytes, B256, U256}; -use alloy_provider::Provider; -use alloy_rpc_types::Filter; +use alloy::primitives::{Address, Bytes, FixedBytes, B256, U256}; +use alloy::providers::Provider; +use alloy::rpc::types::Filter; use ark_ff::Zero; use async_trait::async_trait; use eigen_crypto_bls::{ @@ -9,14 +9,19 @@ use eigen_crypto_bls::{ BlsG2Point, }; use eigen_logging::logger::SharedLogger; -use eigen_types::operator::{bitmap_to_quorum_ids, OperatorPubKeys}; +use eigen_types::operator::{ + bitmap_to_quorum_ids, bitmap_to_quorum_ids_from_u192, OperatorPubKeys, +}; use eigen_utils::{ - binding::{BLSApkRegistry, OperatorStateRetriever, RegistryCoordinator, StakeRegistry}, get_provider, get_ws_provider, NEW_PUBKEY_REGISTRATION_EVENT, + { + blsapkregistry::BLSApkRegistry, operatorstateretriever::OperatorStateRetriever, + registrycoordinator::RegistryCoordinator, stakeregistry::StakeRegistry, + }, }; use num_bigint::BigInt; -use std::collections::HashMap; use std::fmt::Debug; +use std::{collections::HashMap, str::FromStr}; /// Avs Registry chainreader #[derive(Debug, Clone)] @@ -333,7 +338,7 @@ impl AvsRegistryChainReader { let provider = get_provider(&self.provider); let current_block_number = provider.get_block_number().await.map_err(|e| { - AvsRegistryError::AlloyContractError(alloy_contract::Error::TransportError(e)) + AvsRegistryError::AlloyContractError(alloy::contract::Error::TransportError(e)) })?; if current_block_number > u32::MAX.into() { @@ -373,7 +378,7 @@ impl AvsRegistryChainReader { let RegistryCoordinator::getCurrentQuorumBitmapReturn { _0: quo } = quorum_bitmap; - let quorums = bitmap_to_quorum_ids(quo); + let quorums = bitmap_to_quorum_ids_from_u192(quo); let mut quorum_stakes: HashMap = HashMap::new(); @@ -385,7 +390,11 @@ impl AvsRegistryChainReader { .await?; let StakeRegistry::getCurrentStakeReturn { _0: c_stake } = stakes_result; - quorum_stakes.insert(*quorum, c_stake.into()); + quorum_stakes.insert( + *quorum, + BigInt::from_str(&U256::from(c_stake).to_string()) + .map_err(|_| AvsRegistryError::ParseBigIntError)?, + ); } Ok(quorum_stakes) } @@ -465,12 +474,12 @@ impl AvsRegistryChainReader { ws_url: String, ) -> Result<(Vec
, Vec), AvsRegistryError> { let provider = get_ws_provider(&ws_url).await.map_err(|e| { - AvsRegistryError::AlloyContractError(alloy_contract::Error::TransportError(e)) + AvsRegistryError::AlloyContractError(alloy::contract::Error::TransportError(e)) })?; let query_block_range = 1024; let current_block_number = provider.get_block_number().await.map_err(|e| { - AvsRegistryError::AlloyContractError(alloy_contract::Error::TransportError(e)) + AvsRegistryError::AlloyContractError(alloy::contract::Error::TransportError(e)) })?; if stop_block.is_zero() { stop_block = current_block_number; @@ -482,12 +491,13 @@ impl AvsRegistryChainReader { while i <= stop_block { let to_block = std::cmp::min(i + (query_block_range - 1), stop_block); let filter = Filter::new() - .select(i..to_block) + .from_block(i) + .to_block(to_block) .event(NEW_PUBKEY_REGISTRATION_EVENT) .address(self.bls_apk_registry_addr); let logs = provider.get_logs(&filter).await.map_err(|e| { - AvsRegistryError::AlloyContractError(alloy_contract::Error::TransportError(e)) + AvsRegistryError::AlloyContractError(alloy::contract::Error::TransportError(e)) })?; let len = logs.len(); @@ -543,7 +553,7 @@ impl AvsRegistryChainReader { let stop_block = if stop_block == 0 { provider.get_block_number().await.map_err(|e| { - AvsRegistryError::AlloyContractError(alloy_contract::Error::TransportError(e)) + AvsRegistryError::AlloyContractError(alloy::contract::Error::TransportError(e)) })? } else { stop_block @@ -553,12 +563,13 @@ impl AvsRegistryChainReader { let to_block = (from_block + query_block_range - 1).min(stop_block); let filter = Filter::new() - .select(from_block..to_block) + .from_block(from_block) + .to_block(to_block) .event("OperatorSocketUpdate(bytes32,string)") .address(self.registry_coordinator_addr); let logs = provider.get_logs(&filter).await.map_err(|e| { - AvsRegistryError::AlloyContractError(alloy_contract::Error::TransportError(e)) + AvsRegistryError::AlloyContractError(alloy::contract::Error::TransportError(e)) })?; for v_log in logs.iter() { diff --git a/crates/chainio/clients/avsregistry/src/writer.rs b/crates/chainio/clients/avsregistry/src/writer.rs index e37420ab..50cf0996 100644 --- a/crates/chainio/clients/avsregistry/src/writer.rs +++ b/crates/chainio/clients/avsregistry/src/writer.rs @@ -7,19 +7,19 @@ use eigen_crypto_bls::{ alloy_g1_point_to_g1_affine, convert_to_g1_point, convert_to_g2_point, BlsKeyPair, }; use eigen_logging::logger::SharedLogger; -use eigen_utils::binding::RegistryCoordinator::{ - self, G1Point as RegistryG1Point, G2Point as RegistryG2Point, PubkeyRegistrationParams, +use eigen_utils::registrycoordinator::{ + IBLSApkRegistry::PubkeyRegistrationParams, ISignatureUtils::SignatureWithSaltAndExpiry, + RegistryCoordinator, BN254::G1Point as RegistryG1Point, BN254::G2Point as RegistryG2Point, }; use eigen_utils::{ - binding::{ServiceManagerBase, StakeRegistry}, get_provider, get_signer, + {servicemanagerbase::ServiceManagerBase, stakeregistry::StakeRegistry}, }; use std::str::FromStr; use tracing::info; -use RegistryCoordinator::SignatureWithSaltAndExpiry; /// Gas limit for registerOperator in [`RegistryCoordinator`] -pub const GAS_LIMIT_REGISTER_OPERATOR_REGISTRY_COORDINATOR: u128 = 2000000; +pub const GAS_LIMIT_REGISTER_OPERATOR_REGISTRY_COORDINATOR: u64 = 2000000; /// AvsRegistry Writer #[derive(Debug)] @@ -142,7 +142,7 @@ impl AvsRegistryChainWriter { quorum_numbers: Bytes, socket: String, ) -> Result { - let provider = get_signer(self.signer.clone(), &self.provider); + let provider = get_signer(&self.signer.clone(), &self.provider); let wallet = PrivateKeySigner::from_str(&self.signer) .map_err(|_| AvsRegistryError::InvalidPrivateKey)?; @@ -247,7 +247,7 @@ impl AvsRegistryChainWriter { quorum_number: Bytes, ) -> Result { info!(quorum_numbers = %quorum_number, "updating stakes for entire operator set"); - let provider = get_signer(self.signer.clone(), &self.provider); + let provider = get_signer(&self.signer.clone(), &self.provider); let contract_registry_coordinator = RegistryCoordinator::new(self.registry_coordinator_addr, provider); let contract_call = contract_registry_coordinator @@ -279,7 +279,7 @@ impl AvsRegistryChainWriter { ) -> Result { info!(operators = ?operators, "updating stakes of operator subset for all quorums"); - let provider = get_signer(self.signer.clone(), &self.provider); + let provider = get_signer(&self.signer.clone(), &self.provider); let contract_registry_coordinator = RegistryCoordinator::new(self.registry_coordinator_addr, provider); @@ -311,7 +311,7 @@ impl AvsRegistryChainWriter { quorum_numbers: Bytes, ) -> Result { info!("deregistering operator with the AVS's registry coordinator"); - let provider = get_signer(self.signer.clone(), &self.provider); + let provider = get_signer(&self.signer.clone(), &self.provider); let contract_registry_coordinator = RegistryCoordinator::new(self.registry_coordinator_addr, provider); diff --git a/crates/chainio/clients/elcontracts/Cargo.toml b/crates/chainio/clients/elcontracts/Cargo.toml index 45a2affe..841f16d7 100644 --- a/crates/chainio/clients/elcontracts/Cargo.toml +++ b/crates/chainio/clients/elcontracts/Cargo.toml @@ -9,7 +9,7 @@ repository.workspace = true license-file.workspace = true [dependencies] -alloy-contract.workspace = true +alloy.workspace = true alloy-primitives.workspace = true eigen-logging.workspace = true eigen-types.workspace = true @@ -18,7 +18,7 @@ thiserror.workspace = true tracing.workspace = true [dev-dependencies] -alloy-eips.workspace = true +alloy.workspace = true alloy-provider.workspace = true alloy-signer-local.workspace = true eigen-testing-utils.workspace = true diff --git a/crates/chainio/clients/elcontracts/src/error.rs b/crates/chainio/clients/elcontracts/src/error.rs index a73b1b6b..5158c6bf 100644 --- a/crates/chainio/clients/elcontracts/src/error.rs +++ b/crates/chainio/clients/elcontracts/src/error.rs @@ -1,6 +1,6 @@ -use alloy_contract::Error as AlloyError; +use alloy::contract::Error as AlloyError; +use alloy::providers::PendingTransactionError; use thiserror::Error; - #[derive(Debug, Error)] pub enum ElContractsError { /// Get slasher address @@ -69,4 +69,7 @@ pub enum ElContractsError { #[error("Alloy contract error: {0}")] AlloyContractError(#[from] AlloyError), + + #[error("Alloy pending Transaction error {0}")] + AlloyPendingTransactionError(#[from] PendingTransactionError), } diff --git a/crates/chainio/clients/elcontracts/src/reader.rs b/crates/chainio/clients/elcontracts/src/reader.rs index a766b0cd..b2b89f80 100644 --- a/crates/chainio/clients/elcontracts/src/reader.rs +++ b/crates/chainio/clients/elcontracts/src/reader.rs @@ -3,8 +3,11 @@ use alloy_primitives::{Address, FixedBytes, U256}; use eigen_logging::logger::SharedLogger; use eigen_types::operator::Operator; use eigen_utils::{ - binding::{AVSDirectory, DelegationManager, ISlasher, IStrategy, IERC20}, get_provider, + { + avsdirectory::AVSDirectory, delegationmanager::DelegationManager, erc20::ERC20, + islasher::ISlasher, istrategy::IStrategy, + }, }; #[derive(Debug, Clone)] @@ -302,7 +305,7 @@ impl ELChainReader { _0: underlying_token_addr, } = underlying_token; - let contract_ierc20 = IERC20::new(underlying_token_addr, &provider); + let contract_ierc20 = ERC20::new(underlying_token_addr, &provider); Ok(( strategy_addr, @@ -345,7 +348,7 @@ impl ELChainReader { Ok(Operator { address: operator, - earnings_receiver_address: operator_details.earningsReceiver, + earnings_receiver_address: operator_details.__deprecated_earningsReceiver, delegation_approver_address: operator_details.delegationApprover, staker_opt_out_window_blocks: operator_details.stakerOptOutWindowBlocks, metadata_url: None, @@ -387,9 +390,9 @@ impl ELChainReader { #[cfg(test)] mod tests { use super::*; - use alloy_eips::eip1898::BlockNumberOrTag::Number; + use alloy::eips::eip1898::BlockNumberOrTag::Number; + use alloy::providers::Provider; use alloy_primitives::{address, keccak256, Address, FixedBytes, U256}; - use alloy_provider::Provider; use eigen_logging::get_test_logger; use eigen_testing_utils::{ anvil::start_anvil_container, @@ -397,10 +400,12 @@ mod tests { get_delegation_manager_address, get_erc20_mock_strategy, get_service_manager_address, }, }; - use eigen_utils::binding::{ - mockAvsServiceManager, AVSDirectory, - AVSDirectory::calculateOperatorAVSRegistrationDigestHashReturn, DelegationManager, - DelegationManager::calculateDelegationApprovalDigestHashReturn, + use eigen_utils::{ + avsdirectory::AVSDirectory, + avsdirectory::AVSDirectory::calculateOperatorAVSRegistrationDigestHashReturn, + delegationmanager::DelegationManager, + delegationmanager::DelegationManager::calculateDelegationApprovalDigestHashReturn, + mockavsservicemanager::MockAvsServiceManager, }; use std::str::FromStr; @@ -417,13 +422,13 @@ mod tests { } = slasher_address_return; let service_manager_address = get_service_manager_address(http_endpoint.clone()).await; let service_manager_contract = - mockAvsServiceManager::new(service_manager_address, get_provider(&http_endpoint)); + MockAvsServiceManager::new(service_manager_address, get_provider(&http_endpoint)); let avs_directory_address_return = service_manager_contract .avsDirectory() .call() .await .unwrap(); - let mockAvsServiceManager::avsDirectoryReturn { + let MockAvsServiceManager::avsDirectoryReturn { _0: avs_directory_address, } = avs_directory_address_return; diff --git a/crates/chainio/clients/elcontracts/src/writer.rs b/crates/chainio/clients/elcontracts/src/writer.rs index 7d9606a0..1c9f8c62 100644 --- a/crates/chainio/clients/elcontracts/src/writer.rs +++ b/crates/chainio/clients/elcontracts/src/writer.rs @@ -3,12 +3,18 @@ use crate::reader::ELChainReader; use alloy_primitives::{Address, FixedBytes, TxHash, U256}; pub use eigen_types::operator::Operator; use eigen_utils::{ - binding::{DelegationManager, StrategyManager, IERC20}, get_signer, + { + delegationmanager::{ + DelegationManager::{self}, + IDelegationManager::OperatorDetails, + }, + erc20::ERC20, + strategymanager::StrategyManager, + }, }; use tracing::info; -use DelegationManager::OperatorDetails; /// Gas limit for registerAsOperator in [`DelegationManager`] pub const GAS_LIMIT_REGISTER_AS_OPERATOR_DELEGATION_MANAGER: u128 = 300000; @@ -59,11 +65,11 @@ impl ELChainWriter { ) -> Result, ElContractsError> { info!("registering operator {:?} to EigenLayer", operator.address); let op_details = OperatorDetails { - earningsReceiver: operator.earnings_receiver_address, + __deprecated_earningsReceiver: operator.earnings_receiver_address, delegationApprover: operator.delegation_approver_address, stakerOptOutWindowBlocks: operator.staker_opt_out_window_blocks, }; - let provider = get_signer(self.signer.clone(), &self.provider); + let provider = get_signer(&self.signer.clone(), &self.provider); let contract_delegation_manager = DelegationManager::new(self.delegation_manager, provider); @@ -78,9 +84,10 @@ impl ELChainWriter { .await .map_err(ElContractsError::AlloyContractError)?; - let receipt = binding_tx.get_receipt().await.map_err(|e| { - ElContractsError::AlloyContractError(alloy_contract::Error::TransportError(e)) - })?; + let receipt = binding_tx + .get_receipt() + .await + .map_err(ElContractsError::AlloyPendingTransactionError)?; let tx_status = receipt.status(); let hash = receipt.transaction_hash; @@ -114,11 +121,11 @@ impl ELChainWriter { operator.address ); let operator_details = OperatorDetails { - earningsReceiver: operator.earnings_receiver_address, + __deprecated_earningsReceiver: operator.earnings_receiver_address, delegationApprover: operator.delegation_approver_address, stakerOptOutWindowBlocks: operator.staker_opt_out_window_blocks, }; - let provider = get_signer(self.signer.clone(), &self.provider); + let provider = get_signer(&self.signer.clone(), &self.provider); let contract_delegation_manager = DelegationManager::new(self.delegation_manager, provider); @@ -165,9 +172,9 @@ impl ELChainWriter { .get_strategy_and_underlying_erc20_token(strategy_addr) .await?; let (_, underlying_token_contract, underlying_token) = tokens; - let provider = get_signer(self.signer.clone(), &self.provider); + let provider = get_signer(&self.signer.clone(), &self.provider); - let contract_underlying_token = IERC20::new(underlying_token_contract, &provider); + let contract_underlying_token = ERC20::new(underlying_token_contract, &provider); let contract_call = contract_underlying_token.approve(self.strategy_manager, amount); @@ -189,8 +196,8 @@ impl ELChainWriter { mod tests { use super::ELChainWriter; use crate::reader::ELChainReader; + use alloy::providers::Provider; use alloy_primitives::{Address, U256}; - use alloy_provider::Provider; use alloy_signer_local::PrivateKeySigner; use anvil_constants::CONTRACTS_REGISTRY; use eigen_logging::get_test_logger; @@ -203,12 +210,12 @@ mod tests { }; use eigen_types::operator::Operator; use eigen_utils::{ - binding::{ - mockAvsServiceManager, - ContractsRegistry::{self, get_test_valuesReturn}, - DelegationManager, - }, get_provider, + { + contractsregistry::ContractsRegistry::{self, get_test_valuesReturn}, + delegationmanager::DelegationManager, + mockavsservicemanager::MockAvsServiceManager, + }, }; use std::str::FromStr; @@ -230,7 +237,7 @@ mod tests { } = slasher_address_return; let service_manager_address = get_service_manager_address(http_endpoint.clone()).await; - let service_manager_contract = mockAvsServiceManager::new( + let service_manager_contract = MockAvsServiceManager::new( service_manager_address, get_provider(http_endpoint.as_str()), ); @@ -240,7 +247,7 @@ mod tests { .await .unwrap(); - let mockAvsServiceManager::avsDirectoryReturn { + let MockAvsServiceManager::avsDirectoryReturn { _0: avs_directory_address, } = avs_directory_address_return; diff --git a/crates/chainio/clients/eth/Cargo.toml b/crates/chainio/clients/eth/Cargo.toml index 103f5d16..23f2ecb3 100644 --- a/crates/chainio/clients/eth/Cargo.toml +++ b/crates/chainio/clients/eth/Cargo.toml @@ -8,17 +8,10 @@ description = "eigen layer instrumented client " license-file.workspace = true [dependencies] -alloy-consensus.workspace = true -alloy-eips.workspace = true +alloy.workspace = true alloy-json-rpc.workspace = true alloy-primitives.workspace = true -alloy-provider.workspace = true -alloy-pubsub.workspace = true alloy-rlp.workspace = true -alloy-rpc-types-eth.workspace = true -alloy-transport.workspace = true -alloy-transport-http.workspace = true -alloy-transport-ws.workspace = true async-trait.workspace = true eigen-logging.workspace = true eigen-metrics-collectors-rpc-calls.workspace = true diff --git a/crates/chainio/clients/eth/src/client.rs b/crates/chainio/clients/eth/src/client.rs index eadd759f..f3992620 100644 --- a/crates/chainio/clients/eth/src/client.rs +++ b/crates/chainio/clients/eth/src/client.rs @@ -1,9 +1,9 @@ #[derive(Debug)] pub struct Client {} -use alloy_eips::BlockNumberOrTag; -use alloy_primitives::BlockNumber; -use alloy_rpc_types_eth::Block; +use alloy::eips::BlockNumberOrTag; +use alloy::primitives::BlockNumber; +use alloy::rpc::types::eth::Block; #[async_trait::async_trait] pub trait BackendClient { diff --git a/crates/chainio/clients/eth/src/instrumented_client.rs b/crates/chainio/clients/eth/src/instrumented_client.rs index c184cbe4..9c5c101d 100644 --- a/crates/chainio/clients/eth/src/instrumented_client.rs +++ b/crates/chainio/clients/eth/src/instrumented_client.rs @@ -1,17 +1,17 @@ use crate::client::BackendClient; -use alloy_consensus::TxEnvelope; -use alloy_json_rpc::{RpcParam, RpcReturn}; -use alloy_primitives::{Address, BlockHash, BlockNumber, Bytes, ChainId, B256, U256, U64}; -use alloy_provider::{Provider, ProviderBuilder, RootProvider}; -use alloy_pubsub::{PubSubFrontend, Subscription}; -use alloy_rlp::Encodable; -use alloy_rpc_types_eth::{ +use alloy::consensus::TxEnvelope; +use alloy::providers::{Provider, ProviderBuilder, RootProvider}; +use alloy::pubsub::{PubSubFrontend, Subscription}; +use alloy::rpc::types::eth::{ Block, BlockNumberOrTag, FeeHistory, Filter, Header, Log, SyncStatus, Transaction, TransactionReceipt, TransactionRequest, }; -use alloy_transport::{TransportError, TransportResult}; -use alloy_transport_http::{Client, Http}; -use alloy_transport_ws::WsConnect; +use alloy::transports::http::{Client, Http}; +use alloy::transports::ws::WsConnect; +use alloy::transports::{TransportError, TransportResult}; +use alloy_json_rpc::{RpcParam, RpcReturn}; +use alloy_primitives::{Address, BlockHash, BlockNumber, Bytes, ChainId, B256, U256, U64}; +use alloy_rlp::Encodable; use eigen_logging::get_test_logger; use eigen_metrics_collectors_rpc_calls::RpcCallsMetrics as RpcCallsCollector; use hex; @@ -614,7 +614,7 @@ impl InstrumentedClient { ) })?; if let Some(ws_client) = self.ws_client.as_ref() { - ws_client.get_subscription(id).await + ws_client.get_subscription(id.into()).await } else { Err(TransportError::UnsupportedFeature( "http client does not support eth_subscribe calls.", @@ -642,7 +642,7 @@ impl InstrumentedClient { .error("Failed to subscribe new head", err.to_string().as_str()) })?; if let Some(ws_client) = self.ws_client.as_ref() { - ws_client.get_subscription(id).await + ws_client.get_subscription(id.into()).await } else { Err(TransportError::UnsupportedFeature( "http client does not support eth_subscribe calls.", @@ -828,13 +828,13 @@ impl InstrumentedClient { #[cfg(test)] mod tests { use super::*; - use alloy_consensus::{SignableTransaction, TxLegacy}; - use alloy_node_bindings::Anvil; - use alloy_primitives::{bytes, TxKind::Call, U256}; - use alloy_provider::network::TxSignerSync; - use alloy_rpc_types_eth::{ + use alloy::consensus::{SignableTransaction, TxLegacy}; + use alloy::network::TxSignerSync; + use alloy::primitives::{bytes, TxKind::Call, U256}; + use alloy::rpc::types::eth::{ pubsub::SubscriptionResult, BlockId, BlockNumberOrTag, BlockTransactionsKind, }; + use alloy_node_bindings::Anvil; use eigen_signer::signer::Config; use eigen_testing_utils::anvil::start_anvil_container; use eigen_utils::get_provider; @@ -945,8 +945,7 @@ mod tests { .unwrap() .unwrap() .header - .hash - .unwrap(); + .hash; let expected_block = provider .get_block_by_hash(hash, BlockTransactionsKind::Full) @@ -990,7 +989,7 @@ mod tests { .unwrap() .unwrap(); - let block_hash = block.header.hash.unwrap(); + let block_hash = block.header.hash; let tx_count = instrumented_client .transaction_count(B256::from_slice(block_hash.as_slice())) .await @@ -1034,7 +1033,7 @@ mod tests { let signer = Config::signer_from_config(config).unwrap(); let signature = signer.sign_transaction_sync(&mut tx).unwrap(); let signed_tx = tx.into_signed(signature); - let tx: TxEnvelope = signed_tx.into(); + let tx: TxEnvelope = TxEnvelope::from(signed_tx); // test send_transaction let tx_hash = instrumented_client.send_transaction(tx).await; @@ -1088,7 +1087,7 @@ mod tests { let expected_estimated_gas = provider.clone().estimate_gas(&tx_request).await.unwrap(); let estimated_gas = instrumented_client.estimate_gas(tx_request).await.unwrap(); - assert_eq!(expected_estimated_gas, estimated_gas.into()); + assert_eq!(expected_estimated_gas, estimated_gas); } #[tokio::test] @@ -1235,9 +1234,7 @@ mod tests { .unwrap() .unwrap() .header - .hash - .unwrap(); - + .hash; let expected_header = provider .get_block_by_hash(hash, BlockTransactionsKind::Hashes) .await diff --git a/crates/chainio/clients/fireblocks/Cargo.toml b/crates/chainio/clients/fireblocks/Cargo.toml index b5165a39..be87695b 100644 --- a/crates/chainio/clients/fireblocks/Cargo.toml +++ b/crates/chainio/clients/fireblocks/Cargo.toml @@ -8,11 +8,9 @@ description = "fireblocks support for eigenlayer" license-file.workspace = true [dependencies] -alloy-contract.workspace = true #alloy +alloy.workspace = true alloy-primitives.workspace = true -alloy-provider.workspace = true -alloy-rpc-types.workspace = true chrono = "0.4" #eigen diff --git a/crates/chainio/clients/fireblocks/src/error.rs b/crates/chainio/clients/fireblocks/src/error.rs index 0a151743..1813e9fb 100644 --- a/crates/chainio/clients/fireblocks/src/error.rs +++ b/crates/chainio/clients/fireblocks/src/error.rs @@ -1,4 +1,4 @@ -use alloy_contract::Error as AlloyError; +use alloy::contract::Error as AlloyError; use jsonwebtoken::errors::Error; use reqwest::header::InvalidHeaderValue; use reqwest::Error as ReqwestError; diff --git a/crates/chainio/clients/fireblocks/src/lib.rs b/crates/chainio/clients/fireblocks/src/lib.rs index 034514d0..edbdb2c5 100644 --- a/crates/chainio/clients/fireblocks/src/lib.rs +++ b/crates/chainio/clients/fireblocks/src/lib.rs @@ -17,10 +17,10 @@ pub mod transaction; use std::collections::HashMap; use std::str::FromStr; +use alloy::providers::Provider; +use alloy::rpc::types::transaction::TransactionReceipt; use alloy_primitives::Address; use alloy_primitives::U64; -use alloy_provider::Provider; -use alloy_rpc_types::transaction::TransactionReceipt; use client::{Client, ASSET_ID_BY_CHAIN}; use eigen_utils::get_provider; use error::FireBlockError; @@ -54,7 +54,7 @@ impl FireblocksWallet { ) -> Result { let provider_ = get_provider(&provider); let chain_id = provider_.get_chain_id().await.map_err(|e| { - FireBlockError::AlloyContractError(alloy_contract::Error::TransportError(e)) + FireBlockError::AlloyContractError(alloy::contract::Error::TransportError(e)) })?; Ok(Self { @@ -197,7 +197,7 @@ impl FireblocksWallet { .map_err(|e| FireBlockError::OtherError(e.to_string()))?; let tx_hash = provider.get_transaction_receipt(hash).await.map_err(|e| { - FireBlockError::AlloyContractError(alloy_contract::Error::TransportError(e)) + FireBlockError::AlloyContractError(alloy::contract::Error::TransportError(e)) })?; let tx = diff --git a/crates/chainio/txmanager/Cargo.toml b/crates/chainio/txmanager/Cargo.toml index 69e8b0b4..10b6e9dc 100644 --- a/crates/chainio/txmanager/Cargo.toml +++ b/crates/chainio/txmanager/Cargo.toml @@ -8,13 +8,7 @@ repository.workspace = true license-file.workspace = true [dependencies] -alloy-eips.workspace = true -alloy-network.workspace = true -alloy-primitives.workspace = true -alloy-provider.workspace = true -alloy-rpc-types-eth.workspace = true -alloy-signer-local.workspace = true -alloy-transport-http.workspace = true +alloy.workspace = true eigen-logging.workspace = true eigen-signer.workspace = true k256.workspace = true @@ -22,6 +16,7 @@ reqwest.workspace = true thiserror.workspace = true [dev-dependencies] +alloy-primitives.workspace = true alloy-consensus.workspace = true alloy-node-bindings.workspace = true once_cell.workspace = true diff --git a/crates/chainio/txmanager/src/simple_tx_manager.rs b/crates/chainio/txmanager/src/simple_tx_manager.rs index 3c0ac2c2..f82600ac 100644 --- a/crates/chainio/txmanager/src/simple_tx_manager.rs +++ b/crates/chainio/txmanager/src/simple_tx_manager.rs @@ -1,9 +1,9 @@ -use alloy_eips::BlockNumberOrTag; -use alloy_network::{Ethereum, EthereumWallet, TransactionBuilder}; -use alloy_primitives::Address; -use alloy_provider::{PendingTransactionBuilder, Provider, ProviderBuilder, RootProvider}; -use alloy_rpc_types_eth::{TransactionInput, TransactionReceipt, TransactionRequest}; -use alloy_signer_local::PrivateKeySigner; +use alloy::eips::BlockNumberOrTag; +use alloy::network::{Ethereum, EthereumWallet, TransactionBuilder}; +use alloy::primitives::{Address, U256}; +use alloy::providers::{PendingTransactionBuilder, Provider, ProviderBuilder, RootProvider}; +use alloy::rpc::types::eth::{TransactionInput, TransactionReceipt, TransactionRequest}; +use alloy::signers::local::PrivateKeySigner; use eigen_logging::logger::SharedLogger; use eigen_signer::signer::Config; use k256::ecdsa::SigningKey; @@ -12,7 +12,7 @@ use thiserror::Error; static FALLBACK_GAS_TIP_CAP: u128 = 5_000_000_000; -pub type Transport = alloy_transport_http::Http; +pub type Transport = alloy::transports::http::Http; /// Possible errors raised in Tx Manager #[derive(Error, Debug)] @@ -216,7 +216,7 @@ impl SimpleTxManager { // 2*baseFee + gas_tip_cap makes sure that the tx remains includeable for 6 consecutive 100% full blocks. // see https://www.blocknative.com/blog/eip-1559-fees let base_fee = header.base_fee_per_gas.ok_or(TxManagerError::SendTxError)?; - let gas_fee_cap = 2 * base_fee + gas_tip_cap; + let gas_fee_cap: u128 = (2 * base_fee + U256::from(gas_tip_cap).to::()).into(); let mut gas_limit = tx.gas_limit(); let tx_input = tx.input().unwrap_or_default().to_vec(); @@ -291,11 +291,11 @@ impl SimpleTxManager { #[cfg(test)] mod tests { use super::SimpleTxManager; - use alloy_consensus::TxLegacy; - use alloy_network::TransactionBuilder; + use alloy::consensus::TxLegacy; + use alloy::network::TransactionBuilder; + use alloy::rpc::types::eth::TransactionRequest; use alloy_node_bindings::Anvil; use alloy_primitives::{bytes, TxKind::Call, U256}; - use alloy_rpc_types_eth::TransactionRequest; use eigen_logging::get_test_logger; use tokio; diff --git a/crates/crypto/bls/src/lib.rs b/crates/crypto/bls/src/lib.rs index 4a7cf9dc..cf9eee6d 100644 --- a/crates/crypto/bls/src/lib.rs +++ b/crates/crypto/bls/src/lib.rs @@ -14,17 +14,13 @@ use ark_ec::{AffineRepr, CurveGroup}; use ark_ff::{fields::PrimeField, BigInt, BigInteger256, Fp2}; use ark_serialize::{CanonicalDeserialize, CanonicalSerialize}; use eigen_crypto_bn254::utils::map_to_curve; -use eigen_utils::binding::IBLSSignatureChecker::{ +use eigen_utils::blsapkregistry::BN254::{G1Point as G1PointRegistry, G2Point as G2PointRegistry}; +use eigen_utils::iblssignaturechecker::BN254::{ G1Point as G1PointChecker, G2Point as G2PointChecker, }; -use eigen_utils::binding::{ - BLSApkRegistry, - RegistryCoordinator::{self}, -}; +use eigen_utils::registrycoordinator::BN254::{G1Point, G2Point}; use serde::de::{self, Visitor}; use serde::{Deserialize, Serialize}; -use BLSApkRegistry::{G1Point as G1PointRegistry, G2Point as G2PointRegistry}; -use RegistryCoordinator::{G1Point, G2Point}; pub type PrivateKey = Fr; pub type PublicKey = G1Affine; pub type BlsSignature = G1Affine; diff --git a/crates/eigen-cli/Cargo.toml b/crates/eigen-cli/Cargo.toml index db8b104c..238c715c 100644 --- a/crates/eigen-cli/Cargo.toml +++ b/crates/eigen-cli/Cargo.toml @@ -8,6 +8,7 @@ description = "eigen layer cli" license-file.workspace = true [dependencies] +alloy.workspace = true alloy-contract.workspace = true alloy-json-rpc.workspace = true alloy-primitives.workspace = true diff --git a/crates/eigen-cli/src/eigen_address.rs b/crates/eigen-cli/src/eigen_address.rs index 523ed9e4..0f84e8ac 100644 --- a/crates/eigen-cli/src/eigen_address.rs +++ b/crates/eigen-cli/src/eigen_address.rs @@ -1,10 +1,13 @@ use crate::EigenAddressCliError; -use alloy_contract::Error as ContractError; -use alloy_primitives::Address; -use alloy_provider::Provider; +use alloy::contract::Error as ContractError; +use alloy::primitives::Address; +use alloy::providers::Provider; use eigen_utils::{ - binding::{DelegationManager, IBLSSignatureChecker, RegistryCoordinator}, get_provider, + { + delegationmanager::DelegationManager, iblssignaturechecker::IBLSSignatureChecker, + registrycoordinator::RegistryCoordinator, + }, }; use serde::{Deserialize, Serialize}; @@ -112,9 +115,9 @@ impl ContractAddresses { client: P, ) -> Result<(Address, Address), EigenAddressCliError> where - T: alloy_contract::private::Transport + ::core::clone::Clone, - P: alloy_contract::private::Provider, - N: alloy_contract::private::Network, + T: alloy::contract::private::Transport + ::core::clone::Clone, + P: alloy::contract::private::Provider, + N: alloy::contract::private::Network, { match (registry_coordinator, service_manager) { (Some(registry_coord_addr), _) => { @@ -156,9 +159,9 @@ impl ContractAddresses { client: P, ) -> Result where - P: alloy_contract::private::Provider, - T: alloy_contract::private::Transport + ::core::clone::Clone, - N: alloy_contract::private::Network, + P: alloy::contract::private::Provider, + T: alloy::contract::private::Transport + ::core::clone::Clone, + N: alloy::contract::private::Network, { let service_manager = IBLSSignatureChecker::new(service_manager_addr, &client); let delegation_manager = service_manager.delegation().call().await?._0; @@ -188,9 +191,9 @@ impl ContractAddresses { client: P, ) -> Result where - P: alloy_contract::private::Provider, - T: alloy_contract::private::Transport + ::core::clone::Clone, - N: alloy_contract::private::Network, + P: alloy::contract::private::Provider, + T: alloy::contract::private::Transport + ::core::clone::Clone, + N: alloy::contract::private::Network, { let registry_coordinator_instance = RegistryCoordinator::new(registry_coordinator, &client); let service_manager = registry_coordinator_instance diff --git a/crates/eigen-cli/src/lib.rs b/crates/eigen-cli/src/lib.rs index 18cd6afe..e3acea18 100644 --- a/crates/eigen-cli/src/lib.rs +++ b/crates/eigen-cli/src/lib.rs @@ -13,9 +13,9 @@ use eth_keystore::KeystoreError; use tokio::runtime::Runtime; use crate::eigen_address::ContractAddresses; -use alloy_contract::Error as ContractError; -use alloy_json_rpc::RpcError; -use alloy_transport::TransportErrorKind; +use alloy::contract::Error as ContractError; +use alloy::transports::RpcError; +use alloy::transports::TransportErrorKind; use args::{Commands, EigenKeyCommand}; use ark_serialize::SerializationError; use bls::BlsKeystore; diff --git a/crates/nodeapi/src/lib.rs b/crates/nodeapi/src/lib.rs index e371b962..c84efbd9 100644 --- a/crates/nodeapi/src/lib.rs +++ b/crates/nodeapi/src/lib.rs @@ -381,7 +381,7 @@ mod tests { // Test the /eigen/node route let resp = client - .get(&format!("http://{}/eigen/node", ip_port_addr)) + .get(format!("http://{}/eigen/node", ip_port_addr)) .send() .await .unwrap(); @@ -389,7 +389,7 @@ mod tests { // Test the /eigen/node/health route let resp = client - .get(&format!("http://{}/eigen/node/health", ip_port_addr)) + .get(format!("http://{}/eigen/node/health", ip_port_addr)) .send() .await .unwrap(); @@ -397,7 +397,7 @@ mod tests { // // Test the /eigen/node/services route let resp = client - .get(&format!("http://{}/eigen/node/services", ip_port_addr)) + .get(format!("http://{}/eigen/node/services", ip_port_addr)) .send() .await .unwrap(); @@ -405,7 +405,7 @@ mod tests { // Test the /eigen/node/services/{id}/health route let resp = client - .get(&format!( + .get(format!( "http://{}/eigen/node/services/test_service/health", ip_port_addr )) diff --git a/crates/services/avsregistry/src/chaincaller.rs b/crates/services/avsregistry/src/chaincaller.rs index 285d94ac..7f8acdee 100644 --- a/crates/services/avsregistry/src/chaincaller.rs +++ b/crates/services/avsregistry/src/chaincaller.rs @@ -6,7 +6,7 @@ use eigen_client_avsregistry::{error::AvsRegistryError, reader::AvsRegistryReade use eigen_crypto_bls::{BlsG1Point, PublicKey}; use eigen_services_operatorsinfo::operator_info::OperatorInfoService; use eigen_types::operator::{OperatorAvsState, OperatorInfo, OperatorPubKeys, QuorumAvsState}; -use eigen_utils::binding::OperatorStateRetriever::CheckSignaturesIndices; +use eigen_utils::operatorstateretriever::OperatorStateRetriever::CheckSignaturesIndices; use std::collections::HashMap; use crate::AvsRegistryService; diff --git a/crates/services/avsregistry/src/fake_avs_registry_service.rs b/crates/services/avsregistry/src/fake_avs_registry_service.rs index 5543b03a..a5456d2a 100644 --- a/crates/services/avsregistry/src/fake_avs_registry_service.rs +++ b/crates/services/avsregistry/src/fake_avs_registry_service.rs @@ -10,7 +10,7 @@ use eigen_types::{ operator::{OperatorAvsState, OperatorInfo, OperatorPubKeys, QuorumAvsState, QuorumNum}, test::TestOperator, }; -use eigen_utils::binding::OperatorStateRetriever::CheckSignaturesIndices; +use eigen_utils::operatorstateretriever::OperatorStateRetriever::CheckSignaturesIndices; use crate::AvsRegistryService; diff --git a/crates/services/avsregistry/src/lib.rs b/crates/services/avsregistry/src/lib.rs index d397e4e8..95ce6474 100644 --- a/crates/services/avsregistry/src/lib.rs +++ b/crates/services/avsregistry/src/lib.rs @@ -10,7 +10,7 @@ use alloy_primitives::FixedBytes; use async_trait::async_trait; use eigen_client_avsregistry::error::AvsRegistryError; use eigen_types::operator::{OperatorAvsState, QuorumAvsState}; -use eigen_utils::binding::OperatorStateRetriever::CheckSignaturesIndices; +use eigen_utils::operatorstateretriever::OperatorStateRetriever::CheckSignaturesIndices; pub mod chaincaller; pub mod fake_avs_registry_service; diff --git a/crates/services/bls_aggregation/Cargo.toml b/crates/services/bls_aggregation/Cargo.toml index 36b9475e..410ba81e 100644 --- a/crates/services/bls_aggregation/Cargo.toml +++ b/crates/services/bls_aggregation/Cargo.toml @@ -9,6 +9,7 @@ repository.workspace = true license-file.workspace = true [dependencies] +alloy.workspace = true alloy-primitives.workspace = true ark-bn254.workspace = true ark-ec.workspace = true diff --git a/crates/services/bls_aggregation/src/bls_agg_test.rs b/crates/services/bls_aggregation/src/bls_agg_test.rs index dd229d8a..692f3ea3 100644 --- a/crates/services/bls_aggregation/src/bls_agg_test.rs +++ b/crates/services/bls_aggregation/src/bls_agg_test.rs @@ -1,8 +1,8 @@ #[cfg(test)] pub mod integration_test { use crate::bls_agg::{BlsAggregationServiceResponse, BlsAggregatorService}; - use alloy_primitives::{hex, Bytes, FixedBytes, B256, U256}; - use alloy_provider::Provider; + use alloy::providers::Provider; + use alloy_primitives::{aliases::U96, hex, Bytes, FixedBytes, B256, U256}; use eigen_client_avsregistry::{ reader::AvsRegistryChainReader, writer::AvsRegistryChainWriter, }; @@ -25,11 +25,17 @@ pub mod integration_test { operator::{QuorumNum, QuorumThresholdPercentages}, }; use eigen_utils::{ - binding::{ - IBLSSignatureChecker::{self, G1Point, NonSignerStakesAndSignature}, - RegistryCoordinator::{self, OperatorSetParam, StrategyParams}, - }, get_provider, get_signer, + { + iblssignaturechecker::{ + IBLSSignatureChecker::{self, NonSignerStakesAndSignature}, + BN254::G1Point, + }, + registrycoordinator::{ + IRegistryCoordinator::OperatorSetParam, IStakeRegistry::StrategyParams, + RegistryCoordinator, + }, + }, }; use serde::Deserialize; use sha2::{Digest, Sha256}; @@ -146,7 +152,7 @@ pub mod integration_test { // Create quorum let contract_registry_coordinator = RegistryCoordinator::new( registry_coordinator_address, - get_signer(PRIVATE_KEY_1.to_string(), http_endpoint.as_str()), + get_signer(PRIVATE_KEY_1, http_endpoint.as_str()), ); let operator_set_params = OperatorSetParam { maxOperatorCount: 10, @@ -155,10 +161,10 @@ pub mod integration_test { }; let strategy_params = StrategyParams { strategy: get_erc20_mock_strategy(http_endpoint.clone()).await, - multiplier: 1, + multiplier: U96::from(1), }; let _ = contract_registry_coordinator - .createQuorum(operator_set_params, 0, vec![strategy_params]) + .createQuorum(operator_set_params, U96::from(0), vec![strategy_params]) .send() .await .unwrap(); @@ -263,7 +269,7 @@ pub mod integration_test { let contract_registry_coordinator = RegistryCoordinator::new( registry_coordinator_address, - get_signer(PRIVATE_KEY_1.to_string(), http_endpoint.as_str()), + get_signer(PRIVATE_KEY_1, http_endpoint.as_str()), ); // Create quorum @@ -274,10 +280,14 @@ pub mod integration_test { }; let strategy_params = vec![StrategyParams { strategy: get_erc20_mock_strategy(http_endpoint.clone()).await, - multiplier: 1, + multiplier: U96::from(1), }]; let _ = contract_registry_coordinator - .createQuorum(operator_set_params.clone(), 0, strategy_params.clone()) + .createQuorum( + operator_set_params.clone(), + U96::from(0), + strategy_params.clone(), + ) .send() .await .unwrap(); @@ -459,7 +469,7 @@ pub mod integration_test { let contract_registry_coordinator = RegistryCoordinator::new( registry_coordinator_address, - get_signer(PRIVATE_KEY_1.to_string(), http_endpoint.as_str()), + get_signer(PRIVATE_KEY_1, http_endpoint.as_str()), ); // Create quorums @@ -470,20 +480,28 @@ pub mod integration_test { }; let strategy_params = vec![StrategyParams { strategy: get_erc20_mock_strategy(http_endpoint.clone()).await, - multiplier: 1, + multiplier: U96::from(1), }]; let _ = contract_registry_coordinator - .createQuorum(operator_set_params.clone(), 0, strategy_params.clone()) + .createQuorum( + operator_set_params.clone(), + U96::from(0), + strategy_params.clone(), + ) .send() .await .unwrap(); let _ = contract_registry_coordinator - .createQuorum(operator_set_params.clone(), 0, strategy_params.clone()) + .createQuorum( + operator_set_params.clone(), + U96::from(0), + strategy_params.clone(), + ) .send() .await .unwrap(); let _ = contract_registry_coordinator - .createQuorum(operator_set_params, 0, strategy_params) + .createQuorum(operator_set_params, U96::from(0), strategy_params) .send() .await .unwrap(); diff --git a/crates/services/operatorsinfo/Cargo.toml b/crates/services/operatorsinfo/Cargo.toml index 330cfdb9..cfc6f1aa 100644 --- a/crates/services/operatorsinfo/Cargo.toml +++ b/crates/services/operatorsinfo/Cargo.toml @@ -9,10 +9,9 @@ repository.workspace = true license-file.workspace = true [dependencies] +alloy.workspace = true async-trait.workspace = true alloy-primitives.workspace = true -alloy-provider = { workspace = true, features = ["ws"] } -alloy-rpc-types.workspace = true anyhow = "1.0.83" eigen-client-avsregistry.workspace = true eigen-crypto-bls.workspace = true diff --git a/crates/services/operatorsinfo/src/operatorsinfo_inmemory.rs b/crates/services/operatorsinfo/src/operatorsinfo_inmemory.rs index 54d98ede..959cccc9 100644 --- a/crates/services/operatorsinfo/src/operatorsinfo_inmemory.rs +++ b/crates/services/operatorsinfo/src/operatorsinfo_inmemory.rs @@ -1,6 +1,6 @@ +use alloy::providers::Provider; +use alloy::rpc::types::Filter; use alloy_primitives::{Address, FixedBytes}; -use alloy_provider::Provider; -use alloy_rpc_types::Filter; use anyhow::Result; use async_trait::async_trait; use eigen_client_avsregistry::reader::AvsRegistryChainReader; @@ -11,7 +11,10 @@ use eigen_crypto_bls::{ use eigen_logging::logger::SharedLogger; use eigen_types::operator::{operator_id_from_g1_pub_key, OperatorPubKeys}; use eigen_utils::{ - binding::BLSApkRegistry::{self, G1Point, G2Point}, + blsapkregistry::{ + BLSApkRegistry, + BN254::{G1Point, G2Point}, + }, get_ws_provider, NEW_PUBKEY_REGISTRATION_EVENT, }; use futures_util::StreamExt; diff --git a/crates/signer/Cargo.toml b/crates/signer/Cargo.toml index 1389bd2a..62596774 100644 --- a/crates/signer/Cargo.toml +++ b/crates/signer/Cargo.toml @@ -8,6 +8,7 @@ description = "aws,keystore,web3,private_key signers" license-file.workspace = true [dependencies] +alloy.workspace =true alloy-consensus.workspace = true alloy-network.workspace = true alloy-primitives.workspace = true diff --git a/crates/signer/src/signer.rs b/crates/signer/src/signer.rs index 2fdd201b..10468892 100644 --- a/crates/signer/src/signer.rs +++ b/crates/signer/src/signer.rs @@ -1,7 +1,7 @@ use crate::web3_signer::Web3Signer; -use alloy_primitives::Address; -use alloy_signer_aws::{AwsSigner, AwsSignerError}; -use alloy_signer_local::PrivateKeySigner; +use alloy::primitives::Address; +use alloy::signers::aws::{AwsSigner, AwsSignerError}; +use alloy::signers::local::PrivateKeySigner; use eth_keystore::decrypt_key; use std::path::Path; use thiserror::Error; @@ -66,12 +66,12 @@ impl Config { #[cfg(test)] mod test { use super::Config; - use alloy_consensus::{SignableTransaction, TxLegacy}; - use alloy_network::{TxSigner, TxSignerSync}; + use alloy::consensus::{SignableTransaction, TxLegacy}; + use alloy::network::{TxSigner, TxSignerSync}; + use alloy::signers::local::PrivateKeySigner; + use alloy::signers::Signature; use alloy_node_bindings::Anvil; use alloy_primitives::{address, bytes, hex_literal::hex, keccak256, Address, U256}; - use alloy_signer::Signature; - use alloy_signer_local::PrivateKeySigner; use aws_config::{BehaviorVersion, Region, SdkConfig}; use aws_sdk_kms::{ self, diff --git a/crates/signer/src/web3_signer.rs b/crates/signer/src/web3_signer.rs index b43ea9b9..034e26b9 100644 --- a/crates/signer/src/web3_signer.rs +++ b/crates/signer/src/web3_signer.rs @@ -1,8 +1,8 @@ -use alloy_consensus::{SignableTransaction, TxLegacy}; -use alloy_network::TxSigner; -use alloy_primitives::{Address, Bytes, TxKind, U256}; -use alloy_rpc_client::{ClientBuilder, ReqwestClient, RpcCall}; -use alloy_signer::Signature; +use alloy::consensus::{SignableTransaction, TxLegacy}; +use alloy::network::TxSigner; +use alloy::primitives::{Address, Bytes, TxKind, U256}; +use alloy::rpc::client::{ClientBuilder, ReqwestClient, RpcCall}; +use alloy::signers::Signature; use async_trait::async_trait; use serde::Serialize; use url::Url; @@ -51,7 +51,7 @@ impl TxSigner for Web3Signer { async fn sign_transaction( &self, tx: &mut dyn SignableTransaction, - ) -> alloy_signer::Result { + ) -> alloy::signers::Result { let params = SignTransactionParams { from: self.address.to_string(), to: tx.to(), @@ -64,10 +64,10 @@ impl TxSigner for Web3Signer { let request: RpcCall<_, Vec, Bytes> = self.client.request("eth_signTransaction", vec![params]); - let rlp_encoded_signed_tx = request.await.map_err(alloy_signer::Error::other)?; + let rlp_encoded_signed_tx = request.await.map_err(alloy::signers::Error::other)?; let signed_tx = TxLegacy::decode_signed_fields(&mut rlp_encoded_signed_tx.as_ref()) - .map_err(alloy_signer::Error::other)?; + .map_err(alloy::signers::Error::other)?; Ok(*signed_tx.signature()) } diff --git a/crates/types/src/operator.rs b/crates/types/src/operator.rs index ada37dda..d8df145f 100644 --- a/crates/types/src/operator.rs +++ b/crates/types/src/operator.rs @@ -1,4 +1,4 @@ -use alloy_primitives::{Address, FixedBytes, U256}; +use alloy_primitives::{aliases::U192, Address, FixedBytes, U256}; use ark_serialize::{CanonicalSerialize, SerializationError}; use eigen_crypto_bls::{BlsG1Point, BlsG2Point, BlsKeyPair}; use ethers::{types::U64, utils::keccak256}; @@ -23,6 +23,20 @@ pub fn bitmap_to_quorum_ids(quorum_bitmaps: U256) -> Vec { quorum_ids } +pub fn bitmap_to_quorum_ids_from_u192(quorum_bitmaps: U192) -> Vec { + let bytes = quorum_bitmaps.to_be_bytes::<32>(); + + let mut quorum_ids: Vec = Vec::with_capacity(usize::from(MAX_NUMBER_OF_QUORUMS)); + + for i in 0..MAX_NUMBER_OF_QUORUMS { + let bitmap = BigUint::from_bytes_be(&bytes); + if bitmap.bit(u64::from(i)) { + quorum_ids.push(i); + } + } + quorum_ids +} + #[derive(Debug, Clone, PartialEq, Eq)] pub struct OperatorPubKeys { pub g1_pub_key: BlsG1Point, diff --git a/crates/utils/Cargo.toml b/crates/utils/Cargo.toml index 032c8863..404bc1b2 100644 --- a/crates/utils/Cargo.toml +++ b/crates/utils/Cargo.toml @@ -8,13 +8,7 @@ description = "publicly exportable alloy bindings and utilities" license-file.workspace = true [dependencies] -alloy-contract.workspace = true -alloy-json-rpc.workspace = true -alloy-network.workspace = true -alloy-provider = {workspace = true, features = ["ws"]} -alloy-pubsub.workspace = true -alloy-signer-local.workspace = true -alloy-sol-types = { workspace = true, features = ["json"] } -alloy-transport.workspace = true -alloy-transport-http.workspace = true +alloy.workspace = true reqwest.workspace = true + + diff --git a/crates/utils/json/AVSDirectory.json b/crates/utils/json/AVSDirectory.json deleted file mode 100644 index 21544666..00000000 --- a/crates/utils/json/AVSDirectory.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_delegation","type":"address","internalType":"contract IDelegationManager"}],"stateMutability":"nonpayable"},{"type":"function","name":"DOMAIN_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_AVS_REGISTRATION_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"avsOperatorStatus","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum IAVSDirectory.OperatorAVSRegistrationStatus"}],"stateMutability":"view"},{"type":"function","name":"calculateOperatorAVSRegistrationDigestHash","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"avs","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"cancelSalt","inputs":[{"name":"salt","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegation","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IDelegationManager"}],"stateMutability":"view"},{"type":"function","name":"deregisterOperatorFromAVS","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"domainSeparator","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"initialOwner","type":"address","internalType":"address"},{"name":"_pauserRegistry","type":"address","internalType":"contract IPauserRegistry"},{"name":"initialPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operatorSaltIsSpent","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[{"name":"newPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pauseAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[{"name":"index","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pauserRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPauserRegistry"}],"stateMutability":"view"},{"type":"function","name":"registerOperatorToAVS","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"operatorSignature","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPauserRegistry","inputs":[{"name":"newPauserRegistry","type":"address","internalType":"contract IPauserRegistry"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","inputs":[{"name":"newPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateAVSMetadataURI","inputs":[{"name":"metadataURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AVSMetadataURIUpdated","inputs":[{"name":"avs","type":"address","indexed":true,"internalType":"address"},{"name":"metadataURI","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"OperatorAVSRegistrationStatusUpdated","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"avs","type":"address","indexed":true,"internalType":"address"},{"name":"status","type":"uint8","indexed":false,"internalType":"enum IAVSDirectory.OperatorAVSRegistrationStatus"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PauserRegistrySet","inputs":[{"name":"pauserRegistry","type":"address","indexed":false,"internalType":"contract IPauserRegistry"},{"name":"newPauserRegistry","type":"address","indexed":false,"internalType":"contract IPauserRegistry"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x60c06040523480156200001157600080fd5b5060405162001f7838038062001f78833981016040819052620000349162000118565b6001600160a01b0381166080526200004b62000056565b504660a0526200014a565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000116576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012b57600080fd5b81516001600160a01b03811681146200014357600080fd5b9392505050565b60805160a051611e01620001776000396000610ea801526000818161032401526109830152611e016000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118ab565b610387565b005b61015a61016a3660046118cf565b610443565b61015a61017d3660046118e8565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611929565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b610228610208366004611955565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b391906119a4565b61015a6106ac565b6101ea61024b3660046119cc565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a5f565b610787565b6101a96102cd366004611b46565b610b1a565b61015a6102e03660046118ab565b610bd3565b61015a6102f3366004611b8c565b610d3c565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103543660046118cf565b610d83565b61015a6103673660046118ab565b610e2e565b6101a9610ea4565b61015a6103823660046118cf565b610ee2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611bfe565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c1b565b60405180910390fd5b6104408161103e565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c65565b6104cb5760405162461bcd60e51b815260040161042e90611c87565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611135565b61065461121f565b609755610660846112b6565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c65565b6107345760405162461bcd60e51b815260040161042e90611c87565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611308565b61078560006112b6565b565b606654600090600190811614156107dc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108445760405162461bcd60e51b815260206004820152603e6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087e5761087e61198e565b14156108e05760405162461bcd60e51b815260206004820152603f6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109645760405162461bcd60e51b81526020600482015260366024820152600080516020611dac8339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190611c65565b610a645760405162461bcd60e51b815260206004820152604d6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a7a843385602001518660400151610b1a565b9050610a8b84828560000151611362565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0c91906119a4565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b90610ea4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460009060019081161415610c285760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c6257610c6261198e565b14610cd55760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d3091906119a4565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d77929190611ccf565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e085760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e36611308565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b6565b60007f0000000000000000000000000000000000000000000000000000000000000000461415610ed5575060975490565b610edd61121f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190611bfe565b6001600160a01b0316336001600160a01b031614610f895760405162461bcd60e51b815260040161042e90611c1b565b6066541981196066541916146110075760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110cc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115657506001600160a01b03821615155b6111d85760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261121b8261103e565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561148157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906113a29086908690600401611cfe565b602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190611d5b565b6001600160e01b0319161461147c5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b03166114958383611521565b6001600160a01b03161461147c5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b60008060006115308585611545565b9150915061153d816115b5565b509392505050565b60008082516041141561157c5760208301516040840151606085015160001a61157087828585611770565b945094505050506115ae565b8251604014156115a6576020830151604084015161159b86838361185d565b9350935050506115ae565b506000905060025b9250929050565b60008160048111156115c9576115c961198e565b14156115d25750565b60018160048111156115e6576115e661198e565b14156116345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b60028160048111156116485761164861198e565b14156116965760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116aa576116aa61198e565b14156117035760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b60048160048111156117175761171761198e565b14156104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156117a75750600090506003611854565b8460ff16601b141580156117bf57508460ff16601c14155b156117d05750600090506004611854565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611824573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661184d57600060019250925050611854565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187a60ff86901c601b611d85565b905061188887828885611770565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118bd57600080fd5b81356118c881611896565b9392505050565b6000602082840312156118e157600080fd5b5035919050565b6000806000606084860312156118fd57600080fd5b833561190881611896565b9250602084013561191881611896565b929592945050506040919091013590565b6000806040838503121561193c57600080fd5b823561194781611896565b946020939093013593505050565b6000806040838503121561196857600080fd5b823561197381611896565b9150602083013561198381611896565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119c657634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119de57600080fd5b813560ff811681146118c857600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a2857611a286119ef565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a5757611a576119ef565b604052919050565b60008060408385031215611a7257600080fd5b8235611a7d81611896565b915060208381013567ffffffffffffffff80821115611a9b57600080fd5b9085019060608288031215611aaf57600080fd5b611ab7611a05565b823582811115611ac657600080fd5b8301601f81018913611ad757600080fd5b803583811115611ae957611ae96119ef565b611afb601f8201601f19168701611a2e565b93508084528986828401011115611b1157600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b60008060008060808587031215611b5c57600080fd5b8435611b6781611896565b93506020850135611b7781611896565b93969395505050506040820135916060013590565b60008060208385031215611b9f57600080fd5b823567ffffffffffffffff80821115611bb757600080fd5b818501915085601f830112611bcb57600080fd5b813581811115611bda57600080fd5b866020828501011115611bec57600080fd5b60209290920196919550909350505050565b600060208284031215611c1057600080fd5b81516118c881611896565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7757600080fd5b815180151581146118c857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b82815260006020604081840152835180604085015260005b81811015611d3257858101830151858201606001528201611d16565b81811115611d44576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215611d6d57600080fd5b81516001600160e01b0319811681146118c857600080fd5b60008219821115611da657634e487b7160e01b600052601160045260246000fd5b50019056fe4156534469726563746f72792e72656769737465724f70657261746f72546f41a2646970667358221220842a02bfcaaf4616ea91b34879e8b9e698a1b8b9b040e39b45dad31f22321d4064736f6c634300080c0033","sourceMap":"416:6708:1:-:0;;;1069:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1732:24:2;;;;1156:22:1::1;:20;:22::i;:::-;-1:-1:-1::0;1208:13:1::1;1188:33;::::0;416:6708;;5388:279:59;5456:13;;;;;;;5455:14;5447:66;;;;-1:-1:-1;;;5447:66:59;;538:2:178;5447:66:59;;;520:21:178;577:2;557:18;;;550:30;616:34;596:18;;;589:62;-1:-1:-1;;;667:18:178;;;660:37;714:19;;5447:66:59;;;;;;;;5527:12;;5542:15;5527:12;;;:30;5523:138;;;5573:12;:30;;-1:-1:-1;;5573:30:59;5588:15;5573:30;;;;;;5622:28;;886:36:178;;;5622:28:59;;874:2:178;859:18;5622:28:59;;;;;;;5523:138;5388:279::o;14:317:178:-;111:6;164:2;152:9;143:7;139:23;135:32;132:52;;;180:1;177;170:12;132:52;206:16;;-1:-1:-1;;;;;251:31:178;;241:42;;231:70;;297:1;294;287:12;231:70;320:5;14:317;-1:-1:-1;;;14:317:178:o;744:184::-;416:6708:1;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118ab565b610387565b005b61015a61016a3660046118cf565b610443565b61015a61017d3660046118e8565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611929565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b610228610208366004611955565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b391906119a4565b61015a6106ac565b6101ea61024b3660046119cc565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a5f565b610787565b6101a96102cd366004611b46565b610b1a565b61015a6102e03660046118ab565b610bd3565b61015a6102f3366004611b8c565b610d3c565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103543660046118cf565b610d83565b61015a6103673660046118ab565b610e2e565b6101a9610ea4565b61015a6103823660046118cf565b610ee2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611bfe565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c1b565b60405180910390fd5b6104408161103e565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c65565b6104cb5760405162461bcd60e51b815260040161042e90611c87565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611135565b61065461121f565b609755610660846112b6565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c65565b6107345760405162461bcd60e51b815260040161042e90611c87565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611308565b61078560006112b6565b565b606654600090600190811614156107dc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108445760405162461bcd60e51b815260206004820152603e6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087e5761087e61198e565b14156108e05760405162461bcd60e51b815260206004820152603f6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109645760405162461bcd60e51b81526020600482015260366024820152600080516020611dac8339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190611c65565b610a645760405162461bcd60e51b815260206004820152604d6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a7a843385602001518660400151610b1a565b9050610a8b84828560000151611362565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0c91906119a4565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b90610ea4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460009060019081161415610c285760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c6257610c6261198e565b14610cd55760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d3091906119a4565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d77929190611ccf565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e085760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e36611308565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b6565b60007f0000000000000000000000000000000000000000000000000000000000000000461415610ed5575060975490565b610edd61121f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190611bfe565b6001600160a01b0316336001600160a01b031614610f895760405162461bcd60e51b815260040161042e90611c1b565b6066541981196066541916146110075760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110cc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115657506001600160a01b03821615155b6111d85760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261121b8261103e565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561148157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906113a29086908690600401611cfe565b602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190611d5b565b6001600160e01b0319161461147c5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b03166114958383611521565b6001600160a01b03161461147c5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b60008060006115308585611545565b9150915061153d816115b5565b509392505050565b60008082516041141561157c5760208301516040840151606085015160001a61157087828585611770565b945094505050506115ae565b8251604014156115a6576020830151604084015161159b86838361185d565b9350935050506115ae565b506000905060025b9250929050565b60008160048111156115c9576115c961198e565b14156115d25750565b60018160048111156115e6576115e661198e565b14156116345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b60028160048111156116485761164861198e565b14156116965760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116aa576116aa61198e565b14156117035760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b60048160048111156117175761171761198e565b14156104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156117a75750600090506003611854565b8460ff16601b141580156117bf57508460ff16601c14155b156117d05750600090506004611854565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611824573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661184d57600060019250925050611854565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187a60ff86901c601b611d85565b905061188887828885611770565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118bd57600080fd5b81356118c881611896565b9392505050565b6000602082840312156118e157600080fd5b5035919050565b6000806000606084860312156118fd57600080fd5b833561190881611896565b9250602084013561191881611896565b929592945050506040919091013590565b6000806040838503121561193c57600080fd5b823561194781611896565b946020939093013593505050565b6000806040838503121561196857600080fd5b823561197381611896565b9150602083013561198381611896565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119c657634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119de57600080fd5b813560ff811681146118c857600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a2857611a286119ef565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a5757611a576119ef565b604052919050565b60008060408385031215611a7257600080fd5b8235611a7d81611896565b915060208381013567ffffffffffffffff80821115611a9b57600080fd5b9085019060608288031215611aaf57600080fd5b611ab7611a05565b823582811115611ac657600080fd5b8301601f81018913611ad757600080fd5b803583811115611ae957611ae96119ef565b611afb601f8201601f19168701611a2e565b93508084528986828401011115611b1157600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b60008060008060808587031215611b5c57600080fd5b8435611b6781611896565b93506020850135611b7781611896565b93969395505050506040820135916060013590565b60008060208385031215611b9f57600080fd5b823567ffffffffffffffff80821115611bb757600080fd5b818501915085601f830112611bcb57600080fd5b813581811115611bda57600080fd5b866020828501011115611bec57600080fd5b60209290920196919550909350505050565b600060208284031215611c1057600080fd5b81516118c881611896565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7757600080fd5b815180151581146118c857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b82815260006020604081840152835180604085015260005b81811015611d3257858101830151858201606001528201611d16565b81811115611d44576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215611d6d57600080fd5b81516001600160e01b0319811681146118c857600080fd5b60008219821115611da657634e487b7160e01b600052601160045260246000fd5b50019056fe4156534469726563746f72792e72656769737465724f70657261746f72546f41a2646970667358221220842a02bfcaaf4616ea91b34879e8b9e698a1b8b9b040e39b45dad31f22321d4064736f6c634300080c0033","sourceMap":"416:6708:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5814:138:27;;;;;;:::i;:::-;;:::i;:::-;;3832:392;;;;;;:::i;:::-;;:::i;1400:316:1:-;;;;;;:::i;:::-;;:::i;404:130:2:-;;454:80;404:130;;;;;1310:25:178;;;1298:2;1283:18;404:130:2;;;;;;;;1600:71;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1848:14:178;;1841:22;1823:41;;1811:2;1796:18;1600:71:2;1683:187:178;1316:94:2;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4299:136:27:-;;;:::i;5594:149::-;;;;;;:::i;:::-;5712:7;;5683:1;:10;;;;;;;;5712:14;;;5711:24;;5594:149;5406:87;5479:7;;5406:87;;2071:101:57;;;:::i;1825:37:27:-;;;;;-1:-1:-1;;;;;1825:37:27;;;;;;-1:-1:-1;;;;;3445:32:178;;;3427:51;;3415:2;3400:18;1825:37:27;3257:227:178;1441:85:57;1513:6;;-1:-1:-1;;;;;1513:6:57;1441:85;;2075:1754:1;;;;;;:::i;:::-;;:::i;5897:497::-;;;;;;:::i;:::-;;:::i;3989:611::-;;;;;;:::i;:::-;;:::i;4805:136::-;;;;;;:::i;:::-;;:::i;629:163:2:-;;698:94;629:163;;861:46;;;;;5150:214:1;;;;;;:::i;:::-;;:::i;2321:198:57:-;;;;;;:::i;:::-;;:::i;6601:227:1:-;;;:::i;4911:425:27:-;;;;;;:::i;:::-;;:::i;5814:138::-;2285:14;;;;;;;;;-1:-1:-1;;;;;2285:14:27;-1:-1:-1;;;;;2285:23:27;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2271:39:27;:10;-1:-1:-1;;;;;2271:39:27;;2263:94;;;;-1:-1:-1;;;2263:94:27;;;;;;;:::i;:::-;;;;;;;;;5908:37:::1;5927:17;5908:18;:37::i;:::-;5814:138:::0;:::o;3832:392::-;2125:14;;:35;;-1:-1:-1;;;2125:35:27;;2149:10;2125:35;;;3427:51:178;-1:-1:-1;;;;;2125:14:27;;;;:23;;3400:18:178;;2125:35:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2117:88;;;;-1:-1:-1;;;2117:88:27;;;;;;;:::i;:::-;4064:7:::1;::::0;4034:25;;::::1;4033:38;4025:107;;;::::0;-1:-1:-1;;;4025:107:27;;9126:2:178;4025:107:27::1;::::0;::::1;9108:21:178::0;9165:2;9145:18;;;9138:30;9204:34;9184:18;;;9177:62;9275:26;9255:18;;;9248:54;9319:19;;4025:107:27::1;8924:420:178::0;4025:107:27::1;4142:7;:25:::0;;;4182:35:::1;::::0;1310:25:178;;;4189:10:27::1;::::0;4182:35:::1;::::0;1298:2:178;1283:18;4182:35:27::1;;;;;;;;3832:392:::0;:::o;1400:316:1:-;3111:19:59;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:59;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:59;1476:19:61;:23;;;3219:66:59;;-1:-1:-1;3268:12:59;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:59;;9551:2:178;3157:201:59;;;9533:21:178;9590:2;9570:18;;;9563:30;9629:34;9609:18;;;9602:62;-1:-1:-1;;;9680:18:178;;;9673:44;9734:19;;3157:201:59;9349:410:178;3157:201:59;3368:12;:16;;-1:-1:-1;;3368:16:59;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:59;;;;;3394:65;1555:55:1::1;1573:15;1590:19;1555:17;:55::i;:::-;1640:27;:25;:27::i;:::-;1620:17;:47:::0;1677:32:::1;1696:12:::0;1677:18:::1;:32::i;:::-;3483:14:59::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;3513:21:59;;;3553:14;;-1:-1:-1;9916:36:178;;3553:14:59;;9904:2:178;9889:18;3553:14:59;;;;;;;3479:99;3101:483;1400:316:1;;;:::o;4299:136:27:-;2125:14;;:35;;-1:-1:-1;;;2125:35:27;;2149:10;2125:35;;;3427:51:178;-1:-1:-1;;;;;2125:14:27;;;;:23;;3400:18:178;;2125:35:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2117:88;;;;-1:-1:-1;;;2117:88:27;;;;;;;:::i;:::-;-1:-1:-1;;4349:7:27::1;:27:::0;;;4391:37:::1;::::0;1310:25:178;;;4398:10:27::1;::::0;4391:37:::1;::::0;1298:2:178;1283:18;4391:37:27::1;;;;;;;4299:136::o:0;2071:101:57:-;1334:13;:11;:13::i;:::-;2135:30:::1;2162:1;2135:18;:30::i;:::-;2071:101::o:0;2075:1754:1:-;5712:7:27;;714:1:1;;5683::27;5712:14;;;5711:24;2767:14;2759:52;;;;-1:-1:-1;;;2759:52:27;;10165:2:178;2759:52:27;;;10147:21:178;10204:2;10184:18;;;10177:30;-1:-1:-1;;;10223:18:178;;;10216:55;10288:18;;2759:52:27;9963:349:178;2759:52:27;2345:15:1::1;2317:17;:24;;;:43;;2296:152;;;::::0;-1:-1:-1;;;2296:152:1;;10519:2:178;2296:152:1::1;::::0;::::1;10501:21:178::0;10558:2;10538:18;;;10531:30;-1:-1:-1;;;;;;;;;;;10577:18:178;;;10570:62;10668:32;10648:18;;;10641:60;10718:19;;2296:152:1::1;10317:426:178::0;2296:152:1::1;2522:40;2497:10;2479:29;::::0;;;:17:::1;:29;::::0;;;;;;;-1:-1:-1;;;;;2479:39:1;::::1;::::0;;;;;;;;::::1;;::::0;:83;::::1;;;;;;:::i;:::-;;;2458:193;;;::::0;-1:-1:-1;;;2458:193:1;;10950:2:178;2458:193:1::1;::::0;::::1;10932:21:178::0;10989:2;10969:18;;;10962:30;-1:-1:-1;;;;;;;;;;;11008:18:178;;;11001:62;11099:33;11079:18;;;11072:61;11150:19;;2458:193:1::1;10748:427:178::0;2458:193:1::1;-1:-1:-1::0;;;;;2683:29:1;::::1;;::::0;;;:19:::1;:29;::::0;;;;;;;2713:22;;::::1;::::0;2683:53;;;;;;;;::::1;;2682:54;2661:155;;;::::0;-1:-1:-1;;;2661:155:1;;11382:2:178;2661:155:1::1;::::0;::::1;11364:21:178::0;11421:2;11401:18;;;11394:30;-1:-1:-1;;;;;;;;;;;11440:18:178;;;11433:62;-1:-1:-1;;;11511:18:178;;;11504:52;11573:19;;2661:155:1::1;11180:418:178::0;2661:155:1::1;2847:31;::::0;-1:-1:-1;;;2847:31:1;;-1:-1:-1;;;;;3445:32:178;;;2847:31:1::1;::::0;::::1;3427:51:178::0;2847:10:1::1;:21;::::0;::::1;::::0;3400:18:178;;2847:31:1::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2826:155;;;::::0;-1:-1:-1;;;2826:155:1;;11805:2:178;2826:155:1::1;::::0;::::1;11787:21:178::0;11844:2;11824:18;;;11817:30;-1:-1:-1;;;;;;;;;;;11863:18:178;;;11856:62;11954:34;11934:18;;;11927:62;-1:-1:-1;;;12005:19:178;;;11998:44;12059:19;;2826:155:1::1;11603:481:178::0;2826:155:1::1;3029:38;3070:203;3137:8;3164:10;3194:17;:22;;;3238:17;:24;;;3070:42;:203::i;:::-;3029:244;;3329:137;3387:8;3397:30;3429:17;:27;;;3329:44;:137::i;:::-;3537:10;3519:29;::::0;;;:17:::1;:29;::::0;;;;;;;-1:-1:-1;;;;;3519:39:1;::::1;::::0;;;;;;;;;:82;;3561:40:::1;-1:-1:-1::0;;3519:82:1;;::::1;::::0;::::1;::::0;;;3646:19:::1;:29:::0;;;;;3676:22;;::::1;::::0;3646:53;;;;;;;;;:60;;;;::::1;::::0;::::1;::::0;;;3722:100;3519:39;;3722:100:::1;::::0;::::1;::::0;3561:40;3722:100:::1;:::i;:::-;;;;;;;;2286:1543;2075:1754:::0;;;:::o;5897:497::-;6146:75;;;698:94:2;6146:75:1;;;;12348:25:178;;;;-1:-1:-1;;;;;12447:15:178;;;12427:18;;;12420:43;12499:15;;12479:18;;;12472:43;12531:18;;;12524:34;;;12574:19;;;;12567:35;;;6146:75:1;;;;;;;;;;12320:19:178;;;;6146:75:1;;;6136:86;;;;;-1:-1:-1;;;6329:17:1;:15;:17::i;:::-;6300:59;;-1:-1:-1;;;6300:59:1;;;12871:27:178;12914:11;;;12907:27;;;;12950:12;;;12943:28;;;12987:12;;6300:59:1;;;;;;-1:-1:-1;;6300:59:1;;;;;;6290:70;;6300:59;6290:70;;;;;5897:497;-1:-1:-1;;;;;;;5897:497:1:o;3989:611::-;5712:7:27;;714:1:1;;5683::27;5712:14;;;5711:24;2767:14;2759:52;;;;-1:-1:-1;;;2759:52:27;;10165:2:178;2759:52:27;;;10147:21:178;10204:2;10184:18;;;10177:30;-1:-1:-1;;;10223:18:178;;;10216:55;10288:18;;2759:52:27;9963:349:178;2759:52:27;4207:40:1::1;4182:10;4164:29;::::0;;;:17:::1;:29;::::0;;;;;;;-1:-1:-1;;;;;4164:39:1;::::1;::::0;;;;;;;;::::1;;::::0;:83;::::1;;;;;;:::i;:::-;;4143:193;;;::::0;-1:-1:-1;;;4143:193:1;;13212:2:178;4143:193:1::1;::::0;::::1;13194:21:178::0;13251:2;13231:18;;;13224:30;13290:34;13270:18;;;13263:62;13361:33;13341:18;;;13334:61;13412:19;;4143:193:1::1;13010:427:178::0;4143:193:1::1;4409:10;4433:42;4391:29:::0;;;:17:::1;:29;::::0;;;;;;;-1:-1:-1;;;;;4391:39:1;::::1;::::0;;;;;;;;:84;;-1:-1:-1;;4391:84:1::1;::::0;;4491:102;4391:39;;4491:102:::1;::::0;::::1;::::0;4433:42;4491:102:::1;:::i;:::-;;;;;;;;3989:611:::0;;:::o;4805:136::-;4910:10;-1:-1:-1;;;;;4888:46:1;;4922:11;;4888:46;;;;;;;:::i;:::-;;;;;;;;4805:136;;:::o;5150:214::-;5232:10;5212:31;;;;:19;:31;;;;;;;;:37;;;;;;;;;;;5211:38;5203:100;;;;-1:-1:-1;;;5203:100:1;;14039:2:178;5203:100:1;;;14021:21:178;14078:2;14058:18;;;14051:30;14117:34;14097:18;;;14090:62;-1:-1:-1;;;14168:18:178;;;14161:47;14225:19;;5203:100:1;13837:413:178;5203:100:1;5333:10;5313:31;;;;:19;:31;;;;;;;;:37;;;;;;;:44;;-1:-1:-1;;5313:44:1;5353:4;5313:44;;;5150:214::o;2321:198:57:-;1334:13;:11;:13::i;:::-;-1:-1:-1;;;;;2409:22:57;::::1;2401:73;;;::::0;-1:-1:-1;;;2401:73:57;;14457:2:178;2401:73:57::1;::::0;::::1;14439:21:178::0;14496:2;14476:18;;;14469:30;14535:34;14515:18;;;14508:62;-1:-1:-1;;;14586:18:178;;;14579:36;14632:19;;2401:73:57::1;14255:402:178::0;2401:73:57::1;2484:28;2503:8;2484:18;:28::i;6601:227:1:-:0;6649:7;6689:17;6672:13;:34;6668:154;;;-1:-1:-1;6729:17:1;;;6601:227::o;6668:154::-;6784:27;:25;:27::i;:::-;6777:34;;6601:227;:::o;4911:425:27:-;2285:14;;;;;;;;;-1:-1:-1;;;;;2285:14:27;-1:-1:-1;;;;;2285:23:27;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2271:39:27;:10;-1:-1:-1;;;;;2271:39:27;;2263:94;;;;-1:-1:-1;;;2263:94:27;;;;;;;:::i;:::-;5164:7:::1;;5163:8;5141:15;5140:16;5128:7;;5127:8;5126:31;5125:47;5104:138;;;::::0;-1:-1:-1;;;5104:138:27;;14864:2:178;5104:138:27::1;::::0;::::1;14846:21:178::0;14903:2;14883:18;;;14876:30;14942:34;14922:18;;;14915:62;15013:26;14993:18;;;14986:54;15057:19;;5104:138:27::1;14662:420:178::0;5104:138:27::1;5252:7;:25:::0;;;5292:37:::1;::::0;1310:25:178;;;5301:10:27::1;::::0;5292:37:::1;::::0;1298:2:178;1283:18;5292:37:27::1;1164:177:178::0;6012:360:27;-1:-1:-1;;;;;6115:40:27;;6094:160;;;;-1:-1:-1;;;6094:160:27;;15289:2:178;6094:160:27;;;15271:21:178;15328:2;15308:18;;;15301:30;15367:34;15347:18;;;15340:62;15438:34;15418:18;;;15411:62;-1:-1:-1;;;15489:19:178;;;15482:40;15539:19;;6094:160:27;15087:477:178;6094:160:27;6287:14;;6269:52;;;-1:-1:-1;;;;;6287:14:27;;;15829:34:178;;15899:15;;;15894:2;15879:18;;15872:43;6269:52:27;;15764:18:178;6269:52:27;;;;;;;6331:14;:34;;-1:-1:-1;;;;;;6331:34:27;-1:-1:-1;;;;;6331:34:27;;;;;;;;;;6012:360::o;2943:441::-;3077:14;;-1:-1:-1;;;;;3077:14:27;3069:37;:79;;;;-1:-1:-1;;;;;;3110:38:27;;;;3069:79;3048:197;;;;-1:-1:-1;;;3048:197:27;;16128:2:178;3048:197:27;;;16110:21:178;16167:2;16147:18;;;16140:30;16206:34;16186:18;;;16179:62;16277:34;16257:18;;;16250:62;-1:-1:-1;;;16328:19:178;;;16321:38;16376:19;;3048:197:27;15926:475:178;3048:197:27;3255:7;:26;;;3296:36;;1310:25:178;;;3303:10:27;;3296:36;;1298:2:178;1283:18;3296:36:27;;;;;;;3342:35;3361:15;3342:18;:35::i;:::-;2943:441;;:::o;6929:193:1:-;7063:19;;;;;;;;;;;-1:-1:-1;;;7063:19:1;;;;;7025:89;;454:80:2;7025:89:1;;;16637:25:178;7053:30:1;16678:18:178;;;16671:34;7085:13:1;16721:18:178;;;16714:34;7108:4:1;16764:18:178;;;;16757:60;;;;7025:89:1;;;;;;;;;;16609:19:178;;;;7025:89:1;;;7015:100;;;;;;6929:193::o;2673:187:57:-;2765:6;;;-1:-1:-1;;;;;2781:17:57;;;-1:-1:-1;;;;;;2781:17:57;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;1599:130::-;1513:6;;-1:-1:-1;;;;;1513:6:57;921:10:63;1662:23:57;1654:68;;;;-1:-1:-1;;;1654:68:57;;17030:2:178;1654:68:57;;;17012:21:178;;;17049:18;;;17042:30;17108:34;17088:18;;;17081:62;17160:18;;1654:68:57;16828:356:178;974:926:23;-1:-1:-1;;;;;1476:19:61;;;:23;1410:484:23;;1481:56;;-1:-1:-1;;;1481:56:23;;;1541:18;-1:-1:-1;;;;;1481:33:23;;;574:10;;1481:56;;1515:10;;1527:9;;1481:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1481:78:23;;1456:220;;;;-1:-1:-1;;;1456:220:23;;18357:2:178;1456:220:23;;;18339:21:178;18396:2;18376:18;;;18369:30;18435:34;18415:18;;;18408:62;18506:34;18486:18;;;18479:62;-1:-1:-1;;;18557:19:178;;;18550:50;18617:19;;1456:220:23;18155:487:178;1456:220:23;974:926;;;:::o;1410:484::-;1772:6;-1:-1:-1;;;;;1732:46:23;:36;1746:10;1758:9;1732:13;:36::i;:::-;-1:-1:-1;;;;;1732:46:23;;1707:176;;;;-1:-1:-1;;;1707:176:23;;18849:2:178;1707:176:23;;;18831:21:178;18888:2;18868:18;;;18861:30;18927:34;18907:18;;;18900:62;18998:34;18978:18;;;18971:62;-1:-1:-1;;;19049:19:178;;;19042:38;19097:19;;1707:176:23;18647:475:178;4402:227:92;4480:7;4500:17;4519:18;4541:27;4552:4;4558:9;4541:10;:27::i;:::-;4499:69;;;;4578:18;4590:5;4578:11;:18::i;:::-;-1:-1:-1;4613:9:92;4402:227;-1:-1:-1;;;4402:227:92:o;2243:1373::-;2324:7;2333:12;2554:9;:16;2574:2;2554:22;2550:1060;;;2890:4;2875:20;;2869:27;2939:4;2924:20;;2918:27;2996:4;2981:20;;2975:27;2592:9;2967:36;3037:25;3048:4;2967:36;2869:27;2918;3037:10;:25::i;:::-;3030:32;;;;;;;;;2550:1060;3083:9;:16;3103:2;3083:22;3079:531;;;3399:4;3384:20;;3378:27;3449:4;3434:20;;3428:27;3489:23;3500:4;3378:27;3428;3489:10;:23::i;:::-;3482:30;;;;;;;;3079:531;-1:-1:-1;3559:1:92;;-1:-1:-1;3563:35:92;3079:531;2243:1373;;;;;:::o;548:631::-;625:20;616:5;:29;;;;;;;;:::i;:::-;;612:561;;;548:631;:::o;612:561::-;721:29;712:5;:38;;;;;;;;:::i;:::-;;708:465;;;766:34;;-1:-1:-1;;;766:34:92;;19329:2:178;766:34:92;;;19311:21:178;19368:2;19348:18;;;19341:30;19407:26;19387:18;;;19380:54;19451:18;;766:34:92;19127:348:178;708:465:92;830:35;821:5;:44;;;;;;;;:::i;:::-;;817:356;;;881:41;;-1:-1:-1;;;881:41:92;;19682:2:178;881:41:92;;;19664:21:178;19721:2;19701:18;;;19694:30;19760:33;19740:18;;;19733:61;19811:18;;881:41:92;19480:355:178;817:356:92;952:30;943:5;:39;;;;;;;;:::i;:::-;;939:234;;;998:44;;-1:-1:-1;;;998:44:92;;20042:2:178;998:44:92;;;20024:21:178;20081:2;20061:18;;;20054:30;20120:34;20100:18;;;20093:62;-1:-1:-1;;;20171:18:178;;;20164:32;20213:19;;998:44:92;19840:398:178;939:234:92;1072:30;1063:5;:39;;;;;;;;:::i;:::-;;1059:114;;;1118:44;;-1:-1:-1;;;1118:44:92;;20445:2:178;1118:44:92;;;20427:21:178;20484:2;20464:18;;;20457:30;20523:34;20503:18;;;20496:62;-1:-1:-1;;;20574:18:178;;;20567:32;20616:19;;1118:44:92;20243:398:178;5750:1565:92;5838:7;;6762:66;6749:79;;6745:161;;;-1:-1:-1;6860:1:92;;-1:-1:-1;6864:30:92;6844:51;;6745:161;6919:1;:7;;6924:2;6919:7;;:18;;;;;6930:1;:7;;6935:2;6930:7;;6919:18;6915:100;;;-1:-1:-1;6969:1:92;;-1:-1:-1;6973:30:92;6953:51;;6915:100;7126:24;;;7109:14;7126:24;;;;;;;;;20873:25:178;;;20946:4;20934:17;;20914:18;;;20907:45;;;;20968:18;;;20961:34;;;21011:18;;;21004:34;;;7126:24:92;;20845:19:178;;7126:24:92;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7126:24:92;;-1:-1:-1;;7126:24:92;;;-1:-1:-1;;;;;;;7164:20:92;;7160:101;;7216:1;7220:29;7200:50;;;;;;;7160:101;7279:6;-1:-1:-1;7287:20:92;;-1:-1:-1;5750:1565:92;;;;;;;;:::o;4883:306::-;4963:7;;-1:-1:-1;;;;;5008:80:92;;4963:7;5114:25;5130:3;5115:18;;;5137:2;5114:25;:::i;:::-;5098:42;;5157:25;5168:4;5174:1;5177;5180;5157:10;:25::i;:::-;5150:32;;;;;;4883:306;;;;;;:::o;14:148:178:-;-1:-1:-1;;;;;106:31:178;;96:42;;86:70;;152:1;149;142:12;167:288;250:6;303:2;291:9;282:7;278:23;274:32;271:52;;;319:1;316;309:12;271:52;358:9;345:23;377:48;419:5;377:48;:::i;:::-;444:5;167:288;-1:-1:-1;;;167:288:178:o;460:180::-;519:6;572:2;560:9;551:7;547:23;543:32;540:52;;;588:1;585;578:12;540:52;-1:-1:-1;611:23:178;;460:180;-1:-1:-1;460:180:178:o;645:514::-;746:6;754;762;815:2;803:9;794:7;790:23;786:32;783:52;;;831:1;828;821:12;783:52;870:9;857:23;889:48;931:5;889:48;:::i;:::-;956:5;-1:-1:-1;1013:2:178;998:18;;985:32;1026:50;985:32;1026:50;:::i;:::-;645:514;;1095:7;;-1:-1:-1;;;1149:2:178;1134:18;;;;1121:32;;645:514::o;1346:332::-;1414:6;1422;1475:2;1463:9;1454:7;1450:23;1446:32;1443:52;;;1491:1;1488;1481:12;1443:52;1530:9;1517:23;1549:48;1591:5;1549:48;:::i;:::-;1616:5;1668:2;1653:18;;;;1640:32;;-1:-1:-1;;;1346:332:178:o;1875:422::-;1943:6;1951;2004:2;1992:9;1983:7;1979:23;1975:32;1972:52;;;2020:1;2017;2010:12;1972:52;2059:9;2046:23;2078:48;2120:5;2078:48;:::i;:::-;2145:5;-1:-1:-1;2202:2:178;2187:18;;2174:32;2215:50;2174:32;2215:50;:::i;:::-;2284:7;2274:17;;;1875:422;;;;;:::o;2302:127::-;2363:10;2358:3;2354:20;2351:1;2344:31;2394:4;2391:1;2384:15;2418:4;2415:1;2408:15;2434:362;2600:2;2585:18;;2633:1;2622:13;;2612:144;;2678:10;2673:3;2669:20;2666:1;2659:31;2713:4;2710:1;2703:15;2741:4;2738:1;2731:15;2612:144;2765:25;;;2434:362;:::o;2801:269::-;2858:6;2911:2;2899:9;2890:7;2886:23;2882:32;2879:52;;;2927:1;2924;2917:12;2879:52;2966:9;2953:23;3016:4;3009:5;3005:16;2998:5;2995:27;2985:55;;3036:1;3033;3026:12;3697:127;3758:10;3753:3;3749:20;3746:1;3739:31;3789:4;3786:1;3779:15;3813:4;3810:1;3803:15;3829:253;3901:2;3895:9;3943:4;3931:17;;3978:18;3963:34;;3999:22;;;3960:62;3957:88;;;4025:18;;:::i;:::-;4061:2;4054:22;3829:253;:::o;4087:275::-;4158:2;4152:9;4223:2;4204:13;;-1:-1:-1;;4200:27:178;4188:40;;4258:18;4243:34;;4279:22;;;4240:62;4237:88;;;4305:18;;:::i;:::-;4341:2;4334:22;4087:275;;-1:-1:-1;4087:275:178:o;4367:1327::-;4479:6;4487;4540:2;4528:9;4519:7;4515:23;4511:32;4508:52;;;4556:1;4553;4546:12;4508:52;4595:9;4582:23;4614:48;4656:5;4614:48;:::i;:::-;4681:5;-1:-1:-1;4705:2:178;4743:18;;;4730:32;4781:18;4811:14;;;4808:34;;;4838:1;4835;4828:12;4808:34;4861:22;;;;4917:4;4899:16;;;4895:27;4892:47;;;4935:1;4932;4925:12;4892:47;4963:22;;:::i;:::-;5023:2;5010:16;5051:2;5041:8;5038:16;5035:36;;;5067:1;5064;5057:12;5035:36;5090:17;;5138:4;5130:13;;5126:27;-1:-1:-1;5116:55:178;;5167:1;5164;5157:12;5116:55;5203:2;5190:16;5225:2;5221;5218:10;5215:36;;;5231:18;;:::i;:::-;5273:53;5316:2;5297:13;;-1:-1:-1;;5293:27:178;5289:36;;5273:53;:::i;:::-;5260:66;;5349:2;5342:5;5335:17;5389:7;5384:2;5379;5375;5371:11;5367:20;5364:33;5361:53;;;5410:1;5407;5400:12;5361:53;5465:2;5460;5456;5452:11;5447:2;5440:5;5436:14;5423:45;5509:1;5504:2;5499;5492:5;5488:14;5484:23;5477:34;;;5536:5;5527:7;5520:22;5597:2;5593;5589:11;5576:25;5571:2;5562:7;5558:16;5551:51;5657:2;5653;5649:11;5636:25;5631:2;5622:7;5618:16;5611:51;5681:7;5671:17;;;;;;4367:1327;;;;;:::o;5699:559::-;5785:6;5793;5801;5809;5862:3;5850:9;5841:7;5837:23;5833:33;5830:53;;;5879:1;5876;5869:12;5830:53;5918:9;5905:23;5937:48;5979:5;5937:48;:::i;:::-;6004:5;-1:-1:-1;6061:2:178;6046:18;;6033:32;6074:50;6033:32;6074:50;:::i;:::-;5699:559;;6143:7;;-1:-1:-1;;;;6197:2:178;6182:18;;6169:32;;6248:2;6233:18;6220:32;;5699:559::o;6532:592::-;6603:6;6611;6664:2;6652:9;6643:7;6639:23;6635:32;6632:52;;;6680:1;6677;6670:12;6632:52;6720:9;6707:23;6749:18;6790:2;6782:6;6779:14;6776:34;;;6806:1;6803;6796:12;6776:34;6844:6;6833:9;6829:22;6819:32;;6889:7;6882:4;6878:2;6874:13;6870:27;6860:55;;6911:1;6908;6901:12;6860:55;6951:2;6938:16;6977:2;6969:6;6966:14;6963:34;;;6993:1;6990;6983:12;6963:34;7038:7;7033:2;7024:6;7020:2;7016:15;7012:24;7009:37;7006:57;;;7059:1;7056;7049:12;7006:57;7090:2;7082:11;;;;;7112:6;;-1:-1:-1;6532:592:178;;-1:-1:-1;;;;6532:592:178:o;7549:268::-;7619:6;7672:2;7660:9;7651:7;7647:23;7643:32;7640:52;;;7688:1;7685;7678:12;7640:52;7720:9;7714:16;7739:48;7781:5;7739:48;:::i;7822:406::-;8024:2;8006:21;;;8063:2;8043:18;;;8036:30;8102:34;8097:2;8082:18;;8075:62;-1:-1:-1;;;8168:2:178;8153:18;;8146:40;8218:3;8203:19;;7822:406::o;8233:277::-;8300:6;8353:2;8341:9;8332:7;8328:23;8324:32;8321:52;;;8369:1;8366;8359:12;8321:52;8401:9;8395:16;8454:5;8447:13;8440:21;8433:5;8430:32;8420:60;;8476:1;8473;8466:12;8515:404;8717:2;8699:21;;;8756:2;8736:18;;;8729:30;8795:34;8790:2;8775:18;;8768:62;-1:-1:-1;;;8861:2:178;8846:18;;8839:38;8909:3;8894:19;;8515:404::o;13442:390::-;13601:2;13590:9;13583:21;13640:6;13635:2;13624:9;13620:18;13613:34;13697:6;13689;13684:2;13673:9;13669:18;13656:48;13753:1;13724:22;;;13748:2;13720:31;;;13713:42;;;;13816:2;13795:15;;;-1:-1:-1;;13791:29:178;13776:45;13772:54;;13442:390;-1:-1:-1;13442:390:178:o;17189:666::-;17364:6;17353:9;17346:25;17327:4;17390:2;17428;17423;17412:9;17408:18;17401:30;17460:6;17454:13;17503:6;17498:2;17487:9;17483:18;17476:34;17528:1;17538:140;17552:6;17549:1;17546:13;17538:140;;;17647:14;;;17643:23;;17637:30;17613:17;;;17632:2;17609:26;17602:66;17567:10;;17538:140;;;17696:6;17693:1;17690:13;17687:91;;;17766:1;17761:2;17752:6;17741:9;17737:22;17733:31;17726:42;17687:91;-1:-1:-1;17839:2:178;17818:15;-1:-1:-1;;17814:29:178;17799:45;;;;17846:2;17795:54;;17189:666;-1:-1:-1;;;;17189:666:178:o;17860:290::-;17929:6;17982:2;17970:9;17961:7;17957:23;17953:32;17950:52;;;17998:1;17995;17988:12;17950:52;18024:16;;-1:-1:-1;;;;;;18069:32:178;;18059:43;;18049:71;;18116:1;18113;18106:12;21049:225;21089:3;21120:1;21116:6;21113:1;21110:13;21107:136;;;21165:10;21160:3;21156:20;21153:1;21146:31;21200:4;21197:1;21190:15;21228:4;21225:1;21218:15;21107:136;-1:-1:-1;21259:9:178;;21049:225::o","linkReferences":{},"immutableReferences":{"2314":[{"start":3752,"length":32}],"2656":[{"start":804,"length":32},{"start":2435,"length":32}]}},"methodIdentifiers":{"DOMAIN_TYPEHASH()":"20606b70","OPERATOR_AVS_REGISTRATION_TYPEHASH()":"d79aceab","avsOperatorStatus(address,address)":"49075da3","calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)":"a1060c88","cancelSalt(bytes32)":"ec76f442","delegation()":"df5cf723","deregisterOperatorFromAVS(address)":"a364f4da","domainSeparator()":"f698da25","initialize(address,address,uint256)":"1794bb3c","operatorSaltIsSpent(address,bytes32)":"374823b5","owner()":"8da5cb5b","pause(uint256)":"136439dd","pauseAll()":"595c6a67","paused()":"5c975abb","paused(uint8)":"5ac86ab7","pauserRegistry()":"886f1195","registerOperatorToAVS(address,(bytes,bytes32,uint256))":"9926ee7d","renounceOwnership()":"715018a6","setPauserRegistry(address)":"10d67a2f","transferOwnership(address)":"f2fde38b","unpause(uint256)":"fabc1cbc","updateAVSMetadataURI(string)":"a98fb355"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IDelegationManager\",\"name\":\"_delegation\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"avs\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"AVSMetadataURIUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"avs\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum IAVSDirectory.OperatorAVSRegistrationStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"OperatorAVSRegistrationStatusUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IPauserRegistry\",\"name\":\"pauserRegistry\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"PauserRegistrySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_AVS_REGISTRATION_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"avsOperatorStatus\",\"outputs\":[{\"internalType\":\"enum IAVSDirectory.OperatorAVSRegistrationStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"avs\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"calculateOperatorAVSRegistrationDigestHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"cancelSalt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegation\",\"outputs\":[{\"internalType\":\"contract IDelegationManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"deregisterOperatorFromAVS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"domainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"contract IPauserRegistry\",\"name\":\"_pauserRegistry\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialPausedStatus\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"operatorSaltIsSpent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauserRegistry\",\"outputs\":[{\"internalType\":\"contract IPauserRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithSaltAndExpiry\",\"name\":\"operatorSignature\",\"type\":\"tuple\"}],\"name\":\"registerOperatorToAVS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"setPauserRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"updateAVSMetadataURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)\":{\"params\":{\"avs\":\"The address of the service manager contract for the AVS that the operator is registering to\",\"expiry\":\"Time after which the approver's signature becomes invalid\",\"operator\":\"The account registering as an operator\",\"salt\":\"A unique and single use value associated with the approver signature.\"}},\"cancelSalt(bytes32)\":{\"params\":{\"salt\":\"A unique and single use value associated with the approver signature.\"}},\"constructor\":{\"details\":\"Initializes the immutable addresses of the strategy mananger, delegationManager, slasher, and eigenpodManager contracts\"},\"deregisterOperatorFromAVS(address)\":{\"params\":{\"operator\":\"The address of the operator to deregister.\"}},\"domainSeparator()\":{\"details\":\"The domain separator will change in the event of a fork that changes the ChainID.\"},\"initialize(address,address,uint256)\":{\"details\":\"Initializes the addresses of the initial owner, pauser registry, and paused status. minWithdrawalDelayBlocks is set only once here\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pause(uint256)\":{\"details\":\"This function can only pause functionality, and thus cannot 'unflip' any bit in `_paused` from 1 to 0.\",\"params\":{\"newPausedStatus\":\"represents the new value for `_paused` to take, which means it may flip several bits at once.\"}},\"registerOperatorToAVS(address,(bytes,bytes32,uint256))\":{\"params\":{\"operator\":\"The address of the operator to register.\",\"operatorSignature\":\"The signature, salt, and expiry of the operator's signature.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unpause(uint256)\":{\"details\":\"This function can only unpause functionality, and thus cannot 'flip' any bit in `_paused` from 0 to 1.\",\"params\":{\"newPausedStatus\":\"represents the new value for `_paused` to take, which means it may flip several bits at once.\"}},\"updateAVSMetadataURI(string)\":{\"params\":{\"metadataURI\":\"The URI for metadata associated with an avs\"}}},\"version\":1},\"userdoc\":{\"events\":{\"AVSMetadataURIUpdated(address,string)\":{\"notice\":\"Emitted when @param avs indicates that they are updating their MetadataURI string\"},\"OperatorAVSRegistrationStatusUpdated(address,address,uint8)\":{\"notice\":\"Emitted when an operator's registration status for an AVS is updated\"},\"Paused(address,uint256)\":{\"notice\":\"Emitted when the pause is triggered by `account`, and changed to `newPausedStatus`.\"},\"PauserRegistrySet(address,address)\":{\"notice\":\"Emitted when the `pauserRegistry` is set to `newPauserRegistry`.\"},\"Unpaused(address,uint256)\":{\"notice\":\"Emitted when the pause is lifted by `account`, and changed to `newPausedStatus`.\"}},\"kind\":\"user\",\"methods\":{\"DOMAIN_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the contract's domain\"},\"OPERATOR_AVS_REGISTRATION_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the `Registration` struct used by the contract\"},\"avsOperatorStatus(address,address)\":{\"notice\":\"Mapping: AVS => operator => enum of operator status to the AVS\"},\"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)\":{\"notice\":\"Calculates the digest hash to be signed by an operator to register with an AVS\"},\"cancelSalt(bytes32)\":{\"notice\":\"Called by an operator to cancel a salt that has been used to register with an AVS.\"},\"delegation()\":{\"notice\":\"The DelegationManager contract for EigenLayer\"},\"deregisterOperatorFromAVS(address)\":{\"notice\":\"Called by an avs to deregister an operator with the avs.\"},\"domainSeparator()\":{\"notice\":\"Getter function for the current EIP-712 domain separator for this contract.\"},\"operatorSaltIsSpent(address,bytes32)\":{\"notice\":\"Mapping: operator => 32-byte salt => whether or not the salt has already been used by the operator.\"},\"pause(uint256)\":{\"notice\":\"This function is used to pause an EigenLayer contract's functionality. It is permissioned to the `pauser` address, which is expected to be a low threshold multisig.\"},\"pauseAll()\":{\"notice\":\"Alias for `pause(type(uint256).max)`.\"},\"paused()\":{\"notice\":\"Returns the current paused status as a uint256.\"},\"paused(uint8)\":{\"notice\":\"Returns 'true' if the `indexed`th bit of `_paused` is 1, and 'false' otherwise\"},\"pauserRegistry()\":{\"notice\":\"Address of the `PauserRegistry` contract that this contract defers to for determining access control (for pausing).\"},\"registerOperatorToAVS(address,(bytes,bytes32,uint256))\":{\"notice\":\"Called by the AVS's service manager contract to register an operator with the avs.\"},\"setPauserRegistry(address)\":{\"notice\":\"Allows the unpauser to set a new pauser registry\"},\"unpause(uint256)\":{\"notice\":\"This function is used to unpause an EigenLayer contract's functionality. It is permissioned to the `unpauser` address, which is expected to be a high threshold multisig or governance contract.\"},\"updateAVSMetadataURI(string)\":{\"notice\":\"Called by an avs to emit an `AVSMetadataURIUpdated` event indicating the information has updated.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/eigenlayer-contracts/src/contracts/core/AVSDirectory.sol\":\"AVSDirectory\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/src/contracts/core/AVSDirectory.sol\":{\"keccak256\":\"0x0442400ef75eb8d0580c6dcb05662d2a67028b640b7c2d45f190929b22021eb9\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://70f2681418063301e4b8850926f548000f35919a5afa22fedb8d82802152755e\",\"dweb:/ipfs/QmdG8EnsPfLkZN4nXD1YFHsSMf2xautkaiLFLAstGZTURv\"]},\"lib/eigenlayer-contracts/src/contracts/core/AVSDirectoryStorage.sol\":{\"keccak256\":\"0xe23059ca3e44a4a812b1f3d970c6f5dc873bfc825b981f1dcbd0c0d7199ce649\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9ebf86dd616f31b38c91e82f9b39ad659f610d63a77af95dde3c1246f19aa7a4\",\"dweb:/ipfs/QmXvLxyu3xSfC5TqdyN1xWS2mtAHPphbhigXYVXmrw6H4N\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol\":{\"keccak256\":\"0x337c94d7fdb7a862dd0d65e3d0ae837fc9a62f7e2b314f39a3d65a683eb666ff\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://88bc4de1a2d44c4c18f60a084a216deb3708ffed305e647a9d999543ffc4f9f1\",\"dweb:/ipfs/QmbgxTunu4Erz9EewrvkzcTSDPZn3oSKXxKJBeXhbJPSv8\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x9906828f285cc76bbbe077f908d87c4bffd0a3bff9394f7a4b60a9d9a2672c1e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4c0f43e14e50ac322685b5cd301459118e2770bdfb053f8f3ded08ee9fbf5bf9\",\"dweb:/ipfs/QmPQtY6KEUCbrKwweu8BvA7YjnXXxkkuZPyLSRGV5EoPTe\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x1f8e17b0f952042132ca64e202022d83783b7f42ec364cd0cad1950ecb95a13d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a2be4c476902f25fb058f779e3d4e5b1182d9dc9fbdec518acbe9544c0d3c141\",\"dweb:/ipfs/QmdgZq6JrCD36Xry2vD8QSeGguGQ9TGWY2CMvKrhR9NQ6u\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x22b7a17d53696412f80645f1fa65274ae89040bdc706262e3b6cc577dbafcaa4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b15002346892a48fd7cf9a8a4cf121e17ba133d21e4822e71fbffac85117d6b2\",\"dweb:/ipfs/QmRBPJUcRQ6uKmSvCYhhtVWcKCAWkQFSVZZwZR7HR42kiz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x33a935182f77cfd508fc57ec8e45afc8dc3748e1e9b764d36bf90ae6466f257b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d3981b5bbf435cda04e2ed2f348f886ebf1500c18dd4bbf67b1f1bc0272e2d3f\",\"dweb:/ipfs/QmYHDzQx29ataM2ejRCXFcPxaPdxWqX8v7uwUAYoG9572w\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xffafae142d5337a5c204519e8f82fe3a5fae137286ebf597fa50699cf12c2474\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b577a12f7788095b230fd069b36ba9b3cdb376a0b7c3d8ae71588e5bf0c2f574\",\"dweb:/ipfs/QmXd1cDzYpxecyFEwowLiBKKjzRHgV8cs1qvLwypdEbVYy\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b\",\"dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x3d9eeecf96bd8d6427445db76b9a73f9861c6c3601001226bed2f7fb81e252e6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c836719a65892c5cffdba9de4e009e5f8a4e49aea9c5f46d57b15660c6c2d07d\",\"dweb:/ipfs/QmWuzNq2HdEH1hsRg8Jc95k1DZdNjXFb5ehkz9iLNNSqhT\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xaeee2ac5cfcc3388b63bef2668fa435c65a4b433b52ce9f5013822c6ec875fa3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://86eb6d3da5b45f7509995ffa170eaaadffbdd6d43e50f0902d421bb93a7dfda6\",\"dweb:/ipfs/QmWaYcgtnaVpcekSP7LyY6AGrE3hRE3kZE4H4EKhsSysDG\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x633b5fb10209891f696a9c8db4d7327ed7f560a2e9710489e38a67daeda59a96\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c8381baaec3afa6b200420c093706974776dfd14f6887abe7457eb867351a068\",\"dweb:/ipfs/QmP9H9ttS1sJ6FrvMEefJhU6B4z1wMCjcYYZqVfsLXagJE\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/EIP1271SignatureUtils.sol\":{\"keccak256\":\"0xe92d584c47c5828e026a8082af3da38a853e3942c4da7deb705d6470a41afab3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1c436c578781fd7d3dffdb24e906819422819f5e9a71d39ee63166a3d5cb3373\",\"dweb:/ipfs/QmP7bJhYqLpwqk2Xq4tqDCUMi2nFAhxxW3Pz36ctE1sbdD\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0x1c5895f913e95682b0c371595cb1fa0d9c34ea921a0fbb5c32201b4315e80a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c470e449a3144fbaaa17b44823ba9cba901f063b04355c800bf62cabdd081cd4\",\"dweb:/ipfs/QmSJ8gaAF4WA1aXGmLesnnRo8fDZNEFnqZSGNkJnXLRM9R\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0xcf8422dfa6ccc393de19417570c6239e0fde54de9433ea258cbeb6937ff7f316\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://328e582c05b7311ad4107c46f554f15b5572b89a4ab6d067c73425b7418d946c\",\"dweb:/ipfs/QmdM81GQY5nok5oCTP8Cc6M8s1UC9f6ZbSWybaUxrZNrmY\"]},\"lib/eigenlayer-contracts/src/contracts/permissions/Pausable.sol\":{\"keccak256\":\"0x53a08f01d778b91604dc1d27d4805fa99b9a2993f26e6079a1d8701699dc9f21\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://8fd5dd22dcb1fb4f803843b920501679f252ccf100a06acbad7a22452cdc1173\",\"dweb:/ipfs/QmeyoJoTN3Gi7Q4Fk4y89UTDDnyPFmSbdu8N7Vyijwjx2s\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xd6b579f342ff00b0b45eb2b97f1fb5274a2c52a8f59f13f174394a26b0c2030e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://55f68d7ea9ac2b0369c77e91b737d0e7991c302bf07b5a5b507147c449bcde20\",\"dweb:/ipfs/QmT8Uv9f7SbxmXsmUgrBpKMYjwv6fD3EFQB22fu51nYGLp\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x1e4597b288e792b4530cbc7e97e28754e8457969e61a86d9e6e3a2857eb8a68f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://41fb94e2f5df15c1d070865db82373dc85e52bc3a2f85e3aa338488f8616532c\",\"dweb:/ipfs/QmeKTieHBEur42JbTkn2JChdGx3GT9YZbVCP7wj2ejQvMj\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x1e5f62292e000eb24ff5a82fbe1310b5a03871d008bcd2e203e08cd044af0466\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d300b99404ad2930649be8508f7b1ed9940bc82facb7291a0540c1ec42badcaa\",\"dweb:/ipfs/QmW2xV7vTvtyJPDb5PwYBRSrs2qGMWV5rT6V9dzjaPUp9q\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e\",\"dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x78297d2d2e50b4fec6a42ecf5be5c76a6c102810388d11f165a363e0aa8f5034\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09968869e3943f45df330f42bdb49f96c71f55b5a424c73faba95135fafc5c78\",\"dweb:/ipfs/QmTLAoVbabvKZybmaFEHwib1feE2gWwN5yMcQBADVyBM5E\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xf57046ce68c681ede23c9a117b8ed58b7c960dc7f806ab8a4db80a0dac737a88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://beec7753d3491d55fb6f416e28ec8dd79b5f866405025fab32d51e3ae027e865\",\"dweb:/ipfs/QmQdqhSufKYphPsy3PQzjzu3VqbXk5mzuSm2grk345rPCh\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IDelegationManager","name":"_delegation","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"avs","type":"address","indexed":true},{"internalType":"string","name":"metadataURI","type":"string","indexed":false}],"type":"event","name":"AVSMetadataURIUpdated","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"avs","type":"address","indexed":true},{"internalType":"enum IAVSDirectory.OperatorAVSRegistrationStatus","name":"status","type":"uint8","indexed":false}],"type":"event","name":"OperatorAVSRegistrationStatusUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"newPausedStatus","type":"uint256","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"contract IPauserRegistry","name":"pauserRegistry","type":"address","indexed":false},{"internalType":"contract IPauserRegistry","name":"newPauserRegistry","type":"address","indexed":false}],"type":"event","name":"PauserRegistrySet","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"newPausedStatus","type":"uint256","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_AVS_REGISTRATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"avsOperatorStatus","outputs":[{"internalType":"enum IAVSDirectory.OperatorAVSRegistrationStatus","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"avs","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function","name":"calculateOperatorAVSRegistrationDigestHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"cancelSalt"},{"inputs":[],"stateMutability":"view","type":"function","name":"delegation","outputs":[{"internalType":"contract IDelegationManager","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deregisterOperatorFromAVS"},{"inputs":[],"stateMutability":"view","type":"function","name":"domainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"contract IPauserRegistry","name":"_pauserRegistry","type":"address"},{"internalType":"uint256","name":"initialPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"operatorSaltIsSpent","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"newPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseAll"},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"}],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pauserRegistry","outputs":[{"internalType":"contract IPauserRegistry","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","name":"operatorSignature","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"registerOperatorToAVS"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"contract IPauserRegistry","name":"newPauserRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPauserRegistry"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"uint256","name":"newPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"string","name":"metadataURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateAVSMetadataURI"}],"devdoc":{"kind":"dev","methods":{"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)":{"params":{"avs":"The address of the service manager contract for the AVS that the operator is registering to","expiry":"Time after which the approver's signature becomes invalid","operator":"The account registering as an operator","salt":"A unique and single use value associated with the approver signature."}},"cancelSalt(bytes32)":{"params":{"salt":"A unique and single use value associated with the approver signature."}},"constructor":{"details":"Initializes the immutable addresses of the strategy mananger, delegationManager, slasher, and eigenpodManager contracts"},"deregisterOperatorFromAVS(address)":{"params":{"operator":"The address of the operator to deregister."}},"domainSeparator()":{"details":"The domain separator will change in the event of a fork that changes the ChainID."},"initialize(address,address,uint256)":{"details":"Initializes the addresses of the initial owner, pauser registry, and paused status. minWithdrawalDelayBlocks is set only once here"},"owner()":{"details":"Returns the address of the current owner."},"pause(uint256)":{"details":"This function can only pause functionality, and thus cannot 'unflip' any bit in `_paused` from 1 to 0.","params":{"newPausedStatus":"represents the new value for `_paused` to take, which means it may flip several bits at once."}},"registerOperatorToAVS(address,(bytes,bytes32,uint256))":{"params":{"operator":"The address of the operator to register.","operatorSignature":"The signature, salt, and expiry of the operator's signature."}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"unpause(uint256)":{"details":"This function can only unpause functionality, and thus cannot 'flip' any bit in `_paused` from 0 to 1.","params":{"newPausedStatus":"represents the new value for `_paused` to take, which means it may flip several bits at once."}},"updateAVSMetadataURI(string)":{"params":{"metadataURI":"The URI for metadata associated with an avs"}}},"version":1},"userdoc":{"kind":"user","methods":{"DOMAIN_TYPEHASH()":{"notice":"The EIP-712 typehash for the contract's domain"},"OPERATOR_AVS_REGISTRATION_TYPEHASH()":{"notice":"The EIP-712 typehash for the `Registration` struct used by the contract"},"avsOperatorStatus(address,address)":{"notice":"Mapping: AVS => operator => enum of operator status to the AVS"},"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)":{"notice":"Calculates the digest hash to be signed by an operator to register with an AVS"},"cancelSalt(bytes32)":{"notice":"Called by an operator to cancel a salt that has been used to register with an AVS."},"delegation()":{"notice":"The DelegationManager contract for EigenLayer"},"deregisterOperatorFromAVS(address)":{"notice":"Called by an avs to deregister an operator with the avs."},"domainSeparator()":{"notice":"Getter function for the current EIP-712 domain separator for this contract."},"operatorSaltIsSpent(address,bytes32)":{"notice":"Mapping: operator => 32-byte salt => whether or not the salt has already been used by the operator."},"pause(uint256)":{"notice":"This function is used to pause an EigenLayer contract's functionality. It is permissioned to the `pauser` address, which is expected to be a low threshold multisig."},"pauseAll()":{"notice":"Alias for `pause(type(uint256).max)`."},"paused()":{"notice":"Returns the current paused status as a uint256."},"paused(uint8)":{"notice":"Returns 'true' if the `indexed`th bit of `_paused` is 1, and 'false' otherwise"},"pauserRegistry()":{"notice":"Address of the `PauserRegistry` contract that this contract defers to for determining access control (for pausing)."},"registerOperatorToAVS(address,(bytes,bytes32,uint256))":{"notice":"Called by the AVS's service manager contract to register an operator with the avs."},"setPauserRegistry(address)":{"notice":"Allows the unpauser to set a new pauser registry"},"unpause(uint256)":{"notice":"This function is used to unpause an EigenLayer contract's functionality. It is permissioned to the `unpauser` address, which is expected to be a high threshold multisig or governance contract."},"updateAVSMetadataURI(string)":{"notice":"Called by an avs to emit an `AVSMetadataURIUpdated` event indicating the information has updated."}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable/","@openzeppelin/=lib/openzeppelin-contracts/","ds-test/=lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-contracts/src/contracts/core/AVSDirectory.sol":"AVSDirectory"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/src/contracts/core/AVSDirectory.sol":{"keccak256":"0x0442400ef75eb8d0580c6dcb05662d2a67028b640b7c2d45f190929b22021eb9","urls":["bzz-raw://70f2681418063301e4b8850926f548000f35919a5afa22fedb8d82802152755e","dweb:/ipfs/QmdG8EnsPfLkZN4nXD1YFHsSMf2xautkaiLFLAstGZTURv"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/core/AVSDirectoryStorage.sol":{"keccak256":"0xe23059ca3e44a4a812b1f3d970c6f5dc873bfc825b981f1dcbd0c0d7199ce649","urls":["bzz-raw://9ebf86dd616f31b38c91e82f9b39ad659f610d63a77af95dde3c1246f19aa7a4","dweb:/ipfs/QmXvLxyu3xSfC5TqdyN1xWS2mtAHPphbhigXYVXmrw6H4N"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol":{"keccak256":"0x337c94d7fdb7a862dd0d65e3d0ae837fc9a62f7e2b314f39a3d65a683eb666ff","urls":["bzz-raw://88bc4de1a2d44c4c18f60a084a216deb3708ffed305e647a9d999543ffc4f9f1","dweb:/ipfs/QmbgxTunu4Erz9EewrvkzcTSDPZn3oSKXxKJBeXhbJPSv8"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x9906828f285cc76bbbe077f908d87c4bffd0a3bff9394f7a4b60a9d9a2672c1e","urls":["bzz-raw://4c0f43e14e50ac322685b5cd301459118e2770bdfb053f8f3ded08ee9fbf5bf9","dweb:/ipfs/QmPQtY6KEUCbrKwweu8BvA7YjnXXxkkuZPyLSRGV5EoPTe"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0x1f8e17b0f952042132ca64e202022d83783b7f42ec364cd0cad1950ecb95a13d","urls":["bzz-raw://a2be4c476902f25fb058f779e3d4e5b1182d9dc9fbdec518acbe9544c0d3c141","dweb:/ipfs/QmdgZq6JrCD36Xry2vD8QSeGguGQ9TGWY2CMvKrhR9NQ6u"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0x22b7a17d53696412f80645f1fa65274ae89040bdc706262e3b6cc577dbafcaa4","urls":["bzz-raw://b15002346892a48fd7cf9a8a4cf121e17ba133d21e4822e71fbffac85117d6b2","dweb:/ipfs/QmRBPJUcRQ6uKmSvCYhhtVWcKCAWkQFSVZZwZR7HR42kiz"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x33a935182f77cfd508fc57ec8e45afc8dc3748e1e9b764d36bf90ae6466f257b","urls":["bzz-raw://d3981b5bbf435cda04e2ed2f348f886ebf1500c18dd4bbf67b1f1bc0272e2d3f","dweb:/ipfs/QmYHDzQx29ataM2ejRCXFcPxaPdxWqX8v7uwUAYoG9572w"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0xffafae142d5337a5c204519e8f82fe3a5fae137286ebf597fa50699cf12c2474","urls":["bzz-raw://b577a12f7788095b230fd069b36ba9b3cdb376a0b7c3d8ae71588e5bf0c2f574","dweb:/ipfs/QmXd1cDzYpxecyFEwowLiBKKjzRHgV8cs1qvLwypdEbVYy"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4","urls":["bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b","dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x3d9eeecf96bd8d6427445db76b9a73f9861c6c3601001226bed2f7fb81e252e6","urls":["bzz-raw://c836719a65892c5cffdba9de4e009e5f8a4e49aea9c5f46d57b15660c6c2d07d","dweb:/ipfs/QmWuzNq2HdEH1hsRg8Jc95k1DZdNjXFb5ehkz9iLNNSqhT"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xaeee2ac5cfcc3388b63bef2668fa435c65a4b433b52ce9f5013822c6ec875fa3","urls":["bzz-raw://86eb6d3da5b45f7509995ffa170eaaadffbdd6d43e50f0902d421bb93a7dfda6","dweb:/ipfs/QmWaYcgtnaVpcekSP7LyY6AGrE3hRE3kZE4H4EKhsSysDG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x633b5fb10209891f696a9c8db4d7327ed7f560a2e9710489e38a67daeda59a96","urls":["bzz-raw://c8381baaec3afa6b200420c093706974776dfd14f6887abe7457eb867351a068","dweb:/ipfs/QmP9H9ttS1sJ6FrvMEefJhU6B4z1wMCjcYYZqVfsLXagJE"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/EIP1271SignatureUtils.sol":{"keccak256":"0xe92d584c47c5828e026a8082af3da38a853e3942c4da7deb705d6470a41afab3","urls":["bzz-raw://1c436c578781fd7d3dffdb24e906819422819f5e9a71d39ee63166a3d5cb3373","dweb:/ipfs/QmP7bJhYqLpwqk2Xq4tqDCUMi2nFAhxxW3Pz36ctE1sbdD"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0x1c5895f913e95682b0c371595cb1fa0d9c34ea921a0fbb5c32201b4315e80a56","urls":["bzz-raw://c470e449a3144fbaaa17b44823ba9cba901f063b04355c800bf62cabdd081cd4","dweb:/ipfs/QmSJ8gaAF4WA1aXGmLesnnRo8fDZNEFnqZSGNkJnXLRM9R"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0xcf8422dfa6ccc393de19417570c6239e0fde54de9433ea258cbeb6937ff7f316","urls":["bzz-raw://328e582c05b7311ad4107c46f554f15b5572b89a4ab6d067c73425b7418d946c","dweb:/ipfs/QmdM81GQY5nok5oCTP8Cc6M8s1UC9f6ZbSWybaUxrZNrmY"],"license":"MIT"},"lib/eigenlayer-contracts/src/contracts/permissions/Pausable.sol":{"keccak256":"0x53a08f01d778b91604dc1d27d4805fa99b9a2993f26e6079a1d8701699dc9f21","urls":["bzz-raw://8fd5dd22dcb1fb4f803843b920501679f252ccf100a06acbad7a22452cdc1173","dweb:/ipfs/QmeyoJoTN3Gi7Q4Fk4y89UTDDnyPFmSbdu8N7Vyijwjx2s"],"license":"BUSL-1.1"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xd6b579f342ff00b0b45eb2b97f1fb5274a2c52a8f59f13f174394a26b0c2030e","urls":["bzz-raw://55f68d7ea9ac2b0369c77e91b737d0e7991c302bf07b5a5b507147c449bcde20","dweb:/ipfs/QmT8Uv9f7SbxmXsmUgrBpKMYjwv6fD3EFQB22fu51nYGLp"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x1e4597b288e792b4530cbc7e97e28754e8457969e61a86d9e6e3a2857eb8a68f","urls":["bzz-raw://41fb94e2f5df15c1d070865db82373dc85e52bc3a2f85e3aa338488f8616532c","dweb:/ipfs/QmeKTieHBEur42JbTkn2JChdGx3GT9YZbVCP7wj2ejQvMj"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x1e5f62292e000eb24ff5a82fbe1310b5a03871d008bcd2e203e08cd044af0466","urls":["bzz-raw://d300b99404ad2930649be8508f7b1ed9940bc82facb7291a0540c1ec42badcaa","dweb:/ipfs/QmW2xV7vTvtyJPDb5PwYBRSrs2qGMWV5rT6V9dzjaPUp9q"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544","urls":["bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e","dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x78297d2d2e50b4fec6a42ecf5be5c76a6c102810388d11f165a363e0aa8f5034","urls":["bzz-raw://09968869e3943f45df330f42bdb49f96c71f55b5a424c73faba95135fafc5c78","dweb:/ipfs/QmTLAoVbabvKZybmaFEHwib1feE2gWwN5yMcQBADVyBM5E"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3","urls":["bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638","dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xf57046ce68c681ede23c9a117b8ed58b7c960dc7f806ab8a4db80a0dac737a88","urls":["bzz-raw://beec7753d3491d55fb6f416e28ec8dd79b5f866405025fab32d51e3ae027e865","dweb:/ipfs/QmQdqhSufKYphPsy3PQzjzu3VqbXk5mzuSm2grk345rPCh"],"license":"MIT"}},"version":1},"id":1} \ No newline at end of file diff --git a/crates/utils/json/BLSApkRegistry.json b/crates/utils/json/BLSApkRegistry.json deleted file mode 100644 index 0ef030ed..00000000 --- a/crates/utils/json/BLSApkRegistry.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_registryCoordinator","type":"address","internalType":"contract IRegistryCoordinator"}],"stateMutability":"nonpayable"},{"type":"function","name":"apkHistory","inputs":[{"name":"","type":"uint8","internalType":"uint8"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"apkHash","type":"bytes24","internalType":"bytes24"},{"name":"updateBlockNumber","type":"uint32","internalType":"uint32"},{"name":"nextUpdateBlockNumber","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"currentApk","inputs":[{"name":"","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"X","type":"uint256","internalType":"uint256"},{"name":"Y","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"deregisterOperator","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"quorumNumbers","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getApk","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"tuple","internalType":"struct BN254.G1Point","components":[{"name":"X","type":"uint256","internalType":"uint256"},{"name":"Y","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getApkHashAtBlockNumberAndIndex","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"blockNumber","type":"uint32","internalType":"uint32"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes24","internalType":"bytes24"}],"stateMutability":"view"},{"type":"function","name":"getApkHistoryLength","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"getApkIndicesAtBlockNumber","inputs":[{"name":"quorumNumbers","type":"bytes","internalType":"bytes"},{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint32[]","internalType":"uint32[]"}],"stateMutability":"view"},{"type":"function","name":"getApkUpdateAtIndex","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IBLSApkRegistry.ApkUpdate","components":[{"name":"apkHash","type":"bytes24","internalType":"bytes24"},{"name":"updateBlockNumber","type":"uint32","internalType":"uint32"},{"name":"nextUpdateBlockNumber","type":"uint32","internalType":"uint32"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorFromPubkeyHash","inputs":[{"name":"pubkeyHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getOperatorId","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getRegisteredPubkey","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct BN254.G1Point","components":[{"name":"X","type":"uint256","internalType":"uint256"},{"name":"Y","type":"uint256","internalType":"uint256"}]},{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"initializeQuorum","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operatorToPubkey","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"X","type":"uint256","internalType":"uint256"},{"name":"Y","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"operatorToPubkeyHash","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"pubkeyHashToOperator","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"registerBLSPublicKey","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"params","type":"tuple","internalType":"struct IBLSApkRegistry.PubkeyRegistrationParams","components":[{"name":"pubkeyRegistrationSignature","type":"tuple","internalType":"struct BN254.G1Point","components":[{"name":"X","type":"uint256","internalType":"uint256"},{"name":"Y","type":"uint256","internalType":"uint256"}]},{"name":"pubkeyG1","type":"tuple","internalType":"struct BN254.G1Point","components":[{"name":"X","type":"uint256","internalType":"uint256"},{"name":"Y","type":"uint256","internalType":"uint256"}]},{"name":"pubkeyG2","type":"tuple","internalType":"struct BN254.G2Point","components":[{"name":"X","type":"uint256[2]","internalType":"uint256[2]"},{"name":"Y","type":"uint256[2]","internalType":"uint256[2]"}]}]},{"name":"pubkeyRegistrationMessageHash","type":"tuple","internalType":"struct BN254.G1Point","components":[{"name":"X","type":"uint256","internalType":"uint256"},{"name":"Y","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"operatorId","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"quorumNumbers","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registryCoordinator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"NewPubkeyRegistration","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"pubkeyG1","type":"tuple","indexed":false,"internalType":"struct BN254.G1Point","components":[{"name":"X","type":"uint256","internalType":"uint256"},{"name":"Y","type":"uint256","internalType":"uint256"}]},{"name":"pubkeyG2","type":"tuple","indexed":false,"internalType":"struct BN254.G2Point","components":[{"name":"X","type":"uint256[2]","internalType":"uint256[2]"},{"name":"Y","type":"uint256[2]","internalType":"uint256[2]"}]}],"anonymous":false},{"type":"event","name":"OperatorAddedToQuorums","inputs":[{"name":"operator","type":"address","indexed":false,"internalType":"address"},{"name":"operatorId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"quorumNumbers","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"OperatorRemovedFromQuorums","inputs":[{"name":"operator","type":"address","indexed":false,"internalType":"address"},{"name":"operatorId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"quorumNumbers","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60a06040523480156200001157600080fd5b506040516200210b3803806200210b833981016040819052620000349162000116565b6001600160a01b038116608052806200004c62000054565b505062000148565b600054610100900460ff1615620000c15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000114576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b608051611f8b620001806000396000818161030f01528181610466015281816105bf015281816109c501526110310152611f8b6000f3fe608060405234801561001057600080fd5b50600436106101155760003560e01c80636d14a987116100a2578063bf79ce5811610071578063bf79ce58146103cc578063d5254a8c146103df578063de29fac0146103ff578063e8bb9ae61461041f578063f4e24fe51461044857600080fd5b80636d14a9871461030a5780637916cea6146103315780637ff81a8714610372578063a3db80e2146103a557600080fd5b80633fb27952116100e95780633fb27952146101df57806347b314e8146101f25780635f61a88414610233578063605747d51461028f57806368bccaac146102dd57600080fd5b8062a1f4cb1461011a57806313542a4e1461015b57806326d941f214610192578063377ed99d146101a7575b600080fd5b610141610128366004611904565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b610184610169366004611904565b6001600160a01b031660009081526001602052604090205490565b604051908152602001610152565b6101a56101a0366004611937565b61045b565b005b6101ca6101b5366004611937565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610152565b6101a56101ed3660046119c2565b6105b4565b61021b610200366004611a68565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b610282610241366004611937565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b6040516101529190611a81565b6102a261029d366004611a98565b610672565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610152565b6102f06102eb366004611ac2565b610705565b60405167ffffffffffffffff199091168152602001610152565b61021b7f000000000000000000000000000000000000000000000000000000000000000081565b61034461033f366004611a98565b6108a0565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610152565b610385610380366004611904565b6108eb565b604080518351815260209384015193810193909352820152606001610152565b6101416103b3366004611937565b6005602052600090815260409020805460019091015482565b6101846103da366004611b0a565b6109b8565b6103f26103ed366004611b67565b610e0c565b6040516101529190611bdf565b61018461040d366004611904565b60016020526000908152604090205481565b61021b61042d366004611a68565b6002602052600090815260409020546001600160a01b031681565b6101a56104563660046119c2565b611026565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104ac5760405162461bcd60e51b81526004016104a390611c29565b60405180910390fd5b60ff81166000908152600460205260409020541561052b5760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b60648201526084016104a3565b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105fc5760405162461bcd60e51b81526004016104a390611c29565b6000610607836108eb565b50905061061482826110cf565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e83610655856001600160a01b031660009081526001602052604090205490565b8460405161066593929190611c9d565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260049052919091208054839081106106af576106af611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff8316600090815260046020526040812080548291908490811061072c5761072c611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156107f35760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e74000060648201526084016104a3565b604081015163ffffffff1615806108195750806040015163ffffffff168463ffffffff16105b6108975760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a4016104a3565b51949350505050565b600460205281600052604060002081815481106108bc57600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b0382166000818152600360209081526040808320815180830183528154815260019182015481850152948452909152812054909190806109ae5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f742072656769737465726564000060648201526084016104a3565b9094909350915050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a025760405162461bcd60e51b81526004016104a390611c29565b6000610a30610a1936869003860160408701611d1f565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5811415610ab8576040805162461bcd60e51b8152602060048201526024810191909152600080516020611f3683398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b657960648201526084016104a3565b6001600160a01b03851660009081526001602052604090205415610b425760405162461bcd60e51b81526020600482015260476024820152600080516020611f3683398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a4016104a3565b6000818152600260205260409020546001600160a01b031615610bc65760405162461bcd60e51b81526020600482015260426024820152600080516020611f3683398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a4016104a3565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610c1f918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611d51565b6040516020818303038152906040528051906020012060001c610c429190611d9c565b9050610cdc610c7b610c6683610c60368a90038a0160408b01611d1f565b9061131a565b610c7536899003890189611d1f565b906113b1565b610c83611445565b610cc5610cb685610c60604080518082018252600080825260209182015281518083019092526001825260029082015290565b610c75368a90038a018a611d1f565b610cd7368a90038a0160808b01611e0e565b611505565b610d775760405162461bcd60e51b815260206004820152606c6024820152600080516020611f3683398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c4016104a3565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610dfb9160808a0190611e6b565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610e2957610e29611952565b604051908082528060200260200182016040528015610e52578160200160208202803683370190505b50905060005b8481101561101d576000868683818110610e7457610e74611d09565b919091013560f81c6000818152600460205260409020549092509050801580610ed7575060ff821660009081526004602052604081208054909190610ebb57610ebb611d09565b600091825260209091200154600160c01b900463ffffffff1686105b15610f645760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a4016104a3565b805b80156110075760ff831660009081526004602052604090208790610f8b600184611eb5565b81548110610f9b57610f9b611d09565b600091825260209091200154600160c01b900463ffffffff1611610ff557610fc4600182611eb5565b858581518110610fd657610fd6611d09565b602002602001019063ffffffff16908163ffffffff1681525050611007565b80610fff81611ecc565b915050610f66565b505050808061101590611ee3565b915050610e58565b50949350505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461106e5760405162461bcd60e51b81526004016104a390611c29565b6000611079836108eb565b50905061108e8261108983611772565b6110cf565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e83610655856001600160a01b031660009081526001602052604090205490565b604080518082019091526000808252602082015260005b835181101561131457600084828151811061110357611103611d09565b0160209081015160f81c60008181526004909252604090912054909150806111935760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f7420657869737400000060648201526084016104a3565b60ff821660009081526005602090815260409182902082518084019093528054835260010154908201526111c790866113b1565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916112109085611eb5565b8154811061122057611220611d09565b600091825260209091200180549091504363ffffffff908116600160c01b9092041614156112615780546001600160c01b031916604083901c1781556112fd565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b50505050808061130c90611ee3565b9150506110e6565b50505050565b6040805180820190915260008082526020820152611336611831565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156113695761136b565bfe5b50806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016104a3565b505092915050565b60408051808201909152600080825260208201526113cd61184f565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156113695750806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016104a3565b61144d61186d565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082018252858152602080820185905282518084019093528583528201839052600091611534611892565b60005b60028110156116f957600061154d826006611efe565b905084826002811061156157611561611d09565b60200201515183611573836000611f1d565b600c811061158357611583611d09565b602002015284826002811061159a5761159a611d09565b602002015160200151838260016115b19190611f1d565b600c81106115c1576115c1611d09565b60200201528382600281106115d8576115d8611d09565b60200201515151836115eb836002611f1d565b600c81106115fb576115fb611d09565b602002015283826002811061161257611612611d09565b602002015151600160200201518361162b836003611f1d565b600c811061163b5761163b611d09565b602002015283826002811061165257611652611d09565b60200201516020015160006002811061166d5761166d611d09565b60200201518361167e836004611f1d565b600c811061168e5761168e611d09565b60200201528382600281106116a5576116a5611d09565b6020020151602001516001600281106116c0576116c0611d09565b6020020151836116d1836005611f1d565b600c81106116e1576116e1611d09565b602002015250806116f181611ee3565b915050611537565b506117026118b1565b60006020826101808560086107d05a03fa90508080156113695750806117625760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104a3565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561179757506020820151155b156117b5575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117fa9190611d9c565b611824907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611eb5565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806118806118cf565b815260200161188d6118cf565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461182c57600080fd5b60006020828403121561191657600080fd5b61191f826118ed565b9392505050565b803560ff8116811461182c57600080fd5b60006020828403121561194957600080fd5b61191f82611926565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561198b5761198b611952565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156119ba576119ba611952565b604052919050565b600080604083850312156119d557600080fd5b6119de836118ed565b915060208084013567ffffffffffffffff808211156119fc57600080fd5b818601915086601f830112611a1057600080fd5b813581811115611a2257611a22611952565b611a34601f8201601f19168501611991565b91508082528784828501011115611a4a57600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a7a57600080fd5b5035919050565b8151815260208083015190820152604081016106ff565b60008060408385031215611aab57600080fd5b611ab483611926565b946020939093013593505050565b600080600060608486031215611ad757600080fd5b611ae084611926565b9250602084013563ffffffff81168114611af957600080fd5b929592945050506040919091013590565b6000806000838503610160811215611b2157600080fd5b611b2a856118ed565b9350610100601f1982011215611b3f57600080fd5b602085019250604061011f1982011215611b5857600080fd5b50610120840190509250925092565b600080600060408486031215611b7c57600080fd5b833567ffffffffffffffff80821115611b9457600080fd5b818601915086601f830112611ba857600080fd5b813581811115611bb757600080fd5b876020828501011115611bc957600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611c1d57835163ffffffff1683529284019291840191600101611bfb565b50909695505050505050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b038416815260006020848184015260606040840152835180606085015260005b81811015611cdf57858101830151858201608001528201611cc3565b81811115611cf1576000608083870101525b50601f01601f19169290920160800195945050505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611d3157600080fd5b611d39611968565b82358152602083013560208201528091505092915050565b8881528760208201528660408201528560608201526040856080830137600060c082016000815260408682375050610100810192909252610120820152610140019695505050505050565b600082611db957634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611dcf57600080fd5b611dd7611968565b806040840185811115611de957600080fd5b845b81811015611e03578035845260209384019301611deb565b509095945050505050565b600060808284031215611e2057600080fd5b6040516040810181811067ffffffffffffffff82111715611e4357611e43611952565b604052611e508484611dbe565b8152611e5f8460408501611dbe565b60208201529392505050565b823581526020808401359082015260c081016040838184013760808201600081526040808501823750600081529392505050565b634e487b7160e01b600052601160045260246000fd5b600082821015611ec757611ec7611e9f565b500390565b600081611edb57611edb611e9f565b506000190190565b6000600019821415611ef757611ef7611e9f565b5060010190565b6000816000190483118215151615611f1857611f18611e9f565b500290565b60008219821115611f3057611f30611e9f565b50019056fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a26469706673582212203958d31cb2d0c343bedfede670efc918de34237404e56400effb76f299879b5764736f6c634300080c0033","sourceMap":"254:12653:95:-:0;;;739:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1455:51:96;;;;830:20:95;1606:22:96;:20;:22::i;:::-;1390:245;739:115:95;254:12653;;5388:279:59;5456:13;;;;;;;5455:14;5447:66;;;;-1:-1:-1;;;5447:66:59;;541:2:178;5447:66:59;;;523:21:178;580:2;560:18;;;553:30;619:34;599:18;;;592:62;-1:-1:-1;;;670:18:178;;;663:37;717:19;;5447:66:59;;;;;;;;5527:12;;5542:15;5527:12;;;:30;5523:138;;;5573:12;:30;;-1:-1:-1;;5573:30:59;5588:15;5573:30;;;;;;5622:28;;889:36:178;;;5622:28:59;;877:2:178;862:18;5622:28:59;;;;;;;5523:138;5388:279::o;14:320:178:-;114:6;167:2;155:9;146:7;142:23;138:32;135:52;;;183:1;180;173:12;135:52;209:16;;-1:-1:-1;;;;;254:31:178;;244:42;;234:70;;300:1;297;290:12;234:70;323:5;14:320;-1:-1:-1;;;14:320:178:o;747:184::-;254:12653:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101155760003560e01c80636d14a987116100a2578063bf79ce5811610071578063bf79ce58146103cc578063d5254a8c146103df578063de29fac0146103ff578063e8bb9ae61461041f578063f4e24fe51461044857600080fd5b80636d14a9871461030a5780637916cea6146103315780637ff81a8714610372578063a3db80e2146103a557600080fd5b80633fb27952116100e95780633fb27952146101df57806347b314e8146101f25780635f61a88414610233578063605747d51461028f57806368bccaac146102dd57600080fd5b8062a1f4cb1461011a57806313542a4e1461015b57806326d941f214610192578063377ed99d146101a7575b600080fd5b610141610128366004611904565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b610184610169366004611904565b6001600160a01b031660009081526001602052604090205490565b604051908152602001610152565b6101a56101a0366004611937565b61045b565b005b6101ca6101b5366004611937565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610152565b6101a56101ed3660046119c2565b6105b4565b61021b610200366004611a68565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b610282610241366004611937565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b6040516101529190611a81565b6102a261029d366004611a98565b610672565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610152565b6102f06102eb366004611ac2565b610705565b60405167ffffffffffffffff199091168152602001610152565b61021b7f000000000000000000000000000000000000000000000000000000000000000081565b61034461033f366004611a98565b6108a0565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610152565b610385610380366004611904565b6108eb565b604080518351815260209384015193810193909352820152606001610152565b6101416103b3366004611937565b6005602052600090815260409020805460019091015482565b6101846103da366004611b0a565b6109b8565b6103f26103ed366004611b67565b610e0c565b6040516101529190611bdf565b61018461040d366004611904565b60016020526000908152604090205481565b61021b61042d366004611a68565b6002602052600090815260409020546001600160a01b031681565b6101a56104563660046119c2565b611026565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104ac5760405162461bcd60e51b81526004016104a390611c29565b60405180910390fd5b60ff81166000908152600460205260409020541561052b5760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b60648201526084016104a3565b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105fc5760405162461bcd60e51b81526004016104a390611c29565b6000610607836108eb565b50905061061482826110cf565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e83610655856001600160a01b031660009081526001602052604090205490565b8460405161066593929190611c9d565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260049052919091208054839081106106af576106af611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff8316600090815260046020526040812080548291908490811061072c5761072c611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156107f35760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e74000060648201526084016104a3565b604081015163ffffffff1615806108195750806040015163ffffffff168463ffffffff16105b6108975760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a4016104a3565b51949350505050565b600460205281600052604060002081815481106108bc57600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b0382166000818152600360209081526040808320815180830183528154815260019182015481850152948452909152812054909190806109ae5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f742072656769737465726564000060648201526084016104a3565b9094909350915050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a025760405162461bcd60e51b81526004016104a390611c29565b6000610a30610a1936869003860160408701611d1f565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5811415610ab8576040805162461bcd60e51b8152602060048201526024810191909152600080516020611f3683398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b657960648201526084016104a3565b6001600160a01b03851660009081526001602052604090205415610b425760405162461bcd60e51b81526020600482015260476024820152600080516020611f3683398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a4016104a3565b6000818152600260205260409020546001600160a01b031615610bc65760405162461bcd60e51b81526020600482015260426024820152600080516020611f3683398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a4016104a3565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610c1f918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611d51565b6040516020818303038152906040528051906020012060001c610c429190611d9c565b9050610cdc610c7b610c6683610c60368a90038a0160408b01611d1f565b9061131a565b610c7536899003890189611d1f565b906113b1565b610c83611445565b610cc5610cb685610c60604080518082018252600080825260209182015281518083019092526001825260029082015290565b610c75368a90038a018a611d1f565b610cd7368a90038a0160808b01611e0e565b611505565b610d775760405162461bcd60e51b815260206004820152606c6024820152600080516020611f3683398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c4016104a3565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610dfb9160808a0190611e6b565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610e2957610e29611952565b604051908082528060200260200182016040528015610e52578160200160208202803683370190505b50905060005b8481101561101d576000868683818110610e7457610e74611d09565b919091013560f81c6000818152600460205260409020549092509050801580610ed7575060ff821660009081526004602052604081208054909190610ebb57610ebb611d09565b600091825260209091200154600160c01b900463ffffffff1686105b15610f645760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a4016104a3565b805b80156110075760ff831660009081526004602052604090208790610f8b600184611eb5565b81548110610f9b57610f9b611d09565b600091825260209091200154600160c01b900463ffffffff1611610ff557610fc4600182611eb5565b858581518110610fd657610fd6611d09565b602002602001019063ffffffff16908163ffffffff1681525050611007565b80610fff81611ecc565b915050610f66565b505050808061101590611ee3565b915050610e58565b50949350505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461106e5760405162461bcd60e51b81526004016104a390611c29565b6000611079836108eb565b50905061108e8261108983611772565b6110cf565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e83610655856001600160a01b031660009081526001602052604090205490565b604080518082019091526000808252602082015260005b835181101561131457600084828151811061110357611103611d09565b0160209081015160f81c60008181526004909252604090912054909150806111935760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f7420657869737400000060648201526084016104a3565b60ff821660009081526005602090815260409182902082518084019093528054835260010154908201526111c790866113b1565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916112109085611eb5565b8154811061122057611220611d09565b600091825260209091200180549091504363ffffffff908116600160c01b9092041614156112615780546001600160c01b031916604083901c1781556112fd565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b50505050808061130c90611ee3565b9150506110e6565b50505050565b6040805180820190915260008082526020820152611336611831565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156113695761136b565bfe5b50806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016104a3565b505092915050565b60408051808201909152600080825260208201526113cd61184f565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156113695750806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016104a3565b61144d61186d565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082018252858152602080820185905282518084019093528583528201839052600091611534611892565b60005b60028110156116f957600061154d826006611efe565b905084826002811061156157611561611d09565b60200201515183611573836000611f1d565b600c811061158357611583611d09565b602002015284826002811061159a5761159a611d09565b602002015160200151838260016115b19190611f1d565b600c81106115c1576115c1611d09565b60200201528382600281106115d8576115d8611d09565b60200201515151836115eb836002611f1d565b600c81106115fb576115fb611d09565b602002015283826002811061161257611612611d09565b602002015151600160200201518361162b836003611f1d565b600c811061163b5761163b611d09565b602002015283826002811061165257611652611d09565b60200201516020015160006002811061166d5761166d611d09565b60200201518361167e836004611f1d565b600c811061168e5761168e611d09565b60200201528382600281106116a5576116a5611d09565b6020020151602001516001600281106116c0576116c0611d09565b6020020151836116d1836005611f1d565b600c81106116e1576116e1611d09565b602002015250806116f181611ee3565b915050611537565b506117026118b1565b60006020826101808560086107d05a03fa90508080156113695750806117625760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104a3565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561179757506020820151155b156117b5575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117fa9190611d9c565b611824907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611eb5565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806118806118cf565b815260200161188d6118cf565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461182c57600080fd5b60006020828403121561191657600080fd5b61191f826118ed565b9392505050565b803560ff8116811461182c57600080fd5b60006020828403121561194957600080fd5b61191f82611926565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561198b5761198b611952565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156119ba576119ba611952565b604052919050565b600080604083850312156119d557600080fd5b6119de836118ed565b915060208084013567ffffffffffffffff808211156119fc57600080fd5b818601915086601f830112611a1057600080fd5b813581811115611a2257611a22611952565b611a34601f8201601f19168501611991565b91508082528784828501011115611a4a57600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a7a57600080fd5b5035919050565b8151815260208083015190820152604081016106ff565b60008060408385031215611aab57600080fd5b611ab483611926565b946020939093013593505050565b600080600060608486031215611ad757600080fd5b611ae084611926565b9250602084013563ffffffff81168114611af957600080fd5b929592945050506040919091013590565b6000806000838503610160811215611b2157600080fd5b611b2a856118ed565b9350610100601f1982011215611b3f57600080fd5b602085019250604061011f1982011215611b5857600080fd5b50610120840190509250925092565b600080600060408486031215611b7c57600080fd5b833567ffffffffffffffff80821115611b9457600080fd5b818601915086601f830112611ba857600080fd5b813581811115611bb757600080fd5b876020828501011115611bc957600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611c1d57835163ffffffff1683529284019291840191600101611bfb565b50909695505050505050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b038416815260006020848184015260606040840152835180606085015260005b81811015611cdf57858101830151858201608001528201611cc3565b81811115611cf1576000608083870101525b50601f01601f19169290920160800195945050505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611d3157600080fd5b611d39611968565b82358152602083013560208201528091505092915050565b8881528760208201528660408201528560608201526040856080830137600060c082016000815260408682375050610100810192909252610120820152610140019695505050505050565b600082611db957634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611dcf57600080fd5b611dd7611968565b806040840185811115611de957600080fd5b845b81811015611e03578035845260209384019301611deb565b509095945050505050565b600060808284031215611e2057600080fd5b6040516040810181811067ffffffffffffffff82111715611e4357611e43611952565b604052611e508484611dbe565b8152611e5f8460408501611dbe565b60208201529392505050565b823581526020808401359082015260c081016040838184013760808201600081526040808501823750600081529392505050565b634e487b7160e01b600052601160045260246000fd5b600082821015611ec757611ec7611e9f565b500390565b600081611edb57611edb611e9f565b506000190190565b6000600019821415611ef757611ef7611e9f565b5060010190565b6000816000190483118215151615611f1857611f18611e9f565b500290565b60008219821115611f3057611f30611e9f565b50019056fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a26469706673582212203958d31cb2d0c343bedfede670efc918de34237404e56400effb76f299879b5764736f6c634300080c0033","sourceMap":"254:12653:95:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1028:57:96;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;557:25:178;;;613:2;598:18;;591:34;;;;530:18;1028:57:96;;;;;;;;12780:125:95;;;;;;:::i;:::-;-1:-1:-1;;;;;12868:30:95;12842:7;12868:30;;;:20;:30;;;;;;;12780:125;;;;782:25:178;;;770:2;755:18;12780:125:95;636:177:178;3722:392:95;;;;;;:::i;:::-;;:::i;:::-;;12241:143;;;;;;:::i;:::-;12345:24;;12313:6;12345:24;;;:10;:24;;;;;:31;;12241:143;;;;1340:10:178;1328:23;;;1310:42;;1298:2;1283:18;12241:143:95;1166:192:178;1744:560:95;;;;;;:::i;:::-;;:::i;12462:141::-;;;;;;:::i;:::-;12538:7;12564:32;;;:20;:32;;;;;;-1:-1:-1;;;;;12564:32:95;;12462:141;;;;-1:-1:-1;;;;;3222:32:178;;;3204:51;;3192:2;3177:18;12462:141:95;3058:203:178;10357:129:95;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;10455:24:95;;;;;;:10;:24;;;;;;;;;10448:31;;;;;;;;;;;;;;;;;;;;10357:129;;;;;;;;:::i;10600:160::-;;;;;;:::i;:::-;;:::i;:::-;;;;4151:13:178;;-1:-1:-1;;4147:43:178;4129:62;;4238:4;4226:17;;;4220:24;4263:10;4311:21;;;4289:20;;;4282:51;;;;4381:17;;;4375:24;4371:33;;;4349:20;;;4342:63;4117:2;4102:18;10600:160:95;3927:484:178;11227:927:95;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;4999:36:178;;;4981:55;;4969:2;4954:18;11227:927:95;4835:207:178;661:44:96;;;;;1209:47;;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;5263:36:178;;;5245:55;;5319:10;5365:15;;;5360:2;5345:18;;5338:43;5417:15;;5397:18;;;5390:43;5233:2;5218:18;1209:47:96;5047:392:178;8577:423:95;;;;;;:::i;:::-;;:::i;:::-;;;;3339:12:178;;3327:25;;3401:4;3390:16;;;3384:23;3368:14;;;3361:47;;;;5730:18;;5723:34;5658:2;5643:18;8577:423:95;5444:319:178;1334:49:96;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;4532:1981:95;;;;;;:::i;:::-;;:::i;9204:1074::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;803:55:96:-;;;;;;:::i;:::-;;;;;;;;;;;;;;917;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;917:55:96;;;3071:501:95;;;;;;:::i;:::-;;:::i;3722:392::-;502:10;-1:-1:-1;;;;;524:19:95;502:42;;481:167;;;;-1:-1:-1;;;481:167:95;;;;;;;:::i;:::-;;;;;;;;;3825:24:::1;::::0;::::1;;::::0;;;:10:::1;:24;::::0;;;;:31;:36;3817:103:::1;;;::::0;-1:-1:-1;;;3817:103:95;;8284:2:178;3817:103:95::1;::::0;::::1;8266:21:178::0;8323:2;8303:18;;;8296:30;8362:34;8342:18;;;8335:62;-1:-1:-1;;;8413:18:178;;;8406:52;8475:19;;3817:103:95::1;8082:418:178::0;3817:103:95::1;3931:24;;;::::0;;;:10:::1;:24;::::0;;;;;;;3961:145;;::::1;::::0;::::1;::::0;;;;;::::1;4044:12;3961:145:::0;::::1;::::0;;::::1;::::0;;;;;;;;;3931:176;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;::::1;::::0;;;;;;;::::1;-1:-1:-1::0;;;3931:176:95::1;-1:-1:-1::0;;;;;3931:176:95;;;::::1;-1:-1:-1::0;;;3931:176:95::1;-1:-1:-1::0;;;;;;3931:176:95;;;;;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;3722:392::o;1744:560::-;502:10;-1:-1:-1;;;;;524:19:95;502:42;;481:167;;;;-1:-1:-1;;;481:167:95;;;;;;;:::i;:::-;1968:27:::1;2001:29;2021:8;2001:19;:29::i;:::-;1967:63;;;2090:46;2114:13;2129:6;2090:23;:46::i;:::-;2225:72;2248:8;2258:23;2272:8;-1:-1:-1::0;;;;;12868:30:95;12842:7;12868:30;;;:20;:30;;;;;;;12780:125;2258:23:::1;2283:13;2225:72;;;;;;;;:::i;:::-;;;;;;;;1877:427;1744:560:::0;;:::o;10600:160::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;10722:24:95;;;;;:10;:24;;;;;;:31;;10747:5;;10722:31;;;;;;:::i;:::-;;;;;;;;;;10715:38;;;;;;;;10722:31;;;;10715:38;-1:-1:-1;;10715:38:95;;;;;;;-1:-1:-1;;;10715:38:95;;;;;;;;;;;-1:-1:-1;;;10715:38:95;;;;;;;;;;-1:-1:-1;10600:160:95;;;;;:::o;11227:927::-;11430:24;;;11376:7;11430:24;;;:10;:24;;;;;:31;;11376:7;;11430:24;11455:5;;11430:31;;;;;;:::i;:::-;;;;;;;;;;11395:66;;;;;;;;11430:31;;;;11395:66;-1:-1:-1;;11395:66:95;;;;;;;-1:-1:-1;;;11395:66:95;;;;;;;;;;-1:-1:-1;;;11395:66:95;;;;;;;;;;;;;-1:-1:-1;11749:48:95;;;;11728:157;;;;-1:-1:-1;;;11728:157:95;;9610:2:178;11728:157:95;;;9592:21:178;9649:2;9629:18;;;9622:30;9688:34;9668:18;;;9661:62;9759:32;9739:18;;;9732:60;9809:19;;11728:157:95;9408:426:178;11728:157:95;11916:37;;;;:42;;;;:97;;;11976:15;:37;;;11962:51;;:11;:51;;;11916:97;11895:211;;;;-1:-1:-1;;;11895:211:95;;10041:2:178;11895:211:95;;;10023:21:178;10080:2;10060:18;;;10053:30;10119:34;10099:18;;;10092:62;10190:34;10170:18;;;10163:62;-1:-1:-1;;;10241:19:178;;;10234:34;10285:19;;11895:211:95;9839:471:178;11895:211:95;12124:23;;11227:927;-1:-1:-1;;;;11227:927:95:o;1209:47:96:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1209:47:96;-1:-1:-1;;;1209:47:96;;;;;-1:-1:-1;;;;1209:47:96;;;;;:::o;8577:423:95:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;8716:26:95;;8667:7;8716:26;;;:16;:26;;;;;;;;8686:56;;;;;;;;;;;;;;;;;;;;8773:30;;;;;;;;;8667:7;;8686:56;8835:24;8814:133;;;;-1:-1:-1;;;8814:133:95;;10517:2:178;8814:133:95;;;10499:21:178;10556:2;10536:18;;;10529:30;10595:34;10575:18;;;10568:62;10666:32;10646:18;;;10639:60;10716:19;;8814:133:95;10315:426:178;8814:133:95;8974:6;;8982:10;;-1:-1:-1;8577:423:95;-1:-1:-1;;8577:423:95:o;4532:1981::-;4748:18;502:10;-1:-1:-1;;;;;524:19:95;502:42;;481:167;;;;-1:-1:-1;;;481:167:95;;;;;;;:::i;:::-;4778:18:::1;4799:34;;;::::0;;;;;4817:15:::1;::::0;::::1;4799:34;:::i;:::-;10534:9:116::0;;10473:16;10524:20;;;10580:4;10576:13;;;10570:20;10557:34;;;10629:4;10616:18;;;10404:246;4799:34:95::1;4778:55;;4878:12;4864:10;:26;;4843:125;;;::::0;;-1:-1:-1;;;4843:125:95;;11297:2:178;4843:125:95::1;::::0;::::1;11279:21:178::0;11316:18;;;11309:30;;;;-1:-1:-1;;;;;;;;;;;11355:18:178;;;11348:62;11446:34;11426:18;;;11419:62;11498:19;;4843:125:95::1;11095:428:178::0;4843:125:95::1;-1:-1:-1::0;;;;;4999:30:95;::::1;5041:1;4999:30:::0;;;:20:::1;:30;::::0;;;;;:44;4978:162:::1;;;::::0;-1:-1:-1;;;4978:162:95;;11730:2:178;4978:162:95::1;::::0;::::1;11712:21:178::0;11769:2;11749:18;;;11742:30;-1:-1:-1;;;;;;;;;;;11788:18:178;;;11781:62;11879:34;11859:18;;;11852:62;-1:-1:-1;;;11930:19:178;;;11923:38;11978:19;;4978:162:95::1;11528:475:178::0;4978:162:95::1;5215:1;5171:32:::0;;;:20:::1;:32;::::0;;;;;-1:-1:-1;;;;;5171:32:95::1;:46:::0;5150:159:::1;;;::::0;-1:-1:-1;;;5150:159:95;;12210:2:178;5150:159:95::1;::::0;::::1;12192:21:178::0;12249:2;12229:18;;;12222:30;-1:-1:-1;;;;;;;;;;;12268:18:178;;;12261:62;12359:34;12339:18;;;12332:62;-1:-1:-1;;;12410:19:178;;;12403:33;12453:19;;5150:159:95::1;12008:470:178::0;5150:159:95::1;5527:15;5395:347:::0;;5361:13:::1;::::0;2037:77:116::1;::::0;5395:347:95::1;::::0;5425:36;::::1;::::0;5476::::1;::::0;;::::1;;::::0;5527:15;::::1;:17;::::0;5559;;;::::1;::::0;5591:15:::1;::::0;::::1;::::0;5623:17;;;;5655:31;::::1;::::0;5701;;::::1;;::::0;5395:347:::1;;:::i;:::-;;;;;;;;;;;;;5385:358;;;;;;5377:367;;:386;;;;:::i;:::-;5361:402:::0;-1:-1:-1;5861:263:95::1;5888:74;5928:33;5361:402:::0;5928:26:::1;;::::0;;;;;:15:::1;::::0;::::1;:26;:::i;:::-;::::0;::::1;:33::i;:::-;5888:39;;::::0;;::::1;::::0;::::1;:6:::0;:39:::1;:::i;:::-;::::0;::::1;:74::i;:::-;5976:22;:20;:22::i;:::-;6012:73;6047:37;6078:5;6047:19;-1:-1:-1::0;;;;;;;;;;;;;;;;;2392:13:116;;;;;;;;2400:1;2392:13;;2403:1;2392:13;;;;;2313:99;6047:37:95::1;6012:34;;::::0;;::::1;::::0;::::1;:29:::0;:34:::1;:::i;:73::-;5861:263;;::::0;;;;;6099:15:::1;::::0;::::1;5861:263;:::i;:::-;:13;:263::i;:::-;5853:384;;;::::0;-1:-1:-1;;;5853:384:95;;14800:2:178;5853:384:95::1;::::0;::::1;14782:21:178::0;14839:3;14819:18;;;14812:31;-1:-1:-1;;;;;;;;;;;14859:18:178;;;14852:62;14950:34;14930:18;;;14923:62;15022:34;15001:19;;;14994:63;-1:-1:-1;;;15073:19:178;;;15066:43;15126:19;;5853:384:95::1;14598:553:178::0;5853:384:95::1;-1:-1:-1::0;;;;;6248:26:95;::::1;;::::0;;;:16:::1;:26;::::0;;;6277:15:::1;6248:26:::0;;;6277:15;;::::1;15308:19:178::0;;15295:33;;15371:14;;;15358:28;15354:1;15344:12;;;15337:50;6302:30:95;;;;;;:43;;;6355:32;;;:20:::1;:32:::0;;;;;;;:43;;-1:-1:-1;;;;;;6355:43:95::1;::::0;::::1;::::0;;6414:65;;::::1;::::0;::::1;::::0;6463:15:::1;::::0;::::1;::::0;6414:65:::1;:::i;:::-;;;;;;;;-1:-1:-1::0;6496:10:95;4532:1981;-1:-1:-1;;;;4532:1981:95:o;9204:1074::-;9336:15;9363:23;9402:13;9389:34;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9389:34:95;;9363:60;;9447:9;9442:806;9462:24;;;9442:806;;;9507:18;9534:13;;9548:1;9534:16;;;;;;;:::i;:::-;;;;;;;;9578:30;9611:24;;;:10;:24;;;;;:31;9534:16;;-1:-1:-1;9611:31:95;-1:-1:-1;9660:27:95;;;:90;;-1:-1:-1;9705:24:95;;;;;;;:10;:24;;;;;:27;;:24;;;:27;;;;:::i;:::-;;;;;;;;;;:45;-1:-1:-1;;;9705:45:95;;;;9691:59;;9660:90;9656:220;;;9770:91;;-1:-1:-1;;;9770:91:95;;16186:2:178;9770:91:95;;;16168:21:178;16225:2;16205:18;;;16198:30;16264:34;16244:18;;;16237:62;16335:34;16315:18;;;16308:62;-1:-1:-1;;;16386:19:178;;;16379:48;16444:19;;9770:91:95;15984:485:178;9656:220:95;10006:22;9989:249;10030:5;;9989:249;;10064:24;;;;;;;:10;:24;;;;;10117:11;;10089:5;10093:1;10089;:5;:::i;:::-;10064:31;;;;;;;;:::i;:::-;;;;;;;;;;:49;-1:-1:-1;;;10064:49:95;;;;:64;10060:164;;10172:5;10176:1;10172;:5;:::i;:::-;10152:7;10160:1;10152:10;;;;;;;;:::i;:::-;;;;;;:26;;;;;;;;;;;10200:5;;10060:164;10037:3;;;;:::i;:::-;;;;9989:249;;;;9493:755;;9488:3;;;;;:::i;:::-;;;;9442:806;;;-1:-1:-1;10264:7:95;9204:1074;-1:-1:-1;;;;9204:1074:95:o;3071:501::-;502:10;-1:-1:-1;;;;;524:19:95;502:42;;481:167;;;;-1:-1:-1;;;481:167:95;;;;;;;:::i;:::-;3297:27:::1;3330:29;3350:8;3330:19;:29::i;:::-;3296:63;;;3419:55;3443:13;3458:15;:6;:13;:15::i;:::-;3419:23;:55::i;:::-;3489:76;3516:8;3526:23;3540:8;-1:-1:-1::0;;;;;12868:30:95;12842:7;12868:30;;;:20;:30;;;;;;;12780:125;6737:1470;-1:-1:-1;;;;;;;;;;;;;;;;;6888:9:95;6883:1318;6907:13;:20;6903:1;:24;6883:1318;;;7009:18;7036:13;7050:1;7036:16;;;;;;;;:::i;:::-;;;;;;;;;7067:21;7091:24;;;:10;:24;;;;;;;:31;7036:16;;-1:-1:-1;7144:18:95;7136:92;;;;-1:-1:-1;;;7136:92:95;;17219:2:178;7136:92:95;;;17201:21:178;17258:2;17238:18;;;17231:30;17297:34;17277:18;;;17270:62;17368:31;17348:18;;;17341:59;17417:19;;7136:92:95;17017:425:178;7136:92:95;7311:24;;;;;;;:10;:24;;;;;;;;;:29;;;;;;;;;;;;;;;;;;;:36;;7341:5;7311:29;:36::i;:::-;7361:24;;;;;;;:10;:24;;;;;;;;:33;;;;;;;;;;;;;;;10524:20:116;;;10570;10557:34;;10616:18;;;7692:24:95;;;:10;:24;;;;;7361:33;;-1:-1:-1;10616:18:116;;7361:24:95;;7717:17;;:13;:17;:::i;:::-;7692:43;;;;;;;;:::i;:::-;;;;;;;;;;7753:28;;7692:43;;-1:-1:-1;7792:12:95;7753:52;;;;-1:-1:-1;;;7753:28:95;;;;:52;7749:442;;;7825:31;;-1:-1:-1;;;;;;7825:31:95;;;;;;;;7749:442;;;7895:55;;;7937:12;7895:55;;-1:-1:-1;;;7895:55:95;;;-1:-1:-1;;;;;7895:55:95;;;;;;7968:24;;;7895:32;7968:24;;;:10;:24;;;;;;;;7998:177;;;;;;;-1:-1:-1;;7998:177:95;;;;;;;;;;;;;;;;7968:208;;-1:-1:-1;7968:208:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;7968:208:95;-1:-1:-1;;;;;;7968:208:95;;;;;;;;;;;;;;;;;;;7749:442;6934:1267;;;;6929:3;;;;;:::i;:::-;;;;6883:1318;;;;6835:1372;6737:1470;;:::o;7084:580:116:-;-1:-1:-1;;;;;;;;;;;;;;;;;7184:23:116;;:::i;:::-;7228:3;;7217:14;;:8;7252:3;;;;7241:8;;;:14;7265:8;;;;:12;;;-1:-1:-1;;7452:1:116;7446:4;7217:14;7436:1;7429:4;7422:5;7418:16;7407:53;7396:64;-1:-1:-1;7396:64:116;7557:48;;;;7530:75;;7557:48;7582:9;7530:75;;7632:7;7624:33;;;;-1:-1:-1;;;7624:33:116;;17649:2:178;7624:33:116;;;17631:21:178;17688:2;17668:18;;;17661:30;-1:-1:-1;;;17707:18:178;;;17700:43;17760:18;;7624:33:116;17447:337:178;7624:33:116;7174:490;;7084:580;;;;:::o;4823:615::-;-1:-1:-1;;;;;;;;;;;;;;;;;4926:23:116;;:::i;:::-;4970:4;;4959:15;;:8;4995:4;;;;4984:8;;;:15;5020:4;;5009:8;;;;:15;;;;5045:4;;;;5034:8;;;:15;-1:-1:-1;;5225:1:116;5219:4;4959:15;5209:1;5202:4;5195:5;5191:16;5180:53;5169:64;-1:-1:-1;5169:64:116;5330:48;;;;5303:75;5406:7;5398:33;;;;-1:-1:-1;;;5398:33:116;;17991:2:178;5398:33:116;;;17973:21:178;18030:2;18010:18;;;18003:30;-1:-1:-1;;;18049:18:178;;;18042:43;18102:18;;5398:33:116;17789:337:178;4070:128:116;4119:14;;:::i;:::-;-1:-1:-1;4152:39:116;;;;;;;;3635:77;4152:39;;;;;;3752:77;4152:39;;;;;;;;;;;;;;3869:77;4152:39;;3986:77;4152:39;;;;;;;;;;;;;;;4070:128::o;7914:1058::-;8084:31;;;;;;;;;;;;;;;;;;8125;;;;;;;;;;;;;;;;8068:4;;8167:24;;:::i;:::-;8207:9;8202:302;8226:1;8222;:5;8202:302;;;8248:9;8260:5;:1;8264;8260:5;:::i;:::-;8248:17;;8294:2;8297:1;8294:5;;;;;;;:::i;:::-;;;;;:7;8279:5;8285;:1;8294:7;8285:5;:::i;:::-;8279:12;;;;;;;:::i;:::-;;;;:22;8330:2;8333:1;8330:5;;;;;;;:::i;:::-;;;;;:7;;;8315:5;8321:1;8325;8321:5;;;;:::i;:::-;8315:12;;;;;;;:::i;:::-;;;;:22;8366:2;8369:1;8366:5;;;;;;;:::i;:::-;;;;;:7;:10;8351:5;8357;:1;8361;8357:5;:::i;:::-;8351:12;;;;;;;:::i;:::-;;;;:25;8405:2;8408:1;8405:5;;;;;;;:::i;:::-;;;;;:7;8413:1;8405:10;;;;8390:5;8396;:1;8400;8396:5;:::i;:::-;8390:12;;;;;;;:::i;:::-;;;;:25;8444:2;8447:1;8444:5;;;;;;;:::i;:::-;;;;;:7;;;8452:1;8444:10;;;;;;;:::i;:::-;;;;;8429:5;8435;:1;8439;8435:5;:::i;:::-;8429:12;;;;;;;:::i;:::-;;;;:25;8483:2;8486:1;8483:5;;;;;;;:::i;:::-;;;;;:7;;;8491:1;8483:10;;;;;;;:::i;:::-;;;;;8468:5;8474;:1;8478;8474:5;:::i;:::-;8468:12;;;;;;;:::i;:::-;;;;:25;-1:-1:-1;8229:3:116;;;;:::i;:::-;;;;8202:302;;;;8514:21;;:::i;:::-;8545:12;8725:4;8720:3;8705:13;8698:5;8695:1;8688:4;8681:5;8677:16;8666:64;8655:75;-1:-1:-1;8655:75:116;8827:48;;;;8800:75;8903:7;8895:41;;;;-1:-1:-1;;;8895:41:116;;18639:2:178;8895:41:116;;;18621:21:178;18678:2;18658:18;;;18651:30;-1:-1:-1;;;18697:18:178;;;18690:51;18758:18;;8895:41:116;18437:345:178;8895:41:116;-1:-1:-1;8954:6:116;:11;;;;-1:-1:-1;;;;;;;;7914:1058:116:o;4461:295::-;-1:-1:-1;;;;;;;;;;;;;;;;;4600:3:116;;:8;:20;;;;-1:-1:-1;4612:3:116;;;;:8;4600:20;4596:154;;;-1:-1:-1;;4643:13:116;;;;;;;;;-1:-1:-1;4643:13:116;;;;;;;;4461:295::o;4596:154::-;4694:45;;;;;;;;4702:1;:3;;;4694:45;;;;1841:77;4721:1;:3;;;:16;;;;:::i;:::-;4707:31;;1841:77;4707:31;:::i;:::-;4694:45;;4687:52;4461:295;-1:-1:-1;;4461:295:116:o;4596:154::-;4461:295;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:173:178:-;82:20;;-1:-1:-1;;;;;131:31:178;;121:42;;111:70;;177:1;174;167:12;192:186;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;:::-;333:39;192:186;-1:-1:-1;;;192:186:178:o;818:156::-;884:20;;944:4;933:16;;923:27;;913:55;;964:1;961;954:12;979:182;1036:6;1089:2;1077:9;1068:7;1064:23;1060:32;1057:52;;;1105:1;1102;1095:12;1057:52;1128:27;1145:9;1128:27;:::i;1363:127::-;1424:10;1419:3;1415:20;1412:1;1405:31;1455:4;1452:1;1445:15;1479:4;1476:1;1469:15;1495:251;1567:2;1561:9;;;1597:15;;1642:18;1627:34;;1663:22;;;1624:62;1621:88;;;1689:18;;:::i;:::-;1725:2;1718:22;1495:251;:::o;1751:275::-;1822:2;1816:9;1887:2;1868:13;;-1:-1:-1;;1864:27:178;1852:40;;1922:18;1907:34;;1943:22;;;1904:62;1901:88;;;1969:18;;:::i;:::-;2005:2;1998:22;1751:275;;-1:-1:-1;1751:275:178:o;2031:837::-;2108:6;2116;2169:2;2157:9;2148:7;2144:23;2140:32;2137:52;;;2185:1;2182;2175:12;2137:52;2208:29;2227:9;2208:29;:::i;:::-;2198:39;;2256:2;2309;2298:9;2294:18;2281:32;2332:18;2373:2;2365:6;2362:14;2359:34;;;2389:1;2386;2379:12;2359:34;2427:6;2416:9;2412:22;2402:32;;2472:7;2465:4;2461:2;2457:13;2453:27;2443:55;;2494:1;2491;2484:12;2443:55;2530:2;2517:16;2552:2;2548;2545:10;2542:36;;;2558:18;;:::i;:::-;2600:53;2643:2;2624:13;;-1:-1:-1;;2620:27:178;2616:36;;2600:53;:::i;:::-;2587:66;;2676:2;2669:5;2662:17;2716:7;2711:2;2706;2702;2698:11;2694:20;2691:33;2688:53;;;2737:1;2734;2727:12;2688:53;2792:2;2787;2783;2779:11;2774:2;2767:5;2763:14;2750:45;2836:1;2831:2;2826;2819:5;2815:14;2811:23;2804:34;;2857:5;2847:15;;;;;2031:837;;;;;:::o;2873:180::-;2932:6;2985:2;2973:9;2964:7;2960:23;2956:32;2953:52;;;3001:1;2998;2991:12;2953:52;-1:-1:-1;3024:23:178;;2873:180;-1:-1:-1;2873:180:178:o;3419:248::-;3339:12;;3327:25;;3401:4;3390:16;;;3384:23;3368:14;;;3361:47;3605:2;3590:18;;3617:44;3266:148;3672:250;3738:6;3746;3799:2;3787:9;3778:7;3774:23;3770:32;3767:52;;;3815:1;3812;3805:12;3767:52;3838:27;3855:9;3838:27;:::i;:::-;3828:37;3912:2;3897:18;;;;3884:32;;-1:-1:-1;;;3672:250:178:o;4416:414::-;4490:6;4498;4506;4559:2;4547:9;4538:7;4534:23;4530:32;4527:52;;;4575:1;4572;4565:12;4527:52;4598:27;4615:9;4598:27;:::i;:::-;4588:37;;4675:2;4664:9;4660:18;4647:32;4719:10;4712:5;4708:22;4701:5;4698:33;4688:61;;4745:1;4742;4735:12;4688:61;4416:414;;4768:5;;-1:-1:-1;;;4820:2:178;4805:18;;;;4792:32;;4416:414::o;5768:500::-;5918:6;5926;5934;5978:9;5969:7;5965:23;6008:3;6004:2;6000:12;5997:32;;;6025:1;6022;6015:12;5997:32;6048:29;6067:9;6048:29;:::i;:::-;6038:39;-1:-1:-1;6111:3:178;-1:-1:-1;;6093:16:178;;6089:26;6086:46;;;6128:1;6125;6118:12;6086:46;6166:2;6151:18;;;-1:-1:-1;6204:2:178;-1:-1:-1;;6185:17:178;;6181:26;6178:46;;;6220:1;6217;6210:12;6178:46;;6258:3;6247:9;6243:19;6233:29;;5768:500;;;;;:::o;6273:665::-;6352:6;6360;6368;6421:2;6409:9;6400:7;6396:23;6392:32;6389:52;;;6437:1;6434;6427:12;6389:52;6477:9;6464:23;6506:18;6547:2;6539:6;6536:14;6533:34;;;6563:1;6560;6553:12;6533:34;6601:6;6590:9;6586:22;6576:32;;6646:7;6639:4;6635:2;6631:13;6627:27;6617:55;;6668:1;6665;6658:12;6617:55;6708:2;6695:16;6734:2;6726:6;6723:14;6720:34;;;6750:1;6747;6740:12;6720:34;6797:7;6790:4;6781:6;6777:2;6773:15;6769:26;6766:39;6763:59;;;6818:1;6815;6808:12;6763:59;6849:4;6841:13;;;;6873:6;;-1:-1:-1;6911:20:178;;;;6898:34;;6273:665;-1:-1:-1;;;;6273:665:178:o;6943:647::-;7112:2;7164:21;;;7234:13;;7137:18;;;7256:22;;;7083:4;;7112:2;7335:15;;;;7309:2;7294:18;;;7083:4;7378:186;7392:6;7389:1;7386:13;7378:186;;;7457:13;;7472:10;7453:30;7441:43;;7539:15;;;;7504:12;;;;7414:1;7407:9;7378:186;;;-1:-1:-1;7581:3:178;;6943:647;-1:-1:-1;;;;;;6943:647:178:o;7595:482::-;7797:2;7779:21;;;7836:2;7816:18;;;7809:30;7875:34;7870:2;7855:18;;7848:62;7946:34;7941:2;7926:18;;7919:62;-1:-1:-1;;;8012:3:178;7997:19;;7990:45;8067:3;8052:19;;7595:482::o;8505:766::-;8737:1;8733;8728:3;8724:11;8720:19;8712:6;8708:32;8697:9;8690:51;8671:4;8760:2;8798:6;8793:2;8782:9;8778:18;8771:34;8841:2;8836;8825:9;8821:18;8814:30;8873:6;8867:13;8916:6;8911:2;8900:9;8896:18;8889:34;8941:1;8951:141;8965:6;8962:1;8959:13;8951:141;;;9061:14;;;9057:23;;9051:30;9026:17;;;9045:3;9022:27;9015:67;8980:10;;8951:141;;;9110:6;9107:1;9104:13;9101:92;;;9181:1;9175:3;9166:6;9155:9;9151:22;9147:32;9140:43;9101:92;-1:-1:-1;9254:2:178;9233:15;-1:-1:-1;;9229:29:178;9214:45;;;;9261:3;9210:55;;8505:766;-1:-1:-1;;;;;8505:766:178:o;9276:127::-;9337:10;9332:3;9328:20;9325:1;9318:31;9368:4;9365:1;9358:15;9392:4;9389:1;9382:15;10746:344;10831:6;10884:2;10872:9;10863:7;10859:23;10855:32;10852:52;;;10900:1;10897;10890:12;10852:52;10926:22;;:::i;:::-;10984:9;10971:23;10964:5;10957:38;11055:2;11044:9;11040:18;11027:32;11022:2;11015:5;11011:14;11004:56;11079:5;11069:15;;;10746:344;;;;:::o;12483:844::-;12916:6;12911:3;12904:19;12953:6;12948:2;12943:3;12939:12;12932:28;12990:6;12985:2;12980:3;12976:12;12969:28;13027:6;13022:2;13017:3;13013:12;13006:28;13079:2;13071:6;13065:3;13060;13056:13;13043:39;12886:3;13110;13105;13101:13;13134:1;13130:2;13123:13;13170:2;13162:6;13158:2;13145:28;-1:-1:-1;;13201:3:178;13192:13;;13236:18;;;;13279:3;13270:13;;13263:29;13317:3;13308:13;;12483:844;-1:-1:-1;;;;;;12483:844:178:o;13332:209::-;13364:1;13390;13380:132;;13434:10;13429:3;13425:20;13422:1;13415:31;13469:4;13466:1;13459:15;13497:4;13494:1;13487:15;13380:132;-1:-1:-1;13526:9:178;;13332:209::o;13546:484::-;13596:5;13649:3;13642:4;13634:6;13630:17;13626:27;13616:55;;13667:1;13664;13657:12;13616:55;13691:22;;:::i;:::-;13735:3;13773:2;13765:6;13761:15;13799:3;13791:6;13788:15;13785:35;;;13816:1;13813;13806:12;13785:35;13840:6;13855:146;13871:6;13866:3;13863:15;13855:146;;;13939:17;;13927:30;;13986:4;13977:14;;;;13888;13855:146;;;-1:-1:-1;14019:5:178;;13546:484;-1:-1:-1;;;;;13546:484:178:o;14035:558::-;14120:6;14173:3;14161:9;14152:7;14148:23;14144:33;14141:53;;;14190:1;14187;14180:12;14141:53;14223:4;14217:11;14267:4;14259:6;14255:17;14338:6;14326:10;14323:22;14302:18;14290:10;14287:34;14284:62;14281:88;;;14349:18;;:::i;:::-;14385:4;14378:24;14426:44;14462:7;14451:9;14426:44;:::i;:::-;14418:6;14411:60;14506:55;14553:7;14546:4;14535:9;14531:20;14506:55;:::i;:::-;14499:4;14487:17;;14480:82;14491:6;14035:558;-1:-1:-1;;;14035:558:178:o;15398:581::-;15699:20;;15681:39;;15783:4;15771:17;;;15758:31;15736:20;;;15729:61;15668:3;15653:19;;15840:2;15832:6;15812:18;;;15799:44;15877:3;15866:9;15862:19;15901:1;15897:2;15890:13;15946:2;15941;15933:6;15929:15;15925:2;15912:37;;15971:1;15965:4;15958:15;15398:581;;;;;:::o;16474:127::-;16535:10;16530:3;16526:20;16523:1;16516:31;16566:4;16563:1;16556:15;16590:4;16587:1;16580:15;16606:125;16646:4;16674:1;16671;16668:8;16665:34;;;16679:18;;:::i;:::-;-1:-1:-1;16716:9:178;;16606:125::o;16736:136::-;16775:3;16803:5;16793:39;;16812:18;;:::i;:::-;-1:-1:-1;;;16848:18:178;;16736:136::o;16877:135::-;16916:3;-1:-1:-1;;16937:17:178;;16934:43;;;16957:18;;:::i;:::-;-1:-1:-1;17004:1:178;16993:13;;16877:135::o;18131:168::-;18171:7;18237:1;18233;18229:6;18225:14;18222:1;18219:21;18214:1;18207:9;18200:17;18196:45;18193:71;;;18244:18;;:::i;:::-;-1:-1:-1;18284:9:178;;18131:168::o;18304:128::-;18344:3;18375:1;18371:6;18368:1;18365:13;18362:39;;;18381:18;;:::i;:::-;-1:-1:-1;18417:9:178;;18304:128::o","linkReferences":{},"immutableReferences":{"64395":[{"start":783,"length":32},{"start":1126,"length":32},{"start":1471,"length":32},{"start":2501,"length":32},{"start":4145,"length":32}]}},"methodIdentifiers":{"apkHistory(uint8,uint256)":"7916cea6","currentApk(uint8)":"a3db80e2","deregisterOperator(address,bytes)":"f4e24fe5","getApk(uint8)":"5f61a884","getApkHashAtBlockNumberAndIndex(uint8,uint32,uint256)":"68bccaac","getApkHistoryLength(uint8)":"377ed99d","getApkIndicesAtBlockNumber(bytes,uint256)":"d5254a8c","getApkUpdateAtIndex(uint8,uint256)":"605747d5","getOperatorFromPubkeyHash(bytes32)":"47b314e8","getOperatorId(address)":"13542a4e","getRegisteredPubkey(address)":"7ff81a87","initializeQuorum(uint8)":"26d941f2","operatorToPubkey(address)":"00a1f4cb","operatorToPubkeyHash(address)":"de29fac0","pubkeyHashToOperator(bytes32)":"e8bb9ae6","registerBLSPublicKey(address,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(uint256,uint256))":"bf79ce58","registerOperator(address,bytes)":"3fb27952","registryCoordinator()":"6d14a987"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IRegistryCoordinator\",\"name\":\"_registryCoordinator\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct BN254.G1Point\",\"name\":\"pubkeyG1\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"X\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"Y\",\"type\":\"uint256[2]\"}],\"indexed\":false,\"internalType\":\"struct BN254.G2Point\",\"name\":\"pubkeyG2\",\"type\":\"tuple\"}],\"name\":\"NewPubkeyRegistration\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"}],\"name\":\"OperatorAddedToQuorums\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"}],\"name\":\"OperatorRemovedFromQuorums\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"apkHistory\",\"outputs\":[{\"internalType\":\"bytes24\",\"name\":\"apkHash\",\"type\":\"bytes24\"},{\"internalType\":\"uint32\",\"name\":\"updateBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"nextUpdateBlockNumber\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"currentApk\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"}],\"name\":\"getApk\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"struct BN254.G1Point\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"blockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getApkHashAtBlockNumberAndIndex\",\"outputs\":[{\"internalType\":\"bytes24\",\"name\":\"\",\"type\":\"bytes24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"}],\"name\":\"getApkHistoryLength\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getApkIndicesAtBlockNumber\",\"outputs\":[{\"internalType\":\"uint32[]\",\"name\":\"\",\"type\":\"uint32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getApkUpdateAtIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes24\",\"name\":\"apkHash\",\"type\":\"bytes24\"},{\"internalType\":\"uint32\",\"name\":\"updateBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"nextUpdateBlockNumber\",\"type\":\"uint32\"}],\"internalType\":\"struct IBLSApkRegistry.ApkUpdate\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"pubkeyHash\",\"type\":\"bytes32\"}],\"name\":\"getOperatorFromPubkeyHash\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getRegisteredPubkey\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"struct BN254.G1Point\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"}],\"name\":\"initializeQuorum\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"operatorToPubkey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"operatorToPubkeyHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"pubkeyHashToOperator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"struct BN254.G1Point\",\"name\":\"pubkeyRegistrationSignature\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"struct BN254.G1Point\",\"name\":\"pubkeyG1\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"X\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"Y\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct BN254.G2Point\",\"name\":\"pubkeyG2\",\"type\":\"tuple\"}],\"internalType\":\"struct IBLSApkRegistry.PubkeyRegistrationParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"struct BN254.G1Point\",\"name\":\"pubkeyRegistrationMessageHash\",\"type\":\"tuple\"}],\"name\":\"registerBLSPublicKey\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registryCoordinator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"deregisterOperator(address,bytes)\":{\"details\":\"access restricted to the RegistryCoordinatorPreconditions (these are assumed, not validated in this contract): 1) `quorumNumbers` has no duplicates 2) `quorumNumbers.length` != 0 3) `quorumNumbers` is ordered in ascending order 4) the operator is not already deregistered 5) `quorumNumbers` is a subset of the quorumNumbers that the operator is registered for\",\"params\":{\"operator\":\"The address of the operator to deregister.\",\"quorumNumbers\":\"The quorum numbers the operator is deregistering from, where each byte is an 8 bit integer quorumNumber.\"}},\"getApkHashAtBlockNumberAndIndex(uint8,uint32,uint256)\":{\"params\":{\"blockNumber\":\"is the number of the block for which the latest ApkHash will be retrieved\",\"index\":\"is the index of the apkUpdate being retrieved from the list of quorum apkUpdates in storage\",\"quorumNumber\":\"is the quorum whose ApkHash is being retrieved\"}},\"getApkIndicesAtBlockNumber(bytes,uint256)\":{\"details\":\"Returns the current indices if `blockNumber >= block.number`\"},\"getOperatorId(address)\":{\"details\":\"Returns zero in the event that the `operator` has never registered for the AVS\"},\"getRegisteredPubkey(address)\":{\"details\":\"Reverts if the operator has not registered a valid pubkey\"},\"initializeQuorum(uint8)\":{\"params\":{\"quorumNumber\":\"The number of the new quorum\"}},\"registerBLSPublicKey(address,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(uint256,uint256))\":{\"params\":{\"operator\":\"is the operator for whom the key is being registered\",\"params\":\"contains the G1 & G2 public keys of the operator, and a signature proving their ownership\",\"pubkeyRegistrationMessageHash\":\"is a hash that the operator must sign to prove key ownership\"}},\"registerOperator(address,bytes)\":{\"details\":\"access restricted to the RegistryCoordinatorPreconditions (these are assumed, not validated in this contract): 1) `quorumNumbers` has no duplicates 2) `quorumNumbers.length` != 0 3) `quorumNumbers` is ordered in ascending order 4) the operator is not already registered\",\"params\":{\"operator\":\"The address of the operator to register.\",\"quorumNumbers\":\"The quorum numbers the operator is registering for, where each byte is an 8 bit integer quorumNumber.\"}}},\"version\":1},\"userdoc\":{\"events\":{\"NewPubkeyRegistration(address,(uint256,uint256),(uint256[2],uint256[2]))\":{\"notice\":\"Emitted when `operator` registers with the public keys `pubkeyG1` and `pubkeyG2`.\"}},\"kind\":\"user\",\"methods\":{\"apkHistory(uint8,uint256)\":{\"notice\":\"maps quorumNumber => historical aggregate pubkey updates\"},\"constructor\":{\"notice\":\"Sets the (immutable) `registryCoordinator` address\"},\"currentApk(uint8)\":{\"notice\":\"maps quorumNumber => current aggregate pubkey of quorum\"},\"deregisterOperator(address,bytes)\":{\"notice\":\"Deregisters the `operator`'s pubkey for the specified `quorumNumbers`.\"},\"getApk(uint8)\":{\"notice\":\"Returns the current APK for the provided `quorumNumber `\"},\"getApkHashAtBlockNumberAndIndex(uint8,uint32,uint256)\":{\"notice\":\"get hash of the apk of `quorumNumber` at `blockNumber` using the provided `index`; called by checkSignatures in BLSSignatureChecker.sol.\"},\"getApkHistoryLength(uint8)\":{\"notice\":\"Returns the length of ApkUpdates for the provided `quorumNumber`\"},\"getApkIndicesAtBlockNumber(bytes,uint256)\":{\"notice\":\"Returns the indices of the quorumApks index at `blockNumber` for the provided `quorumNumbers`\"},\"getApkUpdateAtIndex(uint8,uint256)\":{\"notice\":\"Returns the `ApkUpdate` struct at `index` in the list of APK updates for the `quorumNumber`\"},\"getOperatorFromPubkeyHash(bytes32)\":{\"notice\":\"Returns the operator address for the given `pubkeyHash`\"},\"getOperatorId(address)\":{\"notice\":\"returns the ID used to identify the `operator` within this AVS\"},\"getRegisteredPubkey(address)\":{\"notice\":\"Returns the pubkey and pubkey hash of an operator\"},\"initializeQuorum(uint8)\":{\"notice\":\"Initializes a new quorum by pushing its first apk update\"},\"operatorToPubkey(address)\":{\"notice\":\"maps operator address to pubkeyG1\"},\"operatorToPubkeyHash(address)\":{\"notice\":\"maps operator address to pubkey hash\"},\"pubkeyHashToOperator(bytes32)\":{\"notice\":\"maps pubkey hash to operator address\"},\"registerBLSPublicKey(address,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(uint256,uint256))\":{\"notice\":\"Called by the RegistryCoordinator register an operator as the owner of a BLS public key.\"},\"registerOperator(address,bytes)\":{\"notice\":\"Registers the `operator`'s pubkey for the specified `quorumNumbers`.\"},\"registryCoordinator()\":{\"notice\":\"the registry coordinator contract\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/BLSApkRegistry.sol\":\"BLSApkRegistry\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x9906828f285cc76bbbe077f908d87c4bffd0a3bff9394f7a4b60a9d9a2672c1e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4c0f43e14e50ac322685b5cd301459118e2770bdfb053f8f3ded08ee9fbf5bf9\",\"dweb:/ipfs/QmPQtY6KEUCbrKwweu8BvA7YjnXXxkkuZPyLSRGV5EoPTe\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x1f8e17b0f952042132ca64e202022d83783b7f42ec364cd0cad1950ecb95a13d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a2be4c476902f25fb058f779e3d4e5b1182d9dc9fbdec518acbe9544c0d3c141\",\"dweb:/ipfs/QmdgZq6JrCD36Xry2vD8QSeGguGQ9TGWY2CMvKrhR9NQ6u\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x22b7a17d53696412f80645f1fa65274ae89040bdc706262e3b6cc577dbafcaa4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b15002346892a48fd7cf9a8a4cf121e17ba133d21e4822e71fbffac85117d6b2\",\"dweb:/ipfs/QmRBPJUcRQ6uKmSvCYhhtVWcKCAWkQFSVZZwZR7HR42kiz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x33a935182f77cfd508fc57ec8e45afc8dc3748e1e9b764d36bf90ae6466f257b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d3981b5bbf435cda04e2ed2f348f886ebf1500c18dd4bbf67b1f1bc0272e2d3f\",\"dweb:/ipfs/QmYHDzQx29ataM2ejRCXFcPxaPdxWqX8v7uwUAYoG9572w\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xffafae142d5337a5c204519e8f82fe3a5fae137286ebf597fa50699cf12c2474\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b577a12f7788095b230fd069b36ba9b3cdb376a0b7c3d8ae71588e5bf0c2f574\",\"dweb:/ipfs/QmXd1cDzYpxecyFEwowLiBKKjzRHgV8cs1qvLwypdEbVYy\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b\",\"dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x3d9eeecf96bd8d6427445db76b9a73f9861c6c3601001226bed2f7fb81e252e6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c836719a65892c5cffdba9de4e009e5f8a4e49aea9c5f46d57b15660c6c2d07d\",\"dweb:/ipfs/QmWuzNq2HdEH1hsRg8Jc95k1DZdNjXFb5ehkz9iLNNSqhT\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xaeee2ac5cfcc3388b63bef2668fa435c65a4b433b52ce9f5013822c6ec875fa3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://86eb6d3da5b45f7509995ffa170eaaadffbdd6d43e50f0902d421bb93a7dfda6\",\"dweb:/ipfs/QmWaYcgtnaVpcekSP7LyY6AGrE3hRE3kZE4H4EKhsSysDG\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x633b5fb10209891f696a9c8db4d7327ed7f560a2e9710489e38a67daeda59a96\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c8381baaec3afa6b200420c093706974776dfd14f6887abe7457eb867351a068\",\"dweb:/ipfs/QmP9H9ttS1sJ6FrvMEefJhU6B4z1wMCjcYYZqVfsLXagJE\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0x1c5895f913e95682b0c371595cb1fa0d9c34ea921a0fbb5c32201b4315e80a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c470e449a3144fbaaa17b44823ba9cba901f063b04355c800bf62cabdd081cd4\",\"dweb:/ipfs/QmSJ8gaAF4WA1aXGmLesnnRo8fDZNEFnqZSGNkJnXLRM9R\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0xcf8422dfa6ccc393de19417570c6239e0fde54de9433ea258cbeb6937ff7f316\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://328e582c05b7311ad4107c46f554f15b5572b89a4ab6d067c73425b7418d946c\",\"dweb:/ipfs/QmdM81GQY5nok5oCTP8Cc6M8s1UC9f6ZbSWybaUxrZNrmY\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x1e4597b288e792b4530cbc7e97e28754e8457969e61a86d9e6e3a2857eb8a68f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://41fb94e2f5df15c1d070865db82373dc85e52bc3a2f85e3aa338488f8616532c\",\"dweb:/ipfs/QmeKTieHBEur42JbTkn2JChdGx3GT9YZbVCP7wj2ejQvMj\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"src/BLSApkRegistry.sol\":{\"keccak256\":\"0xdd88bbc550a146eef8c694dd855db4e305594a4507967eeb31f2d26c47246e1d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b0bd9b34c723c85b51edda8ae3dd4b796ea96afb5d98facf91738fd5c689e0b1\",\"dweb:/ipfs/Qma8kTBq2SjSSNXxAf3e4ddkT3AkBZHHgxMFL4mjfZJv9B\"]},\"src/BLSApkRegistryStorage.sol\":{\"keccak256\":\"0xf61107c6cf909dc5745f6718b0e93ce2c4bdd947112bb3a18246d350b46edef3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b15007adf4937aeb7540d79fb566086d7510f36545a6d9d57c46fdd4f0625122\",\"dweb:/ipfs/QmVQa9GbCVcVCa9DHaQrNZpnVe1G6wznhctuPgTQLTTcVA\"]},\"src/interfaces/IBLSApkRegistry.sol\":{\"keccak256\":\"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354\",\"dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp\"]},\"src/interfaces/IIndexRegistry.sol\":{\"keccak256\":\"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d\",\"dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F\"]},\"src/interfaces/IRegistry.sol\":{\"keccak256\":\"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25\",\"dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY\"]},\"src/interfaces/IRegistryCoordinator.sol\":{\"keccak256\":\"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d\",\"dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD\"]},\"src/interfaces/IStakeRegistry.sol\":{\"keccak256\":\"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97\",\"dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B\"]},\"src/libraries/BN254.sol\":{\"keccak256\":\"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae\",\"dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IRegistryCoordinator","name":"_registryCoordinator","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"struct BN254.G1Point","name":"pubkeyG1","type":"tuple","components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}],"indexed":false},{"internalType":"struct BN254.G2Point","name":"pubkeyG2","type":"tuple","components":[{"internalType":"uint256[2]","name":"X","type":"uint256[2]"},{"internalType":"uint256[2]","name":"Y","type":"uint256[2]"}],"indexed":false}],"type":"event","name":"NewPubkeyRegistration","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":false},{"internalType":"bytes32","name":"operatorId","type":"bytes32","indexed":false},{"internalType":"bytes","name":"quorumNumbers","type":"bytes","indexed":false}],"type":"event","name":"OperatorAddedToQuorums","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":false},{"internalType":"bytes32","name":"operatorId","type":"bytes32","indexed":false},{"internalType":"bytes","name":"quorumNumbers","type":"bytes","indexed":false}],"type":"event","name":"OperatorRemovedFromQuorums","anonymous":false},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"apkHistory","outputs":[{"internalType":"bytes24","name":"apkHash","type":"bytes24"},{"internalType":"uint32","name":"updateBlockNumber","type":"uint32"},{"internalType":"uint32","name":"nextUpdateBlockNumber","type":"uint32"}]},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function","name":"currentApk","outputs":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes","name":"quorumNumbers","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"deregisterOperator"},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"}],"stateMutability":"view","type":"function","name":"getApk","outputs":[{"internalType":"struct BN254.G1Point","name":"","type":"tuple","components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}]}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"uint32","name":"blockNumber","type":"uint32"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApkHashAtBlockNumberAndIndex","outputs":[{"internalType":"bytes24","name":"","type":"bytes24"}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"}],"stateMutability":"view","type":"function","name":"getApkHistoryLength","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"bytes","name":"quorumNumbers","type":"bytes"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApkIndicesAtBlockNumber","outputs":[{"internalType":"uint32[]","name":"","type":"uint32[]"}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApkUpdateAtIndex","outputs":[{"internalType":"struct IBLSApkRegistry.ApkUpdate","name":"","type":"tuple","components":[{"internalType":"bytes24","name":"apkHash","type":"bytes24"},{"internalType":"uint32","name":"updateBlockNumber","type":"uint32"},{"internalType":"uint32","name":"nextUpdateBlockNumber","type":"uint32"}]}]},{"inputs":[{"internalType":"bytes32","name":"pubkeyHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getOperatorFromPubkeyHash","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getRegisteredPubkey","outputs":[{"internalType":"struct BN254.G1Point","name":"","type":"tuple","components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}]},{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"initializeQuorum"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"operatorToPubkey","outputs":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"operatorToPubkeyHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"pubkeyHashToOperator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct IBLSApkRegistry.PubkeyRegistrationParams","name":"params","type":"tuple","components":[{"internalType":"struct BN254.G1Point","name":"pubkeyRegistrationSignature","type":"tuple","components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}]},{"internalType":"struct BN254.G1Point","name":"pubkeyG1","type":"tuple","components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}]},{"internalType":"struct BN254.G2Point","name":"pubkeyG2","type":"tuple","components":[{"internalType":"uint256[2]","name":"X","type":"uint256[2]"},{"internalType":"uint256[2]","name":"Y","type":"uint256[2]"}]}]},{"internalType":"struct BN254.G1Point","name":"pubkeyRegistrationMessageHash","type":"tuple","components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"registerBLSPublicKey","outputs":[{"internalType":"bytes32","name":"operatorId","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes","name":"quorumNumbers","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[],"stateMutability":"view","type":"function","name":"registryCoordinator","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"deregisterOperator(address,bytes)":{"details":"access restricted to the RegistryCoordinatorPreconditions (these are assumed, not validated in this contract): 1) `quorumNumbers` has no duplicates 2) `quorumNumbers.length` != 0 3) `quorumNumbers` is ordered in ascending order 4) the operator is not already deregistered 5) `quorumNumbers` is a subset of the quorumNumbers that the operator is registered for","params":{"operator":"The address of the operator to deregister.","quorumNumbers":"The quorum numbers the operator is deregistering from, where each byte is an 8 bit integer quorumNumber."}},"getApkHashAtBlockNumberAndIndex(uint8,uint32,uint256)":{"params":{"blockNumber":"is the number of the block for which the latest ApkHash will be retrieved","index":"is the index of the apkUpdate being retrieved from the list of quorum apkUpdates in storage","quorumNumber":"is the quorum whose ApkHash is being retrieved"}},"getApkIndicesAtBlockNumber(bytes,uint256)":{"details":"Returns the current indices if `blockNumber >= block.number`"},"getOperatorId(address)":{"details":"Returns zero in the event that the `operator` has never registered for the AVS"},"getRegisteredPubkey(address)":{"details":"Reverts if the operator has not registered a valid pubkey"},"initializeQuorum(uint8)":{"params":{"quorumNumber":"The number of the new quorum"}},"registerBLSPublicKey(address,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(uint256,uint256))":{"params":{"operator":"is the operator for whom the key is being registered","params":"contains the G1 & G2 public keys of the operator, and a signature proving their ownership","pubkeyRegistrationMessageHash":"is a hash that the operator must sign to prove key ownership"}},"registerOperator(address,bytes)":{"details":"access restricted to the RegistryCoordinatorPreconditions (these are assumed, not validated in this contract): 1) `quorumNumbers` has no duplicates 2) `quorumNumbers.length` != 0 3) `quorumNumbers` is ordered in ascending order 4) the operator is not already registered","params":{"operator":"The address of the operator to register.","quorumNumbers":"The quorum numbers the operator is registering for, where each byte is an 8 bit integer quorumNumber."}}},"version":1},"userdoc":{"kind":"user","methods":{"apkHistory(uint8,uint256)":{"notice":"maps quorumNumber => historical aggregate pubkey updates"},"constructor":{"notice":"Sets the (immutable) `registryCoordinator` address"},"currentApk(uint8)":{"notice":"maps quorumNumber => current aggregate pubkey of quorum"},"deregisterOperator(address,bytes)":{"notice":"Deregisters the `operator`'s pubkey for the specified `quorumNumbers`."},"getApk(uint8)":{"notice":"Returns the current APK for the provided `quorumNumber `"},"getApkHashAtBlockNumberAndIndex(uint8,uint32,uint256)":{"notice":"get hash of the apk of `quorumNumber` at `blockNumber` using the provided `index`; called by checkSignatures in BLSSignatureChecker.sol."},"getApkHistoryLength(uint8)":{"notice":"Returns the length of ApkUpdates for the provided `quorumNumber`"},"getApkIndicesAtBlockNumber(bytes,uint256)":{"notice":"Returns the indices of the quorumApks index at `blockNumber` for the provided `quorumNumbers`"},"getApkUpdateAtIndex(uint8,uint256)":{"notice":"Returns the `ApkUpdate` struct at `index` in the list of APK updates for the `quorumNumber`"},"getOperatorFromPubkeyHash(bytes32)":{"notice":"Returns the operator address for the given `pubkeyHash`"},"getOperatorId(address)":{"notice":"returns the ID used to identify the `operator` within this AVS"},"getRegisteredPubkey(address)":{"notice":"Returns the pubkey and pubkey hash of an operator"},"initializeQuorum(uint8)":{"notice":"Initializes a new quorum by pushing its first apk update"},"operatorToPubkey(address)":{"notice":"maps operator address to pubkeyG1"},"operatorToPubkeyHash(address)":{"notice":"maps operator address to pubkey hash"},"pubkeyHashToOperator(bytes32)":{"notice":"maps pubkey hash to operator address"},"registerBLSPublicKey(address,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(uint256,uint256))":{"notice":"Called by the RegistryCoordinator register an operator as the owner of a BLS public key."},"registerOperator(address,bytes)":{"notice":"Registers the `operator`'s pubkey for the specified `quorumNumbers`."},"registryCoordinator()":{"notice":"the registry coordinator contract"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable/","@openzeppelin/=lib/openzeppelin-contracts/","ds-test/=lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/BLSApkRegistry.sol":"BLSApkRegistry"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x9906828f285cc76bbbe077f908d87c4bffd0a3bff9394f7a4b60a9d9a2672c1e","urls":["bzz-raw://4c0f43e14e50ac322685b5cd301459118e2770bdfb053f8f3ded08ee9fbf5bf9","dweb:/ipfs/QmPQtY6KEUCbrKwweu8BvA7YjnXXxkkuZPyLSRGV5EoPTe"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0x1f8e17b0f952042132ca64e202022d83783b7f42ec364cd0cad1950ecb95a13d","urls":["bzz-raw://a2be4c476902f25fb058f779e3d4e5b1182d9dc9fbdec518acbe9544c0d3c141","dweb:/ipfs/QmdgZq6JrCD36Xry2vD8QSeGguGQ9TGWY2CMvKrhR9NQ6u"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0x22b7a17d53696412f80645f1fa65274ae89040bdc706262e3b6cc577dbafcaa4","urls":["bzz-raw://b15002346892a48fd7cf9a8a4cf121e17ba133d21e4822e71fbffac85117d6b2","dweb:/ipfs/QmRBPJUcRQ6uKmSvCYhhtVWcKCAWkQFSVZZwZR7HR42kiz"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x33a935182f77cfd508fc57ec8e45afc8dc3748e1e9b764d36bf90ae6466f257b","urls":["bzz-raw://d3981b5bbf435cda04e2ed2f348f886ebf1500c18dd4bbf67b1f1bc0272e2d3f","dweb:/ipfs/QmYHDzQx29ataM2ejRCXFcPxaPdxWqX8v7uwUAYoG9572w"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0xffafae142d5337a5c204519e8f82fe3a5fae137286ebf597fa50699cf12c2474","urls":["bzz-raw://b577a12f7788095b230fd069b36ba9b3cdb376a0b7c3d8ae71588e5bf0c2f574","dweb:/ipfs/QmXd1cDzYpxecyFEwowLiBKKjzRHgV8cs1qvLwypdEbVYy"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4","urls":["bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b","dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x3d9eeecf96bd8d6427445db76b9a73f9861c6c3601001226bed2f7fb81e252e6","urls":["bzz-raw://c836719a65892c5cffdba9de4e009e5f8a4e49aea9c5f46d57b15660c6c2d07d","dweb:/ipfs/QmWuzNq2HdEH1hsRg8Jc95k1DZdNjXFb5ehkz9iLNNSqhT"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xaeee2ac5cfcc3388b63bef2668fa435c65a4b433b52ce9f5013822c6ec875fa3","urls":["bzz-raw://86eb6d3da5b45f7509995ffa170eaaadffbdd6d43e50f0902d421bb93a7dfda6","dweb:/ipfs/QmWaYcgtnaVpcekSP7LyY6AGrE3hRE3kZE4H4EKhsSysDG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x633b5fb10209891f696a9c8db4d7327ed7f560a2e9710489e38a67daeda59a96","urls":["bzz-raw://c8381baaec3afa6b200420c093706974776dfd14f6887abe7457eb867351a068","dweb:/ipfs/QmP9H9ttS1sJ6FrvMEefJhU6B4z1wMCjcYYZqVfsLXagJE"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0x1c5895f913e95682b0c371595cb1fa0d9c34ea921a0fbb5c32201b4315e80a56","urls":["bzz-raw://c470e449a3144fbaaa17b44823ba9cba901f063b04355c800bf62cabdd081cd4","dweb:/ipfs/QmSJ8gaAF4WA1aXGmLesnnRo8fDZNEFnqZSGNkJnXLRM9R"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0xcf8422dfa6ccc393de19417570c6239e0fde54de9433ea258cbeb6937ff7f316","urls":["bzz-raw://328e582c05b7311ad4107c46f554f15b5572b89a4ab6d067c73425b7418d946c","dweb:/ipfs/QmdM81GQY5nok5oCTP8Cc6M8s1UC9f6ZbSWybaUxrZNrmY"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x1e4597b288e792b4530cbc7e97e28754e8457969e61a86d9e6e3a2857eb8a68f","urls":["bzz-raw://41fb94e2f5df15c1d070865db82373dc85e52bc3a2f85e3aa338488f8616532c","dweb:/ipfs/QmeKTieHBEur42JbTkn2JChdGx3GT9YZbVCP7wj2ejQvMj"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"src/BLSApkRegistry.sol":{"keccak256":"0xdd88bbc550a146eef8c694dd855db4e305594a4507967eeb31f2d26c47246e1d","urls":["bzz-raw://b0bd9b34c723c85b51edda8ae3dd4b796ea96afb5d98facf91738fd5c689e0b1","dweb:/ipfs/Qma8kTBq2SjSSNXxAf3e4ddkT3AkBZHHgxMFL4mjfZJv9B"],"license":"BUSL-1.1"},"src/BLSApkRegistryStorage.sol":{"keccak256":"0xf61107c6cf909dc5745f6718b0e93ce2c4bdd947112bb3a18246d350b46edef3","urls":["bzz-raw://b15007adf4937aeb7540d79fb566086d7510f36545a6d9d57c46fdd4f0625122","dweb:/ipfs/QmVQa9GbCVcVCa9DHaQrNZpnVe1G6wznhctuPgTQLTTcVA"],"license":"BUSL-1.1"},"src/interfaces/IBLSApkRegistry.sol":{"keccak256":"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5","urls":["bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354","dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp"],"license":"BUSL-1.1"},"src/interfaces/IIndexRegistry.sol":{"keccak256":"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b","urls":["bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d","dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F"],"license":"BUSL-1.1"},"src/interfaces/IRegistry.sol":{"keccak256":"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3","urls":["bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25","dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY"],"license":"BUSL-1.1"},"src/interfaces/IRegistryCoordinator.sol":{"keccak256":"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385","urls":["bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d","dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD"],"license":"BUSL-1.1"},"src/interfaces/IStakeRegistry.sol":{"keccak256":"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4","urls":["bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97","dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B"],"license":"BUSL-1.1"},"src/libraries/BN254.sol":{"keccak256":"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3","urls":["bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae","dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki"],"license":"MIT"}},"version":1},"id":95} \ No newline at end of file diff --git a/crates/utils/json/ContractsRegistry.json b/crates/utils/json/ContractsRegistry.json deleted file mode 100644 index 12b581af..00000000 --- a/crates/utils/json/ContractsRegistry.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"anvil_test","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"block_number","type":"uint256","internalType":"uint256"},{"name":"index","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"contractCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"contractNames","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"contracts","inputs":[{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"get_test_values","inputs":[{"name":"test_name","type":"string","internalType":"string"},{"name":"index","type":"int256","internalType":"int256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"registerContract","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"_contract","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"store_test","inputs":[{"name":"test_name","type":"string","internalType":"string"},{"name":"index","type":"int256","internalType":"int256"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"block_number","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x608060405234801561001057600080fd5b50610885806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80637fafbbdd1161005b5780637fafbbdd146100ee5780638736381a1461011d5780638c5b838514610134578063acd5baa21461018057600080fd5b80633ca6bb92146100825780636842109e146100ab5780637f3c2c28146100d9575b600080fd5b610095610090366004610458565b610193565b6040516100a29190610495565b60405180910390f35b6100be6100b936600461056b565b61022d565b604080519384526020840192909252908201526060016100a2565b6100ec6100e73660046105b0565b6102a2565b005b6100be6100fc366004610458565b60036020526000908152604090208054600182015460029092015490919083565b61012660025481565b6040519081526020016100a2565b61016861014236600461060e565b80516020818301810180516000825292820191909301209152546001600160a01b031681565b6040516001600160a01b0390911681526020016100a2565b6100ec61018e36600461064b565b61039a565b600160205260009081526040902080546101ac9061069f565b80601f01602080910402602001604051908101604052809291908181526020018280546101d89061069f565b80156102255780601f106101fa57610100808354040283529160200191610225565b820191906000526020600020905b81548152906001019060200180831161020857829003601f168201915b505050505081565b60008060008060036000878760405160200161024a9291906106d9565b60408051601f1981840301815291815281516020928301208352828201939093529082016000208251606081018452815480825260018301549382018490526002909201549301839052955093509150509250925092565b60006001600160a01b03166000836040516102bd91906106fb565b908152604051908190036020019020546001600160a01b0316146103275760405162461bcd60e51b815260206004820152601b60248201527f636f6e747261637420616c726561647920726567697374657265640000000000604482015260640160405180910390fd5b8060008360405161033891906106fb565b908152604080516020928190038301902080546001600160a01b0319166001600160a01b03949094169390931790925560025460009081526001909152206103808382610768565b506002805490600061039183610828565b91905055505050565b6003600085856040516020016103b19291906106d9565b604051602081830303815290604052805190602001208152602001908152602001600020600001546000146103e557600080fd5b604051806060016040528083815260200182815260200184815250600360008660405160200161041591906106fb565b60408051601f1981840301815291815281516020928301208352828201939093529082016000208351815590830151600182015591015160029091015550505050565b60006020828403121561046a57600080fd5b5035919050565b60005b8381101561048c578181015183820152602001610474565b50506000910152565b60208152600082518060208401526104b4816040850160208701610471565b601f01601f19169190910160400192915050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126104ef57600080fd5b813567ffffffffffffffff8082111561050a5761050a6104c8565b604051601f8301601f19908116603f01168101908282118183101715610532576105326104c8565b8160405283815286602085880101111561054b57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561057e57600080fd5b823567ffffffffffffffff81111561059557600080fd5b6105a1858286016104de565b95602094909401359450505050565b600080604083850312156105c357600080fd5b823567ffffffffffffffff8111156105da57600080fd5b6105e6858286016104de565b92505060208301356001600160a01b038116811461060357600080fd5b809150509250929050565b60006020828403121561062057600080fd5b813567ffffffffffffffff81111561063757600080fd5b610643848285016104de565b949350505050565b6000806000806080858703121561066157600080fd5b843567ffffffffffffffff81111561067857600080fd5b610684878288016104de565b97602087013597506040870135966060013595509350505050565b600181811c908216806106b357607f821691505b6020821081036106d357634e487b7160e01b600052602260045260246000fd5b50919050565b600083516106eb818460208801610471565b9190910191825250602001919050565b6000825161070d818460208701610471565b9190910192915050565b601f821115610763576000816000526020600020601f850160051c810160208610156107405750805b601f850160051c820191505b8181101561075f5782815560010161074c565b5050505b505050565b815167ffffffffffffffff811115610782576107826104c8565b61079681610790845461069f565b84610717565b602080601f8311600181146107cb57600084156107b35750858301515b600019600386901b1c1916600185901b17855561075f565b600085815260208120601f198616915b828110156107fa578886015182559484019460019091019084016107db565b50858210156108185787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006001820161084857634e487b7160e01b600052601160045260246000fd5b506001019056fea264697066735822122082e11051c2d52a6af7ca3e10a13ac4c0ed3dca1b217122e1d102090eb9080c4464736f6c63430008180033","sourceMap":"721:1474:0:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80637fafbbdd1161005b5780637fafbbdd146100ee5780638736381a1461011d5780638c5b838514610134578063acd5baa21461018057600080fd5b80633ca6bb92146100825780636842109e146100ab5780637f3c2c28146100d9575b600080fd5b610095610090366004610458565b610193565b6040516100a29190610495565b60405180910390f35b6100be6100b936600461056b565b61022d565b604080519384526020840192909252908201526060016100a2565b6100ec6100e73660046105b0565b6102a2565b005b6100be6100fc366004610458565b60036020526000908152604090208054600182015460029092015490919083565b61012660025481565b6040519081526020016100a2565b61016861014236600461060e565b80516020818301810180516000825292820191909301209152546001600160a01b031681565b6040516001600160a01b0390911681526020016100a2565b6100ec61018e36600461064b565b61039a565b600160205260009081526040902080546101ac9061069f565b80601f01602080910402602001604051908101604052809291908181526020018280546101d89061069f565b80156102255780601f106101fa57610100808354040283529160200191610225565b820191906000526020600020905b81548152906001019060200180831161020857829003601f168201915b505050505081565b60008060008060036000878760405160200161024a9291906106d9565b60408051601f1981840301815291815281516020928301208352828201939093529082016000208251606081018452815480825260018301549382018490526002909201549301839052955093509150509250925092565b60006001600160a01b03166000836040516102bd91906106fb565b908152604051908190036020019020546001600160a01b0316146103275760405162461bcd60e51b815260206004820152601b60248201527f636f6e747261637420616c726561647920726567697374657265640000000000604482015260640160405180910390fd5b8060008360405161033891906106fb565b908152604080516020928190038301902080546001600160a01b0319166001600160a01b03949094169390931790925560025460009081526001909152206103808382610768565b506002805490600061039183610828565b91905055505050565b6003600085856040516020016103b19291906106d9565b604051602081830303815290604052805190602001208152602001908152602001600020600001546000146103e557600080fd5b604051806060016040528083815260200182815260200184815250600360008660405160200161041591906106fb565b60408051601f1981840301815291815281516020928301208352828201939093529082016000208351815590830151600182015591015160029091015550505050565b60006020828403121561046a57600080fd5b5035919050565b60005b8381101561048c578181015183820152602001610474565b50506000910152565b60208152600082518060208401526104b4816040850160208701610471565b601f01601f19169190910160400192915050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126104ef57600080fd5b813567ffffffffffffffff8082111561050a5761050a6104c8565b604051601f8301601f19908116603f01168101908282118183101715610532576105326104c8565b8160405283815286602085880101111561054b57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561057e57600080fd5b823567ffffffffffffffff81111561059557600080fd5b6105a1858286016104de565b95602094909401359450505050565b600080604083850312156105c357600080fd5b823567ffffffffffffffff8111156105da57600080fd5b6105e6858286016104de565b92505060208301356001600160a01b038116811461060357600080fd5b809150509250929050565b60006020828403121561062057600080fd5b813567ffffffffffffffff81111561063757600080fd5b610643848285016104de565b949350505050565b6000806000806080858703121561066157600080fd5b843567ffffffffffffffff81111561067857600080fd5b610684878288016104de565b97602087013597506040870135966060013595509350505050565b600181811c908216806106b357607f821691505b6020821081036106d357634e487b7160e01b600052602260045260246000fd5b50919050565b600083516106eb818460208801610471565b9190910191825250602001919050565b6000825161070d818460208701610471565b9190910192915050565b601f821115610763576000816000526020600020601f850160051c810160208610156107405750805b601f850160051c820191505b8181101561075f5782815560010161074c565b5050505b505050565b815167ffffffffffffffff811115610782576107826104c8565b61079681610790845461069f565b84610717565b602080601f8311600181146107cb57600084156107b35750858301515b600019600386901b1c1916600185901b17855561075f565b600085815260208120601f198616915b828110156107fa578886015182559484019460019091019084016107db565b50858210156108185787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006001820161084857634e487b7160e01b600052601160045260246000fd5b506001019056fea264697066735822122082e11051c2d52a6af7ca3e10a13ac4c0ed3dca1b217122e1d102090eb9080c4464736f6c63430008180033","sourceMap":"721:1474:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;803:47;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1882:311;;;;;;:::i;:::-;;:::i;:::-;;;;2305:25:1;;;2361:2;2346:18;;2339:34;;;;2389:18;;;2382:34;2293:2;2278:18;1882:311:0;2105:317:1;1070:438:0;;;;;;:::i;:::-;;:::i;:::-;;891:55;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;856:28;;;;;;;;;3259:25:1;;;3247:2;3232:18;856:28:0;3113:177:1;754:43:0;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;754:43:0;;;;;;-1:-1:-1;;;;;3786:32:1;;;3768:51;;3756:2;3741:18;754:43:0;3622:203:1;1514:362:0;;;;;;:::i;:::-;;:::i;803:47::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1882:311::-;1966:7;1975;1984:6;2002:37;2042:10;:56;2080:9;2090:5;2063:33;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2063:33:0;;;;;;;;;2053:44;;2063:33;2053:44;;;;2042:56;;;;;;;;;;;;-1:-1:-1;2042:56:0;2002:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2002:96:0;-1:-1:-1;2002:96:0;-1:-1:-1;;1882:311:0;;;;;:::o;1070:438::-;1360:1;-1:-1:-1;;;;;1333:29:0;:9;1343:4;1333:15;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;1333:15:0;:29;1325:69;;;;-1:-1:-1;;;1325:69:0;;5630:2:1;1325:69:0;;;5612:21:1;5669:2;5649:18;;;5642:30;5708:29;5688:18;;;5681:57;5755:18;;1325:69:0;;;;;;;;1422:9;1404;1414:4;1404:15;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:27;;-1:-1:-1;;;;;;1404:27:0;-1:-1:-1;;;;;1404:27:0;;;;;;;;;;;1455:13;;-1:-1:-1;1441:28:0;;;-1:-1:-1;1441:28:0;;;;:35;1472:4;1441:28;:35;:::i;:::-;-1:-1:-1;1486:13:0;:15;;;:13;:15;;;:::i;:::-;;;;;;1070:438;;:::o;1514:362::-;1639:10;:56;1677:9;1687:5;1660:33;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1650:44;;;;;;1639:56;;;;;;;;;;;:66;;;1709:1;1639:71;1631:80;;;;;;1786:83;;;;;;;;1816:9;1786:83;;;;1841:12;1786:83;;;;1862:5;1786:83;;;1721:10;:50;1759:9;1742:27;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1742:27:0;;;;;;;;;1732:38;;1742:27;1732:38;;;;1721:50;;;;;;;;;;;;-1:-1:-1;1721:50:0;:148;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;1514:362:0:o;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;199:250::-;284:1;294:113;308:6;305:1;302:13;294:113;;;384:11;;;378:18;365:11;;;358:39;330:2;323:10;294:113;;;-1:-1:-1;;441:1:1;423:16;;416:27;199:250::o;454:396::-;603:2;592:9;585:21;566:4;635:6;629:13;678:6;673:2;662:9;658:18;651:34;694:79;766:6;761:2;750:9;746:18;741:2;733:6;729:15;694:79;:::i;:::-;834:2;813:15;-1:-1:-1;;809:29:1;794:45;;;;841:2;790:54;;454:396;-1:-1:-1;;454:396:1:o;855:127::-;916:10;911:3;907:20;904:1;897:31;947:4;944:1;937:15;971:4;968:1;961:15;987:719;1030:5;1083:3;1076:4;1068:6;1064:17;1060:27;1050:55;;1101:1;1098;1091:12;1050:55;1137:6;1124:20;1163:18;1200:2;1196;1193:10;1190:36;;;1206:18;;:::i;:::-;1281:2;1275:9;1249:2;1335:13;;-1:-1:-1;;1331:22:1;;;1355:2;1327:31;1323:40;1311:53;;;1379:18;;;1399:22;;;1376:46;1373:72;;;1425:18;;:::i;:::-;1465:10;1461:2;1454:22;1500:2;1492:6;1485:18;1546:3;1539:4;1534:2;1526:6;1522:15;1518:26;1515:35;1512:55;;;1563:1;1560;1553:12;1512:55;1627:2;1620:4;1612:6;1608:17;1601:4;1593:6;1589:17;1576:54;1674:1;1667:4;1662:2;1654:6;1650:15;1646:26;1639:37;1694:6;1685:15;;;;;;987:719;;;;:::o;1711:389::-;1788:6;1796;1849:2;1837:9;1828:7;1824:23;1820:32;1817:52;;;1865:1;1862;1855:12;1817:52;1905:9;1892:23;1938:18;1930:6;1927:30;1924:50;;;1970:1;1967;1960:12;1924:50;1993;2035:7;2026:6;2015:9;2011:22;1993:50;:::i;:::-;1983:60;2090:2;2075:18;;;;2062:32;;-1:-1:-1;;;;1711:389:1:o;2427:496::-;2505:6;2513;2566:2;2554:9;2545:7;2541:23;2537:32;2534:52;;;2582:1;2579;2572:12;2534:52;2622:9;2609:23;2655:18;2647:6;2644:30;2641:50;;;2687:1;2684;2677:12;2641:50;2710;2752:7;2743:6;2732:9;2728:22;2710:50;:::i;:::-;2700:60;-1:-1:-1;;2810:2:1;2795:18;;2782:32;-1:-1:-1;;;;;2843:31:1;;2833:42;;2823:70;;2889:1;2886;2879:12;2823:70;2912:5;2902:15;;;2427:496;;;;;:::o;3295:322::-;3364:6;3417:2;3405:9;3396:7;3392:23;3388:32;3385:52;;;3433:1;3430;3423:12;3385:52;3473:9;3460:23;3506:18;3498:6;3495:30;3492:50;;;3538:1;3535;3528:12;3492:50;3561;3603:7;3594:6;3583:9;3579:22;3561:50;:::i;:::-;3551:60;3295:322;-1:-1:-1;;;;3295:322:1:o;3830:526::-;3925:6;3933;3941;3949;4002:3;3990:9;3981:7;3977:23;3973:33;3970:53;;;4019:1;4016;4009:12;3970:53;4059:9;4046:23;4092:18;4084:6;4081:30;4078:50;;;4124:1;4121;4114:12;4078:50;4147;4189:7;4180:6;4169:9;4165:22;4147:50;:::i;:::-;4137:60;4244:2;4229:18;;4216:32;;-1:-1:-1;4295:2:1;4280:18;;4267:32;;4346:2;4331:18;4318:32;;-1:-1:-1;3830:526:1;-1:-1:-1;;;;3830:526:1:o;4361:380::-;4440:1;4436:12;;;;4483;;;4504:61;;4558:4;4550:6;4546:17;4536:27;;4504:61;4611:2;4603:6;4600:14;4580:18;4577:38;4574:161;;4657:10;4652:3;4648:20;4645:1;4638:31;4692:4;4689:1;4682:15;4720:4;4717:1;4710:15;4574:161;;4361:380;;;:::o;4746:383::-;4903:3;4941:6;4935:13;4957:66;5016:6;5011:3;5004:4;4996:6;4992:17;4957:66;:::i;:::-;5045:16;;;;5070:21;;;-1:-1:-1;5118:4:1;5107:16;;4746:383;-1:-1:-1;4746:383:1:o;5134:289::-;5265:3;5303:6;5297:13;5319:66;5378:6;5373:3;5366:4;5358:6;5354:17;5319:66;:::i;:::-;5401:16;;;;;5134:289;-1:-1:-1;;5134:289:1:o;5910:543::-;6012:2;6007:3;6004:11;6001:446;;;6048:1;6072:5;6069:1;6062:16;6116:4;6113:1;6103:18;6186:2;6174:10;6170:19;6167:1;6163:27;6157:4;6153:38;6222:4;6210:10;6207:20;6204:47;;;-1:-1:-1;6245:4:1;6204:47;6300:2;6295:3;6291:12;6288:1;6284:20;6278:4;6274:31;6264:41;;6355:82;6373:2;6366:5;6363:13;6355:82;;;6418:17;;;6399:1;6388:13;6355:82;;;6359:3;;;6001:446;5910:543;;;:::o;6629:1345::-;6755:3;6749:10;6782:18;6774:6;6771:30;6768:56;;;6804:18;;:::i;:::-;6833:97;6923:6;6883:38;6915:4;6909:11;6883:38;:::i;:::-;6877:4;6833:97;:::i;:::-;6985:4;;7042:2;7031:14;;7059:1;7054:663;;;;7761:1;7778:6;7775:89;;;-1:-1:-1;7830:19:1;;;7824:26;7775:89;-1:-1:-1;;6586:1:1;6582:11;;;6578:24;6574:29;6564:40;6610:1;6606:11;;;6561:57;7877:81;;7024:944;;7054:663;5857:1;5850:14;;;5894:4;5881:18;;-1:-1:-1;;7090:20:1;;;7208:236;7222:7;7219:1;7216:14;7208:236;;;7311:19;;;7305:26;7290:42;;7403:27;;;;7371:1;7359:14;;;;7238:19;;7208:236;;;7212:3;7472:6;7463:7;7460:19;7457:201;;;7533:19;;;7527:26;-1:-1:-1;;7616:1:1;7612:14;;;7628:3;7608:24;7604:37;7600:42;7585:58;7570:74;;7457:201;-1:-1:-1;;;;;7704:1:1;7688:14;;;7684:22;7671:36;;-1:-1:-1;6629:1345:1:o;7979:232::-;8018:3;8039:17;;;8036:140;;8098:10;8093:3;8089:20;8086:1;8079:31;8133:4;8130:1;8123:15;8161:4;8158:1;8151:15;8036:140;-1:-1:-1;8203:1:1;8192:13;;7979:232::o","linkReferences":{}},"methodIdentifiers":{"anvil_test(bytes32)":"7fafbbdd","contractCount()":"8736381a","contractNames(uint256)":"3ca6bb92","contracts(string)":"8c5b8385","get_test_values(string,int256)":"6842109e","registerContract(string,address)":"7f3c2c28","store_test(string,int256,uint256,uint256)":"acd5baa2"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"anvil_test\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"block_number\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"index\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"contractNames\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"contracts\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"test_name\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"index\",\"type\":\"int256\"}],\"name\":\"get_test_values\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_contract\",\"type\":\"address\"}],\"name\":\"registerContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"test_name\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"index\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"block_number\",\"type\":\"uint256\"}],\"name\":\"store_test\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/ContractsRegistry.sol\":\"ContractsRegistry\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-middleware/lib/openzeppelin-contracts/\",\":ds-test/=lib/eigenlayer-middleware/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/eigenlayer-middleware/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/contracts/\"]},\"sources\":{\"src/ContractsRegistry.sol\":{\"keccak256\":\"0xe28adb8998555f88d28d053532c0249345cac383e27a30536ebae7976bbbaec6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbcaff8b40d066550d05ee22c78229329d702ae0eab1b199c328f8c4e4beaeb\",\"dweb:/ipfs/Qmdn17PfqDGyap2G2mVc1q41TpbrsxtEffEqu9AUGFSeRq\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"anvil_test","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"uint256","name":"block_number","type":"uint256"},{"internalType":"int256","name":"index","type":"int256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"contractCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"contractNames","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function","name":"contracts","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"test_name","type":"string"},{"internalType":"int256","name":"index","type":"int256"}],"stateMutability":"view","type":"function","name":"get_test_values","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"_contract","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerContract"},{"inputs":[{"internalType":"string","name":"test_name","type":"string"},{"internalType":"int256","name":"index","type":"int256"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"uint256","name":"block_number","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"store_test"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-middleware/lib/openzeppelin-contracts/","ds-test/=lib/eigenlayer-middleware/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/eigenlayer-middleware/lib/openzeppelin-contracts/","openzeppelin/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/ContractsRegistry.sol":"ContractsRegistry"},"evmVersion":"paris","libraries":{}},"sources":{"src/ContractsRegistry.sol":{"keccak256":"0xe28adb8998555f88d28d053532c0249345cac383e27a30536ebae7976bbbaec6","urls":["bzz-raw://4dbcaff8b40d066550d05ee22c78229329d702ae0eab1b199c328f8c4e4beaeb","dweb:/ipfs/Qmdn17PfqDGyap2G2mVc1q41TpbrsxtEffEqu9AUGFSeRq"],"license":"MIT"}},"version":1},"id":0} \ No newline at end of file diff --git a/crates/utils/json/DelegationManager.json b/crates/utils/json/DelegationManager.json deleted file mode 100644 index adda62a9..00000000 --- a/crates/utils/json/DelegationManager.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_strategyManager","type":"address","internalType":"contract IStrategyManager"},{"name":"_slasher","type":"address","internalType":"contract ISlasher"},{"name":"_eigenPodManager","type":"address","internalType":"contract IEigenPodManager"}],"stateMutability":"nonpayable"},{"type":"function","name":"DELEGATION_APPROVAL_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DOMAIN_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MAX_STAKER_OPT_OUT_WINDOW_BLOCKS","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_WITHDRAWAL_DELAY_BLOCKS","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"STAKER_DELEGATION_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"beaconChainETHStrategy","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IStrategy"}],"stateMutability":"view"},{"type":"function","name":"calculateCurrentStakerDelegationDigestHash","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"},{"name":"expiry","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"calculateDelegationApprovalDigestHash","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"},{"name":"_delegationApprover","type":"address","internalType":"address"},{"name":"approverSalt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"calculateStakerDelegationDigestHash","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"_stakerNonce","type":"uint256","internalType":"uint256"},{"name":"operator","type":"address","internalType":"address"},{"name":"expiry","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"calculateWithdrawalRoot","inputs":[{"name":"withdrawal","type":"tuple","internalType":"struct IDelegationManager.Withdrawal","components":[{"name":"staker","type":"address","internalType":"address"},{"name":"delegatedTo","type":"address","internalType":"address"},{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"startBlock","type":"uint32","internalType":"uint32"},{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"}]}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"completeQueuedWithdrawal","inputs":[{"name":"withdrawal","type":"tuple","internalType":"struct IDelegationManager.Withdrawal","components":[{"name":"staker","type":"address","internalType":"address"},{"name":"delegatedTo","type":"address","internalType":"address"},{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"startBlock","type":"uint32","internalType":"uint32"},{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"}]},{"name":"tokens","type":"address[]","internalType":"contract IERC20[]"},{"name":"middlewareTimesIndex","type":"uint256","internalType":"uint256"},{"name":"receiveAsTokens","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"completeQueuedWithdrawals","inputs":[{"name":"withdrawals","type":"tuple[]","internalType":"struct IDelegationManager.Withdrawal[]","components":[{"name":"staker","type":"address","internalType":"address"},{"name":"delegatedTo","type":"address","internalType":"address"},{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"startBlock","type":"uint32","internalType":"uint32"},{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"}]},{"name":"tokens","type":"address[][]","internalType":"contract IERC20[][]"},{"name":"middlewareTimesIndexes","type":"uint256[]","internalType":"uint256[]"},{"name":"receiveAsTokens","type":"bool[]","internalType":"bool[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cumulativeWithdrawalsQueued","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decreaseDelegatedShares","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegateTo","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approverSignatureAndExpiry","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"expiry","type":"uint256","internalType":"uint256"}]},{"name":"approverSalt","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegateToBySignature","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"},{"name":"stakerSignatureAndExpiry","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"expiry","type":"uint256","internalType":"uint256"}]},{"name":"approverSignatureAndExpiry","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"expiry","type":"uint256","internalType":"uint256"}]},{"name":"approverSalt","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegatedTo","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"delegationApprover","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"delegationApproverSaltIsSpent","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"domainSeparator","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"earningsReceiver","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"eigenPodManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IEigenPodManager"}],"stateMutability":"view"},{"type":"function","name":"getDelegatableShares","inputs":[{"name":"staker","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"contract IStrategy[]"},{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorShares","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getWithdrawalDelay","inputs":[{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"increaseDelegatedShares","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","inputs":[{"name":"initialOwner","type":"address","internalType":"address"},{"name":"_pauserRegistry","type":"address","internalType":"contract IPauserRegistry"},{"name":"initialPausedStatus","type":"uint256","internalType":"uint256"},{"name":"_minWithdrawalDelayBlocks","type":"uint256","internalType":"uint256"},{"name":"_strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"_withdrawalDelayBlocks","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isDelegated","inputs":[{"name":"staker","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"migrateQueuedWithdrawals","inputs":[{"name":"withdrawalsToMigrate","type":"tuple[]","internalType":"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal[]","components":[{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"},{"name":"staker","type":"address","internalType":"address"},{"name":"withdrawerAndNonce","type":"tuple","internalType":"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce","components":[{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint96","internalType":"uint96"}]},{"name":"withdrawalStartBlock","type":"uint32","internalType":"uint32"},{"name":"delegatedAddress","type":"address","internalType":"address"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"minWithdrawalDelayBlocks","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"modifyOperatorDetails","inputs":[{"name":"newOperatorDetails","type":"tuple","internalType":"struct IDelegationManager.OperatorDetails","components":[{"name":"earningsReceiver","type":"address","internalType":"address"},{"name":"delegationApprover","type":"address","internalType":"address"},{"name":"stakerOptOutWindowBlocks","type":"uint32","internalType":"uint32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operatorDetails","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IDelegationManager.OperatorDetails","components":[{"name":"earningsReceiver","type":"address","internalType":"address"},{"name":"delegationApprover","type":"address","internalType":"address"},{"name":"stakerOptOutWindowBlocks","type":"uint32","internalType":"uint32"}]}],"stateMutability":"view"},{"type":"function","name":"operatorShares","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"contract IStrategy"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[{"name":"newPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pauseAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[{"name":"index","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pauserRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPauserRegistry"}],"stateMutability":"view"},{"type":"function","name":"pendingWithdrawals","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"queueWithdrawals","inputs":[{"name":"queuedWithdrawalParams","type":"tuple[]","internalType":"struct IDelegationManager.QueuedWithdrawalParams[]","components":[{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"},{"name":"withdrawer","type":"address","internalType":"address"}]}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"registerAsOperator","inputs":[{"name":"registeringOperatorDetails","type":"tuple","internalType":"struct IDelegationManager.OperatorDetails","components":[{"name":"earningsReceiver","type":"address","internalType":"address"},{"name":"delegationApprover","type":"address","internalType":"address"},{"name":"stakerOptOutWindowBlocks","type":"uint32","internalType":"uint32"}]},{"name":"metadataURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinWithdrawalDelayBlocks","inputs":[{"name":"newMinWithdrawalDelayBlocks","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPauserRegistry","inputs":[{"name":"newPauserRegistry","type":"address","internalType":"contract IPauserRegistry"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStrategyWithdrawalDelayBlocks","inputs":[{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"withdrawalDelayBlocks","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slasher","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ISlasher"}],"stateMutability":"view"},{"type":"function","name":"stakerNonce","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakerOptOutWindowBlocks","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"strategyManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IStrategyManager"}],"stateMutability":"view"},{"type":"function","name":"strategyWithdrawalDelayBlocks","inputs":[{"name":"","type":"address","internalType":"contract IStrategy"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"undelegate","inputs":[{"name":"staker","type":"address","internalType":"address"}],"outputs":[{"name":"withdrawalRoots","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","inputs":[{"name":"newPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorMetadataURI","inputs":[{"name":"metadataURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"MinWithdrawalDelayBlocksSet","inputs":[{"name":"previousValue","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newValue","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorDetailsModified","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"newOperatorDetails","type":"tuple","indexed":false,"internalType":"struct IDelegationManager.OperatorDetails","components":[{"name":"earningsReceiver","type":"address","internalType":"address"},{"name":"delegationApprover","type":"address","internalType":"address"},{"name":"stakerOptOutWindowBlocks","type":"uint32","internalType":"uint32"}]}],"anonymous":false},{"type":"event","name":"OperatorMetadataURIUpdated","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"metadataURI","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"operatorDetails","type":"tuple","indexed":false,"internalType":"struct IDelegationManager.OperatorDetails","components":[{"name":"earningsReceiver","type":"address","internalType":"address"},{"name":"delegationApprover","type":"address","internalType":"address"},{"name":"stakerOptOutWindowBlocks","type":"uint32","internalType":"uint32"}]}],"anonymous":false},{"type":"event","name":"OperatorSharesDecreased","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"staker","type":"address","indexed":false,"internalType":"address"},{"name":"strategy","type":"address","indexed":false,"internalType":"contract IStrategy"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorSharesIncreased","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"staker","type":"address","indexed":false,"internalType":"address"},{"name":"strategy","type":"address","indexed":false,"internalType":"contract IStrategy"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PauserRegistrySet","inputs":[{"name":"pauserRegistry","type":"address","indexed":false,"internalType":"contract IPauserRegistry"},{"name":"newPauserRegistry","type":"address","indexed":false,"internalType":"contract IPauserRegistry"}],"anonymous":false},{"type":"event","name":"StakerDelegated","inputs":[{"name":"staker","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StakerForceUndelegated","inputs":[{"name":"staker","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StakerUndelegated","inputs":[{"name":"staker","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StrategyWithdrawalDelayBlocksSet","inputs":[{"name":"strategy","type":"address","indexed":false,"internalType":"contract IStrategy"},{"name":"previousValue","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newValue","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WithdrawalCompleted","inputs":[{"name":"withdrawalRoot","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"WithdrawalMigrated","inputs":[{"name":"oldWithdrawalRoot","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"newWithdrawalRoot","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"WithdrawalQueued","inputs":[{"name":"withdrawalRoot","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"withdrawal","type":"tuple","indexed":false,"internalType":"struct IDelegationManager.Withdrawal","components":[{"name":"staker","type":"address","internalType":"address"},{"name":"delegatedTo","type":"address","internalType":"address"},{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"startBlock","type":"uint32","internalType":"uint32"},{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"}]}],"anonymous":false}],"bytecode":{"object":"0x6101006040523480156200001257600080fd5b506040516200618138038062006181833981016040819052620000359162000140565b6001600160a01b0380841660805280821660c052821660a0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e051615f516200023060003960006127790152600081816105e7015281816110ae0152818161142a01528181611e0d01528181612ad2015281816141390152614625015260006107d701526000818161052f0152818161107c015281816113f80152818161172001528181611ea101528181612b9f01528181612d220152818161425f01526146cb0152615f516000f3fe608060405234801561001057600080fd5b50600436106103785760003560e01c806360d7faed116101d3578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b01461097d578063f2fde38b14610990578063f698da25146109a3578063fabc1cbc146109ab57600080fd5b8063cf80873e14610936578063da8be86414610957578063eea9064b1461096a57600080fd5b8063c488375a116100de578063c488375a14610853578063c5e480db14610873578063c94b511114610919578063ca661c041461092c57600080fd5b8063b7f06ebe146107f9578063bb45fef21461081c578063c448feb81461084a57600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461078457806399be81c81461079f578063a1788484146107b2578063b1344271146107d257600080fd5b8063886f1195146107405780638da5cb5b14610753578063900413471461076457600080fd5b80636d70f7ae116101ad5780636d70f7ae146106e7578063715018a6146106fa578063778e55f3146107025780637f5480711461072d57600080fd5b806360d7faed14610698578063635bbd10146106ab57806365da1264146106be57600080fd5b806329c77d4f116102ad5780634fc40b611161024b5780635ac86ab7116102255780635ac86ab71461062e5780635c975abb146106515780635cfe8d2c146106595780635f966f141461066c57600080fd5b80634fc40b6114610609578063595c6a6714610613578063597b36da1461061b57600080fd5b80633cdeb5e0116102875780633cdeb5e0146105695780633e28391d1461059857806343377382146105bb5780634665bcda146105e257600080fd5b806329c77d4f146104f7578063334043961461051757806339b70e381461052a57600080fd5b8063136439dd1161031a5780631bbce091116102f45780631bbce0911461049757806320606b70146104aa57806322bf40e4146104d157806328a573ae146104e457600080fd5b8063136439dd146104385780631522bf021461044b578063169283651461045e57600080fd5b80630dd8dd02116103565780630dd8dd02146103dd5780630f589e59146103fd57806310d67a2f14610412578063132d49671461042557600080fd5b80630449ca391461037d57806304a4f979146103a35780630b9f487a146103ca575b600080fd5b61039061038b366004614adb565b6109be565b6040519081526020015b60405180910390f35b6103907f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6103906103d8366004614b41565b610a43565b6103f06103eb366004614adb565b610b05565b60405161039a9190614b9c565b61041061040b366004614c39565b610e6e565b005b610410610420366004614c8c565b610fbe565b610410610433366004614cb0565b611071565b610410610446366004614cf1565b611128565b610410610459366004614d0a565b611267565b61039061046c366004614c8c565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b6103906104a5366004614cb0565b61127b565b6103907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6104106104df366004614d75565b6112a9565b6104106104f2366004614cb0565b6113ed565b610390610505366004614c8c565b609b6020526000908152604090205481565b610410610525366004614e1c565b61149d565b6105517f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161039a565b610551610577366004614c8c565b6001600160a01b039081166000908152609960205260409020600101541690565b6105ab6105a6366004614c8c565b6115da565b604051901515815260200161039a565b6103907f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b6105517f000000000000000000000000000000000000000000000000000000000000000081565b6103906213c68081565b6104106115fa565b61039061062936600461513b565b6116c1565b6105ab61063c366004615177565b606654600160ff9092169190911b9081161490565b606654610390565b6104106106673660046151ed565b6116f1565b61055161067a366004614c8c565b6001600160a01b039081166000908152609960205260409020541690565b6104106106a636600461534d565b61199c565b6104106106b9366004614cf1565b611a37565b6105516106cc366004614c8c565b609a602052600090815260409020546001600160a01b031681565b6105ab6106f5366004614c8c565b611a48565b610410611a68565b6103906107103660046153dc565b609860209081526000928352604080842090915290825290205481565b61041061073b3660046154bd565b611a7c565b606554610551906001600160a01b031681565b6033546001600160a01b0316610551565b61077761077236600461554d565b611b81565b60405161039a91906155d7565b61055173beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6104106107ad3660046155ea565b611c5b565b6103906107c0366004614c8c565b609f6020526000908152604090205481565b6105517f000000000000000000000000000000000000000000000000000000000000000081565b6105ab610807366004614cf1565b609e6020526000908152604090205460ff1681565b6105ab61082a36600461561f565b609c60209081526000928352604080842090915290825290205460ff1681565b610390609d5481565b610390610861366004614c8c565b60a16020526000908152604090205481565b6108e3610881366004614c8c565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff169082015260600161039a565b61039061092736600461564b565b611d2d565b61039062034bc081565b610949610944366004614c8c565b611de6565b60405161039a9291906156cc565b6103f0610965366004614c8c565b61219e565b6104106109783660046156f1565b612662565b61041061098b366004615749565b61266e565b61041061099e366004614c8c565b6126ff565b610390612775565b6104106109b9366004614cf1565b6127b3565b609d54600090815b83811015610a3b57600060a160008787858181106109e6576109e6615765565b90506020020160208101906109fb9190614c8c565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905082811115610a2a578092505b50610a3481615791565b90506109c6565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610ac1612775565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610b3a5760405162461bcd60e51b8152600401610b31906157ac565b60405180910390fd5b6000836001600160401b03811115610b5457610b54614ebe565b604051908082528060200260200182016040528015610b7d578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610e6357868682818110610bb857610bb8615765565b9050602002810190610bca91906157e3565b610bd8906020810190615803565b9050878783818110610bec57610bec615765565b9050602002810190610bfe91906157e3565b610c089080615803565b905014610c7d5760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610b31565b33878783818110610c9057610c90615765565b9050602002810190610ca291906157e3565b610cb3906060810190604001614c8c565b6001600160a01b031614610d2f5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610b31565b610e343383898985818110610d4657610d46615765565b9050602002810190610d5891906157e3565b610d69906060810190604001614c8c565b8a8a86818110610d7b57610d7b615765565b9050602002810190610d8d91906157e3565b610d979080615803565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610ddd57610ddd615765565b9050602002810190610def91906157e3565b610dfd906020810190615803565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061290f92505050565b838281518110610e4657610e46615765565b602090810291909101015280610e5b81615791565b915050610b9e565b509095945050505050565b336000908152609960205260409020546001600160a01b031615610f085760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a206f70657261746f722068617320616c72656164792072656769736064820152641d195c995960da1b608482015260a401610b31565b610f123384612ecf565b604080518082019091526060815260006020820152610f34338083600061316b565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610f6d919061584c565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610fb092919061589e565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611011573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103591906158cd565b6001600160a01b0316336001600160a01b0316146110655760405162461bcd60e51b8152600401610b31906158ea565b61106e81613510565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110d05750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6110ec5760405162461bcd60e51b8152600401610b3190615934565b6110f5836115da565b15611123576001600160a01b038084166000908152609a60205260409020541661112181858585613607565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015611170573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111949190615991565b6111b05760405162461bcd60e51b8152600401610b31906159ae565b606654818116146112295760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b31565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b61126f613682565b611121848484846136dc565b6001600160a01b0383166000908152609b60205260408120546112a085828686611d2d565b95945050505050565b600054610100900460ff16158080156112c95750600054600160ff909116105b806112e35750303b1580156112e3575060005460ff166001145b6113465760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b31565b6000805460ff191660011790558015611369576000805461ff0019166101001790555b6113738888613902565b61137b6139e8565b60975561138789613a7f565b61139086613ad1565b61139c858585856136dc565b80156113e2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061144c5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6114685760405162461bcd60e51b8152600401610b3190615934565b611471836115da565b15611123576001600160a01b038084166000908152609a60205260409020541661112181858585613bcb565b606654600290600490811614156114c65760405162461bcd60e51b8152600401610b31906157ac565b600260c95414156115195760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b31565b600260c95560005b888110156115c9576115b98a8a8381811061153e5761153e615765565b905060200281019061155091906159f6565b89898481811061156257611562615765565b90506020028101906115749190615803565b89898681811061158657611586615765565b9050602002013588888781811061159f5761159f615765565b90506020020160208101906115b49190615a0c565b613c46565b6115c281615791565b9050611521565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015611642573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116669190615991565b6116825760405162461bcd60e51b8152600401610b31906159ae565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000816040516020016116d49190615a9d565b604051602081830303815290604052805190602001209050919050565b60005b815181101561199857600082828151811061171157611711615765565b602002602001015190506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd293f6f846040518263ffffffff1660e01b815260040161176a9190615ab0565b60408051808303816000875af1158015611788573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ac9190615b5c565b91509150811561198a576040808401516001600160a01b0381166000908152609f602052918220805491928291906117e383615791565b919050555060006040518060e00160405280846001600160a01b031681526020018760a001516001600160a01b031681526020018760600151600001516001600160a01b03168152602001838152602001876080015163ffffffff16815260200187600001518152602001876020015181525090506000611863826116c1565b6000818152609e602052604090205490915060ff16156118f95760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e6d6967726174655175657565645760448201527f69746864726177616c733a207769746864726177616c20616c72656164792065606482015264786973747360d81b608482015260a401610b31565b6000818152609e602052604090819020805460ff19166001179055517f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f9906119449083908590615b8a565b60405180910390a160408051868152602081018390527fdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630910160405180910390a1505050505b8360010193505050506116f4565b5050565b606654600290600490811614156119c55760405162461bcd60e51b8152600401610b31906157ac565b600260c9541415611a185760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b31565b600260c955611a2a8686868686613c46565b5050600160c95550505050565b611a3f613682565b61106e81613ad1565b6001600160a01b0390811660009081526099602052604090205416151590565b611a70613682565b611a7a6000613a7f565b565b4283602001511015611b005760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610b31565b6000609b6000876001600160a01b03166001600160a01b031681526020019081526020016000205490506000611b3c8783888860200151611d2d565b6001600160a01b0388166000908152609b602052604090206001840190558551909150611b6c9088908390614430565b611b788787868661316b565b50505050505050565b6060600082516001600160401b03811115611b9e57611b9e614ebe565b604051908082528060200260200182016040528015611bc7578160200160208202803683370190505b50905060005b8351811015610a3b576001600160a01b03851660009081526098602052604081208551909190869084908110611c0557611c05615765565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611c4057611c40615765565b6020908102919091010152611c5481615791565b9050611bcd565b611c6433611a48565b611ce65760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610b31565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611d2192919061589e565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611da3612775565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611e56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7a9190615ba3565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611eea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f129190810190615c17565b9150915060008313611f2957909590945092505050565b606080835160001415611fe3576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611f9e57611f9e615765565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611fd257611fd2615765565b602002602001018181525050612191565b8351611ff0906001615cd1565b6001600160401b0381111561200757612007614ebe565b604051908082528060200260200182016040528015612030578160200160208202803683370190505b50915081516001600160401b0381111561204c5761204c614ebe565b604051908082528060200260200182016040528015612075578160200160208202803683370190505b50905060005b845181101561210f5784818151811061209657612096615765565b60200260200101518382815181106120b0576120b0615765565b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106120e2576120e2615765565b60200260200101518282815181106120fc576120fc615765565b602090810291909101015260010161207b565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600184516121349190615ce9565b8151811061214457612144615765565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600184516121749190615ce9565b8151811061218457612184615765565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811614156121ca5760405162461bcd60e51b8152600401610b31906157ac565b6121d3836115da565b6122535760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610b31565b61225c83611a48565b156122cf5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610b31565b6001600160a01b03831661234b5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610b31565b6001600160a01b038084166000818152609a60205260409020549091169033148061237e5750336001600160a01b038216145b806123a557506001600160a01b038181166000908152609960205260409020600101541633145b6124175760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610b31565b60008061242386611de6565b9092509050336001600160a01b0387161461247957826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b031916905581516124fb576040805160008152602081019091529450612659565b81516001600160401b0381111561251457612514614ebe565b60405190808252806020026020018201604052801561253d578160200160208202803683370190505b50945060005b8251811015612657576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106125a3576125a3615765565b6020026020010151826000815181106125be576125be615765565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106125f0576125f0615765565b60200260200101518160008151811061260b5761260b615765565b60200260200101818152505061262489878b858561290f565b88848151811061263657612636615765565b6020026020010181815250505050808061264f90615791565b915050612543565b505b50505050919050565b6111233384848461316b565b61267733611a48565b6126f55760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610b31565b61106e3382612ecf565b612707613682565b6001600160a01b03811661276c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b31565b61106e81613a7f565b60007f00000000000000000000000000000000000000000000000000000000000000004614156127a6575060975490565b6127ae6139e8565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282a91906158cd565b6001600160a01b0316336001600160a01b03161461285a5760405162461bcd60e51b8152600401610b31906158ea565b6066541981196066541916146128d85760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b31565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161125c565b60006001600160a01b0386166129a65760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610b31565b8251612a305760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610b31565b60005b8351811015612ddd576001600160a01b03861615612a8957612a898688868481518110612a6257612a62615765565b6020026020010151868581518110612a7c57612a7c615765565b6020026020010151613607565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612ab957612ab9615765565b60200260200101516001600160a01b03161415612b82577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612b1257612b12615765565b60200260200101516040518363ffffffff1660e01b8152600401612b4b9291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612b6557600080fd5b505af1158015612b79573d6000803e3d6000fd5b50505050612dd5565b846001600160a01b0316876001600160a01b03161480612c5457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612bde57612bde615765565b60200260200101516040518263ffffffff1660e01b8152600401612c1191906001600160a01b0391909116815260200190565b602060405180830381865afa158015612c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c529190615991565b155b612d205760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610b31565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612d6257612d62615765565b6020026020010151868581518110612d7c57612d7c615765565b60200260200101516040518463ffffffff1660e01b8152600401612da293929190615d00565b600060405180830381600087803b158015612dbc57600080fd5b505af1158015612dd0573d6000803e3d6000fd5b505050505b600101612a33565b506001600160a01b0386166000908152609f60205260408120805491829190612e0583615791565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612e6d826116c1565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612ebb9083908590615b8a565b60405180910390a198975050505050505050565b6000612ede6020830183614c8c565b6001600160a01b03161415612f785760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a2063616e6e6f742073657420606561726e696e677352656365696064820152737665726020746f207a65726f206164647265737360601b608482015260a401610b31565b6213c680612f8c6060830160408401615d24565b63ffffffff1611156130415760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610b31565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff169061307d9060608401908401615d24565b63ffffffff1610156131135760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610b31565b6001600160a01b038216600090815260996020526040902081906131378282615d61565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611d2190849061584c565b606654600090600190811614156131945760405162461bcd60e51b8152600401610b31906157ac565b61319d856115da565b1561321a5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2073746160448201527f6b657220697320616c7265616479206163746976656c792064656c65676174656064820152601960fa1b608482015260a401610b31565b61322384611a48565b6132a35760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a206f706560448201527f7261746f72206973206e6f74207265676973746572656420696e20456967656e6064820152642630bcb2b960d91b608482015260a401610b31565b6001600160a01b038085166000908152609960205260409020600101541680158015906132d95750336001600160a01b03821614155b80156132ee5750336001600160a01b03861614155b1561345b57428460200151101561336d5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610b31565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156134075760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610b31565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff19166001179055850151613448908890889085908890610a43565b905061345982828760000151614430565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a36000806134ba88611de6565b9150915060005b82518110156113e257613508888a8584815181106134e1576134e1615765565b60200260200101518585815181106134fb576134fb615765565b6020026020010151613bcb565b6001016134c1565b6001600160a01b03811661359e5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b31565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061363e908490615ce9565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610fb093929190615d00565b6033546001600160a01b03163314611a7a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b31565b8281146137645760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610b31565b8260005b818110156138fa57600086868381811061378457613784615765565b90506020020160208101906137999190614c8c565b6001600160a01b038116600090815260a160205260408120549192508686858181106137c7576137c7615765565b90506020020135905062034bc081111561388b5760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610b31565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a1505050806138f390615791565b9050613768565b505050505050565b6065546001600160a01b031615801561392357506001600160a01b03821615155b6139a55760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b31565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261199882613510565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc0811115613b8a5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610b31565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613c02908490615cd1565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610fb093929190615d00565b6000613c5461062987615dc4565b6000818152609e602052604090205490915060ff16613cd55760405162461bcd60e51b81526020600482015260436024820152600080516020615efc83398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610b31565b609d544390613cea60a0890160808a01615d24565b63ffffffff16613cfa9190615cd1565b1115613d825760405162461bcd60e51b815260206004820152605f6024820152600080516020615efc83398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610b31565b613d926060870160408801614c8c565b6001600160a01b0316336001600160a01b031614613e1f5760405162461bcd60e51b81526020600482015260506024820152600080516020615efc83398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610b31565b8115613ea157613e3260a0870187615803565b85149050613ea15760405162461bcd60e51b81526020600482015260426024820152600080516020615efc83398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610b31565b6000818152609e60205260409020805460ff1916905581156140065760005b613ecd60a0880188615803565b9050811015614000574360a16000613ee860a08b018b615803565b85818110613ef857613ef8615765565b9050602002016020810190613f0d9190614c8c565b6001600160a01b03168152602081019190915260400160002054613f3760a08a0160808b01615d24565b63ffffffff16613f479190615cd1565b1115613f655760405162461bcd60e51b8152600401610b3190615dd6565b613ff8613f756020890189614c8c565b33613f8360a08b018b615803565b85818110613f9357613f93615765565b9050602002016020810190613fa89190614c8c565b613fb560c08c018c615803565b86818110613fc557613fc5615765565b905060200201358a8a87818110613fde57613fde615765565b9050602002016020810190613ff39190614c8c565b6145ea565b600101613ec0565b506143f5565b336000908152609a60205260408120546001600160a01b0316905b61402e60a0890189615803565b90508110156143f2574360a1600061404960a08c018c615803565b8581811061405957614059615765565b905060200201602081019061406e9190614c8c565b6001600160a01b0316815260208101919091526040016000205461409860a08b0160808c01615d24565b63ffffffff166140a89190615cd1565b11156140c65760405162461bcd60e51b8152600401610b3190615dd6565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06140e860a08a018a615803565b838181106140f8576140f8615765565b905060200201602081019061410d9190614c8c565b6001600160a01b0316141561425d57600061412b60208a018a614c8c565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c8361416c60c08e018e615803565b8781811061417c5761417c615765565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af11580156141d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141f49190615ba3565b6001600160a01b038084166000908152609a602052604090205491925016801561425557614255818461422a60a08f018f615803565b8881811061423a5761423a615765565b905060200201602081019061424f9190614c8c565b85613bcb565b5050506143ea565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea13389898581811061429f5761429f615765565b90506020020160208101906142b49190614c8c565b6142c160a08d018d615803565b868181106142d1576142d1615765565b90506020020160208101906142e69190614c8c565b6142f360c08e018e615803565b8781811061430357614303615765565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b15801561436357600080fd5b505af1158015614377573d6000803e3d6000fd5b505050506001600160a01b038216156143ea576143ea823361439c60a08c018c615803565b858181106143ac576143ac615765565b90506020020160208101906143c19190614c8c565b6143ce60c08d018d615803565b868181106143de576143de615765565b90506020020135613bcb565b600101614021565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b1561454a57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906144709086908690600401615e5e565b602060405180830381865afa15801561448d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144b19190615ebb565b6001600160e01b031916146111235760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610b31565b826001600160a01b031661455e838361472a565b6001600160a01b0316146111235760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610b31565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156146955760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b13009061465e90889088908790600401615d00565b600060405180830381600087803b15801561467857600080fd5b505af115801561468c573d6000803e3d6000fd5b50505050614723565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561470f57600080fd5b505af11580156113e2573d6000803e3d6000fd5b5050505050565b60008060006147398585614746565b91509150610a3b816147b6565b60008082516041141561477d5760208301516040840151606085015160001a61477187828585614971565b945094505050506147af565b8251604014156147a7576020830151604084015161479c868383614a5e565b9350935050506147af565b506000905060025b9250929050565b60008160048111156147ca576147ca615ee5565b14156147d35750565b60018160048111156147e7576147e7615ee5565b14156148355760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b31565b600281600481111561484957614849615ee5565b14156148975760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b31565b60038160048111156148ab576148ab615ee5565b14156149045760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b31565b600481600481111561491857614918615ee5565b141561106e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b31565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156149a85750600090506003614a55565b8460ff16601b141580156149c057508460ff16601c14155b156149d15750600090506004614a55565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614a25573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614a4e57600060019250925050614a55565b9150600090505b94509492505050565b6000806001600160ff1b03831681614a7b60ff86901c601b615cd1565b9050614a8987828885614971565b935093505050935093915050565b60008083601f840112614aa957600080fd5b5081356001600160401b03811115614ac057600080fd5b6020830191508360208260051b85010111156147af57600080fd5b60008060208385031215614aee57600080fd5b82356001600160401b03811115614b0457600080fd5b614b1085828601614a97565b90969095509350505050565b6001600160a01b038116811461106e57600080fd5b8035614b3c81614b1c565b919050565b600080600080600060a08688031215614b5957600080fd5b8535614b6481614b1c565b94506020860135614b7481614b1c565b93506040860135614b8481614b1c565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b81811015614bd457835183529284019291840191600101614bb8565b50909695505050505050565b600060608284031215614bf257600080fd5b50919050565b60008083601f840112614c0a57600080fd5b5081356001600160401b03811115614c2157600080fd5b6020830191508360208285010111156147af57600080fd5b600080600060808486031215614c4e57600080fd5b614c588585614be0565b925060608401356001600160401b03811115614c7357600080fd5b614c7f86828701614bf8565b9497909650939450505050565b600060208284031215614c9e57600080fd5b8135614ca981614b1c565b9392505050565b600080600060608486031215614cc557600080fd5b8335614cd081614b1c565b92506020840135614ce081614b1c565b929592945050506040919091013590565b600060208284031215614d0357600080fd5b5035919050565b60008060008060408587031215614d2057600080fd5b84356001600160401b0380821115614d3757600080fd5b614d4388838901614a97565b90965094506020870135915080821115614d5c57600080fd5b50614d6987828801614a97565b95989497509550505050565b60008060008060008060008060c0898b031215614d9157600080fd5b8835614d9c81614b1c565b97506020890135614dac81614b1c565b9650604089013595506060890135945060808901356001600160401b0380821115614dd657600080fd5b614de28c838d01614a97565b909650945060a08b0135915080821115614dfb57600080fd5b50614e088b828c01614a97565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614e3857600080fd5b88356001600160401b0380821115614e4f57600080fd5b614e5b8c838d01614a97565b909a50985060208b0135915080821115614e7457600080fd5b614e808c838d01614a97565b909850965060408b0135915080821115614e9957600080fd5b614ea58c838d01614a97565b909650945060608b0135915080821115614dfb57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614ef657614ef6614ebe565b60405290565b604080519081016001600160401b0381118282101715614ef657614ef6614ebe565b60405160c081016001600160401b0381118282101715614ef657614ef6614ebe565b604051601f8201601f191681016001600160401b0381118282101715614f6857614f68614ebe565b604052919050565b63ffffffff8116811461106e57600080fd5b8035614b3c81614f70565b60006001600160401b03821115614fa657614fa6614ebe565b5060051b60200190565b600082601f830112614fc157600080fd5b81356020614fd6614fd183614f8d565b614f40565b82815260059290921b84018101918181019086841115614ff557600080fd5b8286015b8481101561501957803561500c81614b1c565b8352918301918301614ff9565b509695505050505050565b600082601f83011261503557600080fd5b81356020615045614fd183614f8d565b82815260059290921b8401810191818101908684111561506457600080fd5b8286015b848110156150195780358352918301918301615068565b600060e0828403121561509157600080fd5b615099614ed4565b90506150a482614b31565b81526150b260208301614b31565b60208201526150c360408301614b31565b6040820152606082013560608201526150de60808301614f82565b608082015260a08201356001600160401b03808211156150fd57600080fd5b61510985838601614fb0565b60a084015260c084013591508082111561512257600080fd5b5061512f84828501615024565b60c08301525092915050565b60006020828403121561514d57600080fd5b81356001600160401b0381111561516357600080fd5b61516f8482850161507f565b949350505050565b60006020828403121561518957600080fd5b813560ff81168114614ca957600080fd5b6000604082840312156151ac57600080fd5b6151b4614efc565b905081356151c181614b1c565b815260208201356bffffffffffffffffffffffff811681146151e257600080fd5b602082015292915050565b6000602080838503121561520057600080fd5b82356001600160401b038082111561521757600080fd5b818501915085601f83011261522b57600080fd5b8135615239614fd182614f8d565b81815260059190911b8301840190848101908883111561525857600080fd5b8585015b83811015615332578035858111156152745760008081fd5b860160e0818c03601f190181131561528c5760008081fd5b615294614f1e565b89830135888111156152a65760008081fd5b6152b48e8c83870101614fb0565b825250604080840135898111156152cb5760008081fd5b6152d98f8d83880101615024565b8c8401525060606152eb818601614b31565b82840152608091506152ff8f83870161519a565b9083015261530f60c08501614f82565b9082015261531e838301614b31565b60a08201528552505091860191860161525c565b5098975050505050505050565b801515811461106e57600080fd5b60008060008060006080868803121561536557600080fd5b85356001600160401b038082111561537c57600080fd5b9087019060e0828a03121561539057600080fd5b909550602087013590808211156153a657600080fd5b506153b388828901614a97565b9095509350506040860135915060608601356153ce8161533f565b809150509295509295909350565b600080604083850312156153ef57600080fd5b82356153fa81614b1c565b9150602083013561540a81614b1c565b809150509250929050565b60006040828403121561542757600080fd5b61542f614efc565b905081356001600160401b038082111561544857600080fd5b818401915084601f83011261545c57600080fd5b813560208282111561547057615470614ebe565b615482601f8301601f19168201614f40565b9250818352868183860101111561549857600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a086880312156154d557600080fd5b85356154e081614b1c565b945060208601356154f081614b1c565b935060408601356001600160401b038082111561550c57600080fd5b61551889838a01615415565b9450606088013591508082111561552e57600080fd5b5061553b88828901615415565b95989497509295608001359392505050565b6000806040838503121561556057600080fd5b823561556b81614b1c565b915060208301356001600160401b0381111561558657600080fd5b61559285828601614fb0565b9150509250929050565b600081518084526020808501945080840160005b838110156155cc578151875295820195908201906001016155b0565b509495945050505050565b602081526000614ca9602083018461559c565b600080602083850312156155fd57600080fd5b82356001600160401b0381111561561357600080fd5b614b1085828601614bf8565b6000806040838503121561563257600080fd5b823561563d81614b1c565b946020939093013593505050565b6000806000806080858703121561566157600080fd5b843561566c81614b1c565b935060208501359250604085013561568381614b1c565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156155cc5781516001600160a01b0316875295820195908201906001016156a7565b6040815260006156df6040830185615693565b82810360208401526112a0818561559c565b60008060006060848603121561570657600080fd5b833561571181614b1c565b925060208401356001600160401b0381111561572c57600080fd5b61573886828701615415565b925050604084013590509250925092565b60006060828403121561575b57600080fd5b614ca98383614be0565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156157a5576157a561577b565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e198336030181126157f957600080fd5b9190910192915050565b6000808335601e1984360301811261581a57600080fd5b8301803591506001600160401b0382111561583457600080fd5b6020019150600581901b36038213156147af57600080fd5b60608101823561585b81614b1c565b6001600160a01b03908116835260208401359061587782614b1c565b166020830152604083013561588b81614f70565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156158df57600080fd5b8151614ca981614b1c565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b6000602082840312156159a357600080fd5b8151614ca98161533f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126157f957600080fd5b600060208284031215615a1e57600080fd5b8135614ca98161533f565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a0850152615a8460e0850182615693565b905060c083015184820360c08601526112a0828261559c565b602081526000614ca96020830184615a29565b602081526000825160e06020840152615acd610100840182615693565b90506020840151601f19848303016040850152615aea828261559c565b915050604084015160018060a01b03808216606086015260608601519150808251166080860152506bffffffffffffffffffffffff60208201511660a0850152506080840151615b4260c085018263ffffffff169052565b5060a08401516001600160a01b03811660e0850152610a3b565b60008060408385031215615b6f57600080fd5b8251615b7a8161533f565b6020939093015192949293505050565b82815260406020820152600061516f6040830184615a29565b600060208284031215615bb557600080fd5b5051919050565b600082601f830112615bcd57600080fd5b81516020615bdd614fd183614f8d565b82815260059290921b84018101918181019086841115615bfc57600080fd5b8286015b848110156150195780518352918301918301615c00565b60008060408385031215615c2a57600080fd5b82516001600160401b0380821115615c4157600080fd5b818501915085601f830112615c5557600080fd5b81516020615c65614fd183614f8d565b82815260059290921b84018101918181019089841115615c8457600080fd5b948201945b83861015615cab578551615c9c81614b1c565b82529482019490820190615c89565b91880151919650909350505080821115615cc457600080fd5b5061559285828601615bbc565b60008219821115615ce457615ce461577b565b500190565b600082821015615cfb57615cfb61577b565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615d3657600080fd5b8135614ca981614f70565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615d6c81614b1c565b615d768183615d41565b50600181016020830135615d8981614b1c565b615d938183615d41565b506040830135615da281614f70565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6000615dd0368361507f565b92915050565b6020808252606e90820152600080516020615efc83398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b81811015615e9257858101830151858201606001528201615e76565b81811115615ea4576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215615ecd57600080fd5b81516001600160e01b031981168114614ca957600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a2646970667358221220ea834d3f9a93a4b7d7d8714a61ee4fcf19049bd6ef5f2d417e5c82ca80405edb64736f6c634300080c0033","sourceMap":"1137:48148:3:-:0;;;2745:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5655:34:4;;;;;5699;;;;;5743:18;;;;2939:22:3::1;:20;:22::i;:::-;-1:-1:-1::0;;2991:13:3::1;2971:33;::::0;-1:-1:-1;1137:48148:3;;5388:279:59;5456:13;;;;;;;5455:14;5447:66;;;;-1:-1:-1;;;5447:66:59;;1015:2:178;5447:66:59;;;997:21:178;1054:2;1034:18;;;1027:30;1093:34;1073:18;;;1066:62;-1:-1:-1;;;1144:18:178;;;1137:37;1191:19;;5447:66:59;;;;;;;;5527:12;;5542:15;5527:12;;;:30;5523:138;;;5573:12;:30;;-1:-1:-1;;5573:30:59;5588:15;5573:30;;;;;;5622:28;;1363:36:178;;;5622:28:59;;1351:2:178;1336:18;5622:28:59;;;;;;;5523:138;5388:279::o;14:149:178:-;-1:-1:-1;;;;;107:31:178;;97:42;;87:70;;153:1;150;143:12;87:70;14:149;:::o;168:640::-;323:6;331;339;392:2;380:9;371:7;367:23;363:32;360:52;;;408:1;405;398:12;360:52;440:9;434:16;459:49;502:5;459:49;:::i;:::-;577:2;562:18;;556:25;527:5;;-1:-1:-1;590:51:178;556:25;590:51;:::i;:::-;712:2;697:18;;691:25;660:7;;-1:-1:-1;725:51:178;691:25;725:51;:::i;:::-;795:7;785:17;;;168:640;;;;;:::o;1221:184::-;1137:48148:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106103785760003560e01c806360d7faed116101d3578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b01461097d578063f2fde38b14610990578063f698da25146109a3578063fabc1cbc146109ab57600080fd5b8063cf80873e14610936578063da8be86414610957578063eea9064b1461096a57600080fd5b8063c488375a116100de578063c488375a14610853578063c5e480db14610873578063c94b511114610919578063ca661c041461092c57600080fd5b8063b7f06ebe146107f9578063bb45fef21461081c578063c448feb81461084a57600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461078457806399be81c81461079f578063a1788484146107b2578063b1344271146107d257600080fd5b8063886f1195146107405780638da5cb5b14610753578063900413471461076457600080fd5b80636d70f7ae116101ad5780636d70f7ae146106e7578063715018a6146106fa578063778e55f3146107025780637f5480711461072d57600080fd5b806360d7faed14610698578063635bbd10146106ab57806365da1264146106be57600080fd5b806329c77d4f116102ad5780634fc40b611161024b5780635ac86ab7116102255780635ac86ab71461062e5780635c975abb146106515780635cfe8d2c146106595780635f966f141461066c57600080fd5b80634fc40b6114610609578063595c6a6714610613578063597b36da1461061b57600080fd5b80633cdeb5e0116102875780633cdeb5e0146105695780633e28391d1461059857806343377382146105bb5780634665bcda146105e257600080fd5b806329c77d4f146104f7578063334043961461051757806339b70e381461052a57600080fd5b8063136439dd1161031a5780631bbce091116102f45780631bbce0911461049757806320606b70146104aa57806322bf40e4146104d157806328a573ae146104e457600080fd5b8063136439dd146104385780631522bf021461044b578063169283651461045e57600080fd5b80630dd8dd02116103565780630dd8dd02146103dd5780630f589e59146103fd57806310d67a2f14610412578063132d49671461042557600080fd5b80630449ca391461037d57806304a4f979146103a35780630b9f487a146103ca575b600080fd5b61039061038b366004614adb565b6109be565b6040519081526020015b60405180910390f35b6103907f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6103906103d8366004614b41565b610a43565b6103f06103eb366004614adb565b610b05565b60405161039a9190614b9c565b61041061040b366004614c39565b610e6e565b005b610410610420366004614c8c565b610fbe565b610410610433366004614cb0565b611071565b610410610446366004614cf1565b611128565b610410610459366004614d0a565b611267565b61039061046c366004614c8c565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b6103906104a5366004614cb0565b61127b565b6103907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6104106104df366004614d75565b6112a9565b6104106104f2366004614cb0565b6113ed565b610390610505366004614c8c565b609b6020526000908152604090205481565b610410610525366004614e1c565b61149d565b6105517f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161039a565b610551610577366004614c8c565b6001600160a01b039081166000908152609960205260409020600101541690565b6105ab6105a6366004614c8c565b6115da565b604051901515815260200161039a565b6103907f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b6105517f000000000000000000000000000000000000000000000000000000000000000081565b6103906213c68081565b6104106115fa565b61039061062936600461513b565b6116c1565b6105ab61063c366004615177565b606654600160ff9092169190911b9081161490565b606654610390565b6104106106673660046151ed565b6116f1565b61055161067a366004614c8c565b6001600160a01b039081166000908152609960205260409020541690565b6104106106a636600461534d565b61199c565b6104106106b9366004614cf1565b611a37565b6105516106cc366004614c8c565b609a602052600090815260409020546001600160a01b031681565b6105ab6106f5366004614c8c565b611a48565b610410611a68565b6103906107103660046153dc565b609860209081526000928352604080842090915290825290205481565b61041061073b3660046154bd565b611a7c565b606554610551906001600160a01b031681565b6033546001600160a01b0316610551565b61077761077236600461554d565b611b81565b60405161039a91906155d7565b61055173beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6104106107ad3660046155ea565b611c5b565b6103906107c0366004614c8c565b609f6020526000908152604090205481565b6105517f000000000000000000000000000000000000000000000000000000000000000081565b6105ab610807366004614cf1565b609e6020526000908152604090205460ff1681565b6105ab61082a36600461561f565b609c60209081526000928352604080842090915290825290205460ff1681565b610390609d5481565b610390610861366004614c8c565b60a16020526000908152604090205481565b6108e3610881366004614c8c565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff169082015260600161039a565b61039061092736600461564b565b611d2d565b61039062034bc081565b610949610944366004614c8c565b611de6565b60405161039a9291906156cc565b6103f0610965366004614c8c565b61219e565b6104106109783660046156f1565b612662565b61041061098b366004615749565b61266e565b61041061099e366004614c8c565b6126ff565b610390612775565b6104106109b9366004614cf1565b6127b3565b609d54600090815b83811015610a3b57600060a160008787858181106109e6576109e6615765565b90506020020160208101906109fb9190614c8c565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905082811115610a2a578092505b50610a3481615791565b90506109c6565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610ac1612775565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610b3a5760405162461bcd60e51b8152600401610b31906157ac565b60405180910390fd5b6000836001600160401b03811115610b5457610b54614ebe565b604051908082528060200260200182016040528015610b7d578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610e6357868682818110610bb857610bb8615765565b9050602002810190610bca91906157e3565b610bd8906020810190615803565b9050878783818110610bec57610bec615765565b9050602002810190610bfe91906157e3565b610c089080615803565b905014610c7d5760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610b31565b33878783818110610c9057610c90615765565b9050602002810190610ca291906157e3565b610cb3906060810190604001614c8c565b6001600160a01b031614610d2f5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610b31565b610e343383898985818110610d4657610d46615765565b9050602002810190610d5891906157e3565b610d69906060810190604001614c8c565b8a8a86818110610d7b57610d7b615765565b9050602002810190610d8d91906157e3565b610d979080615803565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610ddd57610ddd615765565b9050602002810190610def91906157e3565b610dfd906020810190615803565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061290f92505050565b838281518110610e4657610e46615765565b602090810291909101015280610e5b81615791565b915050610b9e565b509095945050505050565b336000908152609960205260409020546001600160a01b031615610f085760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a206f70657261746f722068617320616c72656164792072656769736064820152641d195c995960da1b608482015260a401610b31565b610f123384612ecf565b604080518082019091526060815260006020820152610f34338083600061316b565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610f6d919061584c565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610fb092919061589e565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611011573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103591906158cd565b6001600160a01b0316336001600160a01b0316146110655760405162461bcd60e51b8152600401610b31906158ea565b61106e81613510565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110d05750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6110ec5760405162461bcd60e51b8152600401610b3190615934565b6110f5836115da565b15611123576001600160a01b038084166000908152609a60205260409020541661112181858585613607565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015611170573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111949190615991565b6111b05760405162461bcd60e51b8152600401610b31906159ae565b606654818116146112295760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b31565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b61126f613682565b611121848484846136dc565b6001600160a01b0383166000908152609b60205260408120546112a085828686611d2d565b95945050505050565b600054610100900460ff16158080156112c95750600054600160ff909116105b806112e35750303b1580156112e3575060005460ff166001145b6113465760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b31565b6000805460ff191660011790558015611369576000805461ff0019166101001790555b6113738888613902565b61137b6139e8565b60975561138789613a7f565b61139086613ad1565b61139c858585856136dc565b80156113e2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061144c5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6114685760405162461bcd60e51b8152600401610b3190615934565b611471836115da565b15611123576001600160a01b038084166000908152609a60205260409020541661112181858585613bcb565b606654600290600490811614156114c65760405162461bcd60e51b8152600401610b31906157ac565b600260c95414156115195760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b31565b600260c95560005b888110156115c9576115b98a8a8381811061153e5761153e615765565b905060200281019061155091906159f6565b89898481811061156257611562615765565b90506020028101906115749190615803565b89898681811061158657611586615765565b9050602002013588888781811061159f5761159f615765565b90506020020160208101906115b49190615a0c565b613c46565b6115c281615791565b9050611521565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015611642573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116669190615991565b6116825760405162461bcd60e51b8152600401610b31906159ae565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000816040516020016116d49190615a9d565b604051602081830303815290604052805190602001209050919050565b60005b815181101561199857600082828151811061171157611711615765565b602002602001015190506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd293f6f846040518263ffffffff1660e01b815260040161176a9190615ab0565b60408051808303816000875af1158015611788573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ac9190615b5c565b91509150811561198a576040808401516001600160a01b0381166000908152609f602052918220805491928291906117e383615791565b919050555060006040518060e00160405280846001600160a01b031681526020018760a001516001600160a01b031681526020018760600151600001516001600160a01b03168152602001838152602001876080015163ffffffff16815260200187600001518152602001876020015181525090506000611863826116c1565b6000818152609e602052604090205490915060ff16156118f95760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e6d6967726174655175657565645760448201527f69746864726177616c733a207769746864726177616c20616c72656164792065606482015264786973747360d81b608482015260a401610b31565b6000818152609e602052604090819020805460ff19166001179055517f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f9906119449083908590615b8a565b60405180910390a160408051868152602081018390527fdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630910160405180910390a1505050505b8360010193505050506116f4565b5050565b606654600290600490811614156119c55760405162461bcd60e51b8152600401610b31906157ac565b600260c9541415611a185760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b31565b600260c955611a2a8686868686613c46565b5050600160c95550505050565b611a3f613682565b61106e81613ad1565b6001600160a01b0390811660009081526099602052604090205416151590565b611a70613682565b611a7a6000613a7f565b565b4283602001511015611b005760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610b31565b6000609b6000876001600160a01b03166001600160a01b031681526020019081526020016000205490506000611b3c8783888860200151611d2d565b6001600160a01b0388166000908152609b602052604090206001840190558551909150611b6c9088908390614430565b611b788787868661316b565b50505050505050565b6060600082516001600160401b03811115611b9e57611b9e614ebe565b604051908082528060200260200182016040528015611bc7578160200160208202803683370190505b50905060005b8351811015610a3b576001600160a01b03851660009081526098602052604081208551909190869084908110611c0557611c05615765565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611c4057611c40615765565b6020908102919091010152611c5481615791565b9050611bcd565b611c6433611a48565b611ce65760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610b31565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611d2192919061589e565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611da3612775565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611e56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7a9190615ba3565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611eea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f129190810190615c17565b9150915060008313611f2957909590945092505050565b606080835160001415611fe3576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611f9e57611f9e615765565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611fd257611fd2615765565b602002602001018181525050612191565b8351611ff0906001615cd1565b6001600160401b0381111561200757612007614ebe565b604051908082528060200260200182016040528015612030578160200160208202803683370190505b50915081516001600160401b0381111561204c5761204c614ebe565b604051908082528060200260200182016040528015612075578160200160208202803683370190505b50905060005b845181101561210f5784818151811061209657612096615765565b60200260200101518382815181106120b0576120b0615765565b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106120e2576120e2615765565b60200260200101518282815181106120fc576120fc615765565b602090810291909101015260010161207b565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600184516121349190615ce9565b8151811061214457612144615765565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600184516121749190615ce9565b8151811061218457612184615765565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811614156121ca5760405162461bcd60e51b8152600401610b31906157ac565b6121d3836115da565b6122535760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610b31565b61225c83611a48565b156122cf5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610b31565b6001600160a01b03831661234b5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610b31565b6001600160a01b038084166000818152609a60205260409020549091169033148061237e5750336001600160a01b038216145b806123a557506001600160a01b038181166000908152609960205260409020600101541633145b6124175760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610b31565b60008061242386611de6565b9092509050336001600160a01b0387161461247957826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b031916905581516124fb576040805160008152602081019091529450612659565b81516001600160401b0381111561251457612514614ebe565b60405190808252806020026020018201604052801561253d578160200160208202803683370190505b50945060005b8251811015612657576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106125a3576125a3615765565b6020026020010151826000815181106125be576125be615765565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106125f0576125f0615765565b60200260200101518160008151811061260b5761260b615765565b60200260200101818152505061262489878b858561290f565b88848151811061263657612636615765565b6020026020010181815250505050808061264f90615791565b915050612543565b505b50505050919050565b6111233384848461316b565b61267733611a48565b6126f55760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610b31565b61106e3382612ecf565b612707613682565b6001600160a01b03811661276c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b31565b61106e81613a7f565b60007f00000000000000000000000000000000000000000000000000000000000000004614156127a6575060975490565b6127ae6139e8565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282a91906158cd565b6001600160a01b0316336001600160a01b03161461285a5760405162461bcd60e51b8152600401610b31906158ea565b6066541981196066541916146128d85760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b31565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161125c565b60006001600160a01b0386166129a65760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610b31565b8251612a305760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610b31565b60005b8351811015612ddd576001600160a01b03861615612a8957612a898688868481518110612a6257612a62615765565b6020026020010151868581518110612a7c57612a7c615765565b6020026020010151613607565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612ab957612ab9615765565b60200260200101516001600160a01b03161415612b82577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612b1257612b12615765565b60200260200101516040518363ffffffff1660e01b8152600401612b4b9291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612b6557600080fd5b505af1158015612b79573d6000803e3d6000fd5b50505050612dd5565b846001600160a01b0316876001600160a01b03161480612c5457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612bde57612bde615765565b60200260200101516040518263ffffffff1660e01b8152600401612c1191906001600160a01b0391909116815260200190565b602060405180830381865afa158015612c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c529190615991565b155b612d205760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610b31565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612d6257612d62615765565b6020026020010151868581518110612d7c57612d7c615765565b60200260200101516040518463ffffffff1660e01b8152600401612da293929190615d00565b600060405180830381600087803b158015612dbc57600080fd5b505af1158015612dd0573d6000803e3d6000fd5b505050505b600101612a33565b506001600160a01b0386166000908152609f60205260408120805491829190612e0583615791565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612e6d826116c1565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612ebb9083908590615b8a565b60405180910390a198975050505050505050565b6000612ede6020830183614c8c565b6001600160a01b03161415612f785760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a2063616e6e6f742073657420606561726e696e677352656365696064820152737665726020746f207a65726f206164647265737360601b608482015260a401610b31565b6213c680612f8c6060830160408401615d24565b63ffffffff1611156130415760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610b31565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff169061307d9060608401908401615d24565b63ffffffff1610156131135760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610b31565b6001600160a01b038216600090815260996020526040902081906131378282615d61565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611d2190849061584c565b606654600090600190811614156131945760405162461bcd60e51b8152600401610b31906157ac565b61319d856115da565b1561321a5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2073746160448201527f6b657220697320616c7265616479206163746976656c792064656c65676174656064820152601960fa1b608482015260a401610b31565b61322384611a48565b6132a35760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a206f706560448201527f7261746f72206973206e6f74207265676973746572656420696e20456967656e6064820152642630bcb2b960d91b608482015260a401610b31565b6001600160a01b038085166000908152609960205260409020600101541680158015906132d95750336001600160a01b03821614155b80156132ee5750336001600160a01b03861614155b1561345b57428460200151101561336d5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610b31565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156134075760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610b31565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff19166001179055850151613448908890889085908890610a43565b905061345982828760000151614430565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a36000806134ba88611de6565b9150915060005b82518110156113e257613508888a8584815181106134e1576134e1615765565b60200260200101518585815181106134fb576134fb615765565b6020026020010151613bcb565b6001016134c1565b6001600160a01b03811661359e5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b31565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061363e908490615ce9565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610fb093929190615d00565b6033546001600160a01b03163314611a7a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b31565b8281146137645760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610b31565b8260005b818110156138fa57600086868381811061378457613784615765565b90506020020160208101906137999190614c8c565b6001600160a01b038116600090815260a160205260408120549192508686858181106137c7576137c7615765565b90506020020135905062034bc081111561388b5760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610b31565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a1505050806138f390615791565b9050613768565b505050505050565b6065546001600160a01b031615801561392357506001600160a01b03821615155b6139a55760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b31565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261199882613510565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc0811115613b8a5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610b31565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613c02908490615cd1565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610fb093929190615d00565b6000613c5461062987615dc4565b6000818152609e602052604090205490915060ff16613cd55760405162461bcd60e51b81526020600482015260436024820152600080516020615efc83398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610b31565b609d544390613cea60a0890160808a01615d24565b63ffffffff16613cfa9190615cd1565b1115613d825760405162461bcd60e51b815260206004820152605f6024820152600080516020615efc83398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610b31565b613d926060870160408801614c8c565b6001600160a01b0316336001600160a01b031614613e1f5760405162461bcd60e51b81526020600482015260506024820152600080516020615efc83398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610b31565b8115613ea157613e3260a0870187615803565b85149050613ea15760405162461bcd60e51b81526020600482015260426024820152600080516020615efc83398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610b31565b6000818152609e60205260409020805460ff1916905581156140065760005b613ecd60a0880188615803565b9050811015614000574360a16000613ee860a08b018b615803565b85818110613ef857613ef8615765565b9050602002016020810190613f0d9190614c8c565b6001600160a01b03168152602081019190915260400160002054613f3760a08a0160808b01615d24565b63ffffffff16613f479190615cd1565b1115613f655760405162461bcd60e51b8152600401610b3190615dd6565b613ff8613f756020890189614c8c565b33613f8360a08b018b615803565b85818110613f9357613f93615765565b9050602002016020810190613fa89190614c8c565b613fb560c08c018c615803565b86818110613fc557613fc5615765565b905060200201358a8a87818110613fde57613fde615765565b9050602002016020810190613ff39190614c8c565b6145ea565b600101613ec0565b506143f5565b336000908152609a60205260408120546001600160a01b0316905b61402e60a0890189615803565b90508110156143f2574360a1600061404960a08c018c615803565b8581811061405957614059615765565b905060200201602081019061406e9190614c8c565b6001600160a01b0316815260208101919091526040016000205461409860a08b0160808c01615d24565b63ffffffff166140a89190615cd1565b11156140c65760405162461bcd60e51b8152600401610b3190615dd6565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06140e860a08a018a615803565b838181106140f8576140f8615765565b905060200201602081019061410d9190614c8c565b6001600160a01b0316141561425d57600061412b60208a018a614c8c565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c8361416c60c08e018e615803565b8781811061417c5761417c615765565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af11580156141d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141f49190615ba3565b6001600160a01b038084166000908152609a602052604090205491925016801561425557614255818461422a60a08f018f615803565b8881811061423a5761423a615765565b905060200201602081019061424f9190614c8c565b85613bcb565b5050506143ea565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea13389898581811061429f5761429f615765565b90506020020160208101906142b49190614c8c565b6142c160a08d018d615803565b868181106142d1576142d1615765565b90506020020160208101906142e69190614c8c565b6142f360c08e018e615803565b8781811061430357614303615765565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b15801561436357600080fd5b505af1158015614377573d6000803e3d6000fd5b505050506001600160a01b038216156143ea576143ea823361439c60a08c018c615803565b858181106143ac576143ac615765565b90506020020160208101906143c19190614c8c565b6143ce60c08d018d615803565b868181106143de576143de615765565b90506020020135613bcb565b600101614021565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b1561454a57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906144709086908690600401615e5e565b602060405180830381865afa15801561448d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144b19190615ebb565b6001600160e01b031916146111235760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610b31565b826001600160a01b031661455e838361472a565b6001600160a01b0316146111235760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610b31565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156146955760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b13009061465e90889088908790600401615d00565b600060405180830381600087803b15801561467857600080fd5b505af115801561468c573d6000803e3d6000fd5b50505050614723565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561470f57600080fd5b505af11580156113e2573d6000803e3d6000fd5b5050505050565b60008060006147398585614746565b91509150610a3b816147b6565b60008082516041141561477d5760208301516040840151606085015160001a61477187828585614971565b945094505050506147af565b8251604014156147a7576020830151604084015161479c868383614a5e565b9350935050506147af565b506000905060025b9250929050565b60008160048111156147ca576147ca615ee5565b14156147d35750565b60018160048111156147e7576147e7615ee5565b14156148355760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b31565b600281600481111561484957614849615ee5565b14156148975760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b31565b60038160048111156148ab576148ab615ee5565b14156149045760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b31565b600481600481111561491857614918615ee5565b141561106e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b31565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156149a85750600090506003614a55565b8460ff16601b141580156149c057508460ff16601c14155b156149d15750600090506004614a55565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614a25573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614a4e57600060019250925050614a55565b9150600090505b94509492505050565b6000806001600160ff1b03831681614a7b60ff86901c601b615cd1565b9050614a8987828885614971565b935093505050935093915050565b60008083601f840112614aa957600080fd5b5081356001600160401b03811115614ac057600080fd5b6020830191508360208260051b85010111156147af57600080fd5b60008060208385031215614aee57600080fd5b82356001600160401b03811115614b0457600080fd5b614b1085828601614a97565b90969095509350505050565b6001600160a01b038116811461106e57600080fd5b8035614b3c81614b1c565b919050565b600080600080600060a08688031215614b5957600080fd5b8535614b6481614b1c565b94506020860135614b7481614b1c565b93506040860135614b8481614b1c565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b81811015614bd457835183529284019291840191600101614bb8565b50909695505050505050565b600060608284031215614bf257600080fd5b50919050565b60008083601f840112614c0a57600080fd5b5081356001600160401b03811115614c2157600080fd5b6020830191508360208285010111156147af57600080fd5b600080600060808486031215614c4e57600080fd5b614c588585614be0565b925060608401356001600160401b03811115614c7357600080fd5b614c7f86828701614bf8565b9497909650939450505050565b600060208284031215614c9e57600080fd5b8135614ca981614b1c565b9392505050565b600080600060608486031215614cc557600080fd5b8335614cd081614b1c565b92506020840135614ce081614b1c565b929592945050506040919091013590565b600060208284031215614d0357600080fd5b5035919050565b60008060008060408587031215614d2057600080fd5b84356001600160401b0380821115614d3757600080fd5b614d4388838901614a97565b90965094506020870135915080821115614d5c57600080fd5b50614d6987828801614a97565b95989497509550505050565b60008060008060008060008060c0898b031215614d9157600080fd5b8835614d9c81614b1c565b97506020890135614dac81614b1c565b9650604089013595506060890135945060808901356001600160401b0380821115614dd657600080fd5b614de28c838d01614a97565b909650945060a08b0135915080821115614dfb57600080fd5b50614e088b828c01614a97565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614e3857600080fd5b88356001600160401b0380821115614e4f57600080fd5b614e5b8c838d01614a97565b909a50985060208b0135915080821115614e7457600080fd5b614e808c838d01614a97565b909850965060408b0135915080821115614e9957600080fd5b614ea58c838d01614a97565b909650945060608b0135915080821115614dfb57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614ef657614ef6614ebe565b60405290565b604080519081016001600160401b0381118282101715614ef657614ef6614ebe565b60405160c081016001600160401b0381118282101715614ef657614ef6614ebe565b604051601f8201601f191681016001600160401b0381118282101715614f6857614f68614ebe565b604052919050565b63ffffffff8116811461106e57600080fd5b8035614b3c81614f70565b60006001600160401b03821115614fa657614fa6614ebe565b5060051b60200190565b600082601f830112614fc157600080fd5b81356020614fd6614fd183614f8d565b614f40565b82815260059290921b84018101918181019086841115614ff557600080fd5b8286015b8481101561501957803561500c81614b1c565b8352918301918301614ff9565b509695505050505050565b600082601f83011261503557600080fd5b81356020615045614fd183614f8d565b82815260059290921b8401810191818101908684111561506457600080fd5b8286015b848110156150195780358352918301918301615068565b600060e0828403121561509157600080fd5b615099614ed4565b90506150a482614b31565b81526150b260208301614b31565b60208201526150c360408301614b31565b6040820152606082013560608201526150de60808301614f82565b608082015260a08201356001600160401b03808211156150fd57600080fd5b61510985838601614fb0565b60a084015260c084013591508082111561512257600080fd5b5061512f84828501615024565b60c08301525092915050565b60006020828403121561514d57600080fd5b81356001600160401b0381111561516357600080fd5b61516f8482850161507f565b949350505050565b60006020828403121561518957600080fd5b813560ff81168114614ca957600080fd5b6000604082840312156151ac57600080fd5b6151b4614efc565b905081356151c181614b1c565b815260208201356bffffffffffffffffffffffff811681146151e257600080fd5b602082015292915050565b6000602080838503121561520057600080fd5b82356001600160401b038082111561521757600080fd5b818501915085601f83011261522b57600080fd5b8135615239614fd182614f8d565b81815260059190911b8301840190848101908883111561525857600080fd5b8585015b83811015615332578035858111156152745760008081fd5b860160e0818c03601f190181131561528c5760008081fd5b615294614f1e565b89830135888111156152a65760008081fd5b6152b48e8c83870101614fb0565b825250604080840135898111156152cb5760008081fd5b6152d98f8d83880101615024565b8c8401525060606152eb818601614b31565b82840152608091506152ff8f83870161519a565b9083015261530f60c08501614f82565b9082015261531e838301614b31565b60a08201528552505091860191860161525c565b5098975050505050505050565b801515811461106e57600080fd5b60008060008060006080868803121561536557600080fd5b85356001600160401b038082111561537c57600080fd5b9087019060e0828a03121561539057600080fd5b909550602087013590808211156153a657600080fd5b506153b388828901614a97565b9095509350506040860135915060608601356153ce8161533f565b809150509295509295909350565b600080604083850312156153ef57600080fd5b82356153fa81614b1c565b9150602083013561540a81614b1c565b809150509250929050565b60006040828403121561542757600080fd5b61542f614efc565b905081356001600160401b038082111561544857600080fd5b818401915084601f83011261545c57600080fd5b813560208282111561547057615470614ebe565b615482601f8301601f19168201614f40565b9250818352868183860101111561549857600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a086880312156154d557600080fd5b85356154e081614b1c565b945060208601356154f081614b1c565b935060408601356001600160401b038082111561550c57600080fd5b61551889838a01615415565b9450606088013591508082111561552e57600080fd5b5061553b88828901615415565b95989497509295608001359392505050565b6000806040838503121561556057600080fd5b823561556b81614b1c565b915060208301356001600160401b0381111561558657600080fd5b61559285828601614fb0565b9150509250929050565b600081518084526020808501945080840160005b838110156155cc578151875295820195908201906001016155b0565b509495945050505050565b602081526000614ca9602083018461559c565b600080602083850312156155fd57600080fd5b82356001600160401b0381111561561357600080fd5b614b1085828601614bf8565b6000806040838503121561563257600080fd5b823561563d81614b1c565b946020939093013593505050565b6000806000806080858703121561566157600080fd5b843561566c81614b1c565b935060208501359250604085013561568381614b1c565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156155cc5781516001600160a01b0316875295820195908201906001016156a7565b6040815260006156df6040830185615693565b82810360208401526112a0818561559c565b60008060006060848603121561570657600080fd5b833561571181614b1c565b925060208401356001600160401b0381111561572c57600080fd5b61573886828701615415565b925050604084013590509250925092565b60006060828403121561575b57600080fd5b614ca98383614be0565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156157a5576157a561577b565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e198336030181126157f957600080fd5b9190910192915050565b6000808335601e1984360301811261581a57600080fd5b8301803591506001600160401b0382111561583457600080fd5b6020019150600581901b36038213156147af57600080fd5b60608101823561585b81614b1c565b6001600160a01b03908116835260208401359061587782614b1c565b166020830152604083013561588b81614f70565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156158df57600080fd5b8151614ca981614b1c565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b6000602082840312156159a357600080fd5b8151614ca98161533f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126157f957600080fd5b600060208284031215615a1e57600080fd5b8135614ca98161533f565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a0850152615a8460e0850182615693565b905060c083015184820360c08601526112a0828261559c565b602081526000614ca96020830184615a29565b602081526000825160e06020840152615acd610100840182615693565b90506020840151601f19848303016040850152615aea828261559c565b915050604084015160018060a01b03808216606086015260608601519150808251166080860152506bffffffffffffffffffffffff60208201511660a0850152506080840151615b4260c085018263ffffffff169052565b5060a08401516001600160a01b03811660e0850152610a3b565b60008060408385031215615b6f57600080fd5b8251615b7a8161533f565b6020939093015192949293505050565b82815260406020820152600061516f6040830184615a29565b600060208284031215615bb557600080fd5b5051919050565b600082601f830112615bcd57600080fd5b81516020615bdd614fd183614f8d565b82815260059290921b84018101918181019086841115615bfc57600080fd5b8286015b848110156150195780518352918301918301615c00565b60008060408385031215615c2a57600080fd5b82516001600160401b0380821115615c4157600080fd5b818501915085601f830112615c5557600080fd5b81516020615c65614fd183614f8d565b82815260059290921b84018101918181019089841115615c8457600080fd5b948201945b83861015615cab578551615c9c81614b1c565b82529482019490820190615c89565b91880151919650909350505080821115615cc457600080fd5b5061559285828601615bbc565b60008219821115615ce457615ce461577b565b500190565b600082821015615cfb57615cfb61577b565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615d3657600080fd5b8135614ca981614f70565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615d6c81614b1c565b615d768183615d41565b50600181016020830135615d8981614b1c565b615d938183615d41565b506040830135615da281614f70565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6000615dd0368361507f565b92915050565b6020808252606e90820152600080516020615efc83398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b81811015615e9257858101830151858201606001528201615e76565b81811115615ea4576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215615ecd57600080fd5b81516001600160e01b031981168114614ca957600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a2646970667358221220ea834d3f9a93a4b7d7d8714a61ee4fcf19049bd6ef5f2d417e5c82ca80405edb64736f6c634300080c0033","sourceMap":"1137:48148:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45404:472;;;;;;:::i;:::-;;:::i;:::-;;;1014:25:178;;;1002:2;987:18;45404:472:3;;;;;;;;1131:188:4;;1186:133;1131:188;;48352:630:3;;;;;;:::i;:::-;;:::i;13527:1506::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4542:746::-;;;;;;:::i;:::-;;:::i;:::-;;5814:138:27;;;;;;:::i;:::-;;:::i;21870:483:3:-;;;;;;:::i;:::-;;:::i;3832:392:27:-;;;;;;:::i;:::-;;:::i;23198:241:3:-;;;;;;:::i;:::-;;:::i;42453:159::-;;;;;;:::i;:::-;-1:-1:-1;;;;;42554:26:3;42528:7;42554:26;;;:16;:26;;;;;:51;;;-1:-1:-1;;;42554:51:3;;;;;42453:159;46380:406;;;;;;:::i;:::-;;:::i;649:130:4:-;;699:80;649:130;;3183:607:3;;;;;;:::i;:::-;;:::i;20852:476::-;;;;;;:::i;:::-;;:::i;3369:46:4:-;;;;;;:::i;:::-;;;;;;;;;;;;;;17562:471:3;;;;;;:::i;:::-;;:::i;1709:49:4:-;;;;;;;;-1:-1:-1;;;;;9831:32:178;;;9813:51;;9801:2;9786:18;1709:49:4;9642:228:178;42216:147:3;;;;;;:::i;:::-;-1:-1:-1;;;;;42311:26:3;;;42285:7;42311:26;;;:16;:26;;;;;:45;;;;;42216:147;41270:123;;;;;;:::i;:::-;;:::i;:::-;;;10357:14:178;;10350:22;10332:41;;10320:2;10305:18;41270:123:3;10192:187:178;878:152:4;;939:91;878:152;;1917:49;;;;;1905:74:3;;1964:15;1905:74;;4299:136:27;;;:::i;45942:150:3:-;;;;;;:::i;:::-;;:::i;5594:149:27:-;;;;;;:::i;:::-;5712:7;;5683:1;:10;;;;;;;;5712:14;;;5711:24;;5594:149;5406:87;5479:7;;5406:87;;18270:2040:3;;;;;;:::i;:::-;;:::i;41981:143::-;;;;;;:::i;:::-;-1:-1:-1;;;;;42074:26:3;;;42048:7;42074:26;;;:16;:26;;;;;:43;;;41981:143;16475:353;;;;;;:::i;:::-;;:::i;22561:167::-;;;;;;:::i;:::-;;:::i;3165:46:4:-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3165:46:4;;;41500:148:3;;;;;;:::i;:::-;;:::i;2071:101:57:-;;;:::i;2618:71:4:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;9385:1198:3;;;;;;:::i;:::-;;:::i;1825:37:27:-;;;;;-1:-1:-1;;;;;1825:37:27;;;1441:85:57;1513:6;;-1:-1:-1;;;;;1513:6:57;1441:85;;42702:374:3;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2047:104::-;;2108:42;2047:104;;6185:262;;;;;;:::i;:::-;;:::i;4909:62:4:-;;;;;;:::i;:::-;;;;;;;;;;;;;;1817:33;;;;;4612:50;;;;;;:::i;:::-;;;;;;;;;;;;;;;;3858:81;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;4456:39;;;;;;5471:66;;;;;;:::i;:::-;;;;;;;;;;;;;;41751:140:3;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41858:26:3;;;;;:16;:26;;;;;41851:33;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;41851:33:3;;;;;;;;;;41751:140;;;;;24964:13:178;;-1:-1:-1;;;;;24960:22:178;;;24942:41;;25043:4;25031:17;;;25025:24;25021:33;;;24999:20;;;24992:63;25103:17;;;25097:24;25123:10;25093:41;25071:20;;;25064:71;24892:2;24877:18;41751:140:3;24692:449:178;47216:540:3;;;;;;:::i;:::-;;:::i;2057:60:4:-;;2111:6;2057:60;;43301:1775:3;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;10908:2262::-;;;;;;:::i;:::-;;:::i;7450:334::-;;;;;;:::i;:::-;;:::i;5700:265::-;;;;;;:::i;:::-;;:::i;2321:198:57:-;;;;;;:::i;:::-;;:::i;40931:227:3:-;;;:::i;4911:425:27:-;;;;;;:::i;:::-;;:::i;45404:472:3:-;45531:24;;45486:7;;;45565:273;45585:21;;;45565:273;;;45627:27;45657:29;:44;45687:10;;45698:1;45687:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;45657:44:3;-1:-1:-1;;;;;45657:44:3;;;;;;;;;;;;;45627:74;;45741:15;45719:19;:37;45715:113;;;45794:19;45776:37;;45715:113;-1:-1:-1;45608:3:3;;;:::i;:::-;;;45565:273;;;-1:-1:-1;45854:15:3;45404:472;-1:-1:-1;;;45404:472:3:o;48352:630::-;48675:101;;;1186:133:4;48675:101:3;;;;28179:25:178;;;;-1:-1:-1;;;;;28278:15:178;;;28258:18;;;28251:43;28330:15;;;28310:18;;;28303:43;28382:15;;28362:18;;;28355:43;28414:19;;;28407:35;;;28458:19;;;;28451:35;;;48675:101:3;;;;;;;;;;28151:19:178;;;;48675:101:3;;;48652:134;;;;;-1:-1:-1;;;48901:17:3;:15;:17::i;:::-;48872:67;;-1:-1:-1;;;48872:67:3;;;28755:27:178;28798:11;;;28791:27;;;;28834:12;;;28827:28;;;28871:12;;48872:67:3;;;;;;-1:-1:-1;;48872:67:3;;;;;;48862:78;;48872:67;48862:78;;;;;48352:630;-1:-1:-1;;;;;;;;48352:630:3:o;13527:1506::-;5712:7:27;;13702:16:3;;1540:1;;5683:10:27;5712:14;;;5711:24;2767:14;2759:52;;;;-1:-1:-1;;;2759:52:27;;;;;;;:::i;:::-;;;;;;;;;13734:32:3::1;13783:22:::0;-1:-1:-1;;;;;13769:44:3;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;13769:44:3::1;-1:-1:-1::0;13854:10:3::1;13823:16;13842:23:::0;;;:11:::1;:23;::::0;;;;;13734:79;;-1:-1:-1;;;;;;13842:23:3;;::::1;::::0;13876:1119:::1;13896:33:::0;;::::1;13876:1119;;;14022:22;;14045:1;14022:25;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:32;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;:39;;13975:22;;13998:1;13975:25;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:36;::::0;;::::1;:::i;:::-;:43;;:86;13950:201;;;::::0;-1:-1:-1;;;13950:201:3;;30912:2:178;13950:201:3::1;::::0;::::1;30894:21:178::0;30951:2;30931:18;;;30924:30;30990:34;30970:18;;;30963:62;31061:26;31041:18;;;31034:54;31105:19;;13950:201:3::1;30710:420:178::0;13950:201:3::1;14230:10;14190:22:::0;;14213:1;14190:25;;::::1;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:36;::::0;;;;;::::1;;;:::i;:::-;-1:-1:-1::0;;;;;14190:50:3::1;;14165:169;;;::::0;-1:-1:-1;;;14165:169:3;;31337:2:178;14165:169:3::1;::::0;::::1;31319:21:178::0;31376:2;31356:18;;;31349:30;31415:34;31395:18;;;31388:62;31486:30;31466:18;;;31459:58;31534:19;;14165:169:3::1;31135:424:178::0;14165:169:3::1;14675:309;14733:10;14771:8;14809:22;;14832:1;14809:25;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:36;::::0;;;;;::::1;;;:::i;:::-;14875:22;;14898:1;14875:25;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:36;::::0;;::::1;:::i;:::-;14675:309;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;14937:22:3;;-1:-1:-1;14937:22:3;;-1:-1:-1;14960:1:3;;-1:-1:-1;14937:25:3;;::::1;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:32;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;14675:309;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;14675:31:3::1;::::0;-1:-1:-1;;;14675:309:3:i:1;:::-;14654:15;14670:1;14654:18;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:330;13931:3;::::1;::::0;::::1;:::i;:::-;;;;13876:1119;;;-1:-1:-1::0;15011:15:3;;13527:1506;-1:-1:-1;;;;;13527:1506:3:o;4542:746::-;4721:10;4761:1;4704:28;;;:16;:28;;;;;:45;-1:-1:-1;;;;;4704:45:3;:59;4683:175;;;;-1:-1:-1;;;4683:175:3;;31766:2:178;4683:175:3;;;31748:21:178;31805:2;31785:18;;;31778:30;31844:34;31824:18;;;31817:62;31915:34;31895:18;;;31888:62;-1:-1:-1;;;31966:19:178;;;31959:36;32012:19;;4683:175:3;31564:473:178;4683:175:3;4868:59;4888:10;4900:26;4868:19;:59::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;5049:70:3;5059:10;;5083:23;5116:1;5049:9;:70::i;:::-;5176:10;-1:-1:-1;;;;;5157:58:3;;5188:26;5157:58;;;;;;:::i;:::-;;;;;;;;5257:10;-1:-1:-1;;;;;5230:51:3;;5269:11;;5230:51;;;;;;;:::i;:::-;;;;;;;;4673:615;4542:746;;;:::o;5814:138:27:-;2285:14;;;;;;;;;-1:-1:-1;;;;;2285:14:27;-1:-1:-1;;;;;2285:23:27;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2271:39:27;:10;-1:-1:-1;;;;;2271:39:27;;2263:94;;;;-1:-1:-1;;;2263:94:27;;;;;;;:::i;:::-;5908:37:::1;5927:17;5908:18;:37::i;:::-;5814:138:::0;:::o;21870:483:3:-;2373:10;-1:-1:-1;;;;;2395:15:3;2373:38;;;:80;;-1:-1:-1;2415:10:3;-1:-1:-1;;;;;2437:15:3;2415:38;;2373:80;2352:182;;;;-1:-1:-1;;;2352:182:3;;;;;;;:::i;:::-;22088:19:::1;22100:6;22088:11;:19::i;:::-;22084:263;;;-1:-1:-1::0;;;;;22142:19:3;;::::1;22123:16;22142:19:::0;;;:11:::1;:19;::::0;;;;;::::1;22239:97;22142:19:::0;22154:6;22310:8;22328:6;22239:23:::1;:97::i;:::-;22109:238;22084:263;21870:483:::0;;;:::o;3832:392:27:-;2125:14;;:35;;-1:-1:-1;;;2125:35:27;;2149:10;2125:35;;;9813:51:178;-1:-1:-1;;;;;2125:14:27;;;;:23;;9786:18:178;;2125:35:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2117:88;;;;-1:-1:-1;;;2117:88:27;;;;;;;:::i;:::-;4064:7:::1;::::0;4034:25;;::::1;4033:38;4025:107;;;::::0;-1:-1:-1;;;4025:107:27;;35078:2:178;4025:107:27::1;::::0;::::1;35060:21:178::0;35117:2;35097:18;;;35090:30;35156:34;35136:18;;;35129:62;35227:26;35207:18;;;35200:54;35271:19;;4025:107:27::1;34876:420:178::0;4025:107:27::1;4142:7;:25:::0;;;4182:35:::1;::::0;1014:25:178;;;4189:10:27::1;::::0;4182:35:::1;::::0;1002:2:178;987:18;4182:35:27::1;;;;;;;;3832:392:::0;:::o;23198:241:3:-;1334:13:57;:11;:13::i;:::-;23364:68:3::1;23398:10;;23410:21;;23364:33;:68::i;46380:406::-:0;-1:-1:-1;;;;;46625:19:3;;46529:7;46625:19;;;:11;:19;;;;;;46698:81;46637:6;46625:19;46762:8;46772:6;46698:35;:81::i;:::-;46691:88;46380:406;-1:-1:-1;;;;;46380:406:3:o;3183:607::-;3111:19:59;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:59;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:59;1476:19:61;:23;;;3219:66:59;;-1:-1:-1;3268:12:59;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:59;;35503:2:178;3157:201:59;;;35485:21:178;35542:2;35522:18;;;35515:30;35581:34;35561:18;;;35554:62;-1:-1:-1;;;35632:18:178;;;35625:44;35686:19;;3157:201:59;35301:410:178;3157:201:59;3368:12;:16;;-1:-1:-1;;3368:16:59;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:59;;;;;3394:65;3484:55:3::1;3502:15;3519:19;3484:17;:55::i;:::-;3569:27;:25;:27::i;:::-;3549:17;:47:::0;3606:32:::1;3625:12:::0;3606:18:::1;:32::i;:::-;3648:55;3677:25;3648:28;:55::i;:::-;3713:70;3747:11;;3760:22;;3713:33;:70::i;:::-;3483:14:59::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;3513:21:59;;;3553:14;;-1:-1:-1;35868:36:178;;3553:14:59;;35856:2:178;35841:18;3553:14:59;;;;;;;3479:99;3101:483;3183:607:3;;;;;;;;:::o;20852:476::-;2373:10;-1:-1:-1;;;;;2395:15:3;2373:38;;;:80;;-1:-1:-1;2415:10:3;-1:-1:-1;;;;;2437:15:3;2415:38;;2373:80;2352:182;;;;-1:-1:-1;;;2352:182:3;;;;;;;:::i;:::-;21070:19:::1;21082:6;21070:11;:19::i;:::-;21066:256;;;-1:-1:-1::0;;;;;21124:19:3;;::::1;21105:16;21124:19:::0;;;:11:::1;:19;::::0;;;;;::::1;21214:97;21124:19:::0;21136:6;21285:8;21303:6;21214:23:::1;:97::i;17562:471::-:0;5712:7:27;;1684:1:3;;5683:10:27;5712:14;;;5711:24;2767:14;2759:52;;;;-1:-1:-1;;;2759:52:27;;;;;;;:::i;:::-;1816:1:60::1;2570:7;;:19;;2562:63;;;::::0;-1:-1:-1;;;2562:63:60;;36117:2:178;2562:63:60::1;::::0;::::1;36099:21:178::0;36156:2;36136:18;;;36129:30;36195:33;36175:18;;;36168:61;36246:18;;2562:63:60::1;35915:355:178::0;2562:63:60::1;1816:1;2700:7;:18:::0;17859:9:3::2;17854:173;17874:22:::0;;::::2;17854:173;;;17917:99;17943:11;;17955:1;17943:14;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;17959:6;;17966:1;17959:9;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;17970:22;;17993:1;17970:25;;;;;;;:::i;:::-;;;;;;;17997:15;;18013:1;17997:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;17917:25;:99::i;:::-;17898:3;::::0;::::2;:::i;:::-;;;17854:173;;;-1:-1:-1::0;;1773:1:60::1;2873:7;:22:::0;-1:-1:-1;;;;;;;;17562:471:3:o;41270:123::-;-1:-1:-1;;;;;41352:19:3;;;41328:4;41352:19;;;:11;:19;;;;;;;:33;;;41270:123::o;4299:136:27:-;2125:14;;:35;;-1:-1:-1;;;2125:35:27;;2149:10;2125:35;;;9813:51:178;-1:-1:-1;;;;;2125:14:27;;;;:23;;9786:18:178;;2125:35:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2117:88;;;;-1:-1:-1;;;2117:88:27;;;;;;;:::i;:::-;-1:-1:-1;;4349:7:27::1;:27:::0;;;4391:37:::1;::::0;1014:25:178;;;4398:10:27::1;::::0;4391:37:::1;::::0;1002:2:178;987:18;4391:37:27::1;;;;;;;4299:136::o:0;45942:150:3:-;46026:7;46073:10;46062:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;46052:33;;;;;;46045:40;;45942:150;;;:::o;18270:2040::-;18422:9;18417:1887;18441:20;:27;18437:1;:31;18417:1887;;;18485:77;18565:20;18586:1;18565:23;;;;;;;;:::i;:::-;;;;;;;18485:103;;18661:14;18677:25;18706:15;-1:-1:-1;;;;;18706:39:3;;18746:19;18706:60;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18660:106;;;;18846:9;18842:1393;;;18892:26;;;;;-1:-1:-1;;;;;19021:35:3;;18875:14;19021:35;;;:27;:35;;;;;;;18892:26;;19021:35;;;19074:37;19021:35;19074:37;:::i;:::-;;;;;;19130:36;19169:448;;;;;;;;19210:6;-1:-1:-1;;;;;19169:448:3;;;;;19251:19;:36;;;-1:-1:-1;;;;;19169:448:3;;;;;19321:19;:38;;;:49;;;-1:-1:-1;;;;;19169:448:3;;;;;19399:5;19169:448;;;;19438:19;:40;;;19169:448;;;;;;19512:19;:30;;;19169:448;;;;19572:19;:26;;;19169:448;;;19130:487;;19678:15;19696:43;19720:18;19696:23;:43::i;:::-;19891:27;;;;:18;:27;;;;;;19678:61;;-1:-1:-1;19891:27:3;;19890:28;19861:168;;;;-1:-1:-1;;;19861:168:3;;40222:2:178;19861:168:3;;;40204:21:178;40261:2;40241:18;;;40234:30;40300:34;40280:18;;;40273:62;40371:34;40351:18;;;40344:62;-1:-1:-1;;;40422:19:178;;;40415:36;40468:19;;19861:168:3;40020:473:178;19861:168:3;20047:27;;;;:18;:27;;;;;;;:34;;-1:-1:-1;;20047:34:3;20077:4;20047:34;;;20105:45;;;;;20066:7;;20131:18;;20105:45;:::i;:::-;;;;;;;;20174:46;;;41015:25:178;;;41071:2;41056:18;;41049:34;;;20174:46:3;;40988:18:178;20174:46:3;;;;;;;18857:1378;;;;18842:1393;20276:3;;;;;18471:1833;;;18417:1887;;;;18270:2040;:::o;16475:353::-;5712:7:27;;1684:1:3;;5683:10:27;5712:14;;;5711:24;2767:14;2759:52;;;;-1:-1:-1;;;2759:52:27;;;;;;;:::i;:::-;1816:1:60::1;2570:7;;:19;;2562:63;;;::::0;-1:-1:-1;;;2562:63:60;;36117:2:178;2562:63:60::1;::::0;::::1;36099:21:178::0;36156:2;36136:18;;;36129:30;36195:33;36175:18;;;36168:61;36246:18;;2562:63:60::1;35915:355:178::0;2562:63:60::1;1816:1;2700:7;:18:::0;16737:84:3::2;16763:10:::0;16775:6;;16783:20;16805:15;16737:25:::2;:84::i;:::-;-1:-1:-1::0;;1773:1:60::1;2873:7;:22:::0;-1:-1:-1;;;;16475:353:3:o;22561:167::-;1334:13:57;:11;:13::i;:::-;22664:57:3::1;22693:27;22664:28;:57::i;41500:148::-:0;-1:-1:-1;;;;;41583:26:3;;;41559:4;41583:26;;;:16;:26;;;;;:43;;:57;;;41500:148::o;2071:101:57:-;1334:13;:11;:13::i;:::-;2135:30:::1;2162:1;2135:18;:30::i;:::-;2071:101::o:0;9385:1198:3:-;9739:15;9704:24;:31;;;:50;;9683:162;;;;-1:-1:-1;;;9683:162:3;;41296:2:178;9683:162:3;;;41278:21:178;41335:2;41315:18;;;41308:30;41374:34;41354:18;;;41347:62;41445:34;41425:18;;;41418:62;-1:-1:-1;;;41496:19:178;;;41489:32;41538:19;;9683:162:3;41094:469:178;9683:162:3;9926:26;9955:11;:19;9967:6;-1:-1:-1;;;;;9955:19:3;-1:-1:-1;;;;;9955:19:3;;;;;;;;;;;;;9926:48;;9984:24;10023:106;10059:6;10067:18;10087:8;10097:24;:31;;;10023:35;:106::i;:::-;-1:-1:-1;;;;;10163:19:3;;;;;;:11;:19;;;;;10206:1;10185:22;;10163:44;;10353:34;;9984:145;;-1:-1:-1;10282:106:3;;10175:6;;9984:145;;10282:44;:106::i;:::-;10507:69;10517:6;10525:8;10535:26;10563:12;10507:9;:69::i;:::-;9635:948;;9385:1198;;;;;:::o;42702:374::-;42823:16;42855:23;42895:10;:17;-1:-1:-1;;;;;42881:32:3;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;42881:32:3;;42855:58;;42928:9;42923:124;42947:10;:17;42943:1;:21;42923:124;;;-1:-1:-1;;;;;42997:24:3;;;;;;:14;:24;;;;;43022:13;;42997:24;;;43022:10;;43033:1;;43022:13;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;42997:39:3;-1:-1:-1;;;;;42997:39:3;;;;;;;;;;;;;42985:6;42992:1;42985:9;;;;;;;;:::i;:::-;;;;;;;;;;:51;42966:3;;;:::i;:::-;;;42923:124;;6185:262;6276:22;6287:10;6276;:22::i;:::-;6268:106;;;;-1:-1:-1;;;6268:106:3;;41770:2:178;6268:106:3;;;41752:21:178;41809:2;41789:18;;;41782:30;41848:34;41828:18;;;41821:62;41919:34;41899:18;;;41892:62;-1:-1:-1;;;41970:19:178;;;41963:38;42018:19;;6268:106:3;41568:475:178;6268:106:3;6416:10;-1:-1:-1;;;;;6389:51:3;;6428:11;;6389:51;;;;;;;:::i;:::-;;;;;;;;6185:262;;:::o;47216:540::-;47487:78;;;939:91:4;47487:78:3;;;;42307:25:178;;;;-1:-1:-1;;;;;42406:15:178;;;42386:18;;;42379:43;42458:15;;42438:18;;;42431:43;42490:18;;;42483:34;;;42533:19;;;;42526:35;;;47487:78:3;;;;;;;;;;42279:19:178;;;;47487:78:3;;;47477:89;;;;;-1:-1:-1;;;47679:17:3;:15;:17::i;:::-;47650:65;;-1:-1:-1;;;47650:65:3;;;28755:27:178;28798:11;;;28791:27;;;;28834:12;;;28827:28;;;28871:12;;47650:65:3;;;;;;-1:-1:-1;;47650:65:3;;;;;;47640:76;;47650:65;47640:76;;;;;47216:540;-1:-1:-1;;;;;;;47216:540:3:o;43301:1775::-;43502:38;;-1:-1:-1;;;43502:38:3;;-1:-1:-1;;;;;9831:32:178;;;43502:38:3;;;9813:51:178;43368:18:3;;;;-1:-1:-1;;43502:15:3;:30;;;;;;9786:18:178;;43502:38:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43647:35;;-1:-1:-1;;;43647:35:3;;-1:-1:-1;;;;;9831:32:178;;;43647:35:3;;;9813:51:178;43483:57:3;;-1:-1:-1;;;;;43647:15:3;:27;;;;;;9786:18:178;;43647:35:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;43647:35:3;;;;;;;;;;;;:::i;:::-;43550:132;;;;43795:1;43782:9;:14;43778:98;;43820:21;;43843;;-1:-1:-1;43301:1775:3;-1:-1:-1;;;43301:1775:3:o;43778:98::-;43886:29;43925:23;43963:21;:28;43995:1;43963:33;43959:1073;;;44098:18;;;44114:1;44098:18;;;;;;;;;;;;;;;;;;;-1:-1:-1;;44139:16:3;;;44153:1;44139:16;;;;;;;;;44085:31;;-1:-1:-1;44153:1:3;-1:-1:-1;44139:16:3;;;;;;;;;;;-1:-1:-1;44139:16:3;44130:25;;2108:42;44169:10;44180:1;44169:13;;;;;;;;:::i;:::-;;;;;;:38;-1:-1:-1;;;;;44169:38:3;;;-1:-1:-1;;;;;44169:38:3;;;;;44241:9;44221:6;44228:1;44221:9;;;;;;;;:::i;:::-;;;;;;:30;;;;;43959:1073;;;44387:28;;:32;;44418:1;44387:32;:::i;:::-;-1:-1:-1;;;;;44371:49:3;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;44371:49:3;;44358:62;;44457:10;:17;-1:-1:-1;;;;;44443:32:3;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;44443:32:3;;44434:41;;44566:9;44561:254;44585:21;:28;44581:1;:32;44561:254;;;44650:21;44672:1;44650:24;;;;;;;;:::i;:::-;;;;;;;44634:10;44645:1;44634:13;;;;;;;;:::i;:::-;;;;;;:40;-1:-1:-1;;;;;44634:40:3;;;-1:-1:-1;;;;;44634:40:3;;;;;44704:21;44726:1;44704:24;;;;;;;;:::i;:::-;;;;;;;44692:6;44699:1;44692:9;;;;;;;;:::i;:::-;;;;;;;;;;:36;44779:3;;44561:254;;;;2108:42;44899:10;44930:1;44910:10;:17;:21;;;;:::i;:::-;44899:33;;;;;;;;:::i;:::-;;;;;;:58;-1:-1:-1;;;;;44899:58:3;;;-1:-1:-1;;;;;44899:58:3;;;;;45011:9;44971:6;44998:1;44978:10;:17;:21;;;;:::i;:::-;44971:29;;;;;;;;:::i;:::-;;;;;;:50;;;;;43959:1073;45050:10;;45062:6;;-1:-1:-1;43301:1775:3;-1:-1:-1;;;;;43301:1775:3:o;10908:2262::-;5712:7:27;;11035:32:3;;1540:1;;5683:10:27;5712:14;;;5711:24;2767:14;2759:52;;;;-1:-1:-1;;;2759:52:27;;;;;;;:::i;:::-;11091:19:3::1;11103:6;11091:11;:19::i;:::-;11083:100;;;::::0;-1:-1:-1;;;11083:100:3;;45143:2:178;11083:100:3::1;::::0;::::1;45125:21:178::0;45182:2;45162:18;;;45155:30;;;45221:34;45201:18;;;45194:62;45292:34;45272:18;;;45265:62;-1:-1:-1;;;45343:19:178;;;45336:35;45388:19;;11083:100:3::1;44941:472:178::0;11083:100:3::1;11202:18;11213:6;11202:10;:18::i;:::-;11201:19;11193:93;;;::::0;-1:-1:-1;;;11193:93:3;;45620:2:178;11193:93:3::1;::::0;::::1;45602:21:178::0;45659:2;45639:18;;;45632:30;45698:34;45678:18;;;45671:62;45769:31;45749:18;;;45742:59;45818:19;;11193:93:3::1;45418:425:178::0;11193:93:3::1;-1:-1:-1::0;;;;;11304:20:3;::::1;11296:93;;;::::0;-1:-1:-1;;;11296:93:3;;46050:2:178;11296:93:3::1;::::0;::::1;46032:21:178::0;46089:2;46069:18;;;46062:30;46128:34;46108:18;;;46101:62;46199:30;46179:18;;;46172:58;46247:19;;11296:93:3::1;45848:424:178::0;11296:93:3::1;-1:-1:-1::0;;;;;11418:19:3;;::::1;11399:16;11418:19:::0;;;:11:::1;:19;::::0;;;;;;;::::1;::::0;11468:10:::1;:20;::::0;:46:::1;;-1:-1:-1::0;11492:10:3::1;-1:-1:-1::0;;;;;11492:22:3;::::1;;11468:46;:125;;;-1:-1:-1::0;;;;;;11548:26:3;;::::1;;::::0;;;:16:::1;:26;::::0;;;;:45:::1;;::::0;::::1;11534:10;:59;11468:125;11447:233;;;::::0;-1:-1:-1;;;11447:233:3;;46479:2:178;11447:233:3::1;::::0;::::1;46461:21:178::0;46518:2;46498:18;;;46491:30;46557:34;46537:18;;;46530:62;46628:31;46608:18;;;46601:59;46677:19;;11447:233:3::1;46277:425:178::0;11447:233:3::1;11858:29;11889:23:::0;11916:28:::1;11937:6;11916:20;:28::i;:::-;11857:87:::0;;-1:-1:-1;11857:87:3;-1:-1:-1;12042:10:3::1;-1:-1:-1::0;;;;;12042:20:3;::::1;;12038:96;;12114:8;-1:-1:-1::0;;;;;12083:40:3::1;12106:6;-1:-1:-1::0;;;;;12083:40:3::1;;;;;;;;;;;12038:96;12208:8;-1:-1:-1::0;;;;;12182:35:3::1;12200:6;-1:-1:-1::0;;;;;12182:35:3::1;;;;;;;;;;;-1:-1:-1::0;;;;;12227:19:3;::::1;12257:1;12227:19:::0;;;:11:::1;:19;::::0;;;;:32;;-1:-1:-1;;;;;;12227:32:3::1;::::0;;12363:17;;12359:772:::1;;12419:16;::::0;;12433:1:::1;12419:16:::0;;::::1;::::0;::::1;::::0;;;;-1:-1:-1;12359:772:3::1;;;12498:10;:17;-1:-1:-1::0;;;;;12484:32:3::1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;12484:32:3::1;;12466:50;;12535:9;12530:591;12554:10;:17;12550:1;:21;12530:591;;;12632:18;::::0;;12648:1:::1;12632:18:::0;;;;;::::1;::::0;;;12596:33:::1;::::0;12632:18:::1;::::0;;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;12699:16:3::1;::::0;;12713:1:::1;12699:16:::0;;;;;::::1;::::0;;;12596:54;;-1:-1:-1;12668:28:3::1;::::0;12699:16;-1:-1:-1;12699:16:3::1;::::0;;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12699:16:3::1;12668:47;;12753:10;12764:1;12753:13;;;;;;;;:::i;:::-;;;;;;;12733:14;12748:1;12733:17;;;;;;;;:::i;:::-;;;;;;:33;-1:-1:-1::0;;;;;12733:33:3::1;;;-1:-1:-1::0;;;;;12733:33:3::1;;;::::0;::::1;12801:6;12808:1;12801:9;;;;;;;;:::i;:::-;;;;;;;12784:11;12796:1;12784:14;;;;;;;;:::i;:::-;;;;;;:26;;;::::0;::::1;12850:256;12912:6;12950:8;12992:6;13032:14;13076:11;12850:31;:256::i;:::-;12829:15;12845:1;12829:18;;;;;;;;:::i;:::-;;;;;;:277;;;::::0;::::1;12578:543;;12573:3;;;;;:::i;:::-;;;;12530:591;;;;12359:772;13141:22;;;10908:2262:::0;;;;:::o;7450:334::-;7704:73;7714:10;7726:8;7736:26;7764:12;7704:9;:73::i;5700:265::-;5803:22;5814:10;5803;:22::i;:::-;5795:102;;;;-1:-1:-1;;;5795:102:3;;46909:2:178;5795:102:3;;;46891:21:178;46948:2;46928:18;;;46921:30;46987:34;46967:18;;;46960:62;47058:34;47038:18;;;47031:62;-1:-1:-1;;;47109:19:178;;;47102:34;47153:19;;5795:102:3;46707:471:178;5795:102:3;5907:51;5927:10;5939:18;5907:19;:51::i;2321:198:57:-;1334:13;:11;:13::i;:::-;-1:-1:-1;;;;;2409:22:57;::::1;2401:73;;;::::0;-1:-1:-1;;;2401:73:57;;47385:2:178;2401:73:57::1;::::0;::::1;47367:21:178::0;47424:2;47404:18;;;47397:30;47463:34;47443:18;;;47436:62;-1:-1:-1;;;47514:18:178;;;47507:36;47560:19;;2401:73:57::1;47183:402:178::0;2401:73:57::1;2484:28;2503:8;2484:18;:28::i;40931:227:3:-:0;40979:7;41019:17;41002:13;:34;40998:154;;;-1:-1:-1;41059:17:3;;;40931:227::o;40998:154::-;41114:27;:25;:27::i;:::-;41107:34;;40931:227;:::o;4911:425:27:-;2285:14;;;;;;;;;-1:-1:-1;;;;;2285:14:27;-1:-1:-1;;;;;2285:23:27;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2271:39:27;:10;-1:-1:-1;;;;;2271:39:27;;2263:94;;;;-1:-1:-1;;;2263:94:27;;;;;;;:::i;:::-;5164:7:::1;;5163:8;5141:15;5140:16;5128:7;;5127:8;5126:31;5125:47;5104:138;;;::::0;-1:-1:-1;;;5104:138:27;;47792:2:178;5104:138:27::1;::::0;::::1;47774:21:178::0;47831:2;47811:18;;;47804:30;47870:34;47850:18;;;47843:62;47941:26;47921:18;;;47914:54;47985:19;;5104:138:27::1;47590:420:178::0;5104:138:27::1;5252:7;:25:::0;;;5292:37:::1;::::0;1014:25:178;;;5301:10:27::1;::::0;5292:37:::1;::::0;1002:2:178;987:18;5292:37:27::1;868:177:178::0;34890:2884:3;35105:7;-1:-1:-1;;;;;35145:20:3;;35124:135;;;;-1:-1:-1;;;35124:135:3;;48217:2:178;35124:135:3;;;48199:21:178;48256:2;48236:18;;;48229:30;48295:34;48275:18;;;48268:62;48366:34;48346:18;;;48339:62;-1:-1:-1;;;48417:19:178;;;48410:47;48474:19;;35124:135:3;48015:484:178;35124:135:3;35277:17;;35269:112;;;;-1:-1:-1;;;35269:112:3;;48706:2:178;35269:112:3;;;48688:21:178;48745:2;48725:18;;;48718:30;48784:34;48764:18;;;48757:62;48855:34;48835:18;;;48828:62;-1:-1:-1;;;48906:19:178;;;48899:44;48960:19;;35269:112:3;48504:481:178;35269:112:3;35535:9;35530:1518;35554:10;:17;35550:1;:21;35530:1518;;;-1:-1:-1;;;;;35638:22:3;;;35634:166;;35680:105;35715:8;35733:6;35751:10;35762:1;35751:13;;;;;;;;:::i;:::-;;;;;;;35774:6;35781:1;35774:9;;;;;;;;:::i;:::-;;;;;;;35680:23;:105::i;:::-;2108:42;-1:-1:-1;;;;;35891:39:3;:10;35902:1;35891:13;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;35891:39:3;;35887:1091;;;36399:15;-1:-1:-1;;;;;36399:28:3;;36428:6;36436;36443:1;36436:9;;;;;;;;:::i;:::-;;;;;;;36399:47;;;;;;;;;;;;;;;-1:-1:-1;;;;;49182:32:178;;;;49164:51;;49246:2;49231:18;;49224:34;49152:2;49137:18;;48990:274;36399:47:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35887:1091;;;36524:10;-1:-1:-1;;;;;36514:20:3;:6;-1:-1:-1;;;;;36514:20:3;;:84;;;;36539:15;-1:-1:-1;;;;;36539:44:3;;36584:10;36595:1;36584:13;;;;;;;;:::i;:::-;;;;;;;36539:59;;;;;;;;;;;;;;-1:-1:-1;;;;;9831:32:178;;;;9813:51;;9801:2;9786:18;;9642:228;36539:59:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36538:60;36514:84;36485:287;;;;-1:-1:-1;;;36485:287:3;;49471:2:178;36485:287:3;;;49453:21:178;49510:3;49490:18;;;49483:31;;;49550:34;49530:18;;;49523:62;49621:34;49601:18;;;49594:62;49693:34;49672:19;;;49665:63;49765:34;49744:19;;;49737:63;-1:-1:-1;;;49816:19:178;;;49809:35;49861:19;;36485:287:3;49269:617:178;36485:287:3;36901:15;-1:-1:-1;;;;;36901:28:3;;36930:6;36938:10;36949:1;36938:13;;;;;;;;:::i;:::-;;;;;;;36953:6;36960:1;36953:9;;;;;;;;:::i;:::-;;;;;;;36901:62;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35887:1091;37020:3;;35530:1518;;;-1:-1:-1;;;;;;37135:35:3;;37119:13;37135:35;;;:27;:35;;;;;;;;;;;37180:37;37135:35;37180:37;:::i;:::-;;;;;;37228:28;37259:257;;;;;;;;37292:6;-1:-1:-1;;;;;37259:257:3;;;;;37325:8;-1:-1:-1;;;;;37259:257:3;;;;;37359:10;-1:-1:-1;;;;;37259:257:3;;;;;37390:5;37259:257;;;;37428:12;37259:257;;;;;;37467:10;37259:257;;;;37499:6;37259:257;;;37228:288;;37527:22;37552:35;37576:10;37552:23;:35::i;:::-;37635:34;;;;:18;:34;;;;;;;:41;;-1:-1:-1;;37635:41:3;37672:4;37635:41;;;37692:44;37527:60;;-1:-1:-1;37692:44:3;;;;37527:60;;37725:10;;37692:44;:::i;:::-;;;;;;;;37753:14;34890:2884;-1:-1:-1;;;;;;;;34890:2884:3:o;23895:907::-;24074:1;24027:35;;;;:18;:35;:::i;:::-;-1:-1:-1;;;;;24027:49:3;;;24006:180;;;;-1:-1:-1;;;24006:180:3;;50491:2:178;24006:180:3;;;50473:21:178;50530:2;50510:18;;;50503:30;50569:34;50549:18;;;50542:62;50640:34;50620:18;;;50613:62;-1:-1:-1;;;50691:19:178;;;50684:51;50752:19;;24006:180:3;50289:488:178;24006:180:3;1964:15;24217:43;;;;;;;;:::i;:::-;:79;;;;24196:234;;;;-1:-1:-1;;;24196:234:3;;51234:2:178;24196:234:3;;;51216:21:178;51273:3;51253:18;;;51246:31;51313:34;51293:18;;;51286:62;51384:34;51364:18;;;51357:62;51456:34;51435:19;;;51428:63;-1:-1:-1;;;51507:19:178;;;51500:43;51560:19;;24196:234:3;51032:553:178;24196:234:3;-1:-1:-1;;;;;24508:26:3;;;;;;:16;:26;;;;;;;:51;;;-1:-1:-1;;;24508:51:3;;;;;24461:43;;;;;;;;;:::i;:::-;:98;;;;24440:228;;;;-1:-1:-1;;;24440:228:3;;51792:2:178;24440:228:3;;;51774:21:178;51831:2;51811:18;;;51804:30;51870:34;51850:18;;;51843:62;51941:34;51921:18;;;51914:62;-1:-1:-1;;;51992:19:178;;;51985:50;52052:19;;24440:228:3;51590:487:178;24440:228:3;-1:-1:-1;;;;;24678:26:3;;;;;;:16;:26;;;;;24707:18;;24678:47;24707:18;24678:26;:47;:::i;:::-;-1:-1:-1;;24740:55:3;;24764:10;;24740:55;;;;24776:18;;24740:55;:::i;25632:2763::-;5712:7:27;;1403:1:3;;5683::27;5712:14;;;5711:24;2767:14;2759:52;;;;-1:-1:-1;;;2759:52:27;;;;;;;:::i;:::-;25869:19:3::1;25881:6;25869:11;:19::i;:::-;25868:20;25860:98;;;::::0;-1:-1:-1;;;25860:98:3;;53247:2:178;25860:98:3::1;::::0;::::1;53229:21:178::0;53286:2;53266:18;;;53259:30;53325:34;53305:18;;;53298:62;53396:34;53376:18;;;53369:62;-1:-1:-1;;;53447:19:178;;;53440:32;53489:19;;25860:98:3::1;53045:469:178::0;25860:98:3::1;25976:20;25987:8;25976:10;:20::i;:::-;25968:102;;;::::0;-1:-1:-1;;;25968:102:3;;53721:2:178;25968:102:3::1;::::0;::::1;53703:21:178::0;53760:2;53740:18;;;53733:30;53799:34;53779:18;;;53772:62;53870:34;53850:18;;;53843:62;-1:-1:-1;;;53921:19:178;;;53914:36;53967:19;;25968:102:3::1;53519:473:178::0;25968:102:3::1;-1:-1:-1::0;;;;;26236:26:3;;::::1;26206:27;26236:26:::0;;;:16:::1;:26;::::0;;;;:45:::1;;::::0;::::1;26698:33:::0;;;::::1;::::0;:70:::1;;-1:-1:-1::0;26735:10:3::1;-1:-1:-1::0;;;;;26735:33:3;::::1;;;26698:70;:96;;;;-1:-1:-1::0;26772:10:3::1;-1:-1:-1::0;;;;;26772:22:3;::::1;;;26698:96;26694:1171;;;26914:15;26877:26;:33;;;:52;;26852:166;;;::::0;-1:-1:-1;;;26852:166:3;;54199:2:178;26852:166:3::1;::::0;::::1;54181:21:178::0;54238:2;54218:18;;;54211:30;54277:34;54257:18;;;54250:62;54348:25;54328:18;;;54321:53;54391:19;;26852:166:3::1;53997:419:178::0;26852:166:3::1;-1:-1:-1::0;;;;;27150:50:3;::::1;;::::0;;;:29:::1;:50;::::0;;;;;;;:64;;;;;;;;;::::1;;27149:65;27124:179;;;::::0;-1:-1:-1;;;27124:179:3;;54623:2:178;27124:179:3::1;::::0;::::1;54605:21:178::0;54662:2;54642:18;;;54635:30;54701:34;54681:18;;;54674:62;54772:25;54752:18;;;54745:53;54815:19;;27124:179:3::1;54421:419:178::0;27124:179:3::1;-1:-1:-1::0;;;;;27317:50:3;::::1;;::::0;;;:29:::1;:50;::::0;;;;;;;:64;;;;;;;:71;;-1:-1:-1;;27317:71:3::1;27384:4;27317:71;::::0;;27581:33;::::1;::::0;27473:155:::1;::::0;27528:6;;27536:8;;27347:19;;27368:12;;27473:37:::1;:155::i;:::-;27444:184;;27701:153;27763:19;27784:18;27804:26;:36;;;27701:44;:153::i;:::-;26796:1069;26694:1171;-1:-1:-1::0;;;;;27968:19:3;;::::1;;::::0;;;:11:::1;:19;::::0;;;;;:30;;-1:-1:-1;;;;;;27968:30:3::1;::::0;;::::1;::::0;;::::1;::::0;;28013:33;::::1;::::0;27968:19;28013:33:::1;28058:29;28089:23:::0;28116:28:::1;28137:6;28116:20;:28::i;:::-;28057:87;;;;28160:9;28155:234;28179:10;:17;28175:1;:21;28155:234;;;28213:105;28248:8;28266:6;28284:10;28295:1;28284:13;;;;;;;;:::i;:::-;;;;;;;28307:6;28314:1;28307:9;;;;;;;;:::i;:::-;;;;;;;28213:23;:105::i;:::-;28361:3;;28155:234;;6012:360:27::0;-1:-1:-1;;;;;6115:40:27;;6094:160;;;;-1:-1:-1;;;6094:160:27;;55047:2:178;6094:160:27;;;55029:21:178;55086:2;55066:18;;;55059:30;55125:34;55105:18;;;55098:62;55196:34;55176:18;;;55169:62;-1:-1:-1;;;55247:19:178;;;55240:40;55297:19;;6094:160:27;54845:477:178;6094:160:27;6287:14;;6269:52;;;-1:-1:-1;;;;;6287:14:27;;;55587:34:178;;55657:15;;;55652:2;55637:18;;55630:43;6269:52:27;;55522:18:178;6269:52:27;;;;;;;6331:14;:34;;-1:-1:-1;;;;;;6331:34:27;-1:-1:-1;;;;;6331:34:27;;;;;;;;;;6012:360::o;34114:308:3:-;-1:-1:-1;;;;;34297:24:3;;;;;;;:14;:24;;;;;;;;:34;;;;;;;;;;;:44;;34335:6;;34297:24;:44;;34335:6;;34297:44;:::i;:::-;;;;;;;;34380:8;-1:-1:-1;;;;;34356:59:3;;34390:6;34398:8;34408:6;34356:59;;;;;;;;:::i;1599:130:57:-;1513:6;;-1:-1:-1;;;;;1513:6:57;921:10:63;1662:23:57;1654:68;;;;-1:-1:-1;;;1654:68:57;;55886:2:178;1654:68:57;;;55868:21:178;;;55905:18;;;55898:30;55964:34;55944:18;;;55937:62;56016:18;;1654:68:57;55684:356:178;39232:1227:3;39414:51;;;39393:172;;;;-1:-1:-1;;;39393:172:3;;56247:2:178;39393:172:3;;;56229:21:178;56286:2;56266:18;;;56259:30;56325:34;56305:18;;;56298:62;56396:34;56376:18;;;56369:62;-1:-1:-1;;;56447:19:178;;;56440:41;56498:19;;39393:172:3;56045:478:178;39393:172:3;39595:11;39575:17;39623:830;39647:9;39643:1;:13;39623:830;;;39677:18;39698:11;;39710:1;39698:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;39770:39:3;;39726:41;39770:39;;;:29;:39;;;;;;39677:35;;-1:-1:-1;39866:22:3;;39889:1;39866:25;;;;;;;:::i;:::-;;;;;;;39823:68;;2111:6:4;39930:32:3;:63;;39905:237;;;;-1:-1:-1;;;39905:237:3;;56730:2:178;39905:237:3;;;56712:21:178;56769:3;56749:18;;;56742:31;56809:34;56789:18;;;56782:62;56880:34;56860:18;;;56853:62;56952:34;56931:19;;;56924:63;-1:-1:-1;;;57003:19:178;;;56996:50;57063:19;;39905:237:3;56528:560:178;39905:237:3;-1:-1:-1;;;;;40208:39:3;;;;;;:29;:39;;;;;;;;;:74;;;40301:141;;57313:51:178;;;57380:18;;57373:34;;;57423:18;;57416:34;;;40301:141:3;;57301:2:178;57286:18;40301:141:3;;;;;;;39663:790;;;39658:3;;;;:::i;:::-;;;39623:830;;;;39383:1076;39232:1227;;;;:::o;2943:441:27:-;3077:14;;-1:-1:-1;;;;;3077:14:27;3069:37;:79;;;;-1:-1:-1;;;;;;3110:38:27;;;;3069:79;3048:197;;;;-1:-1:-1;;;3048:197:27;;57663:2:178;3048:197:27;;;57645:21:178;57702:2;57682:18;;;57675:30;57741:34;57721:18;;;57714:62;57812:34;57792:18;;;57785:62;-1:-1:-1;;;57863:19:178;;;57856:38;57911:19;;3048:197:27;57461:475:178;3048:197:27;3255:7;:26;;;3296:36;;1014:25:178;;;3303:10:27;;3296:36;;1002:2:178;987:18;3296:36:27;;;;;;;3342:35;3361:15;3342:18;:35::i;49090:193:3:-;49224:19;;;;;;;;;;;-1:-1:-1;;;49224:19:3;;;;;49186:89;;699:80:4;49186:89:3;;;58172:25:178;49214:30:3;58213:18:178;;;58206:34;49246:13:3;58256:18:178;;;58249:34;49269:4:3;58299:18:178;;;;58292:60;;;;49186:89:3;;;;;;;;;;58144:19:178;;;;49186:89:3;;;49176:100;;;;;;49090:193::o;2673:187:57:-;2765:6;;;-1:-1:-1;;;;;2781:17:57;;;-1:-1:-1;;;;;;2781:17:57;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;38531:472:3:-;2111:6:4;38644:25:3;:56;;38623:216;;;;-1:-1:-1;;;38623:216:3;;58565:2:178;38623:216:3;;;58547:21:178;58604:3;58584:18;;;58577:31;58644:34;58624:18;;;58617:62;58715:34;58695:18;;;58688:62;58787:34;58766:19;;;58759:63;-1:-1:-1;;;58838:19:178;;;58831:48;58896:19;;38623:216:3;58363:558:178;38623:216:3;38882:24;;38854:80;;;41015:25:178;;;41071:2;41056:18;;41049:34;;;38854:80:3;;40988:18:178;38854:80:3;;;;;;;38944:24;:52;38531:472::o;33736:247::-;-1:-1:-1;;;;;33858:24:3;;;;;;;:14;:24;;;;;;;;:34;;;;;;;;;;;:44;;33896:6;;33858:24;:44;;33896:6;;33858:44;:::i;:::-;;;;;;;;33941:8;-1:-1:-1;;;;;33917:59:3;;33951:6;33959:8;33969:6;33917:59;;;;;;;;:::i;28738:4867::-;28944:22;28969:35;;28993:10;28969:35;:::i;:::-;29036:34;;;;:18;:34;;;;;;28944:60;;-1:-1:-1;29036:34:3;;29015:136;;;;-1:-1:-1;;;29015:136:3;;59588:2:178;29015:136:3;;;59570:21:178;59627:2;59607:18;;;59600:30;-1:-1:-1;;;;;;;;;;;59646:18:178;;;59639:62;59737:34;59717:18;;;59710:62;-1:-1:-1;;;59788:19:178;;;59781:34;59832:19;;29015:136:3;59386:471:178;29015:136:3;29207:24;;29235:12;;29183:21;;;;;;;;:::i;:::-;:48;;;;;;:::i;:::-;:64;;29162:206;;;;-1:-1:-1;;;29162:206:3;;60064:2:178;29162:206:3;;;60046:21:178;60103:2;60083:18;;;60076:30;-1:-1:-1;;;;;;;;;;;60122:18:178;;;60115:62;60213:34;60193:18;;;60186:62;60285:33;60264:19;;;60257:62;60336:19;;29162:206:3;59862:499:178;29162:206:3;29414:21;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29400:35:3;:10;-1:-1:-1;;;;;29400:35:3;;29379:162;;;;-1:-1:-1;;;29379:162:3;;60568:2:178;29379:162:3;;;60550:21:178;60607:2;60587:18;;;60580:30;-1:-1:-1;;;;;;;;;;;60626:18:178;;;60619:62;60717:34;60697:18;;;60690:62;-1:-1:-1;;;60768:19:178;;;60761:47;60825:19;;29379:162:3;60366:484:178;29379:162:3;29556:15;29552:216;;;29629:21;;;;:10;:21;:::i;:::-;29612:45;;;-1:-1:-1;29587:170:3;;;;-1:-1:-1;;;29587:170:3;;61057:2:178;29587:170:3;;;61039:21:178;61096:2;61076:18;;;61069:30;-1:-1:-1;;;;;;;;;;;61115:18:178;;;61108:62;61206:34;61186:18;;;61179:62;-1:-1:-1;;;61257:19:178;;;61250:33;61300:19;;29587:170:3;60855:470:178;29587:170:3;29839:34;;;;:18;:34;;;;;29832:41;;-1:-1:-1;;29832:41:3;;;30015:3533;;;;30055:9;30050:732;30074:21;;;;:10;:21;:::i;:::-;:28;;30070:1;:32;30050:732;;;30235:12;30176:29;:55;30206:21;;;;:10;:21;:::i;:::-;30228:1;30206:24;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;30176:55:3;;;;;;;;;;;;-1:-1:-1;30176:55:3;;30152:21;;;;;;;;:::i;:::-;:79;;;;;;:::i;:::-;:95;;30123:276;;;;-1:-1:-1;;;30123:276:3;;;;;;;:::i;:::-;30418:278;30472:17;;;;:10;:17;:::i;:::-;30523:10;30565:21;;;;:10;:21;:::i;:::-;30587:1;30565:24;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;30619:17;;;;:10;:17;:::i;:::-;30637:1;30619:20;;;;;;;:::i;:::-;;;;;;;30668:6;;30675:1;30668:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;30418:23;:278::i;:::-;30746:3;;30050:732;;;;30015:3533;;;30993:10;30955:23;30981;;;:11;:23;;;;;;-1:-1:-1;;;;;30981:23:3;;31018:2520;31042:21;;;;:10;:21;:::i;:::-;:28;;31038:1;:32;31018:2520;;;31203:12;31144:29;:55;31174:21;;;;:10;:21;:::i;:::-;31196:1;31174:24;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;31144:55:3;;;;;;;;;;;;-1:-1:-1;31144:55:3;;31120:21;;;;;;;;:::i;:::-;:79;;;;;;:::i;:::-;:95;;31091:276;;;;-1:-1:-1;;;31091:276:3;;;;;;;:::i;:::-;2108:42;31648:21;;;;:10;:21;:::i;:::-;31670:1;31648:24;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;31648:50:3;;31644:1809;;;31722:14;31739:17;;;;:10;:17;:::i;:::-;31722:34;-1:-1:-1;32039:36:3;-1:-1:-1;;;;;32102:15:3;:25;;31722:34;32155:17;;;;:10;:17;:::i;:::-;32173:1;32155:20;;;;;;;:::i;:::-;32102:75;;-1:-1:-1;;;;;;32102:75:3;;;;;;;-1:-1:-1;;;;;49182:32:178;;;32102:75:3;;;49164:51:178;32155:20:3;;;;;;;49231:18:178;;;49224:34;-1:-1:-1;49137:18:178;;32102:75:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;32226:19:3;;;32199:24;32226:19;;;:11;:19;;;;;;32039:138;;-1:-1:-1;32226:19:3;32325:30;;32321:451;;32383:366;32447:16;32586:6;32632:21;;;;:10;:21;:::i;:::-;32654:1;32632:24;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;32694:28;32383:23;:366::i;:::-;31700:1090;;;31644:1809;;;32818:15;-1:-1:-1;;;;;32818:25:3;;32844:10;32856:6;;32863:1;32856:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;32867:21;;;;:10;:21;:::i;:::-;32889:1;32867:24;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;32893:17;;;;:10;:17;:::i;:::-;32911:1;32893:20;;;;;;;:::i;:::-;32818:96;;;;;;-1:-1:-1;;;;;;32818:96:3;;;-1:-1:-1;;;;;62668:15:178;;;32818:96:3;;;62650:34:178;62720:15;;;62700:18;;;62693:43;62772:15;;;;62752:18;;;62745:43;32893:20:3;;;;;;62804:18:178;;;62797:34;62584:19;;;-1:-1:-1;32818:96:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;32994:29:3;;;32990:445;;33051:361;33115:15;33253:10;33303:21;;;;:10;:21;:::i;:::-;33325:1;33303:24;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;33365:17;;;;:10;:17;:::i;:::-;33383:1;33365:20;;;;;;;:::i;:::-;;;;;;;33051:23;:361::i;:::-;33502:3;;31018:2520;;;;30941:2607;30015:3533;33563:35;;1014:25:178;;;33563:35:3;;1002:2:178;987:18;33563:35:3;;;;;;;28934:4671;28738:4867;;;;;:::o;974:926:23:-;-1:-1:-1;;;;;1476:19:61;;;:23;1410:484:23;;1481:56;;-1:-1:-1;;;1481:56:23;;;1541:18;-1:-1:-1;;;;;1481:33:23;;;574:10;;1481:56;;1515:10;;1527:9;;1481:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1481:78:23;;1456:220;;;;-1:-1:-1;;;1456:220:23;;64010:2:178;1456:220:23;;;63992:21:178;64049:2;64029:18;;;64022:30;64088:34;64068:18;;;64061:62;64159:34;64139:18;;;64132:62;-1:-1:-1;;;64210:19:178;;;64203:50;64270:19;;1456:220:23;63808:487:178;1410:484:23;1772:6;-1:-1:-1;;;;;1732:46:23;:36;1746:10;1758:9;1732:13;:36::i;:::-;-1:-1:-1;;;;;1732:46:23;;1707:176;;;;-1:-1:-1;;;1707:176:23;;64502:2:178;1707:176:23;;;64484:21:178;64541:2;64521:18;;;64514:30;64580:34;64560:18;;;64553:62;64651:34;64631:18;;;64624:62;-1:-1:-1;;;64702:19:178;;;64695:38;64750:19;;1707:176:23;64300:475:178;38065:460:3;-1:-1:-1;;;;;38253:34:3;;2108:42;38253:34;38249:270;;;38303:99;;-1:-1:-1;;;38303:99:3;;-1:-1:-1;;;;;38303:15:3;:38;;;;:99;;38353:6;;38374:10;;38394:6;;38303:99;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38249:270;;;38433:75;;-1:-1:-1;;;38433:75:3;;-1:-1:-1;;;;;65481:15:178;;;38433:75:3;;;65463:34:178;65533:15;;;65513:18;;;65506:43;65565:18;;;65558:34;;;65628:15;;;65608:18;;;65601:43;38433:15:3;:38;;;;65397:19:178;;38433:75:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38249:270;38065:460;;;;;:::o;4402:227:92:-;4480:7;4500:17;4519:18;4541:27;4552:4;4558:9;4541:10;:27::i;:::-;4499:69;;;;4578:18;4590:5;4578:11;:18::i;2243:1373::-;2324:7;2333:12;2554:9;:16;2574:2;2554:22;2550:1060;;;2890:4;2875:20;;2869:27;2939:4;2924:20;;2918:27;2996:4;2981:20;;2975:27;2592:9;2967:36;3037:25;3048:4;2967:36;2869:27;2918;3037:10;:25::i;:::-;3030:32;;;;;;;;;2550:1060;3083:9;:16;3103:2;3083:22;3079:531;;;3399:4;3384:20;;3378:27;3449:4;3434:20;;3428:27;3489:23;3500:4;3378:27;3428;3489:10;:23::i;:::-;3482:30;;;;;;;;3079:531;-1:-1:-1;3559:1:92;;-1:-1:-1;3563:35:92;3079:531;2243:1373;;;;;:::o;548:631::-;625:20;616:5;:29;;;;;;;;:::i;:::-;;612:561;;;548:631;:::o;612:561::-;721:29;712:5;:38;;;;;;;;:::i;:::-;;708:465;;;766:34;;-1:-1:-1;;;766:34:92;;65989:2:178;766:34:92;;;65971:21:178;66028:2;66008:18;;;66001:30;66067:26;66047:18;;;66040:54;66111:18;;766:34:92;65787:348:178;708:465:92;830:35;821:5;:44;;;;;;;;:::i;:::-;;817:356;;;881:41;;-1:-1:-1;;;881:41:92;;66342:2:178;881:41:92;;;66324:21:178;66381:2;66361:18;;;66354:30;66420:33;66400:18;;;66393:61;66471:18;;881:41:92;66140:355:178;817:356:92;952:30;943:5;:39;;;;;;;;:::i;:::-;;939:234;;;998:44;;-1:-1:-1;;;998:44:92;;66702:2:178;998:44:92;;;66684:21:178;66741:2;66721:18;;;66714:30;66780:34;66760:18;;;66753:62;-1:-1:-1;;;66831:18:178;;;66824:32;66873:19;;998:44:92;66500:398:178;939:234:92;1072:30;1063:5;:39;;;;;;;;:::i;:::-;;1059:114;;;1118:44;;-1:-1:-1;;;1118:44:92;;67105:2:178;1118:44:92;;;67087:21:178;67144:2;67124:18;;;67117:30;67183:34;67163:18;;;67156:62;-1:-1:-1;;;67234:18:178;;;67227:32;67276:19;;1118:44:92;66903:398:178;5750:1565:92;5838:7;;6762:66;6749:79;;6745:161;;;-1:-1:-1;6860:1:92;;-1:-1:-1;6864:30:92;6844:51;;6745:161;6919:1;:7;;6924:2;6919:7;;:18;;;;;6930:1;:7;;6935:2;6930:7;;6919:18;6915:100;;;-1:-1:-1;6969:1:92;;-1:-1:-1;6973:30:92;6953:51;;6915:100;7126:24;;;7109:14;7126:24;;;;;;;;;67533:25:178;;;67606:4;67594:17;;67574:18;;;67567:45;;;;67628:18;;;67621:34;;;67671:18;;;67664:34;;;7126:24:92;;67505:19:178;;7126:24:92;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7126:24:92;;-1:-1:-1;;7126:24:92;;;-1:-1:-1;;;;;;;7164:20:92;;7160:101;;7216:1;7220:29;7200:50;;;;;;;7160:101;7279:6;-1:-1:-1;7287:20:92;;-1:-1:-1;5750:1565:92;;;;;;;;:::o;4883:306::-;4963:7;;-1:-1:-1;;;;;5008:80:92;;4963:7;5114:25;5130:3;5115:18;;;5137:2;5114:25;:::i;:::-;5098:42;;5157:25;5168:4;5174:1;5177;5180;5157:10;:25::i;:::-;5150:32;;;;;;4883:306;;;;;;:::o;14:378:178:-;88:8;98:6;152:3;145:4;137:6;133:17;129:27;119:55;;170:1;167;160:12;119:55;-1:-1:-1;193:20:178;;-1:-1:-1;;;;;225:30:178;;222:50;;;268:1;265;258:12;222:50;305:4;297:6;293:17;281:29;;365:3;358:4;348:6;345:1;341:14;333:6;329:27;325:38;322:47;319:67;;;382:1;379;372:12;397:466;501:6;509;562:2;550:9;541:7;537:23;533:32;530:52;;;578:1;575;568:12;530:52;618:9;605:23;-1:-1:-1;;;;;643:6:178;640:30;637:50;;;683:1;680;673:12;637:50;722:81;795:7;786:6;775:9;771:22;722:81;:::i;:::-;822:8;;696:107;;-1:-1:-1;397:466:178;-1:-1:-1;;;;397:466:178:o;1232:131::-;-1:-1:-1;;;;;1307:31:178;;1297:42;;1287:70;;1353:1;1350;1343:12;1368:134;1436:20;;1465:31;1436:20;1465:31;:::i;:::-;1368:134;;;:::o;1507:667::-;1602:6;1610;1618;1626;1634;1687:3;1675:9;1666:7;1662:23;1658:33;1655:53;;;1704:1;1701;1694:12;1655:53;1743:9;1730:23;1762:31;1787:5;1762:31;:::i;:::-;1812:5;-1:-1:-1;1869:2:178;1854:18;;1841:32;1882:33;1841:32;1882:33;:::i;:::-;1934:7;-1:-1:-1;1993:2:178;1978:18;;1965:32;2006:33;1965:32;2006:33;:::i;:::-;1507:667;;;;-1:-1:-1;2058:7:178;;2112:2;2097:18;;2084:32;;-1:-1:-1;2163:3:178;2148:19;2135:33;;1507:667;-1:-1:-1;;1507:667:178:o;2674:632::-;2845:2;2897:21;;;2967:13;;2870:18;;;2989:22;;;2816:4;;2845:2;3068:15;;;;3042:2;3027:18;;;2816:4;3111:169;3125:6;3122:1;3119:13;3111:169;;;3186:13;;3174:26;;3255:15;;;;3220:12;;;;3147:1;3140:9;3111:169;;;-1:-1:-1;3297:3:178;;2674:632;-1:-1:-1;;;;;;2674:632:178:o;3311:163::-;3379:5;3424:2;3415:6;3410:3;3406:16;3402:25;3399:45;;;3440:1;3437;3430:12;3399:45;-1:-1:-1;3462:6:178;3311:163;-1:-1:-1;3311:163:178:o;3479:348::-;3531:8;3541:6;3595:3;3588:4;3580:6;3576:17;3572:27;3562:55;;3613:1;3610;3603:12;3562:55;-1:-1:-1;3636:20:178;;-1:-1:-1;;;;;3668:30:178;;3665:50;;;3711:1;3708;3701:12;3665:50;3748:4;3740:6;3736:17;3724:29;;3800:3;3793:4;3784:6;3776;3772:19;3768:30;3765:39;3762:59;;;3817:1;3814;3807:12;3832:554;3947:6;3955;3963;4016:3;4004:9;3995:7;3991:23;3987:33;3984:53;;;4033:1;4030;4023:12;3984:53;4056:62;4110:7;4099:9;4056:62;:::i;:::-;4046:72;;4169:2;4158:9;4154:18;4141:32;-1:-1:-1;;;;;4188:6:178;4185:30;4182:50;;;4228:1;4225;4218:12;4182:50;4267:59;4318:7;4309:6;4298:9;4294:22;4267:59;:::i;:::-;3832:554;;4345:8;;-1:-1:-1;4241:85:178;;-1:-1:-1;;;;3832:554:178:o;4391:271::-;4474:6;4527:2;4515:9;4506:7;4502:23;4498:32;4495:52;;;4543:1;4540;4533:12;4495:52;4582:9;4569:23;4601:31;4626:5;4601:31;:::i;:::-;4651:5;4391:271;-1:-1:-1;;;4391:271:178:o;4667:474::-;4762:6;4770;4778;4831:2;4819:9;4810:7;4806:23;4802:32;4799:52;;;4847:1;4844;4837:12;4799:52;4886:9;4873:23;4905:31;4930:5;4905:31;:::i;:::-;4955:5;-1:-1:-1;5012:2:178;4997:18;;4984:32;5025:33;4984:32;5025:33;:::i;:::-;4667:474;;5077:7;;-1:-1:-1;;;5131:2:178;5116:18;;;;5103:32;;4667:474::o;5146:180::-;5205:6;5258:2;5246:9;5237:7;5233:23;5229:32;5226:52;;;5274:1;5271;5264:12;5226:52;-1:-1:-1;5297:23:178;;5146:180;-1:-1:-1;5146:180:178:o;5331:813::-;5471:6;5479;5487;5495;5548:2;5536:9;5527:7;5523:23;5519:32;5516:52;;;5564:1;5561;5554:12;5516:52;5604:9;5591:23;-1:-1:-1;;;;;5674:2:178;5666:6;5663:14;5660:34;;;5690:1;5687;5680:12;5660:34;5729:81;5802:7;5793:6;5782:9;5778:22;5729:81;:::i;:::-;5829:8;;-1:-1:-1;5703:107:178;-1:-1:-1;5917:2:178;5902:18;;5889:32;;-1:-1:-1;5933:16:178;;;5930:36;;;5962:1;5959;5952:12;5930:36;;6001:83;6076:7;6065:8;6054:9;6050:24;6001:83;:::i;:::-;5331:813;;;;-1:-1:-1;6103:8:178;-1:-1:-1;;;;5331:813:178:o;6862:1252::-;7062:6;7070;7078;7086;7094;7102;7110;7118;7171:3;7159:9;7150:7;7146:23;7142:33;7139:53;;;7188:1;7185;7178:12;7139:53;7227:9;7214:23;7246:31;7271:5;7246:31;:::i;:::-;7296:5;-1:-1:-1;7353:2:178;7338:18;;7325:32;7366:33;7325:32;7366:33;:::i;:::-;7418:7;-1:-1:-1;7472:2:178;7457:18;;7444:32;;-1:-1:-1;7523:2:178;7508:18;;7495:32;;-1:-1:-1;7578:3:178;7563:19;;7550:33;-1:-1:-1;;;;;7632:14:178;;;7629:34;;;7659:1;7656;7649:12;7629:34;7698:81;7771:7;7762:6;7751:9;7747:22;7698:81;:::i;:::-;7798:8;;-1:-1:-1;7672:107:178;-1:-1:-1;7886:3:178;7871:19;;7858:33;;-1:-1:-1;7903:16:178;;;7900:36;;;7932:1;7929;7922:12;7900:36;;7971:83;8046:7;8035:8;8024:9;8020:24;7971:83;:::i;:::-;6862:1252;;;;-1:-1:-1;6862:1252:178;;-1:-1:-1;6862:1252:178;;;;;;8073:8;-1:-1:-1;;;6862:1252:178:o;8119:1518::-;8383:6;8391;8399;8407;8415;8423;8431;8439;8492:3;8480:9;8471:7;8467:23;8463:33;8460:53;;;8509:1;8506;8499:12;8460:53;8549:9;8536:23;-1:-1:-1;;;;;8619:2:178;8611:6;8608:14;8605:34;;;8635:1;8632;8625:12;8605:34;8674:81;8747:7;8738:6;8727:9;8723:22;8674:81;:::i;:::-;8774:8;;-1:-1:-1;8648:107:178;-1:-1:-1;8862:2:178;8847:18;;8834:32;;-1:-1:-1;8878:16:178;;;8875:36;;;8907:1;8904;8897:12;8875:36;8946:83;9021:7;9010:8;8999:9;8995:24;8946:83;:::i;:::-;9048:8;;-1:-1:-1;8920:109:178;-1:-1:-1;9136:2:178;9121:18;;9108:32;;-1:-1:-1;9152:16:178;;;9149:36;;;9181:1;9178;9171:12;9149:36;9220:83;9295:7;9284:8;9273:9;9269:24;9220:83;:::i;:::-;9322:8;;-1:-1:-1;9194:109:178;-1:-1:-1;9410:2:178;9395:18;;9382:32;;-1:-1:-1;9426:16:178;;;9423:36;;;9455:1;9452;9445:12;10617:127;10678:10;10673:3;10669:20;10666:1;10659:31;10709:4;10706:1;10699:15;10733:4;10730:1;10723:15;10749:253;10821:2;10815:9;10863:4;10851:17;;-1:-1:-1;;;;;10883:34:178;;10919:22;;;10880:62;10877:88;;;10945:18;;:::i;:::-;10981:2;10974:22;10749:253;:::o;11007:257::-;11079:4;11073:11;;;11111:17;;-1:-1:-1;;;;;11143:34:178;;11179:22;;;11140:62;11137:88;;;11205:18;;:::i;11269:253::-;11341:2;11335:9;11383:4;11371:17;;-1:-1:-1;;;;;11403:34:178;;11439:22;;;11400:62;11397:88;;;11465:18;;:::i;11527:275::-;11598:2;11592:9;11663:2;11644:13;;-1:-1:-1;;11640:27:178;11628:40;;-1:-1:-1;;;;;11683:34:178;;11719:22;;;11680:62;11677:88;;;11745:18;;:::i;:::-;11781:2;11774:22;11527:275;;-1:-1:-1;11527:275:178:o;11807:121::-;11892:10;11885:5;11881:22;11874:5;11871:33;11861:61;;11918:1;11915;11908:12;11933:132;12000:20;;12029:30;12000:20;12029:30;:::i;12070:194::-;12141:4;-1:-1:-1;;;;;12166:6:178;12163:30;12160:56;;;12196:18;;:::i;:::-;-1:-1:-1;12241:1:178;12237:14;12253:4;12233:25;;12070:194::o;12269:759::-;12334:5;12387:3;12380:4;12372:6;12368:17;12364:27;12354:55;;12405:1;12402;12395:12;12354:55;12441:6;12428:20;12467:4;12491:71;12507:54;12558:2;12507:54;:::i;:::-;12491:71;:::i;:::-;12596:15;;;12682:1;12678:10;;;;12666:23;;12662:32;;;12627:12;;;;12706:15;;;12703:35;;;12734:1;12731;12724:12;12703:35;12770:2;12762:6;12758:15;12782:217;12798:6;12793:3;12790:15;12782:217;;;12878:3;12865:17;12895:31;12920:5;12895:31;:::i;:::-;12939:18;;12977:12;;;;12815;;12782:217;;;-1:-1:-1;13017:5:178;12269:759;-1:-1:-1;;;;;;12269:759:178:o;13033:673::-;13087:5;13140:3;13133:4;13125:6;13121:17;13117:27;13107:55;;13158:1;13155;13148:12;13107:55;13194:6;13181:20;13220:4;13244:71;13260:54;13311:2;13260:54;:::i;13244:71::-;13349:15;;;13435:1;13431:10;;;;13419:23;;13415:32;;;13380:12;;;;13459:15;;;13456:35;;;13487:1;13484;13477:12;13456:35;13523:2;13515:6;13511:15;13535:142;13551:6;13546:3;13543:15;13535:142;;;13617:17;;13605:30;;13655:12;;;;13568;;13535:142;;13711:939;13768:5;13816:4;13804:9;13799:3;13795:19;13791:30;13788:50;;;13834:1;13831;13824:12;13788:50;13856:22;;:::i;:::-;13847:31;;13901:29;13920:9;13901:29;:::i;:::-;13894:5;13887:44;13963:38;13997:2;13986:9;13982:18;13963:38;:::i;:::-;13958:2;13951:5;13947:14;13940:62;14034:38;14068:2;14057:9;14053:18;14034:38;:::i;:::-;14029:2;14022:5;14018:14;14011:62;14133:2;14122:9;14118:18;14105:32;14100:2;14093:5;14089:14;14082:56;14171:38;14204:3;14193:9;14189:19;14171:38;:::i;:::-;14165:3;14158:5;14154:15;14147:63;14261:3;14250:9;14246:19;14233:33;-1:-1:-1;;;;;14326:2:178;14318:6;14315:14;14312:34;;;14342:1;14339;14332:12;14312:34;14379:68;14443:3;14434:6;14423:9;14419:22;14379:68;:::i;:::-;14373:3;14366:5;14362:15;14355:93;14501:3;14490:9;14486:19;14473:33;14457:49;;14531:2;14521:8;14518:16;14515:36;;;14547:1;14544;14537:12;14515:36;;14584:59;14639:3;14628:8;14617:9;14613:24;14584:59;:::i;:::-;14578:3;14571:5;14567:15;14560:84;;13711:939;;;;:::o;14655:351::-;14742:6;14795:2;14783:9;14774:7;14770:23;14766:32;14763:52;;;14811:1;14808;14801:12;14763:52;14851:9;14838:23;-1:-1:-1;;;;;14876:6:178;14873:30;14870:50;;;14916:1;14913;14906:12;14870:50;14939:61;14992:7;14983:6;14972:9;14968:22;14939:61;:::i;:::-;14929:71;14655:351;-1:-1:-1;;;;14655:351:178:o;15011:269::-;15068:6;15121:2;15109:9;15100:7;15096:23;15092:32;15089:52;;;15137:1;15134;15127:12;15089:52;15176:9;15163:23;15226:4;15219:5;15215:16;15208:5;15205:27;15195:55;;15246:1;15243;15236:12;15285:504;15367:5;15415:4;15403:9;15398:3;15394:19;15390:30;15387:50;;;15433:1;15430;15423:12;15387:50;15455:22;;:::i;:::-;15446:31;;15514:9;15501:23;15533:33;15558:7;15533:33;:::i;:::-;15575:22;;15649:2;15634:18;;15621:32;15697:26;15684:40;;15672:53;;15662:81;;15739:1;15736;15729:12;15662:81;15770:2;15759:14;;15752:31;15763:5;15285:504;-1:-1:-1;;15285:504:178:o;15794:2352::-;15929:6;15960:2;16003;15991:9;15982:7;15978:23;15974:32;15971:52;;;16019:1;16016;16009:12;15971:52;16059:9;16046:23;-1:-1:-1;;;;;16129:2:178;16121:6;16118:14;16115:34;;;16145:1;16142;16135:12;16115:34;16183:6;16172:9;16168:22;16158:32;;16228:7;16221:4;16217:2;16213:13;16209:27;16199:55;;16250:1;16247;16240:12;16199:55;16286:2;16273:16;16309:71;16325:54;16376:2;16325:54;:::i;16309:71::-;16414:15;;;16496:1;16492:10;;;;16484:19;;16480:28;;;16445:12;;;;16520:19;;;16517:39;;;16552:1;16549;16542:12;16517:39;16584:2;16580;16576:11;16596:1520;16612:6;16607:3;16604:15;16596:1520;;;16698:3;16685:17;16734:2;16721:11;16718:19;16715:109;;;16778:1;16807:2;16803;16796:14;16715:109;16847:20;;16890:4;16918:16;;;-1:-1:-1;;16914:30:178;16910:39;-1:-1:-1;16907:129:178;;;16990:1;17019:2;17015;17008:14;16907:129;17062:22;;:::i;:::-;17134:2;17130;17126:11;17113:25;17167:2;17157:8;17154:16;17151:106;;;17211:1;17240:2;17236;17229:14;17151:106;17284:76;17352:7;17347:2;17336:8;17332:2;17328:17;17324:26;17284:76;:::i;:::-;17277:5;17270:91;;17385:2;17437:3;17433:2;17429:12;17416:26;17471:2;17461:8;17458:16;17455:109;;;17516:1;17546:3;17541;17534:16;17455:109;17600:65;17657:7;17652:2;17641:8;17637:2;17633:17;17629:26;17600:65;:::i;:::-;17595:2;17588:5;17584:14;17577:89;;17690:2;17729:32;17756:3;17752:2;17748:12;17729:32;:::i;:::-;17723:3;17716:5;17712:15;17705:57;17786:4;17775:15;;17827:76;17895:7;17889:3;17885:2;17881:12;17827:76;:::i;:::-;17810:15;;;17803:101;17941:32;17967:4;17959:13;;17941:32;:::i;:::-;17924:15;;;17917:57;18011:31;18030:11;;;18011:31;:::i;:::-;18005:3;17994:15;;17987:56;18056:18;;-1:-1:-1;;18094:12:178;;;;16629;;16596:1520;;;-1:-1:-1;18135:5:178;15794:2352;-1:-1:-1;;;;;;;;15794:2352:178:o;18151:118::-;18237:5;18230:13;18223:21;18216:5;18213:32;18203:60;;18259:1;18256;18249:12;18274:951;18430:6;18438;18446;18454;18462;18515:3;18503:9;18494:7;18490:23;18486:33;18483:53;;;18532:1;18529;18522:12;18483:53;18572:9;18559:23;-1:-1:-1;;;;;18642:2:178;18634:6;18631:14;18628:34;;;18658:1;18655;18648:12;18628:34;18681:22;;;;18737:3;18719:16;;;18715:26;18712:46;;;18754:1;18751;18744:12;18712:46;18777:2;;-1:-1:-1;18832:2:178;18817:18;;18804:32;;18848:16;;;18845:36;;;18877:1;18874;18867:12;18845:36;;18916:83;18991:7;18980:8;18969:9;18965:24;18916:83;:::i;:::-;19018:8;;-1:-1:-1;18890:109:178;-1:-1:-1;;19100:2:178;19085:18;;19072:32;;-1:-1:-1;19154:2:178;19139:18;;19126:32;19167:28;19126:32;19167:28;:::i;:::-;19214:5;19204:15;;;18274:951;;;;;;;;:::o;19230:406::-;19316:6;19324;19377:2;19365:9;19356:7;19352:23;19348:32;19345:52;;;19393:1;19390;19383:12;19345:52;19432:9;19419:23;19451:31;19476:5;19451:31;:::i;:::-;19501:5;-1:-1:-1;19558:2:178;19543:18;;19530:32;19571:33;19530:32;19571:33;:::i;:::-;19623:7;19613:17;;;19230:406;;;;;:::o;19641:862::-;19707:5;19755:4;19743:9;19738:3;19734:19;19730:30;19727:50;;;19773:1;19770;19763:12;19727:50;19795:22;;:::i;:::-;19786:31;;19853:9;19840:23;-1:-1:-1;;;;;19923:2:178;19915:6;19912:14;19909:34;;;19939:1;19936;19929:12;19909:34;19977:6;19966:9;19962:22;19952:32;;20022:3;20015:4;20011:2;20007:13;20003:23;19993:51;;20040:1;20037;20030:12;19993:51;20076:2;20063:16;20098:4;20121:2;20117;20114:10;20111:36;;;20127:18;;:::i;:::-;20169:53;20212:2;20193:13;;-1:-1:-1;;20189:27:178;20185:36;;20169:53;:::i;:::-;20156:66;;20245:2;20238:5;20231:17;20285:3;20280:2;20275;20271;20267:11;20263:20;20260:29;20257:49;;;20302:1;20299;20292:12;20257:49;20357:2;20352;20348;20344:11;20339:2;20332:5;20328:14;20315:45;20401:1;20396:2;20391;20384:5;20380:14;20376:23;20369:34;20426:5;20419;20412:20;20492:2;20481:9;20477:18;20464:32;20459:2;20452:5;20448:14;20441:56;;;;;19641:862;;;;:::o;20508:983::-;20677:6;20685;20693;20701;20709;20762:3;20750:9;20741:7;20737:23;20733:33;20730:53;;;20779:1;20776;20769:12;20730:53;20818:9;20805:23;20837:31;20862:5;20837:31;:::i;:::-;20887:5;-1:-1:-1;20944:2:178;20929:18;;20916:32;20957:33;20916:32;20957:33;:::i;:::-;21009:7;-1:-1:-1;21067:2:178;21052:18;;21039:32;-1:-1:-1;;;;;21120:14:178;;;21117:34;;;21147:1;21144;21137:12;21117:34;21170:70;21232:7;21223:6;21212:9;21208:22;21170:70;:::i;:::-;21160:80;;21293:2;21282:9;21278:18;21265:32;21249:48;;21322:2;21312:8;21309:16;21306:36;;;21338:1;21335;21328:12;21306:36;;21361:72;21425:7;21414:8;21403:9;21399:24;21361:72;:::i;:::-;20508:983;;;;-1:-1:-1;20508:983:178;;21480:3;21465:19;21452:33;;20508:983;-1:-1:-1;;;20508:983:178:o;21728:512::-;21839:6;21847;21900:2;21888:9;21879:7;21875:23;21871:32;21868:52;;;21916:1;21913;21906:12;21868:52;21955:9;21942:23;21974:31;21999:5;21974:31;:::i;:::-;22024:5;-1:-1:-1;22080:2:178;22065:18;;22052:32;-1:-1:-1;;;;;22096:30:178;;22093:50;;;22139:1;22136;22129:12;22093:50;22162:72;22226:7;22217:6;22206:9;22202:22;22162:72;:::i;:::-;22152:82;;;21728:512;;;;;:::o;22245:435::-;22298:3;22336:5;22330:12;22363:6;22358:3;22351:19;22389:4;22418:2;22413:3;22409:12;22402:19;;22455:2;22448:5;22444:14;22476:1;22486:169;22500:6;22497:1;22494:13;22486:169;;;22561:13;;22549:26;;22595:12;;;;22630:15;;;;22522:1;22515:9;22486:169;;;-1:-1:-1;22671:3:178;;22245:435;-1:-1:-1;;;;;22245:435:178:o;22685:261::-;22864:2;22853:9;22846:21;22827:4;22884:56;22936:2;22925:9;22921:18;22913:6;22884:56;:::i;23177:411::-;23248:6;23256;23309:2;23297:9;23288:7;23284:23;23280:32;23277:52;;;23325:1;23322;23315:12;23277:52;23365:9;23352:23;-1:-1:-1;;;;;23390:6:178;23387:30;23384:50;;;23430:1;23427;23420:12;23384:50;23469:59;23520:7;23511:6;23500:9;23496:22;23469:59;:::i;24003:315::-;24071:6;24079;24132:2;24120:9;24111:7;24107:23;24103:32;24100:52;;;24148:1;24145;24138:12;24100:52;24187:9;24174:23;24206:31;24231:5;24206:31;:::i;:::-;24256:5;24308:2;24293:18;;;;24280:32;;-1:-1:-1;;;24003:315:178:o;25146:525::-;25232:6;25240;25248;25256;25309:3;25297:9;25288:7;25284:23;25280:33;25277:53;;;25326:1;25323;25316:12;25277:53;25365:9;25352:23;25384:31;25409:5;25384:31;:::i;:::-;25434:5;-1:-1:-1;25486:2:178;25471:18;;25458:32;;-1:-1:-1;25542:2:178;25527:18;;25514:32;25555:33;25514:32;25555:33;:::i;:::-;25146:525;;;;-1:-1:-1;25607:7:178;;25661:2;25646:18;25633:32;;-1:-1:-1;;25146:525:178:o;25676:472::-;25740:3;25778:5;25772:12;25805:6;25800:3;25793:19;25831:4;25860:2;25855:3;25851:12;25844:19;;25897:2;25890:5;25886:14;25918:1;25928:195;25942:6;25939:1;25936:13;25928:195;;;26007:13;;-1:-1:-1;;;;;26003:39:178;25991:52;;26063:12;;;;26098:15;;;;26039:1;25957:9;25928:195;;26153:494;26428:2;26417:9;26410:21;26391:4;26454:67;26517:2;26506:9;26502:18;26494:6;26454:67;:::i;:::-;26569:9;26561:6;26557:22;26552:2;26541:9;26537:18;26530:50;26597:44;26634:6;26626;26597:44;:::i;26652:572::-;26766:6;26774;26782;26835:2;26823:9;26814:7;26810:23;26806:32;26803:52;;;26851:1;26848;26841:12;26803:52;26890:9;26877:23;26909:31;26934:5;26909:31;:::i;:::-;26959:5;-1:-1:-1;27015:2:178;27000:18;;26987:32;-1:-1:-1;;;;;27031:30:178;;27028:50;;;27074:1;27071;27064:12;27028:50;27097:70;27159:7;27150:6;27139:9;27135:22;27097:70;:::i;:::-;27087:80;;;27214:2;27203:9;27199:18;27186:32;27176:42;;26652:572;;;;;:::o;27229:254::-;27323:6;27376:2;27364:9;27355:7;27351:23;27347:32;27344:52;;;27392:1;27389;27382:12;27344:52;27415:62;27469:7;27458:9;27415:62;:::i;27488:127::-;27549:10;27544:3;27540:20;27537:1;27530:31;27580:4;27577:1;27570:15;27604:4;27601:1;27594:15;27620:127;27681:10;27676:3;27672:20;27669:1;27662:31;27712:4;27709:1;27702:15;27736:4;27733:1;27726:15;27752:135;27791:3;-1:-1:-1;;27812:17:178;;27809:43;;;27832:18;;:::i;:::-;-1:-1:-1;27879:1:178;27868:13;;27752:135::o;28894:349::-;29096:2;29078:21;;;29135:2;29115:18;;;29108:30;29174:27;29169:2;29154:18;;29147:55;29234:2;29219:18;;28894:349::o;29248:339::-;29356:4;29414:11;29401:25;29508:2;29504:7;29493:8;29477:14;29473:29;29469:43;29449:18;29445:68;29435:96;;29527:1;29524;29517:12;29435:96;29548:33;;;;;29248:339;-1:-1:-1;;29248:339:178:o;29592:545::-;29685:4;29691:6;29751:11;29738:25;29845:2;29841:7;29830:8;29814:14;29810:29;29806:43;29786:18;29782:68;29772:96;;29864:1;29861;29854:12;29772:96;29891:33;;29943:20;;;-1:-1:-1;;;;;;29975:30:178;;29972:50;;;30018:1;30015;30008:12;29972:50;30051:4;30039:17;;-1:-1:-1;30102:1:178;30098:14;;;30082;30078:35;30068:46;;30065:66;;;30127:1;30124;30117:12;32042:684;32244:2;32229:18;;32269:20;;32298:31;32269:20;32298:31;:::i;:::-;-1:-1:-1;;;;;32394:14:178;;;32376:33;;32458:4;32446:17;;32433:31;;32473:33;32433:31;32473:33;:::i;:::-;32544:16;32537:4;32522:20;;32515:46;32610:4;32598:17;;32585:31;32625:32;32585:31;32625:32;:::i;:::-;32708:10;32699:7;32695:24;32688:4;32677:9;32673:20;32666:54;;32042:684;;;;:::o;32731:390::-;32890:2;32879:9;32872:21;32929:6;32924:2;32913:9;32909:18;32902:34;32986:6;32978;32973:2;32962:9;32958:18;32945:48;33042:1;33013:22;;;33037:2;33009:31;;;33002:42;;;;33105:2;33084:15;;;-1:-1:-1;;33080:29:178;33065:45;33061:54;;32731:390;-1:-1:-1;32731:390:178:o;33126:251::-;33196:6;33249:2;33237:9;33228:7;33224:23;33220:32;33217:52;;;33265:1;33262;33255:12;33217:52;33297:9;33291:16;33316:31;33341:5;33316:31;:::i;33382:406::-;33584:2;33566:21;;;33623:2;33603:18;;;33596:30;33662:34;33657:2;33642:18;;33635:62;-1:-1:-1;;;33728:2:178;33713:18;;33706:40;33778:3;33763:19;;33382:406::o;33793:419::-;33995:2;33977:21;;;34034:2;34014:18;;;34007:30;34073:34;34068:2;34053:18;;34046:62;34144:25;34139:2;34124:18;;34117:53;34202:3;34187:19;;33793:419::o;34217:245::-;34284:6;34337:2;34325:9;34316:7;34312:23;34308:32;34305:52;;;34353:1;34350;34343:12;34305:52;34385:9;34379:16;34404:28;34426:5;34404:28;:::i;34467:404::-;34669:2;34651:21;;;34708:2;34688:18;;;34681:30;34747:34;34742:2;34727:18;;34720:62;-1:-1:-1;;;34813:2:178;34798:18;;34791:38;34861:3;34846:19;;34467:404::o;36275:328::-;36371:4;36429:11;36416:25;36523:3;36519:8;36508;36492:14;36488:29;36484:44;36464:18;36460:69;36450:97;;36543:1;36540;36533:12;37174:241;37230:6;37283:2;37271:9;37262:7;37258:23;37254:32;37251:52;;;37299:1;37296;37289:12;37251:52;37338:9;37325:23;37357:28;37379:5;37357:28;:::i;37420:754::-;37473:3;37518:1;37514;37509:3;37505:11;37501:19;37559:2;37551:5;37545:12;37541:21;37536:3;37529:34;37624:2;37616:4;37609:5;37605:16;37599:23;37595:32;37588:4;37583:3;37579:14;37572:56;37689:2;37681:4;37674:5;37670:16;37664:23;37660:32;37653:4;37648:3;37644:14;37637:56;;37742:4;37735:5;37731:16;37725:23;37718:4;37713:3;37709:14;37702:47;37810:10;37802:4;37795:5;37791:16;37785:23;37781:40;37774:4;37769:3;37765:14;37758:64;37868:4;37861:5;37857:16;37851:23;37906:4;37899;37894:3;37890:14;37883:28;37932:69;37995:4;37990:3;37986:14;37972:12;37932:69;:::i;:::-;37920:81;;38049:4;38042:5;38038:16;38032:23;38097:3;38091:4;38087:14;38080:4;38075:3;38071:14;38064:38;38118:50;38163:4;38147:14;38118:50;:::i;38179:267::-;38364:2;38353:9;38346:21;38327:4;38384:56;38436:2;38425:9;38421:18;38413:6;38384:56;:::i;38451:1253::-;38682:2;38671:9;38664:21;38645:4;38720:6;38714:13;38763:4;38758:2;38747:9;38743:18;38736:32;38791:74;38860:3;38849:9;38845:19;38831:12;38791:74;:::i;:::-;38777:88;;38914:2;38906:6;38902:15;38896:22;38986:2;38982:7;38970:9;38962:6;38958:22;38954:36;38949:2;38938:9;38934:18;38927:64;39014:52;39059:6;39043:14;39014:52;:::i;:::-;39000:66;;;39115:2;39107:6;39103:15;39097:22;39155:1;39151;39146:3;39142:11;39138:19;39213:2;39197:14;39193:23;39188:2;39177:9;39173:18;39166:51;39266:2;39258:6;39254:15;39248:22;39226:44;;39334:2;39317:14;39311:21;39307:30;39301:3;39290:9;39286:19;39279:59;;39411:26;39405:2;39389:14;39385:23;39379:30;39375:63;39369:3;39358:9;39354:19;39347:92;;39488:3;39480:6;39476:16;39470:23;39502:54;39551:3;39540:9;39536:19;39520:14;24669:10;24658:22;24646:35;;24593:94;39502:54;-1:-1:-1;39605:3:178;39593:16;;39587:23;-1:-1:-1;;;;;9941:31:178;;39669:4;39654:20;;9929:44;39619:56;9875:104;39709:306;39785:6;39793;39846:2;39834:9;39825:7;39821:23;39817:32;39814:52;;;39862:1;39859;39852:12;39814:52;39894:9;39888:16;39913:28;39935:5;39913:28;:::i;:::-;40005:2;39990:18;;;;39984:25;39960:5;;39984:25;;-1:-1:-1;;;39709:306:178:o;40498:338::-;40711:6;40700:9;40693:25;40754:2;40749;40738:9;40734:18;40727:30;40674:4;40774:56;40826:2;40815:9;40811:18;40803:6;40774:56;:::i;42572:183::-;42641:6;42694:2;42682:9;42673:7;42669:23;42665:32;42662:52;;;42710:1;42707;42700:12;42662:52;-1:-1:-1;42733:16:178;;42572:183;-1:-1:-1;42572:183:178:o;42760:670::-;42825:5;42878:3;42871:4;42863:6;42859:17;42855:27;42845:55;;42896:1;42893;42886:12;42845:55;42925:6;42919:13;42951:4;42975:71;42991:54;43042:2;42991:54;:::i;42975:71::-;43080:15;;;43166:1;43162:10;;;;43150:23;;43146:32;;;43111:12;;;;43190:15;;;43187:35;;;43218:1;43215;43208:12;43187:35;43254:2;43246:6;43242:15;43266:135;43282:6;43277:3;43274:15;43266:135;;;43348:10;;43336:23;;43379:12;;;;43299;;43266:135;;43435:1238;43582:6;43590;43643:2;43631:9;43622:7;43618:23;43614:32;43611:52;;;43659:1;43656;43649:12;43611:52;43692:9;43686:16;-1:-1:-1;;;;;43762:2:178;43754:6;43751:14;43748:34;;;43778:1;43775;43768:12;43748:34;43816:6;43805:9;43801:22;43791:32;;43861:7;43854:4;43850:2;43846:13;43842:27;43832:55;;43883:1;43880;43873:12;43832:55;43912:2;43906:9;43934:4;43958:71;43974:54;44025:2;43974:54;:::i;43958:71::-;44063:15;;;44145:1;44141:10;;;;44133:19;;44129:28;;;44094:12;;;;44169:19;;;44166:39;;;44201:1;44198;44191:12;44166:39;44225:11;;;;44245:210;44261:6;44256:3;44253:15;44245:210;;;44334:3;44328:10;44351:31;44376:5;44351:31;:::i;:::-;44395:18;;44278:12;;;;44433;;;;44245:210;;;44510:18;;;44504:25;44474:5;;-1:-1:-1;44504:25:178;;-1:-1:-1;;;44541:16:178;;;44538:36;;;44570:1;44567;44560:12;44538:36;;44593:74;44659:7;44648:8;44637:9;44633:24;44593:74;:::i;44678:128::-;44718:3;44749:1;44745:6;44742:1;44739:13;44736:39;;;44755:18;;:::i;:::-;-1:-1:-1;44791:9:178;;44678:128::o;44811:125::-;44851:4;44879:1;44876;44873:8;44870:34;;;44884:18;;:::i;:::-;-1:-1:-1;44921:9:178;;44811:125::o;49891:393::-;-1:-1:-1;;;;;50167:15:178;;;50149:34;;50219:15;;;;50214:2;50199:18;;50192:43;50266:2;50251:18;;50244:34;;;;50099:2;50084:18;;49891:393::o;50782:245::-;50840:6;50893:2;50881:9;50872:7;50868:23;50864:32;50861:52;;;50909:1;50906;50899:12;50861:52;50948:9;50935:23;50967:30;50991:5;50967:30;:::i;52082:195::-;52186:11;;-1:-1:-1;;;;;;52182:54:178;-1:-1:-1;;;;;52238:31:178;;;;52179:91;;;;52166:105;;52082:195::o;52282:758::-;52463:5;52450:19;52478:33;52503:7;52478:33;:::i;:::-;52520:62;52574:7;52568:4;52520:62;:::i;:::-;;52619:1;52613:4;52609:12;52669:2;52662:5;52658:14;52645:28;52682:33;52707:7;52682:33;:::i;:::-;52724:68;52784:7;52772:10;52724:68;:::i;:::-;;52840:2;52833:5;52829:14;52816:28;52853:32;52877:7;52853:32;:::i;:::-;52904:17;;-1:-1:-1;;;;52952:34:178;53015:3;52992:17;;;;-1:-1:-1;;;52988:44:178;52949:84;52930:104;;-1:-1:-1;;52282:758:178:o;59179:202::-;59287:9;59324:51;59360:14;59353:5;59324:51;:::i;:::-;59311:64;59179:202;-1:-1:-1;;59179:202:178:o;61330:555::-;61532:2;61514:21;;;61571:3;61551:18;;;61544:31;-1:-1:-1;;;;;;;;;;;61606:2:178;61591:18;;61584:62;61682:34;61677:2;61662:18;;61655:62;61754:34;61748:3;61733:19;;61726:63;-1:-1:-1;;;61820:3:178;61805:19;;61798:45;61875:3;61860:19;;61330:555::o;62842:666::-;63017:6;63006:9;62999:25;62980:4;63043:2;63081;63076;63065:9;63061:18;63054:30;63113:6;63107:13;63156:6;63151:2;63140:9;63136:18;63129:34;63181:1;63191:140;63205:6;63202:1;63199:13;63191:140;;;63300:14;;;63296:23;;63290:30;63266:17;;;63285:2;63262:26;63255:66;63220:10;;63191:140;;;63349:6;63346:1;63343:13;63340:91;;;63419:1;63414:2;63405:6;63394:9;63390:22;63386:31;63379:42;63340:91;-1:-1:-1;63492:2:178;63471:15;-1:-1:-1;;63467:29:178;63452:45;;;;63499:2;63448:54;;62842:666;-1:-1:-1;;;;62842:666:178:o;63513:290::-;63582:6;63635:2;63623:9;63614:7;63610:23;63606:32;63603:52;;;63651:1;63648;63641:12;63603:52;63677:16;;-1:-1:-1;;;;;;63722:32:178;;63712:43;;63702:71;;63769:1;63766;63759:12;65655:127;65716:10;65711:3;65707:20;65704:1;65697:31;65747:4;65744:1;65737:15;65771:4;65768:1;65761:15","linkReferences":{},"immutableReferences":{"2721":[{"start":10105,"length":32}],"4979":[{"start":1327,"length":32},{"start":4220,"length":32},{"start":5112,"length":32},{"start":5920,"length":32},{"start":7841,"length":32},{"start":11167,"length":32},{"start":11554,"length":32},{"start":16991,"length":32},{"start":18123,"length":32}],"4983":[{"start":2007,"length":32}],"4987":[{"start":1511,"length":32},{"start":4270,"length":32},{"start":5162,"length":32},{"start":7693,"length":32},{"start":10962,"length":32},{"start":16697,"length":32},{"start":17957,"length":32}]}},"methodIdentifiers":{"DELEGATION_APPROVAL_TYPEHASH()":"04a4f979","DOMAIN_TYPEHASH()":"20606b70","MAX_STAKER_OPT_OUT_WINDOW_BLOCKS()":"4fc40b61","MAX_WITHDRAWAL_DELAY_BLOCKS()":"ca661c04","STAKER_DELEGATION_TYPEHASH()":"43377382","beaconChainETHStrategy()":"9104c319","calculateCurrentStakerDelegationDigestHash(address,address,uint256)":"1bbce091","calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)":"0b9f487a","calculateStakerDelegationDigestHash(address,uint256,address,uint256)":"c94b5111","calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))":"597b36da","completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)":"60d7faed","completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])":"33404396","cumulativeWithdrawalsQueued(address)":"a1788484","decreaseDelegatedShares(address,address,uint256)":"132d4967","delegateTo(address,(bytes,uint256),bytes32)":"eea9064b","delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)":"7f548071","delegatedTo(address)":"65da1264","delegationApprover(address)":"3cdeb5e0","delegationApproverSaltIsSpent(address,bytes32)":"bb45fef2","domainSeparator()":"f698da25","earningsReceiver(address)":"5f966f14","eigenPodManager()":"4665bcda","getDelegatableShares(address)":"cf80873e","getOperatorShares(address,address[])":"90041347","getWithdrawalDelay(address[])":"0449ca39","increaseDelegatedShares(address,address,uint256)":"28a573ae","initialize(address,address,uint256,uint256,address[],uint256[])":"22bf40e4","isDelegated(address)":"3e28391d","isOperator(address)":"6d70f7ae","migrateQueuedWithdrawals((address[],uint256[],address,(address,uint96),uint32,address)[])":"5cfe8d2c","minWithdrawalDelayBlocks()":"c448feb8","modifyOperatorDetails((address,address,uint32))":"f16172b0","operatorDetails(address)":"c5e480db","operatorShares(address,address)":"778e55f3","owner()":"8da5cb5b","pause(uint256)":"136439dd","pauseAll()":"595c6a67","paused()":"5c975abb","paused(uint8)":"5ac86ab7","pauserRegistry()":"886f1195","pendingWithdrawals(bytes32)":"b7f06ebe","queueWithdrawals((address[],uint256[],address)[])":"0dd8dd02","registerAsOperator((address,address,uint32),string)":"0f589e59","renounceOwnership()":"715018a6","setMinWithdrawalDelayBlocks(uint256)":"635bbd10","setPauserRegistry(address)":"10d67a2f","setStrategyWithdrawalDelayBlocks(address[],uint256[])":"1522bf02","slasher()":"b1344271","stakerNonce(address)":"29c77d4f","stakerOptOutWindowBlocks(address)":"16928365","strategyManager()":"39b70e38","strategyWithdrawalDelayBlocks(address)":"c488375a","transferOwnership(address)":"f2fde38b","undelegate(address)":"da8be864","unpause(uint256)":"fabc1cbc","updateOperatorMetadataURI(string)":"99be81c8"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IStrategyManager\",\"name\":\"_strategyManager\",\"type\":\"address\"},{\"internalType\":\"contract ISlasher\",\"name\":\"_slasher\",\"type\":\"address\"},{\"internalType\":\"contract IEigenPodManager\",\"name\":\"_eigenPodManager\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"MinWithdrawalDelayBlocksSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"earningsReceiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegationApprover\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\"}],\"indexed\":false,\"internalType\":\"struct IDelegationManager.OperatorDetails\",\"name\":\"newOperatorDetails\",\"type\":\"tuple\"}],\"name\":\"OperatorDetailsModified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"OperatorMetadataURIUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"earningsReceiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegationApprover\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\"}],\"indexed\":false,\"internalType\":\"struct IDelegationManager.OperatorDetails\",\"name\":\"operatorDetails\",\"type\":\"tuple\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"OperatorSharesDecreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"OperatorSharesIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IPauserRegistry\",\"name\":\"pauserRegistry\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"PauserRegistrySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"StakerDelegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"StakerForceUndelegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"StakerUndelegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"StrategyWithdrawalDelayBlocksSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"withdrawalRoot\",\"type\":\"bytes32\"}],\"name\":\"WithdrawalCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"oldWithdrawalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"newWithdrawalRoot\",\"type\":\"bytes32\"}],\"name\":\"WithdrawalMigrated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"withdrawalRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatedTo\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"startBlock\",\"type\":\"uint32\"},{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"}],\"indexed\":false,\"internalType\":\"struct IDelegationManager.Withdrawal\",\"name\":\"withdrawal\",\"type\":\"tuple\"}],\"name\":\"WithdrawalQueued\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DELEGATION_APPROVAL_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_STAKER_OPT_OUT_WINDOW_BLOCKS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_WITHDRAWAL_DELAY_BLOCKS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STAKER_DELEGATION_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"beaconChainETHStrategy\",\"outputs\":[{\"internalType\":\"contract IStrategy\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"calculateCurrentStakerDelegationDigestHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_delegationApprover\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"approverSalt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"calculateDelegationApprovalDigestHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_stakerNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"calculateStakerDelegationDigestHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatedTo\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"startBlock\",\"type\":\"uint32\"},{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"}],\"internalType\":\"struct IDelegationManager.Withdrawal\",\"name\":\"withdrawal\",\"type\":\"tuple\"}],\"name\":\"calculateWithdrawalRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatedTo\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"startBlock\",\"type\":\"uint32\"},{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"}],\"internalType\":\"struct IDelegationManager.Withdrawal\",\"name\":\"withdrawal\",\"type\":\"tuple\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"middlewareTimesIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"receiveAsTokens\",\"type\":\"bool\"}],\"name\":\"completeQueuedWithdrawal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatedTo\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"startBlock\",\"type\":\"uint32\"},{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"}],\"internalType\":\"struct IDelegationManager.Withdrawal[]\",\"name\":\"withdrawals\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IERC20[][]\",\"name\":\"tokens\",\"type\":\"address[][]\"},{\"internalType\":\"uint256[]\",\"name\":\"middlewareTimesIndexes\",\"type\":\"uint256[]\"},{\"internalType\":\"bool[]\",\"name\":\"receiveAsTokens\",\"type\":\"bool[]\"}],\"name\":\"completeQueuedWithdrawals\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"cumulativeWithdrawalsQueued\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"decreaseDelegatedShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithExpiry\",\"name\":\"approverSignatureAndExpiry\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"approverSalt\",\"type\":\"bytes32\"}],\"name\":\"delegateTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithExpiry\",\"name\":\"stakerSignatureAndExpiry\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithExpiry\",\"name\":\"approverSignatureAndExpiry\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"approverSalt\",\"type\":\"bytes32\"}],\"name\":\"delegateToBySignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"delegatedTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"delegationApprover\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"delegationApproverSaltIsSpent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"domainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"earningsReceiver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eigenPodManager\",\"outputs\":[{\"internalType\":\"contract IEigenPodManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"getDelegatableShares\",\"outputs\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"}],\"name\":\"getOperatorShares\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"}],\"name\":\"getWithdrawalDelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"increaseDelegatedShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"contract IPauserRegistry\",\"name\":\"_pauserRegistry\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialPausedStatus\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minWithdrawalDelayBlocks\",\"type\":\"uint256\"},{\"internalType\":\"contract IStrategy[]\",\"name\":\"_strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_withdrawalDelayBlocks\",\"type\":\"uint256[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"isDelegated\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"nonce\",\"type\":\"uint96\"}],\"internalType\":\"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce\",\"name\":\"withdrawerAndNonce\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"delegatedAddress\",\"type\":\"address\"}],\"internalType\":\"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal[]\",\"name\":\"withdrawalsToMigrate\",\"type\":\"tuple[]\"}],\"name\":\"migrateQueuedWithdrawals\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minWithdrawalDelayBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"earningsReceiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegationApprover\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\"}],\"internalType\":\"struct IDelegationManager.OperatorDetails\",\"name\":\"newOperatorDetails\",\"type\":\"tuple\"}],\"name\":\"modifyOperatorDetails\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"operatorDetails\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"earningsReceiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegationApprover\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\"}],\"internalType\":\"struct IDelegationManager.OperatorDetails\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"operatorShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauserRegistry\",\"outputs\":[{\"internalType\":\"contract IPauserRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"pendingWithdrawals\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"}],\"internalType\":\"struct IDelegationManager.QueuedWithdrawalParams[]\",\"name\":\"queuedWithdrawalParams\",\"type\":\"tuple[]\"}],\"name\":\"queueWithdrawals\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"earningsReceiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegationApprover\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\"}],\"internalType\":\"struct IDelegationManager.OperatorDetails\",\"name\":\"registeringOperatorDetails\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"registerAsOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newMinWithdrawalDelayBlocks\",\"type\":\"uint256\"}],\"name\":\"setMinWithdrawalDelayBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"setPauserRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"withdrawalDelayBlocks\",\"type\":\"uint256[]\"}],\"name\":\"setStrategyWithdrawalDelayBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slasher\",\"outputs\":[{\"internalType\":\"contract ISlasher\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"stakerNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"stakerOptOutWindowBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"strategyManager\",\"outputs\":[{\"internalType\":\"contract IStrategyManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStrategy\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"strategyWithdrawalDelayBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"undelegate\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"withdrawalRoots\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"updateOperatorMetadataURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"kind\":\"dev\",\"methods\":{\"calculateCurrentStakerDelegationDigestHash(address,address,uint256)\":{\"params\":{\"expiry\":\"The desired expiry time of the staker's signature\",\"operator\":\"The operator who is being delegated to\",\"staker\":\"The signing staker\"}},\"calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)\":{\"params\":{\"_delegationApprover\":\"the operator's `delegationApprover` who will be signing the delegationHash (in general)\",\"approverSalt\":\"A unique and single use value associated with the approver signature.\",\"expiry\":\"Time after which the approver's signature becomes invalid\",\"operator\":\"The account receiving delegated stake\",\"staker\":\"The account delegating their stake\"}},\"calculateStakerDelegationDigestHash(address,uint256,address,uint256)\":{\"params\":{\"_stakerNonce\":\"The nonce of the staker. In practice we use the staker's current nonce, stored at `stakerNonce[staker]`\",\"expiry\":\"The desired expiry time of the staker's signature\",\"operator\":\"The operator who is being delegated to\",\"staker\":\"The signing staker\"}},\"completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)\":{\"details\":\"middlewareTimesIndex is unused, but will be used in the Slasher eventuallybeaconChainETHStrategy shares are non-transferrable, so if `receiveAsTokens = false` and `withdrawal.withdrawer != withdrawal.staker`, note that any beaconChainETHStrategy shares in the `withdrawal` will be _returned to the staker_, rather than transferred to the withdrawer, unlike shares in any other strategies, which will be transferred to the withdrawer.\",\"params\":{\"middlewareTimesIndex\":\"is the index in the operator that the staker who triggered the withdrawal was delegated to's middleware times array\",\"receiveAsTokens\":\"If true, the shares specified in the withdrawal will be withdrawn from the specified strategies themselves and sent to the caller, through calls to `withdrawal.strategies[i].withdraw`. If false, then the shares in the specified strategies will simply be transferred to the caller directly.\",\"tokens\":\"Array in which the i-th entry specifies the `token` input to the 'withdraw' function of the i-th Strategy in the `withdrawal.strategies` array. This input can be provided with zero length if `receiveAsTokens` is set to 'false' (since in that case, this input will be unused)\",\"withdrawal\":\"The Withdrawal to complete.\"}},\"completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])\":{\"details\":\"See `completeQueuedWithdrawal` for relevant dev tags\",\"params\":{\"middlewareTimesIndexes\":\"One index to reference per Withdrawal. See `completeQueuedWithdrawal` for the usage of a single index.\",\"receiveAsTokens\":\"Whether or not to complete each withdrawal as tokens. See `completeQueuedWithdrawal` for the usage of a single boolean.\",\"tokens\":\"Array of tokens for each Withdrawal. See `completeQueuedWithdrawal` for the usage of a single array.\",\"withdrawals\":\"The Withdrawals to complete.\"}},\"constructor\":{\"details\":\"Initializes the immutable addresses of the strategy mananger and slasher.\"},\"decreaseDelegatedShares(address,address,uint256)\":{\"details\":\"*If the staker is actively delegated*, then decreases the `staker`'s delegated shares in `strategy` by `shares`. Otherwise does nothing.Callable only by the StrategyManager or EigenPodManager.\",\"params\":{\"shares\":\"The number of shares to decrease.\",\"staker\":\"The address to increase the delegated shares for their operator.\",\"strategy\":\"The strategy in which to decrease the delegated shares.\"}},\"delegateTo(address,(bytes,uint256),bytes32)\":{\"details\":\"The approverSignatureAndExpiry is used in the event that: 1) the operator's `delegationApprover` address is set to a non-zero value. AND 2) neither the operator nor their `delegationApprover` is the `msg.sender`, since in the event that the operator or their delegationApprover is the `msg.sender`, then approval is assumed.In the event that `approverSignatureAndExpiry` is not checked, its content is ignored entirely; it's recommended to use an empty input in this case to save on complexity + gas costs\",\"params\":{\"approverSalt\":\"A unique single use value tied to an individual signature.\",\"approverSignatureAndExpiry\":\"Verifies the operator approves of this delegation\",\"operator\":\"The account (`msg.sender`) is delegating its assets to for use in serving applications built on EigenLayer.\"}},\"delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)\":{\"details\":\"If `staker` is an EOA, then `stakerSignature` is verified to be a valid ECDSA stakerSignature from `staker`, indicating their intention for this action.If `staker` is a contract, then `stakerSignature` will be checked according to EIP-1271.the operator's `delegationApprover` address is set to a non-zero value.neither the operator nor their `delegationApprover` is the `msg.sender`, since in the event that the operator or their delegationApprover is the `msg.sender`, then approval is assumed.This function will revert if the current `block.timestamp` is equal to or exceeds the expiryIn the case that `approverSignatureAndExpiry` is not checked, its content is ignored entirely; it's recommended to use an empty input in this case to save on complexity + gas costs\",\"params\":{\"approverSalt\":\"Is a salt used to help guarantee signature uniqueness. Each salt can only be used once by a given approver.\",\"approverSignatureAndExpiry\":\"is a parameter that will be used for verifying that the operator approves of this delegation action in the event that:\",\"operator\":\"The account (`staker`) is delegating its assets to for use in serving applications built on EigenLayer.\",\"staker\":\"The account delegating stake to an `operator` account\",\"stakerSignatureAndExpiry\":\"Signed data from the staker authorizing delegating stake to an operator\"}},\"domainSeparator()\":{\"details\":\"The domain separator will change in the event of a fork that changes the ChainID.By introducing a domain separator the DApp developers are guaranteed that there can be no signature collision. for more detailed information please read EIP-712.\"},\"getDelegatableShares(address)\":{\"details\":\"Returns two empty arrays in the case that the Staker has no actively-delegateable shares.\"},\"getWithdrawalDelay(address[])\":{\"params\":{\"strategies\":\"The strategies to check withdrawal delays for\"}},\"increaseDelegatedShares(address,address,uint256)\":{\"details\":\"*If the staker is actively delegated*, then increases the `staker`'s delegated shares in `strategy` by `shares`. Otherwise does nothing.Callable only by the StrategyManager or EigenPodManager.\",\"params\":{\"shares\":\"The number of shares to increase.\",\"staker\":\"The address to increase the delegated shares for their operator.\",\"strategy\":\"The strategy in which to increase the delegated shares.\"}},\"initialize(address,address,uint256,uint256,address[],uint256[])\":{\"details\":\"Initializes the addresses of the initial owner, pauser registry, and paused status. minWithdrawalDelayBlocks is set only once here\"},\"migrateQueuedWithdrawals((address[],uint256[],address,(address,uint96),uint32,address)[])\":{\"details\":\"This function is expected to be removed in the next upgrade, after all queued withdrawals have been migrated.\"},\"modifyOperatorDetails((address,address,uint32))\":{\"details\":\"The caller must have previously registered as an operator in EigenLayer.This function will revert if the caller attempts to set their `earningsReceiver` to address(0).\",\"params\":{\"newOperatorDetails\":\"is the updated `OperatorDetails` for the operator, to replace their current OperatorDetails`.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pause(uint256)\":{\"details\":\"This function can only pause functionality, and thus cannot 'unflip' any bit in `_paused` from 1 to 0.\",\"params\":{\"newPausedStatus\":\"represents the new value for `_paused` to take, which means it may flip several bits at once.\"}},\"registerAsOperator((address,address,uint32),string)\":{\"details\":\"Once an operator is registered, they cannot 'deregister' as an operator, and they will forever be considered \\\"delegated to themself\\\".This function will revert if the caller attempts to set their `earningsReceiver` to address(0).Note that the `metadataURI` is *never stored * and is only emitted in the `OperatorMetadataURIUpdated` event\",\"params\":{\"metadataURI\":\"is a URI for the operator's metadata, i.e. a link providing more details on the operator.\",\"registeringOperatorDetails\":\"is the `OperatorDetails` for the operator.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setMinWithdrawalDelayBlocks(uint256)\":{\"params\":{\"newMinWithdrawalDelayBlocks\":\"new value of `minWithdrawalDelayBlocks`.\"}},\"setStrategyWithdrawalDelayBlocks(address[],uint256[])\":{\"params\":{\"strategies\":\"The strategies to set the minimum withdrawal delay blocks for\",\"withdrawalDelayBlocks\":\"The minimum withdrawal delay blocks to set for each strategy\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unpause(uint256)\":{\"details\":\"This function can only unpause functionality, and thus cannot 'flip' any bit in `_paused` from 0 to 1.\",\"params\":{\"newPausedStatus\":\"represents the new value for `_paused` to take, which means it may flip several bits at once.\"}},\"updateOperatorMetadataURI(string)\":{\"params\":{\"metadataURI\":\"The URI for metadata associated with an operator\"}}},\"title\":\"DelegationManager\",\"version\":1},\"userdoc\":{\"events\":{\"MinWithdrawalDelayBlocksSet(uint256,uint256)\":{\"notice\":\"Emitted when the `minWithdrawalDelayBlocks` variable is modified from `previousValue` to `newValue`.\"},\"OperatorDetailsModified(address,(address,address,uint32))\":{\"notice\":\"Emitted when an operator updates their OperatorDetails to @param newOperatorDetails\"},\"OperatorMetadataURIUpdated(address,string)\":{\"notice\":\"Emitted when @param operator indicates that they are updating their MetadataURI string\"},\"OperatorSharesDecreased(address,address,address,uint256)\":{\"notice\":\"Emitted whenever an operator's shares are decreased for a given strategy. Note that shares is the delta in the operator's shares.\"},\"OperatorSharesIncreased(address,address,address,uint256)\":{\"notice\":\"Emitted whenever an operator's shares are increased for a given strategy. Note that shares is the delta in the operator's shares.\"},\"Paused(address,uint256)\":{\"notice\":\"Emitted when the pause is triggered by `account`, and changed to `newPausedStatus`.\"},\"PauserRegistrySet(address,address)\":{\"notice\":\"Emitted when the `pauserRegistry` is set to `newPauserRegistry`.\"},\"StakerDelegated(address,address)\":{\"notice\":\"Emitted when @param staker delegates to @param operator.\"},\"StakerForceUndelegated(address,address)\":{\"notice\":\"Emitted when @param staker is undelegated via a call not originating from the staker themself\"},\"StakerUndelegated(address,address)\":{\"notice\":\"Emitted when @param staker undelegates from @param operator.\"},\"StrategyWithdrawalDelayBlocksSet(address,uint256,uint256)\":{\"notice\":\"Emitted when the `strategyWithdrawalDelayBlocks` variable is modified from `previousValue` to `newValue`.\"},\"Unpaused(address,uint256)\":{\"notice\":\"Emitted when the pause is lifted by `account`, and changed to `newPausedStatus`.\"},\"WithdrawalCompleted(bytes32)\":{\"notice\":\"Emitted when a queued withdrawal is completed\"},\"WithdrawalMigrated(bytes32,bytes32)\":{\"notice\":\"Emitted when a queued withdrawal is *migrated* from the StrategyManager to the DelegationManager\"},\"WithdrawalQueued(bytes32,(address,address,address,uint256,uint32,address[],uint256[]))\":{\"notice\":\"Emitted when a new withdrawal is queued.\"}},\"kind\":\"user\",\"methods\":{\"DELEGATION_APPROVAL_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the `DelegationApproval` struct used by the contract\"},\"DOMAIN_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the contract's domain\"},\"STAKER_DELEGATION_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the `StakerDelegation` struct used by the contract\"},\"beaconChainETHStrategy()\":{\"notice\":\"Canonical, virtual beacon chain ETH strategy\"},\"calculateCurrentStakerDelegationDigestHash(address,address,uint256)\":{\"notice\":\"Calculates the digestHash for a `staker` to sign to delegate to an `operator`\"},\"calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)\":{\"notice\":\"Calculates the digest hash to be signed by the operator's delegationApprove and used in the `delegateTo` and `delegateToBySignature` functions.\"},\"calculateStakerDelegationDigestHash(address,uint256,address,uint256)\":{\"notice\":\"Calculates the digest hash to be signed and used in the `delegateToBySignature` function\"},\"calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))\":{\"notice\":\"Returns the keccak256 hash of `withdrawal`.\"},\"completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)\":{\"notice\":\"Used to complete the specified `withdrawal`. The caller must match `withdrawal.withdrawer`\"},\"completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])\":{\"notice\":\"Array-ified version of `completeQueuedWithdrawal`. Used to complete the specified `withdrawals`. The function caller must match `withdrawals[...].withdrawer`\"},\"cumulativeWithdrawalsQueued(address)\":{\"notice\":\"Mapping: staker => cumulative number of queued withdrawals they have ever initiated.\"},\"decreaseDelegatedShares(address,address,uint256)\":{\"notice\":\"Decreases a staker's delegated share balance in a strategy.\"},\"delegateTo(address,(bytes,uint256),bytes32)\":{\"notice\":\"Caller delegates their stake to an operator.\"},\"delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)\":{\"notice\":\"Caller delegates a staker's stake to an operator with valid signatures from both parties.\"},\"delegatedTo(address)\":{\"notice\":\"Mapping: staker => operator whom the staker is currently delegated to.\"},\"delegationApprover(address)\":{\"notice\":\"Returns the delegationApprover account for an operator\"},\"delegationApproverSaltIsSpent(address,bytes32)\":{\"notice\":\"Mapping: delegationApprover => 32-byte salt => whether or not the salt has already been used by the delegationApprover.\"},\"domainSeparator()\":{\"notice\":\"Getter function for the current EIP-712 domain separator for this contract.\"},\"eigenPodManager()\":{\"notice\":\"The EigenPodManager contract for EigenLayer\"},\"getDelegatableShares(address)\":{\"notice\":\"Returns the number of actively-delegatable shares a staker has across all strategies.\"},\"getOperatorShares(address,address[])\":{\"notice\":\"Given array of strategies, returns array of shares for the operator\"},\"getWithdrawalDelay(address[])\":{\"notice\":\"Given a list of strategies, return the minimum number of blocks that must pass to withdraw from all the inputted strategies. Return value is >= minWithdrawalDelayBlocks as this is the global min withdrawal delay.\"},\"increaseDelegatedShares(address,address,uint256)\":{\"notice\":\"Increases a staker's delegated share balance in a strategy.\"},\"isDelegated(address)\":{\"notice\":\"Returns 'true' if `staker` *is* actively delegated, and 'false' otherwise.\"},\"isOperator(address)\":{\"notice\":\"Returns true is an operator has previously registered for delegation.\"},\"migrateQueuedWithdrawals((address[],uint256[],address,(address,uint96),uint32,address)[])\":{\"notice\":\"Migrates an array of queued withdrawals from the StrategyManager contract to this contract.\"},\"minWithdrawalDelayBlocks()\":{\"notice\":\"Global minimum withdrawal delay for all strategy withdrawals. In a prior Goerli release, we only had a global min withdrawal delay across all strategies. In addition, we now also configure withdrawal delays on a per-strategy basis. To withdraw from a strategy, max(minWithdrawalDelayBlocks, strategyWithdrawalDelayBlocks[strategy]) number of blocks must have passed. See mapping strategyWithdrawalDelayBlocks below for per-strategy withdrawal delays.\"},\"modifyOperatorDetails((address,address,uint32))\":{\"notice\":\"Updates an operator's stored `OperatorDetails`.\"},\"operatorDetails(address)\":{\"notice\":\"Returns the OperatorDetails struct associated with an `operator`.\"},\"operatorShares(address,address)\":{\"notice\":\"returns the total number of shares in `strategy` that are delegated to `operator`.Mapping: operator => strategy => total number of shares in the strategy delegated to the operator.\"},\"pause(uint256)\":{\"notice\":\"This function is used to pause an EigenLayer contract's functionality. It is permissioned to the `pauser` address, which is expected to be a low threshold multisig.\"},\"pauseAll()\":{\"notice\":\"Alias for `pause(type(uint256).max)`.\"},\"paused()\":{\"notice\":\"Returns the current paused status as a uint256.\"},\"paused(uint8)\":{\"notice\":\"Returns 'true' if the `indexed`th bit of `_paused` is 1, and 'false' otherwise\"},\"pauserRegistry()\":{\"notice\":\"Address of the `PauserRegistry` contract that this contract defers to for determining access control (for pausing).\"},\"pendingWithdrawals(bytes32)\":{\"notice\":\"Mapping: hash of withdrawal inputs, aka 'withdrawalRoot' => whether the withdrawal is pending\"},\"queueWithdrawals((address[],uint256[],address)[])\":{\"notice\":\"Allows a staker to withdraw some shares. Withdrawn shares/strategies are immediately removed from the staker. If the staker is delegated, withdrawn shares/strategies are also removed from their operator. All withdrawn shares/strategies are placed in a queue and can be fully withdrawn after a delay.\"},\"registerAsOperator((address,address,uint32),string)\":{\"notice\":\"Registers the caller as an operator in EigenLayer.\"},\"setMinWithdrawalDelayBlocks(uint256)\":{\"notice\":\"Owner-only function for modifying the value of the `minWithdrawalDelayBlocks` variable.\"},\"setPauserRegistry(address)\":{\"notice\":\"Allows the unpauser to set a new pauser registry\"},\"setStrategyWithdrawalDelayBlocks(address[],uint256[])\":{\"notice\":\"Called by owner to set the minimum withdrawal delay blocks for each passed in strategy Note that the min number of blocks to complete a withdrawal of a strategy is MAX(minWithdrawalDelayBlocks, strategyWithdrawalDelayBlocks[strategy])\"},\"slasher()\":{\"notice\":\"The Slasher contract for EigenLayer\"},\"stakerNonce(address)\":{\"notice\":\"Mapping: staker => number of signed messages (used in `delegateToBySignature`) from the staker that this contract has already checked.\"},\"stakerOptOutWindowBlocks(address)\":{\"notice\":\"Returns the stakerOptOutWindowBlocks for an operator\"},\"strategyManager()\":{\"notice\":\"The StrategyManager contract for EigenLayer\"},\"strategyWithdrawalDelayBlocks(address)\":{\"notice\":\"Minimum delay enforced by this contract per Strategy for completing queued withdrawals. Measured in blocks, and adjustable by this contract's owner, up to a maximum of `MAX_WITHDRAWAL_DELAY_BLOCKS`. Minimum value is 0 (i.e. no delay enforced).\"},\"undelegate(address)\":{\"notice\":\"Allows the staker, the staker's operator, or that operator's delegationApprover to undelegate a staker from their operator. Undelegation immediately removes ALL active shares/strategies from both the staker and operator, and places the shares and strategies in the withdrawal queue\"},\"unpause(uint256)\":{\"notice\":\"This function is used to unpause an EigenLayer contract's functionality. It is permissioned to the `unpauser` address, which is expected to be a high threshold multisig or governance contract.\"},\"updateOperatorMetadataURI(string)\":{\"notice\":\"Called by an operator to emit an `OperatorMetadataURIUpdated` event indicating the information has updated.\"}},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-serviceThis is the contract for delegation in EigenLayer. The main functionalities of this contract are - enabling anyone to register as an operator in EigenLayer - allowing operators to specify parameters related to stakers who delegate to them - enabling any staker to delegate its stake to the operator of its choice (a given staker can only delegate to a single operator at a time) - enabling a staker to undelegate its assets from the operator it is delegated to (performed as part of the withdrawal process, initiated through the StrategyManager)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/eigenlayer-contracts/src/contracts/core/DelegationManager.sol\":\"DelegationManager\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/src/contracts/core/DelegationManager.sol\":{\"keccak256\":\"0x63765ee8c67229e91b545d7157ba302f85f0b80f88956dec619492b466798047\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a8b30f56f69276508df45cb33151bd381537359a73f0af0abf49488d606c21f7\",\"dweb:/ipfs/QmWqHm3cwc5EJ2GKM4AQHz1A6Qhp71xiHnCERehrkUKWdh\"]},\"lib/eigenlayer-contracts/src/contracts/core/DelegationManagerStorage.sol\":{\"keccak256\":\"0x3da0ee1542bbeb3b28170ada9a0637232176c1f185d8b6cd2d07bca53b286cbf\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://70098f0e28a2f41ad6400bd56a7eb16f3cafa950fcd475ea362dfd340aa56a74\",\"dweb:/ipfs/QmS5EDT6dmW1k3XqKukxNg7WwNMPw8PzsAk8tkcugdLodJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x9906828f285cc76bbbe077f908d87c4bffd0a3bff9394f7a4b60a9d9a2672c1e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4c0f43e14e50ac322685b5cd301459118e2770bdfb053f8f3ded08ee9fbf5bf9\",\"dweb:/ipfs/QmPQtY6KEUCbrKwweu8BvA7YjnXXxkkuZPyLSRGV5EoPTe\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x1f8e17b0f952042132ca64e202022d83783b7f42ec364cd0cad1950ecb95a13d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a2be4c476902f25fb058f779e3d4e5b1182d9dc9fbdec518acbe9544c0d3c141\",\"dweb:/ipfs/QmdgZq6JrCD36Xry2vD8QSeGguGQ9TGWY2CMvKrhR9NQ6u\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x22b7a17d53696412f80645f1fa65274ae89040bdc706262e3b6cc577dbafcaa4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b15002346892a48fd7cf9a8a4cf121e17ba133d21e4822e71fbffac85117d6b2\",\"dweb:/ipfs/QmRBPJUcRQ6uKmSvCYhhtVWcKCAWkQFSVZZwZR7HR42kiz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x33a935182f77cfd508fc57ec8e45afc8dc3748e1e9b764d36bf90ae6466f257b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d3981b5bbf435cda04e2ed2f348f886ebf1500c18dd4bbf67b1f1bc0272e2d3f\",\"dweb:/ipfs/QmYHDzQx29ataM2ejRCXFcPxaPdxWqX8v7uwUAYoG9572w\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xffafae142d5337a5c204519e8f82fe3a5fae137286ebf597fa50699cf12c2474\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b577a12f7788095b230fd069b36ba9b3cdb376a0b7c3d8ae71588e5bf0c2f574\",\"dweb:/ipfs/QmXd1cDzYpxecyFEwowLiBKKjzRHgV8cs1qvLwypdEbVYy\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b\",\"dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x3d9eeecf96bd8d6427445db76b9a73f9861c6c3601001226bed2f7fb81e252e6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c836719a65892c5cffdba9de4e009e5f8a4e49aea9c5f46d57b15660c6c2d07d\",\"dweb:/ipfs/QmWuzNq2HdEH1hsRg8Jc95k1DZdNjXFb5ehkz9iLNNSqhT\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xaeee2ac5cfcc3388b63bef2668fa435c65a4b433b52ce9f5013822c6ec875fa3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://86eb6d3da5b45f7509995ffa170eaaadffbdd6d43e50f0902d421bb93a7dfda6\",\"dweb:/ipfs/QmWaYcgtnaVpcekSP7LyY6AGrE3hRE3kZE4H4EKhsSysDG\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x633b5fb10209891f696a9c8db4d7327ed7f560a2e9710489e38a67daeda59a96\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c8381baaec3afa6b200420c093706974776dfd14f6887abe7457eb867351a068\",\"dweb:/ipfs/QmP9H9ttS1sJ6FrvMEefJhU6B4z1wMCjcYYZqVfsLXagJE\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/EIP1271SignatureUtils.sol\":{\"keccak256\":\"0xe92d584c47c5828e026a8082af3da38a853e3942c4da7deb705d6470a41afab3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1c436c578781fd7d3dffdb24e906819422819f5e9a71d39ee63166a3d5cb3373\",\"dweb:/ipfs/QmP7bJhYqLpwqk2Xq4tqDCUMi2nFAhxxW3Pz36ctE1sbdD\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0x1c5895f913e95682b0c371595cb1fa0d9c34ea921a0fbb5c32201b4315e80a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c470e449a3144fbaaa17b44823ba9cba901f063b04355c800bf62cabdd081cd4\",\"dweb:/ipfs/QmSJ8gaAF4WA1aXGmLesnnRo8fDZNEFnqZSGNkJnXLRM9R\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0xcf8422dfa6ccc393de19417570c6239e0fde54de9433ea258cbeb6937ff7f316\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://328e582c05b7311ad4107c46f554f15b5572b89a4ab6d067c73425b7418d946c\",\"dweb:/ipfs/QmdM81GQY5nok5oCTP8Cc6M8s1UC9f6ZbSWybaUxrZNrmY\"]},\"lib/eigenlayer-contracts/src/contracts/permissions/Pausable.sol\":{\"keccak256\":\"0x53a08f01d778b91604dc1d27d4805fa99b9a2993f26e6079a1d8701699dc9f21\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://8fd5dd22dcb1fb4f803843b920501679f252ccf100a06acbad7a22452cdc1173\",\"dweb:/ipfs/QmeyoJoTN3Gi7Q4Fk4y89UTDDnyPFmSbdu8N7Vyijwjx2s\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xd6b579f342ff00b0b45eb2b97f1fb5274a2c52a8f59f13f174394a26b0c2030e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://55f68d7ea9ac2b0369c77e91b737d0e7991c302bf07b5a5b507147c449bcde20\",\"dweb:/ipfs/QmT8Uv9f7SbxmXsmUgrBpKMYjwv6fD3EFQB22fu51nYGLp\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x1e4597b288e792b4530cbc7e97e28754e8457969e61a86d9e6e3a2857eb8a68f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://41fb94e2f5df15c1d070865db82373dc85e52bc3a2f85e3aa338488f8616532c\",\"dweb:/ipfs/QmeKTieHBEur42JbTkn2JChdGx3GT9YZbVCP7wj2ejQvMj\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x1e5f62292e000eb24ff5a82fbe1310b5a03871d008bcd2e203e08cd044af0466\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d300b99404ad2930649be8508f7b1ed9940bc82facb7291a0540c1ec42badcaa\",\"dweb:/ipfs/QmW2xV7vTvtyJPDb5PwYBRSrs2qGMWV5rT6V9dzjaPUp9q\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e\",\"dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x78297d2d2e50b4fec6a42ecf5be5c76a6c102810388d11f165a363e0aa8f5034\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09968869e3943f45df330f42bdb49f96c71f55b5a424c73faba95135fafc5c78\",\"dweb:/ipfs/QmTLAoVbabvKZybmaFEHwib1feE2gWwN5yMcQBADVyBM5E\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xf57046ce68c681ede23c9a117b8ed58b7c960dc7f806ab8a4db80a0dac737a88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://beec7753d3491d55fb6f416e28ec8dd79b5f866405025fab32d51e3ae027e865\",\"dweb:/ipfs/QmQdqhSufKYphPsy3PQzjzu3VqbXk5mzuSm2grk345rPCh\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IStrategyManager","name":"_strategyManager","type":"address"},{"internalType":"contract ISlasher","name":"_slasher","type":"address"},{"internalType":"contract IEigenPodManager","name":"_eigenPodManager","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"uint256","name":"previousValue","type":"uint256","indexed":false},{"internalType":"uint256","name":"newValue","type":"uint256","indexed":false}],"type":"event","name":"MinWithdrawalDelayBlocksSet","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"struct IDelegationManager.OperatorDetails","name":"newOperatorDetails","type":"tuple","components":[{"internalType":"address","name":"earningsReceiver","type":"address"},{"internalType":"address","name":"delegationApprover","type":"address"},{"internalType":"uint32","name":"stakerOptOutWindowBlocks","type":"uint32"}],"indexed":false}],"type":"event","name":"OperatorDetailsModified","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"string","name":"metadataURI","type":"string","indexed":false}],"type":"event","name":"OperatorMetadataURIUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"struct IDelegationManager.OperatorDetails","name":"operatorDetails","type":"tuple","components":[{"internalType":"address","name":"earningsReceiver","type":"address"},{"internalType":"address","name":"delegationApprover","type":"address"},{"internalType":"uint32","name":"stakerOptOutWindowBlocks","type":"uint32"}],"indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"staker","type":"address","indexed":false},{"internalType":"contract IStrategy","name":"strategy","type":"address","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"OperatorSharesDecreased","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"staker","type":"address","indexed":false},{"internalType":"contract IStrategy","name":"strategy","type":"address","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"OperatorSharesIncreased","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"newPausedStatus","type":"uint256","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"contract IPauserRegistry","name":"pauserRegistry","type":"address","indexed":false},{"internalType":"contract IPauserRegistry","name":"newPauserRegistry","type":"address","indexed":false}],"type":"event","name":"PauserRegistrySet","anonymous":false},{"inputs":[{"internalType":"address","name":"staker","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"StakerDelegated","anonymous":false},{"inputs":[{"internalType":"address","name":"staker","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"StakerForceUndelegated","anonymous":false},{"inputs":[{"internalType":"address","name":"staker","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"StakerUndelegated","anonymous":false},{"inputs":[{"internalType":"contract IStrategy","name":"strategy","type":"address","indexed":false},{"internalType":"uint256","name":"previousValue","type":"uint256","indexed":false},{"internalType":"uint256","name":"newValue","type":"uint256","indexed":false}],"type":"event","name":"StrategyWithdrawalDelayBlocksSet","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"newPausedStatus","type":"uint256","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"withdrawalRoot","type":"bytes32","indexed":false}],"type":"event","name":"WithdrawalCompleted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"oldWithdrawalRoot","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"newWithdrawalRoot","type":"bytes32","indexed":false}],"type":"event","name":"WithdrawalMigrated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"withdrawalRoot","type":"bytes32","indexed":false},{"internalType":"struct IDelegationManager.Withdrawal","name":"withdrawal","type":"tuple","components":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"delegatedTo","type":"address"},{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint32","name":"startBlock","type":"uint32"},{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"}],"indexed":false}],"type":"event","name":"WithdrawalQueued","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DELEGATION_APPROVAL_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_STAKER_OPT_OUT_WINDOW_BLOCKS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_WITHDRAWAL_DELAY_BLOCKS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"STAKER_DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"beaconChainETHStrategy","outputs":[{"internalType":"contract IStrategy","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function","name":"calculateCurrentStakerDelegationDigestHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"_delegationApprover","type":"address"},{"internalType":"bytes32","name":"approverSalt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function","name":"calculateDelegationApprovalDigestHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"uint256","name":"_stakerNonce","type":"uint256"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function","name":"calculateStakerDelegationDigestHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"struct IDelegationManager.Withdrawal","name":"withdrawal","type":"tuple","components":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"delegatedTo","type":"address"},{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint32","name":"startBlock","type":"uint32"},{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"}]}],"stateMutability":"pure","type":"function","name":"calculateWithdrawalRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"struct IDelegationManager.Withdrawal","name":"withdrawal","type":"tuple","components":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"delegatedTo","type":"address"},{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint32","name":"startBlock","type":"uint32"},{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"}]},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256","name":"middlewareTimesIndex","type":"uint256"},{"internalType":"bool","name":"receiveAsTokens","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"completeQueuedWithdrawal"},{"inputs":[{"internalType":"struct IDelegationManager.Withdrawal[]","name":"withdrawals","type":"tuple[]","components":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"delegatedTo","type":"address"},{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint32","name":"startBlock","type":"uint32"},{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"}]},{"internalType":"contract IERC20[][]","name":"tokens","type":"address[][]"},{"internalType":"uint256[]","name":"middlewareTimesIndexes","type":"uint256[]"},{"internalType":"bool[]","name":"receiveAsTokens","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"completeQueuedWithdrawals"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"cumulativeWithdrawalsQueued","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"decreaseDelegatedShares"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct ISignatureUtils.SignatureWithExpiry","name":"approverSignatureAndExpiry","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"uint256","name":"expiry","type":"uint256"}]},{"internalType":"bytes32","name":"approverSalt","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"delegateTo"},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct ISignatureUtils.SignatureWithExpiry","name":"stakerSignatureAndExpiry","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"uint256","name":"expiry","type":"uint256"}]},{"internalType":"struct ISignatureUtils.SignatureWithExpiry","name":"approverSignatureAndExpiry","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"uint256","name":"expiry","type":"uint256"}]},{"internalType":"bytes32","name":"approverSalt","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"delegateToBySignature"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"delegatedTo","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"delegationApprover","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"delegationApproverSaltIsSpent","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"domainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"earningsReceiver","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eigenPodManager","outputs":[{"internalType":"contract IEigenPodManager","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"stateMutability":"view","type":"function","name":"getDelegatableShares","outputs":[{"internalType":"contract IStrategy[]","name":"","type":"address[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"}],"stateMutability":"view","type":"function","name":"getOperatorShares","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"}],"stateMutability":"view","type":"function","name":"getWithdrawalDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"increaseDelegatedShares"},{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"contract IPauserRegistry","name":"_pauserRegistry","type":"address"},{"internalType":"uint256","name":"initialPausedStatus","type":"uint256"},{"internalType":"uint256","name":"_minWithdrawalDelayBlocks","type":"uint256"},{"internalType":"contract IStrategy[]","name":"_strategies","type":"address[]"},{"internalType":"uint256[]","name":"_withdrawalDelayBlocks","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"stateMutability":"view","type":"function","name":"isDelegated","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal[]","name":"withdrawalsToMigrate","type":"tuple[]","components":[{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"address","name":"staker","type":"address"},{"internalType":"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce","name":"withdrawerAndNonce","type":"tuple","components":[{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint96","name":"nonce","type":"uint96"}]},{"internalType":"uint32","name":"withdrawalStartBlock","type":"uint32"},{"internalType":"address","name":"delegatedAddress","type":"address"}]}],"stateMutability":"nonpayable","type":"function","name":"migrateQueuedWithdrawals"},{"inputs":[],"stateMutability":"view","type":"function","name":"minWithdrawalDelayBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct IDelegationManager.OperatorDetails","name":"newOperatorDetails","type":"tuple","components":[{"internalType":"address","name":"earningsReceiver","type":"address"},{"internalType":"address","name":"delegationApprover","type":"address"},{"internalType":"uint32","name":"stakerOptOutWindowBlocks","type":"uint32"}]}],"stateMutability":"nonpayable","type":"function","name":"modifyOperatorDetails"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"operatorDetails","outputs":[{"internalType":"struct IDelegationManager.OperatorDetails","name":"","type":"tuple","components":[{"internalType":"address","name":"earningsReceiver","type":"address"},{"internalType":"address","name":"delegationApprover","type":"address"},{"internalType":"uint32","name":"stakerOptOutWindowBlocks","type":"uint32"}]}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"contract IStrategy","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"operatorShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"newPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseAll"},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"}],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pauserRegistry","outputs":[{"internalType":"contract IPauserRegistry","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"pendingWithdrawals","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct IDelegationManager.QueuedWithdrawalParams[]","name":"queuedWithdrawalParams","type":"tuple[]","components":[{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"address","name":"withdrawer","type":"address"}]}],"stateMutability":"nonpayable","type":"function","name":"queueWithdrawals","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"struct IDelegationManager.OperatorDetails","name":"registeringOperatorDetails","type":"tuple","components":[{"internalType":"address","name":"earningsReceiver","type":"address"},{"internalType":"address","name":"delegationApprover","type":"address"},{"internalType":"uint32","name":"stakerOptOutWindowBlocks","type":"uint32"}]},{"internalType":"string","name":"metadataURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"registerAsOperator"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"uint256","name":"newMinWithdrawalDelayBlocks","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMinWithdrawalDelayBlocks"},{"inputs":[{"internalType":"contract IPauserRegistry","name":"newPauserRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPauserRegistry"},{"inputs":[{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"withdrawalDelayBlocks","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setStrategyWithdrawalDelayBlocks"},{"inputs":[],"stateMutability":"view","type":"function","name":"slasher","outputs":[{"internalType":"contract ISlasher","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"stakerNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"stakerOptOutWindowBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"strategyManager","outputs":[{"internalType":"contract IStrategyManager","name":"","type":"address"}]},{"inputs":[{"internalType":"contract IStrategy","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"strategyWithdrawalDelayBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"undelegate","outputs":[{"internalType":"bytes32[]","name":"withdrawalRoots","type":"bytes32[]"}]},{"inputs":[{"internalType":"uint256","name":"newPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"string","name":"metadataURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorMetadataURI"}],"devdoc":{"kind":"dev","methods":{"calculateCurrentStakerDelegationDigestHash(address,address,uint256)":{"params":{"expiry":"The desired expiry time of the staker's signature","operator":"The operator who is being delegated to","staker":"The signing staker"}},"calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)":{"params":{"_delegationApprover":"the operator's `delegationApprover` who will be signing the delegationHash (in general)","approverSalt":"A unique and single use value associated with the approver signature.","expiry":"Time after which the approver's signature becomes invalid","operator":"The account receiving delegated stake","staker":"The account delegating their stake"}},"calculateStakerDelegationDigestHash(address,uint256,address,uint256)":{"params":{"_stakerNonce":"The nonce of the staker. In practice we use the staker's current nonce, stored at `stakerNonce[staker]`","expiry":"The desired expiry time of the staker's signature","operator":"The operator who is being delegated to","staker":"The signing staker"}},"completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)":{"details":"middlewareTimesIndex is unused, but will be used in the Slasher eventuallybeaconChainETHStrategy shares are non-transferrable, so if `receiveAsTokens = false` and `withdrawal.withdrawer != withdrawal.staker`, note that any beaconChainETHStrategy shares in the `withdrawal` will be _returned to the staker_, rather than transferred to the withdrawer, unlike shares in any other strategies, which will be transferred to the withdrawer.","params":{"middlewareTimesIndex":"is the index in the operator that the staker who triggered the withdrawal was delegated to's middleware times array","receiveAsTokens":"If true, the shares specified in the withdrawal will be withdrawn from the specified strategies themselves and sent to the caller, through calls to `withdrawal.strategies[i].withdraw`. If false, then the shares in the specified strategies will simply be transferred to the caller directly.","tokens":"Array in which the i-th entry specifies the `token` input to the 'withdraw' function of the i-th Strategy in the `withdrawal.strategies` array. This input can be provided with zero length if `receiveAsTokens` is set to 'false' (since in that case, this input will be unused)","withdrawal":"The Withdrawal to complete."}},"completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])":{"details":"See `completeQueuedWithdrawal` for relevant dev tags","params":{"middlewareTimesIndexes":"One index to reference per Withdrawal. See `completeQueuedWithdrawal` for the usage of a single index.","receiveAsTokens":"Whether or not to complete each withdrawal as tokens. See `completeQueuedWithdrawal` for the usage of a single boolean.","tokens":"Array of tokens for each Withdrawal. See `completeQueuedWithdrawal` for the usage of a single array.","withdrawals":"The Withdrawals to complete."}},"constructor":{"details":"Initializes the immutable addresses of the strategy mananger and slasher."},"decreaseDelegatedShares(address,address,uint256)":{"details":"*If the staker is actively delegated*, then decreases the `staker`'s delegated shares in `strategy` by `shares`. Otherwise does nothing.Callable only by the StrategyManager or EigenPodManager.","params":{"shares":"The number of shares to decrease.","staker":"The address to increase the delegated shares for their operator.","strategy":"The strategy in which to decrease the delegated shares."}},"delegateTo(address,(bytes,uint256),bytes32)":{"details":"The approverSignatureAndExpiry is used in the event that: 1) the operator's `delegationApprover` address is set to a non-zero value. AND 2) neither the operator nor their `delegationApprover` is the `msg.sender`, since in the event that the operator or their delegationApprover is the `msg.sender`, then approval is assumed.In the event that `approverSignatureAndExpiry` is not checked, its content is ignored entirely; it's recommended to use an empty input in this case to save on complexity + gas costs","params":{"approverSalt":"A unique single use value tied to an individual signature.","approverSignatureAndExpiry":"Verifies the operator approves of this delegation","operator":"The account (`msg.sender`) is delegating its assets to for use in serving applications built on EigenLayer."}},"delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)":{"details":"If `staker` is an EOA, then `stakerSignature` is verified to be a valid ECDSA stakerSignature from `staker`, indicating their intention for this action.If `staker` is a contract, then `stakerSignature` will be checked according to EIP-1271.the operator's `delegationApprover` address is set to a non-zero value.neither the operator nor their `delegationApprover` is the `msg.sender`, since in the event that the operator or their delegationApprover is the `msg.sender`, then approval is assumed.This function will revert if the current `block.timestamp` is equal to or exceeds the expiryIn the case that `approverSignatureAndExpiry` is not checked, its content is ignored entirely; it's recommended to use an empty input in this case to save on complexity + gas costs","params":{"approverSalt":"Is a salt used to help guarantee signature uniqueness. Each salt can only be used once by a given approver.","approverSignatureAndExpiry":"is a parameter that will be used for verifying that the operator approves of this delegation action in the event that:","operator":"The account (`staker`) is delegating its assets to for use in serving applications built on EigenLayer.","staker":"The account delegating stake to an `operator` account","stakerSignatureAndExpiry":"Signed data from the staker authorizing delegating stake to an operator"}},"domainSeparator()":{"details":"The domain separator will change in the event of a fork that changes the ChainID.By introducing a domain separator the DApp developers are guaranteed that there can be no signature collision. for more detailed information please read EIP-712."},"getDelegatableShares(address)":{"details":"Returns two empty arrays in the case that the Staker has no actively-delegateable shares."},"getWithdrawalDelay(address[])":{"params":{"strategies":"The strategies to check withdrawal delays for"}},"increaseDelegatedShares(address,address,uint256)":{"details":"*If the staker is actively delegated*, then increases the `staker`'s delegated shares in `strategy` by `shares`. Otherwise does nothing.Callable only by the StrategyManager or EigenPodManager.","params":{"shares":"The number of shares to increase.","staker":"The address to increase the delegated shares for their operator.","strategy":"The strategy in which to increase the delegated shares."}},"initialize(address,address,uint256,uint256,address[],uint256[])":{"details":"Initializes the addresses of the initial owner, pauser registry, and paused status. minWithdrawalDelayBlocks is set only once here"},"migrateQueuedWithdrawals((address[],uint256[],address,(address,uint96),uint32,address)[])":{"details":"This function is expected to be removed in the next upgrade, after all queued withdrawals have been migrated."},"modifyOperatorDetails((address,address,uint32))":{"details":"The caller must have previously registered as an operator in EigenLayer.This function will revert if the caller attempts to set their `earningsReceiver` to address(0).","params":{"newOperatorDetails":"is the updated `OperatorDetails` for the operator, to replace their current OperatorDetails`."}},"owner()":{"details":"Returns the address of the current owner."},"pause(uint256)":{"details":"This function can only pause functionality, and thus cannot 'unflip' any bit in `_paused` from 1 to 0.","params":{"newPausedStatus":"represents the new value for `_paused` to take, which means it may flip several bits at once."}},"registerAsOperator((address,address,uint32),string)":{"details":"Once an operator is registered, they cannot 'deregister' as an operator, and they will forever be considered \"delegated to themself\".This function will revert if the caller attempts to set their `earningsReceiver` to address(0).Note that the `metadataURI` is *never stored * and is only emitted in the `OperatorMetadataURIUpdated` event","params":{"metadataURI":"is a URI for the operator's metadata, i.e. a link providing more details on the operator.","registeringOperatorDetails":"is the `OperatorDetails` for the operator."}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"setMinWithdrawalDelayBlocks(uint256)":{"params":{"newMinWithdrawalDelayBlocks":"new value of `minWithdrawalDelayBlocks`."}},"setStrategyWithdrawalDelayBlocks(address[],uint256[])":{"params":{"strategies":"The strategies to set the minimum withdrawal delay blocks for","withdrawalDelayBlocks":"The minimum withdrawal delay blocks to set for each strategy"}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"unpause(uint256)":{"details":"This function can only unpause functionality, and thus cannot 'flip' any bit in `_paused` from 0 to 1.","params":{"newPausedStatus":"represents the new value for `_paused` to take, which means it may flip several bits at once."}},"updateOperatorMetadataURI(string)":{"params":{"metadataURI":"The URI for metadata associated with an operator"}}},"version":1},"userdoc":{"kind":"user","methods":{"DELEGATION_APPROVAL_TYPEHASH()":{"notice":"The EIP-712 typehash for the `DelegationApproval` struct used by the contract"},"DOMAIN_TYPEHASH()":{"notice":"The EIP-712 typehash for the contract's domain"},"STAKER_DELEGATION_TYPEHASH()":{"notice":"The EIP-712 typehash for the `StakerDelegation` struct used by the contract"},"beaconChainETHStrategy()":{"notice":"Canonical, virtual beacon chain ETH strategy"},"calculateCurrentStakerDelegationDigestHash(address,address,uint256)":{"notice":"Calculates the digestHash for a `staker` to sign to delegate to an `operator`"},"calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)":{"notice":"Calculates the digest hash to be signed by the operator's delegationApprove and used in the `delegateTo` and `delegateToBySignature` functions."},"calculateStakerDelegationDigestHash(address,uint256,address,uint256)":{"notice":"Calculates the digest hash to be signed and used in the `delegateToBySignature` function"},"calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))":{"notice":"Returns the keccak256 hash of `withdrawal`."},"completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)":{"notice":"Used to complete the specified `withdrawal`. The caller must match `withdrawal.withdrawer`"},"completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])":{"notice":"Array-ified version of `completeQueuedWithdrawal`. Used to complete the specified `withdrawals`. The function caller must match `withdrawals[...].withdrawer`"},"cumulativeWithdrawalsQueued(address)":{"notice":"Mapping: staker => cumulative number of queued withdrawals they have ever initiated."},"decreaseDelegatedShares(address,address,uint256)":{"notice":"Decreases a staker's delegated share balance in a strategy."},"delegateTo(address,(bytes,uint256),bytes32)":{"notice":"Caller delegates their stake to an operator."},"delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)":{"notice":"Caller delegates a staker's stake to an operator with valid signatures from both parties."},"delegatedTo(address)":{"notice":"Mapping: staker => operator whom the staker is currently delegated to."},"delegationApprover(address)":{"notice":"Returns the delegationApprover account for an operator"},"delegationApproverSaltIsSpent(address,bytes32)":{"notice":"Mapping: delegationApprover => 32-byte salt => whether or not the salt has already been used by the delegationApprover."},"domainSeparator()":{"notice":"Getter function for the current EIP-712 domain separator for this contract."},"eigenPodManager()":{"notice":"The EigenPodManager contract for EigenLayer"},"getDelegatableShares(address)":{"notice":"Returns the number of actively-delegatable shares a staker has across all strategies."},"getOperatorShares(address,address[])":{"notice":"Given array of strategies, returns array of shares for the operator"},"getWithdrawalDelay(address[])":{"notice":"Given a list of strategies, return the minimum number of blocks that must pass to withdraw from all the inputted strategies. Return value is >= minWithdrawalDelayBlocks as this is the global min withdrawal delay."},"increaseDelegatedShares(address,address,uint256)":{"notice":"Increases a staker's delegated share balance in a strategy."},"isDelegated(address)":{"notice":"Returns 'true' if `staker` *is* actively delegated, and 'false' otherwise."},"isOperator(address)":{"notice":"Returns true is an operator has previously registered for delegation."},"migrateQueuedWithdrawals((address[],uint256[],address,(address,uint96),uint32,address)[])":{"notice":"Migrates an array of queued withdrawals from the StrategyManager contract to this contract."},"minWithdrawalDelayBlocks()":{"notice":"Global minimum withdrawal delay for all strategy withdrawals. In a prior Goerli release, we only had a global min withdrawal delay across all strategies. In addition, we now also configure withdrawal delays on a per-strategy basis. To withdraw from a strategy, max(minWithdrawalDelayBlocks, strategyWithdrawalDelayBlocks[strategy]) number of blocks must have passed. See mapping strategyWithdrawalDelayBlocks below for per-strategy withdrawal delays."},"modifyOperatorDetails((address,address,uint32))":{"notice":"Updates an operator's stored `OperatorDetails`."},"operatorDetails(address)":{"notice":"Returns the OperatorDetails struct associated with an `operator`."},"operatorShares(address,address)":{"notice":"returns the total number of shares in `strategy` that are delegated to `operator`.Mapping: operator => strategy => total number of shares in the strategy delegated to the operator."},"pause(uint256)":{"notice":"This function is used to pause an EigenLayer contract's functionality. It is permissioned to the `pauser` address, which is expected to be a low threshold multisig."},"pauseAll()":{"notice":"Alias for `pause(type(uint256).max)`."},"paused()":{"notice":"Returns the current paused status as a uint256."},"paused(uint8)":{"notice":"Returns 'true' if the `indexed`th bit of `_paused` is 1, and 'false' otherwise"},"pauserRegistry()":{"notice":"Address of the `PauserRegistry` contract that this contract defers to for determining access control (for pausing)."},"pendingWithdrawals(bytes32)":{"notice":"Mapping: hash of withdrawal inputs, aka 'withdrawalRoot' => whether the withdrawal is pending"},"queueWithdrawals((address[],uint256[],address)[])":{"notice":"Allows a staker to withdraw some shares. Withdrawn shares/strategies are immediately removed from the staker. If the staker is delegated, withdrawn shares/strategies are also removed from their operator. All withdrawn shares/strategies are placed in a queue and can be fully withdrawn after a delay."},"registerAsOperator((address,address,uint32),string)":{"notice":"Registers the caller as an operator in EigenLayer."},"setMinWithdrawalDelayBlocks(uint256)":{"notice":"Owner-only function for modifying the value of the `minWithdrawalDelayBlocks` variable."},"setPauserRegistry(address)":{"notice":"Allows the unpauser to set a new pauser registry"},"setStrategyWithdrawalDelayBlocks(address[],uint256[])":{"notice":"Called by owner to set the minimum withdrawal delay blocks for each passed in strategy Note that the min number of blocks to complete a withdrawal of a strategy is MAX(minWithdrawalDelayBlocks, strategyWithdrawalDelayBlocks[strategy])"},"slasher()":{"notice":"The Slasher contract for EigenLayer"},"stakerNonce(address)":{"notice":"Mapping: staker => number of signed messages (used in `delegateToBySignature`) from the staker that this contract has already checked."},"stakerOptOutWindowBlocks(address)":{"notice":"Returns the stakerOptOutWindowBlocks for an operator"},"strategyManager()":{"notice":"The StrategyManager contract for EigenLayer"},"strategyWithdrawalDelayBlocks(address)":{"notice":"Minimum delay enforced by this contract per Strategy for completing queued withdrawals. Measured in blocks, and adjustable by this contract's owner, up to a maximum of `MAX_WITHDRAWAL_DELAY_BLOCKS`. Minimum value is 0 (i.e. no delay enforced)."},"undelegate(address)":{"notice":"Allows the staker, the staker's operator, or that operator's delegationApprover to undelegate a staker from their operator. Undelegation immediately removes ALL active shares/strategies from both the staker and operator, and places the shares and strategies in the withdrawal queue"},"unpause(uint256)":{"notice":"This function is used to unpause an EigenLayer contract's functionality. It is permissioned to the `unpauser` address, which is expected to be a high threshold multisig or governance contract."},"updateOperatorMetadataURI(string)":{"notice":"Called by an operator to emit an `OperatorMetadataURIUpdated` event indicating the information has updated."}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable/","@openzeppelin/=lib/openzeppelin-contracts/","ds-test/=lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-contracts/src/contracts/core/DelegationManager.sol":"DelegationManager"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/src/contracts/core/DelegationManager.sol":{"keccak256":"0x63765ee8c67229e91b545d7157ba302f85f0b80f88956dec619492b466798047","urls":["bzz-raw://a8b30f56f69276508df45cb33151bd381537359a73f0af0abf49488d606c21f7","dweb:/ipfs/QmWqHm3cwc5EJ2GKM4AQHz1A6Qhp71xiHnCERehrkUKWdh"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/core/DelegationManagerStorage.sol":{"keccak256":"0x3da0ee1542bbeb3b28170ada9a0637232176c1f185d8b6cd2d07bca53b286cbf","urls":["bzz-raw://70098f0e28a2f41ad6400bd56a7eb16f3cafa950fcd475ea362dfd340aa56a74","dweb:/ipfs/QmS5EDT6dmW1k3XqKukxNg7WwNMPw8PzsAk8tkcugdLodJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x9906828f285cc76bbbe077f908d87c4bffd0a3bff9394f7a4b60a9d9a2672c1e","urls":["bzz-raw://4c0f43e14e50ac322685b5cd301459118e2770bdfb053f8f3ded08ee9fbf5bf9","dweb:/ipfs/QmPQtY6KEUCbrKwweu8BvA7YjnXXxkkuZPyLSRGV5EoPTe"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0x1f8e17b0f952042132ca64e202022d83783b7f42ec364cd0cad1950ecb95a13d","urls":["bzz-raw://a2be4c476902f25fb058f779e3d4e5b1182d9dc9fbdec518acbe9544c0d3c141","dweb:/ipfs/QmdgZq6JrCD36Xry2vD8QSeGguGQ9TGWY2CMvKrhR9NQ6u"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0x22b7a17d53696412f80645f1fa65274ae89040bdc706262e3b6cc577dbafcaa4","urls":["bzz-raw://b15002346892a48fd7cf9a8a4cf121e17ba133d21e4822e71fbffac85117d6b2","dweb:/ipfs/QmRBPJUcRQ6uKmSvCYhhtVWcKCAWkQFSVZZwZR7HR42kiz"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x33a935182f77cfd508fc57ec8e45afc8dc3748e1e9b764d36bf90ae6466f257b","urls":["bzz-raw://d3981b5bbf435cda04e2ed2f348f886ebf1500c18dd4bbf67b1f1bc0272e2d3f","dweb:/ipfs/QmYHDzQx29ataM2ejRCXFcPxaPdxWqX8v7uwUAYoG9572w"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0xffafae142d5337a5c204519e8f82fe3a5fae137286ebf597fa50699cf12c2474","urls":["bzz-raw://b577a12f7788095b230fd069b36ba9b3cdb376a0b7c3d8ae71588e5bf0c2f574","dweb:/ipfs/QmXd1cDzYpxecyFEwowLiBKKjzRHgV8cs1qvLwypdEbVYy"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4","urls":["bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b","dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x3d9eeecf96bd8d6427445db76b9a73f9861c6c3601001226bed2f7fb81e252e6","urls":["bzz-raw://c836719a65892c5cffdba9de4e009e5f8a4e49aea9c5f46d57b15660c6c2d07d","dweb:/ipfs/QmWuzNq2HdEH1hsRg8Jc95k1DZdNjXFb5ehkz9iLNNSqhT"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xaeee2ac5cfcc3388b63bef2668fa435c65a4b433b52ce9f5013822c6ec875fa3","urls":["bzz-raw://86eb6d3da5b45f7509995ffa170eaaadffbdd6d43e50f0902d421bb93a7dfda6","dweb:/ipfs/QmWaYcgtnaVpcekSP7LyY6AGrE3hRE3kZE4H4EKhsSysDG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x633b5fb10209891f696a9c8db4d7327ed7f560a2e9710489e38a67daeda59a96","urls":["bzz-raw://c8381baaec3afa6b200420c093706974776dfd14f6887abe7457eb867351a068","dweb:/ipfs/QmP9H9ttS1sJ6FrvMEefJhU6B4z1wMCjcYYZqVfsLXagJE"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/EIP1271SignatureUtils.sol":{"keccak256":"0xe92d584c47c5828e026a8082af3da38a853e3942c4da7deb705d6470a41afab3","urls":["bzz-raw://1c436c578781fd7d3dffdb24e906819422819f5e9a71d39ee63166a3d5cb3373","dweb:/ipfs/QmP7bJhYqLpwqk2Xq4tqDCUMi2nFAhxxW3Pz36ctE1sbdD"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0x1c5895f913e95682b0c371595cb1fa0d9c34ea921a0fbb5c32201b4315e80a56","urls":["bzz-raw://c470e449a3144fbaaa17b44823ba9cba901f063b04355c800bf62cabdd081cd4","dweb:/ipfs/QmSJ8gaAF4WA1aXGmLesnnRo8fDZNEFnqZSGNkJnXLRM9R"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0xcf8422dfa6ccc393de19417570c6239e0fde54de9433ea258cbeb6937ff7f316","urls":["bzz-raw://328e582c05b7311ad4107c46f554f15b5572b89a4ab6d067c73425b7418d946c","dweb:/ipfs/QmdM81GQY5nok5oCTP8Cc6M8s1UC9f6ZbSWybaUxrZNrmY"],"license":"MIT"},"lib/eigenlayer-contracts/src/contracts/permissions/Pausable.sol":{"keccak256":"0x53a08f01d778b91604dc1d27d4805fa99b9a2993f26e6079a1d8701699dc9f21","urls":["bzz-raw://8fd5dd22dcb1fb4f803843b920501679f252ccf100a06acbad7a22452cdc1173","dweb:/ipfs/QmeyoJoTN3Gi7Q4Fk4y89UTDDnyPFmSbdu8N7Vyijwjx2s"],"license":"BUSL-1.1"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xd6b579f342ff00b0b45eb2b97f1fb5274a2c52a8f59f13f174394a26b0c2030e","urls":["bzz-raw://55f68d7ea9ac2b0369c77e91b737d0e7991c302bf07b5a5b507147c449bcde20","dweb:/ipfs/QmT8Uv9f7SbxmXsmUgrBpKMYjwv6fD3EFQB22fu51nYGLp"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x1e4597b288e792b4530cbc7e97e28754e8457969e61a86d9e6e3a2857eb8a68f","urls":["bzz-raw://41fb94e2f5df15c1d070865db82373dc85e52bc3a2f85e3aa338488f8616532c","dweb:/ipfs/QmeKTieHBEur42JbTkn2JChdGx3GT9YZbVCP7wj2ejQvMj"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x1e5f62292e000eb24ff5a82fbe1310b5a03871d008bcd2e203e08cd044af0466","urls":["bzz-raw://d300b99404ad2930649be8508f7b1ed9940bc82facb7291a0540c1ec42badcaa","dweb:/ipfs/QmW2xV7vTvtyJPDb5PwYBRSrs2qGMWV5rT6V9dzjaPUp9q"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544","urls":["bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e","dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x78297d2d2e50b4fec6a42ecf5be5c76a6c102810388d11f165a363e0aa8f5034","urls":["bzz-raw://09968869e3943f45df330f42bdb49f96c71f55b5a424c73faba95135fafc5c78","dweb:/ipfs/QmTLAoVbabvKZybmaFEHwib1feE2gWwN5yMcQBADVyBM5E"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3","urls":["bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638","dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xf57046ce68c681ede23c9a117b8ed58b7c960dc7f806ab8a4db80a0dac737a88","urls":["bzz-raw://beec7753d3491d55fb6f416e28ec8dd79b5f866405025fab32d51e3ae027e865","dweb:/ipfs/QmQdqhSufKYphPsy3PQzjzu3VqbXk5mzuSm2grk345rPCh"],"license":"MIT"}},"version":1},"id":3} \ No newline at end of file diff --git a/crates/utils/json/ECDSAStakeRegistry.json b/crates/utils/json/ECDSAStakeRegistry.json deleted file mode 100644 index c3316f6f..00000000 --- a/crates/utils/json/ECDSAStakeRegistry.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_delegationManager","type":"address","internalType":"contract IDelegationManager"}],"stateMutability":"nonpayable"},{"type":"function","name":"deregisterOperator","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getLastCheckpointOperatorWeight","inputs":[{"name":"_operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getLastCheckpointThresholdWeight","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getLastCheckpointThresholdWeightAtBlock","inputs":[{"name":"_blockNumber","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getLastCheckpointTotalWeight","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getLastCheckpointTotalWeightAtBlock","inputs":[{"name":"_blockNumber","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorWeight","inputs":[{"name":"_operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorWeightAtBlock","inputs":[{"name":"_operator","type":"address","internalType":"address"},{"name":"_blockNumber","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_serviceManager","type":"address","internalType":"address"},{"name":"_thresholdWeight","type":"uint256","internalType":"uint256"},{"name":"_quorum","type":"tuple","internalType":"struct Quorum","components":[{"name":"strategies","type":"tuple[]","internalType":"struct StrategyParams[]","components":[{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"multiplier","type":"uint96","internalType":"uint96"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isValidSignature","inputs":[{"name":"_dataHash","type":"bytes32","internalType":"bytes32"},{"name":"_signatureData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"minimumWeight","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"operatorRegistered","inputs":[{"name":"_operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"quorum","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct Quorum","components":[{"name":"strategies","type":"tuple[]","internalType":"struct StrategyParams[]","components":[{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"multiplier","type":"uint96","internalType":"uint96"}]}]}],"stateMutability":"view"},{"type":"function","name":"registerOperatorWithSignature","inputs":[{"name":"_operator","type":"address","internalType":"address"},{"name":"_operatorSignature","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateMinimumWeight","inputs":[{"name":"_newMinimumWeight","type":"uint256","internalType":"uint256"},{"name":"_operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperators","inputs":[{"name":"_operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorsForQuorum","inputs":[{"name":"operatorsPerQuorum","type":"address[][]","internalType":"address[][]"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateQuorumConfig","inputs":[{"name":"_quorum","type":"tuple","internalType":"struct Quorum","components":[{"name":"strategies","type":"tuple[]","internalType":"struct StrategyParams[]","components":[{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"multiplier","type":"uint96","internalType":"uint96"}]}]},{"name":"_operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateStakeThreshold","inputs":[{"name":"_thresholdWeight","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"MinimumWeightUpdated","inputs":[{"name":"_old","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_new","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorDeregistered","inputs":[{"name":"_operator","type":"address","indexed":true,"internalType":"address"},{"name":"_avs","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"_operator","type":"address","indexed":true,"internalType":"address"},{"name":"_avs","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorWeightUpdated","inputs":[{"name":"_operator","type":"address","indexed":true,"internalType":"address"},{"name":"oldWeight","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newWeight","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"QuorumUpdated","inputs":[{"name":"_old","type":"tuple","indexed":false,"internalType":"struct Quorum","components":[{"name":"strategies","type":"tuple[]","internalType":"struct StrategyParams[]","components":[{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"multiplier","type":"uint96","internalType":"uint96"}]}]},{"name":"_new","type":"tuple","indexed":false,"internalType":"struct Quorum","components":[{"name":"strategies","type":"tuple[]","internalType":"struct StrategyParams[]","components":[{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"multiplier","type":"uint96","internalType":"uint96"}]}]}],"anonymous":false},{"type":"event","name":"ThresholdWeightUpdated","inputs":[{"name":"_thresholdWeight","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TotalWeightUpdated","inputs":[{"name":"oldTotalWeight","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newTotalWeight","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"UpdateMinimumWeight","inputs":[{"name":"oldMinimumWeight","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newMinimumWeight","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"InsufficientSignedStake","inputs":[]},{"type":"error","name":"InsufficientWeight","inputs":[]},{"type":"error","name":"InvalidLength","inputs":[]},{"type":"error","name":"InvalidQuorum","inputs":[]},{"type":"error","name":"InvalidSignature","inputs":[]},{"type":"error","name":"InvalidSignedWeight","inputs":[]},{"type":"error","name":"InvalidThreshold","inputs":[]},{"type":"error","name":"LengthMismatch","inputs":[]},{"type":"error","name":"MustUpdateAllOperators","inputs":[]},{"type":"error","name":"NotSorted","inputs":[]},{"type":"error","name":"OperatorAlreadyRegistered","inputs":[]},{"type":"error","name":"OperatorNotRegistered","inputs":[]}],"bytecode":{"object":"0x60a06040523480156200001157600080fd5b50604051620026e1380380620026e1833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b60805161264d62000094600039600061063a015261264d6000f3fe608060405234801561001057600080fd5b50600436106101415760003560e01c8063696255be116100b857806398ec1ac91161007c57806398ec1ac914610282578063ab11899514610295578063b933fa74146102a8578063dec5d1f6146102b0578063ec7fbb31146102c3578063f2fde38b146102ff57600080fd5b8063696255be14610231578063715018a614610244578063857dc1901461024c5780638da5cb5b14610254578063955f2d901461026f57600080fd5b80631e4cd85e1161010a5780631e4cd85e146101d5578063314f3a49146101e85780633b242e4a146101f057806340bf2fb7146102035780635140a5481461020b5780635ef533291461021e57600080fd5b8062cf2ab5146101465780630a601a121461015b5780630dba33941461016e5780631626ba7e146101945780631703a018146101c0575b600080fd5b610159610154366004611bae565b610312565b005b610159610169366004611c62565b61031e565b61018161017c366004611d1f565b61032c565b6040519081526020015b60405180910390f35b6101a76101a2366004611d3c565b610348565b6040516001600160e01b0319909116815260200161018b565b6101c8610386565b60405161018b9190611de5565b6101816101e3366004611d1f565b610419565b61018161042f565b6101816101fe366004611df8565b610440565b606754610181565b610159610219366004611e15565b610461565b61015961022c366004611ede565b610484565b61015961023f366004611ef7565b610495565b6101596104af565b6101596104c3565b6033546040516001600160a01b03909116815260200161018b565b61018161027d366004611f33565b6104cc565b610181610290366004611df8565b6104fe565b6101596102a336600461204d565b610751565b61018161086d565b6101596102be3660046120a5565b610879565b6102ef6102d1366004611df8565b6001600160a01b03166000908152606d602052604090205460ff1690565b604051901515815260200161018b565b61015961030d366004611df8565b61088a565b61031b81610900565b50565b610328828261094d565b5050565b6000610342606a63ffffffff80851690610a7a16565b92915050565b6000806000808480602001905181019061036291906121e8565b92509250925061037486848484610b89565b50630b135d3f60e11b95945050505050565b6040805160208101909152606081526040805160668054602081810284018501855283018181529293919284929091849160009085015b8282101561040c57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b0316818301528252600190920191016103bd565b5050505081525050905090565b6000610342606b63ffffffff80851690610a7a16565b600061043b606a610c2f565b905090565b6001600160a01b0381166000908152606c6020526040812061034290610c2f565b61032882600081518110610477576104776122bc565b6020026020010151610c8b565b61048c610cae565b61031b81610d08565b61049d610cae565b6104a682610d4b565b61032881610900565b6104b7610cae565b6104c16000610d91565b565b6104c133610de3565b6001600160a01b0382166000908152606c602052604081206104f79063ffffffff80851690610a7a16565b9392505050565b6000806066600001805480602002602001604051908101604052809291908181526020016000905b8282101561057557600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101610526565b50505050905060008082516001600160401b0381111561059757610597611a6e565b6040519080825280602002602001820160405280156105c0578160200160208202803683370190505b50905060005b835181101561061f578381815181106105e1576105e16122bc565b6020026020010151600001518282815181106105ff576105ff6122bc565b6001600160a01b03909216602092830291909101909101526001016105c6565b50604051639004134760e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063900413479061067190899086906004016122d2565b600060405180830381865afa15801561068e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106b6919081019061232e565b905060005b8451811015610723578481815181106106d6576106d66122bc565b6020026020010151602001516001600160601b03168282815181106106fd576106fd6122bc565b602002602001015161070f91906123d4565b61071990856123eb565b93506001016106bb565b50610730612710846123fe565b92506067548310610745575090949350505050565b50600095945050505050565b600054610100900460ff16158080156107715750600054600160ff909116105b8061078b5750303b15801561078b575060005460ff166001145b6107f35760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610816576000805461ff0019166101001790555b610821848484610f06565b8015610867576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b600061043b606b610c2f565b610881610cae565b6104a682610f67565b610892610cae565b6001600160a01b0381166108f75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107ea565b61031b81610d91565b6000805b82518110156109435761092f838281518110610922576109226122bc565b60200260200101516110be565b6109399083612420565b9150600101610904565b50610867816111e7565b6001600160a01b0382166000908152606d602052604090205460ff1615610987576040516342ee68b560e01b815260040160405180910390fd5b6065805490600061099783612448565b90915550506001600160a01b0382166000908152606d60205260408120805460ff191660011790556109c8836110be565b90506109d3816111e7565b5050606854604051639926ee7d60e01b81526001600160a01b0390911690639926ee7d90610a07908690869060040161248d565b600060405180830381600087803b158015610a2157600080fd5b505af1158015610a35573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090861691507fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c190600090a3505050565b6000438210610acb5760405162461bcd60e51b815260206004820181905260248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e656460448201526064016107ea565b825460005b81811015610b30576000610ae48284611253565b905084866000018281548110610afc57610afc6122bc565b60009182526020909120015463ffffffff161115610b1c57809250610b2a565b610b278160016123eb565b91505b50610ad0565b8115610b745784610b426001846124d8565b81548110610b5257610b526122bc565b60009182526020909120015464010000000090046001600160e01b0316610b77565b60005b6001600160e01b031695945050505050565b600083519050600080610b9d83865161126e565b60005b83811015610c1b576000878281518110610bbc57610bbc6122bc565b60200260200101519050610bd084826112b2565b610bf4818a898581518110610be757610be76122bc565b60200260200101516112e4565b8093506000610c038288611315565b9050610c0f81856123eb565b93505050600101610ba0565b50610c26818561137c565b50505050505050565b80546000908015610c785782610c466001836124d8565b81548110610c5657610c566122bc565b60009182526020909120015464010000000090046001600160e01b0316610c7b565b60005b6001600160e01b03169392505050565b6065548151146103125760405163169efb5b60e11b815260040160405180910390fd5b6033546001600160a01b031633146104c15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107ea565b610d13606b826113d8565b50506040518181527f9324f7e5a7c0288808a634ccde44b8e979676474b22e29ee9dd569b55e791a4b9060200160405180910390a150565b606780549082905560408051828152602081018490527f713ca53b88d6eb63f5b1854cb8cbdd736ec51eda225e46791aa9298b0160648f91015b60405180910390a15050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0381166000908152606d602052604090205460ff16610e1c576040516325ec6c1f60e01b815260040160405180910390fd5b60658054906000610e2c836124eb565b90915550506001600160a01b0381166000908152606d60205260408120805460ff19169055610e5a826110be565b9050610e65816111e7565b50506068546040516351b27a6d60e11b81526001600160a01b0384811660048301529091169063a364f4da90602401600060405180830381600087803b158015610eae57600080fd5b505af1158015610ec2573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090851691507f31e0adfec71bccee37b6e83a90c2fedb17d8f1693fee863c4771e7bfe2aed58090600090a35050565b600054610100900460ff16610f2d5760405162461bcd60e51b81526004016107ea90612502565b606880546001600160a01b0319166001600160a01b038516179055610f5182610d08565b610f5a81610f67565b610f62611503565b505050565b610f7081611532565b610f8d5760405163d173577960e01b815260040160405180910390fd5b60408051606680546020818102840185018552830181815260009484928491879085015b8282101561100057600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101610fb1565b5050509152509091506066905060006110198282611a40565b505060005b82515181101561108c57825180516066919083908110611040576110406122bc565b602090810291909101810151825460018181018555600094855293839020825192909301516001600160601b0316600160a01b026001600160a01b03909216919091179101550161101e565b507f23aad4e61744ece164130aa415c1616e80136b0f0770e56589438b90b269265e8183604051610d8592919061254d565b6001600160a01b0381166000908152606c602052604081208190819081906110e590610c2f565b6001600160a01b0386166000908152606d602052604090205490915060ff1661114d57611112818461257b565b9250826000036111255750909392505050565b6001600160a01b0385166000908152606c60205260408120611146916113d8565b505061119a565b611156856104fe565b9150611162818361257b565b9250826000036111755750909392505050565b6001600160a01b0385166000908152606c6020526040902061119790836113d8565b50505b60408051828152602081018490526001600160a01b038716917f88770dc862e47a7ed586907857eb1b75e4c5ffc8b707c7ee10eb74d6885fe594910160405180910390a250909392505050565b6000806111f4606a610c2f565b915060006112028484612420565b9150819050611212606a826113d8565b505060408051848152602081018490527f86dcf86b12dfeedea74ae9300dbdaa193bcce5809369c8177ea2f4eaaa65729b910160405180910390a150915091565b600061126260028484186123fe565b6104f7908484166123eb565b808214611291576040516001621398b960e31b0319815260040160405180910390fd5b816000036103285760405163251f56a160e21b815260040160405180910390fd5b806001600160a01b0316826001600160a01b0316106103285760405163ba50f91160e01b815260040160405180910390fd5b6112f86001600160a01b03841683836115f8565b610f6257604051638baa579f60e01b815260040160405180910390fd5b600063fffffffe1963ffffffff831601611351576001600160a01b0383166000908152606c6020526040902061134a90610c2f565b9050610342565b6001600160a01b0383166000908152606c6020526040902061134a9063ffffffff80851690610a7a16565b600061138782611744565b9050808311156113aa57604051634b05a0f760e11b815260040160405180910390fd5b60006113b58361177b565b9050838111156108675760405163e121632f60e01b815260040160405180910390fd5b81546000908190816113e986610c2f565b9050600082118015611427575043866114036001856124d8565b81548110611413576114136122bc565b60009182526020909120015463ffffffff16145b1561148757611435856117ad565b866114416001856124d8565b81548110611451576114516122bc565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b031602179055506114f5565b85600001604051806040016040528061149f4361181a565b63ffffffff1681526020016114b3886117ad565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b9250839150505b9250929050565b600054610100900460ff1661152a5760405162461bcd60e51b81526004016107ea90612502565b6104c161187f565b8051600090818080805b84518110156115d657848181518110611557576115576122bc565b6020026020010151600001519250826001600160a01b0316846001600160a01b0316106115975760405163ba50f91160e01b815260040160405180910390fd5b8293508481815181106115ac576115ac6122bc565b6020026020010151602001516001600160601b0316826115cc91906123eb565b915060010161153c565b5061271081146115ec5750600095945050505050565b50600195945050505050565b600080600061160785856118af565b90925090506000816004811115611620576116206125a2565b14801561163e5750856001600160a01b0316826001600160a01b0316145b1561164e576001925050506104f7565b600080876001600160a01b0316631626ba7e60e01b88886040516024016116769291906125b8565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516116b491906125d1565b600060405180830381855afa9150503d80600081146116ef576040519150601f19603f3d011682016040523d82523d6000602084013e6116f4565b606091505b5091509150818015611707575080516020145b801561173857508051630b135d3f60e11b9061172c90830160209081019084016125ed565b6001600160e01b031916145b98975050505050505050565b600063fffffffe1963ffffffff83160161176257610342606a610c2f565b610342606a63ffffffff80851690610a7a16565b919050565b600063fffffffe1963ffffffff83160161179957610342606b610c2f565b610342606b63ffffffff80851690610a7a16565b60006001600160e01b038211156118165760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016107ea565b5090565b600063ffffffff8211156118165760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016107ea565b600054610100900460ff166118a65760405162461bcd60e51b81526004016107ea90612502565b6104c133610d91565b60008082516041036118e55760208301516040840151606085015160001a6118d98782858561191a565b945094505050506114fc565b825160400361190e5760208301516040840151611903868383611a07565b9350935050506114fc565b506000905060026114fc565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561195157506000905060036119fe565b8460ff16601b1415801561196957508460ff16601c14155b1561197a57506000905060046119fe565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156119ce573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166119f7576000600192509250506119fe565b9150600090505b94509492505050565b6000806001600160ff1b03831681611a2460ff86901c601b6123eb565b9050611a328782888561191a565b935093505050935093915050565b508054600082559060005260206000209081019061031b91905b808211156118165760008155600101611a5a565b634e487b7160e01b600052604160045260246000fd5b604051602081016001600160401b0381118282101715611aa657611aa6611a6e565b60405290565b604080519081016001600160401b0381118282101715611aa657611aa6611a6e565b604051601f8201601f191681016001600160401b0381118282101715611af657611af6611a6e565b604052919050565b60006001600160401b03821115611b1757611b17611a6e565b5060051b60200190565b6001600160a01b038116811461031b57600080fd5b600082601f830112611b4757600080fd5b81356020611b5c611b5783611afe565b611ace565b8083825260208201915060208460051b870101935086841115611b7e57600080fd5b602086015b84811015611ba3578035611b9681611b21565b8352918301918301611b83565b509695505050505050565b600060208284031215611bc057600080fd5b81356001600160401b03811115611bd657600080fd5b611be284828501611b36565b949350505050565b60006001600160401b03821115611c0357611c03611a6e565b50601f01601f191660200190565b600082601f830112611c2257600080fd5b8135611c30611b5782611bea565b818152846020838601011115611c4557600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215611c7557600080fd5b8235611c8081611b21565b915060208301356001600160401b0380821115611c9c57600080fd5b9084019060608287031215611cb057600080fd5b604051606081018181108382111715611ccb57611ccb611a6e565b604052823582811115611cdd57600080fd5b611ce988828601611c11565b82525060208301356020820152604083013560408201528093505050509250929050565b63ffffffff8116811461031b57600080fd5b600060208284031215611d3157600080fd5b81356104f781611d0d565b60008060408385031215611d4f57600080fd5b8235915060208301356001600160401b03811115611d6c57600080fd5b611d7885828601611c11565b9150509250929050565b8051602080845281518482018190526000926040919083019082870190855b81811015611dd857835180516001600160a01b031684528601516001600160601b0316868401529285019291840191600101611da1565b5090979650505050505050565b6020815260006104f76020830184611d82565b600060208284031215611e0a57600080fd5b81356104f781611b21565b60008060408385031215611e2857600080fd5b82356001600160401b0380821115611e3f57600080fd5b818501915085601f830112611e5357600080fd5b81356020611e63611b5783611afe565b82815260059290921b84018101918181019089841115611e8257600080fd5b8286015b84811015611eba57803586811115611e9e5760008081fd5b611eac8c86838b0101611b36565b845250918301918301611e86565b5096505086013592505080821115611ed157600080fd5b50611d7885828601611c11565b600060208284031215611ef057600080fd5b5035919050565b60008060408385031215611f0a57600080fd5b8235915060208301356001600160401b03811115611f2757600080fd5b611d7885828601611b36565b60008060408385031215611f4657600080fd5b8235611f5181611b21565b91506020830135611f6181611d0d565b809150509250929050565b60006020808385031215611f7f57600080fd5b611f87611a84565b915082356001600160401b03811115611f9f57600080fd5b8301601f81018513611fb057600080fd5b8035611fbe611b5782611afe565b81815260069190911b82018301908381019087831115611fdd57600080fd5b928401925b828410156120405760408489031215611ffb5760008081fd5b612003611aac565b843561200e81611b21565b8152848601356001600160601b038116811461202a5760008081fd5b8187015282526040939093019290840190611fe2565b8552509295945050505050565b60008060006060848603121561206257600080fd5b833561206d81611b21565b92506020840135915060408401356001600160401b0381111561208f57600080fd5b61209b86828701611f6c565b9150509250925092565b600080604083850312156120b857600080fd5b82356001600160401b03808211156120cf57600080fd5b6120db86838701611f6c565b935060208501359150808211156120f157600080fd5b50611d7885828601611b36565b60005b83811015612119578181015183820152602001612101565b50506000910152565b600082601f83011261213357600080fd5b81516020612143611b5783611afe565b82815260059290921b8401810191818101908684111561216257600080fd5b8286015b84811015611ba35780516001600160401b038111156121855760008081fd5b8701603f810189136121975760008081fd5b8481015160406121a9611b5783611bea565b8281528b828486010111156121be5760008081fd5b6121cd838983018487016120fe565b8652505050918301918301612166565b805161177681611d0d565b6000806000606084860312156121fd57600080fd5b83516001600160401b038082111561221457600080fd5b818601915086601f83011261222857600080fd5b81516020612238611b5783611afe565b82815260059290921b8401810191818101908a84111561225757600080fd5b948201945b8386101561227e57855161226f81611b21565b8252948201949082019061225c565b9189015191975090935050508082111561229757600080fd5b506122a486828701612122565b9250506122b3604085016121dd565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b81811015612320578551851683529483019491830191600101612302565b509098975050505050505050565b6000602080838503121561234157600080fd5b82516001600160401b0381111561235757600080fd5b8301601f8101851361236857600080fd5b8051612376611b5782611afe565b81815260059190911b8201830190838101908783111561239557600080fd5b928401925b828410156123b35783518252928401929084019061239a565b979650505050505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610342576103426123be565b80820180821115610342576103426123be565b60008261241b57634e487b7160e01b600052601260045260246000fd5b500490565b8082018281126000831280158216821582161715612440576124406123be565b505092915050565b60006001820161245a5761245a6123be565b5060010190565b600081518084526124798160208601602086016120fe565b601f01601f19169290920160200192915050565b60018060a01b03831681526040602082015260008251606060408401526124b760a0840182612461565b90506020840151606084015260408401516080840152809150509392505050565b81810381811115610342576103426123be565b6000816124fa576124fa6123be565b506000190190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6040815260006125606040830185611d82565b82810360208401526125728185611d82565b95945050505050565b818103600083128015838313168383128216171561259b5761259b6123be565b5092915050565b634e487b7160e01b600052602160045260246000fd5b828152604060208201526000611be26040830184612461565b600082516125e38184602087016120fe565b9190910192915050565b6000602082840312156125ff57600080fd5b81516001600160e01b0319811681146104f757600080fdfea2646970667358221220483716b837d4d01115f634990b93cdcc240ed08cb379a2802ab77f07e11f1c3564736f6c63430008180033","sourceMap":"1122:21878:67:-:0;;;1525:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1959:39:68;;;1122:21878:67;;14:317:99;111:6;164:2;152:9;143:7;139:23;135:32;132:52;;;180:1;177;170:12;132:52;206:16;;-1:-1:-1;;;;;251:31:99;;241:42;;231:70;;297:1;294;287:12;231:70;320:5;14:317;-1:-1:-1;;;14:317:99:o;:::-;1122:21878:67;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101415760003560e01c8063696255be116100b857806398ec1ac91161007c57806398ec1ac914610282578063ab11899514610295578063b933fa74146102a8578063dec5d1f6146102b0578063ec7fbb31146102c3578063f2fde38b146102ff57600080fd5b8063696255be14610231578063715018a614610244578063857dc1901461024c5780638da5cb5b14610254578063955f2d901461026f57600080fd5b80631e4cd85e1161010a5780631e4cd85e146101d5578063314f3a49146101e85780633b242e4a146101f057806340bf2fb7146102035780635140a5481461020b5780635ef533291461021e57600080fd5b8062cf2ab5146101465780630a601a121461015b5780630dba33941461016e5780631626ba7e146101945780631703a018146101c0575b600080fd5b610159610154366004611bae565b610312565b005b610159610169366004611c62565b61031e565b61018161017c366004611d1f565b61032c565b6040519081526020015b60405180910390f35b6101a76101a2366004611d3c565b610348565b6040516001600160e01b0319909116815260200161018b565b6101c8610386565b60405161018b9190611de5565b6101816101e3366004611d1f565b610419565b61018161042f565b6101816101fe366004611df8565b610440565b606754610181565b610159610219366004611e15565b610461565b61015961022c366004611ede565b610484565b61015961023f366004611ef7565b610495565b6101596104af565b6101596104c3565b6033546040516001600160a01b03909116815260200161018b565b61018161027d366004611f33565b6104cc565b610181610290366004611df8565b6104fe565b6101596102a336600461204d565b610751565b61018161086d565b6101596102be3660046120a5565b610879565b6102ef6102d1366004611df8565b6001600160a01b03166000908152606d602052604090205460ff1690565b604051901515815260200161018b565b61015961030d366004611df8565b61088a565b61031b81610900565b50565b610328828261094d565b5050565b6000610342606a63ffffffff80851690610a7a16565b92915050565b6000806000808480602001905181019061036291906121e8565b92509250925061037486848484610b89565b50630b135d3f60e11b95945050505050565b6040805160208101909152606081526040805160668054602081810284018501855283018181529293919284929091849160009085015b8282101561040c57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b0316818301528252600190920191016103bd565b5050505081525050905090565b6000610342606b63ffffffff80851690610a7a16565b600061043b606a610c2f565b905090565b6001600160a01b0381166000908152606c6020526040812061034290610c2f565b61032882600081518110610477576104776122bc565b6020026020010151610c8b565b61048c610cae565b61031b81610d08565b61049d610cae565b6104a682610d4b565b61032881610900565b6104b7610cae565b6104c16000610d91565b565b6104c133610de3565b6001600160a01b0382166000908152606c602052604081206104f79063ffffffff80851690610a7a16565b9392505050565b6000806066600001805480602002602001604051908101604052809291908181526020016000905b8282101561057557600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101610526565b50505050905060008082516001600160401b0381111561059757610597611a6e565b6040519080825280602002602001820160405280156105c0578160200160208202803683370190505b50905060005b835181101561061f578381815181106105e1576105e16122bc565b6020026020010151600001518282815181106105ff576105ff6122bc565b6001600160a01b03909216602092830291909101909101526001016105c6565b50604051639004134760e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063900413479061067190899086906004016122d2565b600060405180830381865afa15801561068e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106b6919081019061232e565b905060005b8451811015610723578481815181106106d6576106d66122bc565b6020026020010151602001516001600160601b03168282815181106106fd576106fd6122bc565b602002602001015161070f91906123d4565b61071990856123eb565b93506001016106bb565b50610730612710846123fe565b92506067548310610745575090949350505050565b50600095945050505050565b600054610100900460ff16158080156107715750600054600160ff909116105b8061078b5750303b15801561078b575060005460ff166001145b6107f35760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610816576000805461ff0019166101001790555b610821848484610f06565b8015610867576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b600061043b606b610c2f565b610881610cae565b6104a682610f67565b610892610cae565b6001600160a01b0381166108f75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107ea565b61031b81610d91565b6000805b82518110156109435761092f838281518110610922576109226122bc565b60200260200101516110be565b6109399083612420565b9150600101610904565b50610867816111e7565b6001600160a01b0382166000908152606d602052604090205460ff1615610987576040516342ee68b560e01b815260040160405180910390fd5b6065805490600061099783612448565b90915550506001600160a01b0382166000908152606d60205260408120805460ff191660011790556109c8836110be565b90506109d3816111e7565b5050606854604051639926ee7d60e01b81526001600160a01b0390911690639926ee7d90610a07908690869060040161248d565b600060405180830381600087803b158015610a2157600080fd5b505af1158015610a35573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090861691507fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c190600090a3505050565b6000438210610acb5760405162461bcd60e51b815260206004820181905260248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e656460448201526064016107ea565b825460005b81811015610b30576000610ae48284611253565b905084866000018281548110610afc57610afc6122bc565b60009182526020909120015463ffffffff161115610b1c57809250610b2a565b610b278160016123eb565b91505b50610ad0565b8115610b745784610b426001846124d8565b81548110610b5257610b526122bc565b60009182526020909120015464010000000090046001600160e01b0316610b77565b60005b6001600160e01b031695945050505050565b600083519050600080610b9d83865161126e565b60005b83811015610c1b576000878281518110610bbc57610bbc6122bc565b60200260200101519050610bd084826112b2565b610bf4818a898581518110610be757610be76122bc565b60200260200101516112e4565b8093506000610c038288611315565b9050610c0f81856123eb565b93505050600101610ba0565b50610c26818561137c565b50505050505050565b80546000908015610c785782610c466001836124d8565b81548110610c5657610c566122bc565b60009182526020909120015464010000000090046001600160e01b0316610c7b565b60005b6001600160e01b03169392505050565b6065548151146103125760405163169efb5b60e11b815260040160405180910390fd5b6033546001600160a01b031633146104c15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107ea565b610d13606b826113d8565b50506040518181527f9324f7e5a7c0288808a634ccde44b8e979676474b22e29ee9dd569b55e791a4b9060200160405180910390a150565b606780549082905560408051828152602081018490527f713ca53b88d6eb63f5b1854cb8cbdd736ec51eda225e46791aa9298b0160648f91015b60405180910390a15050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0381166000908152606d602052604090205460ff16610e1c576040516325ec6c1f60e01b815260040160405180910390fd5b60658054906000610e2c836124eb565b90915550506001600160a01b0381166000908152606d60205260408120805460ff19169055610e5a826110be565b9050610e65816111e7565b50506068546040516351b27a6d60e11b81526001600160a01b0384811660048301529091169063a364f4da90602401600060405180830381600087803b158015610eae57600080fd5b505af1158015610ec2573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090851691507f31e0adfec71bccee37b6e83a90c2fedb17d8f1693fee863c4771e7bfe2aed58090600090a35050565b600054610100900460ff16610f2d5760405162461bcd60e51b81526004016107ea90612502565b606880546001600160a01b0319166001600160a01b038516179055610f5182610d08565b610f5a81610f67565b610f62611503565b505050565b610f7081611532565b610f8d5760405163d173577960e01b815260040160405180910390fd5b60408051606680546020818102840185018552830181815260009484928491879085015b8282101561100057600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101610fb1565b5050509152509091506066905060006110198282611a40565b505060005b82515181101561108c57825180516066919083908110611040576110406122bc565b602090810291909101810151825460018181018555600094855293839020825192909301516001600160601b0316600160a01b026001600160a01b03909216919091179101550161101e565b507f23aad4e61744ece164130aa415c1616e80136b0f0770e56589438b90b269265e8183604051610d8592919061254d565b6001600160a01b0381166000908152606c602052604081208190819081906110e590610c2f565b6001600160a01b0386166000908152606d602052604090205490915060ff1661114d57611112818461257b565b9250826000036111255750909392505050565b6001600160a01b0385166000908152606c60205260408120611146916113d8565b505061119a565b611156856104fe565b9150611162818361257b565b9250826000036111755750909392505050565b6001600160a01b0385166000908152606c6020526040902061119790836113d8565b50505b60408051828152602081018490526001600160a01b038716917f88770dc862e47a7ed586907857eb1b75e4c5ffc8b707c7ee10eb74d6885fe594910160405180910390a250909392505050565b6000806111f4606a610c2f565b915060006112028484612420565b9150819050611212606a826113d8565b505060408051848152602081018490527f86dcf86b12dfeedea74ae9300dbdaa193bcce5809369c8177ea2f4eaaa65729b910160405180910390a150915091565b600061126260028484186123fe565b6104f7908484166123eb565b808214611291576040516001621398b960e31b0319815260040160405180910390fd5b816000036103285760405163251f56a160e21b815260040160405180910390fd5b806001600160a01b0316826001600160a01b0316106103285760405163ba50f91160e01b815260040160405180910390fd5b6112f86001600160a01b03841683836115f8565b610f6257604051638baa579f60e01b815260040160405180910390fd5b600063fffffffe1963ffffffff831601611351576001600160a01b0383166000908152606c6020526040902061134a90610c2f565b9050610342565b6001600160a01b0383166000908152606c6020526040902061134a9063ffffffff80851690610a7a16565b600061138782611744565b9050808311156113aa57604051634b05a0f760e11b815260040160405180910390fd5b60006113b58361177b565b9050838111156108675760405163e121632f60e01b815260040160405180910390fd5b81546000908190816113e986610c2f565b9050600082118015611427575043866114036001856124d8565b81548110611413576114136122bc565b60009182526020909120015463ffffffff16145b1561148757611435856117ad565b866114416001856124d8565b81548110611451576114516122bc565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b031602179055506114f5565b85600001604051806040016040528061149f4361181a565b63ffffffff1681526020016114b3886117ad565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b9250839150505b9250929050565b600054610100900460ff1661152a5760405162461bcd60e51b81526004016107ea90612502565b6104c161187f565b8051600090818080805b84518110156115d657848181518110611557576115576122bc565b6020026020010151600001519250826001600160a01b0316846001600160a01b0316106115975760405163ba50f91160e01b815260040160405180910390fd5b8293508481815181106115ac576115ac6122bc565b6020026020010151602001516001600160601b0316826115cc91906123eb565b915060010161153c565b5061271081146115ec5750600095945050505050565b50600195945050505050565b600080600061160785856118af565b90925090506000816004811115611620576116206125a2565b14801561163e5750856001600160a01b0316826001600160a01b0316145b1561164e576001925050506104f7565b600080876001600160a01b0316631626ba7e60e01b88886040516024016116769291906125b8565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516116b491906125d1565b600060405180830381855afa9150503d80600081146116ef576040519150601f19603f3d011682016040523d82523d6000602084013e6116f4565b606091505b5091509150818015611707575080516020145b801561173857508051630b135d3f60e11b9061172c90830160209081019084016125ed565b6001600160e01b031916145b98975050505050505050565b600063fffffffe1963ffffffff83160161176257610342606a610c2f565b610342606a63ffffffff80851690610a7a16565b919050565b600063fffffffe1963ffffffff83160161179957610342606b610c2f565b610342606b63ffffffff80851690610a7a16565b60006001600160e01b038211156118165760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016107ea565b5090565b600063ffffffff8211156118165760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016107ea565b600054610100900460ff166118a65760405162461bcd60e51b81526004016107ea90612502565b6104c133610d91565b60008082516041036118e55760208301516040840151606085015160001a6118d98782858561191a565b945094505050506114fc565b825160400361190e5760208301516040840151611903868383611a07565b9350935050506114fc565b506000905060026114fc565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561195157506000905060036119fe565b8460ff16601b1415801561196957508460ff16601c14155b1561197a57506000905060046119fe565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156119ce573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166119f7576000600192509250506119fe565b9150600090505b94509492505050565b6000806001600160ff1b03831681611a2460ff86901c601b6123eb565b9050611a328782888561191a565b935093505050935093915050565b508054600082559060005260206000209081019061031b91905b808211156118165760008155600101611a5a565b634e487b7160e01b600052604160045260246000fd5b604051602081016001600160401b0381118282101715611aa657611aa6611a6e565b60405290565b604080519081016001600160401b0381118282101715611aa657611aa6611a6e565b604051601f8201601f191681016001600160401b0381118282101715611af657611af6611a6e565b604052919050565b60006001600160401b03821115611b1757611b17611a6e565b5060051b60200190565b6001600160a01b038116811461031b57600080fd5b600082601f830112611b4757600080fd5b81356020611b5c611b5783611afe565b611ace565b8083825260208201915060208460051b870101935086841115611b7e57600080fd5b602086015b84811015611ba3578035611b9681611b21565b8352918301918301611b83565b509695505050505050565b600060208284031215611bc057600080fd5b81356001600160401b03811115611bd657600080fd5b611be284828501611b36565b949350505050565b60006001600160401b03821115611c0357611c03611a6e565b50601f01601f191660200190565b600082601f830112611c2257600080fd5b8135611c30611b5782611bea565b818152846020838601011115611c4557600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215611c7557600080fd5b8235611c8081611b21565b915060208301356001600160401b0380821115611c9c57600080fd5b9084019060608287031215611cb057600080fd5b604051606081018181108382111715611ccb57611ccb611a6e565b604052823582811115611cdd57600080fd5b611ce988828601611c11565b82525060208301356020820152604083013560408201528093505050509250929050565b63ffffffff8116811461031b57600080fd5b600060208284031215611d3157600080fd5b81356104f781611d0d565b60008060408385031215611d4f57600080fd5b8235915060208301356001600160401b03811115611d6c57600080fd5b611d7885828601611c11565b9150509250929050565b8051602080845281518482018190526000926040919083019082870190855b81811015611dd857835180516001600160a01b031684528601516001600160601b0316868401529285019291840191600101611da1565b5090979650505050505050565b6020815260006104f76020830184611d82565b600060208284031215611e0a57600080fd5b81356104f781611b21565b60008060408385031215611e2857600080fd5b82356001600160401b0380821115611e3f57600080fd5b818501915085601f830112611e5357600080fd5b81356020611e63611b5783611afe565b82815260059290921b84018101918181019089841115611e8257600080fd5b8286015b84811015611eba57803586811115611e9e5760008081fd5b611eac8c86838b0101611b36565b845250918301918301611e86565b5096505086013592505080821115611ed157600080fd5b50611d7885828601611c11565b600060208284031215611ef057600080fd5b5035919050565b60008060408385031215611f0a57600080fd5b8235915060208301356001600160401b03811115611f2757600080fd5b611d7885828601611b36565b60008060408385031215611f4657600080fd5b8235611f5181611b21565b91506020830135611f6181611d0d565b809150509250929050565b60006020808385031215611f7f57600080fd5b611f87611a84565b915082356001600160401b03811115611f9f57600080fd5b8301601f81018513611fb057600080fd5b8035611fbe611b5782611afe565b81815260069190911b82018301908381019087831115611fdd57600080fd5b928401925b828410156120405760408489031215611ffb5760008081fd5b612003611aac565b843561200e81611b21565b8152848601356001600160601b038116811461202a5760008081fd5b8187015282526040939093019290840190611fe2565b8552509295945050505050565b60008060006060848603121561206257600080fd5b833561206d81611b21565b92506020840135915060408401356001600160401b0381111561208f57600080fd5b61209b86828701611f6c565b9150509250925092565b600080604083850312156120b857600080fd5b82356001600160401b03808211156120cf57600080fd5b6120db86838701611f6c565b935060208501359150808211156120f157600080fd5b50611d7885828601611b36565b60005b83811015612119578181015183820152602001612101565b50506000910152565b600082601f83011261213357600080fd5b81516020612143611b5783611afe565b82815260059290921b8401810191818101908684111561216257600080fd5b8286015b84811015611ba35780516001600160401b038111156121855760008081fd5b8701603f810189136121975760008081fd5b8481015160406121a9611b5783611bea565b8281528b828486010111156121be5760008081fd5b6121cd838983018487016120fe565b8652505050918301918301612166565b805161177681611d0d565b6000806000606084860312156121fd57600080fd5b83516001600160401b038082111561221457600080fd5b818601915086601f83011261222857600080fd5b81516020612238611b5783611afe565b82815260059290921b8401810191818101908a84111561225757600080fd5b948201945b8386101561227e57855161226f81611b21565b8252948201949082019061225c565b9189015191975090935050508082111561229757600080fd5b506122a486828701612122565b9250506122b3604085016121dd565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b81811015612320578551851683529483019491830191600101612302565b509098975050505050505050565b6000602080838503121561234157600080fd5b82516001600160401b0381111561235757600080fd5b8301601f8101851361236857600080fd5b8051612376611b5782611afe565b81815260059190911b8201830190838101908783111561239557600080fd5b928401925b828410156123b35783518252928401929084019061239a565b979650505050505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610342576103426123be565b80820180821115610342576103426123be565b60008261241b57634e487b7160e01b600052601260045260246000fd5b500490565b8082018281126000831280158216821582161715612440576124406123be565b505092915050565b60006001820161245a5761245a6123be565b5060010190565b600081518084526124798160208601602086016120fe565b601f01601f19169290920160200192915050565b60018060a01b03831681526040602082015260008251606060408401526124b760a0840182612461565b90506020840151606084015260408401516080840152809150509392505050565b81810381811115610342576103426123be565b6000816124fa576124fa6123be565b506000190190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6040815260006125606040830185611d82565b82810360208401526125728185611d82565b95945050505050565b818103600083128015838313168383128216171561259b5761259b6123be565b5092915050565b634e487b7160e01b600052602160045260246000fd5b828152604060208201526000611be26040830184612461565b600082516125e38184602087016120fe565b9190910192915050565b6000602082840312156125ff57600080fd5b81516001600160e01b0319811681146104f757600080fdfea2646970667358221220483716b837d4d01115f634990b93cdcc240ed08cb379a2802ab77f07e11f1c3564736f6c63430008180033","sourceMap":"1122:21878:67:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3047:108;;;;;;:::i;:::-;;:::i;:::-;;2370:231;;;;;;:::i;:::-;;:::i;7607:180::-;;;;;;:::i;:::-;;:::i;:::-;;;4583:25:99;;;4571:2;4556:18;7607:180:67;;;;;;;;5285:461;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;5174:33:99;;;5156:52;;5144:2;5129:18;5285:461:67;5012:202:99;5882:87:67;;;:::i;:::-;;;;;;;:::i;8020:188::-;;;;;;:::i;:::-;;:::i;6471:124::-;;;:::i;6163:172::-;;;;;;:::i;:::-;;:::i;8456:95::-;8530:14;;8456:95;;10419:177;;;;;;:::i;:::-;;:::i;4746:131::-;;;;;;:::i;:::-;;:::i;4000:220::-;;;;;;:::i;:::-;;:::i;2071:101:0:-;;;:::i;2656:87:67:-;;;:::i;1441:85:0:-;1513:6;;1441:85;;-1:-1:-1;;;;;1513:6:0;;;8601:51:99;;8589:2;8574:18;1441:85:0;8455:203:99;7173:210:67;;;;;;:::i;:::-;;:::i;8842:803::-;;;;;;:::i;:::-;;:::i;1979:231::-;;;;;;:::i;:::-;;:::i;6717:160::-;;;:::i;3560:204::-;;;;;;:::i;:::-;;:::i;8214:144::-;;;;;;:::i;:::-;-1:-1:-1;;;;;8321:30:67;8298:4;8321:30;;;:19;:30;;;;;;;;;8214:144;;;;11827:14:99;;11820:22;11802:41;;11790:2;11775:18;8214:144:67;11662:187:99;2321:198:0;;;;;;:::i;:::-;;:::i;3047:108:67:-;3120:28;3137:10;3120:16;:28::i;:::-;3047:108;:::o;2370:231::-;2539:55;2564:9;2575:18;2539:24;:55::i;:::-;2370:231;;:::o;7607:180::-;7710:7;7736:44;:19;:44;;;;;:30;:44;:::i;:::-;7729:51;7607:180;-1:-1:-1;;7607:180:67:o;5285:461::-;5404:6;5436:24;5474:25;5513:21;5558:14;5547:56;;;;;;;;;;;;:::i;:::-;5422:181;;;;;;5613:64;5630:9;5641:7;5650:10;5662:14;5613:16;:64::i;:::-;-1:-1:-1;;;;5694:45:67;5285:461;-1:-1:-1;;;;;5285:461:67:o;5882:87::-;-1:-1:-1;;;;;;;;;;;;5948:14:67;;;5955:7;5948:14;;;;;;;;;;;;;;;;;;;5955:7;;5948:14;;;;5955:7;;-1:-1:-1;;5948:14:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5948:14:67;;;;-1:-1:-1;;;5948:14:67;;-1:-1:-1;;;;;5948:14:67;;;;;;;;;;;;;;;;;;;;;;;;;;5882:87;:::o;8020:188::-;8127:7;8153:48;:23;:48;;;;;:34;:48;:::i;6471:124::-;6534:7;6560:28;:19;:26;:28::i;:::-;6553:35;;6471:124;:::o;6163:172::-;-1:-1:-1;;;;;6286:33:67;;6260:7;6286:33;;;:22;:33;;;;;:42;;:40;:42::i;10419:177::-;10547:42;10567:18;10586:1;10567:21;;;;;;;;:::i;:::-;;;;;;;10547:19;:42::i;4746:131::-;1334:13:0;:11;:13::i;:::-;4831:39:67::1;4853:16;4831:21;:39::i;4000:220::-:0;1334:13:0;:11;:13::i;:::-;4136:39:67::1;4157:17;4136:20;:39::i;:::-;4185:28;4202:10;4185:16;:28::i;2071:101:0:-:0;1334:13;:11;:13::i;:::-;2135:30:::1;2162:1;2135:18;:30::i;:::-;2071:101::o:0;2656:87:67:-;2705:31;2725:10;2705:19;:31::i;7173:210::-;-1:-1:-1;;;;;7318:33:67;;7292:7;7318:33;;;:22;:33;;;;;:58;;;;;;;:44;:58;:::i;:::-;7311:65;7173:210;-1:-1:-1;;;7173:210:67:o;8842:803::-;8923:7;8942:38;8983:7;:18;;8942:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8942:59:67;;;;-1:-1:-1;;;8942:59:67;;-1:-1:-1;;;;;8942:59:67;;;;;;;;;;;;;;;;;;;;;;9011:14;9035:29;9083:14;:21;-1:-1:-1;;;;;9067:38:67;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9067:38:67;;9035:70;;9120:9;9115:115;9135:14;:21;9131:1;:25;9115:115;;;9193:14;9208:1;9193:17;;;;;;;;:::i;:::-;;;;;;;:26;;;9177:10;9188:1;9177:13;;;;;;;;:::i;:::-;-1:-1:-1;;;;;9177:42:67;;;:13;;;;;;;;;;;:42;9158:3;;9115:115;;;-1:-1:-1;9265:93:67;;-1:-1:-1;;;9265:93:67;;9239:23;;-1:-1:-1;;;;;9265:18:67;:36;;;;:93;;9315:9;;9338:10;;9265:93;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9265:93:67;;;;;;;;;;;;:::i;:::-;9239:119;;9373:9;9368:123;9388:14;:21;9384:1;:25;9368:123;;;9452:14;9467:1;9452:17;;;;;;;;:::i;:::-;;;;;;;:28;;;-1:-1:-1;;;;;9440:40:67;:6;9447:1;9440:9;;;;;;;;:::i;:::-;;;;;;;:40;;;;:::i;:::-;9430:50;;;;:::i;:::-;;-1:-1:-1;9411:3:67;;9368:123;;;-1:-1:-1;9509:12:67;725:6:68;9509::67;:12;:::i;:::-;9500:21;;9546:14;;9536:6;:24;9532:107;;-1:-1:-1;9583:6:67;;8842:803;-1:-1:-1;;;;8842:803:67:o;9532:107::-;-1:-1:-1;9627:1:67;;8842:803;-1:-1:-1;;;;;8842:803:67:o;1979:231::-;3111:19:2;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:2;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:2;1476:19:4;:23;;;3219:66:2;;-1:-1:-1;3268:12:2;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:2;;17620:2:99;3157:201:2;;;17602:21:99;17659:2;17639:18;;;17632:30;17698:34;17678:18;;;17671:62;-1:-1:-1;;;17749:18:99;;;17742:44;17803:19;;3157:201:2;;;;;;;;;3368:12;:16;;-1:-1:-1;;3368:16:2;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:2;;;;;3394:65;2134:69:67::1;2160:15;2177:16;2195:7;2134:25;:69::i;:::-;3483:14:2::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;3513:21:2;;;3553:14;;-1:-1:-1;17985:36:99;;3553:14:2;;17973:2:99;17958:18;3553:14:2;;;;;;;3479:99;3101:483;1979:231:67;;;:::o;6717:160::-;6808:7;6838:32;:23;:30;:32::i;3560:204::-;1334:13:0;:11;:13::i;:::-;3691:28:67::1;3711:7;3691:19;:28::i;2321:198:0:-:0;1334:13;:11;:13::i;:::-;-1:-1:-1;;;;;2409:22:0;::::1;2401:73;;;::::0;-1:-1:-1;;;2401:73:0;;18234:2:99;2401:73:0::1;::::0;::::1;18216:21:99::0;18273:2;18253:18;;;18246:30;18312:34;18292:18;;;18285:62;-1:-1:-1;;;18363:18:99;;;18356:36;18409:19;;2401:73:0::1;18032:402:99::0;2401:73:0::1;2484:28;2503:8;2484:18;:28::i;11343:251:67:-:0;11417:12;11444:9;11439:114;11459:10;:17;11455:1;:21;11439:114;;;11506:36;11528:10;11539:1;11528:13;;;;;;;;:::i;:::-;;;;;;;11506:21;:36::i;:::-;11497:45;;;;:::i;:::-;;-1:-1:-1;11478:3:67;;11439:114;;;;11562:25;11581:5;11562:18;:25::i;13911:629::-;-1:-1:-1;;;;;14087:30:67;;;;;;:19;:30;;;;;;;;14083:95;;;14140:27;;-1:-1:-1;;;14140:27:67;;;;;;;;;;;14083:95;14187:15;:17;;;:15;:17;;;:::i;:::-;;;;-1:-1:-1;;;;;;;14214:30:67;;;;;;:19;:30;;;;;:37;;-1:-1:-1;;14214:37:67;14247:4;14214:37;;;14276:32;14234:9;14276:21;:32::i;:::-;14261:47;;14318:25;14337:5;14318:18;:25::i;:::-;-1:-1:-1;;14369:15:67;;14353:119;;-1:-1:-1;;;14353:119:67;;-1:-1:-1;;;;;14369:15:67;;;;14353:54;;:119;;14421:9;;14444:18;;14353:119;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14517:15:67;;14487:46;;-1:-1:-1;;;;;14517:15:67;;;;-1:-1:-1;14487:46:67;;;;-1:-1:-1;14487:46:67;;14517:15;;14487:46;14073:467;13911:629;;:::o;1314:589:5:-;1400:7;1441:12;1427:11;:26;1419:71;;;;-1:-1:-1;;;1419:71:5;;19908:2:99;1419:71:5;;;19890:21:99;;;19927:18;;;19920:30;19986:34;19966:18;;;19959:62;20038:18;;1419:71:5;19706:356:99;1419:71:5;1516:24;;1501:12;1575:255;1588:4;1582:3;:10;1575:255;;;1608:11;1622:34;1646:3;1651:4;1622:23;:34::i;:::-;1608:48;;1712:11;1674:4;:17;;1692:3;1674:22;;;;;;;;:::i;:::-;;;;;;;;;;:35;;;:49;1670:150;;;1750:3;1743:10;;1670:150;;;1798:7;:3;1804:1;1798:7;:::i;:::-;1792:13;;1670:150;1594:236;1575:255;;;1846:9;;:50;;1862:4;1880:8;1887:1;1880:4;:8;:::i;:::-;1862:27;;;;;;;;:::i;:::-;;;;;;;;;;:34;;;;-1:-1:-1;;;;;1862:34:5;1846:50;;;1858:1;1846:50;-1:-1:-1;;;;;1839:57:5;;1314:589;-1:-1:-1;;;;;1314:589:5:o;17808:893:67:-;17994:21;18018:8;:15;17994:39;;18043:18;18071:20;18102:60;18128:13;18143:11;:18;18102:25;:60::i;:::-;18177:9;18172:458;18192:13;18188:1;:17;18172:458;;;18226:21;18250:8;18259:1;18250:11;;;;;;;;:::i;:::-;;;;;;;18226:35;;18276:49;18299:10;18311:13;18276:22;:49::i;:::-;18339:60;18358:13;18373:9;18384:11;18396:1;18384:14;;;;;;;;:::i;:::-;;;;;;;18339:18;:60::i;:::-;18427:13;18414:26;;18454:22;18479:96;18515:13;18546:15;18479:18;:96::i;:::-;18454:121;-1:-1:-1;18589:30:67;18454:121;18589:30;;:::i;:::-;;-1:-1:-1;;;18207:3:67;;18172:458;;;;18640:54;18664:12;18678:15;18640:23;:54::i;:::-;17984:717;;;17808:893;;;;:::o;934:190:5:-;1028:24;;995:7;;1069:8;;:48;;1084:4;1102:7;1108:1;1102:3;:7;:::i;:::-;1084:26;;;;;;;;:::i;:::-;;;;;;;;;;:33;;;;-1:-1:-1;;;;;1084:33:5;1069:48;;;1080:1;1069:48;-1:-1:-1;;;;;1062:55:5;;934:190;-1:-1:-1;;;934:190:5:o;10875:219:67:-;10977:15;;10956:10;:17;:36;10952:98;;11015:24;;-1:-1:-1;;;11015:24:67;;;;;;;;;;;1599:130:0;1513:6;;-1:-1:-1;;;;;1513:6:0;929:10:6;1662:23:0;1654:68;;;;-1:-1:-1;;;1654:68:0;;20402:2:99;1654:68:0;;;20384:21:99;;;20421:18;;;20414:30;20480:34;20460:18;;;20453:62;20532:18;;1654:68:0;20200:356:99;11764:184:67;11840:46;:23;11869:16;11840:28;:46::i;:::-;-1:-1:-1;;11901:40:67;;4583:25:99;;;11901:40:67;;4571:2:99;4556:18;11901:40:67;;;;;;;11764:184;:::o;12128:240::-;12231:14;;;12255:34;;;;12304:57;;;20735:25:99;;;20791:2;20776:18;;20769:34;;;12304:57:67;;20708:18:99;12304:57:67;;;;;;;;12194:174;12128:240;:::o;2673:187:0:-;2765:6;;;-1:-1:-1;;;;;2781:17:0;;;-1:-1:-1;;;;;;2781:17:0;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;13273:482:67:-;-1:-1:-1;;;;;13345:30:67;;;;;;:19;:30;;;;;;;;13340:92;;13398:23;;-1:-1:-1;;;13398:23:67;;;;;;;;;;;13340:92;13441:15;:17;;;:15;:17;;;:::i;:::-;;;;-1:-1:-1;;;;;;;13475:30:67;;;;;;:19;:30;;;;;13468:37;;-1:-1:-1;;13468:37:67;;;13530:32;13495:9;13530:21;:32::i;:::-;13515:47;;13572:25;13591:5;13572:18;:25::i;:::-;-1:-1:-1;;13623:15:67;;13607:69;;-1:-1:-1;;;13607:69:67;;-1:-1:-1;;;;;8619:32:99;;;13607:69:67;;;8601:51:99;13623:15:67;;;;13607:58;;8574:18:99;;13607:69:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13731:15:67;;13691:57;;-1:-1:-1;;;;;13731:15:67;;;;-1:-1:-1;13691:57:67;;;;-1:-1:-1;13691:57:67;;13731:15;;13691:57;13330:425;13273:482;:::o;9785:336::-;4910:13:2;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:2;;;;;;;:::i;:::-;9964:15:67::1;:37:::0;;-1:-1:-1;;;;;;9964:37:67::1;-1:-1:-1::0;;;;;9964:37:67;::::1;;::::0;;10011:39:::1;10033:16:::0;10011:21:::1;:39::i;:::-;10060:28;10080:7;10060:19;:28::i;:::-;10098:16;:14;:16::i;:::-;9785:336:::0;;;:::o;12732:416::-;12811:26;12826:10;12811:14;:26::i;:::-;12806:80;;12860:15;;-1:-1:-1;;;12860:15:67;;;;;;;;;;;12806:80;12895:33;;;12921:7;12895:33;;;;;;;;;;;;;;;;;:23;;:33;;12921:7;;12895:23;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12895:33:67;;;;-1:-1:-1;;;12895:33:67;;-1:-1:-1;;;;;12895:33:67;;;;;;;;;;;;;;;;-1:-1:-1;;;12895:33:67;;-1:-1:-1;12895:33:67;;-1:-1:-1;12945:7:67;;-1:-1:-1;12945:7:67;12938:14;12945:7;;12938:14;:::i;:::-;;;12967:9;12962:129;12982:21;;:28;12978:32;;12962:129;;;13055:21;;:24;;13031:7;;13055:21;13077:1;;13055:24;;;;;;:::i;:::-;;;;;;;;;;;;13031:49;;;;;;;;-1:-1:-1;13031:49:67;;;;;;;;;;;;;;-1:-1:-1;;;;;13031:49:67;-1:-1:-1;;;13031:49:67;-1:-1:-1;;;;;13031:49:67;;;;;;;;;;13012:3;12962:129;;;;13105:36;13119:9;13130:10;13105:36;;;;;;;:::i;14720:807::-;-1:-1:-1;;;;;14897:33:67;;14810:6;14897:33;;;:22;:33;;;;;14810:6;;;;;;14897:42;;:40;:42::i;:::-;-1:-1:-1;;;;;14954:30:67;;;;;;:19;:30;;;;;;14877:62;;-1:-1:-1;14954:30:67;;14949:481;;15000:23;15013:9;15000:23;;:::i;:::-;;;15041:5;15050:1;15041:10;15037:61;;-1:-1:-1;15078:5:67;;14720:807;-1:-1:-1;;;14720:807:67:o;15037:61::-;-1:-1:-1;;;;;15111:33:67;;15150:1;15111:33;;;:22;:33;;;;;:41;;:38;:41::i;:::-;;;14949:481;;;15195:28;15213:9;15195:17;:28::i;:::-;15183:40;-1:-1:-1;15245:37:67;15272:9;15183:40;15245:37;:::i;:::-;15237:45;;15300:5;15309:1;15300:10;15296:61;;-1:-1:-1;15337:5:67;;14720:807;-1:-1:-1;;;14720:807:67:o;15296:61::-;-1:-1:-1;;;;;15370:33:67;;;;;;:22;:33;;;;;:49;;15409:9;15370:38;:49::i;:::-;;;14949:481;15444:54;;;20735:25:99;;;20791:2;20776:18;;20769:34;;;-1:-1:-1;;;;;15444:54:67;;;;;20708:18:99;15444:54:67;;;;;;;-1:-1:-1;15515:5:67;;14720:807;-1:-1:-1;;;14720:807:67:o;15806:403::-;15880:22;15904;15955:28;:19;:26;:28::i;:::-;15938:45;-1:-1:-1;15993:16:67;16012:30;16037:5;15938:45;16012:30;:::i;:::-;15993:49;-1:-1:-1;15993:49:67;;-1:-1:-1;16097:40:67;:19;15993:49;16097:24;:40::i;:::-;-1:-1:-1;;16152:50:67;;;20735:25:99;;;20791:2;20776:18;;20769:34;;;16152:50:67;;20708:18:99;16152:50:67;;;;;;;15928:281;15806:403;;;:::o;817:153:10:-;879:7;952:11;962:1;953:5;;;952:11;:::i;:::-;942:21;;943:5;;;942:21;:::i;18926:308:67:-;19080:17;19062:14;:35;19058:89;;19120:16;;-1:-1:-1;;;;;;19120:16:67;;;;;;;;;;;19058:89;19160:14;19178:1;19160:19;19156:72;;19202:15;;-1:-1:-1;;;19202:15:67;;;;;;;;;;;19443:207;19585:14;-1:-1:-1;;;;;19570:29:67;:11;-1:-1:-1;;;;;19570:29:67;;19566:78;;19622:11;;-1:-1:-1;;;19622:11:67;;;;;;;;;;;19921:256;20069:50;-1:-1:-1;;;;;20069:27:67;;20097:9;20108:10;20069:27;:50::i;:::-;20064:107;;20142:18;;-1:-1:-1;;;20142:18:67;;;;;;;;;;;20550:349;20664:7;-1:-1:-1;;20706:16:67;20687:35;;;20683:210;;-1:-1:-1;;;;;20745:31:67;;;;;;:22;:31;;;;;:40;;:38;:40::i;:::-;20738:47;;;;20683:210;-1:-1:-1;;;;;20823:31:67;;;;;;:22;:31;;;;;:59;;;;;;;:42;:59;:::i;22544:454::-;22670:19;22692:32;22708:15;22692;:32::i;:::-;22670:54;;22754:11;22738:13;:27;22734:86;;;22788:21;;-1:-1:-1;;;22788:21:67;;;;;;;;;;;22734:86;22829:22;22854:35;22873:15;22854:18;:35::i;:::-;22829:60;;22920:13;22903:14;:30;22899:93;;;22956:25;;-1:-1:-1;;;22956:25:67;;;;;;;;;;;2081:586:5;2192:24;;2150:7;;;;;2240:12;2192:4;2240:6;:12::i;:::-;2226:26;;2272:1;2266:3;:7;:66;;;;-1:-1:-1;2320:12:5;2277:4;2295:7;2301:1;2295:3;:7;:::i;:::-;2277:26;;;;;;;;:::i;:::-;;;;;;;;;;:39;;;:55;2266:66;2262:370;;;2384:36;2414:5;2384:29;:36::i;:::-;2348:4;2366:7;2372:1;2366:3;:7;:::i;:::-;2348:26;;;;;;;;:::i;:::-;;;;;;;;:33;;;:72;;;;;-1:-1:-1;;;;;2348:72:5;;;;;-1:-1:-1;;;;;2348:72:5;;;;;;2262:370;;;2451:4;:17;;2491:116;;;;;;;;2517:42;2546:12;2517:28;:42::i;:::-;2491:116;;;;;;2569:36;2599:5;2569:29;:36::i;:::-;-1:-1:-1;;;;;2491:116:5;;;;;;2451:170;;;;;;;-1:-1:-1;2451:170:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2262:370;2649:3;-1:-1:-1;2654:5:5;;-1:-1:-1;;2081:586:5;;;;;;:::o;1003:95:0:-;4910:13:2;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:2;;;;;;;:::i;:::-;1065:26:0::1;:24;:26::i;16648:671:67:-:0;16785:18;;16732:4;;;;;;16909:288;16929:10;:17;16925:1;:21;16909:288;;;16993:10;17004:1;16993:13;;;;;;;;:::i;:::-;;;;;;;:22;;;16967:49;;17050:15;-1:-1:-1;;;;;17034:31:67;:12;-1:-1:-1;;;;;17034:31:67;;17030:55;;17074:11;;-1:-1:-1;;;17074:11:67;;;;;;;;;;;17030:55;17114:15;17099:30;;17162:10;17173:1;17162:13;;;;;;;;:::i;:::-;;;;;;;:24;;;-1:-1:-1;;;;;17143:43:67;;;;;;:::i;:::-;;-1:-1:-1;16948:3:67;;16909:288;;;;725:6:68;17210:15:67;:22;17206:107;;-1:-1:-1;17255:5:67;;16648:671;-1:-1:-1;;;;;16648:671:67:o;17206:107::-;-1:-1:-1;17298:4:67;;16648:671;-1:-1:-1;;;;;16648:671:67:o;1083:688:9:-;1219:4;1236:17;1255:35;1294:44;1322:4;1328:9;1294:27;:44::i;:::-;1235:103;;-1:-1:-1;1235:103:9;-1:-1:-1;1361:37:9;1352:5;:46;;;;;;;;:::i;:::-;;:69;;;;;1415:6;-1:-1:-1;;;;;1402:19:9;:9;-1:-1:-1;;;;;1402:19:9;;1352:69;1348:111;;;1444:4;1437:11;;;;;;1348:111;1470:12;1484:19;1507:6;-1:-1:-1;;;;;1507:17:9;1561:45;;;1608:4;1614:9;1538:86;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1538:86:9;;;;;;;;;;;;;;-1:-1:-1;;;;;1538:86:9;-1:-1:-1;;;;;;1538:86:9;;;;;;;;;;1507:127;;;;1538:86;1507:127;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1469:165;;;;1652:7;:30;;;;;1663:6;:13;1680:2;1663:19;1652:30;:111;;;;-1:-1:-1;1686:28:9;;-1:-1:-1;;;1718:45:9;1686:28;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1686:77:9;;1652:111;1644:120;1083:688;-1:-1:-1;;;;;;;;1083:688:9:o;21318:297:67:-;21404:7;-1:-1:-1;;21446:16:67;21427:35;;;21423:186;;21485:28;:19;:26;:28::i;21423:186::-;21551:47;:19;:47;;;;;:30;:47;:::i;21423:186::-;21318:297;;;:::o;21940:308::-;22029:7;-1:-1:-1;;22071:16:67;22052:35;;;22048:194;;22110:32;:23;:30;:32::i;22048:194::-;22180:51;:23;:51;;;;;:34;:51;:::i;2762:192:11:-;2819:7;-1:-1:-1;;;;;2846:26:11;;;2838:78;;;;-1:-1:-1;;;2838:78:11;;23248:2:99;2838:78:11;;;23230:21:99;23287:2;23267:18;;;23260:30;23326:34;23306:18;;;23299:62;-1:-1:-1;;;23377:18:99;;;23370:37;23424:19;;2838:78:11;23046:403:99;2838:78:11;-1:-1:-1;2941:5:11;2762:192::o;15190:187::-;15246:6;15281:16;15272:25;;;15264:76;;;;-1:-1:-1;;;15264:76:11;;23656:2:99;15264:76:11;;;23638:21:99;23695:2;23675:18;;;23668:30;23734:34;23714:18;;;23707:62;-1:-1:-1;;;23785:18:99;;;23778:36;23831:19;;15264:76:11;23454:402:99;1104:111:0;4910:13:2;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:2;;;;;;;:::i;:::-;1176:32:0::1;929:10:6::0;1176:18:0::1;:32::i;2265:1373:8:-:0;2346:7;2355:12;2576:9;:16;2596:2;2576:22;2572:1060;;2912:4;2897:20;;2891:27;2961:4;2946:20;;2940:27;3018:4;3003:20;;2997:27;2614:9;2989:36;3059:25;3070:4;2989:36;2891:27;2940;3059:10;:25::i;:::-;3052:32;;;;;;;;;2572:1060;3105:9;:16;3125:2;3105:22;3101:531;;3421:4;3406:20;;3400:27;3471:4;3456:20;;3450:27;3511:23;3522:4;3400:27;3450;3511:10;:23::i;:::-;3504:30;;;;;;;;3101:531;-1:-1:-1;3581:1:8;;-1:-1:-1;3585:35:8;3565:56;;5832:1603;5958:7;;6882:66;6869:79;;6865:161;;;-1:-1:-1;6980:1:8;;-1:-1:-1;6984:30:8;6964:51;;6865:161;7039:1;:7;;7044:2;7039:7;;:18;;;;;7050:1;:7;;7055:2;7050:7;;7039:18;7035:100;;;-1:-1:-1;7089:1:8;;-1:-1:-1;7093:30:8;7073:51;;7035:100;7246:24;;;7229:14;7246:24;;;;;;;;;24088:25:99;;;24161:4;24149:17;;24129:18;;;24122:45;;;;24183:18;;;24176:34;;;24226:18;;;24219:34;;;7246:24:8;;24060:19:99;;7246:24:8;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7246:24:8;;-1:-1:-1;;7246:24:8;;;-1:-1:-1;;;;;;;7284:20:8;;7280:101;;7336:1;7340:29;7320:50;;;;;;;7280:101;7399:6;-1:-1:-1;7407:20:8;;-1:-1:-1;5832:1603:8;;;;;;;;:::o;4905:336::-;5015:7;;-1:-1:-1;;;;;5060:80:8;;5015:7;5166:25;5182:3;5167:18;;;5189:2;5166:25;:::i;:::-;5150:42;;5209:25;5220:4;5226:1;5229;5232;5209:10;:25::i;:::-;5202:32;;;;;;4905:336;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:127:99;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:253;218:2;212:9;260:4;248:17;;-1:-1:-1;;;;;280:34:99;;316:22;;;277:62;274:88;;;342:18;;:::i;:::-;378:2;371:22;146:253;:::o;404:257::-;476:4;470:11;;;508:17;;-1:-1:-1;;;;;540:34:99;;576:22;;;537:62;534:88;;;602:18;;:::i;666:275::-;737:2;731:9;802:2;783:13;;-1:-1:-1;;779:27:99;767:40;;-1:-1:-1;;;;;822:34:99;;858:22;;;819:62;816:88;;;884:18;;:::i;:::-;920:2;913:22;666:275;;-1:-1:-1;666:275:99:o;946:183::-;1006:4;-1:-1:-1;;;;;1031:6:99;1028:30;1025:56;;;1061:18;;:::i;:::-;-1:-1:-1;1106:1:99;1102:14;1118:4;1098:25;;946:183::o;1134:131::-;-1:-1:-1;;;;;1209:31:99;;1199:42;;1189:70;;1255:1;1252;1245:12;1270:743;1324:5;1377:3;1370:4;1362:6;1358:17;1354:27;1344:55;;1395:1;1392;1385:12;1344:55;1431:6;1418:20;1457:4;1481:60;1497:43;1537:2;1497:43;:::i;:::-;1481:60;:::i;:::-;1563:3;1587:2;1582:3;1575:15;1615:4;1610:3;1606:14;1599:21;;1672:4;1666:2;1663:1;1659:10;1651:6;1647:23;1643:34;1629:48;;1700:3;1692:6;1689:15;1686:35;;;1717:1;1714;1707:12;1686:35;1753:4;1745:6;1741:17;1767:217;1783:6;1778:3;1775:15;1767:217;;;1863:3;1850:17;1880:31;1905:5;1880:31;:::i;:::-;1924:18;;1962:12;;;;1800;;1767:217;;;-1:-1:-1;2002:5:99;1270:743;-1:-1:-1;;;;;;1270:743:99:o;2018:348::-;2102:6;2155:2;2143:9;2134:7;2130:23;2126:32;2123:52;;;2171:1;2168;2161:12;2123:52;2211:9;2198:23;-1:-1:-1;;;;;2236:6:99;2233:30;2230:50;;;2276:1;2273;2266:12;2230:50;2299:61;2352:7;2343:6;2332:9;2328:22;2299:61;:::i;:::-;2289:71;2018:348;-1:-1:-1;;;;2018:348:99:o;2371:186::-;2419:4;-1:-1:-1;;;;;2444:6:99;2441:30;2438:56;;;2474:18;;:::i;:::-;-1:-1:-1;2540:2:99;2519:15;-1:-1:-1;;2515:29:99;2546:4;2511:40;;2371:186::o;2562:462::-;2604:5;2657:3;2650:4;2642:6;2638:17;2634:27;2624:55;;2675:1;2672;2665:12;2624:55;2711:6;2698:20;2742:48;2758:31;2786:2;2758:31;:::i;2742:48::-;2815:2;2806:7;2799:19;2861:3;2854:4;2849:2;2841:6;2837:15;2833:26;2830:35;2827:55;;;2878:1;2875;2868:12;2827:55;2943:2;2936:4;2928:6;2924:17;2917:4;2908:7;2904:18;2891:55;2991:1;2966:16;;;2984:4;2962:27;2955:38;;;;2970:7;2562:462;-1:-1:-1;;;2562:462:99:o;3029:1027::-;3142:6;3150;3203:2;3191:9;3182:7;3178:23;3174:32;3171:52;;;3219:1;3216;3209:12;3171:52;3258:9;3245:23;3277:31;3302:5;3277:31;:::i;:::-;3327:5;-1:-1:-1;3383:2:99;3368:18;;3355:32;-1:-1:-1;;;;;3436:14:99;;;3433:34;;;3463:1;3460;3453:12;3433:34;3486:22;;;;3542:4;3524:16;;;3520:27;3517:47;;;3560:1;3557;3550:12;3517:47;3593:2;3587:9;3635:4;3627:6;3623:17;3690:6;3678:10;3675:22;3670:2;3658:10;3655:18;3652:46;3649:72;;;3701:18;;:::i;:::-;3737:2;3730:22;3777:16;;3805;;;3802:36;;;3834:1;3831;3824:12;3802:36;3862:44;3898:7;3887:8;3883:2;3879:17;3862:44;:::i;:::-;3854:6;3847:60;;3961:2;3957;3953:11;3940:25;3935:2;3927:6;3923:15;3916:50;4020:2;4016;4012:11;3999:25;3994:2;3986:6;3982:15;3975:50;4044:6;4034:16;;;;;3029:1027;;;;;:::o;4061:121::-;4146:10;4139:5;4135:22;4128:5;4125:33;4115:61;;4172:1;4169;4162:12;4187:245;4245:6;4298:2;4286:9;4277:7;4273:23;4269:32;4266:52;;;4314:1;4311;4304:12;4266:52;4353:9;4340:23;4372:30;4396:5;4372:30;:::i;4619:388::-;4696:6;4704;4757:2;4745:9;4736:7;4732:23;4728:32;4725:52;;;4773:1;4770;4763:12;4725:52;4809:9;4796:23;4786:33;;4870:2;4859:9;4855:18;4842:32;-1:-1:-1;;;;;4889:6:99;4886:30;4883:50;;;4929:1;4926;4919:12;4883:50;4952:49;4993:7;4984:6;4973:9;4969:22;4952:49;:::i;:::-;4942:59;;;4619:388;;;;;:::o;5219:747::-;5362:12;;5296:4;5383:15;;;5447:19;;5321:12;;;5475:20;;;5268:3;;5514:2;;5569:21;;;;5534:12;;;;5268:3;5618:321;5632:6;5629:1;5626:13;5618:321;;;5691:13;;5735:9;;-1:-1:-1;;;;;5731:35:99;5717:50;;5813:11;;5807:18;-1:-1:-1;;;;;5803:51:99;5787:14;;;5780:75;5914:15;;;;5877:14;;;;5763:1;5647:9;5618:321;;;-1:-1:-1;5955:5:99;;5219:747;-1:-1:-1;;;;;;;5219:747:99:o;5971:257::-;6150:2;6139:9;6132:21;6113:4;6170:52;6218:2;6207:9;6203:18;6195:6;6170:52;:::i;6233:247::-;6292:6;6345:2;6333:9;6324:7;6320:23;6316:32;6313:52;;;6361:1;6358;6351:12;6313:52;6400:9;6387:23;6419:31;6444:5;6419:31;:::i;6485:1359::-;6612:6;6620;6673:2;6661:9;6652:7;6648:23;6644:32;6641:52;;;6689:1;6686;6679:12;6641:52;6729:9;6716:23;-1:-1:-1;;;;;6799:2:99;6791:6;6788:14;6785:34;;;6815:1;6812;6805:12;6785:34;6853:6;6842:9;6838:22;6828:32;;6898:7;6891:4;6887:2;6883:13;6879:27;6869:55;;6920:1;6917;6910:12;6869:55;6956:2;6943:16;6978:4;7002:60;7018:43;7058:2;7018:43;:::i;7002:60::-;7096:15;;;7178:1;7174:10;;;;7166:19;;7162:28;;;7127:12;;;;7202:19;;;7199:39;;;7234:1;7231;7224:12;7199:39;7266:2;7262;7258:11;7278:364;7294:6;7289:3;7286:15;7278:364;;;7380:3;7367:17;7416:2;7403:11;7400:19;7397:109;;;7460:1;7489:2;7485;7478:14;7397:109;7531:68;7591:7;7586:2;7572:11;7568:2;7564:20;7560:29;7531:68;:::i;:::-;7519:81;;-1:-1:-1;7620:12:99;;;;7311;;7278:364;;;-1:-1:-1;7661:5:99;-1:-1:-1;;7704:18:99;;7691:32;;-1:-1:-1;;7735:16:99;;;7732:36;;;7764:1;7761;7754:12;7732:36;;7787:51;7830:7;7819:8;7808:9;7804:24;7787:51;:::i;7849:180::-;7908:6;7961:2;7949:9;7940:7;7936:23;7932:32;7929:52;;;7977:1;7974;7967:12;7929:52;-1:-1:-1;8000:23:99;;7849:180;-1:-1:-1;7849:180:99:o;8034:416::-;8127:6;8135;8188:2;8176:9;8167:7;8163:23;8159:32;8156:52;;;8204:1;8201;8194:12;8156:52;8240:9;8227:23;8217:33;;8301:2;8290:9;8286:18;8273:32;-1:-1:-1;;;;;8320:6:99;8317:30;8314:50;;;8360:1;8357;8350:12;8314:50;8383:61;8436:7;8427:6;8416:9;8412:22;8383:61;:::i;8663:386::-;8730:6;8738;8791:2;8779:9;8770:7;8766:23;8762:32;8759:52;;;8807:1;8804;8797:12;8759:52;8846:9;8833:23;8865:31;8890:5;8865:31;:::i;:::-;8915:5;-1:-1:-1;8972:2:99;8957:18;;8944:32;8985;8944;8985;:::i;:::-;9036:7;9026:17;;;8663:386;;;;;:::o;9054:1455::-;9107:5;9137:4;9178:2;9166:9;9161:3;9157:19;9153:28;9150:48;;;9194:1;9191;9184:12;9150:48;9216:22;;:::i;:::-;9207:31;;9274:9;9261:23;-1:-1:-1;;;;;9299:6:99;9296:30;9293:50;;;9339:1;9336;9329:12;9293:50;9362:22;;9415:4;9407:13;;9403:23;-1:-1:-1;9393:51:99;;9440:1;9437;9430:12;9393:51;9476:2;9463:16;9499:60;9515:43;9555:2;9515:43;:::i;9499:60::-;9593:15;;;9675:1;9671:10;;;;9663:19;;9659:28;;;9624:12;;;;9699:15;;;9696:35;;;9727:1;9724;9717:12;9696:35;9751:11;;;;9771:703;9787:6;9782:3;9779:15;9771:703;;;9865:4;9859:3;9854;9850:13;9846:24;9843:114;;;9911:1;9940:2;9936;9929:14;9843:114;9985:22;;:::i;:::-;10048:3;10035:17;10065:33;10090:7;10065:33;:::i;:::-;10111:24;;10176:12;;;10163:26;-1:-1:-1;;;;;10224:40:99;;10212:53;;10202:151;;10307:1;10336:2;10332;10325:14;10202:151;10373:16;;;10366:33;10412:20;;9813:4;9804:14;;;;;10452:12;;;;9771:703;;;10483:20;;-1:-1:-1;10490:5:99;;9054:1455;-1:-1:-1;;;;;9054:1455:99:o;10514:547::-;10616:6;10624;10632;10685:2;10673:9;10664:7;10660:23;10656:32;10653:52;;;10701:1;10698;10691:12;10653:52;10740:9;10727:23;10759:31;10784:5;10759:31;:::i;:::-;10809:5;-1:-1:-1;10861:2:99;10846:18;;10833:32;;-1:-1:-1;10916:2:99;10901:18;;10888:32;-1:-1:-1;;;;;10932:30:99;;10929:50;;;10975:1;10972;10965:12;10929:50;10998:57;11047:7;11038:6;11027:9;11023:22;10998:57;:::i;:::-;10988:67;;;10514:547;;;;;:::o;11066:591::-;11184:6;11192;11245:2;11233:9;11224:7;11220:23;11216:32;11213:52;;;11261:1;11258;11251:12;11213:52;11301:9;11288:23;-1:-1:-1;;;;;11371:2:99;11363:6;11360:14;11357:34;;;11387:1;11384;11377:12;11357:34;11410:57;11459:7;11450:6;11439:9;11435:22;11410:57;:::i;:::-;11400:67;;11520:2;11509:9;11505:18;11492:32;11476:48;;11549:2;11539:8;11536:16;11533:36;;;11565:1;11562;11555:12;11533:36;;11588:63;11643:7;11632:8;11621:9;11617:24;11588:63;:::i;11854:250::-;11939:1;11949:113;11963:6;11960:1;11957:13;11949:113;;;12039:11;;;12033:18;12020:11;;;12013:39;11985:2;11978:10;11949:113;;;-1:-1:-1;;12096:1:99;12078:16;;12071:27;11854:250::o;12109:1401::-;12172:5;12225:3;12218:4;12210:6;12206:17;12202:27;12192:55;;12243:1;12240;12233:12;12192:55;12272:6;12266:13;12298:4;12322:60;12338:43;12378:2;12338:43;:::i;12322:60::-;12416:15;;;12502:1;12498:10;;;;12486:23;;12482:32;;;12447:12;;;;12526:15;;;12523:35;;;12554:1;12551;12544:12;12523:35;12590:2;12582:6;12578:15;12602:879;12618:6;12613:3;12610:15;12602:879;;;12697:3;12691:10;-1:-1:-1;;;;;12720:11:99;12717:35;12714:125;;;12793:1;12822:2;12818;12811:14;12714:125;12862:24;;12921:2;12913:11;;12909:21;-1:-1:-1;12899:119:99;;12972:1;13001:2;12997;12990:14;12899:119;13055:2;13051;13047:11;13041:18;13082:2;13112:48;13128:31;13156:2;13128:31;:::i;13112:48::-;13189:2;13180:7;13173:19;13233:3;13228:2;13223;13219;13215:11;13211:20;13208:29;13205:119;;;13278:1;13307:2;13303;13296:14;13205:119;13337:69;13403:2;13398;13389:7;13385:16;13380:2;13376;13372:11;13337:69;:::i;:::-;13419:20;;-1:-1:-1;;;13459:12:99;;;;12635;;12602:879;;13515:136;13593:13;;13615:30;13593:13;13615:30;:::i;13656:1299::-;13802:6;13810;13818;13871:2;13859:9;13850:7;13846:23;13842:32;13839:52;;;13887:1;13884;13877:12;13839:52;13920:9;13914:16;-1:-1:-1;;;;;13990:2:99;13982:6;13979:14;13976:34;;;14006:1;14003;13996:12;13976:34;14044:6;14033:9;14029:22;14019:32;;14089:7;14082:4;14078:2;14074:13;14070:27;14060:55;;14111:1;14108;14101:12;14060:55;14140:2;14134:9;14162:4;14186:60;14202:43;14242:2;14202:43;:::i;14186:60::-;14280:15;;;14362:1;14358:10;;;;14350:19;;14346:28;;;14311:12;;;;14386:19;;;14383:39;;;14418:1;14415;14408:12;14383:39;14442:11;;;;14462:210;14478:6;14473:3;14470:15;14462:210;;;14551:3;14545:10;14568:31;14593:5;14568:31;:::i;:::-;14612:18;;14495:12;;;;14650;;;;14462:210;;;14727:18;;;14721:25;14691:5;;-1:-1:-1;14721:25:99;;-1:-1:-1;;;14758:16:99;;;14755:36;;;14787:1;14784;14777:12;14755:36;;14810:72;14874:7;14863:8;14852:9;14848:24;14810:72;:::i;:::-;14800:82;;;14901:48;14945:2;14934:9;14930:18;14901:48;:::i;:::-;14891:58;;13656:1299;;;;;:::o;14960:127::-;15021:10;15016:3;15012:20;15009:1;15002:31;15052:4;15049:1;15042:15;15076:4;15073:1;15066:15;15092:778;-1:-1:-1;;;;;15397:15:99;;;15379:34;;15329:2;15432;15450:18;;;15443:30;;;15522:13;;15314:18;;;15544:22;;;15281:4;;15623:15;;;;15351:19;;15432:2;15597;15582:18;;;15281:4;15666:178;15680:6;15677:1;15674:13;15666:178;;;15745:13;;15741:22;;15729:35;;15819:15;;;;15784:12;;;;15702:1;15695:9;15666:178;;;-1:-1:-1;15861:3:99;;15092:778;-1:-1:-1;;;;;;;;15092:778:99:o;15875:881::-;15970:6;16001:2;16044;16032:9;16023:7;16019:23;16015:32;16012:52;;;16060:1;16057;16050:12;16012:52;16093:9;16087:16;-1:-1:-1;;;;;16118:6:99;16115:30;16112:50;;;16158:1;16155;16148:12;16112:50;16181:22;;16234:4;16226:13;;16222:27;-1:-1:-1;16212:55:99;;16263:1;16260;16253:12;16212:55;16292:2;16286:9;16315:60;16331:43;16371:2;16331:43;:::i;16315:60::-;16409:15;;;16491:1;16487:10;;;;16479:19;;16475:28;;;16440:12;;;;16515:19;;;16512:39;;;16547:1;16544;16537:12;16512:39;16571:11;;;;16591:135;16607:6;16602:3;16599:15;16591:135;;;16673:10;;16661:23;;16624:12;;;;16704;;;;16591:135;;;16745:5;15875:881;-1:-1:-1;;;;;;;15875:881:99:o;16761:127::-;16822:10;16817:3;16813:20;16810:1;16803:31;16853:4;16850:1;16843:15;16877:4;16874:1;16867:15;16893:168;16966:9;;;16997;;17014:15;;;17008:22;;16994:37;16984:71;;17035:18;;:::i;17066:125::-;17131:9;;;17152:10;;;17149:36;;;17165:18;;:::i;17196:217::-;17236:1;17262;17252:132;;17306:10;17301:3;17297:20;17294:1;17287:31;17341:4;17338:1;17331:15;17369:4;17366:1;17359:15;17252:132;-1:-1:-1;17398:9:99;;17196:217::o;18439:216::-;18503:9;;;18531:11;;;18478:3;18561:9;;18589:10;;18585:19;;18614:10;;18606:19;;18582:44;18579:70;;;18629:18;;:::i;:::-;18579:70;;18439:216;;;;:::o;18660:135::-;18699:3;18720:17;;;18717:43;;18740:18;;:::i;:::-;-1:-1:-1;18787:1:99;18776:13;;18660:135::o;18800:270::-;18841:3;18879:5;18873:12;18906:6;18901:3;18894:19;18922:76;18991:6;18984:4;18979:3;18975:14;18968:4;18961:5;18957:16;18922:76;:::i;:::-;19052:2;19031:15;-1:-1:-1;;19027:29:99;19018:39;;;;19059:4;19014:50;;18800:270;-1:-1:-1;;18800:270:99:o;19075:626::-;19351:1;19347;19342:3;19338:11;19334:19;19326:6;19322:32;19311:9;19304:51;19391:2;19386;19375:9;19371:18;19364:30;19285:4;19429:6;19423:13;19472:4;19467:2;19456:9;19452:18;19445:32;19500:51;19546:3;19535:9;19531:19;19517:12;19500:51;:::i;:::-;19486:65;;19607:2;19599:6;19595:15;19589:22;19582:4;19571:9;19567:20;19560:52;19667:2;19659:6;19655:15;19649:22;19643:3;19632:9;19628:19;19621:51;19689:6;19681:14;;;19075:626;;;;;:::o;20067:128::-;20134:9;;;20155:11;;;20152:37;;;20169:18;;:::i;20814:136::-;20853:3;20881:5;20871:39;;20890:18;;:::i;:::-;-1:-1:-1;;;20926:18:99;;20814:136::o;20955:407::-;21157:2;21139:21;;;21196:2;21176:18;;;21169:30;21235:34;21230:2;21215:18;;21208:62;-1:-1:-1;;;21301:2:99;21286:18;;21279:41;21352:3;21337:19;;20955:407::o;21367:457::-;21624:2;21613:9;21606:21;21587:4;21650:52;21698:2;21687:9;21683:18;21675:6;21650:52;:::i;:::-;21750:9;21742:6;21738:22;21733:2;21722:9;21718:18;21711:50;21778:40;21811:6;21803;21778:40;:::i;:::-;21770:48;21367:457;-1:-1:-1;;;;;21367:457:99:o;21829:200::-;21895:9;;;21868:4;21923:9;;21951:10;;21963:12;;;21947:29;21986:12;;;21978:21;;21944:56;21941:82;;;22003:18;;:::i;:::-;21941:82;21829:200;;;;:::o;22034:127::-;22095:10;22090:3;22086:20;22083:1;22076:31;22126:4;22123:1;22116:15;22150:4;22147:1;22140:15;22166:288;22341:6;22330:9;22323:25;22384:2;22379;22368:9;22364:18;22357:30;22304:4;22404:44;22444:2;22433:9;22429:18;22421:6;22404:44;:::i;22459:287::-;22588:3;22626:6;22620:13;22642:66;22701:6;22696:3;22689:4;22681:6;22677:17;22642:66;:::i;:::-;22724:16;;;;;22459:287;-1:-1:-1;;22459:287:99:o;22751:290::-;22820:6;22873:2;22861:9;22852:7;22848:23;22844:32;22841:52;;;22889:1;22886;22879:12;22841:52;22915:16;;-1:-1:-1;;;;;;22960:32:99;;22950:43;;22940:71;;23007:1;23004;22997:12","linkReferences":{},"immutableReferences":{"18051":[{"start":1594,"length":32}]}},"methodIdentifiers":{"deregisterOperator()":"857dc190","getLastCheckpointOperatorWeight(address)":"3b242e4a","getLastCheckpointThresholdWeight()":"b933fa74","getLastCheckpointThresholdWeightAtBlock(uint32)":"1e4cd85e","getLastCheckpointTotalWeight()":"314f3a49","getLastCheckpointTotalWeightAtBlock(uint32)":"0dba3394","getOperatorWeight(address)":"98ec1ac9","getOperatorWeightAtBlock(address,uint32)":"955f2d90","initialize(address,uint256,((address,uint96)[]))":"ab118995","isValidSignature(bytes32,bytes)":"1626ba7e","minimumWeight()":"40bf2fb7","operatorRegistered(address)":"ec7fbb31","owner()":"8da5cb5b","quorum()":"1703a018","registerOperatorWithSignature(address,(bytes,bytes32,uint256))":"0a601a12","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b","updateMinimumWeight(uint256,address[])":"696255be","updateOperators(address[])":"00cf2ab5","updateOperatorsForQuorum(address[][],bytes)":"5140a548","updateQuorumConfig(((address,uint96)[]),address[])":"dec5d1f6","updateStakeThreshold(uint256)":"5ef53329"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IDelegationManager\",\"name\":\"_delegationManager\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InsufficientSignedStake\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientWeight\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidQuorum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignedWeight\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidThreshold\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MustUpdateAllOperators\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorNotRegistered\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_old\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_new\",\"type\":\"uint256\"}],\"name\":\"MinimumWeightUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_avs\",\"type\":\"address\"}],\"name\":\"OperatorDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_avs\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldWeight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newWeight\",\"type\":\"uint256\"}],\"name\":\"OperatorWeightUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"multiplier\",\"type\":\"uint96\"}],\"internalType\":\"struct StrategyParams[]\",\"name\":\"strategies\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"struct Quorum\",\"name\":\"_old\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"multiplier\",\"type\":\"uint96\"}],\"internalType\":\"struct StrategyParams[]\",\"name\":\"strategies\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"struct Quorum\",\"name\":\"_new\",\"type\":\"tuple\"}],\"name\":\"QuorumUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_thresholdWeight\",\"type\":\"uint256\"}],\"name\":\"ThresholdWeightUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldTotalWeight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTotalWeight\",\"type\":\"uint256\"}],\"name\":\"TotalWeightUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldMinimumWeight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newMinimumWeight\",\"type\":\"uint256\"}],\"name\":\"UpdateMinimumWeight\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"deregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"getLastCheckpointOperatorWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastCheckpointThresholdWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_blockNumber\",\"type\":\"uint32\"}],\"name\":\"getLastCheckpointThresholdWeightAtBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastCheckpointTotalWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_blockNumber\",\"type\":\"uint32\"}],\"name\":\"getLastCheckpointTotalWeightAtBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"getOperatorWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_blockNumber\",\"type\":\"uint32\"}],\"name\":\"getOperatorWeightAtBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_serviceManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_thresholdWeight\",\"type\":\"uint256\"},{\"components\":[{\"components\":[{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"multiplier\",\"type\":\"uint96\"}],\"internalType\":\"struct StrategyParams[]\",\"name\":\"strategies\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Quorum\",\"name\":\"_quorum\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_dataHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signatureData\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minimumWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"operatorRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"quorum\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"multiplier\",\"type\":\"uint96\"}],\"internalType\":\"struct StrategyParams[]\",\"name\":\"strategies\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Quorum\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithSaltAndExpiry\",\"name\":\"_operatorSignature\",\"type\":\"tuple\"}],\"name\":\"registerOperatorWithSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newMinimumWeight\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_operators\",\"type\":\"address[]\"}],\"name\":\"updateMinimumWeight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_operators\",\"type\":\"address[]\"}],\"name\":\"updateOperators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[][]\",\"name\":\"operatorsPerQuorum\",\"type\":\"address[][]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"updateOperatorsForQuorum\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"multiplier\",\"type\":\"uint96\"}],\"internalType\":\"struct StrategyParams[]\",\"name\":\"strategies\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Quorum\",\"name\":\"_quorum\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"_operators\",\"type\":\"address[]\"}],\"name\":\"updateQuorumConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_thresholdWeight\",\"type\":\"uint256\"}],\"name\":\"updateStakeThreshold\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"THIS CONTRACT IS NOT AUDITED\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MinimumWeightUpdated(uint256,uint256)\":{\"params\":{\"_new\":\"The new minimumWeight\",\"_old\":\"The previous minimum weight\"}},\"OperatorDeregistered(address,address)\":{\"params\":{\"_avs\":\"The address of the associated AVS\",\"_operator\":\"The address of the deregistered operator\"}},\"OperatorRegistered(address,address)\":{\"params\":{\"_avs\":\"The address of the associated AVS\",\"_operator\":\"The address of the registered operator\"}},\"OperatorWeightUpdated(address,uint256,uint256)\":{\"params\":{\"_operator\":\"The address of the operator updated\",\"newWeight\":\"The operator's weight after the update\",\"oldWeight\":\"The operator's weight before the update\"}},\"QuorumUpdated(((address,uint96)[]),((address,uint96)[]))\":{\"params\":{\"_new\":\"The new quorum configuration\",\"_old\":\"The previous quorum configuration\"}},\"TotalWeightUpdated(uint256,uint256)\":{\"params\":{\"newTotalWeight\":\"The total weight after the update\",\"oldTotalWeight\":\"The total weight before the update\"}},\"UpdateMinimumWeight(uint256,uint256)\":{\"params\":{\"newMinimumWeight\":\"The updated weight\",\"oldMinimumWeight\":\"The previous weight\"}}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Constructor to create ECDSAStakeRegistry.\",\"params\":{\"_delegationManager\":\"Address of the DelegationManager contract that this registry interacts with.\"}},\"getLastCheckpointOperatorWeight(address)\":{\"params\":{\"_operator\":\"The address of the operator.\"},\"returns\":{\"_0\":\"uint256 - The latest weight of the operator.\"}},\"getLastCheckpointThresholdWeight()\":{\"returns\":{\"_0\":\"uint256 - The latest threshold weight.\"}},\"getLastCheckpointThresholdWeightAtBlock(uint32)\":{\"params\":{\"_blockNumber\":\"The block number to get the threshold weight for the quorum\"},\"returns\":{\"_0\":\"uint256 - The threshold weight the given block.\"}},\"getLastCheckpointTotalWeight()\":{\"returns\":{\"_0\":\"uint256 - The latest total weight.\"}},\"getLastCheckpointTotalWeightAtBlock(uint32)\":{\"params\":{\"_blockNumber\":\"The block number to get the total weight for the quorum\"},\"returns\":{\"_0\":\"uint256 - The total weight at the given block.\"}},\"getOperatorWeight(address)\":{\"params\":{\"_operator\":\"The address of the operator.\"},\"returns\":{\"_0\":\"uint256 - The current weight of the operator; returns 0 if below the threshold.\"}},\"getOperatorWeightAtBlock(address,uint32)\":{\"params\":{\"_blockNumber\":\"The block number to get the operator weight for the quorum\",\"_operator\":\"The address of the operator.\"},\"returns\":{\"_0\":\"uint256 - The weight of the operator at the given block.\"}},\"initialize(address,uint256,((address,uint96)[]))\":{\"params\":{\"_quorum\":\"The quorum struct containing the details of the quorum thresholds.\",\"_serviceManager\":\"The address of the service manager.\",\"_thresholdWeight\":\"The threshold weight in basis points.\"}},\"isValidSignature(bytes32,bytes)\":{\"params\":{\"_dataHash\":\"The hash of the data that was signed.\",\"_signatureData\":\"Encoded signature data consisting of an array of signers, an array of signatures, and a reference block number.\"},\"returns\":{\"_0\":\"The function selector that indicates the signature is valid according to ERC1271 standard.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"quorum()\":{\"returns\":{\"_0\":\"Quorum - The current quorum of strategies and weights\"}},\"registerOperatorWithSignature(address,(bytes,bytes32,uint256))\":{\"params\":{\"_operatorSignature\":\"Contains the operator's signature, salt, and expiry\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"updateMinimumWeight(uint256,address[])\":{\"details\":\"Access controlled to the contract owner\",\"params\":{\"_newMinimumWeight\":\"The new weight an operator must have to join the operator set\"}},\"updateOperators(address[])\":{\"details\":\"Queries stakes from the Eigenlayer core DelegationManager contract\",\"params\":{\"_operators\":\"A list of operator addresses to update\"}},\"updateOperatorsForQuorum(address[][],bytes)\":{\"details\":\"This interface maintains compatibility with avs-sync which handles multiquorums while this registry has a single quorum\",\"params\":{\"operatorsPerQuorum\":\"An array of operator address arrays, one for each quorum.\"}},\"updateQuorumConfig(((address,uint96)[]),address[])\":{\"details\":\"Only callable by the contract owner. It first updates the quorum configuration and then updates the list of operators.\",\"params\":{\"_operators\":\"The list of operator addresses to update stakes for\",\"_quorum\":\"The new quorum configuration, including strategies and their new weights\"}},\"updateStakeThreshold(uint256)\":{\"details\":\"This function can only be invoked by the owner of the contract. It delegates the update to an internal function `_updateStakeThreshold`.\",\"params\":{\"_thresholdWeight\":\"The updated threshold weight required to validate a message. This is the cumulative weight that must be met or exceeded by the sum of the stakes of the signatories for a message to be deemed valid.\"}}},\"title\":\"ECDSA Stake Registry\",\"version\":1},\"userdoc\":{\"errors\":{\"InsufficientSignedStake()\":[{\"notice\":\"Indicates the total signed stake fails to meet the required threshold.\"}],\"InsufficientWeight()\":[{\"notice\":\"Indicates an individual signer's weight fails to meet the required threshold.\"}],\"InvalidLength()\":[{\"notice\":\"Indicates encountering an invalid length for the signers or signatures array.\"}],\"InvalidQuorum()\":[{\"notice\":\"Indicates the quorum is invalid\"}],\"InvalidSignature()\":[{\"notice\":\"Indicates encountering an invalid signature.\"}],\"InvalidSignedWeight()\":[{\"notice\":\"Indicates operator weights were out of sync and the signed weight exceed the total\"}],\"InvalidThreshold()\":[{\"notice\":\"Thrown when the threshold update is greater than BPS\"}],\"LengthMismatch()\":[{\"notice\":\"Indicates when the lengths of the signers array and signatures array do not match.\"}],\"MustUpdateAllOperators()\":[{\"notice\":\"Thrown when missing operators in an update \"}],\"NotSorted()\":[{\"notice\":\"Indicates the system finds a list of items unsorted\"}],\"OperatorAlreadyRegistered()\":[{\"notice\":\"Thrown when registering an already registered operator\"}],\"OperatorNotRegistered()\":[{\"notice\":\"Thrown when de-registering or updating the stake for an unregisted operator\"}]},\"events\":{\"MinimumWeightUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the weight to join the operator set updates\"},\"OperatorDeregistered(address,address)\":{\"notice\":\"Emitted when the system deregisters an operator\"},\"OperatorRegistered(address,address)\":{\"notice\":\"Emitted when the system registers an operator\"},\"OperatorWeightUpdated(address,uint256,uint256)\":{\"notice\":\"Emitted when the system updates an operator's weight\"},\"QuorumUpdated(((address,uint96)[]),((address,uint96)[]))\":{\"notice\":\"Emitted when the system updates the quorum\"},\"ThresholdWeightUpdated(uint256)\":{\"notice\":\"Emits when setting a new threshold weight.\"},\"TotalWeightUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the system updates the total weight\"},\"UpdateMinimumWeight(uint256,uint256)\":{\"notice\":\"Emitted when the weight required to be an operator changes\"}},\"kind\":\"user\",\"methods\":{\"deregisterOperator()\":{\"notice\":\"Deregisters an existing operator\"},\"getLastCheckpointOperatorWeight(address)\":{\"notice\":\"Retrieves the last recorded weight for a given operator.\"},\"getLastCheckpointThresholdWeight()\":{\"notice\":\"Retrieves the last recorded threshold weight\"},\"getLastCheckpointThresholdWeightAtBlock(uint32)\":{\"notice\":\"Retrieves the threshold weight at a specific block number.\"},\"getLastCheckpointTotalWeight()\":{\"notice\":\"Retrieves the last recorded total weight across all operators.\"},\"getLastCheckpointTotalWeightAtBlock(uint32)\":{\"notice\":\"Retrieves the total weight at a specific block number.\"},\"getOperatorWeight(address)\":{\"notice\":\"Calculates the current weight of an operator based on their delegated stake in the strategies considered in the quorum\"},\"getOperatorWeightAtBlock(address,uint32)\":{\"notice\":\"Retrieves the operator's weight at a specific block number.\"},\"initialize(address,uint256,((address,uint96)[]))\":{\"notice\":\"Initializes the contract with the given parameters.\"},\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Verifies if the provided signature data is valid for the given data hash.\"},\"minimumWeight()\":{\"notice\":\"Returns the weight an operator must have to contribute to validating an AVS\"},\"quorum()\":{\"notice\":\"Retrieves the current stake quorum details.\"},\"registerOperatorWithSignature(address,(bytes,bytes32,uint256))\":{\"notice\":\"Registers a new operator using a provided signature\"},\"updateMinimumWeight(uint256,address[])\":{\"notice\":\"Updates the weight an operator must have to join the operator set\"},\"updateOperators(address[])\":{\"notice\":\"Updates the StakeRegistry's view of one or more operators' stakes adding a new entry in their history of stake checkpoints,\"},\"updateOperatorsForQuorum(address[][],bytes)\":{\"notice\":\"Updates the set of operators for the first quorum.\"},\"updateQuorumConfig(((address,uint96)[]),address[])\":{\"notice\":\"Updates the quorum configuration and the set of operators\"},\"updateStakeThreshold(uint256)\":{\"notice\":\"Sets a new cumulative threshold weight for message validation by operator set signatures.\"}},\"notice\":\"Manages operator registration and quorum updates for an AVS using ECDSA signatures.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/eigenlayer-middleware/src/unaudited/ECDSAStakeRegistry.sol\":\"ECDSAStakeRegistry\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":@eigenlayer-scripts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/\",\":@eigenlayer/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/\",\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":ds-test/=lib/eigenlayer-middleware/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/contracts/\"]},\"sources\":{\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1271Upgradeable.sol\":{\"keccak256\":\"0x4473c09c087ee1a48c5547b23799c0474b2e08cde6fec5921c628171c4ebcdc0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6d92614db0b346b756af8ba9bd0098db81b031026361635fb4f55a420254637d\",\"dweb:/ipfs/QmVviVD57zX54ny1zvVsksfYF9RantBwVyJBTdHqPywFuP\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/utils/CheckpointsUpgradeable.sol\":{\"keccak256\":\"0x7fb4716864bc9693785f07ce15f325a44413ad5d2d5685852a9e6112927abd60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2abe805bc615c15daea179f3ff3e3b890f9c0d5ec18d0bb8fad03ab128157ee3\",\"dweb:/ipfs/Qma4UizH7DhTeDfGfkhFFKLnU6p8U9cmodTbgTdRzeFoXX\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://841619682637df5579b4c396d281d6c55b26f1b1acce1d0ab67bead5e39cf60c\",\"dweb:/ipfs/QmNRtuKp43ZHJwswdyT3GivY4fDMvz3cxBe1FfDthG1JGj\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/ECDSAUpgradeable.sol\":{\"keccak256\":\"0xe8c62ca00ed2d0a4d9b7e3c4bf7d62c821618b2cdb3c844da91a1193986851bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a459d8907c5fe73d70b4c522e48127b13b9aaa29a223670e928a2a5e5e4c8f8\",\"dweb:/ipfs/QmcwBnMVrajEBgj2i1saNXnQ6ytHQdnpQF978E86EuhvtX\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/SignatureCheckerUpgradeable.sol\":{\"keccak256\":\"0xb19a57535ad6c6d773f61c1e8f8cc190fa35e12bfadf3743092537c7695fd96a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79811c8c7aabd4fae5ff3021ae67688fc6f6a820f784676bf4b8e41c0c71577d\",\"dweb:/ipfs/QmSo7DdJSzx4U5xvLPnCLNn2SFBPin8dHxYnJrrwxEYQje\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0x3b39e1a87bb94b9145d91007bbd2c964438e99a659b4accc6ec6df6a1c62589a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c983bca009e0c413b39f851ca4728c20c42bcf5359252131d48f612ee5757a70\",\"dweb:/ipfs/QmP1c7MV6FdzTBYTFdosLNijvGa1dKeaGXy5Ax5UV381GZ\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/SafeCastUpgradeable.sol\":{\"keccak256\":\"0xd7ebe0f80affaa622b9efd95cc8db3e03e70d699176f7457b4a95e34a11f9834\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f8cf00c5981b953e57af6f8d6dad38ff0c90c61f1f1b03042039a41797aa198b\",\"dweb:/ipfs/QmdngJRARxdVwxqG7vHDRf2QSBxK6294Ab16G6hsMoXqew\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0xe1626408822f552043f945d9aea18c5cbf878ef160da55e6f98706ed3a2acc07\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://426f6dddc040f2040f48dd4236c4201a3c978b4417ec3b4bd1004f8a48b29aaa\",\"dweb:/ipfs/QmWgY46nZiw1KQYNYMrJDTz7S9Y4KhyUoM9zVD92Mkf51S\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc\",\"dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8\",\"dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324\",\"dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPaymentCoordinator.sol\":{\"keccak256\":\"0x399d4d6a99f8d9ca0a1f422e11d5c2c1784bd1c4118859c17cdb1fabfc0367e5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://abfa22018a78703c39c082b929ebf7b73484f8ef86c2e0264c212004f5fac8a0\",\"dweb:/ipfs/QmVqAexXLD7zbAmbrRHkmQaVjgSahnoY2XpzNvKrLLsyet\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232\",\"dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xccd308b0996295c92058b70c3b83563c009c074cb6815329c5f35e1b1a0571f4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cd1050445ff7aeb588b3b037aab53e2d92c3abd4620e94dfc95aca870e71b821\",\"dweb:/ipfs/QmUC96Ctwn3KQr6VSqHPpAVJ5qEUSVnugaxiZ8gfXygW92\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7\",\"dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f\",\"dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x9095fc29b96d102b10c02d44b3a6fbfa25593ef6ae4a810363ab885b9e6b0f71\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0945132d482d56278edddb1d32209903c4d3839c87ba4317aadd97dc23610d0f\",\"dweb:/ipfs/QmVuM2aLRHxitx4rPx3GTYTBCVNcjYn6sHBRr1biUjLBP5\"]},\"lib/eigenlayer-middleware/src/interfaces/IECDSAStakeRegistryEventsAndErrors.sol\":{\"keccak256\":\"0x1efbf9f8c85ac67710ed47b1952cebea79226b93846f02a7e939b4d6f45ec883\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be810995472d5c3694dd83d3ce81f75d2719b1efd3df2c893a82c788ff6998cd\",\"dweb:/ipfs/QmXkKu9v5sDsRQWv7uR6o3XAH8PR76CgAfstPdFb6BVrKK\"]},\"lib/eigenlayer-middleware/src/interfaces/IServiceManager.sol\":{\"keccak256\":\"0xde4d88891f393ef6f3fefabd71a5b3d1305c7373f9e33a13ad30683c1d8c63a5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://fbab45eee5148f1764396a76a427cbec1dff1854ee4a2ecf7e47acf129f4797d\",\"dweb:/ipfs/Qmc2yBePJYJMwmXPryAodK2MmBjJx2xYa3Na4pWNUwc3rJ\"]},\"lib/eigenlayer-middleware/src/interfaces/IServiceManagerUI.sol\":{\"keccak256\":\"0x365761699b4a5b7360ee6c75f12606eefc4b0394754c8b8e1e1eefec0cba7ffb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ac14ada180b66cbbc5f9de0d6b4bb87b5946d2a9569ae88f2f62aaca47e879a8\",\"dweb:/ipfs/QmcN9xKYF24naNWc6cYah9suz5gJSYE9nPj9eZFWnP35VX\"]},\"lib/eigenlayer-middleware/src/unaudited/ECDSAStakeRegistry.sol\":{\"keccak256\":\"0xdc37c3c238575fa7620db775565eb573a56293c169a3e146ec66d531cb8e39ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0b962f999f89093b41f1e0fc4b8e2a0c7c2c69e8a5c370dc521b55d9b64e93f6\",\"dweb:/ipfs/QmNyB4SgzyKkqGK1tnMscm2X12XZcUmyr99KntJbNRtyLR\"]},\"lib/eigenlayer-middleware/src/unaudited/ECDSAStakeRegistryStorage.sol\":{\"keccak256\":\"0x1381e86d83925969b464f00cc70cbcd52b72a4abb1a54b27b2a48ebe989ecbf5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce671e90dbf8a4279de587f02566f3430c757b610961c81e2f1c806d6bc8d1cf\",\"dweb:/ipfs/QmaDzRgKRg6xeLy7goFF5PkkhwiMuVRSsRmkFCpWc9dq6A\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IDelegationManager","name":"_delegationManager","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"InsufficientSignedStake"},{"inputs":[],"type":"error","name":"InsufficientWeight"},{"inputs":[],"type":"error","name":"InvalidLength"},{"inputs":[],"type":"error","name":"InvalidQuorum"},{"inputs":[],"type":"error","name":"InvalidSignature"},{"inputs":[],"type":"error","name":"InvalidSignedWeight"},{"inputs":[],"type":"error","name":"InvalidThreshold"},{"inputs":[],"type":"error","name":"LengthMismatch"},{"inputs":[],"type":"error","name":"MustUpdateAllOperators"},{"inputs":[],"type":"error","name":"NotSorted"},{"inputs":[],"type":"error","name":"OperatorAlreadyRegistered"},{"inputs":[],"type":"error","name":"OperatorNotRegistered"},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"uint256","name":"_old","type":"uint256","indexed":false},{"internalType":"uint256","name":"_new","type":"uint256","indexed":false}],"type":"event","name":"MinimumWeightUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"_operator","type":"address","indexed":true},{"internalType":"address","name":"_avs","type":"address","indexed":true}],"type":"event","name":"OperatorDeregistered","anonymous":false},{"inputs":[{"internalType":"address","name":"_operator","type":"address","indexed":true},{"internalType":"address","name":"_avs","type":"address","indexed":true}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"_operator","type":"address","indexed":true},{"internalType":"uint256","name":"oldWeight","type":"uint256","indexed":false},{"internalType":"uint256","name":"newWeight","type":"uint256","indexed":false}],"type":"event","name":"OperatorWeightUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"struct Quorum","name":"_old","type":"tuple","components":[{"internalType":"struct StrategyParams[]","name":"strategies","type":"tuple[]","components":[{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint96","name":"multiplier","type":"uint96"}]}],"indexed":false},{"internalType":"struct Quorum","name":"_new","type":"tuple","components":[{"internalType":"struct StrategyParams[]","name":"strategies","type":"tuple[]","components":[{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint96","name":"multiplier","type":"uint96"}]}],"indexed":false}],"type":"event","name":"QuorumUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"_thresholdWeight","type":"uint256","indexed":false}],"type":"event","name":"ThresholdWeightUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"oldTotalWeight","type":"uint256","indexed":false},{"internalType":"uint256","name":"newTotalWeight","type":"uint256","indexed":false}],"type":"event","name":"TotalWeightUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"oldMinimumWeight","type":"uint256","indexed":false},{"internalType":"uint256","name":"newMinimumWeight","type":"uint256","indexed":false}],"type":"event","name":"UpdateMinimumWeight","anonymous":false},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"deregisterOperator"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"view","type":"function","name":"getLastCheckpointOperatorWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLastCheckpointThresholdWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint32","name":"_blockNumber","type":"uint32"}],"stateMutability":"view","type":"function","name":"getLastCheckpointThresholdWeightAtBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLastCheckpointTotalWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint32","name":"_blockNumber","type":"uint32"}],"stateMutability":"view","type":"function","name":"getLastCheckpointTotalWeightAtBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"uint32","name":"_blockNumber","type":"uint32"}],"stateMutability":"view","type":"function","name":"getOperatorWeightAtBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_serviceManager","type":"address"},{"internalType":"uint256","name":"_thresholdWeight","type":"uint256"},{"internalType":"struct Quorum","name":"_quorum","type":"tuple","components":[{"internalType":"struct StrategyParams[]","name":"strategies","type":"tuple[]","components":[{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint96","name":"multiplier","type":"uint96"}]}]}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"bytes32","name":"_dataHash","type":"bytes32"},{"internalType":"bytes","name":"_signatureData","type":"bytes"}],"stateMutability":"view","type":"function","name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"minimumWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"view","type":"function","name":"operatorRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"quorum","outputs":[{"internalType":"struct Quorum","name":"","type":"tuple","components":[{"internalType":"struct StrategyParams[]","name":"strategies","type":"tuple[]","components":[{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint96","name":"multiplier","type":"uint96"}]}]}]},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","name":"_operatorSignature","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"registerOperatorWithSignature"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"uint256","name":"_newMinimumWeight","type":"uint256"},{"internalType":"address[]","name":"_operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"updateMinimumWeight"},{"inputs":[{"internalType":"address[]","name":"_operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"updateOperators"},{"inputs":[{"internalType":"address[][]","name":"operatorsPerQuorum","type":"address[][]"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorsForQuorum"},{"inputs":[{"internalType":"struct Quorum","name":"_quorum","type":"tuple","components":[{"internalType":"struct StrategyParams[]","name":"strategies","type":"tuple[]","components":[{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint96","name":"multiplier","type":"uint96"}]}]},{"internalType":"address[]","name":"_operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"updateQuorumConfig"},{"inputs":[{"internalType":"uint256","name":"_thresholdWeight","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"updateStakeThreshold"}],"devdoc":{"kind":"dev","methods":{"constructor":{"details":"Constructor to create ECDSAStakeRegistry.","params":{"_delegationManager":"Address of the DelegationManager contract that this registry interacts with."}},"getLastCheckpointOperatorWeight(address)":{"params":{"_operator":"The address of the operator."},"returns":{"_0":"uint256 - The latest weight of the operator."}},"getLastCheckpointThresholdWeight()":{"returns":{"_0":"uint256 - The latest threshold weight."}},"getLastCheckpointThresholdWeightAtBlock(uint32)":{"params":{"_blockNumber":"The block number to get the threshold weight for the quorum"},"returns":{"_0":"uint256 - The threshold weight the given block."}},"getLastCheckpointTotalWeight()":{"returns":{"_0":"uint256 - The latest total weight."}},"getLastCheckpointTotalWeightAtBlock(uint32)":{"params":{"_blockNumber":"The block number to get the total weight for the quorum"},"returns":{"_0":"uint256 - The total weight at the given block."}},"getOperatorWeight(address)":{"params":{"_operator":"The address of the operator."},"returns":{"_0":"uint256 - The current weight of the operator; returns 0 if below the threshold."}},"getOperatorWeightAtBlock(address,uint32)":{"params":{"_blockNumber":"The block number to get the operator weight for the quorum","_operator":"The address of the operator."},"returns":{"_0":"uint256 - The weight of the operator at the given block."}},"initialize(address,uint256,((address,uint96)[]))":{"params":{"_quorum":"The quorum struct containing the details of the quorum thresholds.","_serviceManager":"The address of the service manager.","_thresholdWeight":"The threshold weight in basis points."}},"isValidSignature(bytes32,bytes)":{"params":{"_dataHash":"The hash of the data that was signed.","_signatureData":"Encoded signature data consisting of an array of signers, an array of signatures, and a reference block number."},"returns":{"_0":"The function selector that indicates the signature is valid according to ERC1271 standard."}},"owner()":{"details":"Returns the address of the current owner."},"quorum()":{"returns":{"_0":"Quorum - The current quorum of strategies and weights"}},"registerOperatorWithSignature(address,(bytes,bytes32,uint256))":{"params":{"_operatorSignature":"Contains the operator's signature, salt, and expiry"}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"updateMinimumWeight(uint256,address[])":{"details":"Access controlled to the contract owner","params":{"_newMinimumWeight":"The new weight an operator must have to join the operator set"}},"updateOperators(address[])":{"details":"Queries stakes from the Eigenlayer core DelegationManager contract","params":{"_operators":"A list of operator addresses to update"}},"updateOperatorsForQuorum(address[][],bytes)":{"details":"This interface maintains compatibility with avs-sync which handles multiquorums while this registry has a single quorum","params":{"operatorsPerQuorum":"An array of operator address arrays, one for each quorum."}},"updateQuorumConfig(((address,uint96)[]),address[])":{"details":"Only callable by the contract owner. It first updates the quorum configuration and then updates the list of operators.","params":{"_operators":"The list of operator addresses to update stakes for","_quorum":"The new quorum configuration, including strategies and their new weights"}},"updateStakeThreshold(uint256)":{"details":"This function can only be invoked by the owner of the contract. It delegates the update to an internal function `_updateStakeThreshold`.","params":{"_thresholdWeight":"The updated threshold weight required to validate a message. This is the cumulative weight that must be met or exceeded by the sum of the stakes of the signatories for a message to be deemed valid."}}},"version":1},"userdoc":{"kind":"user","methods":{"deregisterOperator()":{"notice":"Deregisters an existing operator"},"getLastCheckpointOperatorWeight(address)":{"notice":"Retrieves the last recorded weight for a given operator."},"getLastCheckpointThresholdWeight()":{"notice":"Retrieves the last recorded threshold weight"},"getLastCheckpointThresholdWeightAtBlock(uint32)":{"notice":"Retrieves the threshold weight at a specific block number."},"getLastCheckpointTotalWeight()":{"notice":"Retrieves the last recorded total weight across all operators."},"getLastCheckpointTotalWeightAtBlock(uint32)":{"notice":"Retrieves the total weight at a specific block number."},"getOperatorWeight(address)":{"notice":"Calculates the current weight of an operator based on their delegated stake in the strategies considered in the quorum"},"getOperatorWeightAtBlock(address,uint32)":{"notice":"Retrieves the operator's weight at a specific block number."},"initialize(address,uint256,((address,uint96)[]))":{"notice":"Initializes the contract with the given parameters."},"isValidSignature(bytes32,bytes)":{"notice":"Verifies if the provided signature data is valid for the given data hash."},"minimumWeight()":{"notice":"Returns the weight an operator must have to contribute to validating an AVS"},"quorum()":{"notice":"Retrieves the current stake quorum details."},"registerOperatorWithSignature(address,(bytes,bytes32,uint256))":{"notice":"Registers a new operator using a provided signature"},"updateMinimumWeight(uint256,address[])":{"notice":"Updates the weight an operator must have to join the operator set"},"updateOperators(address[])":{"notice":"Updates the StakeRegistry's view of one or more operators' stakes adding a new entry in their history of stake checkpoints,"},"updateOperatorsForQuorum(address[][],bytes)":{"notice":"Updates the set of operators for the first quorum."},"updateQuorumConfig(((address,uint96)[]),address[])":{"notice":"Updates the quorum configuration and the set of operators"},"updateStakeThreshold(uint256)":{"notice":"Sets a new cumulative threshold weight for message validation by operator set signatures."}},"version":1}},"settings":{"remappings":["@eigenlayer-middleware/=lib/eigenlayer-middleware/","@eigenlayer-scripts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/","@eigenlayer/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/","@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/","ds-test/=lib/eigenlayer-middleware/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-middleware/src/unaudited/ECDSAStakeRegistry.sol":"ECDSAStakeRegistry"},"evmVersion":"paris","libraries":{}},"sources":{"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1271Upgradeable.sol":{"keccak256":"0x4473c09c087ee1a48c5547b23799c0474b2e08cde6fec5921c628171c4ebcdc0","urls":["bzz-raw://6d92614db0b346b756af8ba9bd0098db81b031026361635fb4f55a420254637d","dweb:/ipfs/QmVviVD57zX54ny1zvVsksfYF9RantBwVyJBTdHqPywFuP"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/utils/CheckpointsUpgradeable.sol":{"keccak256":"0x7fb4716864bc9693785f07ce15f325a44413ad5d2d5685852a9e6112927abd60","urls":["bzz-raw://2abe805bc615c15daea179f3ff3e3b890f9c0d5ec18d0bb8fad03ab128157ee3","dweb:/ipfs/Qma4UizH7DhTeDfGfkhFFKLnU6p8U9cmodTbgTdRzeFoXX"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol":{"keccak256":"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863","urls":["bzz-raw://841619682637df5579b4c396d281d6c55b26f1b1acce1d0ab67bead5e39cf60c","dweb:/ipfs/QmNRtuKp43ZHJwswdyT3GivY4fDMvz3cxBe1FfDthG1JGj"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/ECDSAUpgradeable.sol":{"keccak256":"0xe8c62ca00ed2d0a4d9b7e3c4bf7d62c821618b2cdb3c844da91a1193986851bf","urls":["bzz-raw://2a459d8907c5fe73d70b4c522e48127b13b9aaa29a223670e928a2a5e5e4c8f8","dweb:/ipfs/QmcwBnMVrajEBgj2i1saNXnQ6ytHQdnpQF978E86EuhvtX"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/SignatureCheckerUpgradeable.sol":{"keccak256":"0xb19a57535ad6c6d773f61c1e8f8cc190fa35e12bfadf3743092537c7695fd96a","urls":["bzz-raw://79811c8c7aabd4fae5ff3021ae67688fc6f6a820f784676bf4b8e41c0c71577d","dweb:/ipfs/QmSo7DdJSzx4U5xvLPnCLNn2SFBPin8dHxYnJrrwxEYQje"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol":{"keccak256":"0x3b39e1a87bb94b9145d91007bbd2c964438e99a659b4accc6ec6df6a1c62589a","urls":["bzz-raw://c983bca009e0c413b39f851ca4728c20c42bcf5359252131d48f612ee5757a70","dweb:/ipfs/QmP1c7MV6FdzTBYTFdosLNijvGa1dKeaGXy5Ax5UV381GZ"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/utils/math/SafeCastUpgradeable.sol":{"keccak256":"0xd7ebe0f80affaa622b9efd95cc8db3e03e70d699176f7457b4a95e34a11f9834","urls":["bzz-raw://f8cf00c5981b953e57af6f8d6dad38ff0c90c61f1f1b03042039a41797aa198b","dweb:/ipfs/QmdngJRARxdVwxqG7vHDRf2QSBxK6294Ab16G6hsMoXqew"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0xe1626408822f552043f945d9aea18c5cbf878ef160da55e6f98706ed3a2acc07","urls":["bzz-raw://426f6dddc040f2040f48dd4236c4201a3c978b4417ec3b4bd1004f8a48b29aaa","dweb:/ipfs/QmWgY46nZiw1KQYNYMrJDTz7S9Y4KhyUoM9zVD92Mkf51S"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba","urls":["bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc","dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c","urls":["bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8","dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f","urls":["bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324","dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPaymentCoordinator.sol":{"keccak256":"0x399d4d6a99f8d9ca0a1f422e11d5c2c1784bd1c4118859c17cdb1fabfc0367e5","urls":["bzz-raw://abfa22018a78703c39c082b929ebf7b73484f8ef86c2e0264c212004f5fac8a0","dweb:/ipfs/QmVqAexXLD7zbAmbrRHkmQaVjgSahnoY2XpzNvKrLLsyet"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79","urls":["bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232","dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xccd308b0996295c92058b70c3b83563c009c074cb6815329c5f35e1b1a0571f4","urls":["bzz-raw://cd1050445ff7aeb588b3b037aab53e2d92c3abd4620e94dfc95aca870e71b821","dweb:/ipfs/QmUC96Ctwn3KQr6VSqHPpAVJ5qEUSVnugaxiZ8gfXygW92"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377","urls":["bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7","dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d","urls":["bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f","dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x9095fc29b96d102b10c02d44b3a6fbfa25593ef6ae4a810363ab885b9e6b0f71","urls":["bzz-raw://0945132d482d56278edddb1d32209903c4d3839c87ba4317aadd97dc23610d0f","dweb:/ipfs/QmVuM2aLRHxitx4rPx3GTYTBCVNcjYn6sHBRr1biUjLBP5"],"license":"MIT"},"lib/eigenlayer-middleware/src/interfaces/IECDSAStakeRegistryEventsAndErrors.sol":{"keccak256":"0x1efbf9f8c85ac67710ed47b1952cebea79226b93846f02a7e939b4d6f45ec883","urls":["bzz-raw://be810995472d5c3694dd83d3ce81f75d2719b1efd3df2c893a82c788ff6998cd","dweb:/ipfs/QmXkKu9v5sDsRQWv7uR6o3XAH8PR76CgAfstPdFb6BVrKK"],"license":"MIT"},"lib/eigenlayer-middleware/src/interfaces/IServiceManager.sol":{"keccak256":"0xde4d88891f393ef6f3fefabd71a5b3d1305c7373f9e33a13ad30683c1d8c63a5","urls":["bzz-raw://fbab45eee5148f1764396a76a427cbec1dff1854ee4a2ecf7e47acf129f4797d","dweb:/ipfs/Qmc2yBePJYJMwmXPryAodK2MmBjJx2xYa3Na4pWNUwc3rJ"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/interfaces/IServiceManagerUI.sol":{"keccak256":"0x365761699b4a5b7360ee6c75f12606eefc4b0394754c8b8e1e1eefec0cba7ffb","urls":["bzz-raw://ac14ada180b66cbbc5f9de0d6b4bb87b5946d2a9569ae88f2f62aaca47e879a8","dweb:/ipfs/QmcN9xKYF24naNWc6cYah9suz5gJSYE9nPj9eZFWnP35VX"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/unaudited/ECDSAStakeRegistry.sol":{"keccak256":"0xdc37c3c238575fa7620db775565eb573a56293c169a3e146ec66d531cb8e39ee","urls":["bzz-raw://0b962f999f89093b41f1e0fc4b8e2a0c7c2c69e8a5c370dc521b55d9b64e93f6","dweb:/ipfs/QmNyB4SgzyKkqGK1tnMscm2X12XZcUmyr99KntJbNRtyLR"],"license":"MIT"},"lib/eigenlayer-middleware/src/unaudited/ECDSAStakeRegistryStorage.sol":{"keccak256":"0x1381e86d83925969b464f00cc70cbcd52b72a4abb1a54b27b2a48ebe989ecbf5","urls":["bzz-raw://ce671e90dbf8a4279de587f02566f3430c757b610961c81e2f1c806d6bc8d1cf","dweb:/ipfs/QmaDzRgKRg6xeLy7goFF5PkkhwiMuVRSsRmkFCpWc9dq6A"],"license":"MIT"}},"version":1},"id":67} \ No newline at end of file diff --git a/crates/utils/json/EigenPod.json b/crates/utils/json/EigenPod.json deleted file mode 100644 index 007e9346..00000000 --- a/crates/utils/json/EigenPod.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_ethPOS","type":"address","internalType":"contract IETHPOSDeposit"},{"name":"_delayedWithdrawalRouter","type":"address","internalType":"contract IDelayedWithdrawalRouter"},{"name":"_eigenPodManager","type":"address","internalType":"contract IEigenPodManager"},{"name":"_MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR","type":"uint64","internalType":"uint64"},{"name":"_GENESIS_TIME","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"GENESIS_TIME","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"activateRestaking","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delayedWithdrawalRouter","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IDelayedWithdrawalRouter"}],"stateMutability":"view"},{"type":"function","name":"eigenPodManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IEigenPodManager"}],"stateMutability":"view"},{"type":"function","name":"ethPOS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IETHPOSDeposit"}],"stateMutability":"view"},{"type":"function","name":"hasRestaked","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_podOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mostRecentWithdrawalTimestamp","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"nonBeaconChainETHBalanceWei","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"podOwner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"provenWithdrawal","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"recoverTokens","inputs":[{"name":"tokenList","type":"address[]","internalType":"contract IERC20[]"},{"name":"amountsToWithdraw","type":"uint256[]","internalType":"uint256[]"},{"name":"recipient","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stake","inputs":[{"name":"pubkey","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"depositDataRoot","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"sumOfPartialWithdrawalsClaimedGwei","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"validatorPubkeyHashToInfo","inputs":[{"name":"validatorPubkeyHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IEigenPod.ValidatorInfo","components":[{"name":"validatorIndex","type":"uint64","internalType":"uint64"},{"name":"restakedBalanceGwei","type":"uint64","internalType":"uint64"},{"name":"mostRecentBalanceUpdateTimestamp","type":"uint64","internalType":"uint64"},{"name":"status","type":"uint8","internalType":"enum IEigenPod.VALIDATOR_STATUS"}]}],"stateMutability":"view"},{"type":"function","name":"validatorPubkeyToInfo","inputs":[{"name":"validatorPubkey","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IEigenPod.ValidatorInfo","components":[{"name":"validatorIndex","type":"uint64","internalType":"uint64"},{"name":"restakedBalanceGwei","type":"uint64","internalType":"uint64"},{"name":"mostRecentBalanceUpdateTimestamp","type":"uint64","internalType":"uint64"},{"name":"status","type":"uint8","internalType":"enum IEigenPod.VALIDATOR_STATUS"}]}],"stateMutability":"view"},{"type":"function","name":"validatorStatus","inputs":[{"name":"validatorPubkey","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint8","internalType":"enum IEigenPod.VALIDATOR_STATUS"}],"stateMutability":"view"},{"type":"function","name":"validatorStatus","inputs":[{"name":"pubkeyHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint8","internalType":"enum IEigenPod.VALIDATOR_STATUS"}],"stateMutability":"view"},{"type":"function","name":"verifyAndProcessWithdrawals","inputs":[{"name":"oracleTimestamp","type":"uint64","internalType":"uint64"},{"name":"stateRootProof","type":"tuple","internalType":"struct BeaconChainProofs.StateRootProof","components":[{"name":"beaconStateRoot","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"bytes","internalType":"bytes"}]},{"name":"withdrawalProofs","type":"tuple[]","internalType":"struct BeaconChainProofs.WithdrawalProof[]","components":[{"name":"withdrawalProof","type":"bytes","internalType":"bytes"},{"name":"slotProof","type":"bytes","internalType":"bytes"},{"name":"executionPayloadProof","type":"bytes","internalType":"bytes"},{"name":"timestampProof","type":"bytes","internalType":"bytes"},{"name":"historicalSummaryBlockRootProof","type":"bytes","internalType":"bytes"},{"name":"blockRootIndex","type":"uint64","internalType":"uint64"},{"name":"historicalSummaryIndex","type":"uint64","internalType":"uint64"},{"name":"withdrawalIndex","type":"uint64","internalType":"uint64"},{"name":"blockRoot","type":"bytes32","internalType":"bytes32"},{"name":"slotRoot","type":"bytes32","internalType":"bytes32"},{"name":"timestampRoot","type":"bytes32","internalType":"bytes32"},{"name":"executionPayloadRoot","type":"bytes32","internalType":"bytes32"}]},{"name":"validatorFieldsProofs","type":"bytes[]","internalType":"bytes[]"},{"name":"validatorFields","type":"bytes32[][]","internalType":"bytes32[][]"},{"name":"withdrawalFields","type":"bytes32[][]","internalType":"bytes32[][]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"verifyBalanceUpdates","inputs":[{"name":"oracleTimestamp","type":"uint64","internalType":"uint64"},{"name":"validatorIndices","type":"uint40[]","internalType":"uint40[]"},{"name":"stateRootProof","type":"tuple","internalType":"struct BeaconChainProofs.StateRootProof","components":[{"name":"beaconStateRoot","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"bytes","internalType":"bytes"}]},{"name":"validatorFieldsProofs","type":"bytes[]","internalType":"bytes[]"},{"name":"validatorFields","type":"bytes32[][]","internalType":"bytes32[][]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"verifyWithdrawalCredentials","inputs":[{"name":"oracleTimestamp","type":"uint64","internalType":"uint64"},{"name":"stateRootProof","type":"tuple","internalType":"struct BeaconChainProofs.StateRootProof","components":[{"name":"beaconStateRoot","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"bytes","internalType":"bytes"}]},{"name":"validatorIndices","type":"uint40[]","internalType":"uint40[]"},{"name":"validatorFieldsProofs","type":"bytes[]","internalType":"bytes[]"},{"name":"validatorFields","type":"bytes32[][]","internalType":"bytes32[][]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawBeforeRestaking","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawNonBeaconChainETHBalanceWei","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"amountToWithdraw","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRestakedBeaconChainETH","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"amountWei","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawableRestakedExecutionLayerGwei","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"event","name":"EigenPodStaked","inputs":[{"name":"pubkey","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"FullWithdrawalRedeemed","inputs":[{"name":"validatorIndex","type":"uint40","indexed":false,"internalType":"uint40"},{"name":"withdrawalTimestamp","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"withdrawalAmountGwei","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"NonBeaconChainETHReceived","inputs":[{"name":"amountReceived","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"NonBeaconChainETHWithdrawn","inputs":[{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"amountWithdrawn","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PartialWithdrawalRedeemed","inputs":[{"name":"validatorIndex","type":"uint40","indexed":false,"internalType":"uint40"},{"name":"withdrawalTimestamp","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"partialWithdrawalAmountGwei","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RestakedBeaconChainETHWithdrawn","inputs":[{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RestakingActivated","inputs":[{"name":"podOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ValidatorBalanceUpdated","inputs":[{"name":"validatorIndex","type":"uint40","indexed":false,"internalType":"uint40"},{"name":"balanceTimestamp","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"newValidatorBalanceGwei","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"ValidatorRestaked","inputs":[{"name":"validatorIndex","type":"uint40","indexed":false,"internalType":"uint40"}],"anonymous":false}],"bytecode":{"object":"0x6101206040523480156200001257600080fd5b5060405162005f0338038062005f0383398101604081905262000035916200016f565b6001600160a01b0380861660805284811660a052831660c0526001600160401b0380831660e0528116610100526200006c62000077565b5050505050620001e7565b600054610100900460ff1615620000e45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000137576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200014f57600080fd5b50565b80516001600160401b03811681146200016a57600080fd5b919050565b600080600080600060a086880312156200018857600080fd5b8551620001958162000139565b6020870151909550620001a88162000139565b6040870151909450620001bb8162000139565b9250620001cb6060870162000152565b9150620001db6080870162000152565b90509295509295909350565b60805160a05160c05160e05161010051615c28620002db600039600081816105b5015281816134c8015261357f015260008181610275015281816124290152818161245d01528181612a8901528181612ab60152818161425b015261429601526000818161036d01528181610614015281816107a701528181610a4601528181610b9b01528181610d2301528181610ede015281816110bf015281816111f3015281816113fd0152818161184a015281816119f201528181611b3101528181611cfe01528181611de80152612f2101526000818161024101526131930152600081816104520152610dee0152615c286000f3fe6080604052600436106101855760003560e01c806374cdd798116100d1578063c49074421161008a578063e251ef5211610064578063e251ef5214610563578063e2c8344514610583578063f2882461146105a3578063fe80b087146105d757600080fd5b8063c490744214610503578063c4d66de814610523578063dda3346c1461054357600080fd5b806374cdd7981461044057806387e0d289146104745780639b4e46341461049b578063a50600f4146104ae578063b522538a146104ce578063baa7145a146104ee57600080fd5b806334bea20a1161013e57806358eaee791161011857806358eaee791461038f5780635d3f65b6146103bc5780636fcd0e53146103dc5780637439841f1461040957600080fd5b806334bea20a146103005780633f65cf191461033b5780634665bcda1461035b57600080fd5b80630b18ff66146101db5780630cd4649e146102185780631a5057be1461022f5780631d905d5c146102635780633106ab53146102af5780633474aa16146102e057600080fd5b366101d657346037600082825461019c9190614b56565b90915550506040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101e757600080fd5b506033546101fb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561022457600080fd5b5061022d6105fb565b005b34801561023b57600080fd5b506101fb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561026f57600080fd5b506102977f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160401b03909116815260200161020f565b3480156102bb57600080fd5b506034546102d090600160401b900460ff1681565b604051901515815260200161020f565b3480156102ec57600080fd5b50603454610297906001600160401b031681565b34801561030c57600080fd5b506102d061031b366004614b93565b603560209081526000928352604080842090915290825290205460ff1681565b34801561034757600080fd5b5061022d610356366004614c26565b610764565b34801561036757600080fd5b506101fb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561039b57600080fd5b506103af6103aa366004614d37565b610c06565b60405161020f9190614db0565b3480156103c857600080fd5b50603854610297906001600160401b031681565b3480156103e857600080fd5b506103fc6103f7366004614dbe565b610c6b565b60405161020f9190614dd7565b34801561041557600080fd5b506103af610424366004614dbe565b600090815260366020526040902054600160c01b900460ff1690565b34801561044c57600080fd5b506101fb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561048057600080fd5b5060335461029790600160a01b90046001600160401b031681565b61022d6104a9366004614e1f565b610d18565b3480156104ba57600080fd5b5061022d6104c9366004614e92565b610ec5565b3480156104da57600080fd5b506103fc6104e9366004614d37565b611294565b3480156104fa57600080fd5b5061022d611387565b34801561050f57600080fd5b5061022d61051e366004614f3c565b6113f2565b34801561052f57600080fd5b5061022d61053e366004614f68565b61162f565b34801561054f57600080fd5b5061022d61055e366004615082565b611807565b34801561056f57600080fd5b5061022d61057e366004615153565b6119da565b34801561058f57600080fd5b5061022d61059e366004614f3c565b611da5565b3480156105af57600080fd5b506102977f000000000000000000000000000000000000000000000000000000000000000081565b3480156105e357600080fd5b506105ed60375481565b60405190815260200161020f565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610663573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610687919061524e565b156106ad5760405162461bcd60e51b81526004016106a490615270565b60405180910390fd5b6033546001600160a01b031633146106d75760405162461bcd60e51b81526004016106a4906152cd565b603454600160401b900460ff16156107015760405162461bcd60e51b81526004016106a490615315565b6034805460ff60401b1916600160401b179055603354610729906001600160a01b0316611f88565b6033546040516001600160a01b03909116907fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a250565b6033546001600160a01b0316331461078e5760405162461bcd60e51b81526004016106a4906152cd565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a919061524e565b156108375760405162461bcd60e51b81526004016106a490615270565b60335489906001600160401b03600160a01b9091048116908216101561086f5760405162461bcd60e51b81526004016106a490615364565b603454600160401b900460ff166108e75760405162461bcd60e51b815260206004820152603660248201527f456967656e506f642e686173456e61626c656452657374616b696e673a2072656044820152751cdd185ada5b99c81a5cc81b9bdd08195b98589b195960521b60648201526084016106a4565b86851480156108f557508483145b6109855760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106a4565b4261099b613f486001600160401b038d16614b56565b1015610a245760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038b166004820152610acd907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d1c64cc990602401602060405180830381865afa158015610a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab991906153f7565b8a35610ac860208d018d615410565b611fbc565b6000805b88811015610b7157610b538c8c358c8c85818110610af157610af1615456565b9050602002016020810190610b06919061546c565b8b8b86818110610b1857610b18615456565b9050602002810190610b2a9190615410565b8b8b88818110610b3c57610b3c615456565b9050602002810190610b4e9190615493565b61214a565b610b5d9083614b56565b915080610b69816154dc565b915050610ad1565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b158015610be157600080fd5b505af1158015610bf5573d6000803e3d6000fd5b505050505050505050505050505050565b600080610c4884848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061260492505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b610c936040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610cfe57610cfe614d78565b6002811115610d0f57610d0f614d78565b90525092915050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d605760405162461bcd60e51b81526004016106a4906154f7565b346801bc16d674ec80000014610dec5760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106a4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec8000008787610e2f6126fe565b8888886040518863ffffffff1660e01b8152600401610e53969594939291906155c9565b6000604051808303818588803b158015610e6c57600080fd5b505af1158015610e80573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051610eb6929190615618565b60405180910390a15050505050565b604051635ac86ab760e01b8152600360048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f51919061524e565b15610f6e5760405162461bcd60e51b81526004016106a490615270565b8684148015610f7c57508382145b6110055760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207660448201527f616c696461746f72496e646963657320616e642070726f6f6673206d7573742060648201526d0c4ca40e6c2daca40d8cadccee8d60931b608482015260a4016106a4565b4261101b613f486001600160401b038c16614b56565b101561109d5760405162461bcd60e51b815260206004820152604560248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207360448201527f70656369666965642074696d657374616d7020697320746f6f2066617220696e606482015264081c185cdd60da1b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038a166004820152611141907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d1c64cc990602401602060405180830381865afa15801561110e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113291906153f7565b8735610ac860208a018a615410565b6000805b888110156111e5576111c78b8b8b8481811061116357611163615456565b9050602002016020810190611178919061546c565b8a358a8a8681811061118c5761118c615456565b905060200281019061119e9190615410565b8a8a888181106111b0576111b0615456565b90506020028101906111c29190615493565b612743565b6111d1908361562c565b9150806111dd816154dc565b915050611145565b506033546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169163c2c51c40911661122a633b9aca008561566d565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561127057600080fd5b505af1158015611284573d6000803e3d6000fd5b5050505050505050505050505050565b6112bc6040805160808101825260008082526020820181905291810182905290606082015290565b603660006112ff85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061260492505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561136c5761136c614d78565b600281111561137d5761137d614d78565b9052509392505050565b6033546001600160a01b031633146113b15760405162461bcd60e51b81526004016106a4906152cd565b603454600160401b900460ff16156113db5760405162461bcd60e51b81526004016106a490615315565b6033546113f0906001600160a01b0316611f88565b565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461143a5760405162461bcd60e51b81526004016106a4906154f7565b611448633b9aca0082615708565b156114d25760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106a4565b60006114e2633b9aca008361571c565b6034549091506001600160401b03908116908216111561159b5760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106a4565b603480548291906000906115b99084906001600160401b0316615730565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161161891815260200190565b60405180910390a261162a8383612c21565b505050565b600054610100900460ff161580801561164f5750600054600160ff909116105b806116695750303b158015611669575060005460ff166001145b6116cc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a4565b6000805460ff1916600117905580156116ef576000805461ff0019166101001790555b6001600160a01b0382166117625760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106a4565b603380546001600160a01b0384166001600160a01b031990911681179091556034805460ff60401b1916600160401b1790556040517fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a28015611803576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6033546001600160a01b031633146118315760405162461bcd60e51b81526004016106a4906152cd565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611899573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118bd919061524e565b156118da5760405162461bcd60e51b81526004016106a490615270565b82518451146119655760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106a4565b60005b84518110156119d3576119c18385838151811061198757611987615456565b60200260200101518784815181106119a1576119a1615456565b60200260200101516001600160a01b0316612c2b9092919063ffffffff16565b806119cb816154dc565b915050611968565b5050505050565b604051635ac86ab760e01b81526004808201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611a41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a65919061524e565b15611a825760405162461bcd60e51b81526004016106a490615270565b8386148015611a9057508588145b8015611a9b57508782145b611b0f576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e766572696679416e6450726f636573735769746864726160448201527f77616c733a20696e70757473206d7573742062652073616d65206c656e67746860648201526084016106a4565b60405163d1c64cc960e01b81526001600160401b038c166004820152611bb3907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d1c64cc990602401602060405180830381865afa158015611b80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba491906153f7565b8b35610ac860208e018e615410565b604080518082019091526000808252602082015260005b83811015611cb3576000611c6e8d358d8d85818110611beb57611beb615456565b9050602002810190611bfd9190615758565b8c8c86818110611c0f57611c0f615456565b9050602002810190611c219190615410565b8c8c88818110611c3357611c33615456565b9050602002810190611c459190615493565b8c8c8a818110611c5757611c57615456565b9050602002810190611c699190615493565b612c7d565b80518451919250908490611c83908390614b56565b9052506020808201519084018051611c9c90839061562c565b905250819050611cab816154dc565b915050611bca565b50805115611ce2576033548151611ce2916001600160a01b031690611cdd90633b9aca0090615779565b613169565b602081015115611d975760335460208201516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263c2c51c4092911690611d3890633b9aca009061566d565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611d7e57600080fd5b505af1158015611d92573d6000803e3d6000fd5b505050505b505050505050505050505050565b6033546001600160a01b03163314611dcf5760405162461bcd60e51b81526004016106a4906152cd565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611e37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5b919061524e565b15611e785760405162461bcd60e51b81526004016106a490615270565b603754821115611f295760405162461bcd60e51b815260206004820152606a60248201527f456967656e506f642e77697468647261776e6f6e426561636f6e436861696e4560448201527f544842616c616e63655765693a20616d6f756e74546f5769746864726177206960648201527f732067726561746572207468616e206e6f6e426561636f6e436861696e45544860848201526942616c616e636557656960b01b60a482015260c4016106a4565b8160376000828254611f3b9190615798565b90915550506040518281526001600160a01b038416907f30420aacd028abb3c1fd03aba253ae725d6ddd52d16c9ac4cb5742cd43f530969060200160405180910390a261162a8383613169565b6033805467ffffffffffffffff60a01b19164263ffffffff16600160a01b021790556000603755611fb98147613169565b50565b611fc860036020615779565b81146120585760405162461bcd60e51b815260206004820152605360248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a2050726f6f6620686064820152720c2e640d2dcc6dee4e4cac6e840d8cadccee8d606b1b608482015260a4016106a4565b61209d82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250879150600390506131f7565b6121445760405162461bcd60e51b815260206004820152606660248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a20496e76616c696460648201527f206c617465737420626c6f636b2068656164657220726f6f74206d65726b6c6560848201526510383937b7b360d11b60a482015260c4016106a4565b50505050565b60008061218984848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061320f92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156121f8576121f8614d78565b600281111561220957612209614d78565b905250905060008160600151600281111561222657612226614d78565b146122cf5760405162461bcd60e51b815260206004820152606760248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2056616c696461746f72206d757374206265206960648201527f6e61637469766520746f2070726f7665207769746864726177616c2063726564608482015266656e7469616c7360c81b60a482015260c4016106a4565b6122d76126fe565b6122e0906157af565b61231c86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061323392505050565b146123a35760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2050726f6f66206973206e6f7420666f7220746860648201526a1a5cc8115a59d95b941bd960aa1b608482015260a4016106a4565b60006123e186868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061324892505050565b90506123f18a87878b8b8e61326d565b60398054906000612401836154dc565b90915550506001606083015264ffffffffff891682526001600160401b038b811660408401527f000000000000000000000000000000000000000000000000000000000000000081169082161115612487576001600160401b037f0000000000000000000000000000000000000000000000000000000000000000166020830152612497565b6001600160401b03811660208301525b6000838152603660209081526040918290208451815492860151938601516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060850151859391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b83600281111561253557612535614d78565b02179055505060405164ffffffffff8b1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a17f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df898c84602001516040516125d09392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1633b9aca0082602001516001600160401b03166125f59190615779565b9b9a5050505050505050505050565b6000815160301461268d5760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106a4565b6040516002906126a49084906000906020016157d3565b60408051601f19818403018152908290526126be91615802565b602060405180830381855afa1580156126db573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610c6591906153f7565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b60008061278284848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061324892505050565b905060006127c285858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061320f92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561283157612831614d78565b600281111561284257612842614d78565b8152505090508a6001600160401b031681604001516001600160401b0316106128f95760405162461bcd60e51b815260206004820152605c60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20566160448201527f6c696461746f72732062616c616e63652068617320616c72656164792062656560648201527f6e207570646174656420666f7220746869732074696d657374616d7000000000608482015260a4016106a4565b60018160600151600281111561291157612911614d78565b146129795760405162461bcd60e51b815260206004820152603260248201527f456967656e506f642e76657269667942616c616e63655570646174653a2056616044820152716c696461746f72206e6f742061637469766560701b60648201526084016106a4565b6129828b6134c4565b6001600160401b03166129c78787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506135ae92505050565b6001600160401b031611612a6a576000836001600160401b031611612a6a5760405162461bcd60e51b815260206004820152604d60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20766160448201527f6c696461746f7220697320776974686472617761626c6520627574206861732060648201526c3737ba103bb4ba34323930bbb760991b608482015260a4016106a4565b612a788987878b8b8f61326d565b602081015160006001600160401b037f000000000000000000000000000000000000000000000000000000000000000081169086161115612ada57507f0000000000000000000000000000000000000000000000000000000000000000612add565b50835b6001600160401b0380821660208086019182528f831660408088019182526000898152603690935290912086518154935192518516600160801b0267ffffffffffffffff60801b19938616600160401b026001600160801b031990951691909516179290921790811683178255606086015186939091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b836002811115612b8557612b85614d78565b0217905550905050816001600160401b0316816001600160401b031614612c11577f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df8c8e83604051612bfc9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1612c0e81836135c6565b95505b5050505050979650505050505050565b61180382826135e5565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261162a9084906136fe565b6040805180820190915260008082526020820152612ca2612c9d89615883565b6137d0565b6033546001600160401b03600160a01b90910481169082161015612cd85760405162461bcd60e51b81526004016106a490615364565b6000612ce6612c9d8b615883565b90506000612d2688888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061320f92505050565b905060008082815260366020526040902054600160c01b900460ff166002811115612d5357612d53614d78565b1415612e0a5760405162461bcd60e51b815260206004820152607460248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a2056616c696461746f72206e657665722070726f76656e20746f2060648201527f68617665207769746864726177616c2063726564656e7469616c7320706f696e6084820152731d1959081d1bc81d1a1a5cc818dbdb9d1c9858dd60621b60a482015260c4016106a4565b60008181526035602090815260408083206001600160401b038616845290915290205460ff1615612ec95760405162461bcd60e51b815260206004820152605b60248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a207769746864726177616c2068617320616c72656164792062656560648201527f6e2070726f76656e20666f7220746869732074696d657374616d700000000000608482015260a4016106a4565b6001603560008381526020019081526020016000206000846001600160401b03166001600160401b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550612fa68c87878e7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166344e71c806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fa191906159bf565b6137e0565b6000612fe487878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061420192505050565b9050612ff48d8a8a8e8e8661326d565b600061303288888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061421992505050565b90506130708a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506135ae92505050565b6001600160401b031661308a6130858f615883565b614231565b6001600160401b03161061314257603354600084815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b81049093169381019390935261313793869388938a936001600160a01b03909316928892916060830190600160c01b900460ff16600281111561311e5761311e614d78565b600281111561312f5761312f614d78565b905250614243565b95505050505061315c565b60335461313790839086906001600160a01b031684614481565b5098975050505050505050565b603354604051633036cd5360e21b81526001600160a01b03918216600482015283821660248201527f00000000000000000000000000000000000000000000000000000000000000009091169063c0db354c9083906044016000604051808303818588803b1580156131da57600080fd5b505af11580156131ee573d6000803e3d6000fd5b50505050505050565b60008361320586858561455f565b1495945050505050565b60008160008151811061322457613224615456565b60200260200101519050919050565b60008160018151811061322457613224615456565b6000610c658260028151811061326057613260615456565b60200260200101516146ab565b61327960036002615ac0565b84146133045760405162461bcd60e51b815260206004820152604e60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b600561331260286001614b56565b61331c9190614b56565b613327906020615779565b82146133a75760405162461bcd60e51b815260206004820152604360248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106a4565b600064ffffffffff82166133bd60286001614b56565b600b901b179050600061340287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061471292505050565b905061344885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508591508690506131f7565b6134ba5760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106a4565b5050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316826001600160401b0316101561356e5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f642e5f74696d657374616d70546f45706f63683a2074696d6560448201527f7374616d70206973206265666f72652067656e6573697300000000000000000060648201526084016106a4565b61357a600c6020615acc565b6135a47f000000000000000000000000000000000000000000000000000000000000000084615730565b610c659190615afb565b6000610c658260078151811061326057613260615456565b60006135de6001600160401b03808416908516615b21565b9392505050565b804710156136355760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106a4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613682576040519150601f19603f3d011682016040523d82523d6000602084013e613687565b606091505b505090508061162a5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106a4565b6000613753826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166149bf9092919063ffffffff16565b80519091501561162a5780806020019051810190613771919061524e565b61162a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a4565b6000610c658261014001516146ab565b6137eb600280615ac0565b831461385f5760405162461bcd60e51b81526020600482015260496024820152600080516020615bd383398151915260448201527f616c3a207769746864726177616c4669656c64732068617320696e636f7272656064820152680c6e840d8cadccee8d60bb1b608482015260a4016106a4565b61386b600d6002615ac0565b61387b60c0840160a08501615b60565b6001600160401b0316106138e55760405162461bcd60e51b815260206004820152603f6024820152600080516020615bd383398151915260448201527f616c3a20626c6f636b526f6f74496e64657820697320746f6f206c617267650060648201526084016106a4565b6138f160046002615ac0565b613902610100840160e08501615b60565b6001600160401b03161061396e576040805162461bcd60e51b8152602060048201526024810191909152600080516020615bd383398151915260448201527f616c3a207769746864726177616c496e64657820697320746f6f206c6172676560648201526084016106a4565b61397a60186002615ac0565b61398a60e0840160c08501615b60565b6001600160401b031610613a045760405162461bcd60e51b81526020600482015260476024820152600080516020615bd383398151915260448201527f616c3a20686973746f726963616c53756d6d617279496e64657820697320746f6064820152666f206c6172676560c81b608482015260a4016106a4565b60006001600160401b038216613a1c612c9d85615883565b6001600160401b031610613a31576005613a34565b60045b9050613a41600482614b56565b613a4c906001614b56565b613a57906020615779565b613a618480615410565b905014613ad55760405162461bcd60e51b81526020600482015260486024820152600080516020615bd383398151915260448201527f616c3a207769746864726177616c50726f6f662068617320696e636f727265636064820152670e840d8cadccee8d60c31b608482015260a4016106a4565b613ae160046003614b56565b613aec906020615779565b613af96040850185615410565b905014613b735760405162461bcd60e51b815260206004820152604e6024820152600080516020615bd383398151915260448201527f616c3a20657865637574696f6e5061796c6f616450726f6f662068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b613b7f60036020615779565b613b8c6020850185615410565b905014613bfa5760405162461bcd60e51b81526020600482015260426024820152600080516020615bd383398151915260448201527f616c3a20736c6f7450726f6f662068617320696e636f7272656374206c656e676064820152610e8d60f31b608482015260a4016106a4565b613c05816020615779565b613c126060850185615410565b905014613c855760405162461bcd60e51b81526020600482015260476024820152600080516020615bd383398151915260448201527f616c3a2074696d657374616d7050726f6f662068617320696e636f7272656374606482015266040d8cadccee8d60cb1b608482015260a4016106a4565b600d613c9360186001614b56565b613c9e906005614b56565b613ca9906001614b56565b613cb39190614b56565b613cbe906020615779565b613ccb6080850185615410565b905014613d545760405162461bcd60e51b81526020600482015260586024820152600080516020615bd383398151915260448201527f616c3a20686973746f726963616c53756d6d617279426c6f636b526f6f74507260648201527f6f6f662068617320696e636f7272656374206c656e6774680000000000000000608482015260a4016106a4565b6000613d6660c0850160a08601615b60565b6001600160401b03166000613d7d600d6001614b56565b613d8d60e0880160c08901615b60565b6001600160401b0316901b600d613da660186001614b56565b613db1906001614b56565b613dbb9190614b56565b601b901b1717179050613e16613dd46080860186615410565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b92505050610100870135846131f7565b613e895760405162461bcd60e51b815260206004820152604a6024820152600080516020615bd383398151915260448201527f616c3a20496e76616c696420686973746f726963616c73756d6d617279206d656064820152693935b63290383937b7b360b11b608482015260a4016106a4565b613ee0613e996020860186615410565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506101008a013593506101208a0135925090506131f7565b613f405760405162461bcd60e51b815260206004820152603d6024820152600080516020615bd383398151915260448201527f616c3a20496e76616c696420736c6f74206d65726b6c652070726f6f6600000060648201526084016106a4565b6049613f98613f526040870187615410565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050610100870135610160880135846131f7565b61400a5760405162461bcd60e51b81526020600482015260496024820152600080516020615bd383398151915260448201527f616c3a20496e76616c696420657865637574696f6e5061796c6f6164206d657260648201526835b63290383937b7b360b91b608482015260a4016106a4565b5061406261401b6060860186615410565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505061016086013561014087013560096131f7565b6140cd5760405162461bcd60e51b81526020600482015260426024820152600080516020615bd383398151915260448201527f616c3a20496e76616c69642074696d657374616d70206d65726b6c652070726f60648201526137b360f11b608482015260a4016106a4565b60006140e0610100860160e08701615b60565b6001600160401b03166140f560046001614b56565b600e901b179050600061413a88888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061471292505050565b905061418a6141498780615410565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505061016088013583856131f7565b6141f65760405162461bcd60e51b81526020600482015260436024820152600080516020615bd383398151915260448201527f616c3a20496e76616c6964207769746864726177616c206d65726b6c6520707260648201526237b7b360e91b608482015260a4016106a4565b505050505050505050565b6000610c658260018151811061326057613260615456565b6000610c658260038151811061326057613260615456565b600060206135a48361012001516146ab565b604080518082019091526000808252602082015260007f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316846001600160401b031611156142ba57507f00000000000000000000000000000000000000000000000000000000000000006142bd565b50825b60408051808201909152600080825260208201526142db8286615730565b6001600160401b0390811682526034805484926000916142fd91859116615b7d565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061432f8285602001516135c6565b602082015260028460600151600281111561434c5761434c614d78565b1461436e576039805490600061436183615ba8565b9091555050600260608501525b600060208086018281528a83526036909152604091829020865181549251938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516929091169190911792909217928316821781556060870151879391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b83600281111561441357614413614d78565b0217905550506040805164ffffffffff8c1681526001600160401b038a8116602083015288168183015290516001600160a01b03891692507fb76a93bb649ece524688f1a01d184e0bbebcda58eae80c28a898bec3fb5a09639181900360600190a298975050505050505050565b60408051808201909152600080825260208201526040805164ffffffffff871681526001600160401b0380871660208301528416918101919091526001600160a01b038416907f8a7335714231dbd551aaba6314f4a97a14c201e53a3e25e1140325cdf67d7a4e9060600160405180910390a2603880548391906000906145129084906001600160401b0316615b7d565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506040518060400160405280836001600160401b0316815260200160008152509050949350505050565b6000835160001415801561457e57506020845161457c9190615708565b155b61460d5760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106a4565b604080516020808201909252848152905b855181116146a157614631600285615708565b614664578151600052808601516020526020826040600060026107d05a03fa61465957600080fd5b60028404935061468f565b8086015160005281516020526020826040600060026107d05a03fa61468857600080fd5b6002840493505b61469a602082614b56565b905061461e565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b60008060028351614723919061571c565b90506000816001600160401b0381111561473f5761473f614f85565b604051908082528060200260200182016040528015614768578160200160208202803683370190505b50905060005b8281101561486f576002856147838383615779565b8151811061479357614793615456565b6020026020010151868360026147a99190615779565b6147b4906001614b56565b815181106147c4576147c4615456565b60200260200101516040516020016147e6929190918252602082015260400190565b60408051601f198184030181529082905261480091615802565b602060405180830381855afa15801561481d573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061484091906153f7565b82828151811061485257614852615456565b602090810291909101015280614867816154dc565b91505061476e565b5061487b60028361571c565b91505b811561499b5760005b828110156149885760028261489c8383615779565b815181106148ac576148ac615456565b6020026020010151838360026148c29190615779565b6148cd906001614b56565b815181106148dd576148dd615456565b60200260200101516040516020016148ff929190918252602082015260400190565b60408051601f198184030181529082905261491991615802565b602060405180830381855afa158015614936573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061495991906153f7565b82828151811061496b5761496b615456565b602090810291909101015280614980816154dc565b915050614887565b5061499460028361571c565b915061487e565b806000815181106149ae576149ae615456565b602002602001015192505050919050565b60606149ce84846000856149d6565b949350505050565b606082471015614a375760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a4565b6001600160a01b0385163b614a8e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a4565b600080866001600160a01b03168587604051614aaa9190615802565b60006040518083038185875af1925050503d8060008114614ae7576040519150601f19603f3d011682016040523d82523d6000602084013e614aec565b606091505b5091509150614afc828286614b07565b979650505050505050565b60608315614b165750816135de565b825115614b265782518084602001fd5b8160405162461bcd60e51b81526004016106a49190615bbf565b634e487b7160e01b600052601160045260246000fd5b60008219821115614b6957614b69614b40565b500190565b6001600160401b0381168114611fb957600080fd5b8035614b8e81614b6e565b919050565b60008060408385031215614ba657600080fd5b823591506020830135614bb881614b6e565b809150509250929050565b600060408284031215614bd557600080fd5b50919050565b60008083601f840112614bed57600080fd5b5081356001600160401b03811115614c0457600080fd5b6020830191508360208260051b8501011115614c1f57600080fd5b9250929050565b60008060008060008060008060a0898b031215614c4257600080fd5b8835614c4d81614b6e565b975060208901356001600160401b0380821115614c6957600080fd5b614c758c838d01614bc3565b985060408b0135915080821115614c8b57600080fd5b614c978c838d01614bdb565b909850965060608b0135915080821115614cb057600080fd5b614cbc8c838d01614bdb565b909650945060808b0135915080821115614cd557600080fd5b50614ce28b828c01614bdb565b999c989b5096995094979396929594505050565b60008083601f840112614d0857600080fd5b5081356001600160401b03811115614d1f57600080fd5b602083019150836020828501011115614c1f57600080fd5b60008060208385031215614d4a57600080fd5b82356001600160401b03811115614d6057600080fd5b614d6c85828601614cf6565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110614dac57634e487b7160e01b600052602160045260246000fd5b9052565b60208101610c658284614d8e565b600060208284031215614dd057600080fd5b5035919050565b60006080820190506001600160401b03808451168352806020850151166020840152806040850151166040840152506060830151614e186060840182614d8e565b5092915050565b600080600080600060608688031215614e3757600080fd5b85356001600160401b0380821115614e4e57600080fd5b614e5a89838a01614cf6565b90975095506020880135915080821115614e7357600080fd5b50614e8088828901614cf6565b96999598509660400135949350505050565b60008060008060008060008060a0898b031215614eae57600080fd5b8835614eb981614b6e565b975060208901356001600160401b0380821115614ed557600080fd5b614ee18c838d01614bdb565b909950975060408b0135915080821115614efa57600080fd5b614f068c838d01614bc3565b965060608b0135915080821115614cb057600080fd5b6001600160a01b0381168114611fb957600080fd5b8035614b8e81614f1c565b60008060408385031215614f4f57600080fd5b8235614f5a81614f1c565b946020939093013593505050565b600060208284031215614f7a57600080fd5b81356135de81614f1c565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b0381118282101715614fbe57614fbe614f85565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614fec57614fec614f85565b604052919050565b60006001600160401b0382111561500d5761500d614f85565b5060051b60200190565b600082601f83011261502857600080fd5b8135602061503d61503883614ff4565b614fc4565b82815260059290921b8401810191818101908684111561505c57600080fd5b8286015b848110156150775780358352918301918301615060565b509695505050505050565b60008060006060848603121561509757600080fd5b83356001600160401b03808211156150ae57600080fd5b818601915086601f8301126150c257600080fd5b813560206150d261503883614ff4565b82815260059290921b8401810191818101908a8411156150f157600080fd5b948201945b8386101561511857853561510981614f1c565b825294820194908201906150f6565b9750508701359250508082111561512e57600080fd5b5061513b86828701615017565b92505061514a60408501614f31565b90509250925092565b60008060008060008060008060008060c08b8d03121561517257600080fd5b61517b8b614b83565b995060208b01356001600160401b038082111561519757600080fd5b6151a38e838f01614bc3565b9a5060408d01359150808211156151b957600080fd5b6151c58e838f01614bdb565b909a50985060608d01359150808211156151de57600080fd5b6151ea8e838f01614bdb565b909850965060808d013591508082111561520357600080fd5b61520f8e838f01614bdb565b909650945060a08d013591508082111561522857600080fd5b506152358d828e01614bdb565b915080935050809150509295989b9194979a5092959850565b60006020828403121561526057600080fd5b815180151581146135de57600080fd5b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b6020808252602f908201527f456967656e506f642e6861734e6576657252657374616b65643a20726573746160408201526e1ada5b99c81a5cc8195b98589b1959608a1b606082015260800190565b60208082526067908201527f456967656e506f642e70726f6f664973466f7256616c696454696d657374616d60408201527f703a20626561636f6e20636861696e2070726f6f66206d75737420626520617460608201527f206f72206166746572206d6f7374526563656e745769746864726177616c546960808201526606d657374616d760cc1b60a082015260c00190565b60006020828403121561540957600080fd5b5051919050565b6000808335601e1984360301811261542757600080fd5b8301803591506001600160401b0382111561544157600080fd5b602001915036819003821315614c1f57600080fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561547e57600080fd5b813564ffffffffff811681146135de57600080fd5b6000808335601e198436030181126154aa57600080fd5b8301803591506001600160401b038211156154c457600080fd5b6020019150600581901b3603821315614c1f57600080fd5b60006000198214156154f0576154f0614b40565b5060010190565b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60005b8381101561558c578181015183820152602001615574565b838111156121445750506000910152565b600081518084526155b5816020860160208601615571565b601f01601f19169290920160200192915050565b6080815260006155dd60808301888a615548565b82810360208401526155ef818861559d565b90508281036040840152615604818688615548565b915050826060830152979650505050505050565b6020815260006149ce602083018486615548565b600080821280156001600160ff1b038490038513161561564e5761564e614b40565b600160ff1b839003841281161561566757615667614b40565b50500190565b60006001600160ff1b038184138284138082168684048611161561569357615693614b40565b600160ff1b60008712828116878305891216156156b2576156b2614b40565b600087129250878205871284841616156156ce576156ce614b40565b878505871281841616156156e4576156e4614b40565b505050929093029392505050565b634e487b7160e01b600052601260045260246000fd5b600082615717576157176156f2565b500690565b60008261572b5761572b6156f2565b500490565b60006001600160401b038381169083168181101561575057615750614b40565b039392505050565b6000823561017e1983360301811261576f57600080fd5b9190910192915050565b600081600019048311821515161561579357615793614b40565b500290565b6000828210156157aa576157aa614b40565b500390565b80516020808301519190811015614bd55760001960209190910360031b1b16919050565b600083516157e5818460208801615571565b6001600160801b0319939093169190920190815260100192915050565b6000825161576f818460208701615571565b600082601f83011261582557600080fd5b81356001600160401b0381111561583e5761583e614f85565b615851601f8201601f1916602001614fc4565b81815284602083860101111561586657600080fd5b816020850160208301376000918101602001919091529392505050565b6000610180823603121561589657600080fd5b61589e614f9b565b82356001600160401b03808211156158b557600080fd5b6158c136838701615814565b835260208501359150808211156158d757600080fd5b6158e336838701615814565b602084015260408501359150808211156158fc57600080fd5b61590836838701615814565b6040840152606085013591508082111561592157600080fd5b61592d36838701615814565b6060840152608085013591508082111561594657600080fd5b5061595336828601615814565b60808301525061596560a08401614b83565b60a082015261597660c08401614b83565b60c082015261598760e08401614b83565b60e082015261010083810135908201526101208084013590820152610140808401359082015261016092830135928101929092525090565b6000602082840312156159d157600080fd5b81516135de81614b6e565b600181815b80851115615a175781600019048211156159fd576159fd614b40565b80851615615a0a57918102915b93841c93908002906159e1565b509250929050565b600082615a2e57506001610c65565b81615a3b57506000610c65565b8160018114615a515760028114615a5b57615a77565b6001915050610c65565b60ff841115615a6c57615a6c614b40565b50506001821b610c65565b5060208310610133831016604e8410600b8410161715615a9a575081810a610c65565b615aa483836159dc565b8060001904821115615ab857615ab8614b40565b029392505050565b60006135de8383615a1f565b60006001600160401b0380831681851681830481118215151615615af257615af2614b40565b02949350505050565b60006001600160401b0380841680615b1557615b156156f2565b92169190910492915050565b60008083128015600160ff1b850184121615615b3f57615b3f614b40565b6001600160ff1b0384018313811615615b5a57615b5a614b40565b50500390565b600060208284031215615b7257600080fd5b81356135de81614b6e565b60006001600160401b03808316818516808303821115615b9f57615b9f614b40565b01949350505050565b600081615bb757615bb7614b40565b506000190190565b6020815260006135de602083018461559d56fe426561636f6e436861696e50726f6f66732e7665726966795769746864726177a2646970667358221220796ba571ed91e7194f05237d358a08c02e76a2e7db5087950235a2ea19a62d0964736f6c634300080c0033","sourceMap":"1902:37246:30:-:0;;;7018:538;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;7267:16:30;;;;;7293:50;;;;;7353:34;;;;-1:-1:-1;;;;;7397:82:30;;;;;7489:28;;;;7527:22;:20;:22::i;:::-;7018:538;;;;;1902:37246;;5388:279:59;5456:13;;;;;;;5455:14;5447:66;;;;-1:-1:-1;;;5447:66:59;;1369:2:178;5447:66:59;;;1351:21:178;1408:2;1388:18;;;1381:30;1447:34;1427:18;;;1420:62;-1:-1:-1;;;1498:18:178;;;1491:37;1545:19;;5447:66:59;;;;;;;;5527:12;;5542:15;5527:12;;;:30;5523:138;;;5573:12;:30;;-1:-1:-1;;5573:30:59;5588:15;5573:30;;;;;;5622:28;;1717:36:178;;;5622:28:59;;1705:2:178;1690:18;5622:28:59;;;;;;;5523:138;5388:279::o;14:147:178:-;-1:-1:-1;;;;;105:31:178;;95:42;;85:70;;151:1;148;141:12;85:70;14:147;:::o;166:175::-;244:13;;-1:-1:-1;;;;;286:30:178;;276:41;;266:69;;331:1;328;321:12;266:69;166:175;;;:::o;346:816::-;531:6;539;547;555;563;616:3;604:9;595:7;591:23;587:33;584:53;;;633:1;630;623:12;584:53;665:9;659:16;684:47;725:5;684:47;:::i;:::-;800:2;785:18;;779:25;750:5;;-1:-1:-1;813:49:178;779:25;813:49;:::i;:::-;933:2;918:18;;912:25;881:7;;-1:-1:-1;946:49:178;912:25;946:49;:::i;:::-;1014:7;-1:-1:-1;1040:48:178;1084:2;1069:18;;1040:48;:::i;:::-;1030:58;;1107:49;1151:3;1140:9;1136:19;1107:49;:::i;:::-;1097:59;;346:816;;;;;;;;:::o;1575:184::-;1902:37246:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101855760003560e01c806374cdd798116100d1578063c49074421161008a578063e251ef5211610064578063e251ef5214610563578063e2c8344514610583578063f2882461146105a3578063fe80b087146105d757600080fd5b8063c490744214610503578063c4d66de814610523578063dda3346c1461054357600080fd5b806374cdd7981461044057806387e0d289146104745780639b4e46341461049b578063a50600f4146104ae578063b522538a146104ce578063baa7145a146104ee57600080fd5b806334bea20a1161013e57806358eaee791161011857806358eaee791461038f5780635d3f65b6146103bc5780636fcd0e53146103dc5780637439841f1461040957600080fd5b806334bea20a146103005780633f65cf191461033b5780634665bcda1461035b57600080fd5b80630b18ff66146101db5780630cd4649e146102185780631a5057be1461022f5780631d905d5c146102635780633106ab53146102af5780633474aa16146102e057600080fd5b366101d657346037600082825461019c9190614b56565b90915550506040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101e757600080fd5b506033546101fb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561022457600080fd5b5061022d6105fb565b005b34801561023b57600080fd5b506101fb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561026f57600080fd5b506102977f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160401b03909116815260200161020f565b3480156102bb57600080fd5b506034546102d090600160401b900460ff1681565b604051901515815260200161020f565b3480156102ec57600080fd5b50603454610297906001600160401b031681565b34801561030c57600080fd5b506102d061031b366004614b93565b603560209081526000928352604080842090915290825290205460ff1681565b34801561034757600080fd5b5061022d610356366004614c26565b610764565b34801561036757600080fd5b506101fb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561039b57600080fd5b506103af6103aa366004614d37565b610c06565b60405161020f9190614db0565b3480156103c857600080fd5b50603854610297906001600160401b031681565b3480156103e857600080fd5b506103fc6103f7366004614dbe565b610c6b565b60405161020f9190614dd7565b34801561041557600080fd5b506103af610424366004614dbe565b600090815260366020526040902054600160c01b900460ff1690565b34801561044c57600080fd5b506101fb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561048057600080fd5b5060335461029790600160a01b90046001600160401b031681565b61022d6104a9366004614e1f565b610d18565b3480156104ba57600080fd5b5061022d6104c9366004614e92565b610ec5565b3480156104da57600080fd5b506103fc6104e9366004614d37565b611294565b3480156104fa57600080fd5b5061022d611387565b34801561050f57600080fd5b5061022d61051e366004614f3c565b6113f2565b34801561052f57600080fd5b5061022d61053e366004614f68565b61162f565b34801561054f57600080fd5b5061022d61055e366004615082565b611807565b34801561056f57600080fd5b5061022d61057e366004615153565b6119da565b34801561058f57600080fd5b5061022d61059e366004614f3c565b611da5565b3480156105af57600080fd5b506102977f000000000000000000000000000000000000000000000000000000000000000081565b3480156105e357600080fd5b506105ed60375481565b60405190815260200161020f565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610663573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610687919061524e565b156106ad5760405162461bcd60e51b81526004016106a490615270565b60405180910390fd5b6033546001600160a01b031633146106d75760405162461bcd60e51b81526004016106a4906152cd565b603454600160401b900460ff16156107015760405162461bcd60e51b81526004016106a490615315565b6034805460ff60401b1916600160401b179055603354610729906001600160a01b0316611f88565b6033546040516001600160a01b03909116907fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a250565b6033546001600160a01b0316331461078e5760405162461bcd60e51b81526004016106a4906152cd565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a919061524e565b156108375760405162461bcd60e51b81526004016106a490615270565b60335489906001600160401b03600160a01b9091048116908216101561086f5760405162461bcd60e51b81526004016106a490615364565b603454600160401b900460ff166108e75760405162461bcd60e51b815260206004820152603660248201527f456967656e506f642e686173456e61626c656452657374616b696e673a2072656044820152751cdd185ada5b99c81a5cc81b9bdd08195b98589b195960521b60648201526084016106a4565b86851480156108f557508483145b6109855760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106a4565b4261099b613f486001600160401b038d16614b56565b1015610a245760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038b166004820152610acd907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d1c64cc990602401602060405180830381865afa158015610a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab991906153f7565b8a35610ac860208d018d615410565b611fbc565b6000805b88811015610b7157610b538c8c358c8c85818110610af157610af1615456565b9050602002016020810190610b06919061546c565b8b8b86818110610b1857610b18615456565b9050602002810190610b2a9190615410565b8b8b88818110610b3c57610b3c615456565b9050602002810190610b4e9190615493565b61214a565b610b5d9083614b56565b915080610b69816154dc565b915050610ad1565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b158015610be157600080fd5b505af1158015610bf5573d6000803e3d6000fd5b505050505050505050505050505050565b600080610c4884848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061260492505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b610c936040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610cfe57610cfe614d78565b6002811115610d0f57610d0f614d78565b90525092915050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d605760405162461bcd60e51b81526004016106a4906154f7565b346801bc16d674ec80000014610dec5760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106a4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec8000008787610e2f6126fe565b8888886040518863ffffffff1660e01b8152600401610e53969594939291906155c9565b6000604051808303818588803b158015610e6c57600080fd5b505af1158015610e80573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051610eb6929190615618565b60405180910390a15050505050565b604051635ac86ab760e01b8152600360048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f51919061524e565b15610f6e5760405162461bcd60e51b81526004016106a490615270565b8684148015610f7c57508382145b6110055760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207660448201527f616c696461746f72496e646963657320616e642070726f6f6673206d7573742060648201526d0c4ca40e6c2daca40d8cadccee8d60931b608482015260a4016106a4565b4261101b613f486001600160401b038c16614b56565b101561109d5760405162461bcd60e51b815260206004820152604560248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207360448201527f70656369666965642074696d657374616d7020697320746f6f2066617220696e606482015264081c185cdd60da1b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038a166004820152611141907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d1c64cc990602401602060405180830381865afa15801561110e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113291906153f7565b8735610ac860208a018a615410565b6000805b888110156111e5576111c78b8b8b8481811061116357611163615456565b9050602002016020810190611178919061546c565b8a358a8a8681811061118c5761118c615456565b905060200281019061119e9190615410565b8a8a888181106111b0576111b0615456565b90506020028101906111c29190615493565b612743565b6111d1908361562c565b9150806111dd816154dc565b915050611145565b506033546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169163c2c51c40911661122a633b9aca008561566d565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561127057600080fd5b505af1158015611284573d6000803e3d6000fd5b5050505050505050505050505050565b6112bc6040805160808101825260008082526020820181905291810182905290606082015290565b603660006112ff85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061260492505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561136c5761136c614d78565b600281111561137d5761137d614d78565b9052509392505050565b6033546001600160a01b031633146113b15760405162461bcd60e51b81526004016106a4906152cd565b603454600160401b900460ff16156113db5760405162461bcd60e51b81526004016106a490615315565b6033546113f0906001600160a01b0316611f88565b565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461143a5760405162461bcd60e51b81526004016106a4906154f7565b611448633b9aca0082615708565b156114d25760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106a4565b60006114e2633b9aca008361571c565b6034549091506001600160401b03908116908216111561159b5760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106a4565b603480548291906000906115b99084906001600160401b0316615730565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161161891815260200190565b60405180910390a261162a8383612c21565b505050565b600054610100900460ff161580801561164f5750600054600160ff909116105b806116695750303b158015611669575060005460ff166001145b6116cc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a4565b6000805460ff1916600117905580156116ef576000805461ff0019166101001790555b6001600160a01b0382166117625760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106a4565b603380546001600160a01b0384166001600160a01b031990911681179091556034805460ff60401b1916600160401b1790556040517fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a28015611803576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6033546001600160a01b031633146118315760405162461bcd60e51b81526004016106a4906152cd565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611899573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118bd919061524e565b156118da5760405162461bcd60e51b81526004016106a490615270565b82518451146119655760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106a4565b60005b84518110156119d3576119c18385838151811061198757611987615456565b60200260200101518784815181106119a1576119a1615456565b60200260200101516001600160a01b0316612c2b9092919063ffffffff16565b806119cb816154dc565b915050611968565b5050505050565b604051635ac86ab760e01b81526004808201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611a41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a65919061524e565b15611a825760405162461bcd60e51b81526004016106a490615270565b8386148015611a9057508588145b8015611a9b57508782145b611b0f576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e766572696679416e6450726f636573735769746864726160448201527f77616c733a20696e70757473206d7573742062652073616d65206c656e67746860648201526084016106a4565b60405163d1c64cc960e01b81526001600160401b038c166004820152611bb3907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d1c64cc990602401602060405180830381865afa158015611b80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba491906153f7565b8b35610ac860208e018e615410565b604080518082019091526000808252602082015260005b83811015611cb3576000611c6e8d358d8d85818110611beb57611beb615456565b9050602002810190611bfd9190615758565b8c8c86818110611c0f57611c0f615456565b9050602002810190611c219190615410565b8c8c88818110611c3357611c33615456565b9050602002810190611c459190615493565b8c8c8a818110611c5757611c57615456565b9050602002810190611c699190615493565b612c7d565b80518451919250908490611c83908390614b56565b9052506020808201519084018051611c9c90839061562c565b905250819050611cab816154dc565b915050611bca565b50805115611ce2576033548151611ce2916001600160a01b031690611cdd90633b9aca0090615779565b613169565b602081015115611d975760335460208201516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263c2c51c4092911690611d3890633b9aca009061566d565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611d7e57600080fd5b505af1158015611d92573d6000803e3d6000fd5b505050505b505050505050505050505050565b6033546001600160a01b03163314611dcf5760405162461bcd60e51b81526004016106a4906152cd565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611e37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5b919061524e565b15611e785760405162461bcd60e51b81526004016106a490615270565b603754821115611f295760405162461bcd60e51b815260206004820152606a60248201527f456967656e506f642e77697468647261776e6f6e426561636f6e436861696e4560448201527f544842616c616e63655765693a20616d6f756e74546f5769746864726177206960648201527f732067726561746572207468616e206e6f6e426561636f6e436861696e45544860848201526942616c616e636557656960b01b60a482015260c4016106a4565b8160376000828254611f3b9190615798565b90915550506040518281526001600160a01b038416907f30420aacd028abb3c1fd03aba253ae725d6ddd52d16c9ac4cb5742cd43f530969060200160405180910390a261162a8383613169565b6033805467ffffffffffffffff60a01b19164263ffffffff16600160a01b021790556000603755611fb98147613169565b50565b611fc860036020615779565b81146120585760405162461bcd60e51b815260206004820152605360248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a2050726f6f6620686064820152720c2e640d2dcc6dee4e4cac6e840d8cadccee8d606b1b608482015260a4016106a4565b61209d82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250879150600390506131f7565b6121445760405162461bcd60e51b815260206004820152606660248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a20496e76616c696460648201527f206c617465737420626c6f636b2068656164657220726f6f74206d65726b6c6560848201526510383937b7b360d11b60a482015260c4016106a4565b50505050565b60008061218984848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061320f92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156121f8576121f8614d78565b600281111561220957612209614d78565b905250905060008160600151600281111561222657612226614d78565b146122cf5760405162461bcd60e51b815260206004820152606760248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2056616c696461746f72206d757374206265206960648201527f6e61637469766520746f2070726f7665207769746864726177616c2063726564608482015266656e7469616c7360c81b60a482015260c4016106a4565b6122d76126fe565b6122e0906157af565b61231c86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061323392505050565b146123a35760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2050726f6f66206973206e6f7420666f7220746860648201526a1a5cc8115a59d95b941bd960aa1b608482015260a4016106a4565b60006123e186868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061324892505050565b90506123f18a87878b8b8e61326d565b60398054906000612401836154dc565b90915550506001606083015264ffffffffff891682526001600160401b038b811660408401527f000000000000000000000000000000000000000000000000000000000000000081169082161115612487576001600160401b037f0000000000000000000000000000000000000000000000000000000000000000166020830152612497565b6001600160401b03811660208301525b6000838152603660209081526040918290208451815492860151938601516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060850151859391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b83600281111561253557612535614d78565b02179055505060405164ffffffffff8b1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a17f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df898c84602001516040516125d09392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1633b9aca0082602001516001600160401b03166125f59190615779565b9b9a5050505050505050505050565b6000815160301461268d5760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106a4565b6040516002906126a49084906000906020016157d3565b60408051601f19818403018152908290526126be91615802565b602060405180830381855afa1580156126db573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610c6591906153f7565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b60008061278284848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061324892505050565b905060006127c285858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061320f92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561283157612831614d78565b600281111561284257612842614d78565b8152505090508a6001600160401b031681604001516001600160401b0316106128f95760405162461bcd60e51b815260206004820152605c60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20566160448201527f6c696461746f72732062616c616e63652068617320616c72656164792062656560648201527f6e207570646174656420666f7220746869732074696d657374616d7000000000608482015260a4016106a4565b60018160600151600281111561291157612911614d78565b146129795760405162461bcd60e51b815260206004820152603260248201527f456967656e506f642e76657269667942616c616e63655570646174653a2056616044820152716c696461746f72206e6f742061637469766560701b60648201526084016106a4565b6129828b6134c4565b6001600160401b03166129c78787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506135ae92505050565b6001600160401b031611612a6a576000836001600160401b031611612a6a5760405162461bcd60e51b815260206004820152604d60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20766160448201527f6c696461746f7220697320776974686472617761626c6520627574206861732060648201526c3737ba103bb4ba34323930bbb760991b608482015260a4016106a4565b612a788987878b8b8f61326d565b602081015160006001600160401b037f000000000000000000000000000000000000000000000000000000000000000081169086161115612ada57507f0000000000000000000000000000000000000000000000000000000000000000612add565b50835b6001600160401b0380821660208086019182528f831660408088019182526000898152603690935290912086518154935192518516600160801b0267ffffffffffffffff60801b19938616600160401b026001600160801b031990951691909516179290921790811683178255606086015186939091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b836002811115612b8557612b85614d78565b0217905550905050816001600160401b0316816001600160401b031614612c11577f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df8c8e83604051612bfc9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1612c0e81836135c6565b95505b5050505050979650505050505050565b61180382826135e5565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261162a9084906136fe565b6040805180820190915260008082526020820152612ca2612c9d89615883565b6137d0565b6033546001600160401b03600160a01b90910481169082161015612cd85760405162461bcd60e51b81526004016106a490615364565b6000612ce6612c9d8b615883565b90506000612d2688888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061320f92505050565b905060008082815260366020526040902054600160c01b900460ff166002811115612d5357612d53614d78565b1415612e0a5760405162461bcd60e51b815260206004820152607460248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a2056616c696461746f72206e657665722070726f76656e20746f2060648201527f68617665207769746864726177616c2063726564656e7469616c7320706f696e6084820152731d1959081d1bc81d1a1a5cc818dbdb9d1c9858dd60621b60a482015260c4016106a4565b60008181526035602090815260408083206001600160401b038616845290915290205460ff1615612ec95760405162461bcd60e51b815260206004820152605b60248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a207769746864726177616c2068617320616c72656164792062656560648201527f6e2070726f76656e20666f7220746869732074696d657374616d700000000000608482015260a4016106a4565b6001603560008381526020019081526020016000206000846001600160401b03166001600160401b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550612fa68c87878e7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166344e71c806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fa191906159bf565b6137e0565b6000612fe487878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061420192505050565b9050612ff48d8a8a8e8e8661326d565b600061303288888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061421992505050565b90506130708a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506135ae92505050565b6001600160401b031661308a6130858f615883565b614231565b6001600160401b03161061314257603354600084815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b81049093169381019390935261313793869388938a936001600160a01b03909316928892916060830190600160c01b900460ff16600281111561311e5761311e614d78565b600281111561312f5761312f614d78565b905250614243565b95505050505061315c565b60335461313790839086906001600160a01b031684614481565b5098975050505050505050565b603354604051633036cd5360e21b81526001600160a01b03918216600482015283821660248201527f00000000000000000000000000000000000000000000000000000000000000009091169063c0db354c9083906044016000604051808303818588803b1580156131da57600080fd5b505af11580156131ee573d6000803e3d6000fd5b50505050505050565b60008361320586858561455f565b1495945050505050565b60008160008151811061322457613224615456565b60200260200101519050919050565b60008160018151811061322457613224615456565b6000610c658260028151811061326057613260615456565b60200260200101516146ab565b61327960036002615ac0565b84146133045760405162461bcd60e51b815260206004820152604e60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b600561331260286001614b56565b61331c9190614b56565b613327906020615779565b82146133a75760405162461bcd60e51b815260206004820152604360248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106a4565b600064ffffffffff82166133bd60286001614b56565b600b901b179050600061340287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061471292505050565b905061344885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508591508690506131f7565b6134ba5760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106a4565b5050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316826001600160401b0316101561356e5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f642e5f74696d657374616d70546f45706f63683a2074696d6560448201527f7374616d70206973206265666f72652067656e6573697300000000000000000060648201526084016106a4565b61357a600c6020615acc565b6135a47f000000000000000000000000000000000000000000000000000000000000000084615730565b610c659190615afb565b6000610c658260078151811061326057613260615456565b60006135de6001600160401b03808416908516615b21565b9392505050565b804710156136355760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106a4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613682576040519150601f19603f3d011682016040523d82523d6000602084013e613687565b606091505b505090508061162a5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106a4565b6000613753826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166149bf9092919063ffffffff16565b80519091501561162a5780806020019051810190613771919061524e565b61162a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a4565b6000610c658261014001516146ab565b6137eb600280615ac0565b831461385f5760405162461bcd60e51b81526020600482015260496024820152600080516020615bd383398151915260448201527f616c3a207769746864726177616c4669656c64732068617320696e636f7272656064820152680c6e840d8cadccee8d60bb1b608482015260a4016106a4565b61386b600d6002615ac0565b61387b60c0840160a08501615b60565b6001600160401b0316106138e55760405162461bcd60e51b815260206004820152603f6024820152600080516020615bd383398151915260448201527f616c3a20626c6f636b526f6f74496e64657820697320746f6f206c617267650060648201526084016106a4565b6138f160046002615ac0565b613902610100840160e08501615b60565b6001600160401b03161061396e576040805162461bcd60e51b8152602060048201526024810191909152600080516020615bd383398151915260448201527f616c3a207769746864726177616c496e64657820697320746f6f206c6172676560648201526084016106a4565b61397a60186002615ac0565b61398a60e0840160c08501615b60565b6001600160401b031610613a045760405162461bcd60e51b81526020600482015260476024820152600080516020615bd383398151915260448201527f616c3a20686973746f726963616c53756d6d617279496e64657820697320746f6064820152666f206c6172676560c81b608482015260a4016106a4565b60006001600160401b038216613a1c612c9d85615883565b6001600160401b031610613a31576005613a34565b60045b9050613a41600482614b56565b613a4c906001614b56565b613a57906020615779565b613a618480615410565b905014613ad55760405162461bcd60e51b81526020600482015260486024820152600080516020615bd383398151915260448201527f616c3a207769746864726177616c50726f6f662068617320696e636f727265636064820152670e840d8cadccee8d60c31b608482015260a4016106a4565b613ae160046003614b56565b613aec906020615779565b613af96040850185615410565b905014613b735760405162461bcd60e51b815260206004820152604e6024820152600080516020615bd383398151915260448201527f616c3a20657865637574696f6e5061796c6f616450726f6f662068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b613b7f60036020615779565b613b8c6020850185615410565b905014613bfa5760405162461bcd60e51b81526020600482015260426024820152600080516020615bd383398151915260448201527f616c3a20736c6f7450726f6f662068617320696e636f7272656374206c656e676064820152610e8d60f31b608482015260a4016106a4565b613c05816020615779565b613c126060850185615410565b905014613c855760405162461bcd60e51b81526020600482015260476024820152600080516020615bd383398151915260448201527f616c3a2074696d657374616d7050726f6f662068617320696e636f7272656374606482015266040d8cadccee8d60cb1b608482015260a4016106a4565b600d613c9360186001614b56565b613c9e906005614b56565b613ca9906001614b56565b613cb39190614b56565b613cbe906020615779565b613ccb6080850185615410565b905014613d545760405162461bcd60e51b81526020600482015260586024820152600080516020615bd383398151915260448201527f616c3a20686973746f726963616c53756d6d617279426c6f636b526f6f74507260648201527f6f6f662068617320696e636f7272656374206c656e6774680000000000000000608482015260a4016106a4565b6000613d6660c0850160a08601615b60565b6001600160401b03166000613d7d600d6001614b56565b613d8d60e0880160c08901615b60565b6001600160401b0316901b600d613da660186001614b56565b613db1906001614b56565b613dbb9190614b56565b601b901b1717179050613e16613dd46080860186615410565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b92505050610100870135846131f7565b613e895760405162461bcd60e51b815260206004820152604a6024820152600080516020615bd383398151915260448201527f616c3a20496e76616c696420686973746f726963616c73756d6d617279206d656064820152693935b63290383937b7b360b11b608482015260a4016106a4565b613ee0613e996020860186615410565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506101008a013593506101208a0135925090506131f7565b613f405760405162461bcd60e51b815260206004820152603d6024820152600080516020615bd383398151915260448201527f616c3a20496e76616c696420736c6f74206d65726b6c652070726f6f6600000060648201526084016106a4565b6049613f98613f526040870187615410565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050610100870135610160880135846131f7565b61400a5760405162461bcd60e51b81526020600482015260496024820152600080516020615bd383398151915260448201527f616c3a20496e76616c696420657865637574696f6e5061796c6f6164206d657260648201526835b63290383937b7b360b91b608482015260a4016106a4565b5061406261401b6060860186615410565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505061016086013561014087013560096131f7565b6140cd5760405162461bcd60e51b81526020600482015260426024820152600080516020615bd383398151915260448201527f616c3a20496e76616c69642074696d657374616d70206d65726b6c652070726f60648201526137b360f11b608482015260a4016106a4565b60006140e0610100860160e08701615b60565b6001600160401b03166140f560046001614b56565b600e901b179050600061413a88888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061471292505050565b905061418a6141498780615410565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505061016088013583856131f7565b6141f65760405162461bcd60e51b81526020600482015260436024820152600080516020615bd383398151915260448201527f616c3a20496e76616c6964207769746864726177616c206d65726b6c6520707260648201526237b7b360e91b608482015260a4016106a4565b505050505050505050565b6000610c658260018151811061326057613260615456565b6000610c658260038151811061326057613260615456565b600060206135a48361012001516146ab565b604080518082019091526000808252602082015260007f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316846001600160401b031611156142ba57507f00000000000000000000000000000000000000000000000000000000000000006142bd565b50825b60408051808201909152600080825260208201526142db8286615730565b6001600160401b0390811682526034805484926000916142fd91859116615b7d565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061432f8285602001516135c6565b602082015260028460600151600281111561434c5761434c614d78565b1461436e576039805490600061436183615ba8565b9091555050600260608501525b600060208086018281528a83526036909152604091829020865181549251938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516929091169190911792909217928316821781556060870151879391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b83600281111561441357614413614d78565b0217905550506040805164ffffffffff8c1681526001600160401b038a8116602083015288168183015290516001600160a01b03891692507fb76a93bb649ece524688f1a01d184e0bbebcda58eae80c28a898bec3fb5a09639181900360600190a298975050505050505050565b60408051808201909152600080825260208201526040805164ffffffffff871681526001600160401b0380871660208301528416918101919091526001600160a01b038416907f8a7335714231dbd551aaba6314f4a97a14c201e53a3e25e1140325cdf67d7a4e9060600160405180910390a2603880548391906000906145129084906001600160401b0316615b7d565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506040518060400160405280836001600160401b0316815260200160008152509050949350505050565b6000835160001415801561457e57506020845161457c9190615708565b155b61460d5760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106a4565b604080516020808201909252848152905b855181116146a157614631600285615708565b614664578151600052808601516020526020826040600060026107d05a03fa61465957600080fd5b60028404935061468f565b8086015160005281516020526020826040600060026107d05a03fa61468857600080fd5b6002840493505b61469a602082614b56565b905061461e565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b60008060028351614723919061571c565b90506000816001600160401b0381111561473f5761473f614f85565b604051908082528060200260200182016040528015614768578160200160208202803683370190505b50905060005b8281101561486f576002856147838383615779565b8151811061479357614793615456565b6020026020010151868360026147a99190615779565b6147b4906001614b56565b815181106147c4576147c4615456565b60200260200101516040516020016147e6929190918252602082015260400190565b60408051601f198184030181529082905261480091615802565b602060405180830381855afa15801561481d573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061484091906153f7565b82828151811061485257614852615456565b602090810291909101015280614867816154dc565b91505061476e565b5061487b60028361571c565b91505b811561499b5760005b828110156149885760028261489c8383615779565b815181106148ac576148ac615456565b6020026020010151838360026148c29190615779565b6148cd906001614b56565b815181106148dd576148dd615456565b60200260200101516040516020016148ff929190918252602082015260400190565b60408051601f198184030181529082905261491991615802565b602060405180830381855afa158015614936573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061495991906153f7565b82828151811061496b5761496b615456565b602090810291909101015280614980816154dc565b915050614887565b5061499460028361571c565b915061487e565b806000815181106149ae576149ae615456565b602002602001015192505050919050565b60606149ce84846000856149d6565b949350505050565b606082471015614a375760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a4565b6001600160a01b0385163b614a8e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a4565b600080866001600160a01b03168587604051614aaa9190615802565b60006040518083038185875af1925050503d8060008114614ae7576040519150601f19603f3d011682016040523d82523d6000602084013e614aec565b606091505b5091509150614afc828286614b07565b979650505050505050565b60608315614b165750816135de565b825115614b265782518084602001fd5b8160405162461bcd60e51b81526004016106a49190615bbf565b634e487b7160e01b600052601160045260246000fd5b60008219821115614b6957614b69614b40565b500190565b6001600160401b0381168114611fb957600080fd5b8035614b8e81614b6e565b919050565b60008060408385031215614ba657600080fd5b823591506020830135614bb881614b6e565b809150509250929050565b600060408284031215614bd557600080fd5b50919050565b60008083601f840112614bed57600080fd5b5081356001600160401b03811115614c0457600080fd5b6020830191508360208260051b8501011115614c1f57600080fd5b9250929050565b60008060008060008060008060a0898b031215614c4257600080fd5b8835614c4d81614b6e565b975060208901356001600160401b0380821115614c6957600080fd5b614c758c838d01614bc3565b985060408b0135915080821115614c8b57600080fd5b614c978c838d01614bdb565b909850965060608b0135915080821115614cb057600080fd5b614cbc8c838d01614bdb565b909650945060808b0135915080821115614cd557600080fd5b50614ce28b828c01614bdb565b999c989b5096995094979396929594505050565b60008083601f840112614d0857600080fd5b5081356001600160401b03811115614d1f57600080fd5b602083019150836020828501011115614c1f57600080fd5b60008060208385031215614d4a57600080fd5b82356001600160401b03811115614d6057600080fd5b614d6c85828601614cf6565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110614dac57634e487b7160e01b600052602160045260246000fd5b9052565b60208101610c658284614d8e565b600060208284031215614dd057600080fd5b5035919050565b60006080820190506001600160401b03808451168352806020850151166020840152806040850151166040840152506060830151614e186060840182614d8e565b5092915050565b600080600080600060608688031215614e3757600080fd5b85356001600160401b0380821115614e4e57600080fd5b614e5a89838a01614cf6565b90975095506020880135915080821115614e7357600080fd5b50614e8088828901614cf6565b96999598509660400135949350505050565b60008060008060008060008060a0898b031215614eae57600080fd5b8835614eb981614b6e565b975060208901356001600160401b0380821115614ed557600080fd5b614ee18c838d01614bdb565b909950975060408b0135915080821115614efa57600080fd5b614f068c838d01614bc3565b965060608b0135915080821115614cb057600080fd5b6001600160a01b0381168114611fb957600080fd5b8035614b8e81614f1c565b60008060408385031215614f4f57600080fd5b8235614f5a81614f1c565b946020939093013593505050565b600060208284031215614f7a57600080fd5b81356135de81614f1c565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b0381118282101715614fbe57614fbe614f85565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614fec57614fec614f85565b604052919050565b60006001600160401b0382111561500d5761500d614f85565b5060051b60200190565b600082601f83011261502857600080fd5b8135602061503d61503883614ff4565b614fc4565b82815260059290921b8401810191818101908684111561505c57600080fd5b8286015b848110156150775780358352918301918301615060565b509695505050505050565b60008060006060848603121561509757600080fd5b83356001600160401b03808211156150ae57600080fd5b818601915086601f8301126150c257600080fd5b813560206150d261503883614ff4565b82815260059290921b8401810191818101908a8411156150f157600080fd5b948201945b8386101561511857853561510981614f1c565b825294820194908201906150f6565b9750508701359250508082111561512e57600080fd5b5061513b86828701615017565b92505061514a60408501614f31565b90509250925092565b60008060008060008060008060008060c08b8d03121561517257600080fd5b61517b8b614b83565b995060208b01356001600160401b038082111561519757600080fd5b6151a38e838f01614bc3565b9a5060408d01359150808211156151b957600080fd5b6151c58e838f01614bdb565b909a50985060608d01359150808211156151de57600080fd5b6151ea8e838f01614bdb565b909850965060808d013591508082111561520357600080fd5b61520f8e838f01614bdb565b909650945060a08d013591508082111561522857600080fd5b506152358d828e01614bdb565b915080935050809150509295989b9194979a5092959850565b60006020828403121561526057600080fd5b815180151581146135de57600080fd5b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b6020808252602f908201527f456967656e506f642e6861734e6576657252657374616b65643a20726573746160408201526e1ada5b99c81a5cc8195b98589b1959608a1b606082015260800190565b60208082526067908201527f456967656e506f642e70726f6f664973466f7256616c696454696d657374616d60408201527f703a20626561636f6e20636861696e2070726f6f66206d75737420626520617460608201527f206f72206166746572206d6f7374526563656e745769746864726177616c546960808201526606d657374616d760cc1b60a082015260c00190565b60006020828403121561540957600080fd5b5051919050565b6000808335601e1984360301811261542757600080fd5b8301803591506001600160401b0382111561544157600080fd5b602001915036819003821315614c1f57600080fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561547e57600080fd5b813564ffffffffff811681146135de57600080fd5b6000808335601e198436030181126154aa57600080fd5b8301803591506001600160401b038211156154c457600080fd5b6020019150600581901b3603821315614c1f57600080fd5b60006000198214156154f0576154f0614b40565b5060010190565b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60005b8381101561558c578181015183820152602001615574565b838111156121445750506000910152565b600081518084526155b5816020860160208601615571565b601f01601f19169290920160200192915050565b6080815260006155dd60808301888a615548565b82810360208401526155ef818861559d565b90508281036040840152615604818688615548565b915050826060830152979650505050505050565b6020815260006149ce602083018486615548565b600080821280156001600160ff1b038490038513161561564e5761564e614b40565b600160ff1b839003841281161561566757615667614b40565b50500190565b60006001600160ff1b038184138284138082168684048611161561569357615693614b40565b600160ff1b60008712828116878305891216156156b2576156b2614b40565b600087129250878205871284841616156156ce576156ce614b40565b878505871281841616156156e4576156e4614b40565b505050929093029392505050565b634e487b7160e01b600052601260045260246000fd5b600082615717576157176156f2565b500690565b60008261572b5761572b6156f2565b500490565b60006001600160401b038381169083168181101561575057615750614b40565b039392505050565b6000823561017e1983360301811261576f57600080fd5b9190910192915050565b600081600019048311821515161561579357615793614b40565b500290565b6000828210156157aa576157aa614b40565b500390565b80516020808301519190811015614bd55760001960209190910360031b1b16919050565b600083516157e5818460208801615571565b6001600160801b0319939093169190920190815260100192915050565b6000825161576f818460208701615571565b600082601f83011261582557600080fd5b81356001600160401b0381111561583e5761583e614f85565b615851601f8201601f1916602001614fc4565b81815284602083860101111561586657600080fd5b816020850160208301376000918101602001919091529392505050565b6000610180823603121561589657600080fd5b61589e614f9b565b82356001600160401b03808211156158b557600080fd5b6158c136838701615814565b835260208501359150808211156158d757600080fd5b6158e336838701615814565b602084015260408501359150808211156158fc57600080fd5b61590836838701615814565b6040840152606085013591508082111561592157600080fd5b61592d36838701615814565b6060840152608085013591508082111561594657600080fd5b5061595336828601615814565b60808301525061596560a08401614b83565b60a082015261597660c08401614b83565b60c082015261598760e08401614b83565b60e082015261010083810135908201526101208084013590820152610140808401359082015261016092830135928101929092525090565b6000602082840312156159d157600080fd5b81516135de81614b6e565b600181815b80851115615a175781600019048211156159fd576159fd614b40565b80851615615a0a57918102915b93841c93908002906159e1565b509250929050565b600082615a2e57506001610c65565b81615a3b57506000610c65565b8160018114615a515760028114615a5b57615a77565b6001915050610c65565b60ff841115615a6c57615a6c614b40565b50506001821b610c65565b5060208310610133831016604e8410600b8410161715615a9a575081810a610c65565b615aa483836159dc565b8060001904821115615ab857615ab8614b40565b029392505050565b60006135de8383615a1f565b60006001600160401b0380831681851681830481118215151615615af257615af2614b40565b02949350505050565b60006001600160401b0380841680615b1557615b156156f2565b92169190910492915050565b60008083128015600160ff1b850184121615615b3f57615b3f614b40565b6001600160ff1b0384018313811615615b5a57615b5a614b40565b50500390565b600060208284031215615b7257600080fd5b81356135de81614b6e565b60006001600160401b03808316818516808303821115615b9f57615b9f614b40565b01949350505050565b600081615bb757615bb7614b40565b506000190190565b6020815260006135de602083018461559d56fe426561636f6e436861696e50726f6f66732e7665726966795769746864726177a2646970667358221220796ba571ed91e7194f05237d358a08c02e76a2e7db5087950235a2ea19a62d0964736f6c634300080c0033","sourceMap":"1902:37246:30:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8569:9;8538:27;;:40;;;;;;;:::i;:::-;;;;-1:-1:-1;;8593:36:30;;8619:9;425:25:178;;8593:36:30;;413:2:178;398:18;8593:36:30;;;;;;;1902:37246;;;;;3474:23;;;;;;;;;;-1:-1:-1;3474:23:30;;;;-1:-1:-1;;;;;3474:23:30;;;;;;-1:-1:-1;;;;;625:32:178;;;607:51;;595:2;580:18;3474:23:30;;;;;;;;19606:296;;;;;;;;;;;;;:::i;:::-;;2886:65;;;;;;;;;;;;;;;3171:63;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1072:31:178;;;1054:50;;1042:2;1027:18;3171:63:30;910:200:178;4389:23:30;;;;;;;;;;-1:-1:-1;4389:23:30;;;;-1:-1:-1;;;4389:23:30;;;;;;;;;1280:14:178;;1273:22;1255:41;;1243:2;1228:18;4389:23:30;1115:187:178;4182:52:30;;;;;;;;;;-1:-1:-1;4182:52:30;;;;-1:-1:-1;;;;;4182:52:30;;;4556:67;;;;;;;;;;-1:-1:-1;4556:67:30;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;15538:2546;;;;;;;;;;-1:-1:-1;15538:2546:30;;;;;:::i;:::-;;:::i;3016:49::-;;;;;;;;;;;;;;;38593:262;;;;;;;;;;-1:-1:-1;38593:262:30;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5125:48::-;;;;;;;;;;-1:-1:-1;5125:48:30;;;;-1:-1:-1;;;;;5125:48:30;;;37891:180;;;;;;;;;;-1:-1:-1;37891:180:30;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;38359:155::-;;;;;;;;;;-1:-1:-1;38359:155:30;;;;;:::i;:::-;38427:16;38462:38;;;:26;:38;;;;;:45;-1:-1:-1;;;38462:45:30;;;;;38359:155;2744:38;;;;;;;;;;;;;;;3972:43;;;;;;;;;;-1:-1:-1;3972:43:30;;;;-1:-1:-1;;;3972:43:30;;-1:-1:-1;;;;;3972:43:30;;;20360:443;;;;;;:::i;:::-;;:::i;9529:1816::-;;;;;;;;;;-1:-1:-1;9529:1816:30;;;;;:::i;:::-;;:::i;38147:206::-;;;;;;;;;;-1:-1:-1;38147:206:30;;;;;:::i;:::-;;:::i;20018:139::-;;;;;;;;;;;;;:::i;21342:772::-;;;;;;;;;;-1:-1:-1;21342:772:30;;;;;:::i;:::-;;:::i;7706:691::-;;;;;;;;;;-1:-1:-1;7706:691:30;;;;;:::i;:::-;;:::i;18867:530::-;;;;;;;;;;-1:-1:-1;18867:530:30;;;;;:::i;:::-;;:::i;12046:2329::-;;;;;;;;;;-1:-1:-1;12046:2329:30;;;;;:::i;:::-;;:::i;18174:604::-;;;;;;;;;;-1:-1:-1;18174:604:30;;;;;:::i;:::-;;:::i;3363:36::-;;;;;;;;;;;;;;;4909:42;;;;;;;;;;;;;;;;;;;425:25:178;;;413:2;398:18;4909:42:30;279:177:178;19606:296:30;6857:49;;-1:-1:-1;;;6857:49:30;;940:1:33;6857:49:30;;;14516:36:178;;;940:1:33;6875:15:30;-1:-1:-1;;;;;6857:42:30;;;;14489:18:178;;6857:49:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6856:50;6835:159;;;;-1:-1:-1;;;6835:159:30;;;;;;;:::i;:::-;;;;;;;;;5554:8:::1;::::0;-1:-1:-1;;;;;5554:8:30::1;5540:10;:22;5532:75;;;;-1:-1:-1::0;;;5532:75:30::1;;;;;;;:::i;:::-;5678:11:::2;::::0;-1:-1:-1;;;5678:11:30;::::2;;;5677:12;5669:72;;;;-1:-1:-1::0;;;5669:72:30::2;;;;;;;:::i;:::-;19780:11:::3;:18:::0;;-1:-1:-1;;;;19780:18:30::3;-1:-1:-1::0;;;19780:18:30::3;::::0;;19842:8:::3;::::0;19808:43:::3;::::0;-1:-1:-1;;;;;19842:8:30::3;19808:33;:43::i;:::-;19886:8;::::0;19867:28:::3;::::0;-1:-1:-1;;;;;19886:8:30;;::::3;::::0;19867:28:::3;::::0;19886:8:::3;::::0;19867:28:::3;19606:296:::0;:::o;15538:2546::-;5554:8;;-1:-1:-1;;;;;5554:8:30;5540:10;:22;5532:75;;;;-1:-1:-1;;;5532:75:30;;;;;;;:::i;:::-;6857:49:::1;::::0;-1:-1:-1;;;6857:49:30;;940:1:33::1;6857:49:30;::::0;::::1;14516:36:178::0;;;940:1:33;6875:15:30::1;-1:-1:-1::0;;;;;6857:42:30::1;::::0;::::1;::::0;14489:18:178;;6857:49:30::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6856:50;6835:159;;;;-1:-1:-1::0;;;6835:159:30::1;;;;;;;:::i;:::-;6210:29:::2;::::0;16054:15;;-1:-1:-1;;;;;;;;6210:29:30;;::::2;::::0;::::2;6197:42:::0;;::::2;;;6176:192;;;;-1:-1:-1::0;;;6176:192:30::2;;;;;;;:::i;:::-;5900:11:::3;::::0;-1:-1:-1;;;5900:11:30;::::3;;;5892:78;;;::::0;-1:-1:-1;;;5892:78:30;;16856:2:178;5892:78:30::3;::::0;::::3;16838:21:178::0;16895:2;16875:18;;;16868:30;16934:34;16914:18;;;16907:62;-1:-1:-1;;;16985:18:178;;;16978:52;17047:19;;5892:78:30::3;16654:418:178::0;5892:78:30::3;16231:55:::0;;::::4;16230:133:::0;::::4;;;-1:-1:-1::0;16308:54:30;;::::4;16230:133;16209:265;;;::::0;-1:-1:-1;;;16209:265:30;;17279:2:178;16209:265:30::4;::::0;::::4;17261:21:178::0;17318:2;17298:18;;;17291:30;17357:34;17337:18;;;17330:62;17428:34;17408:18;;;17401:62;-1:-1:-1;;;17479:19:178;;;17472:52;17541:19;;16209:265:30::4;17077:489:178::0;16209:265:30::4;17033:15;16975:54;2670:9;-1:-1:-1::0;;;;;16975:54:30;::::4;;:::i;:::-;:73;;16954:196;;;::::0;-1:-1:-1;;;16954:196:30;;17773:2:178;16954:196:30::4;::::0;::::4;17755:21:178::0;17812:2;17792:18;;;17785:30;17851:34;17831:18;;;17824:62;17922:34;17902:18;;;17895:62;-1:-1:-1;;;17973:19:178;;;17966:43;18026:19;;16954:196:30::4;17571:480:178::0;16954:196:30::4;17328:56;::::0;-1:-1:-1;;;17328:56:30;;-1:-1:-1;;;;;1072:31:178;;17328:56:30::4;::::0;::::4;1054:50:178::0;17241:265:30::4;::::0;17328:15:::4;-1:-1:-1::0;;;;;17328:39:30::4;::::0;::::4;::::0;1027:18:178;;17328:56:30::4;;;;;;;;;;;;;;;;;::::0;::::4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17415:30:::0;::::4;17475:20;;::::0;::::4;17415:14:::0;17475:20:::4;:::i;:::-;17241:55;:265::i;:::-;17517:34;::::0;17561:347:::4;17581:27:::0;;::::4;17561:347;;;17659:238;17705:15:::0;17738:30;::::4;17786:16:::0;;17803:1;17786:19;;::::4;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;17823:21;;17845:1;17823:24;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;17865:15;;17881:1;17865:18;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;17659:28;:238::i;:::-;17629:268;::::0;;::::4;:::i;:::-;::::0;-1:-1:-1;17610:3:30;::::4;::::0;::::4;:::i;:::-;;;;17561:347;;;-1:-1:-1::0;18032:8:30::4;::::0;17982:95:::4;::::0;-1:-1:-1;;;17982:95:30;;-1:-1:-1;;;;;18032:8:30;;::::4;17982:95;::::0;::::4;20048:51:178::0;20115:18;;;20108:34;;;17982:15:30::4;:49:::0;;::::4;::::0;::::4;::::0;20021:18:178;;17982:95:30::4;;;;;;;;;;;;;;;;;::::0;::::4;;;;;;;;;;;;::::0;::::4;;;;;;;;;16199:1885;7004:1:::2;5617::::1;15538:2546:::0;;;;;;;;:::o;38593:262::-;38673:16;38701:27;38731:46;38761:15;;38731:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38731:29:30;;-1:-1:-1;;;38731:46:30:i;:::-;38794:47;;;;:26;:47;;;;;:54;-1:-1:-1;;;38794:54:30;;;;;-1:-1:-1;;38593:262:30;;;;;:::o;37891:180::-;37978:20;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37978:20:30;38017:47;;;;:26;:47;;;;;;;;;38010:54;;;;;;;;;-1:-1:-1;;;;;38010:54:30;;;;;-1:-1:-1;;;38010:54:30;;;;;;;;;;;-1:-1:-1;;;38010:54:30;;;;;;;;;;;;38017:47;38010:54;;;;-1:-1:-1;;;38010:54:30;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;-1:-1:-1;38010:54:30;37891:180;-1:-1:-1;;37891:180:30:o;20360:443::-;5377:10;-1:-1:-1;;;;;5399:15:30;5377:38;;5369:100;;;;-1:-1:-1;;;5369:100:30;;;;;;;:::i;:::-;20559:9:::1;20572:8;20559:21;20551:102;;;::::0;-1:-1:-1;;;20551:102:30;;20773:2:178;20551:102:30::1;::::0;::::1;20755:21:178::0;20812:2;20792:18;;;20785:30;;;20851:34;20831:18;;;20824:62;20922:34;20902:18;;;20895:62;-1:-1:-1;;;20973:19:178;;;20966:35;21018:19;;20551:102:30::1;20571:472:178::0;20551:102:30::1;20663:6;-1:-1:-1::0;;;;;20663:14:30::1;;20685:8;20695:6;;20703:27;:25;:27::i;:::-;20732:9;;20743:15;20663:96;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;20774:22;20789:6;;20774:22;;;;;;;:::i;:::-;;;;;;;;20360:443:::0;;;;;:::o;9529:1816::-;6857:49;;-1:-1:-1;;;6857:49:30;;1150:1:33;6857:49:30;;;14516:36:178;;;1150:1:33;6875:15:30;-1:-1:-1;;;;;6857:42:30;;;;14489:18:178;;6857:49:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6856:50;6835:159;;;;-1:-1:-1;;;6835:159:30;;;;;;;:::i;:::-;9900:55;;::::1;9899:133:::0;::::1;;;-1:-1:-1::0;9977:54:30;;::::1;9899:133;9878:258;;;::::0;-1:-1:-1;;;9878:258:30;;22964:2:178;9878:258:30::1;::::0;::::1;22946:21:178::0;23003:2;22983:18;;;22976:30;23042:34;23022:18;;;23015:62;23113:34;23093:18;;;23086:62;-1:-1:-1;;;23164:19:178;;;23157:45;23219:19;;9878:258:30::1;22762:482:178::0;9878:258:30::1;10325:15;10267:54;2670:9;-1:-1:-1::0;;;;;10267:54:30;::::1;;:::i;:::-;:73;;10246:189;;;::::0;-1:-1:-1;;;10246:189:30;;23451:2:178;10246:189:30::1;::::0;::::1;23433:21:178::0;23490:2;23470:18;;;23463:30;23529:34;23509:18;;;23502:62;23600:34;23580:18;;;23573:62;-1:-1:-1;;;23651:19:178;;;23644:36;23697:19;;10246:189:30::1;23249:473:178::0;10246:189:30::1;10613:56;::::0;-1:-1:-1;;;10613:56:30;;-1:-1:-1;;;;;1072:31:178;;10613:56:30::1;::::0;::::1;1054:50:178::0;10526:265:30::1;::::0;10613:15:::1;-1:-1:-1::0;;;;;10613:39:30::1;::::0;::::1;::::0;1027:18:178;;10613:56:30::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10700:30:::0;::::1;10760:20;;::::0;::::1;10700:14:::0;10760:20:::1;:::i;10526:265::-;10802:22;::::0;10834:397:::1;10854:27:::0;;::::1;10834:397;;;10921:299;10959:15;10992:16;;11009:1;10992:19;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;11029:30:::0;::::1;11077:21:::0;;11099:1;11077:24;;::::1;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;11188:15;;11204:1;11188:18;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;10921:20;:299::i;:::-;10902:318;::::0;;::::1;:::i;:::-;::::0;-1:-1:-1;10883:3:30;::::1;::::0;::::1;:::i;:::-;;;;10834:397;;;-1:-1:-1::0;11290:8:30::1;::::0;-1:-1:-1;;;;;11240:15:30::1;:49:::0;::::1;::::0;::::1;::::0;11290:8:::1;11300:37;2294:3;11300:15:::0;:37:::1;:::i;:::-;11240:98;::::0;-1:-1:-1;;;;;;11240:98:30::1;::::0;;;;;;-1:-1:-1;;;;;20066:32:178;;;11240:98:30::1;::::0;::::1;20048:51:178::0;20115:18;;;20108:34;20021:18;;11240:98:30::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9868:1477;9529:1816:::0;;;;;;;;;:::o;38147:206::-;38233:20;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38233:20:30;38272:26;:74;38299:46;38329:15;;38299:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38299:29:30;;-1:-1:-1;;;38299:46:30:i;:::-;38272:74;;;;;;;;;;;;;;-1:-1:-1;38272:74:30;38265:81;;;;;;;;;-1:-1:-1;;;;;38265:81:30;;;;;-1:-1:-1;;;38265:81:30;;;;;;;;;;;-1:-1:-1;;;38265:81:30;;;;;;;;;;;;;;;;;;-1:-1:-1;;;38265:81:30;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;-1:-1:-1;38265:81:30;38147:206;-1:-1:-1;;;38147:206:30:o;20018:139::-;5554:8;;-1:-1:-1;;;;;5554:8:30;5540:10;:22;5532:75;;;;-1:-1:-1;;;5532:75:30;;;;;;;:::i;:::-;5678:11:::1;::::0;-1:-1:-1;;;5678:11:30;::::1;;;5677:12;5669:72;;;;-1:-1:-1::0;;;5669:72:30::1;;;;;;;:::i;:::-;20141:8:::2;::::0;20107:43:::2;::::0;-1:-1:-1;;;;;20141:8:30::2;20107:33;:43::i;:::-;20018:139::o:0;21342:772::-;5377:10;-1:-1:-1;;;;;5399:15:30;5377:38;;5369:100;;;;-1:-1:-1;;;5369:100:30;;;;;;;:::i;:::-;21480:23:::1;2294:3;21480:9:::0;:23:::1;:::i;:::-;:28:::0;21459:153:::1;;;::::0;-1:-1:-1;;;21459:153:30;;25006:2:178;21459:153:30::1;::::0;::::1;24988:21:178::0;25045:2;25025:18;;;25018:30;25084:34;25064:18;;;25057:62;25155:34;25135:18;;;25128:62;-1:-1:-1;;;25206:19:178;;;25199:45;25261:19;;21459:153:30::1;24804:482:178::0;21459:153:30::1;21622:17;21649:23;2294:3;21649:9:::0;:23:::1;:::i;:::-;21718:38;::::0;21622:51;;-1:-1:-1;;;;;;21718:38:30;;::::1;21704:52:::0;;::::1;;;21683:197;;;::::0;-1:-1:-1;;;21683:197:30;;25618:2:178;21683:197:30::1;::::0;::::1;25600:21:178::0;25657:2;25637:18;;;25630:30;25696:34;25676:18;;;25669:62;25767:34;25747:18;;;25740:62;25839:34;25818:19;;;25811:63;-1:-1:-1;;;25890:19:178;;;25883:33;25933:19;;21683:197:30::1;25416:542:178::0;21683:197:30::1;21890:38;:52:::0;;21932:10;;21890:38;::::1;::::0;:52:::1;::::0;21932:10;;-1:-1:-1;;;;;21890:52:30::1;;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;21890:52:30::1;;;;;-1:-1:-1::0;;;;;21890:52:30::1;;;;;;21989:9;-1:-1:-1::0;;;;;21957:53:30::1;;22000:9;21957:53;;;;425:25:178::0;;413:2;398:18;;279:177;21957:53:30::1;;;;;;;;22077:30;22086:9;22097;22077:8;:30::i;:::-;21449:665;21342:772:::0;;:::o;7706:691::-;3111:19:59;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:59;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:59;1476:19:61;:23;;;3219:66:59;;-1:-1:-1;3268:12:59;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:59;;26399:2:178;3157:201:59;;;26381:21:178;26438:2;26418:18;;;26411:30;26477:34;26457:18;;;26450:62;-1:-1:-1;;;26528:18:178;;;26521:44;26582:19;;3157:201:59;26197:410:178;3157:201:59;3368:12;:16;;-1:-1:-1;;3368:16:59;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:59;;;;;3394:65;-1:-1:-1;;;;;7784:23:30;::::1;7776:88;;;::::0;-1:-1:-1;;;7776:88:30;;26814:2:178;7776:88:30::1;::::0;::::1;26796:21:178::0;26853:2;26833:18;;;26826:30;26892:34;26872:18;;;26865:62;-1:-1:-1;;;26943:18:178;;;26936:50;27003:19;;7776:88:30::1;26612:416:178::0;7776:88:30::1;7874:8;:20:::0;;-1:-1:-1;;;;;7874:20:30;::::1;-1:-1:-1::0;;;;;;7874:20:30;;::::1;::::0;::::1;::::0;;;8329:11:::1;:18:::0;;-1:-1:-1;;;;8329:18:30::1;-1:-1:-1::0;;;8329:18:30::1;::::0;;8362:28:::1;::::0;::::1;::::0;7874:8:::1;::::0;8362:28:::1;3483:14:59::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;3513:21:59;;;3553:14;;-1:-1:-1;14516:36:178;;3553:14:59;;14504:2:178;14489:18;3553:14:59;;;;;;;3479:99;3101:483;7706:691:30;:::o;18867:530::-;5554:8;;-1:-1:-1;;;;;5554:8:30;5540:10;:22;5532:75;;;;-1:-1:-1;;;5532:75:30;;;;;;;:::i;:::-;6857:49:::1;::::0;-1:-1:-1;;;6857:49:30;;1514:1:33::1;6857:49:30;::::0;::::1;14516:36:178::0;;;1514:1:33;6875:15:30::1;-1:-1:-1::0;;;;;6857:42:30::1;::::0;::::1;::::0;14489:18:178;;6857:49:30::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6856:50;6835:159;;;;-1:-1:-1::0;;;6835:159:30::1;;;;;;;:::i;:::-;19126:17:::2;:24;19106:9;:16;:44;19085:166;;;::::0;-1:-1:-1;;;19085:166:30;;27434:2:178;19085:166:30::2;::::0;::::2;27416:21:178::0;27473:2;27453:18;;;27446:30;27512:34;27492:18;;;27485:62;27583:34;27563:18;;;27556:62;-1:-1:-1;;;27634:19:178;;;27627:42;27686:19;;19085:166:30::2;27232:479:178::0;19085:166:30::2;19266:9;19261:130;19285:9;:16;19281:1;:20;19261:130;;;19322:58;19348:9;19359:17;19377:1;19359:20;;;;;;;;:::i;:::-;;;;;;;19322:9;19332:1;19322:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;19322:25:30::2;;;:58;;;;;:::i;:::-;19303:3:::0;::::2;::::0;::::2;:::i;:::-;;;;19261:130;;;;5617:1:::1;18867:530:::0;;;:::o;12046:2329::-;6857:49;;-1:-1:-1;;;6857:49:30;;1368:1:33;6857:49:30;;;14516:36:178;;;1368:1:33;6875:15:30;-1:-1:-1;;;;;6857:42:30;;;;14489:18:178;;6857:49:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6856:50;6835:159;;;;-1:-1:-1;;;6835:159:30;;;;;;;:::i;:::-;12494:54;;::::1;12493:133:::0;::::1;;;-1:-1:-1::0;12570:55:30;;::::1;12493:133;:205;;;;-1:-1:-1::0;12647:50:30;;::::1;12493:205;12472:316;;;::::0;;-1:-1:-1;;;12472:316:30;;27918:2:178;12472:316:30::1;::::0;::::1;27900:21:178::0;27937:18;;;27930:30;;;;27996:34;27976:18;;;27969:62;28067:34;28047:18;;;28040:62;28119:19;;12472:316:30::1;27716:428:178::0;12472:316:30::1;12966:56;::::0;-1:-1:-1;;;12966:56:30;;-1:-1:-1;;;;;1072:31:178;;12966:56:30::1;::::0;::::1;1054:50:178::0;12879:265:30::1;::::0;12966:15:::1;-1:-1:-1::0;;;;;12966:39:30::1;::::0;::::1;::::0;1027:18:178;;12966:56:30::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13053:30:::0;::::1;13113:20;;::::0;::::1;13053:14:::0;13113:20:::1;:::i;12879:265::-;-1:-1:-1::0;;;;;;;;;;;;;;;;;13213:9:30::1;13208:540;13228:27:::0;;::::1;13208:540;;;13276:44;13323:241;13368:30:::0;::::1;13416:16:::0;;13433:1;13416:19;;::::1;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;13453:21;;13475:1;13453:24;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;13495:15;;13511:1;13495:18;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;13531:16;;13548:1;13531:19;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;13323:27;:241::i;:::-;13617:35:::0;;13579:73;;13276:288;;-1:-1:-1;13617:35:30;13579:17;;:73:::1;::::0;13617:35;;13579:73:::1;:::i;:::-;::::0;;-1:-1:-1;13703:34:30::1;::::0;;::::1;::::0;13666:33;;::::1;:71:::0;;::::1;::::0;13703:34;;13666:71:::1;:::i;:::-;::::0;;-1:-1:-1;13257:3:30;;-1:-1:-1;13257:3:30::1;::::0;::::1;:::i;:::-;;;;13208:540;;;-1:-1:-1::0;13892:34:30;;:39;13888:158:::1;;13976:8;::::0;13986:34;;13947:88:::1;::::0;-1:-1:-1;;;;;13976:8:30::1;::::0;13986:48:::1;::::0;2294:3:::1;::::0;13986:48:::1;:::i;:::-;13947:28;:88::i;:::-;14158:33;::::0;::::1;::::0;:38;14154:215:::1;;14279:8;::::0;14289:33:::1;::::0;::::1;::::0;-1:-1:-1;;;;;14212:15:30::1;:49:::0;::::1;::::0;::::1;::::0;14279:8;::::1;::::0;14289:55:::1;::::0;2294:3:::1;::::0;14289:55:::1;:::i;:::-;14212:146;::::0;-1:-1:-1;;;;;;14212:146:30::1;::::0;;;;;;-1:-1:-1;;;;;20066:32:178;;;14212:146:30::1;::::0;::::1;20048:51:178::0;20115:18;;;20108:34;20021:18;;14212:146:30::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14154:215;12462:1913;12046:2329:::0;;;;;;;;;;;:::o;18174:604::-;5554:8;;-1:-1:-1;;;;;5554:8:30;5540:10;:22;5532:75;;;;-1:-1:-1;;;5532:75:30;;;;;;;:::i;:::-;6857:49:::1;::::0;-1:-1:-1;;;6857:49:30;;1514:1:33::1;6857:49:30;::::0;::::1;14516:36:178::0;;;1514:1:33;6875:15:30::1;-1:-1:-1::0;;;;;6857:42:30::1;::::0;::::1;::::0;14489:18:178;;6857:49:30::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6856:50;6835:159;;;;-1:-1:-1::0;;;6835:159:30::1;;;;;;;:::i;:::-;18418:27:::2;;18398:16;:47;;18377:200;;;::::0;-1:-1:-1;;;18377:200:30;;28862:2:178;18377:200:30::2;::::0;::::2;28844:21:178::0;28901:3;28881:18;;;28874:31;28941:34;28921:18;;;28914:62;29012:34;28992:18;;;28985:62;29084:34;29063:19;;;29056:63;-1:-1:-1;;;29135:19:178;;;29128:41;29186:19;;18377:200:30::2;28660:551:178::0;18377:200:30::2;18618:16;18587:27;;:47;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;18649:55:30::2;::::0;425:25:178;;;-1:-1:-1;;;;;18649:55:30;::::2;::::0;::::2;::::0;413:2:178;398:18;18649:55:30::2;;;;;;;18714:57;18743:9;18754:16;18714:28;:57::i;35764:256::-:0;35845:29;:55;;-1:-1:-1;;;;35845:55:30;35884:15;35845:55;;-1:-1:-1;;;35845:55:30;;;;-1:-1:-1;35910:27:30;:31;35951:62;35980:9;35991:21;35951:28;:62::i;:::-;35764:256;:::o;6891:805:21:-;7119:44;762:1;7119:2;:44;:::i;:::-;7094:69;;7073:199;;;;-1:-1:-1;;;7073:199:21;;29548:2:178;7073:199:21;;;29530:21:178;29587:2;29567:18;;;29560:30;29626:34;29606:18;;;29599:62;29697:34;29677:18;;;29670:62;-1:-1:-1;;;29748:19:178;;;29741:50;29808:19;;7073:199:21;29346:487:178;7073:199:21;7359:202;7413:14;;7359:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7451:15:21;;-1:-1:-1;7490:15:21;;-1:-1:-1;2305:1:21;;-1:-1:-1;7359:28:21;:202::i;:::-;7338:351;;;;-1:-1:-1;;;7338:351:21;;30040:2:178;7338:351:21;;;30022:21:178;30079:3;30059:18;;;30052:31;30119:34;30099:18;;;30092:62;30190:34;30170:18;;;30163:62;30262:34;30241:19;;;30234:63;-1:-1:-1;;;30313:19:178;;;30306:37;30360:19;;7338:351:21;29838:547:178;7338:351:21;6891:805;;;;:::o;22723:3072:30:-;22970:7;22989:27;23019:31;:15;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23019:29:30;;-1:-1:-1;;;23019:31:30:i;:::-;23060:34;23097:47;;;:26;:47;;;;;;;;23060:84;;;;;;;;;-1:-1:-1;;;;;23060:84:30;;;;;-1:-1:-1;;;23060:84:30;;;;;;;;;;;-1:-1:-1;;;23060:84:30;;;;;;;;;;;;23097:47;;-1:-1:-1;23060:34:30;;23097:47;23060:84;;;;-1:-1:-1;;;23060:84:30;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;-1:-1:-1;23060:84:30;-1:-1:-1;23291:25:30;23267:13;:20;;;:49;;;;;;;;:::i;:::-;;23246:199;;;;-1:-1:-1;;;23246:199:30;;30592:2:178;23246:199:30;;;30574:21:178;30631:3;30611:18;;;30604:31;30671:34;30651:18;;;30644:62;30742:34;30722:18;;;30715:62;30814:34;30793:19;;;30786:63;-1:-1:-1;;;30865:19:178;;;30858:38;30913:19;;23246:199:30;30390:548:178;23246:199:30;23625:27;:25;:27::i;:::-;23617:36;;;:::i;:::-;23571:42;:15;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23571:40:30;;-1:-1:-1;;;23571:42:30:i;:::-;:82;23550:204;;;;-1:-1:-1;;;23550:204:30;;31447:2:178;23550:204:30;;;31429:21:178;31486:2;31466:18;;;31459:30;31525:34;31505:18;;;31498:62;31596:34;31576:18;;;31569:62;-1:-1:-1;;;31647:19:178;;;31640:42;31699:19;;23550:204:30;31245:479:178;23550:204:30;24475:36;24514:41;:15;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24514:39:30;;-1:-1:-1;;;24514:41:30:i;:::-;24475:80;;24644:243;24715:15;24761;;24812:20;;24862:14;24644:39;:243::i;:::-;25005:20;:22;;;:20;:22;;;:::i;:::-;;;;-1:-1:-1;;25060:23:30;25037:20;;;:46;25093:45;;;;;-1:-1:-1;;;;;25148:64:30;;;:46;;;:64;25259:39;25227:71;;;;;;25223:273;;;-1:-1:-1;;;;;25350:39:30;25314:75;:33;;;:75;25223:273;;;-1:-1:-1;;;;;25420:65:30;;:33;;;:65;25223:273;25505:47;;;;:26;:47;;;;;;;;;:63;;;;;;;;;;;;-1:-1:-1;;;;;25505:63:30;;;-1:-1:-1;;;25505:63:30;-1:-1:-1;;;;25505:63:30;;;-1:-1:-1;;;25505:63:30;-1:-1:-1;;;;;;25505:63:30;;;;;;;;;;;;;;;;;;;;;;;25555:13;;25505:47;;:63;;:47;;-1:-1:-1;;;;25505:63:30;-1:-1:-1;;;;25505:63:30;;;;-1:-1:-1;;;25505:63:30;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;25584:33:30;;31903:12:178;31891:25;;31873:44;;25584:33:30;;-1:-1:-1;31861:2:178;31846:18;25584:33:30;;;;;;;25632:91;25656:14;25672:15;25689:13;:33;;;25632:91;;;;;;;32154:12:178;32142:25;;;;32124:44;;-1:-1:-1;;;;;32241:15:178;;;32236:2;32221:18;;32214:43;32293:15;32288:2;32273:18;;32266:43;32112:2;32097:18;;31928:387;25632:91:30;;;;;;;;2294:3;25741:13;:33;;;-1:-1:-1;;;;;25741:47:30;;;;;:::i;:::-;25734:54;22723:3072;-1:-1:-1;;;;;;;;;;;22723:3072:30:o;36603:300::-;36695:7;36722:15;:22;36748:2;36722:28;36714:112;;;;-1:-1:-1;;;36714:112:30;;32522:2:178;36714:112:30;;;32504:21:178;32561:2;32541:18;;;32534:30;32600:34;32580:18;;;32573:62;32671:34;32651:18;;;32644:62;-1:-1:-1;;;32722:19:178;;;32715:38;32770:19;;36714:112:30;32320:475:178;36714:112:30;36850:45;;36843:53;;36850:45;;36867:15;;36892:1;;36850:45;;;:::i;:::-;;;;-1:-1:-1;;36850:45:30;;;;;;;;;;36843:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;36356:159::-;36447:61;;;-1:-1:-1;;;36447:61:30;;;33681:39:178;36490:1:30;33736:11:178;;;33729:68;36502:4:30;36416:12;33831:15:178;;;-1:-1:-1;;33827:53:178;33813:12;;;33806:75;36416:12:30;33897::178;36447:61:30;;;;;;;;;;;;36440:68;;36356:159;:::o;25801:3159::-;26040:22;26074:36;26113:41;:15;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26113:39:30;;-1:-1:-1;;;26113:41:30:i;:::-;26074:80;;26164:27;26194:31;:15;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26194:29:30;;-1:-1:-1;;;26194:31:30:i;:::-;26235:34;26272:47;;;:26;:47;;;;;;;;26235:84;;;;;;;;;-1:-1:-1;;;;;26235:84:30;;;;;-1:-1:-1;;;26235:84:30;;;;;;;;;;;-1:-1:-1;;;26235:84:30;;;;;;;;;;;;26272:47;;-1:-1:-1;26235:34:30;;26272:47;26235:84;;;;-1:-1:-1;;;26235:84:30;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;26480:15;-1:-1:-1;;;;;26431:64:30;:13;:46;;;-1:-1:-1;;;;;26431:64:30;;26410:203;;;;-1:-1:-1;;;26410:203:30;;34122:2:178;26410:203:30;;;34104:21:178;34161:2;34141:18;;;34134:30;34200:34;34180:18;;;34173:62;34271:34;34251:18;;;34244:62;34343:30;34322:19;;;34315:59;34391:19;;26410:203:30;33920:496:178;26410:203:30;26734:23;26710:13;:20;;;:47;;;;;;;;:::i;:::-;;26702:110;;;;-1:-1:-1;;;26702:110:30;;34623:2:178;26702:110:30;;;34605:21:178;34662:2;34642:18;;;34635:30;34701:34;34681:18;;;34674:62;-1:-1:-1;;;34752:18:178;;;34745:48;34810:19;;26702:110:30;34421:414:178;26702:110:30;27154:34;27172:15;27154:17;:34::i;:::-;-1:-1:-1;;;;;27112:76:30;:38;:15;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27112:36:30;;-1:-1:-1;;;27112:38:30:i;:::-;-1:-1:-1;;;;;27112:76:30;;27108:276;;27261:1;27229:29;-1:-1:-1;;;;;27229:33:30;;27204:169;;;;-1:-1:-1;;;27204:169:30;;35042:2:178;27204:169:30;;;35024:21:178;35081:2;35061:18;;;35054:30;35120:34;35100:18;;;35093:62;35191:34;35171:18;;;35164:62;-1:-1:-1;;;35242:19:178;;;35235:44;35296:19;;27204:169:30;34840:481:178;27204:169:30;27472:243;27543:15;27589;;27640:20;;27690:14;27472:39;:243::i;:::-;27869:33;;;;27833;-1:-1:-1;;;;;27987:39:30;27955:71;;;;;;27951:251;;;-1:-1:-1;28067:39:30;27951:251;;;-1:-1:-1;28162:29:30;27951:251;-1:-1:-1;;;;;28282:58:30;;;:33;;;;:58;;;28350:64;;;:46;;;;:64;;;-1:-1:-1;28424:47:30;;;:26;:47;;;;;;:63;;;;;;;;;;-1:-1:-1;;;28424:63:30;-1:-1:-1;;;;28424:63:30;;;-1:-1:-1;;;28424:63:30;-1:-1:-1;;;;;;28424:63:30;;;;;;;;;;;;;;;;;;;;;;;28282:13;;28424:63;;:47;;-1:-1:-1;;;;28424:63:30;-1:-1:-1;;;;28424:63:30;;;;-1:-1:-1;;;28424:63:30;;;;;;;;;:::i;:::-;;;;;;;;;28627:26;-1:-1:-1;;;;;28601:52:30;:22;-1:-1:-1;;;;;28601:52:30;;28597:357;;28674:80;28698:14;28714:15;28731:22;28674:80;;;;;;;32154:12:178;32142:25;;;;32124:44;;-1:-1:-1;;;;;32241:15:178;;;32236:2;32221:18;;32214:43;32293:15;32288:2;32273:18;;32266:43;32112:2;32097:18;;31928:387;28674:80:30;;;;;;;;28787:156;28842:22;28902:26;28787:21;:156::i;:::-;28769:174;;28597:357;26064:2896;;;;;25801:3159;;;;;;;;;:::o;36026:130::-;36101:48;36127:9;36139;36101:17;:48::i;763:175:86:-;872:58;;;-1:-1:-1;;;;;20066:32:178;;872:58:86;;;20048:51:178;20115:18;;;;20108:34;;;872:58:86;;;;;;;;;;20021:18:178;;;;872:58:86;;;;;;;;-1:-1:-1;;;;;872:58:86;-1:-1:-1;;;872:58:86;;;845:86;;865:5;;845:19;:86::i;28966:3836:30:-;-1:-1:-1;;;;;;;;;;;;;;;;;30167:40:30;:38;:15;:38;:::i;:::-;;:40::i;:::-;6210:29;;-1:-1:-1;;;;;;;;6210:29:30;;;;;6197:42;;;;;6176:192;;;;-1:-1:-1;;;6176:192:30;;;;;;;:::i;:::-;30267:26:::1;30296:40;:38;:15:::0;:38:::1;:::i;:40::-;30267:69;;30346:27;30376:31;:15;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;30376:29:30::1;::::0;-1:-1:-1;;;30376:31:30:i:1;:::-;30346:61:::0;-1:-1:-1;30724:25:30::1;30666:47:::0;;;;:26:::1;:47;::::0;;;;:54;-1:-1:-1;;;30666:54:30;::::1;;;:83;::::0;::::1;;;;;;:::i;:::-;;;30645:246;;;::::0;-1:-1:-1;;;30645:246:30;;38129:2:178;30645:246:30::1;::::0;::::1;38111:21:178::0;38168:3;38148:18;;;38141:31;38208:34;38188:18;;;38181:62;38279:34;38259:18;;;38252:62;38351:34;38330:19;;;38323:63;-1:-1:-1;;;38402:19:178;;;38395:51;38463:19;;30645:246:30::1;37927:561:178::0;30645:246:30::1;30985:37;::::0;;;:16:::1;:37;::::0;;;;;;;-1:-1:-1;;;;;30985:58:30;::::1;::::0;;;;;;;;::::1;;30984:59;30963:197;;;::::0;-1:-1:-1;;;30963:197:30;;38695:2:178;30963:197:30::1;::::0;::::1;38677:21:178::0;38734:2;38714:18;;;38707:30;38773:34;38753:18;;;38746:62;38844:34;38824:18;;;38817:62;38916:29;38895:19;;;38888:58;38963:19;;30963:197:30::1;38493:495:178::0;30963:197:30::1;31232:4;31171:16;:37;31188:19;31171:37;;;;;;;;;;;:58;31209:19;-1:-1:-1::0;;;;;31171:58:30::1;-1:-1:-1::0;;;;;31171:58:30::1;;;;;;;;;;;;;:65;;;;;;;;;;;;;;;;;;31317:256;31383:15;31430:16;;31477:15;31526;-1:-1:-1::0;;;;;31526:34:30::1;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31317:34;:256::i;:::-;31584:21;31608:36;:16;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;31608:34:30::1;::::0;-1:-1:-1;;;31608:36:30:i:1;:::-;31584:60;;31733:243;31804:15;31850;;31901:20;;31951:14;31733:39;:243::i;:::-;31987:27;32017:42;:16;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;32017:40:30::1;::::0;-1:-1:-1;;;32017:42:30:i:1;:::-;31987:72;;32321:38;:15;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;32321:36:30::1;::::0;-1:-1:-1;;;32321:38:30:i:1;:::-;-1:-1:-1::0;;;;;32281:78:30::1;:36;:34;:15:::0;:34:::1;:::i;:::-;;:36::i;:::-;-1:-1:-1::0;;;;;32281:78:30::1;;32277:519;;32528:8;::::0;::::1;32592:47:::0;;;:26:::1;:47;::::0;;;;;;;;32382:271;;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;32382:271:30;;::::1;::::0;;-1:-1:-1;;;32382:271:30;::::1;::::0;::::1;::::0;;::::1;::::0;;;;-1:-1:-1;;;32382:271:30;::::1;::::0;;::::1;::::0;;;;;;;::::1;::::0;32422:14;;32592:47;;32491:19;;-1:-1:-1;;;;;32528:8:30;;::::1;::::0;32554:20;;32382:271;;;;;-1:-1:-1;;;32382:271:30;::::1;;;;::::0;::::1;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;::::0;;-1:-1:-1;32382:22:30::1;:271::i;:::-;32375:278;;;;;;;;32277:519;32754:8;::::0;32691:94:::1;::::0;32717:14;;32733:19;;-1:-1:-1;;;;;32754:8:30::1;32764:20:::0;32691:25:::1;:94::i;6378:1::-;28966:3836:::0;;;;;;;;;;;:::o;36162:188::-;36323:8;;36257:86;;-1:-1:-1;;;36257:86:30;;-1:-1:-1;;;;;36323:8:30;;;36257:86;;;39459:34:178;39529:15;;;39509:18;;;39502:43;36257:23:30;:47;;;;;;36312:9;;39394:18:178;;36257:86:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36162:188;;:::o;3523:230:25:-;3664:4;3742;3691:47;3719:5;3726:4;3732:5;3691:27;:47::i;:::-;:55;;3523:230;-1:-1:-1;;;;;3523:230:25:o;15907:152:21:-;15987:7;16013:15;2770:1;16013:39;;;;;;;;:::i;:::-;;;;;;;16006:46;;15907:152;;;:::o;16065:179::-;16156:7;16182:15;2844:1;16182:55;;;;;;;;:::i;16330:193::-;16420:6;16445:71;16475:15;2903:1;16475:40;;;;;;;;:::i;:::-;;;;;;;16445:29;:71::i;4986:1501::-;5247:32;965:1;5247;:32;:::i;:::-;5221:58;;5200:183;;;;-1:-1:-1;;;5200:183:21;;41132:2:178;5200:183:21;;;41114:21:178;41171:2;41151:18;;;41144:30;41210:34;41190:18;;;41183:62;41281:34;41261:18;;;41254:62;-1:-1:-1;;;41332:19:178;;;41325:45;41387:19;;5200:183:21;40930:482:178;5200:183:21;901:1;5687:25;1763:2;5711:1;5687:25;:::i;:::-;5686:60;;;;:::i;:::-;5680:67;;:2;:67;:::i;:::-;5649:98;;5628:212;;;;-1:-1:-1;;;5628:212:21;;41619:2:178;5628:212:21;;;41601:21:178;41658:2;41638:18;;;41631:30;41697:34;41677:18;;;41670:62;41768:34;41748:18;;;41741:62;-1:-1:-1;;;41819:19:178;;;41812:34;41863:19;;5628:212:21;41417:471:178;5628:212:21;5850:13;5927:23;;;5897:25;1763:2;5921:1;5897:25;:::i;:::-;2535:2;5867:56;;5866:84;5850:100;;6026:21;6050:39;6073:15;;6050:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6050:22:21;;-1:-1:-1;;;6050:39:21:i;:::-;6026:63;;6198:195;6252:20;;6198:195;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6296:15:21;;-1:-1:-1;6335:13:21;;-1:-1:-1;6373:5:21;;-1:-1:-1;6198:28:21;:195::i;:::-;6177:303;;;;-1:-1:-1;;;6177:303:21;;42095:2:178;6177:303:21;;;42077:21:178;42134:2;42114:18;;;42107:30;42173:34;42153:18;;;42146:62;42244:31;42224:18;;;42217:59;42293:19;;6177:303:21;41893:425:178;6177:303:21;5190:1297;;4986:1501;;;;;;:::o;37542:267:30:-;37610:6;37649:12;-1:-1:-1;;;;;37636:25:30;:9;-1:-1:-1;;;;;37636:25:30;;;37628:93;;;;-1:-1:-1;;;37628:93:30;;42525:2:178;37628:93:30;;;42507:21:178;42564:2;42544:18;;;42537:30;42603:34;42583:18;;;42576:62;42674:25;42654:18;;;42647:53;42717:19;;37628:93:30;42323:419:178;37628:93:30;3701:34:21;3562:2;3441;3701:34;:::i;:::-;37739:24:30;37751:12;37739:9;:24;:::i;:::-;37738:64;;;;:::i;16600:201:21:-;16687:6;16712:82;16742:15;2973:1;16742:51;;;;;;;;:::i;37000:203:30:-;37103:6;37128:68;-1:-1:-1;;;;;37168:27:30;;;;37135:22;;37128:68;:::i;:::-;37121:75;37000:203;-1:-1:-1;;;37000:203:30:o;2412:311:87:-;2526:6;2501:21;:31;;2493:73;;;;-1:-1:-1;;;2493:73:87;;43700:2:178;2493:73:87;;;43682:21:178;43739:2;43719:18;;;43712:30;43778:31;43758:18;;;43751:59;43827:18;;2493:73:87;43498:353:178;2493:73:87;2578:12;2595:9;-1:-1:-1;;;;;2595:14:87;2617:6;2595:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2577:51;;;2646:7;2638:78;;;;-1:-1:-1;;;2638:78:87;;44268:2:178;2638:78:87;;;44250:21:178;44307:2;44287:18;;;44280:30;44346:34;44326:18;;;44319:62;44417:28;44397:18;;;44390:56;44463:19;;2638:78:87;44066:422:178;3589:706:86;4008:23;4034:69;4062:4;4034:69;;;;;;;;;;;;;;;;;4042:5;-1:-1:-1;;;;;4034:27:86;;;:69;;;;;:::i;:::-;4117:17;;4008:95;;-1:-1:-1;4117:21:86;4113:176;;4212:10;4201:30;;;;;;;;;;;;:::i;:::-;4193:85;;;;-1:-1:-1;;;4193:85:86;;44695:2:178;4193:85:86;;;44677:21:178;44734:2;44714:18;;;44707:30;44773:34;44753:18;;;44746:62;-1:-1:-1;;;44824:18:178;;;44817:40;44874:19;;4193:85:86;44493:406:178;15082:187:21;15177:6;15202:60;15232:15;:29;;;15202;:60::i;7964:6534::-;8231:33;1705:1;;8231:33;:::i;:::-;8204:60;;8183:180;;;;-1:-1:-1;;;8183:180:21;;45106:2:178;8183:180:21;;;45088:21:178;45145:2;45125:18;;;45118:30;-1:-1:-1;;;;;;;;;;;45164:18:178;;;45157:62;45255:34;45235:18;;;45228:62;-1:-1:-1;;;45306:19:178;;;45299:40;45356:19;;8183:180:21;44904:477:178;8183:180:21;8428:28;1312:2;8428:1;:28;:::i;:::-;8395:30;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8395:61:21;;8374:171;;;;-1:-1:-1;;;8374:171:21;;45838:2:178;8374:171:21;;;45820:21:178;45877:2;45857:18;;;45850:30;-1:-1:-1;;;;;;;;;;;45896:18:178;;;45889:62;45987:33;45967:18;;;45960:61;46038:19;;8374:171:21;45636:427:178;8374:171:21;8610:28;1890:1;8610;:28;:::i;:::-;8576:31;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8576:62:21;;8555:173;;;;;-1:-1:-1;;;8555:173:21;;46270:2:178;8555:173:21;;;46252:21:178;46289:18;;;46282:30;;;;-1:-1:-1;;;;;;;;;;;46328:18:178;;;46321:62;46419:34;46399:18;;;46392:62;46471:19;;8555:173:21;46068:428:178;8555:173:21;8801:37;1441:2;8801:1;:37;:::i;:::-;8760:38;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8760:78:21;;8739:196;;;;-1:-1:-1;;;8739:196:21;;46703:2:178;8739:196:21;;;46685:21:178;46742:2;46722:18;;;46715:30;-1:-1:-1;;;;;;;;;;;46761:18:178;;;46754:62;46852:34;46832:18;;;46825:62;-1:-1:-1;;;46903:19:178;;;46896:38;46951:19;;8739:196:21;46501:475:178;8739:196:21;9093:45;-1:-1:-1;;;;;9142:60:21;;:39;;9165:15;9142:39;:::i;:::-;-1:-1:-1;;;;;9142:60:21;;9141:190;;1103:1;9141:190;;;1189:1;9141:190;9093:238;-1:-1:-1;9426:63:21;1890:1;9093:238;9426:63;:::i;:::-;:67;;9492:1;9426:67;:::i;:::-;9420:74;;:2;:74;:::i;:::-;9362:31;:15;;:31;:::i;:::-;:38;;:132;9341:251;;;;-1:-1:-1;;;9341:251:21;;47183:2:178;9341:251:21;;;47165:21:178;47222:2;47202:18;;;47195:30;-1:-1:-1;;;;;;;;;;;47241:18:178;;;47234:62;47332:34;47312:18;;;47305:62;-1:-1:-1;;;47383:19:178;;;47376:39;47432:19;;9341:251:21;46981:476:178;9341:251:21;9693:75;834:1;762;9693:75;:::i;:::-;9687:82;;:2;:82;:::i;:::-;9623:37;;;;:15;:37;:::i;:::-;:44;;:146;9602:271;;;;-1:-1:-1;;;9602:271:21;;47664:2:178;9602:271:21;;;47646:21:178;47703:2;47683:18;;;47676:30;-1:-1:-1;;;;;;;;;;;47722:18:178;;;47715:62;47813:34;47793:18;;;47786:62;-1:-1:-1;;;47864:19:178;;;47857:45;47919:19;;9602:271:21;47462:482:178;9602:271:21;9940:44;762:1;9940:2;:44;:::i;:::-;9904:25;;;;:15;:25;:::i;:::-;:32;;:80;9883:193;;;;-1:-1:-1;;;9883:193:21;;48151:2:178;9883:193:21;;;48133:21:178;48190:2;48170:18;;;48163:30;-1:-1:-1;;;;;;;;;;;48209:18:178;;;48202:62;48300:34;48280:18;;;48273:62;-1:-1:-1;;;48351:19:178;;;48344:33;48394:19;;9883:193:21;47949:470:178;9883:193:21;10148:44;10154:37;10148:2;:44;:::i;:::-;10107:30;;;;:15;:30;:::i;:::-;:37;;:85;10086:203;;;;-1:-1:-1;;;10086:203:21;;48626:2:178;10086:203:21;;;48608:21:178;48665:2;48645:18;;;48638:30;-1:-1:-1;;;;;;;;;;;48684:18:178;;;48677:62;48775:34;48755:18;;;48748:62;-1:-1:-1;;;48826:19:178;;;48819:38;48874:19;;10086:203:21;48424:475:178;10086:203:21;1312:2;10455:36;1441:2;10490:1;10455:36;:::i;:::-;10421:71;;901:1;10421:71;:::i;:::-;:75;;10495:1;10421:75;:::i;:::-;:103;;;;:::i;:::-;10395:130;;:2;:130;:::i;:::-;10321:47;;;;:15;:47;:::i;:::-;:54;;:204;10300:339;;;;-1:-1:-1;;;10300:339:21;;49106:2:178;10300:339:21;;;49088:21:178;49145:2;49125:18;;;49118:30;-1:-1:-1;;;;;;;;;;;49164:18:178;;;49157:62;49255:34;49235:18;;;49228:62;49327:26;49306:19;;;49299:55;49371:19;;10300:339:21;48904:492:178;10300:339:21;11000:34;11331:30;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11323:39:21;1569:1;11219:29;1312:2;11219:1;:29;:::i;:::-;11175:38;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11167:47:21;:82;;1312:2;11083:36;1441:2;11118:1;11083:36;:::i;:::-;11082:42;;11123:1;11082:42;:::i;:::-;:70;;;;:::i;:::-;2598:2;11051:102;;11037:213;:283;:325;;-1:-1:-1;11394:255:21;11448:47;;;;:15;:47;:::i;:::-;11394:255;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11519:15:21;;-1:-1:-1;;;11558:25:21;;;;11608:26;11394:28;:255::i;:::-;11373:376;;;;-1:-1:-1;;;11373:376:21;;49603:2:178;11373:376:21;;;49585:21:178;49642:2;49622:18;;;49615:30;-1:-1:-1;;;;;;;;;;;49661:18:178;;;49654:62;49752:34;49732:18;;;49725:62;-1:-1:-1;;;49803:19:178;;;49796:41;49854:19;;11373:376:21;49401:478:178;11373:376:21;11837:226;11891:25;;;;:15;:25;:::i;:::-;11837:226;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11940:25:21;;;;;-1:-1:-1;11989:24:21;;;;;-1:-1:-1;11837:226:21;-1:-1:-1;11837:28:21;:226::i;:::-;11816:334;;;;-1:-1:-1;;;11816:334:21;;50086:2:178;11816:334:21;;;50068:21:178;50125:2;50105:18;;;50098:30;-1:-1:-1;;;;;;;;;;;50144:18:178;;;50137:62;50235:31;50215:18;;;50208:59;50284:19;;11816:334:21;49884:425:178;11816:334:21;12300:84;12423:281;12481:37;12301:56;12481:37;;:15;:37;:::i;:::-;12423:281;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;12546:25:21;;;;12599:36;;;;12664:21;12423:28;:281::i;:::-;12398:413;;;;-1:-1:-1;;;12398:413:21;;50516:2:178;12398:413:21;;;50498:21:178;50555:2;50535:18;;;50528:30;-1:-1:-1;;;;;;;;;;;50574:18:178;;;50567:62;50665:34;50645:18;;;50638:62;-1:-1:-1;;;50716:19:178;;;50709:40;50766:19;;12398:413:21;50314:477:178;12398:413:21;-1:-1:-1;12931:252:21;12985:30;;;;:15;:30;:::i;:::-;12931:252;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;13039:36:21;;;;13099:29;;;;3060:1;12931:28;:252::i;:::-;12910:365;;;;-1:-1:-1;;;12910:365:21;;50998:2:178;12910:365:21;;;50980:21:178;51037:2;51017:18;;;51010:30;-1:-1:-1;;;;;;;;;;;51056:18:178;;;51049:62;51147:34;51127:18;;;51120:62;-1:-1:-1;;;51198:19:178;;;51191:33;51241:19;;12910:365:21;50796:470:178;12910:365:21;13867:23;13972:31;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13964:40:21;13932:27;1890:1;13958;13932:27;:::i;:::-;3141:2;13910:50;;13909:95;13867:137;;14018:22;14043:40;14066:16;;14043:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14043:22:21;;-1:-1:-1;;;14043:40:21:i;:::-;14018:65;-1:-1:-1;14122:258:21;14180:31;:15;;:31;:::i;:::-;14122:258;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;14239:36:21;;;;14303:14;14346:15;14122:28;:258::i;:::-;14097:384;;;;-1:-1:-1;;;14097:384:21;;51473:2:178;14097:384:21;;;51455:21:178;51512:2;51492:18;;;51485:30;-1:-1:-1;;;;;;;;;;;51531:18:178;;;51524:62;51622:34;51602:18;;;51595:62;-1:-1:-1;;;51673:19:178;;;51666:34;51717:19;;14097:384:21;51271:471:178;14097:384:21;13286:1206;;8173:6325;;7964:6534;;;;;:::o;17067:206::-;17152:6;17184:81;17214:16;3232:1;17214:50;;;;;;;;:::i;17360:205::-;17451:6;17476:82;17506:16;3301:1;17506:51;;;;;;;;:::i;15346:196::-;15437:6;3441:2;15462:55;15492:15;:24;;;15462:29;:55::i;32808:2311:30:-;-1:-1:-1;;;;;;;;;;;;;;;;;33335:24:30;33397:39;-1:-1:-1;;;;;33374:62:30;:20;-1:-1:-1;;;;;33374:62:30;;33370:223;;;-1:-1:-1;33472:39:30;33370:223;;;-1:-1:-1;33562:20:30;33370:223;-1:-1:-1;;;;;;;;;;;;;;;;;33900:40:30;33923:17;33900:20;:40;:::i;:::-;-1:-1:-1;;;;;33892:49:30;;;33854:87;;33951:38;:59;;33993:17;;33854:35;;33951:59;;33993:17;;33951:59;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;33951:59:30;;;;;-1:-1:-1;;;;;33951:59:30;;;;;;34407:146;34458:17;34509:13;:33;;;34407:21;:146::i;:::-;34370:34;;;:183;34710:26;34686:13;:20;;;:50;;;;;;;;:::i;:::-;;34682:166;;34752:20;:22;;;:20;:22;;;:::i;:::-;;;;-1:-1:-1;;34811:26:30;34788:20;;;:49;34682:166;34894:1;34858:33;;;;:37;;;34905:47;;;:26;:47;;;;;;;;:63;;;;;;;;;;-1:-1:-1;;;;;34905:63:30;;;-1:-1:-1;;;34905:63:30;-1:-1:-1;;;;34905:63:30;;;-1:-1:-1;;;34905:63:30;-1:-1:-1;;;;;;34905:63:30;;;;;;;;;;;;;;;;;;;;;;;;;;34858:13;;34905:47;;:63;;:47;;-1:-1:-1;;;;34905:63:30;-1:-1:-1;;;;34905:63:30;;;;-1:-1:-1;;;34905:63:30;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;34984:92:30;;;32154:12:178;32142:25;;32124:44;;-1:-1:-1;;;;;32241:15:178;;;32236:2;32221:18;;32214:43;32293:15;;32273:18;;;32266:43;34984:92:30;;-1:-1:-1;;;;;34984:92:30;;;-1:-1:-1;34984:92:30;;;;;32112:2:178;34984:92:30;;;35094:18;32808:2311;-1:-1:-1;;;;;;;;32808:2311:30:o;35125:633::-;-1:-1:-1;;;;;;;;;;;;;;;;;35364:102:30;;;32154:12:178;32142:25;;32124:44;;-1:-1:-1;;;;;32241:15:178;;;32236:2;32221:18;;32214:43;32293:15;;32273:18;;;32266:43;;;;-1:-1:-1;;;;;35364:102:30;;;;;32112:2:178;32097:18;35364:102:30;;;;;;;35477:34;:65;;35515:27;;35477:34;;;:65;;35515:27;;-1:-1:-1;;;;;35477:65:30;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;35477:65:30;;;;;-1:-1:-1;;;;;35477:65:30;;;;;;35655:96;;;;;;;;35701:27;-1:-1:-1;;;;;35693:36:30;35655:96;;;;35748:1;35655:96;;;35648:103;;35125:633;;;;;;:::o;4196:1337:25:-;4329:7;4373:5;:12;4389:1;4373:17;;:43;;;;;4409:2;4394:5;:12;:17;;;;:::i;:::-;:22;4373:43;4352:174;;;;-1:-1:-1;;;4352:174:25;;52331:2:178;4352:174:25;;;52313:21:178;52370:2;52350:18;;;52343:30;52409:34;52389:18;;;52382:62;52480:34;52460:18;;;52453:62;-1:-1:-1;;;52531:19:178;;;52524:51;52592:19;;4352:174:25;52129:488:178;4352:174:25;4536:39;;;;;;;;;;;;;;4585:910;4611:5;:12;4606:1;:17;4585:910;;4652:9;4660:1;4652:5;:9;:::i;:::-;4648:837;;4817:12;4811:19;4805:4;4798:33;4882:1;4875:5;4871:13;4865:20;4859:4;4852:34;4975:4;4961:12;4955:4;4949;4946:1;4939:4;4932:5;4928:16;4917:63;4907:91;;4994:1;4991;4984:12;4907:91;5039:1;5032:5;5028:13;5019:22;;4648:837;;;5240:1;5233:5;5229:13;5223:20;5217:4;5210:34;5284:12;5278:19;5272:4;5265:33;5387:4;5373:12;5367:4;5361;5358:1;5351:4;5344:5;5340:16;5329:63;5319:91;;5406:1;5403;5396:12;5319:91;5451:1;5444:5;5440:13;5431:22;;4648:837;4625:7;4630:2;4625:7;;:::i;:::-;;;4585:910;;;-1:-1:-1;5511:15:25;;4196:1337;-1:-1:-1;;;;4196:1337:25:o;508:508:24:-;734:7;;;;746:30;;;;944:18;746:30;733:44;781:30;;;;897:18;781:30;733:79;828:29;;;;863:18;828:29;733:125;862:29;;;;;;733:159;896:30;;;;;;733:194;943:30;;;;;;733:241;978:30;;;;;;;;;;733:276;;508:508::o;5935:1154:25:-;6008:7;6096:23;6138:1;6122:6;:13;:17;;;;:::i;:::-;6096:43;;6202:22;6241:15;-1:-1:-1;;;;;6227:30:25;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6227:30:25;;6202:55;;6336:9;6331:140;6355:15;6351:1;:19;6331:140;;;6402:58;6426:6;6433:5;6437:1;6402:58;6433:5;:::i;:::-;6426:13;;;;;;;;:::i;:::-;;;;;;;6441:6;6452:1;6448;:5;;;;:::i;:::-;:9;;6456:1;6448:9;:::i;:::-;6441:17;;;;;;;;:::i;:::-;;;;;;;6409:50;;;;;;;;52779:19:178;;;52823:2;52814:12;;52807:28;52860:2;52851:12;;52622:247;6409:50:25;;;;-1:-1:-1;;6409:50:25;;;;;;;;;;6402:58;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6391:5;6397:1;6391:8;;;;;;;;:::i;:::-;;;;;;;;;;:69;6372:3;;;;:::i;:::-;;;;6331:140;;;-1:-1:-1;6534:20:25;6553:1;6534:20;;:::i;:::-;;;6609:399;6616:20;;6609:399;;6765:9;6760:146;6784:15;6780:1;:19;6760:146;;;6835:56;6859:5;6865;6869:1;6835:56;6865:5;:::i;:::-;6859:12;;;;;;;;:::i;:::-;;;;;;;6873:5;6883:1;6879;:5;;;;:::i;:::-;:9;;6887:1;6879:9;:::i;:::-;6873:16;;;;;;;;:::i;:::-;;;;;;;6842:48;;;;;;;;52779:19:178;;;52823:2;52814:12;;52807:28;52860:2;52851:12;;52622:247;6842:48:25;;;;-1:-1:-1;;6842:48:25;;;;;;;;;;6835:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6824:5;6830:1;6824:8;;;;;;;;:::i;:::-;;;;;;;;;;:67;6801:3;;;;:::i;:::-;;;;6760:146;;;-1:-1:-1;6977:20:25;6996:1;6977:20;;:::i;:::-;;;6609:399;;;7074:5;7080:1;7074:8;;;;;;;;:::i;:::-;;;;;;;7067:15;;;;5935:1154;;;:::o;3860:213:87:-;3979:12;4014:52;4036:6;4044:4;4050:1;4053:12;4014:21;:52::i;:::-;4007:59;3860:213;-1:-1:-1;;;;3860:213:87:o;4907:481::-;5050:12;5111:5;5086:21;:30;;5078:81;;;;-1:-1:-1;;;5078:81:87;;53076:2:178;5078:81:87;;;53058:21:178;53115:2;53095:18;;;53088:30;53154:34;53134:18;;;53127:62;-1:-1:-1;;;53205:18:178;;;53198:36;53251:19;;5078:81:87;52874:402:178;5078:81:87;-1:-1:-1;;;;;1476:19:61;;;5169:60:87;;;;-1:-1:-1;;;5169:60:87;;53483:2:178;5169:60:87;;;53465:21:178;53522:2;53502:18;;;53495:30;53561:31;53541:18;;;53534:59;53610:18;;5169:60:87;53281:353:178;5169:60:87;5241:12;5255:23;5282:6;-1:-1:-1;;;;;5282:11:87;5301:5;5308:4;5282:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5240:73;;;;5330:51;5347:7;5356:10;5368:12;5330:16;:51::i;:::-;5323:58;4907:481;-1:-1:-1;;;;;;;4907:481:87:o;7490:740::-;7630:12;7662:7;7658:566;;;-1:-1:-1;7692:10:87;7685:17;;7658:566;7803:17;;:21;7799:415;;8047:10;8041:17;8107:15;8094:10;8090:2;8086:19;8079:44;7799:415;8186:12;8179:20;;-1:-1:-1;;;8179:20:87;;;;;;;;:::i;14:127:178:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:128;186:3;217:1;213:6;210:1;207:13;204:39;;;223:18;;:::i;:::-;-1:-1:-1;259:9:178;;146:128::o;1307:129::-;-1:-1:-1;;;;;1385:5:178;1381:30;1374:5;1371:41;1361:69;;1426:1;1423;1416:12;1441:132;1508:20;;1537:30;1508:20;1537:30;:::i;:::-;1441:132;;;:::o;1578:313::-;1645:6;1653;1706:2;1694:9;1685:7;1681:23;1677:32;1674:52;;;1722:1;1719;1712:12;1674:52;1758:9;1745:23;1735:33;;1818:2;1807:9;1803:18;1790:32;1831:30;1855:5;1831:30;:::i;:::-;1880:5;1870:15;;;1578:313;;;;;:::o;1896:162::-;1963:5;2008:2;1999:6;1994:3;1990:16;1986:25;1983:45;;;2024:1;2021;2014:12;1983:45;-1:-1:-1;2046:6:178;1896:162;-1:-1:-1;1896:162:178:o;2063:366::-;2125:8;2135:6;2189:3;2182:4;2174:6;2170:17;2166:27;2156:55;;2207:1;2204;2197:12;2156:55;-1:-1:-1;2230:20:178;;-1:-1:-1;;;;;2262:30:178;;2259:50;;;2305:1;2302;2295:12;2259:50;2342:4;2334:6;2330:17;2318:29;;2402:3;2395:4;2385:6;2382:1;2378:14;2370:6;2366:27;2362:38;2359:47;2356:67;;;2419:1;2416;2409:12;2356:67;2063:366;;;;;:::o;2434:1505::-;2680:6;2688;2696;2704;2712;2720;2728;2736;2789:3;2777:9;2768:7;2764:23;2760:33;2757:53;;;2806:1;2803;2796:12;2757:53;2845:9;2832:23;2864:30;2888:5;2864:30;:::i;:::-;2913:5;-1:-1:-1;2969:2:178;2954:18;;2941:32;-1:-1:-1;;;;;3022:14:178;;;3019:34;;;3049:1;3046;3039:12;3019:34;3072:74;3138:7;3129:6;3118:9;3114:22;3072:74;:::i;:::-;3062:84;;3199:2;3188:9;3184:18;3171:32;3155:48;;3228:2;3218:8;3215:16;3212:36;;;3244:1;3241;3234:12;3212:36;3283:71;3346:7;3335:8;3324:9;3320:24;3283:71;:::i;:::-;3373:8;;-1:-1:-1;3257:97:178;-1:-1:-1;3461:2:178;3446:18;;3433:32;;-1:-1:-1;3477:16:178;;;3474:36;;;3506:1;3503;3496:12;3474:36;3545:71;3608:7;3597:8;3586:9;3582:24;3545:71;:::i;:::-;3635:8;;-1:-1:-1;3519:97:178;-1:-1:-1;3723:3:178;3708:19;;3695:33;;-1:-1:-1;3740:16:178;;;3737:36;;;3769:1;3766;3759:12;3737:36;;3808:71;3871:7;3860:8;3849:9;3845:24;3808:71;:::i;:::-;2434:1505;;;;-1:-1:-1;2434:1505:178;;-1:-1:-1;2434:1505:178;;;;;;3898:8;-1:-1:-1;;;2434:1505:178:o;4177:347::-;4228:8;4238:6;4292:3;4285:4;4277:6;4273:17;4269:27;4259:55;;4310:1;4307;4300:12;4259:55;-1:-1:-1;4333:20:178;;-1:-1:-1;;;;;4365:30:178;;4362:50;;;4408:1;4405;4398:12;4362:50;4445:4;4437:6;4433:17;4421:29;;4497:3;4490:4;4481:6;4473;4469:19;4465:30;4462:39;4459:59;;;4514:1;4511;4504:12;4529:409;4599:6;4607;4660:2;4648:9;4639:7;4635:23;4631:32;4628:52;;;4676:1;4673;4666:12;4628:52;4716:9;4703:23;-1:-1:-1;;;;;4741:6:178;4738:30;4735:50;;;4781:1;4778;4771:12;4735:50;4820:58;4870:7;4861:6;4850:9;4846:22;4820:58;:::i;:::-;4897:8;;4794:84;;-1:-1:-1;4529:409:178;-1:-1:-1;;;;4529:409:178:o;4943:127::-;5004:10;4999:3;4995:20;4992:1;4985:31;5035:4;5032:1;5025:15;5059:4;5056:1;5049:15;5075:244;5163:1;5156:5;5153:12;5143:143;;5208:10;5203:3;5199:20;5196:1;5189:31;5243:4;5240:1;5233:15;5271:4;5268:1;5261:15;5143:143;5295:18;;5075:244::o;5324:222::-;5477:2;5462:18;;5489:51;5466:9;5522:6;5489:51;:::i;5551:180::-;5610:6;5663:2;5651:9;5642:7;5638:23;5634:32;5631:52;;;5679:1;5676;5669:12;5631:52;-1:-1:-1;5702:23:178;;5551:180;-1:-1:-1;5551:180:178:o;5736:567::-;5890:4;5932:3;5921:9;5917:19;5909:27;;-1:-1:-1;;;;;6019:2:178;6010:6;6004:13;6000:22;5989:9;5982:41;6091:2;6083:4;6075:6;6071:17;6065:24;6061:33;6054:4;6043:9;6039:20;6032:63;6163:2;6155:4;6147:6;6143:17;6137:24;6133:33;6126:4;6115:9;6111:20;6104:63;;6214:4;6206:6;6202:17;6196:24;6229:68;6291:4;6280:9;6276:20;6262:12;6229:68;:::i;:::-;;5736:567;;;;:::o;6539:785::-;6638:6;6646;6654;6662;6670;6723:2;6711:9;6702:7;6698:23;6694:32;6691:52;;;6739:1;6736;6729:12;6691:52;6779:9;6766:23;-1:-1:-1;;;;;6849:2:178;6841:6;6838:14;6835:34;;;6865:1;6862;6855:12;6835:34;6904:58;6954:7;6945:6;6934:9;6930:22;6904:58;:::i;:::-;6981:8;;-1:-1:-1;6878:84:178;-1:-1:-1;7069:2:178;7054:18;;7041:32;;-1:-1:-1;7085:16:178;;;7082:36;;;7114:1;7111;7104:12;7082:36;;7153:60;7205:7;7194:8;7183:9;7179:24;7153:60;:::i;:::-;6539:785;;;;-1:-1:-1;7232:8:178;7314:2;7299:18;7286:32;;6539:785;-1:-1:-1;;;;6539:785:178:o;7329:1505::-;7575:6;7583;7591;7599;7607;7615;7623;7631;7684:3;7672:9;7663:7;7659:23;7655:33;7652:53;;;7701:1;7698;7691:12;7652:53;7740:9;7727:23;7759:30;7783:5;7759:30;:::i;:::-;7808:5;-1:-1:-1;7864:2:178;7849:18;;7836:32;-1:-1:-1;;;;;7917:14:178;;;7914:34;;;7944:1;7941;7934:12;7914:34;7983:69;8044:7;8035:6;8024:9;8020:22;7983:69;:::i;:::-;8071:8;;-1:-1:-1;7957:95:178;-1:-1:-1;8159:2:178;8144:18;;8131:32;;-1:-1:-1;8175:16:178;;;8172:36;;;8204:1;8201;8194:12;8172:36;8227:76;8295:7;8284:8;8273:9;8269:24;8227:76;:::i;:::-;8217:86;;8356:2;8345:9;8341:18;8328:32;8312:48;;8385:2;8375:8;8372:16;8369:36;;;8401:1;8398;8391:12;8839:131;-1:-1:-1;;;;;8914:31:178;;8904:42;;8894:70;;8960:1;8957;8950:12;8975:134;9043:20;;9072:31;9043:20;9072:31;:::i;9114:315::-;9182:6;9190;9243:2;9231:9;9222:7;9218:23;9214:32;9211:52;;;9259:1;9256;9249:12;9211:52;9298:9;9285:23;9317:31;9342:5;9317:31;:::i;:::-;9367:5;9419:2;9404:18;;;;9391:32;;-1:-1:-1;;;9114:315:178:o;9434:247::-;9493:6;9546:2;9534:9;9525:7;9521:23;9517:32;9514:52;;;9562:1;9559;9552:12;9514:52;9601:9;9588:23;9620:31;9645:5;9620:31;:::i;9686:127::-;9747:10;9742:3;9738:20;9735:1;9728:31;9778:4;9775:1;9768:15;9802:4;9799:1;9792:15;9818:255;9890:2;9884:9;9932:6;9920:19;;-1:-1:-1;;;;;9954:34:178;;9990:22;;;9951:62;9948:88;;;10016:18;;:::i;:::-;10052:2;10045:22;9818:255;:::o;10078:275::-;10149:2;10143:9;10214:2;10195:13;;-1:-1:-1;;10191:27:178;10179:40;;-1:-1:-1;;;;;10234:34:178;;10270:22;;;10231:62;10228:88;;;10296:18;;:::i;:::-;10332:2;10325:22;10078:275;;-1:-1:-1;10078:275:178:o;10358:191::-;10426:4;-1:-1:-1;;;;;10451:6:178;10448:30;10445:56;;;10481:18;;:::i;:::-;-1:-1:-1;10526:1:178;10522:14;10538:4;10518:25;;10358:191::o;10554:670::-;10608:5;10661:3;10654:4;10646:6;10642:17;10638:27;10628:55;;10679:1;10676;10669:12;10628:55;10715:6;10702:20;10741:4;10765:68;10781:51;10829:2;10781:51;:::i;:::-;10765:68;:::i;:::-;10867:15;;;10953:1;10949:10;;;;10937:23;;10933:32;;;10898:12;;;;10977:15;;;10974:35;;;11005:1;11002;10995:12;10974:35;11041:2;11033:6;11029:15;11053:142;11069:6;11064:3;11061:15;11053:142;;;11135:17;;11123:30;;11173:12;;;;11086;;11053:142;;;-1:-1:-1;11213:5:178;10554:670;-1:-1:-1;;;;;;10554:670:178:o;11229:1313::-;11372:6;11380;11388;11441:2;11429:9;11420:7;11416:23;11412:32;11409:52;;;11457:1;11454;11447:12;11409:52;11497:9;11484:23;-1:-1:-1;;;;;11567:2:178;11559:6;11556:14;11553:34;;;11583:1;11580;11573:12;11553:34;11621:6;11610:9;11606:22;11596:32;;11666:7;11659:4;11655:2;11651:13;11647:27;11637:55;;11688:1;11685;11678:12;11637:55;11724:2;11711:16;11746:4;11770:68;11786:51;11834:2;11786:51;:::i;11770:68::-;11872:15;;;11954:1;11950:10;;;;11942:19;;11938:28;;;11903:12;;;;11978:19;;;11975:39;;;12010:1;12007;12000:12;11975:39;12034:11;;;;12054:217;12070:6;12065:3;12062:15;12054:217;;;12150:3;12137:17;12167:31;12192:5;12167:31;:::i;:::-;12211:18;;12087:12;;;;12249;;;;12054:217;;;12290:5;-1:-1:-1;;12333:18:178;;12320:32;;-1:-1:-1;;12364:16:178;;;12361:36;;;12393:1;12390;12383:12;12361:36;;12416:63;12471:7;12460:8;12449:9;12445:24;12416:63;:::i;:::-;12406:73;;;12498:38;12532:2;12521:9;12517:18;12498:38;:::i;:::-;12488:48;;11229:1313;;;;;:::o;12547:1822::-;12892:6;12900;12908;12916;12924;12932;12940;12948;12956;12964;13017:3;13005:9;12996:7;12992:23;12988:33;12985:53;;;13034:1;13031;13024:12;12985:53;13057:28;13075:9;13057:28;:::i;:::-;13047:38;;13136:2;13125:9;13121:18;13108:32;-1:-1:-1;;;;;13200:2:178;13192:6;13189:14;13186:34;;;13216:1;13213;13206:12;13186:34;13239:74;13305:7;13296:6;13285:9;13281:22;13239:74;:::i;:::-;13229:84;;13366:2;13355:9;13351:18;13338:32;13322:48;;13395:2;13385:8;13382:16;13379:36;;;13411:1;13408;13401:12;13379:36;13450:71;13513:7;13502:8;13491:9;13487:24;13450:71;:::i;:::-;13540:8;;-1:-1:-1;13424:97:178;-1:-1:-1;13628:2:178;13613:18;;13600:32;;-1:-1:-1;13644:16:178;;;13641:36;;;13673:1;13670;13663:12;13641:36;13712:71;13775:7;13764:8;13753:9;13749:24;13712:71;:::i;:::-;13802:8;;-1:-1:-1;13686:97:178;-1:-1:-1;13890:3:178;13875:19;;13862:33;;-1:-1:-1;13907:16:178;;;13904:36;;;13936:1;13933;13926:12;13904:36;13975:71;14038:7;14027:8;14016:9;14012:24;13975:71;:::i;:::-;14065:8;;-1:-1:-1;13949:97:178;-1:-1:-1;14153:3:178;14138:19;;14125:33;;-1:-1:-1;14170:16:178;;;14167:36;;;14199:1;14196;14189:12;14167:36;;14238:71;14301:7;14290:8;14279:9;14275:24;14238:71;:::i;:::-;14212:97;;14328:8;14318:18;;;14355:8;14345:18;;;12547:1822;;;;;;;;;;;;;:::o;14563:277::-;14630:6;14683:2;14671:9;14662:7;14658:23;14654:32;14651:52;;;14699:1;14696;14689:12;14651:52;14731:9;14725:16;14784:5;14777:13;14770:21;14763:5;14760:32;14750:60;;14806:1;14803;14796:12;14845:426;15047:2;15029:21;;;15086:2;15066:18;;;15059:30;15125:34;15120:2;15105:18;;15098:62;15196:32;15191:2;15176:18;;15169:60;15261:3;15246:19;;14845:426::o;15276:404::-;15478:2;15460:21;;;15517:2;15497:18;;;15490:30;15556:34;15551:2;15536:18;;15529:62;-1:-1:-1;;;15622:2:178;15607:18;;15600:38;15670:3;15655:19;;15276:404::o;15685:411::-;15887:2;15869:21;;;15926:2;15906:18;;;15899:30;15965:34;15960:2;15945:18;;15938:62;-1:-1:-1;;;16031:2:178;16016:18;;16009:45;16086:3;16071:19;;15685:411::o;16101:548::-;16303:2;16285:21;;;16342:3;16322:18;;;16315:31;16382:34;16377:2;16362:18;;16355:62;16453:34;16448:2;16433:18;;16426:62;16525:34;16519:3;16504:19;;16497:63;-1:-1:-1;;;16591:3:178;16576:19;;16569:38;16639:3;16624:19;;16101:548::o;18056:184::-;18126:6;18179:2;18167:9;18158:7;18154:23;18150:32;18147:52;;;18195:1;18192;18185:12;18147:52;-1:-1:-1;18218:16:178;;18056:184;-1:-1:-1;18056:184:178:o;18245:521::-;18322:4;18328:6;18388:11;18375:25;18482:2;18478:7;18467:8;18451:14;18447:29;18443:43;18423:18;18419:68;18409:96;;18501:1;18498;18491:12;18409:96;18528:33;;18580:20;;;-1:-1:-1;;;;;;18612:30:178;;18609:50;;;18655:1;18652;18645:12;18609:50;18688:4;18676:17;;-1:-1:-1;18719:14:178;18715:27;;;18705:38;;18702:58;;;18756:1;18753;18746:12;18771:127;18832:10;18827:3;18823:20;18820:1;18813:31;18863:4;18860:1;18853:15;18887:4;18884:1;18877:15;18903:278;18961:6;19014:2;19002:9;18993:7;18989:23;18985:32;18982:52;;;19030:1;19027;19020:12;18982:52;19069:9;19056:23;19119:12;19112:5;19108:24;19101:5;19098:35;19088:63;;19147:1;19144;19137:12;19186:545;19279:4;19285:6;19345:11;19332:25;19439:2;19435:7;19424:8;19408:14;19404:29;19400:43;19380:18;19376:68;19366:96;;19458:1;19455;19448:12;19366:96;19485:33;;19537:20;;;-1:-1:-1;;;;;;19569:30:178;;19566:50;;;19612:1;19609;19602:12;19566:50;19645:4;19633:17;;-1:-1:-1;19696:1:178;19692:14;;;19676;19672:35;19662:46;;19659:66;;;19721:1;19718;19711:12;19736:135;19775:3;-1:-1:-1;;19796:17:178;;19793:43;;;19816:18;;:::i;:::-;-1:-1:-1;19863:1:178;19852:13;;19736:135::o;20153:413::-;20355:2;20337:21;;;20394:2;20374:18;;;20367:30;20433:34;20428:2;20413:18;;20406:62;-1:-1:-1;;;20499:2:178;20484:18;;20477:47;20556:3;20541:19;;20153:413::o;21048:266::-;21136:6;21131:3;21124:19;21188:6;21181:5;21174:4;21169:3;21165:14;21152:43;-1:-1:-1;21240:1:178;21215:16;;;21233:4;21211:27;;;21204:38;;;;21296:2;21275:15;;;-1:-1:-1;;21271:29:178;21262:39;;;21258:50;;21048:266::o;21319:258::-;21391:1;21401:113;21415:6;21412:1;21409:13;21401:113;;;21491:11;;;21485:18;21472:11;;;21465:39;21437:2;21430:10;21401:113;;;21532:6;21529:1;21526:13;21523:48;;;-1:-1:-1;;21567:1:178;21549:16;;21542:27;21319:258::o;21582:257::-;21623:3;21661:5;21655:12;21688:6;21683:3;21676:19;21704:63;21760:6;21753:4;21748:3;21744:14;21737:4;21730:5;21726:16;21704:63;:::i;:::-;21821:2;21800:15;-1:-1:-1;;21796:29:178;21787:39;;;;21828:4;21783:50;;21582:257;-1:-1:-1;;21582:257:178:o;21844:664::-;22131:3;22120:9;22113:22;22094:4;22158:62;22215:3;22204:9;22200:19;22192:6;22184;22158:62;:::i;:::-;22268:9;22260:6;22256:22;22251:2;22240:9;22236:18;22229:50;22302:32;22327:6;22319;22302:32;:::i;:::-;22288:46;;22382:9;22374:6;22370:22;22365:2;22354:9;22350:18;22343:50;22410:49;22452:6;22444;22436;22410:49;:::i;:::-;22402:57;;;22495:6;22490:2;22479:9;22475:18;22468:34;21844:664;;;;;;;;;:::o;22513:244::-;22670:2;22659:9;22652:21;22633:4;22690:61;22747:2;22736:9;22732:18;22724:6;22716;22690:61;:::i;23727:265::-;23766:3;23794:9;;;23819:10;;-1:-1:-1;;;;;23838:27:178;;;23831:35;;23815:52;23812:78;;;23870:18;;:::i;:::-;-1:-1:-1;;;23917:19:178;;;23910:27;;23902:36;;23899:62;;;23941:18;;:::i;:::-;-1:-1:-1;;23977:9:178;;23727:265::o;23997:553::-;24036:7;-1:-1:-1;;;;;24106:9:178;;;24134;;;24159:11;;;24178:10;;;24172:17;;24155:35;24152:61;;;24193:18;;:::i;:::-;-1:-1:-1;;;24269:1:178;24262:9;;24287:11;;;24307;;;24300:19;;24283:37;24280:63;;;24323:18;;:::i;:::-;24369:1;24366;24362:9;24352:19;;24416:1;24412:2;24407:11;24404:1;24400:19;24395:2;24391;24387:11;24383:37;24380:63;;;24423:18;;:::i;:::-;24488:1;24484:2;24479:11;24476:1;24472:19;24467:2;24463;24459:11;24455:37;24452:63;;;24495:18;;:::i;:::-;-1:-1:-1;;;24535:9:178;;;;;23997:553;-1:-1:-1;;;23997:553:178:o;24555:127::-;24616:10;24611:3;24607:20;24604:1;24597:31;24647:4;24644:1;24637:15;24671:4;24668:1;24661:15;24687:112;24719:1;24745;24735:35;;24750:18;;:::i;:::-;-1:-1:-1;24784:9:178;;24687:112::o;25291:120::-;25331:1;25357;25347:35;;25362:18;;:::i;:::-;-1:-1:-1;25396:9:178;;25291:120::o;25963:229::-;26002:4;-1:-1:-1;;;;;26099:10:178;;;;26069;;26121:12;;;26118:38;;;26136:18;;:::i;:::-;26173:13;;25963:229;-1:-1:-1;;;25963:229:178:o;28149:333::-;28250:4;28308:11;28295:25;28402:3;28398:8;28387;28371:14;28367:29;28363:44;28343:18;28339:69;28329:97;;28422:1;28419;28412:12;28329:97;28443:33;;;;;28149:333;-1:-1:-1;;28149:333:178:o;28487:168::-;28527:7;28593:1;28589;28585:6;28581:14;28578:1;28575:21;28570:1;28563:9;28556:17;28552:45;28549:71;;;28600:18;;:::i;:::-;-1:-1:-1;28640:9:178;;28487:168::o;29216:125::-;29256:4;29284:1;29281;29278:8;29275:34;;;29289:18;;:::i;:::-;-1:-1:-1;29326:9:178;;29216:125::o;30943:297::-;31061:12;;31108:4;31097:16;;;31091:23;;31061:12;31126:16;;31123:111;;;-1:-1:-1;;31200:4:178;31196:17;;;;31193:1;31189:25;31185:38;31174:50;;30943:297;-1:-1:-1;30943:297:178:o;32800:414::-;32957:3;32995:6;32989:13;33011:53;33057:6;33052:3;33045:4;33037:6;33033:17;33011:53;:::i;:::-;-1:-1:-1;;;;;;33125:52:178;;;;33086:16;;;;33111:67;;;33205:2;33194:14;;32800:414;-1:-1:-1;;32800:414:178:o;33219:274::-;33348:3;33386:6;33380:13;33402:53;33448:6;33443:3;33436:4;33428:6;33424:17;33402:53;:::i;35605:530::-;35647:5;35700:3;35693:4;35685:6;35681:17;35677:27;35667:55;;35718:1;35715;35708:12;35667:55;35754:6;35741:20;-1:-1:-1;;;;;35776:2:178;35773:26;35770:52;;;35802:18;;:::i;:::-;35846:55;35889:2;35870:13;;-1:-1:-1;;35866:27:178;35895:4;35862:38;35846:55;:::i;:::-;35926:2;35917:7;35910:19;35972:3;35965:4;35960:2;35952:6;35948:15;35944:26;35941:35;35938:55;;;35989:1;35986;35979:12;35938:55;36054:2;36047:4;36039:6;36035:17;36028:4;36019:7;36015:18;36002:55;36102:1;36077:16;;;36095:4;36073:27;36066:38;;;;36081:7;35605:530;-1:-1:-1;;;35605:530:178:o;36140:1782::-;36258:9;36317:6;36309:5;36293:14;36289:26;36285:39;36282:59;;;36337:1;36334;36327:12;36282:59;36365:22;;:::i;:::-;36423:5;36410:19;-1:-1:-1;;;;;36489:2:178;36481:6;36478:14;36475:34;;;36505:1;36502;36495:12;36475:34;36534:52;36571:14;36562:6;36555:5;36551:18;36534:52;:::i;:::-;36525:7;36518:69;36636:2;36629:5;36625:14;36612:28;36596:44;;36665:2;36655:8;36652:16;36649:36;;;36681:1;36678;36671:12;36649:36;36719:54;36758:14;36747:8;36740:5;36736:20;36719:54;:::i;:::-;36714:2;36705:7;36701:16;36694:80;36823:2;36816:5;36812:14;36799:28;36783:44;;36852:2;36842:8;36839:16;36836:36;;;36868:1;36865;36858:12;36836:36;36906:54;36945:14;36934:8;36927:5;36923:20;36906:54;:::i;:::-;36901:2;36892:7;36888:16;36881:80;37010:2;37003:5;36999:14;36986:28;36970:44;;37039:2;37029:8;37026:16;37023:36;;;37055:1;37052;37045:12;37023:36;37093:54;37132:14;37121:8;37114:5;37110:20;37093:54;:::i;:::-;37088:2;37079:7;37075:16;37068:80;37197:3;37190:5;37186:15;37173:29;37157:45;;37227:2;37217:8;37214:16;37211:36;;;37243:1;37240;37233:12;37211:36;;37282:54;37321:14;37310:8;37303:5;37299:20;37282:54;:::i;:::-;37276:3;37267:7;37263:17;37256:81;;37372:34;37401:3;37394:5;37390:15;37372:34;:::i;:::-;37366:3;37357:7;37353:17;37346:61;37442:34;37471:3;37464:5;37460:15;37442:34;:::i;:::-;37436:3;37427:7;37423:17;37416:61;37512:34;37541:3;37534:5;37530:15;37512:34;:::i;:::-;37506:3;37493:17;;37486:61;37566:3;37616:14;;;37603:28;37585:16;;;37578:54;37651:3;37701:14;;;37688:28;37670:16;;;37663:54;37736:3;37786:14;;;37773:28;37755:16;;;37748:54;37821:3;37871:14;;;37858:28;37840:16;;;37833:54;;;;-1:-1:-1;37497:7:178;36140:1782::o;38993:249::-;39062:6;39115:2;39103:9;39094:7;39090:23;39086:32;39083:52;;;39131:1;39128;39121:12;39083:52;39163:9;39157:16;39182:30;39206:5;39182:30;:::i;39556:422::-;39645:1;39688:5;39645:1;39702:270;39723:7;39713:8;39710:21;39702:270;;;39782:4;39778:1;39774:6;39770:17;39764:4;39761:27;39758:53;;;39791:18;;:::i;:::-;39841:7;39831:8;39827:22;39824:55;;;39861:16;;;;39824:55;39940:22;;;;39900:15;;;;39702:270;;;39706:3;39556:422;;;;;:::o;39983:806::-;40032:5;40062:8;40052:80;;-1:-1:-1;40103:1:178;40117:5;;40052:80;40151:4;40141:76;;-1:-1:-1;40188:1:178;40202:5;;40141:76;40233:4;40251:1;40246:59;;;;40319:1;40314:130;;;;40226:218;;40246:59;40276:1;40267:10;;40290:5;;;40314:130;40351:3;40341:8;40338:17;40335:43;;;40358:18;;:::i;:::-;-1:-1:-1;;40414:1:178;40400:16;;40429:5;;40226:218;;40528:2;40518:8;40515:16;40509:3;40503:4;40500:13;40496:36;40490:2;40480:8;40477:16;40472:2;40466:4;40463:12;40459:35;40456:77;40453:159;;;-1:-1:-1;40565:19:178;;;40597:5;;40453:159;40644:34;40669:8;40663:4;40644:34;:::i;:::-;40714:6;40710:1;40706:6;40702:19;40693:7;40690:32;40687:58;;;40725:18;;:::i;:::-;40763:20;;39983:806;-1:-1:-1;;;39983:806:178:o;40794:131::-;40854:5;40883:36;40910:8;40904:4;40883:36;:::i;42747:270::-;42786:7;-1:-1:-1;;;;;42863:2:178;42860:1;42856:10;42893:2;42890:1;42886:10;42949:3;42945:2;42941:12;42936:3;42933:21;42926:3;42919:11;42912:19;42908:47;42905:73;;;42958:18;;:::i;:::-;42998:13;;42747:270;-1:-1:-1;;;;42747:270:178:o;43022:199::-;43061:1;-1:-1:-1;;;;;43132:2:178;43129:1;43125:10;43154:3;43144:37;;43161:18;;:::i;:::-;43199:10;;43195:20;;;;;43022:199;-1:-1:-1;;43022:199:178:o;43226:267::-;43265:4;43294:9;;;43319:10;;-1:-1:-1;;;43338:19:178;;43331:27;;43315:44;43312:70;;;43362:18;;:::i;:::-;-1:-1:-1;;;;;43409:27:178;;43402:35;;43394:44;;43391:70;;;43441:18;;:::i;:::-;-1:-1:-1;;43478:9:178;;43226:267::o;45386:245::-;45444:6;45497:2;45485:9;45476:7;45472:23;45468:32;45465:52;;;45513:1;45510;45503:12;45465:52;45552:9;45539:23;45571:30;45595:5;45571:30;:::i;51747:236::-;51786:3;-1:-1:-1;;;;;51859:2:178;51856:1;51852:10;51889:2;51886:1;51882:10;51920:3;51916:2;51912:12;51907:3;51904:21;51901:47;;;51928:18;;:::i;:::-;51964:13;;51747:236;-1:-1:-1;;;;51747:236:178:o;51988:136::-;52027:3;52055:5;52045:39;;52064:18;;:::i;:::-;-1:-1:-1;;;52100:18:178;;51988:136::o;53639:219::-;53788:2;53777:9;53770:21;53751:4;53808:44;53848:2;53837:9;53833:18;53825:6;53808:44;:::i","linkReferences":{},"immutableReferences":{"11567":[{"start":1106,"length":32},{"start":3566,"length":32}],"11571":[{"start":577,"length":32},{"start":12691,"length":32}],"11575":[{"start":877,"length":32},{"start":1556,"length":32},{"start":1959,"length":32},{"start":2630,"length":32},{"start":2971,"length":32},{"start":3363,"length":32},{"start":3806,"length":32},{"start":4287,"length":32},{"start":4595,"length":32},{"start":5117,"length":32},{"start":6218,"length":32},{"start":6642,"length":32},{"start":6961,"length":32},{"start":7422,"length":32},{"start":7656,"length":32},{"start":12065,"length":32}],"11578":[{"start":629,"length":32},{"start":9257,"length":32},{"start":9309,"length":32},{"start":10889,"length":32},{"start":10934,"length":32},{"start":16987,"length":32},{"start":17046,"length":32}],"11581":[{"start":1461,"length":32},{"start":13512,"length":32},{"start":13695,"length":32}]}},"methodIdentifiers":{"GENESIS_TIME()":"f2882461","MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR()":"1d905d5c","activateRestaking()":"0cd4649e","delayedWithdrawalRouter()":"1a5057be","eigenPodManager()":"4665bcda","ethPOS()":"74cdd798","hasRestaked()":"3106ab53","initialize(address)":"c4d66de8","mostRecentWithdrawalTimestamp()":"87e0d289","nonBeaconChainETHBalanceWei()":"fe80b087","podOwner()":"0b18ff66","provenWithdrawal(bytes32,uint64)":"34bea20a","recoverTokens(address[],uint256[],address)":"dda3346c","stake(bytes,bytes,bytes32)":"9b4e4634","sumOfPartialWithdrawalsClaimedGwei()":"5d3f65b6","validatorPubkeyHashToInfo(bytes32)":"6fcd0e53","validatorPubkeyToInfo(bytes)":"b522538a","validatorStatus(bytes)":"58eaee79","validatorStatus(bytes32)":"7439841f","verifyAndProcessWithdrawals(uint64,(bytes32,bytes),(bytes,bytes,bytes,bytes,bytes,uint64,uint64,uint64,bytes32,bytes32,bytes32,bytes32)[],bytes[],bytes32[][],bytes32[][])":"e251ef52","verifyBalanceUpdates(uint64,uint40[],(bytes32,bytes),bytes[],bytes32[][])":"a50600f4","verifyWithdrawalCredentials(uint64,(bytes32,bytes),uint40[],bytes[],bytes32[][])":"3f65cf19","withdrawBeforeRestaking()":"baa7145a","withdrawNonBeaconChainETHBalanceWei(address,uint256)":"e2c83445","withdrawRestakedBeaconChainETH(address,uint256)":"c4907442","withdrawableRestakedExecutionLayerGwei()":"3474aa16"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IETHPOSDeposit\",\"name\":\"_ethPOS\",\"type\":\"address\"},{\"internalType\":\"contract IDelayedWithdrawalRouter\",\"name\":\"_delayedWithdrawalRouter\",\"type\":\"address\"},{\"internalType\":\"contract IEigenPodManager\",\"name\":\"_eigenPodManager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"_GENESIS_TIME\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"pubkey\",\"type\":\"bytes\"}],\"name\":\"EigenPodStaked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint40\",\"name\":\"validatorIndex\",\"type\":\"uint40\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"withdrawalTimestamp\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"withdrawalAmountGwei\",\"type\":\"uint64\"}],\"name\":\"FullWithdrawalRedeemed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceived\",\"type\":\"uint256\"}],\"name\":\"NonBeaconChainETHReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountWithdrawn\",\"type\":\"uint256\"}],\"name\":\"NonBeaconChainETHWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint40\",\"name\":\"validatorIndex\",\"type\":\"uint40\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"withdrawalTimestamp\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"partialWithdrawalAmountGwei\",\"type\":\"uint64\"}],\"name\":\"PartialWithdrawalRedeemed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RestakedBeaconChainETHWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"}],\"name\":\"RestakingActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint40\",\"name\":\"validatorIndex\",\"type\":\"uint40\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"balanceTimestamp\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newValidatorBalanceGwei\",\"type\":\"uint64\"}],\"name\":\"ValidatorBalanceUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint40\",\"name\":\"validatorIndex\",\"type\":\"uint40\"}],\"name\":\"ValidatorRestaked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"GENESIS_TIME\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activateRestaking\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delayedWithdrawalRouter\",\"outputs\":[{\"internalType\":\"contract IDelayedWithdrawalRouter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eigenPodManager\",\"outputs\":[{\"internalType\":\"contract IEigenPodManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ethPOS\",\"outputs\":[{\"internalType\":\"contract IETHPOSDeposit\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hasRestaked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_podOwner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mostRecentWithdrawalTimestamp\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonBeaconChainETHBalanceWei\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"podOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"provenWithdrawal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenList\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsToWithdraw\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"recoverTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"pubkey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"depositDataRoot\",\"type\":\"bytes32\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sumOfPartialWithdrawalsClaimedGwei\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validatorPubkeyHash\",\"type\":\"bytes32\"}],\"name\":\"validatorPubkeyHashToInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"validatorIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"restakedBalanceGwei\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"mostRecentBalanceUpdateTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"enum IEigenPod.VALIDATOR_STATUS\",\"name\":\"status\",\"type\":\"uint8\"}],\"internalType\":\"struct IEigenPod.ValidatorInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"validatorPubkey\",\"type\":\"bytes\"}],\"name\":\"validatorPubkeyToInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"validatorIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"restakedBalanceGwei\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"mostRecentBalanceUpdateTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"enum IEigenPod.VALIDATOR_STATUS\",\"name\":\"status\",\"type\":\"uint8\"}],\"internalType\":\"struct IEigenPod.ValidatorInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"validatorPubkey\",\"type\":\"bytes\"}],\"name\":\"validatorStatus\",\"outputs\":[{\"internalType\":\"enum IEigenPod.VALIDATOR_STATUS\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"pubkeyHash\",\"type\":\"bytes32\"}],\"name\":\"validatorStatus\",\"outputs\":[{\"internalType\":\"enum IEigenPod.VALIDATOR_STATUS\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"oracleTimestamp\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"beaconStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"internalType\":\"struct BeaconChainProofs.StateRootProof\",\"name\":\"stateRootProof\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"withdrawalProof\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"slotProof\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"executionPayloadProof\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"timestampProof\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"historicalSummaryBlockRootProof\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"blockRootIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"historicalSummaryIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"withdrawalIndex\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"blockRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"slotRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"timestampRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"executionPayloadRoot\",\"type\":\"bytes32\"}],\"internalType\":\"struct BeaconChainProofs.WithdrawalProof[]\",\"name\":\"withdrawalProofs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[]\",\"name\":\"validatorFieldsProofs\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes32[][]\",\"name\":\"validatorFields\",\"type\":\"bytes32[][]\"},{\"internalType\":\"bytes32[][]\",\"name\":\"withdrawalFields\",\"type\":\"bytes32[][]\"}],\"name\":\"verifyAndProcessWithdrawals\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"oracleTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint40[]\",\"name\":\"validatorIndices\",\"type\":\"uint40[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"beaconStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"internalType\":\"struct BeaconChainProofs.StateRootProof\",\"name\":\"stateRootProof\",\"type\":\"tuple\"},{\"internalType\":\"bytes[]\",\"name\":\"validatorFieldsProofs\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes32[][]\",\"name\":\"validatorFields\",\"type\":\"bytes32[][]\"}],\"name\":\"verifyBalanceUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"oracleTimestamp\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"beaconStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"internalType\":\"struct BeaconChainProofs.StateRootProof\",\"name\":\"stateRootProof\",\"type\":\"tuple\"},{\"internalType\":\"uint40[]\",\"name\":\"validatorIndices\",\"type\":\"uint40[]\"},{\"internalType\":\"bytes[]\",\"name\":\"validatorFieldsProofs\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes32[][]\",\"name\":\"validatorFields\",\"type\":\"bytes32[][]\"}],\"name\":\"verifyWithdrawalCredentials\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawBeforeRestaking\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountToWithdraw\",\"type\":\"uint256\"}],\"name\":\"withdrawNonBeaconChainETHBalanceWei\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountWei\",\"type\":\"uint256\"}],\"name\":\"withdrawRestakedBeaconChainETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawableRestakedExecutionLayerGwei\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"details\":\"Note that all beacon chain balances are stored as gwei within the beacon chain datastructures. We choose to account balances in terms of gwei in the EigenPod contract and convert to wei when making calls to other contracts\",\"kind\":\"dev\",\"methods\":{\"verifyAndProcessWithdrawals(uint64,(bytes32,bytes),(bytes,bytes,bytes,bytes,bytes,uint64,uint64,uint64,bytes32,bytes32,bytes32,bytes32)[],bytes[],bytes32[][],bytes32[][])\":{\"params\":{\"oracleTimestamp\":\"is the timestamp of the oracle slot that the withdrawal is being proven against\",\"stateRootProof\":\"proves a `beaconStateRoot` against a block root fetched from the oracle\",\"validatorFields\":\"are the fields of the validators being proven\",\"validatorFieldsProofs\":\"proves `validatorFields` against the `beaconStateRoot`\",\"withdrawalFields\":\"are the fields of the withdrawals being proven\",\"withdrawalProofs\":\"proves several withdrawal-related values against the `beaconStateRoot`\"}},\"verifyBalanceUpdates(uint64,uint40[],(bytes32,bytes),bytes[],bytes32[][])\":{\"details\":\"For more details on the Beacon Chain spec, see: https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/beacon-chain.md#validator\",\"params\":{\"oracleTimestamp\":\"The oracleTimestamp whose state root the proof will be proven against. Must be within `VERIFY_BALANCE_UPDATE_WINDOW_SECONDS` of the current block.\",\"stateRootProof\":\"proves a `beaconStateRoot` against a block root fetched from the oracle\",\"validatorFields\":\"are the fields of the \\\"Validator Container\\\", refer to consensus specs\",\"validatorFieldsProofs\":\"proofs against the `beaconStateRoot` for each validator in `validatorFields`\",\"validatorIndices\":\"is the list of indices of the validators being proven, refer to consensus specs\"}},\"verifyWithdrawalCredentials(uint64,(bytes32,bytes),uint40[],bytes[],bytes32[][])\":{\"params\":{\"oracleTimestamp\":\"is the Beacon Chain timestamp whose state root the `proof` will be proven against.\",\"stateRootProof\":\"proves a `beaconStateRoot` against a block root fetched from the oracle\",\"validatorFields\":\"are the fields of the \\\"Validator Container\\\", refer to consensus specs for details: https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/beacon-chain.md#validator\",\"validatorFieldsProofs\":\"proofs against the `beaconStateRoot` for each validator in `validatorFields`\",\"validatorIndices\":\"is the list of indices of the validators being proven, refer to consensus specs\"}},\"withdrawRestakedBeaconChainETH(address,uint256)\":{\"details\":\"The podOwner must have already proved sufficient withdrawals, so that this pod's `withdrawableRestakedExecutionLayerGwei` exceeds the `amountWei` input (when converted to GWEI).Reverts if `amountWei` is not a whole Gwei amount\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"},\"mostRecentWithdrawalTimestamp\":{\"details\":\"This variable is only updated when the `withdrawBeforeRestaking` function is called, which can only occur before `hasRestaked` is set to true for this pod. Proofs for this pod are only valid against Beacon Chain state roots corresponding to timestamps after the stored `mostRecentWithdrawalTimestamp`.\"}},\"title\":\"The implementation contract used for restaking beacon chain ETH on EigenLayer\",\"version\":1},\"userdoc\":{\"events\":{\"EigenPodStaked(bytes)\":{\"notice\":\"Emitted when an ETH validator stakes via this eigenPod\"},\"FullWithdrawalRedeemed(uint40,uint64,address,uint64)\":{\"notice\":\"Emitted when an ETH validator is prove to have withdrawn from the beacon chain\"},\"NonBeaconChainETHReceived(uint256)\":{\"notice\":\"Emitted when ETH is received via the `receive` fallback\"},\"NonBeaconChainETHWithdrawn(address,uint256)\":{\"notice\":\"Emitted when ETH that was previously received via the `receive` fallback is withdrawn\"},\"PartialWithdrawalRedeemed(uint40,uint64,address,uint64)\":{\"notice\":\"Emitted when a partial withdrawal claim is successfully redeemed\"},\"RestakedBeaconChainETHWithdrawn(address,uint256)\":{\"notice\":\"Emitted when restaked beacon chain ETH is withdrawn from the eigenPod.\"},\"RestakingActivated(address)\":{\"notice\":\"Emitted when podOwner enables restaking\"},\"ValidatorBalanceUpdated(uint40,uint64,uint64)\":{\"notice\":\"Emitted when an ETH validator's balance is proven to be updated. Here newValidatorBalanceGwei\"},\"ValidatorRestaked(uint40)\":{\"notice\":\"Emitted when an ETH validator's withdrawal credentials are successfully verified to be pointed to this eigenPod\"}},\"kind\":\"user\",\"methods\":{\"GENESIS_TIME()\":{\"notice\":\"This is the genesis time of the beacon state, to help us calculate conversions between slot and timestamp\"},\"MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR()\":{\"notice\":\"The maximum amount of ETH, in gwei, a validator can have restaked in the eigenlayer\"},\"activateRestaking()\":{\"notice\":\"Called by the pod owner to activate restaking by withdrawing all existing ETH from the pod and preventing further withdrawals via \\\"withdrawBeforeRestaking()\\\"\"},\"delayedWithdrawalRouter()\":{\"notice\":\"Contract used for withdrawal routing, to provide an extra \\\"safety net\\\" mechanism\"},\"eigenPodManager()\":{\"notice\":\"The single EigenPodManager for EigenLayer\"},\"ethPOS()\":{\"notice\":\"This is the beacon chain deposit contract\"},\"hasRestaked()\":{\"notice\":\"an indicator of whether or not the podOwner has ever \\\"fully restaked\\\" by successfully calling `verifyCorrectWithdrawalCredentials`.\"},\"initialize(address)\":{\"notice\":\"Used to initialize the pointers to addresses crucial to the pod's functionality. Called on construction by the EigenPodManager.\"},\"mostRecentWithdrawalTimestamp()\":{\"notice\":\"The latest timestamp at which the pod owner withdrew the balance of the pod, via calling `withdrawBeforeRestaking`.\"},\"nonBeaconChainETHBalanceWei()\":{\"notice\":\"This variable tracks any ETH deposited into this contract via the `receive` fallback function\"},\"podOwner()\":{\"notice\":\"The owner of this EigenPod\"},\"provenWithdrawal(bytes32,uint64)\":{\"notice\":\"This is a mapping of validatorPubkeyHash to timestamp to whether or not they have proven a withdrawal for that timestamp\"},\"recoverTokens(address[],uint256[],address)\":{\"notice\":\"called by owner of a pod to remove any ERC20s deposited in the pod\"},\"stake(bytes,bytes,bytes32)\":{\"notice\":\"Called by EigenPodManager when the owner wants to create another ETH validator.\"},\"sumOfPartialWithdrawalsClaimedGwei()\":{\"notice\":\"This variable tracks the total amount of partial withdrawals claimed via merkle proofs prior to a switch to ZK proofs for claiming partial withdrawals\"},\"validatorPubkeyHashToInfo(bytes32)\":{\"notice\":\"VIEW FUNCTIONS\"},\"validatorPubkeyToInfo(bytes)\":{\"notice\":\"Returns the validatorInfo for a given validatorPubkey\"},\"validatorStatus(bytes)\":{\"notice\":\"Returns the validator status for a given validatorPubkey\"},\"validatorStatus(bytes32)\":{\"notice\":\"This returns the status of a given validator\"},\"verifyAndProcessWithdrawals(uint64,(bytes32,bytes),(bytes,bytes,bytes,bytes,bytes,uint64,uint64,uint64,bytes32,bytes32,bytes32,bytes32)[],bytes[],bytes32[][],bytes32[][])\":{\"notice\":\"This function records full and partial withdrawals on behalf of one or more of this EigenPod's validators\"},\"verifyBalanceUpdates(uint64,uint40[],(bytes32,bytes),bytes[],bytes32[][])\":{\"notice\":\"This function records an update (either increase or decrease) in a validator's balance.\"},\"verifyWithdrawalCredentials(uint64,(bytes32,bytes),uint40[],bytes[],bytes32[][])\":{\"notice\":\"This function verifies that the withdrawal credentials of validator(s) owned by the podOwner are pointed to this contract. It also verifies the effective balance of the validator. It verifies the provided proof of the ETH validator against the beacon chain state root, marks the validator as 'active' in EigenLayer, and credits the restaked ETH in Eigenlayer.\"},\"withdrawBeforeRestaking()\":{\"notice\":\"Called by the pod owner to withdraw the balance of the pod when `hasRestaked` is set to false\"},\"withdrawNonBeaconChainETHBalanceWei(address,uint256)\":{\"notice\":\"Called by the pod owner to withdraw the nonBeaconChainETHBalanceWei\"},\"withdrawRestakedBeaconChainETH(address,uint256)\":{\"notice\":\"Transfers `amountWei` in ether from this contract to the specified `recipient` addressCalled by EigenPodManager to withdrawBeaconChainETH that has been added to the EigenPod's balance due to a withdrawal from the beacon chain.\"},\"withdrawableRestakedExecutionLayerGwei()\":{\"notice\":\"the amount of execution layer ETH in this contract that is staked in EigenLayer (i.e. withdrawn from the Beacon Chain but not from EigenLayer),\"}},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-serviceThe main functionalities are: - creating new ETH validators with their withdrawal credentials pointed to this contract - proving from beacon chain state roots that withdrawal credentials are pointed to this contract - proving from beacon chain state roots the balances of ETH validators with their withdrawal credentials pointed to this contract - updating aggregate balances in the EigenPodManager - withdrawing eth when withdrawals are initiatedThis EigenPod Beacon Proxy implementation adheres to the current Capella consensus specs\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/eigenlayer-contracts/src/contracts/pods/EigenPod.sol\":\"EigenPod\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelayedWithdrawalRouter.sol\":{\"keccak256\":\"0xb95beb93842fb31c1a9d30ddd038c34e33e8c1b4799b69a5010680dc5a7d3f96\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9cf102cba929ea228913038c6e83f7c2f5cbcb32f6bb5b1fe179fc754956d962\",\"dweb:/ipfs/QmPCWyfNZ8XniLJzZWtt6AioYYby65wSod1b5SXWaZSrXD\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x9906828f285cc76bbbe077f908d87c4bffd0a3bff9394f7a4b60a9d9a2672c1e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4c0f43e14e50ac322685b5cd301459118e2770bdfb053f8f3ded08ee9fbf5bf9\",\"dweb:/ipfs/QmPQtY6KEUCbrKwweu8BvA7YjnXXxkkuZPyLSRGV5EoPTe\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x1f8e17b0f952042132ca64e202022d83783b7f42ec364cd0cad1950ecb95a13d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a2be4c476902f25fb058f779e3d4e5b1182d9dc9fbdec518acbe9544c0d3c141\",\"dweb:/ipfs/QmdgZq6JrCD36Xry2vD8QSeGguGQ9TGWY2CMvKrhR9NQ6u\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x22b7a17d53696412f80645f1fa65274ae89040bdc706262e3b6cc577dbafcaa4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b15002346892a48fd7cf9a8a4cf121e17ba133d21e4822e71fbffac85117d6b2\",\"dweb:/ipfs/QmRBPJUcRQ6uKmSvCYhhtVWcKCAWkQFSVZZwZR7HR42kiz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x33a935182f77cfd508fc57ec8e45afc8dc3748e1e9b764d36bf90ae6466f257b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d3981b5bbf435cda04e2ed2f348f886ebf1500c18dd4bbf67b1f1bc0272e2d3f\",\"dweb:/ipfs/QmYHDzQx29ataM2ejRCXFcPxaPdxWqX8v7uwUAYoG9572w\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xffafae142d5337a5c204519e8f82fe3a5fae137286ebf597fa50699cf12c2474\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b577a12f7788095b230fd069b36ba9b3cdb376a0b7c3d8ae71588e5bf0c2f574\",\"dweb:/ipfs/QmXd1cDzYpxecyFEwowLiBKKjzRHgV8cs1qvLwypdEbVYy\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b\",\"dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x3d9eeecf96bd8d6427445db76b9a73f9861c6c3601001226bed2f7fb81e252e6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c836719a65892c5cffdba9de4e009e5f8a4e49aea9c5f46d57b15660c6c2d07d\",\"dweb:/ipfs/QmWuzNq2HdEH1hsRg8Jc95k1DZdNjXFb5ehkz9iLNNSqhT\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xaeee2ac5cfcc3388b63bef2668fa435c65a4b433b52ce9f5013822c6ec875fa3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://86eb6d3da5b45f7509995ffa170eaaadffbdd6d43e50f0902d421bb93a7dfda6\",\"dweb:/ipfs/QmWaYcgtnaVpcekSP7LyY6AGrE3hRE3kZE4H4EKhsSysDG\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x633b5fb10209891f696a9c8db4d7327ed7f560a2e9710489e38a67daeda59a96\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c8381baaec3afa6b200420c093706974776dfd14f6887abe7457eb867351a068\",\"dweb:/ipfs/QmP9H9ttS1sJ6FrvMEefJhU6B4z1wMCjcYYZqVfsLXagJE\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BytesLib.sol\":{\"keccak256\":\"0x64bb3f28b7f51411a03f55f16115323e35c4600c71f5e60350702a06b7c5dfca\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://55d3179bbf8f56eae51a710ef99bd14c2986512b7c6d4f8e98a5e8b37ebf37b4\",\"dweb:/ipfs/QmY33v1pWwqEqbVv1REEQsZjbVZWVXvbc1p8QvEWQUThUf\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0x1c5895f913e95682b0c371595cb1fa0d9c34ea921a0fbb5c32201b4315e80a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c470e449a3144fbaaa17b44823ba9cba901f063b04355c800bf62cabdd081cd4\",\"dweb:/ipfs/QmSJ8gaAF4WA1aXGmLesnnRo8fDZNEFnqZSGNkJnXLRM9R\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0xcf8422dfa6ccc393de19417570c6239e0fde54de9433ea258cbeb6937ff7f316\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://328e582c05b7311ad4107c46f554f15b5572b89a4ab6d067c73425b7418d946c\",\"dweb:/ipfs/QmdM81GQY5nok5oCTP8Cc6M8s1UC9f6ZbSWybaUxrZNrmY\"]},\"lib/eigenlayer-contracts/src/contracts/pods/EigenPod.sol\":{\"keccak256\":\"0x3d25254d945478ebc912a01892d1a66f73a85d90b915f749bdaf35875bfaed3e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5d1c5651b23f86fb23480fd0dcd25e68ed3b089b4908ef073de9f6a7a66523e7\",\"dweb:/ipfs/QmYSkUArUqKZ8uzzgmPmcdTY8RdzeWG7evpQtytWNBYxgd\"]},\"lib/eigenlayer-contracts/src/contracts/pods/EigenPodPausingConstants.sol\":{\"keccak256\":\"0x0937ea5223171c1d711d504c5fbf0331f0dff03af05f4f22cd7bcf9160aea2c7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://241e6543834359917a1a8cffd842aaee1350531ae7997bec87b5584d88d5bb8c\",\"dweb:/ipfs/QmXSXGg35ke6nDXCqvZ8sPNQZxUdXaCnAYpQfrBtXgEvDr\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xd6b579f342ff00b0b45eb2b97f1fb5274a2c52a8f59f13f174394a26b0c2030e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://55f68d7ea9ac2b0369c77e91b737d0e7991c302bf07b5a5b507147c449bcde20\",\"dweb:/ipfs/QmT8Uv9f7SbxmXsmUgrBpKMYjwv6fD3EFQB22fu51nYGLp\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x1e4597b288e792b4530cbc7e97e28754e8457969e61a86d9e6e3a2857eb8a68f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://41fb94e2f5df15c1d070865db82373dc85e52bc3a2f85e3aa338488f8616532c\",\"dweb:/ipfs/QmeKTieHBEur42JbTkn2JChdGx3GT9YZbVCP7wj2ejQvMj\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x1e5f62292e000eb24ff5a82fbe1310b5a03871d008bcd2e203e08cd044af0466\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d300b99404ad2930649be8508f7b1ed9940bc82facb7291a0540c1ec42badcaa\",\"dweb:/ipfs/QmW2xV7vTvtyJPDb5PwYBRSrs2qGMWV5rT6V9dzjaPUp9q\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xbe869c4cad825f4a6f7a21434bbc8252e577dae4786c4bd2f2a421704bc2b1cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30cd4807ea78eaf03e881abcdf080d2c66c9ecaafcbd80d303e04b4fed38f3d6\",\"dweb:/ipfs/QmPtiFV27ZVmk6jkqEdU8QZt8Hkz9yeLRG5X3rMLHrfyAw\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0x5fc40a61a22b8946e0ce31706ead391db6630b86dac67d240b8c2c15332d55e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08683782a30b65820507e570d3c3dbe6b28f227ece38faceba4006f0a5cdcd89\",\"dweb:/ipfs/QmWdZwfH5PqSa3g8xUFvKj9awcYGiX2hpGLy9zmrrRibzq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xb6e80baaeee0bf82ef5ea731e44b655b68c9d552f608f63c20493dba812d03de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a21bc37aeded55861430416fcb820a9529231b079ac97458d51240b83229e25e\",\"dweb:/ipfs/QmVR47X1A7EyMgheAGXjKt6e1gJUhjYq3iVLgS2Y9LQbck\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x78297d2d2e50b4fec6a42ecf5be5c76a6c102810388d11f165a363e0aa8f5034\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09968869e3943f45df330f42bdb49f96c71f55b5a424c73faba95135fafc5c78\",\"dweb:/ipfs/QmTLAoVbabvKZybmaFEHwib1feE2gWwN5yMcQBADVyBM5E\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IETHPOSDeposit","name":"_ethPOS","type":"address"},{"internalType":"contract IDelayedWithdrawalRouter","name":"_delayedWithdrawalRouter","type":"address"},{"internalType":"contract IEigenPodManager","name":"_eigenPodManager","type":"address"},{"internalType":"uint64","name":"_MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR","type":"uint64"},{"internalType":"uint64","name":"_GENESIS_TIME","type":"uint64"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"bytes","name":"pubkey","type":"bytes","indexed":false}],"type":"event","name":"EigenPodStaked","anonymous":false},{"inputs":[{"internalType":"uint40","name":"validatorIndex","type":"uint40","indexed":false},{"internalType":"uint64","name":"withdrawalTimestamp","type":"uint64","indexed":false},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint64","name":"withdrawalAmountGwei","type":"uint64","indexed":false}],"type":"event","name":"FullWithdrawalRedeemed","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"uint256","name":"amountReceived","type":"uint256","indexed":false}],"type":"event","name":"NonBeaconChainETHReceived","anonymous":false},{"inputs":[{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256","name":"amountWithdrawn","type":"uint256","indexed":false}],"type":"event","name":"NonBeaconChainETHWithdrawn","anonymous":false},{"inputs":[{"internalType":"uint40","name":"validatorIndex","type":"uint40","indexed":false},{"internalType":"uint64","name":"withdrawalTimestamp","type":"uint64","indexed":false},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint64","name":"partialWithdrawalAmountGwei","type":"uint64","indexed":false}],"type":"event","name":"PartialWithdrawalRedeemed","anonymous":false},{"inputs":[{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"RestakedBeaconChainETHWithdrawn","anonymous":false},{"inputs":[{"internalType":"address","name":"podOwner","type":"address","indexed":true}],"type":"event","name":"RestakingActivated","anonymous":false},{"inputs":[{"internalType":"uint40","name":"validatorIndex","type":"uint40","indexed":false},{"internalType":"uint64","name":"balanceTimestamp","type":"uint64","indexed":false},{"internalType":"uint64","name":"newValidatorBalanceGwei","type":"uint64","indexed":false}],"type":"event","name":"ValidatorBalanceUpdated","anonymous":false},{"inputs":[{"internalType":"uint40","name":"validatorIndex","type":"uint40","indexed":false}],"type":"event","name":"ValidatorRestaked","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"GENESIS_TIME","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"activateRestaking"},{"inputs":[],"stateMutability":"view","type":"function","name":"delayedWithdrawalRouter","outputs":[{"internalType":"contract IDelayedWithdrawalRouter","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eigenPodManager","outputs":[{"internalType":"contract IEigenPodManager","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"ethPOS","outputs":[{"internalType":"contract IETHPOSDeposit","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"hasRestaked","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_podOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"mostRecentWithdrawalTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nonBeaconChainETHBalanceWei","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"podOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function","name":"provenWithdrawal","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"contract IERC20[]","name":"tokenList","type":"address[]"},{"internalType":"uint256[]","name":"amountsToWithdraw","type":"uint256[]"},{"internalType":"address","name":"recipient","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"recoverTokens"},{"inputs":[{"internalType":"bytes","name":"pubkey","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes32","name":"depositDataRoot","type":"bytes32"}],"stateMutability":"payable","type":"function","name":"stake"},{"inputs":[],"stateMutability":"view","type":"function","name":"sumOfPartialWithdrawalsClaimedGwei","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes32","name":"validatorPubkeyHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"validatorPubkeyHashToInfo","outputs":[{"internalType":"struct IEigenPod.ValidatorInfo","name":"","type":"tuple","components":[{"internalType":"uint64","name":"validatorIndex","type":"uint64"},{"internalType":"uint64","name":"restakedBalanceGwei","type":"uint64"},{"internalType":"uint64","name":"mostRecentBalanceUpdateTimestamp","type":"uint64"},{"internalType":"enum IEigenPod.VALIDATOR_STATUS","name":"status","type":"uint8"}]}]},{"inputs":[{"internalType":"bytes","name":"validatorPubkey","type":"bytes"}],"stateMutability":"view","type":"function","name":"validatorPubkeyToInfo","outputs":[{"internalType":"struct IEigenPod.ValidatorInfo","name":"","type":"tuple","components":[{"internalType":"uint64","name":"validatorIndex","type":"uint64"},{"internalType":"uint64","name":"restakedBalanceGwei","type":"uint64"},{"internalType":"uint64","name":"mostRecentBalanceUpdateTimestamp","type":"uint64"},{"internalType":"enum IEigenPod.VALIDATOR_STATUS","name":"status","type":"uint8"}]}]},{"inputs":[{"internalType":"bytes","name":"validatorPubkey","type":"bytes"}],"stateMutability":"view","type":"function","name":"validatorStatus","outputs":[{"internalType":"enum IEigenPod.VALIDATOR_STATUS","name":"","type":"uint8"}]},{"inputs":[{"internalType":"bytes32","name":"pubkeyHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"validatorStatus","outputs":[{"internalType":"enum IEigenPod.VALIDATOR_STATUS","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"oracleTimestamp","type":"uint64"},{"internalType":"struct BeaconChainProofs.StateRootProof","name":"stateRootProof","type":"tuple","components":[{"internalType":"bytes32","name":"beaconStateRoot","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"}]},{"internalType":"struct BeaconChainProofs.WithdrawalProof[]","name":"withdrawalProofs","type":"tuple[]","components":[{"internalType":"bytes","name":"withdrawalProof","type":"bytes"},{"internalType":"bytes","name":"slotProof","type":"bytes"},{"internalType":"bytes","name":"executionPayloadProof","type":"bytes"},{"internalType":"bytes","name":"timestampProof","type":"bytes"},{"internalType":"bytes","name":"historicalSummaryBlockRootProof","type":"bytes"},{"internalType":"uint64","name":"blockRootIndex","type":"uint64"},{"internalType":"uint64","name":"historicalSummaryIndex","type":"uint64"},{"internalType":"uint64","name":"withdrawalIndex","type":"uint64"},{"internalType":"bytes32","name":"blockRoot","type":"bytes32"},{"internalType":"bytes32","name":"slotRoot","type":"bytes32"},{"internalType":"bytes32","name":"timestampRoot","type":"bytes32"},{"internalType":"bytes32","name":"executionPayloadRoot","type":"bytes32"}]},{"internalType":"bytes[]","name":"validatorFieldsProofs","type":"bytes[]"},{"internalType":"bytes32[][]","name":"validatorFields","type":"bytes32[][]"},{"internalType":"bytes32[][]","name":"withdrawalFields","type":"bytes32[][]"}],"stateMutability":"nonpayable","type":"function","name":"verifyAndProcessWithdrawals"},{"inputs":[{"internalType":"uint64","name":"oracleTimestamp","type":"uint64"},{"internalType":"uint40[]","name":"validatorIndices","type":"uint40[]"},{"internalType":"struct BeaconChainProofs.StateRootProof","name":"stateRootProof","type":"tuple","components":[{"internalType":"bytes32","name":"beaconStateRoot","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"}]},{"internalType":"bytes[]","name":"validatorFieldsProofs","type":"bytes[]"},{"internalType":"bytes32[][]","name":"validatorFields","type":"bytes32[][]"}],"stateMutability":"nonpayable","type":"function","name":"verifyBalanceUpdates"},{"inputs":[{"internalType":"uint64","name":"oracleTimestamp","type":"uint64"},{"internalType":"struct BeaconChainProofs.StateRootProof","name":"stateRootProof","type":"tuple","components":[{"internalType":"bytes32","name":"beaconStateRoot","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"}]},{"internalType":"uint40[]","name":"validatorIndices","type":"uint40[]"},{"internalType":"bytes[]","name":"validatorFieldsProofs","type":"bytes[]"},{"internalType":"bytes32[][]","name":"validatorFields","type":"bytes32[][]"}],"stateMutability":"nonpayable","type":"function","name":"verifyWithdrawalCredentials"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"withdrawBeforeRestaking"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amountToWithdraw","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdrawNonBeaconChainETHBalanceWei"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amountWei","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRestakedBeaconChainETH"},{"inputs":[],"stateMutability":"view","type":"function","name":"withdrawableRestakedExecutionLayerGwei","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"verifyAndProcessWithdrawals(uint64,(bytes32,bytes),(bytes,bytes,bytes,bytes,bytes,uint64,uint64,uint64,bytes32,bytes32,bytes32,bytes32)[],bytes[],bytes32[][],bytes32[][])":{"params":{"oracleTimestamp":"is the timestamp of the oracle slot that the withdrawal is being proven against","stateRootProof":"proves a `beaconStateRoot` against a block root fetched from the oracle","validatorFields":"are the fields of the validators being proven","validatorFieldsProofs":"proves `validatorFields` against the `beaconStateRoot`","withdrawalFields":"are the fields of the withdrawals being proven","withdrawalProofs":"proves several withdrawal-related values against the `beaconStateRoot`"}},"verifyBalanceUpdates(uint64,uint40[],(bytes32,bytes),bytes[],bytes32[][])":{"details":"For more details on the Beacon Chain spec, see: https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/beacon-chain.md#validator","params":{"oracleTimestamp":"The oracleTimestamp whose state root the proof will be proven against. Must be within `VERIFY_BALANCE_UPDATE_WINDOW_SECONDS` of the current block.","stateRootProof":"proves a `beaconStateRoot` against a block root fetched from the oracle","validatorFields":"are the fields of the \"Validator Container\", refer to consensus specs","validatorFieldsProofs":"proofs against the `beaconStateRoot` for each validator in `validatorFields`","validatorIndices":"is the list of indices of the validators being proven, refer to consensus specs"}},"verifyWithdrawalCredentials(uint64,(bytes32,bytes),uint40[],bytes[],bytes32[][])":{"params":{"oracleTimestamp":"is the Beacon Chain timestamp whose state root the `proof` will be proven against.","stateRootProof":"proves a `beaconStateRoot` against a block root fetched from the oracle","validatorFields":"are the fields of the \"Validator Container\", refer to consensus specs for details: https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/beacon-chain.md#validator","validatorFieldsProofs":"proofs against the `beaconStateRoot` for each validator in `validatorFields`","validatorIndices":"is the list of indices of the validators being proven, refer to consensus specs"}},"withdrawRestakedBeaconChainETH(address,uint256)":{"details":"The podOwner must have already proved sufficient withdrawals, so that this pod's `withdrawableRestakedExecutionLayerGwei` exceeds the `amountWei` input (when converted to GWEI).Reverts if `amountWei` is not a whole Gwei amount"}},"version":1},"userdoc":{"kind":"user","methods":{"GENESIS_TIME()":{"notice":"This is the genesis time of the beacon state, to help us calculate conversions between slot and timestamp"},"MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR()":{"notice":"The maximum amount of ETH, in gwei, a validator can have restaked in the eigenlayer"},"activateRestaking()":{"notice":"Called by the pod owner to activate restaking by withdrawing all existing ETH from the pod and preventing further withdrawals via \"withdrawBeforeRestaking()\""},"delayedWithdrawalRouter()":{"notice":"Contract used for withdrawal routing, to provide an extra \"safety net\" mechanism"},"eigenPodManager()":{"notice":"The single EigenPodManager for EigenLayer"},"ethPOS()":{"notice":"This is the beacon chain deposit contract"},"hasRestaked()":{"notice":"an indicator of whether or not the podOwner has ever \"fully restaked\" by successfully calling `verifyCorrectWithdrawalCredentials`."},"initialize(address)":{"notice":"Used to initialize the pointers to addresses crucial to the pod's functionality. Called on construction by the EigenPodManager."},"mostRecentWithdrawalTimestamp()":{"notice":"The latest timestamp at which the pod owner withdrew the balance of the pod, via calling `withdrawBeforeRestaking`."},"nonBeaconChainETHBalanceWei()":{"notice":"This variable tracks any ETH deposited into this contract via the `receive` fallback function"},"podOwner()":{"notice":"The owner of this EigenPod"},"provenWithdrawal(bytes32,uint64)":{"notice":"This is a mapping of validatorPubkeyHash to timestamp to whether or not they have proven a withdrawal for that timestamp"},"recoverTokens(address[],uint256[],address)":{"notice":"called by owner of a pod to remove any ERC20s deposited in the pod"},"stake(bytes,bytes,bytes32)":{"notice":"Called by EigenPodManager when the owner wants to create another ETH validator."},"sumOfPartialWithdrawalsClaimedGwei()":{"notice":"This variable tracks the total amount of partial withdrawals claimed via merkle proofs prior to a switch to ZK proofs for claiming partial withdrawals"},"validatorPubkeyHashToInfo(bytes32)":{"notice":"VIEW FUNCTIONS"},"validatorPubkeyToInfo(bytes)":{"notice":"Returns the validatorInfo for a given validatorPubkey"},"validatorStatus(bytes)":{"notice":"Returns the validator status for a given validatorPubkey"},"validatorStatus(bytes32)":{"notice":"This returns the status of a given validator"},"verifyAndProcessWithdrawals(uint64,(bytes32,bytes),(bytes,bytes,bytes,bytes,bytes,uint64,uint64,uint64,bytes32,bytes32,bytes32,bytes32)[],bytes[],bytes32[][],bytes32[][])":{"notice":"This function records full and partial withdrawals on behalf of one or more of this EigenPod's validators"},"verifyBalanceUpdates(uint64,uint40[],(bytes32,bytes),bytes[],bytes32[][])":{"notice":"This function records an update (either increase or decrease) in a validator's balance."},"verifyWithdrawalCredentials(uint64,(bytes32,bytes),uint40[],bytes[],bytes32[][])":{"notice":"This function verifies that the withdrawal credentials of validator(s) owned by the podOwner are pointed to this contract. It also verifies the effective balance of the validator. It verifies the provided proof of the ETH validator against the beacon chain state root, marks the validator as 'active' in EigenLayer, and credits the restaked ETH in Eigenlayer."},"withdrawBeforeRestaking()":{"notice":"Called by the pod owner to withdraw the balance of the pod when `hasRestaked` is set to false"},"withdrawNonBeaconChainETHBalanceWei(address,uint256)":{"notice":"Called by the pod owner to withdraw the nonBeaconChainETHBalanceWei"},"withdrawRestakedBeaconChainETH(address,uint256)":{"notice":"Transfers `amountWei` in ether from this contract to the specified `recipient` addressCalled by EigenPodManager to withdrawBeaconChainETH that has been added to the EigenPod's balance due to a withdrawal from the beacon chain."},"withdrawableRestakedExecutionLayerGwei()":{"notice":"the amount of execution layer ETH in this contract that is staked in EigenLayer (i.e. withdrawn from the Beacon Chain but not from EigenLayer),"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable/","@openzeppelin/=lib/openzeppelin-contracts/","ds-test/=lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-contracts/src/contracts/pods/EigenPod.sol":"EigenPod"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelayedWithdrawalRouter.sol":{"keccak256":"0xb95beb93842fb31c1a9d30ddd038c34e33e8c1b4799b69a5010680dc5a7d3f96","urls":["bzz-raw://9cf102cba929ea228913038c6e83f7c2f5cbcb32f6bb5b1fe179fc754956d962","dweb:/ipfs/QmPCWyfNZ8XniLJzZWtt6AioYYby65wSod1b5SXWaZSrXD"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x9906828f285cc76bbbe077f908d87c4bffd0a3bff9394f7a4b60a9d9a2672c1e","urls":["bzz-raw://4c0f43e14e50ac322685b5cd301459118e2770bdfb053f8f3ded08ee9fbf5bf9","dweb:/ipfs/QmPQtY6KEUCbrKwweu8BvA7YjnXXxkkuZPyLSRGV5EoPTe"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0x1f8e17b0f952042132ca64e202022d83783b7f42ec364cd0cad1950ecb95a13d","urls":["bzz-raw://a2be4c476902f25fb058f779e3d4e5b1182d9dc9fbdec518acbe9544c0d3c141","dweb:/ipfs/QmdgZq6JrCD36Xry2vD8QSeGguGQ9TGWY2CMvKrhR9NQ6u"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0x22b7a17d53696412f80645f1fa65274ae89040bdc706262e3b6cc577dbafcaa4","urls":["bzz-raw://b15002346892a48fd7cf9a8a4cf121e17ba133d21e4822e71fbffac85117d6b2","dweb:/ipfs/QmRBPJUcRQ6uKmSvCYhhtVWcKCAWkQFSVZZwZR7HR42kiz"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x33a935182f77cfd508fc57ec8e45afc8dc3748e1e9b764d36bf90ae6466f257b","urls":["bzz-raw://d3981b5bbf435cda04e2ed2f348f886ebf1500c18dd4bbf67b1f1bc0272e2d3f","dweb:/ipfs/QmYHDzQx29ataM2ejRCXFcPxaPdxWqX8v7uwUAYoG9572w"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0xffafae142d5337a5c204519e8f82fe3a5fae137286ebf597fa50699cf12c2474","urls":["bzz-raw://b577a12f7788095b230fd069b36ba9b3cdb376a0b7c3d8ae71588e5bf0c2f574","dweb:/ipfs/QmXd1cDzYpxecyFEwowLiBKKjzRHgV8cs1qvLwypdEbVYy"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4","urls":["bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b","dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x3d9eeecf96bd8d6427445db76b9a73f9861c6c3601001226bed2f7fb81e252e6","urls":["bzz-raw://c836719a65892c5cffdba9de4e009e5f8a4e49aea9c5f46d57b15660c6c2d07d","dweb:/ipfs/QmWuzNq2HdEH1hsRg8Jc95k1DZdNjXFb5ehkz9iLNNSqhT"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xaeee2ac5cfcc3388b63bef2668fa435c65a4b433b52ce9f5013822c6ec875fa3","urls":["bzz-raw://86eb6d3da5b45f7509995ffa170eaaadffbdd6d43e50f0902d421bb93a7dfda6","dweb:/ipfs/QmWaYcgtnaVpcekSP7LyY6AGrE3hRE3kZE4H4EKhsSysDG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x633b5fb10209891f696a9c8db4d7327ed7f560a2e9710489e38a67daeda59a96","urls":["bzz-raw://c8381baaec3afa6b200420c093706974776dfd14f6887abe7457eb867351a068","dweb:/ipfs/QmP9H9ttS1sJ6FrvMEefJhU6B4z1wMCjcYYZqVfsLXagJE"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BytesLib.sol":{"keccak256":"0x64bb3f28b7f51411a03f55f16115323e35c4600c71f5e60350702a06b7c5dfca","urls":["bzz-raw://55d3179bbf8f56eae51a710ef99bd14c2986512b7c6d4f8e98a5e8b37ebf37b4","dweb:/ipfs/QmY33v1pWwqEqbVv1REEQsZjbVZWVXvbc1p8QvEWQUThUf"],"license":"Unlicense"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0x1c5895f913e95682b0c371595cb1fa0d9c34ea921a0fbb5c32201b4315e80a56","urls":["bzz-raw://c470e449a3144fbaaa17b44823ba9cba901f063b04355c800bf62cabdd081cd4","dweb:/ipfs/QmSJ8gaAF4WA1aXGmLesnnRo8fDZNEFnqZSGNkJnXLRM9R"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0xcf8422dfa6ccc393de19417570c6239e0fde54de9433ea258cbeb6937ff7f316","urls":["bzz-raw://328e582c05b7311ad4107c46f554f15b5572b89a4ab6d067c73425b7418d946c","dweb:/ipfs/QmdM81GQY5nok5oCTP8Cc6M8s1UC9f6ZbSWybaUxrZNrmY"],"license":"MIT"},"lib/eigenlayer-contracts/src/contracts/pods/EigenPod.sol":{"keccak256":"0x3d25254d945478ebc912a01892d1a66f73a85d90b915f749bdaf35875bfaed3e","urls":["bzz-raw://5d1c5651b23f86fb23480fd0dcd25e68ed3b089b4908ef073de9f6a7a66523e7","dweb:/ipfs/QmYSkUArUqKZ8uzzgmPmcdTY8RdzeWG7evpQtytWNBYxgd"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/pods/EigenPodPausingConstants.sol":{"keccak256":"0x0937ea5223171c1d711d504c5fbf0331f0dff03af05f4f22cd7bcf9160aea2c7","urls":["bzz-raw://241e6543834359917a1a8cffd842aaee1350531ae7997bec87b5584d88d5bb8c","dweb:/ipfs/QmXSXGg35ke6nDXCqvZ8sPNQZxUdXaCnAYpQfrBtXgEvDr"],"license":"BUSL-1.1"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xd6b579f342ff00b0b45eb2b97f1fb5274a2c52a8f59f13f174394a26b0c2030e","urls":["bzz-raw://55f68d7ea9ac2b0369c77e91b737d0e7991c302bf07b5a5b507147c449bcde20","dweb:/ipfs/QmT8Uv9f7SbxmXsmUgrBpKMYjwv6fD3EFQB22fu51nYGLp"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x1e4597b288e792b4530cbc7e97e28754e8457969e61a86d9e6e3a2857eb8a68f","urls":["bzz-raw://41fb94e2f5df15c1d070865db82373dc85e52bc3a2f85e3aa338488f8616532c","dweb:/ipfs/QmeKTieHBEur42JbTkn2JChdGx3GT9YZbVCP7wj2ejQvMj"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x1e5f62292e000eb24ff5a82fbe1310b5a03871d008bcd2e203e08cd044af0466","urls":["bzz-raw://d300b99404ad2930649be8508f7b1ed9940bc82facb7291a0540c1ec42badcaa","dweb:/ipfs/QmW2xV7vTvtyJPDb5PwYBRSrs2qGMWV5rT6V9dzjaPUp9q"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol":{"keccak256":"0xbe869c4cad825f4a6f7a21434bbc8252e577dae4786c4bd2f2a421704bc2b1cf","urls":["bzz-raw://30cd4807ea78eaf03e881abcdf080d2c66c9ecaafcbd80d303e04b4fed38f3d6","dweb:/ipfs/QmPtiFV27ZVmk6jkqEdU8QZt8Hkz9yeLRG5X3rMLHrfyAw"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol":{"keccak256":"0x5fc40a61a22b8946e0ce31706ead391db6630b86dac67d240b8c2c15332d55e4","urls":["bzz-raw://08683782a30b65820507e570d3c3dbe6b28f227ece38faceba4006f0a5cdcd89","dweb:/ipfs/QmWdZwfH5PqSa3g8xUFvKj9awcYGiX2hpGLy9zmrrRibzq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xb6e80baaeee0bf82ef5ea731e44b655b68c9d552f608f63c20493dba812d03de","urls":["bzz-raw://a21bc37aeded55861430416fcb820a9529231b079ac97458d51240b83229e25e","dweb:/ipfs/QmVR47X1A7EyMgheAGXjKt6e1gJUhjYq3iVLgS2Y9LQbck"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x78297d2d2e50b4fec6a42ecf5be5c76a6c102810388d11f165a363e0aa8f5034","urls":["bzz-raw://09968869e3943f45df330f42bdb49f96c71f55b5a424c73faba95135fafc5c78","dweb:/ipfs/QmTLAoVbabvKZybmaFEHwib1feE2gWwN5yMcQBADVyBM5E"],"license":"MIT"}},"version":1},"id":30} \ No newline at end of file diff --git a/crates/utils/json/EigenPodManager.json b/crates/utils/json/EigenPodManager.json deleted file mode 100644 index 6ed932d9..00000000 --- a/crates/utils/json/EigenPodManager.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_ethPOS","type":"address","internalType":"contract IETHPOSDeposit"},{"name":"_eigenPodBeacon","type":"address","internalType":"contract IBeacon"},{"name":"_strategyManager","type":"address","internalType":"contract IStrategyManager"},{"name":"_slasher","type":"address","internalType":"contract ISlasher"},{"name":"_delegationManager","type":"address","internalType":"contract IDelegationManager"}],"stateMutability":"nonpayable"},{"type":"function","name":"addShares","inputs":[{"name":"podOwner","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"beaconChainETHStrategy","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IStrategy"}],"stateMutability":"view"},{"type":"function","name":"beaconChainOracle","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IBeaconChainOracle"}],"stateMutability":"view"},{"type":"function","name":"createPod","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"delegationManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IDelegationManager"}],"stateMutability":"view"},{"type":"function","name":"denebForkTimestamp","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"eigenPodBeacon","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IBeacon"}],"stateMutability":"view"},{"type":"function","name":"ethPOS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IETHPOSDeposit"}],"stateMutability":"view"},{"type":"function","name":"getBlockRootAtTimestamp","inputs":[{"name":"timestamp","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getPod","inputs":[{"name":"podOwner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"contract IEigenPod"}],"stateMutability":"view"},{"type":"function","name":"hasPod","inputs":[{"name":"podOwner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_beaconChainOracle","type":"address","internalType":"contract IBeaconChainOracle"},{"name":"initialOwner","type":"address","internalType":"address"},{"name":"_pauserRegistry","type":"address","internalType":"contract IPauserRegistry"},{"name":"_initPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"numPods","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"ownerToPod","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"contract IEigenPod"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[{"name":"newPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pauseAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[{"name":"index","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pauserRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPauserRegistry"}],"stateMutability":"view"},{"type":"function","name":"podOwnerShares","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"recordBeaconChainETHBalanceUpdate","inputs":[{"name":"podOwner","type":"address","internalType":"address"},{"name":"sharesDelta","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeShares","inputs":[{"name":"podOwner","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDenebForkTimestamp","inputs":[{"name":"newDenebForkTimestamp","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPauserRegistry","inputs":[{"name":"newPauserRegistry","type":"address","internalType":"contract IPauserRegistry"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slasher","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ISlasher"}],"stateMutability":"view"},{"type":"function","name":"stake","inputs":[{"name":"pubkey","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"depositDataRoot","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"strategyManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IStrategyManager"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","inputs":[{"name":"newPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateBeaconChainOracle","inputs":[{"name":"newBeaconChainOracle","type":"address","internalType":"contract IBeaconChainOracle"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawSharesAsTokens","inputs":[{"name":"podOwner","type":"address","internalType":"address"},{"name":"destination","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BeaconChainETHDeposited","inputs":[{"name":"podOwner","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BeaconChainETHWithdrawalCompleted","inputs":[{"name":"podOwner","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"nonce","type":"uint96","indexed":false,"internalType":"uint96"},{"name":"delegatedAddress","type":"address","indexed":false,"internalType":"address"},{"name":"withdrawer","type":"address","indexed":false,"internalType":"address"},{"name":"withdrawalRoot","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BeaconOracleUpdated","inputs":[{"name":"newOracleAddress","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"DenebForkTimestampUpdated","inputs":[{"name":"newValue","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PauserRegistrySet","inputs":[{"name":"pauserRegistry","type":"address","indexed":false,"internalType":"contract IPauserRegistry"},{"name":"newPauserRegistry","type":"address","indexed":false,"internalType":"contract IPauserRegistry"}],"anonymous":false},{"type":"event","name":"PodDeployed","inputs":[{"name":"eigenPod","type":"address","indexed":true,"internalType":"address"},{"name":"podOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PodSharesUpdated","inputs":[{"name":"podOwner","type":"address","indexed":true,"internalType":"address"},{"name":"sharesDelta","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x6101206040523480156200001257600080fd5b50604051620034e7380380620034e783398101604081905262000035916200014b565b6001600160a01b0380861660805280851660a05280841660c05280831660e0528116610100526200006562000070565b5050505050620001cb565b600054610100900460ff1615620000dd5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000130576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200014857600080fd5b50565b600080600080600060a086880312156200016457600080fd5b8551620001718162000132565b6020870151909550620001848162000132565b6040870151909450620001978162000132565b6060870151909350620001aa8162000132565b6080870151909250620001bd8162000132565b809150509295509295909350565b60805160a05160c05160e051610100516132a66200024160003960008181610636015281816106e001528181610b0e015281816113e70152818161187c015261196c01526000610542015260006102e601526000818161027a01528181611366015261203a0152600061041401526132a66000f3fe6080604052600436106101ee5760003560e01c80638da5cb5b1161010d578063c052bd61116100a0578063d1c64cc91161006f578063d1c64cc914610604578063ea4d3c9b14610624578063f2fde38b14610658578063f6848d2414610678578063fabc1cbc146106b357600080fd5b8063c052bd6114610584578063c1de3aef146105a4578063c2c51c40146105c4578063cf756fdf146105e457600080fd5b8063a38406a3116100dc578063a38406a3146104fa578063a6a509be1461051a578063b134427114610530578063beffbb891461056457600080fd5b80638da5cb5b1461046b5780639104c319146104895780639b4e4634146104b15780639ba06275146104c457600080fd5b8063595c6a6711610185578063715018a611610154578063715018a6146103ed57806374cdd7981461040257806384d8106214610436578063886f11951461044b57600080fd5b8063595c6a67146103565780635ac86ab71461036b5780635c975abb146103ab57806360f4062b146103c057600080fd5b8063387b1300116101c1578063387b1300146102b457806339b70e38146102d457806344e71c8014610308578063463db0381461033657600080fd5b80630e81073c146101f357806310d67a2f14610226578063136439dd14610248578063292b7b2b14610268575b600080fd5b3480156101ff57600080fd5b5061021361020e366004612406565b6106d3565b6040519081526020015b60405180910390f35b34801561023257600080fd5b50610246610241366004612432565b610911565b005b34801561025457600080fd5b5061024661026336600461244f565b6109c4565b34801561027457600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161021d565b3480156102c057600080fd5b506102466102cf366004612468565b610b03565b3480156102e057600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561031457600080fd5b5061031d610ea1565b60405167ffffffffffffffff909116815260200161021d565b34801561034257600080fd5b506102466103513660046124a9565b610eca565b34801561036257600080fd5b50610246611056565b34801561037757600080fd5b5061039b6103863660046124d3565b606654600160ff9092169190911b9081161490565b604051901515815260200161021d565b3480156103b757600080fd5b50606654610213565b3480156103cc57600080fd5b506102136103db366004612432565b609b6020526000908152604090205481565b3480156103f957600080fd5b5061024661111d565b34801561040e57600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561044257600080fd5b5061029c611131565b34801561045757600080fd5b5060655461029c906001600160a01b031681565b34801561047757600080fd5b506033546001600160a01b031661029c565b34801561049557600080fd5b5061029c73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102466104bf36600461253f565b61121b565b3480156104d057600080fd5b5061029c6104df366004612432565b6098602052600090815260409020546001600160a01b031681565b34801561050657600080fd5b5061029c610515366004612432565b61130a565b34801561052657600080fd5b5061021360995481565b34801561053c57600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561057057600080fd5b5061024661057f366004612406565b6113dc565b34801561059057600080fd5b5060975461029c906001600160a01b031681565b3480156105b057600080fd5b506102466105bf366004612432565b6115f3565b3480156105d057600080fd5b506102466105df366004612406565b611604565b3480156105f057600080fd5b506102466105ff3660046125b3565b611a07565b34801561061057600080fd5b5061021361061f3660046124a9565b611b30565b34801561063057600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561066457600080fd5b50610246610673366004612432565b611c3b565b34801561068457600080fd5b5061039b610693366004612432565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156106bf57600080fd5b506102466106ce36600461244f565b611cb1565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107265760405162461bcd60e51b815260040161071d90612604565b60405180910390fd5b6001600160a01b0383166107a25760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f2061646472657373000000000000606482015260840161071d565b60008212156108105760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b606482015260840161071d565b61081e633b9aca0083612678565b156108915760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e74000000606482015260840161071d565b6001600160a01b0383166000908152609b6020526040812054906108b584836126a2565b6001600160a01b0386166000818152609b6020526040908190208390555191925090600080516020613231833981519152906108f49087815260200190565b60405180910390a26109068282611e0d565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610964573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098891906126e3565b6001600160a01b0316336001600160a01b0316146109b85760405162461bcd60e51b815260040161071d90612700565b6109c181611e4f565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a30919061274a565b610a4c5760405162461bcd60e51b815260040161071d9061276c565b60665481811614610ac55760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b4b5760405162461bcd60e51b815260040161071d90612604565b6001600160a01b038316610bc55760405162461bcd60e51b8152602060048201526047602482015260008051602061325183398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a40161071d565b6001600160a01b038216610c425760405162461bcd60e51b815260206004820152604a602482015260008051602061325183398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a40161071d565b6000811215610cb15760405162461bcd60e51b8152602060048201526041602482015260008051602061325183398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a40161071d565b610cbf633b9aca0082612678565b15610d335760405162461bcd60e51b815260206004820152604a602482015260008051602061325183398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a40161071d565b6001600160a01b0383166000908152609b602052604081205490811215610e26576000610d5f826127b4565b905080831115610dc4576001600160a01b0385166000908152609b6020526040812055610d8c81846127d1565b9250846001600160a01b031660008051602061323183398151915282604051610db791815260200190565b60405180910390a2610e24565b6001600160a01b0385166000908152609b602052604081208054859290610dec9084906126a2565b90915550506040518381526001600160a01b038616906000805160206132318339815191529060200160405180910390a25050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610e8357600080fd5b505af1158015610e97573d6000803e3d6000fd5b5050505050505050565b609c5460009067ffffffffffffffff1680610ec55767ffffffffffffffff91505090565b919050565b610ed2611f46565b67ffffffffffffffff8116610f645760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f7420736574206e657744656e6562466f726b546960648201526b06d657374616d7020746f20360a41b608482015260a40161071d565b609c5467ffffffffffffffff16156110005760405162461bcd60e51b815260206004820152605360248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f74207365742064656e6562466f726b54696d657360648201527274616d70206d6f7265207468616e206f6e636560681b608482015260a40161071d565b609c805467ffffffffffffffff191667ffffffffffffffff83169081179091556040519081527f19200b6fdad58f91b2f496b0c444fc4be3eff74a7e24b07770e04a7137bfd9db9060200160405180910390a150565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561109e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c2919061274a565b6110de5760405162461bcd60e51b815260040161071d9061276c565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b611125611f46565b61112f6000611fa0565b565b6066546000908190600190811614156111885760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03161561120a5760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b606482015260840161071d565b6000611214611ff2565b9250505090565b606654600090600190811614156112705760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03168061129957611296611ff2565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906112cf908b908b908b908b908b90600401612811565b6000604051808303818588803b1580156112e857600080fd5b505af11580156112fc573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061090b576113d5836001600160a01b031660001b60405180610940016040528061090e815260200161292361090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f19818403018152908290526113ba9291602001612886565b60405160208183030381529060405280519060200120612157565b9392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114245760405162461bcd60e51b815260040161071d90612604565b600081121561149b5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e65676174697665000000000000000000606482015260840161071d565b6114a9633b9aca0082612678565b1561151e576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e74606482015260840161071d565b6001600160a01b0382166000908152609b602052604081205461154290839061289b565b905060008112156115d35760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a40161071d565b6001600160a01b039092166000908152609b602052604090209190915550565b6115fb611f46565b6109c1816121b3565b6001600160a01b03808316600090815260986020526040902054839116331461167f5760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b606482015260840161071d565b600260c95414156116d25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161071d565b600260c9556001600160a01b03831661176e5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a40161071d565b61177c633b9aca00836128da565b156118155760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a40161071d565b6001600160a01b0383166000908152609b60205260408120549061183984836126a2565b6001600160a01b0386166000908152609b602052604081208290559091506118618383611e0d565b905080156119c957600081121561192c576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118c0856127b4565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561190f57600080fd5b505af1158015611923573d6000803e3d6000fd5b505050506119c9565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b1580156119b057600080fd5b505af11580156119c4573d6000803e3d6000fd5b505050505b856001600160a01b0316600080516020613231833981519152866040516119f291815260200190565b60405180910390a25050600160c95550505050565b600054610100900460ff1615808015611a275750600054600160ff909116105b80611a415750303b158015611a41575060005460ff166001145b611aa45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161071d565b6000805460ff191660011790558015611ac7576000805461ff0019166101001790555b611ad0856121b3565b611ad984611fa0565b611ae383836121fd565b8015611b29576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60975460405163321accf960e11b815267ffffffffffffffff8316600482015260009182916001600160a01b039091169063643599f290602401602060405180830381865afa158015611b87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bab91906128ee565b90508061090b5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e676574426c6f636b526f6f744174546960448201527f6d657374616d703a20737461746520726f6f742061742074696d657374616d70606482015271081b9bdd081e595d08199a5b985b1a5e995960721b608482015260a40161071d565b611c43611f46565b6001600160a01b038116611ca85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161071d565b6109c181611fa0565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2891906126e3565b6001600160a01b0316336001600160a01b031614611d585760405162461bcd60e51b815260040161071d90612700565b606654198119606654191614611dd65760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610af8565b6000808313611e2d5760008213611e265750600061090b565b508061090b565b60008213611e4557611e3e836127b4565b905061090b565b611e3e838361289b565b6001600160a01b038116611edd5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161071d565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461112f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161071d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060996000815461200390612907565b9091555060408051610940810190915261090e8082526000916120a291839133916129236020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f198184030181529082905261208e9291602001612886565b6040516020818303038152906040526122e7565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b1580156120e657600080fd5b505af11580156120fa573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b16602183015260358201859052605580830185905283518084039091018152607590920190925280519101206000906113d5565b609780546001600160a01b0319166001600160a01b0383169081179091556040517f08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f690600090a250565b6065546001600160a01b031615801561221e57506001600160a01b03821615155b6122a05760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26122e382611e4f565b5050565b6000808447101561233a5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e6365000000604482015260640161071d565b82516123885760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640161071d565b8383516020850187f590506001600160a01b0381166123e95760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015260640161071d565b949350505050565b6001600160a01b03811681146109c157600080fd5b6000806040838503121561241957600080fd5b8235612424816123f1565b946020939093013593505050565b60006020828403121561244457600080fd5b81356113d5816123f1565b60006020828403121561246157600080fd5b5035919050565b60008060006060848603121561247d57600080fd5b8335612488816123f1565b92506020840135612498816123f1565b929592945050506040919091013590565b6000602082840312156124bb57600080fd5b813567ffffffffffffffff811681146113d557600080fd5b6000602082840312156124e557600080fd5b813560ff811681146113d557600080fd5b60008083601f84011261250857600080fd5b50813567ffffffffffffffff81111561252057600080fd5b60208301915083602082850101111561253857600080fd5b9250929050565b60008060008060006060868803121561255757600080fd5b853567ffffffffffffffff8082111561256f57600080fd5b61257b89838a016124f6565b9097509550602088013591508082111561259457600080fd5b506125a1888289016124f6565b96999598509660400135949350505050565b600080600080608085870312156125c957600080fd5b84356125d4816123f1565b935060208501356125e4816123f1565b925060408501356125f4816123f1565b9396929550929360600135925050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261268757612687612662565b500690565b634e487b7160e01b600052601160045260246000fd5b600080821280156001600160ff1b03849003851316156126c4576126c461268c565b600160ff1b83900384128116156126dd576126dd61268c565b50500190565b6000602082840312156126f557600080fd5b81516113d5816123f1565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561275c57600080fd5b815180151581146113d557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b8214156127ca576127ca61268c565b5060000390565b6000828210156127e3576127e361268c565b500390565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006128256060830187896127e8565b82810360208401526128388186886127e8565b9150508260408301529695505050505050565b6000815160005b8181101561286c5760208185018101518683015201612852565b8181111561287b576000828601525b509290920192915050565b60006123e9612895838661284b565b8461284b565b60008083128015600160ff1b8501841216156128b9576128b961268c565b6001600160ff1b03840183138116156128d4576128d461268c565b50500390565b6000826128e9576128e9612662565b500790565b60006020828403121561290057600080fd5b5051919050565b600060001982141561291b5761291b61268c565b506001019056fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a26469706673582212205a9800a39f336751ba0c70a74f6f55419bdbafb856117138bc057574046f0afe64736f6c634300080c0033","sourceMap":"923:15055:31:-:0;;;1478:336;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8082:16:32;;;;;8108:32;;;;;8150:34;;;;;8194:18;;;;;8222:38;;;;1785:22:31::1;:20;:22::i;:::-;1478:336:::0;;;;;923:15055;;5388:279:59;5456:13;;;;;;;5455:14;5447:66;;;;-1:-1:-1;;;5447:66:59;;1351:2:178;5447:66:59;;;1333:21:178;1390:2;1370:18;;;1363:30;1429:34;1409:18;;;1402:62;-1:-1:-1;;;1480:18:178;;;1473:37;1527:19;;5447:66:59;;;;;;;;5527:12;;5542:15;5527:12;;;:30;5523:138;;;5573:12;:30;;-1:-1:-1;;5573:30:59;5588:15;5573:30;;;;;;5622:28;;1699:36:178;;;5622:28:59;;1687:2:178;1672:18;5622:28:59;;;;;;;5523:138;5388:279::o;14:147:178:-;-1:-1:-1;;;;;105:31:178;;95:42;;85:70;;151:1;148;141:12;85:70;14:147;:::o;166:978::-;381:6;389;397;405;413;466:3;454:9;445:7;441:23;437:33;434:53;;;483:1;480;473:12;434:53;515:9;509:16;534:47;575:5;534:47;:::i;:::-;650:2;635:18;;629:25;600:5;;-1:-1:-1;663:49:178;629:25;663:49;:::i;:::-;783:2;768:18;;762:25;731:7;;-1:-1:-1;796:49:178;762:25;796:49;:::i;:::-;916:2;901:18;;895:25;864:7;;-1:-1:-1;929:49:178;895:25;929:49;:::i;:::-;1049:3;1034:19;;1028:26;997:7;;-1:-1:-1;1063:49:178;1028:26;1063:49;:::i;:::-;1131:7;1121:17;;;166:978;;;;;;;;:::o;1557:184::-;923:15055:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101ee5760003560e01c80638da5cb5b1161010d578063c052bd61116100a0578063d1c64cc91161006f578063d1c64cc914610604578063ea4d3c9b14610624578063f2fde38b14610658578063f6848d2414610678578063fabc1cbc146106b357600080fd5b8063c052bd6114610584578063c1de3aef146105a4578063c2c51c40146105c4578063cf756fdf146105e457600080fd5b8063a38406a3116100dc578063a38406a3146104fa578063a6a509be1461051a578063b134427114610530578063beffbb891461056457600080fd5b80638da5cb5b1461046b5780639104c319146104895780639b4e4634146104b15780639ba06275146104c457600080fd5b8063595c6a6711610185578063715018a611610154578063715018a6146103ed57806374cdd7981461040257806384d8106214610436578063886f11951461044b57600080fd5b8063595c6a67146103565780635ac86ab71461036b5780635c975abb146103ab57806360f4062b146103c057600080fd5b8063387b1300116101c1578063387b1300146102b457806339b70e38146102d457806344e71c8014610308578063463db0381461033657600080fd5b80630e81073c146101f357806310d67a2f14610226578063136439dd14610248578063292b7b2b14610268575b600080fd5b3480156101ff57600080fd5b5061021361020e366004612406565b6106d3565b6040519081526020015b60405180910390f35b34801561023257600080fd5b50610246610241366004612432565b610911565b005b34801561025457600080fd5b5061024661026336600461244f565b6109c4565b34801561027457600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161021d565b3480156102c057600080fd5b506102466102cf366004612468565b610b03565b3480156102e057600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561031457600080fd5b5061031d610ea1565b60405167ffffffffffffffff909116815260200161021d565b34801561034257600080fd5b506102466103513660046124a9565b610eca565b34801561036257600080fd5b50610246611056565b34801561037757600080fd5b5061039b6103863660046124d3565b606654600160ff9092169190911b9081161490565b604051901515815260200161021d565b3480156103b757600080fd5b50606654610213565b3480156103cc57600080fd5b506102136103db366004612432565b609b6020526000908152604090205481565b3480156103f957600080fd5b5061024661111d565b34801561040e57600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561044257600080fd5b5061029c611131565b34801561045757600080fd5b5060655461029c906001600160a01b031681565b34801561047757600080fd5b506033546001600160a01b031661029c565b34801561049557600080fd5b5061029c73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102466104bf36600461253f565b61121b565b3480156104d057600080fd5b5061029c6104df366004612432565b6098602052600090815260409020546001600160a01b031681565b34801561050657600080fd5b5061029c610515366004612432565b61130a565b34801561052657600080fd5b5061021360995481565b34801561053c57600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561057057600080fd5b5061024661057f366004612406565b6113dc565b34801561059057600080fd5b5060975461029c906001600160a01b031681565b3480156105b057600080fd5b506102466105bf366004612432565b6115f3565b3480156105d057600080fd5b506102466105df366004612406565b611604565b3480156105f057600080fd5b506102466105ff3660046125b3565b611a07565b34801561061057600080fd5b5061021361061f3660046124a9565b611b30565b34801561063057600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561066457600080fd5b50610246610673366004612432565b611c3b565b34801561068457600080fd5b5061039b610693366004612432565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156106bf57600080fd5b506102466106ce36600461244f565b611cb1565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107265760405162461bcd60e51b815260040161071d90612604565b60405180910390fd5b6001600160a01b0383166107a25760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f2061646472657373000000000000606482015260840161071d565b60008212156108105760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b606482015260840161071d565b61081e633b9aca0083612678565b156108915760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e74000000606482015260840161071d565b6001600160a01b0383166000908152609b6020526040812054906108b584836126a2565b6001600160a01b0386166000818152609b6020526040908190208390555191925090600080516020613231833981519152906108f49087815260200190565b60405180910390a26109068282611e0d565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610964573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098891906126e3565b6001600160a01b0316336001600160a01b0316146109b85760405162461bcd60e51b815260040161071d90612700565b6109c181611e4f565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a30919061274a565b610a4c5760405162461bcd60e51b815260040161071d9061276c565b60665481811614610ac55760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b4b5760405162461bcd60e51b815260040161071d90612604565b6001600160a01b038316610bc55760405162461bcd60e51b8152602060048201526047602482015260008051602061325183398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a40161071d565b6001600160a01b038216610c425760405162461bcd60e51b815260206004820152604a602482015260008051602061325183398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a40161071d565b6000811215610cb15760405162461bcd60e51b8152602060048201526041602482015260008051602061325183398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a40161071d565b610cbf633b9aca0082612678565b15610d335760405162461bcd60e51b815260206004820152604a602482015260008051602061325183398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a40161071d565b6001600160a01b0383166000908152609b602052604081205490811215610e26576000610d5f826127b4565b905080831115610dc4576001600160a01b0385166000908152609b6020526040812055610d8c81846127d1565b9250846001600160a01b031660008051602061323183398151915282604051610db791815260200190565b60405180910390a2610e24565b6001600160a01b0385166000908152609b602052604081208054859290610dec9084906126a2565b90915550506040518381526001600160a01b038616906000805160206132318339815191529060200160405180910390a25050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610e8357600080fd5b505af1158015610e97573d6000803e3d6000fd5b5050505050505050565b609c5460009067ffffffffffffffff1680610ec55767ffffffffffffffff91505090565b919050565b610ed2611f46565b67ffffffffffffffff8116610f645760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f7420736574206e657744656e6562466f726b546960648201526b06d657374616d7020746f20360a41b608482015260a40161071d565b609c5467ffffffffffffffff16156110005760405162461bcd60e51b815260206004820152605360248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f74207365742064656e6562466f726b54696d657360648201527274616d70206d6f7265207468616e206f6e636560681b608482015260a40161071d565b609c805467ffffffffffffffff191667ffffffffffffffff83169081179091556040519081527f19200b6fdad58f91b2f496b0c444fc4be3eff74a7e24b07770e04a7137bfd9db9060200160405180910390a150565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561109e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c2919061274a565b6110de5760405162461bcd60e51b815260040161071d9061276c565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b611125611f46565b61112f6000611fa0565b565b6066546000908190600190811614156111885760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03161561120a5760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b606482015260840161071d565b6000611214611ff2565b9250505090565b606654600090600190811614156112705760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03168061129957611296611ff2565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906112cf908b908b908b908b908b90600401612811565b6000604051808303818588803b1580156112e857600080fd5b505af11580156112fc573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061090b576113d5836001600160a01b031660001b60405180610940016040528061090e815260200161292361090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f19818403018152908290526113ba9291602001612886565b60405160208183030381529060405280519060200120612157565b9392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114245760405162461bcd60e51b815260040161071d90612604565b600081121561149b5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e65676174697665000000000000000000606482015260840161071d565b6114a9633b9aca0082612678565b1561151e576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e74606482015260840161071d565b6001600160a01b0382166000908152609b602052604081205461154290839061289b565b905060008112156115d35760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a40161071d565b6001600160a01b039092166000908152609b602052604090209190915550565b6115fb611f46565b6109c1816121b3565b6001600160a01b03808316600090815260986020526040902054839116331461167f5760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b606482015260840161071d565b600260c95414156116d25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161071d565b600260c9556001600160a01b03831661176e5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a40161071d565b61177c633b9aca00836128da565b156118155760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a40161071d565b6001600160a01b0383166000908152609b60205260408120549061183984836126a2565b6001600160a01b0386166000908152609b602052604081208290559091506118618383611e0d565b905080156119c957600081121561192c576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118c0856127b4565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561190f57600080fd5b505af1158015611923573d6000803e3d6000fd5b505050506119c9565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b1580156119b057600080fd5b505af11580156119c4573d6000803e3d6000fd5b505050505b856001600160a01b0316600080516020613231833981519152866040516119f291815260200190565b60405180910390a25050600160c95550505050565b600054610100900460ff1615808015611a275750600054600160ff909116105b80611a415750303b158015611a41575060005460ff166001145b611aa45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161071d565b6000805460ff191660011790558015611ac7576000805461ff0019166101001790555b611ad0856121b3565b611ad984611fa0565b611ae383836121fd565b8015611b29576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60975460405163321accf960e11b815267ffffffffffffffff8316600482015260009182916001600160a01b039091169063643599f290602401602060405180830381865afa158015611b87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bab91906128ee565b90508061090b5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e676574426c6f636b526f6f744174546960448201527f6d657374616d703a20737461746520726f6f742061742074696d657374616d70606482015271081b9bdd081e595d08199a5b985b1a5e995960721b608482015260a40161071d565b611c43611f46565b6001600160a01b038116611ca85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161071d565b6109c181611fa0565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2891906126e3565b6001600160a01b0316336001600160a01b031614611d585760405162461bcd60e51b815260040161071d90612700565b606654198119606654191614611dd65760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610af8565b6000808313611e2d5760008213611e265750600061090b565b508061090b565b60008213611e4557611e3e836127b4565b905061090b565b611e3e838361289b565b6001600160a01b038116611edd5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161071d565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461112f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161071d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060996000815461200390612907565b9091555060408051610940810190915261090e8082526000916120a291839133916129236020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f198184030181529082905261208e9291602001612886565b6040516020818303038152906040526122e7565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b1580156120e657600080fd5b505af11580156120fa573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b16602183015260358201859052605580830185905283518084039091018152607590920190925280519101206000906113d5565b609780546001600160a01b0319166001600160a01b0383169081179091556040517f08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f690600090a250565b6065546001600160a01b031615801561221e57506001600160a01b03821615155b6122a05760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26122e382611e4f565b5050565b6000808447101561233a5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e6365000000604482015260640161071d565b82516123885760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640161071d565b8383516020850187f590506001600160a01b0381166123e95760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015260640161071d565b949350505050565b6001600160a01b03811681146109c157600080fd5b6000806040838503121561241957600080fd5b8235612424816123f1565b946020939093013593505050565b60006020828403121561244457600080fd5b81356113d5816123f1565b60006020828403121561246157600080fd5b5035919050565b60008060006060848603121561247d57600080fd5b8335612488816123f1565b92506020840135612498816123f1565b929592945050506040919091013590565b6000602082840312156124bb57600080fd5b813567ffffffffffffffff811681146113d557600080fd5b6000602082840312156124e557600080fd5b813560ff811681146113d557600080fd5b60008083601f84011261250857600080fd5b50813567ffffffffffffffff81111561252057600080fd5b60208301915083602082850101111561253857600080fd5b9250929050565b60008060008060006060868803121561255757600080fd5b853567ffffffffffffffff8082111561256f57600080fd5b61257b89838a016124f6565b9097509550602088013591508082111561259457600080fd5b506125a1888289016124f6565b96999598509660400135949350505050565b600080600080608085870312156125c957600080fd5b84356125d4816123f1565b935060208501356125e4816123f1565b925060408501356125f4816123f1565b9396929550929360600135925050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261268757612687612662565b500690565b634e487b7160e01b600052601160045260246000fd5b600080821280156001600160ff1b03849003851316156126c4576126c461268c565b600160ff1b83900384128116156126dd576126dd61268c565b50500190565b6000602082840312156126f557600080fd5b81516113d5816123f1565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561275c57600080fd5b815180151581146113d557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b8214156127ca576127ca61268c565b5060000390565b6000828210156127e3576127e361268c565b500390565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006128256060830187896127e8565b82810360208401526128388186886127e8565b9150508260408301529695505050505050565b6000815160005b8181101561286c5760208185018101518683015201612852565b8181111561287b576000828601525b509290920192915050565b60006123e9612895838661284b565b8461284b565b60008083128015600160ff1b8501841216156128b9576128b961268c565b6001600160ff1b03840183138116156128d4576128d461268c565b50500390565b6000826128e9576128e9612662565b500790565b60006020828403121561290057600080fd5b5051919050565b600060001982141561291b5761291b61268c565b506001019056fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a26469706673582212205a9800a39f336751ba0c70a74f6f55419bdbafb856117138bc057574046f0afe64736f6c634300080c0033","sourceMap":"923:15055:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7634:880;;;;;;;;;;-1:-1:-1;7634:880:31;;;;;:::i;:::-;;:::i;:::-;;;616:25:178;;;604:2;589:18;7634:880:31;;;;;;;;5814:138:27;;;;;;;;;;-1:-1:-1;5814:138:27;;;;;:::i;:::-;;:::i;:::-;;3832:392;;;;;;;;;;-1:-1:-1;3832:392:27;;;;;:::i;:::-;;:::i;592:39:32:-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1294:32:178;;;1276:51;;1264:2;1249:18;592:39:32;1113:220:178;9000:1666:31;;;;;;;;;;-1:-1:-1;9000:1666:31;;;;;:::i;:::-;;:::i;692:49:32:-;;;;;;;;;;;;;;;15738:238:31;;;;;;;;;;;;;:::i;:::-;;;2206:18:178;2194:31;;;2176:50;;2164:2;2149:18;15738:238:31;2032:200:178;11232:515:31;;;;;;;;;;-1:-1:-1;11232:515:31;;;;;:::i;:::-;;:::i;4299:136:27:-;;;;;;;;;;;;;:::i;5594:149::-;;;;;;;;;;-1:-1:-1;5594:149:27;;;;;:::i;:::-;5712:7;;5683:1;:10;;;;;;;;5712:14;;;5711:24;;5594:149;;;;2965:14:178;;2958:22;2940:41;;2928:2;2913:18;5594:149:27;2800:187:178;5406:87:27;;;;;;;;;;-1:-1:-1;5479:7:27;;5406:87;;7775:48:32;;;;;;;;;;-1:-1:-1;7775:48:32;;;;;:::i;:::-;;;;;;;;;;;;;;2071:101:57;;;;;;;;;;;;;:::i;489:38:32:-;;;;;;;;;;;;;;;2374:319:31;;;;;;;;;;;;;:::i;1825:37:27:-;;;;;;;;;;-1:-1:-1;1825:37:27;;;;-1:-1:-1;;;;;1825:37:27;;;1441:85:57;;;;;;;;;;-1:-1:-1;1513:6:57;;-1:-1:-1;;;;;1513:6:57;1441:85;;6222:104:32;;;;;;;;;;;;6283:42;6222:104;;3115:452:31;;;;;;:::i;:::-;;:::i;6520:47:32:-;;;;;;;;;;-1:-1:-1;6520:47:32;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;6520:47:32;;;14192:568:31;;;;;;;;;;-1:-1:-1;14192:568:31;;;;;:::i;:::-;;:::i;6757:22:32:-;;;;;;;;;;;;;;;;794:33;;;;;;;;;;;;;;;6504:605:31;;;;;;;;;;-1:-1:-1;6504:605:31;;;;;:::i;:::-;;:::i;6415:43:32:-;;;;;;;;;;-1:-1:-1;6415:43:32;;;;-1:-1:-1;;;;;6415:43:32;;;10926:156:31;;;;;;;;;;-1:-1:-1;10926:156:31;;;;;:::i;:::-;;:::i;4047:1726::-;;;;;;;;;;-1:-1:-1;4047:1726:31;;;;;:::i;:::-;;:::i;1820:366::-;;;;;;;;;;-1:-1:-1;1820:366:31;;;;;:::i;:::-;;:::i;15135:357::-;;;;;;;;;;-1:-1:-1;15135:357:31;;;;;:::i;:::-;;:::i;890:53:32:-;;;;;;;;;;;;;;;2321:198:57;;;;;;;;;;-1:-1:-1;2321:198:57;;;;;:::i;:::-;;:::i;14863:128:31:-;;;;;;;;;;-1:-1:-1;14863:128:31;;;;;:::i;:::-;-1:-1:-1;;;;;14949:20:31;;;14918:4;14949:20;;;:10;:20;;;;;;;14941:43;;;14863:128;4911:425:27;;;;;;;;;;-1:-1:-1;4911:425:27;;;;;:::i;:::-;;:::i;7634:880:31:-;7727:7;1336:10;-1:-1:-1;;;;;1358:17:31;1336:40;;1315:139;;;;-1:-1:-1;;;1315:139:31;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;7754:22:31;::::1;7746:93;;;::::0;-1:-1:-1;;;7746:93:31;;8453:2:178;7746:93:31::1;::::0;::::1;8435:21:178::0;8492:2;8472:18;;;8465:30;8531:34;8511:18;;;8504:62;8602:28;8582:18;;;8575:56;8648:19;;7746:93:31::1;8251:422:178::0;7746:93:31::1;7875:1;7864:6;7857:19;;7849:84;;;::::0;-1:-1:-1;;;7849:84:31;;8880:2:178;7849:84:31::1;::::0;::::1;8862:21:178::0;8919:2;8899:18;;;8892:30;8958:34;8938:18;;;8931:62;-1:-1:-1;;;9009:18:178;;;9002:50;9069:19;;7849:84:31::1;8678:416:178::0;7849:84:31::1;7951:20;6151:3:32;7951:6:31::0;:20:::1;:::i;:::-;:25:::0;7943:99:::1;;;::::0;-1:-1:-1;;;7943:99:31;;9550:2:178;7943:99:31::1;::::0;::::1;9532:21:178::0;9589:2;9569:18;;;9562:30;9628:34;9608:18;;;9601:62;9699:31;9679:18;;;9672:59;9748:19;;7943:99:31::1;9348:425:178::0;7943:99:31::1;-1:-1:-1::0;;;;;8083:24:31;::::1;8052:28;8083:24:::0;;;:14:::1;:24;::::0;;;;;;8148:38:::1;8179:6:::0;8083:24;8148:38:::1;:::i;:::-;-1:-1:-1::0;;;;;8196:24:31;::::1;;::::0;;;:14:::1;:24;::::0;;;;;;:48;;;8260:42;8117:69;;-1:-1:-1;8196:24:31;-1:-1:-1;;;;;;;;;;;8260:42:31;::::1;::::0;8294:6;616:25:178;;604:2;589:18;;470:177;8260:42:31::1;;;;;;;;8341:156;8409:21;8461;8341:35;:156::i;:::-;8313:194;;;;1464:1;7634:880:::0;;;;:::o;5814:138:27:-;2285:14;;;;;;;;;-1:-1:-1;;;;;2285:14:27;-1:-1:-1;;;;;2285:23:27;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2271:39:27;:10;-1:-1:-1;;;;;2271:39:27;;2263:94;;;;-1:-1:-1;;;2263:94:27;;;;;;;:::i;:::-;5908:37:::1;5927:17;5908:18;:37::i;:::-;5814:138:::0;:::o;3832:392::-;2125:14;;:35;;-1:-1:-1;;;2125:35:27;;2149:10;2125:35;;;1276:51:178;-1:-1:-1;;;;;2125:14:27;;;;:23;;1249:18:178;;2125:35:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2117:88;;;;-1:-1:-1;;;2117:88:27;;;;;;;:::i;:::-;4064:7:::1;::::0;4034:25;;::::1;4033:38;4025:107;;;::::0;-1:-1:-1;;;4025:107:27;;11740:2:178;4025:107:27::1;::::0;::::1;11722:21:178::0;11779:2;11759:18;;;11752:30;11818:34;11798:18;;;11791:62;11889:26;11869:18;;;11862:54;11933:19;;4025:107:27::1;11538:420:178::0;4025:107:27::1;4142:7;:25:::0;;;4182:35:::1;::::0;616:25:178;;;4189:10:27::1;::::0;4182:35:::1;::::0;604:2:178;589:18;4182:35:27::1;;;;;;;;3832:392:::0;:::o;9000:1666:31:-;1336:10;-1:-1:-1;;;;;1358:17:31;1336:40;;1315:139;;;;-1:-1:-1;;;1315:139:31;;;;;;;:::i;:::-;-1:-1:-1;;;;;9156:22:31;::::1;9148:106;;;::::0;-1:-1:-1;;;9148:106:31;;12165:2:178;9148:106:31::1;::::0;::::1;12147:21:178::0;12204:2;12184:18;;;12177:30;-1:-1:-1;;;;;;;;;;;12223:18:178;;;12216:62;12314:34;12294:18;;;12287:62;-1:-1:-1;;;12365:19:178;;;12358:38;12413:19;;9148:106:31::1;11963:475:178::0;9148:106:31::1;-1:-1:-1::0;;;;;9272:25:31;::::1;9264:112;;;::::0;-1:-1:-1;;;9264:112:31;;12645:2:178;9264:112:31::1;::::0;::::1;12627:21:178::0;12684:2;12664:18;;;12657:30;-1:-1:-1;;;;;;;;;;;12703:18:178;;;12696:62;12794:34;12774:18;;;12767:62;-1:-1:-1;;;12845:19:178;;;12838:41;12896:19;;9264:112:31::1;12443:478:178::0;9264:112:31::1;9412:1;9401:6;9394:19;;9386:97;;;::::0;-1:-1:-1;;;9386:97:31;;13128:2:178;9386:97:31::1;::::0;::::1;13110:21:178::0;13167:2;13147:18;;;13140:30;-1:-1:-1;;;;;;;;;;;13186:18:178;;;13179:62;13277:34;13257:18;;;13250:62;-1:-1:-1;;;13328:19:178;;;13321:32;13370:19;;9386:97:31::1;12926:469:178::0;9386:97:31::1;9501:20;6151:3:32;9501:6:31::0;:20:::1;:::i;:::-;:25:::0;9493:112:::1;;;::::0;-1:-1:-1;;;9493:112:31;;13602:2:178;9493:112:31::1;::::0;::::1;13584:21:178::0;13641:2;13621:18;;;13614:30;-1:-1:-1;;;;;;;;;;;13660:18:178;;;13653:62;13751:34;13731:18;;;13724:62;-1:-1:-1;;;13802:19:178;;;13795:41;13853:19;;9493:112:31::1;13400:478:178::0;9493:112:31::1;-1:-1:-1::0;;;;;9646:24:31;::::1;9615:28;9646:24:::0;;;:14:::1;:24;::::0;;;;;;9776:25;::::1;9772:758;;;9817:27;9855:22;9856:21:::0;9855:22:::1;:::i;:::-;9817:61;;10009:19;10000:6;:28;9996:524;;;-1:-1:-1::0;;;;;10048:24:31;::::1;10075:1;10048:24:::0;;;:14:::1;:24;::::0;;;;:28;10094:29:::1;10104:19:::0;10094:29;::::1;:::i;:::-;;;10163:8;-1:-1:-1::0;;;;;10146:55:31::1;-1:-1:-1::0;;;;;;;;;;;10180:19:31::1;10146:55;;;;616:25:178::0;;604:2;589:18;;470:177;10146:55:31::1;;;;;;;;9996:524;;;-1:-1:-1::0;;;;;10374:24:31;::::1;;::::0;;;:14:::1;:24;::::0;;;;:42;;10409:6;;10374:24;:42:::1;::::0;10409:6;;10374:42:::1;:::i;:::-;::::0;;;-1:-1:-1;;10439:42:31::1;::::0;616:25:178;;;-1:-1:-1;;;;;10439:42:31;::::1;::::0;-1:-1:-1;;;;;;;;;;;10439:42:31;604:2:178;589:18;10439:42:31::1;;;;;;;10499:7;;9000:1666:::0;;;:::o;9996:524::-:1;9803:727;9772:758;-1:-1:-1::0;;;;;10587:20:31;;::::1;;::::0;;;:10:::1;:20;::::0;;;;;;;:72;;-1:-1:-1;;;10587:72:31;;14346:32:178;;;10587:72:31::1;::::0;::::1;14328:51:178::0;14395:18;;;14388:34;;;10587:20:31;::::1;::::0;:51:::1;::::0;14301:18:178;;10587:72:31::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9138:1528;9000:1666:::0;;;:::o;15738:238::-;15826:19;;15789:6;;15826:19;;15859:14;15855:115;;15896:16;15889:23;;;15738:238;:::o;15855:115::-;15950:9;15738:238;-1:-1:-1;15738:238:31:o;11232:515::-;1334:13:57;:11;:13::i;:::-;11343:26:31::1;::::0;::::1;11322:137;;;::::0;-1:-1:-1;;;11322:137:31;;14635:2:178;11322:137:31::1;::::0;::::1;14617:21:178::0;14674:2;14654:18;;;14647:30;14713:34;14693:18;;;14686:62;14784:34;14764:18;;;14757:62;-1:-1:-1;;;14835:19:178;;;14828:43;14888:19;;11322:137:31::1;14433:480:178::0;11322:137:31::1;11490:19;::::0;::::1;;:24:::0;11469:154:::1;;;::::0;-1:-1:-1;;;11469:154:31;;15120:2:178;11469:154:31::1;::::0;::::1;15102:21:178::0;15159:2;15139:18;;;15132:30;15198:34;15178:18;;;15171:62;15269:34;15249:18;;;15242:62;-1:-1:-1;;;15320:19:178;;;15313:50;15380:19;;11469:154:31::1;14918:487:178::0;11469:154:31::1;11634:19;:43:::0;;-1:-1:-1;;11634:43:31::1;;::::0;::::1;::::0;;::::1;::::0;;;11692:48:::1;::::0;2176:50:178;;;11692:48:31::1;::::0;2164:2:178;2149:18;11692:48:31::1;;;;;;;11232:515:::0;:::o;4299:136:27:-;2125:14;;:35;;-1:-1:-1;;;2125:35:27;;2149:10;2125:35;;;1276:51:178;-1:-1:-1;;;;;2125:14:27;;;;:23;;1249:18:178;;2125:35:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2117:88;;;;-1:-1:-1;;;2117:88:27;;;;;;;:::i;:::-;-1:-1:-1;;4349:7:27::1;:27:::0;;;4391:37:::1;::::0;616:25:178;;;4398:10:27::1;::::0;4391:37:::1;::::0;604:2:178;589:18;4391:37:27::1;;;;;;;4299:136::o:0;2071:101:57:-;1334:13;:11;:13::i;:::-;2135:30:::1;2162:1;2135:18;:30::i;:::-;2071:101::o:0;2374:319:31:-;5712:7:27;;2453::31;;;;5683:1:27;5712:14;;;5711:24;2767:14;2759:52;;;;-1:-1:-1;;;2759:52:27;;15612:2:178;2759:52:27;;;15594:21:178;15651:2;15631:18;;;15624:30;-1:-1:-1;;;15670:18:178;;;15663:55;15735:18;;2759:52:27;15410:349:178;2759:52:27;2488:10:31::1;14918:4:::0;14949:20;;;:10;:20;;;;;;-1:-1:-1;;;;;14949:20:31;14941:43;2472:83:::1;;;::::0;-1:-1:-1;;;2472:83:31;;15966:2:178;2472:83:31::1;::::0;::::1;15948:21:178::0;16005:2;15985:18;;;15978:30;16044:34;16024:18;;;16017:62;-1:-1:-1;;;16095:18:178;;;16088:49;16154:19;;2472:83:31::1;15764:415:178::0;2472:83:31::1;2628:13;2644:12;:10;:12::i;:::-;2628:28:::0;-1:-1:-1;;2374:319:31;;:::o;3115:452::-;5712:7:27;;473:1:33;;5683::27;5712:14;;;5711:24;2767:14;2759:52;;;;-1:-1:-1;;;2759:52:27;;15612:2:178;2759:52:27;;;15594:21:178;15651:2;15631:18;;;15624:30;-1:-1:-1;;;15670:18:178;;;15663:55;15735:18;;2759:52:27;15410:349:178;2759:52:27;3326:10:31::1;3299:13;3315:22:::0;;;:10:::1;:22;::::0;;;;;-1:-1:-1;;;;;3315:22:31::1;3351:26:::0;3347:141:::1;;3465:12;:10;:12::i;:::-;3459:18;;3347:141;3497:63;::::0;-1:-1:-1;;;3497:63:31;;-1:-1:-1;;;;;3497:9:31;::::1;::::0;::::1;::::0;3514::::1;::::0;3497:63:::1;::::0;3525:6;;;;3533:9;;;;3544:15;;3497:63:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;3289:278;3115:452:::0;;;;;;:::o;14192:568::-;-1:-1:-1;;;;;14284:20:31;;;14247:9;14284:20;;;:10;:20;;;;;;14247:9;;14284:20;14417:26;14413:321;;14492:217;14560:8;-1:-1:-1;;;;;14544:26:31;14536:35;;14627:19;;;;;;;;;;;;;;;;;14648:30;;;-1:-1:-1;;;;;14659:14:31;17209:32:178;14648:30:31;;;17191:51:178;17258:18;;;17251:30;;;;-1:-1:-1;17297:18:178;;;17290:29;17336:18;;14648:30:31;;;-1:-1:-1;;14648:30:31;;;;;;;;;;14610:69;;;14648:30;14610:69;;:::i;:::-;;;;;;;;;;;;;14600:80;;;;;;14492:22;:217::i;:::-;14459:264;14750:3;-1:-1:-1;;;14192:568:31:o;6504:605::-;1336:10;-1:-1:-1;;;;;1358:17:31;1336:40;;1315:139;;;;-1:-1:-1;;;1315:139:31;;;;;;;:::i;:::-;6627:1:::1;6616:6;6609:19;;6601:87;;;::::0;-1:-1:-1;;;6601:87:31;;18174:2:178;6601:87:31::1;::::0;::::1;18156:21:178::0;18213:2;18193:18;;;18186:30;18252:34;18232:18;;;18225:62;18323:25;18303:18;;;18296:53;18366:19;;6601:87:31::1;17972:419:178::0;6601:87:31::1;6706:20;6151:3:32;6706:6:31::0;:20:::1;:::i;:::-;:25:::0;6698:102:::1;;;::::0;;-1:-1:-1;;;6698:102:31;;18598:2:178;6698:102:31::1;::::0;::::1;18580:21:178::0;18617:18;;;18610:30;;;;18676:34;18656:18;;;18649:62;18747:34;18727:18;;;18720:62;18799:19;;6698:102:31::1;18396:428:178::0;6698:102:31::1;-1:-1:-1::0;;;;;6841:24:31;::::1;6810:28;6841:24:::0;;;:14:::1;:24;::::0;;;;;:41:::1;::::0;6875:6;;6841:41:::1;:::i;:::-;6810:72;;6938:1;6913:21;:26;;6892:152;;;::::0;-1:-1:-1;;;6892:152:31;;19303:2:178;6892:152:31::1;::::0;::::1;19285:21:178::0;19342:2;19322:18;;;19315:30;19381:34;19361:18;;;19354:62;19452:34;19432:18;;;19425:62;-1:-1:-1;;;19503:19:178;;;19496:46;19559:19;;6892:152:31::1;19101:483:178::0;6892:152:31::1;-1:-1:-1::0;;;;;7054:24:31;;::::1;;::::0;;;:14:::1;:24;::::0;;;;:48;;;;-1:-1:-1;6504:605:31:o;10926:156::-;1334:13:57;:11;:13::i;:::-;11029:46:31::1;11054:20;11029:24;:46::i;4047:1726::-:0;-1:-1:-1;;;;;1169:20:31;;;;;;;:10;:20;;;;;;4166:8;;1169:20;1194:10;1161:43;1153:95;;;;-1:-1:-1;;;1153:95:31;;19791:2:178;1153:95:31;;;19773:21:178;19830:2;19810:18;;;19803:30;19869:34;19849:18;;;19842:62;-1:-1:-1;;;19920:18:178;;;19913:37;19967:19;;1153:95:31;19589:403:178;1153:95:31;1816:1:60::1;2570:7;;:19;;2562:63;;;::::0;-1:-1:-1;;;2562:63:60;;20199:2:178;2562:63:60::1;::::0;::::1;20181:21:178::0;20238:2;20218:18;;;20211:30;20277:33;20257:18;;;20250:61;20328:18;;2562:63:60::1;19997:355:178::0;2562:63:60::1;1816:1;2700:7;:18:::0;-1:-1:-1;;;;;4232:22:31;::::2;4211:139;;;::::0;-1:-1:-1;;;4211:139:31;;20559:2:178;4211:139:31::2;::::0;::::2;20541:21:178::0;20598:2;20578:18;;;20571:30;20637:34;20617:18;;;20610:62;20708:34;20688:18;;;20681:62;-1:-1:-1;;;20759:19:178;;;20752:49;20818:19;;4211:139:31::2;20357:486:178::0;4211:139:31::2;4381:33;6151:3:32;4381:11:31::0;:33:::2;:::i;:::-;:38:::0;4360:175:::2;;;::::0;-1:-1:-1;;;4360:175:31;;21167:2:178;4360:175:31::2;::::0;::::2;21149:21:178::0;21206:2;21186:18;;;21179:30;21245:34;21225:18;;;21218:62;21316:34;21296:18;;;21289:62;21388:28;21367:19;;;21360:57;21434:19;;4360:175:31::2;20965:494:178::0;4360:175:31::2;-1:-1:-1::0;;;;;4576:24:31;::::2;4545:28;4576:24:::0;;;:14:::2;:24;::::0;;;;;;4641:35:::2;4665:11:::0;4576:24;4641:35:::2;:::i;:::-;-1:-1:-1::0;;;;;4686:24:31;::::2;;::::0;;;:14:::2;:24;::::0;;;;:48;;;4610:66;;-1:-1:-1;4857:144:31::2;4921:21:::0;4610:66;4857:35:::2;:144::i;:::-;4822:179:::0;-1:-1:-1;5115:30:31;;5111:602:::2;;5193:1;5165:25;:29;5161:542;;;-1:-1:-1::0;;;;;5214:17:31::2;:41;;5286:8:::0;6283:42:32::2;5386:26:31;5387:25:::0;5386:26:::2;:::i;:::-;5214:218;::::0;-1:-1:-1;;;;;;5214:218:31::2;::::0;;;;;;-1:-1:-1;;;;;21740:15:178;;;5214:218:31::2;::::0;::::2;21722:34:178::0;21792:15;;;;21772:18;;;21765:43;21824:18;;;21817:34;21657:18;;5214:218:31::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;5161:542;;;5471:217;::::0;-1:-1:-1;;;5471:217:31;;-1:-1:-1;;;;;21740:15:178;;;5471:217:31::2;::::0;::::2;21722:34:178::0;6283:42:32::2;21772:18:178::0;;;21765:43;21824:18;;;21817:34;;;5471:17:31::2;:41;::::0;::::2;::::0;21657:18:178;;5471:217:31::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;5161:542;5744:8;-1:-1:-1::0;;;;;5727:39:31::2;-1:-1:-1::0;;;;;;;;;;;5754:11:31::2;5727:39;;;;616:25:178::0;;604:2;589:18;;470:177;5727:39:31::2;;;;;;;;-1:-1:-1::0;;1773:1:60::1;2873:7;:22:::0;-1:-1:-1;;;;4047:1726:31:o;1820:366::-;3111:19:59;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:59;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:59;1476:19:61;:23;;;3219:66:59;;-1:-1:-1;3268:12:59;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:59;;22064:2:178;3157:201:59;;;22046:21:178;22103:2;22083:18;;;22076:30;22142:34;22122:18;;;22115:62;-1:-1:-1;;;22193:18:178;;;22186:44;22247:19;;3157:201:59;21862:410:178;3157:201:59;3368:12;:16;;-1:-1:-1;;3368:16:59;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:59;;;;;3394:65;2030:44:31::1;2055:18;2030:24;:44::i;:::-;2084:32;2103:12;2084:18;:32::i;:::-;2126:53;2144:15;2161:17;2126;:53::i;:::-;3483:14:59::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;3513:21:59;;;3553:14;;-1:-1:-1;22429:36:178;;3553:14:59;;22417:2:178;22402:18;3553:14:59;;;;;;;3479:99;3101:483;1820:366:31;;;;:::o;15135:357::-;15248:17;;:49;;-1:-1:-1;;;15248:49:31;;2206:18:178;2194:31;;15248:49:31;;;2176:50:178;15209:7:31;;;;-1:-1:-1;;;;;15248:17:31;;;;:38;;2149:18:178;;15248:49:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15228:69;-1:-1:-1;15328:23:31;15307:152;;;;-1:-1:-1;;;15307:152:31;;23073:2:178;15307:152:31;;;23055:21:178;23112:2;23092:18;;;23085:30;23151:34;23131:18;;;23124:62;23222:34;23202:18;;;23195:62;-1:-1:-1;;;23273:19:178;;;23266:49;23332:19;;15307:152:31;22871:486:178;2321:198:57;1334:13;:11;:13::i;:::-;-1:-1:-1;;;;;2409:22:57;::::1;2401:73;;;::::0;-1:-1:-1;;;2401:73:57;;23564:2:178;2401:73:57::1;::::0;::::1;23546:21:178::0;23603:2;23583:18;;;23576:30;23642:34;23622:18;;;23615:62;-1:-1:-1;;;23693:18:178;;;23686:36;23739:19;;2401:73:57::1;23362:402:178::0;2401:73:57::1;2484:28;2503:8;2484:18;:28::i;4911:425:27:-:0;2285:14;;;;;;;;;-1:-1:-1;;;;;2285:14:27;-1:-1:-1;;;;;2285:23:27;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2271:39:27;:10;-1:-1:-1;;;;;2271:39:27;;2263:94;;;;-1:-1:-1;;;2263:94:27;;;;;;;:::i;:::-;5164:7:::1;;5163:8;5141:15;5140:16;5128:7;;5127:8;5126:31;5125:47;5104:138;;;::::0;-1:-1:-1;;;5104:138:27;;23971:2:178;5104:138:27::1;::::0;::::1;23953:21:178::0;24010:2;23990:18;;;23983:30;24049:34;24029:18;;;24022:62;24120:26;24100:18;;;24093:54;24164:19;;5104:138:27::1;23769:420:178::0;5104:138:27::1;5252:7;:25:::0;;;5292:37:::1;::::0;616:25:178;;;5301:10:27::1;::::0;5292:37:::1;::::0;604:2:178;589:18;5292:37:27::1;470:177:178::0;12964:1098:31;13097:6;13139:1;13123:12;:17;13119:937;;13305:1;13290:11;:16;13286:259;;-1:-1:-1;13333:1:31;13326:8;;13286:259;-1:-1:-1;13519:11:31;13512:18;;13119:937;13731:1;13716:11;:16;13712:334;;13760:13;13761:12;13760:13;:::i;:::-;13752:22;;;;13712:334;14004:26;14018:12;14004:11;:26;:::i;6012:360:27:-;-1:-1:-1;;;;;6115:40:27;;6094:160;;;;-1:-1:-1;;;6094:160:27;;24396:2:178;6094:160:27;;;24378:21:178;24435:2;24415:18;;;24408:30;24474:34;24454:18;;;24447:62;24545:34;24525:18;;;24518:62;-1:-1:-1;;;24596:19:178;;;24589:40;24646:19;;6094:160:27;24194:477:178;6094:160:27;6287:14;;6269:52;;;-1:-1:-1;;;;;6287:14:27;;;24936:34:178;;25006:15;;;25001:2;24986:18;;24979:43;6269:52:27;;24871:18:178;6269:52:27;;;;;;;6331:14;:34;;-1:-1:-1;;;;;;6331:34:27;-1:-1:-1;;;;;6331:34:27;;;;;;;;;;6012:360::o;1599:130:57:-;1513:6;;-1:-1:-1;;;;;1513:6:57;921:10:63;1662:23:57;1654:68;;;;-1:-1:-1;;;1654:68:57;;25235:2:178;1654:68:57;;;25217:21:178;;;25254:18;;;25247:30;25313:34;25293:18;;;25286:62;25365:18;;1654:68:57;25033:356:178;2673:187:57;2765:6;;;-1:-1:-1;;;;;2781:17:57;;;-1:-1:-1;;;;;;2781:17:57;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;11780:619:31:-;11820:9;11843:7;;11841:9;;;;;:::i;:::-;;;;-1:-1:-1;12130:19:31;;;;;;;;;;;;;11886:13;;11925:271;;11886:13;;12000:10;;12130:19;;;;;12151:30;;;-1:-1:-1;;;;;12162:14:31;17209:32:178;12151:30:31;;;17191:51:178;17258:18;;;17251:30;;;;-1:-1:-1;17297:18:178;;;17290:29;17336:18;;12151:30:31;;;-1:-1:-1;;12151:30:31;;;;;;;;;;12113:69;;;12151:30;12113:69;;:::i;:::-;;;;;;;;;;;;;11925:14;:271::i;:::-;12216:26;;-1:-1:-1;;;12216:26:31;;12231:10;12216:26;;;1276:51:178;11886:320:31;;-1:-1:-1;;;;;;12216:14:31;;;;;1249:18:178;;12216:26:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12303:10:31;12292:22;;;;:10;:22;;;;;;:28;;-1:-1:-1;;;;;;12292:28:31;-1:-1:-1;;;;;12292:28:31;;;;;;;;12335:37;;12303:10;;-1:-1:-1;12292:28:31;-1:-1:-1;12335:37:31;;;12389:3;11780:619;-1:-1:-1;11780:619:31:o;1807:165:89:-;2361:60;;;-1:-1:-1;;;;;;2361:60:89;;;;27298:39:178;;;;-1:-1:-1;;1959:4:89;27374:2:178;27370:15;27366:53;27353:11;;;27346:74;27436:12;;;27429:28;;;27473:12;;;;27466:28;;;2361:60:89;;;;;;;;;;27510:12:178;;;;2361:60:89;;;2351:71;;;;;1890:7;;1916:49;2215:263;12486:206:31;12580:17;:40;;-1:-1:-1;;;;;;12580:40:31;-1:-1:-1;;;;;12580:40:31;;;;;;;;12635:50;;;;-1:-1:-1;;12635:50:31;12486:206;:::o;2943:441:27:-;3077:14;;-1:-1:-1;;;;;3077:14:27;3069:37;:79;;;;-1:-1:-1;;;;;;3110:38:27;;;;3069:79;3048:197;;;;-1:-1:-1;;;3048:197:27;;25736:2:178;3048:197:27;;;25718:21:178;25775:2;25755:18;;;25748:30;25814:34;25794:18;;;25787:62;25885:34;25865:18;;;25858:62;-1:-1:-1;;;25936:19:178;;;25929:38;25984:19;;3048:197:27;25534:475:178;3048:197:27;3255:7;:26;;;3296:36;;616:25:178;;;3303:10:27;;3296:36;;604:2:178;589:18;3296:36:27;;;;;;;3342:35;3361:15;3342:18;:35::i;:::-;2943:441;;:::o;1081:522:89:-;1168:7;1187:12;1242:6;1217:21;:31;;1209:73;;;;-1:-1:-1;;;1209:73:89;;26216:2:178;1209:73:89;;;26198:21:178;26255:2;26235:18;;;26228:30;26294:31;26274:18;;;26267:59;26343:18;;1209:73:89;26014:353:178;1209:73:89;1300:15;;1292:65;;;;-1:-1:-1;;;1292:65:89;;26574:2:178;1292:65:89;;;26556:21:178;;;26593:18;;;26586:30;26652:34;26632:18;;;26625:62;26704:18;;1292:65:89;26372:356:178;1292:65:89;1495:4;1484:8;1478:15;1471:4;1461:8;1457:19;1449:6;1441:59;1433:67;-1:-1:-1;;;;;;1527:18:89;;1519:56;;;;-1:-1:-1;;;1519:56:89;;26935:2:178;1519:56:89;;;26917:21:178;26974:2;26954:18;;;26947:30;27013:27;26993:18;;;26986:55;27058:18;;1519:56:89;26733:349:178;1519:56:89;1592:4;1081:522;-1:-1:-1;;;;1081:522:89:o;14:131:178:-;-1:-1:-1;;;;;89:31:178;;79:42;;69:70;;135:1;132;125:12;150:315;218:6;226;279:2;267:9;258:7;254:23;250:32;247:52;;;295:1;292;285:12;247:52;334:9;321:23;353:31;378:5;353:31;:::i;:::-;403:5;455:2;440:18;;;;427:32;;-1:-1:-1;;;150:315:178:o;652:271::-;735:6;788:2;776:9;767:7;763:23;759:32;756:52;;;804:1;801;794:12;756:52;843:9;830:23;862:31;887:5;862:31;:::i;928:180::-;987:6;1040:2;1028:9;1019:7;1015:23;1011:32;1008:52;;;1056:1;1053;1046:12;1008:52;-1:-1:-1;1079:23:178;;928:180;-1:-1:-1;928:180:178:o;1338:456::-;1415:6;1423;1431;1484:2;1472:9;1463:7;1459:23;1455:32;1452:52;;;1500:1;1497;1490:12;1452:52;1539:9;1526:23;1558:31;1583:5;1558:31;:::i;:::-;1608:5;-1:-1:-1;1665:2:178;1650:18;;1637:32;1678:33;1637:32;1678:33;:::i;:::-;1338:456;;1730:7;;-1:-1:-1;;;1784:2:178;1769:18;;;;1756:32;;1338:456::o;2237:284::-;2295:6;2348:2;2336:9;2327:7;2323:23;2319:32;2316:52;;;2364:1;2361;2354:12;2316:52;2403:9;2390:23;2453:18;2446:5;2442:30;2435:5;2432:41;2422:69;;2487:1;2484;2477:12;2526:269;2583:6;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;2691:9;2678:23;2741:4;2734:5;2730:16;2723:5;2720:27;2710:55;;2761:1;2758;2751:12;4321:347;4372:8;4382:6;4436:3;4429:4;4421:6;4417:17;4413:27;4403:55;;4454:1;4451;4444:12;4403:55;-1:-1:-1;4477:20:178;;4520:18;4509:30;;4506:50;;;4552:1;4549;4542:12;4506:50;4589:4;4581:6;4577:17;4565:29;;4641:3;4634:4;4625:6;4617;4613:19;4609:30;4606:39;4603:59;;;4658:1;4655;4648:12;4603:59;4321:347;;;;;:::o;4673:785::-;4772:6;4780;4788;4796;4804;4857:2;4845:9;4836:7;4832:23;4828:32;4825:52;;;4873:1;4870;4863:12;4825:52;4913:9;4900:23;4942:18;4983:2;4975:6;4972:14;4969:34;;;4999:1;4996;4989:12;4969:34;5038:58;5088:7;5079:6;5068:9;5064:22;5038:58;:::i;:::-;5115:8;;-1:-1:-1;5012:84:178;-1:-1:-1;5203:2:178;5188:18;;5175:32;;-1:-1:-1;5219:16:178;;;5216:36;;;5248:1;5245;5238:12;5216:36;;5287:60;5339:7;5328:8;5317:9;5313:24;5287:60;:::i;:::-;4673:785;;;;-1:-1:-1;5366:8:178;5448:2;5433:18;5420:32;;4673:785;-1:-1:-1;;;;4673:785:178:o;6747:649::-;6884:6;6892;6900;6908;6961:3;6949:9;6940:7;6936:23;6932:33;6929:53;;;6978:1;6975;6968:12;6929:53;7017:9;7004:23;7036:31;7061:5;7036:31;:::i;:::-;7086:5;-1:-1:-1;7143:2:178;7128:18;;7115:32;7156:33;7115:32;7156:33;:::i;:::-;7208:7;-1:-1:-1;7267:2:178;7252:18;;7239:32;7280:33;7239:32;7280:33;:::i;:::-;6747:649;;;;-1:-1:-1;7332:7:178;;7386:2;7371:18;7358:32;;-1:-1:-1;;6747:649:178:o;7818:428::-;8020:2;8002:21;;;8059:2;8039:18;;;8032:30;;;8098:34;8078:18;;;8071:62;8169:34;8164:2;8149:18;;8142:62;8236:3;8221:19;;7818:428::o;9099:127::-;9160:10;9155:3;9151:20;9148:1;9141:31;9191:4;9188:1;9181:15;9215:4;9212:1;9205:15;9231:112;9263:1;9289;9279:35;;9294:18;;:::i;:::-;-1:-1:-1;9328:9:178;;9231:112::o;9778:127::-;9839:10;9834:3;9830:20;9827:1;9820:31;9870:4;9867:1;9860:15;9894:4;9891:1;9884:15;9910:265;9949:3;9977:9;;;10002:10;;-1:-1:-1;;;;;10021:27:178;;;10014:35;;9998:52;9995:78;;;10053:18;;:::i;:::-;-1:-1:-1;;;10100:19:178;;;10093:27;;10085:36;;10082:62;;;10124:18;;:::i;:::-;-1:-1:-1;;10160:9:178;;9910:265::o;10180:251::-;10250:6;10303:2;10291:9;10282:7;10278:23;10274:32;10271:52;;;10319:1;10316;10309:12;10271:52;10351:9;10345:16;10370:31;10395:5;10370:31;:::i;10436:406::-;10638:2;10620:21;;;10677:2;10657:18;;;10650:30;10716:34;10711:2;10696:18;;10689:62;-1:-1:-1;;;10782:2:178;10767:18;;10760:40;10832:3;10817:19;;10436:406::o;10847:277::-;10914:6;10967:2;10955:9;10946:7;10942:23;10938:32;10935:52;;;10983:1;10980;10973:12;10935:52;11015:9;11009:16;11068:5;11061:13;11054:21;11047:5;11044:32;11034:60;;11090:1;11087;11080:12;11129:404;11331:2;11313:21;;;11370:2;11350:18;;;11343:30;11409:34;11404:2;11389:18;;11382:62;-1:-1:-1;;;11475:2:178;11460:18;;11453:38;11523:3;11508:19;;11129:404::o;13883:136::-;13918:3;-1:-1:-1;;;13939:22:178;;13936:48;;;13964:18;;:::i;:::-;-1:-1:-1;14004:1:178;14000:13;;13883:136::o;14024:125::-;14064:4;14092:1;14089;14086:8;14083:34;;;14097:18;;:::i;:::-;-1:-1:-1;14134:9:178;;14024:125::o;16184:266::-;16272:6;16267:3;16260:19;16324:6;16317:5;16310:4;16305:3;16301:14;16288:43;-1:-1:-1;16376:1:178;16351:16;;;16369:4;16347:27;;;16340:38;;;;16432:2;16411:15;;;-1:-1:-1;;16407:29:178;16398:39;;;16394:50;;16184:266::o;16455:502::-;16696:2;16685:9;16678:21;16659:4;16722:61;16779:2;16768:9;16764:18;16756:6;16748;16722:61;:::i;:::-;16831:9;16823:6;16819:22;16814:2;16803:9;16799:18;16792:50;16859:49;16901:6;16893;16885;16859:49;:::i;:::-;16851:57;;;16944:6;16939:2;16928:9;16924:18;16917:34;16455:502;;;;;;;;:::o;17365:336::-;17406:3;17444:5;17438:12;17468:1;17478:128;17492:6;17489:1;17486:13;17478:128;;;17589:4;17574:13;;;17570:24;;17564:31;17551:11;;;17544:52;17507:12;17478:128;;;17624:6;17621:1;17618:13;17615:48;;;17659:1;17650:6;17645:3;17641:16;17634:27;17615:48;-1:-1:-1;17679:16:178;;;;;17365:336;-1:-1:-1;;17365:336:178:o;17706:261::-;17881:3;17906:55;17931:29;17956:3;17948:6;17931:29;:::i;:::-;17923:6;17906:55;:::i;18829:267::-;18868:4;18897:9;;;18922:10;;-1:-1:-1;;;18941:19:178;;18934:27;;18918:44;18915:70;;;18965:18;;:::i;:::-;-1:-1:-1;;;;;19012:27:178;;19005:35;;18997:44;;18994:70;;;19044:18;;:::i;:::-;-1:-1:-1;;19081:9:178;;18829:267::o;20848:112::-;20879:1;20905;20895:35;;20910:18;;:::i;:::-;-1:-1:-1;20944:10:178;;20848:112::o;22682:184::-;22752:6;22805:2;22793:9;22784:7;22780:23;22776:32;22773:52;;;22821:1;22818;22811:12;22773:52;-1:-1:-1;22844:16:178;;22682:184;-1:-1:-1;22682:184:178:o;25394:135::-;25433:3;-1:-1:-1;;25454:17:178;;25451:43;;;25474:18;;:::i;:::-;-1:-1:-1;25521:1:178;25510:13;;25394:135::o","linkReferences":{},"immutableReferences":{"14001":[{"start":1044,"length":32}],"14005":[{"start":634,"length":32},{"start":4966,"length":32},{"start":8250,"length":32}],"14009":[{"start":742,"length":32}],"14013":[{"start":1346,"length":32}],"14017":[{"start":1590,"length":32},{"start":1760,"length":32},{"start":2830,"length":32},{"start":5095,"length":32},{"start":6268,"length":32},{"start":6508,"length":32}]}},"methodIdentifiers":{"addShares(address,uint256)":"0e81073c","beaconChainETHStrategy()":"9104c319","beaconChainOracle()":"c052bd61","createPod()":"84d81062","delegationManager()":"ea4d3c9b","denebForkTimestamp()":"44e71c80","eigenPodBeacon()":"292b7b2b","ethPOS()":"74cdd798","getBlockRootAtTimestamp(uint64)":"d1c64cc9","getPod(address)":"a38406a3","hasPod(address)":"f6848d24","initialize(address,address,address,uint256)":"cf756fdf","numPods()":"a6a509be","owner()":"8da5cb5b","ownerToPod(address)":"9ba06275","pause(uint256)":"136439dd","pauseAll()":"595c6a67","paused()":"5c975abb","paused(uint8)":"5ac86ab7","pauserRegistry()":"886f1195","podOwnerShares(address)":"60f4062b","recordBeaconChainETHBalanceUpdate(address,int256)":"c2c51c40","removeShares(address,uint256)":"beffbb89","renounceOwnership()":"715018a6","setDenebForkTimestamp(uint64)":"463db038","setPauserRegistry(address)":"10d67a2f","slasher()":"b1344271","stake(bytes,bytes,bytes32)":"9b4e4634","strategyManager()":"39b70e38","transferOwnership(address)":"f2fde38b","unpause(uint256)":"fabc1cbc","updateBeaconChainOracle(address)":"c1de3aef","withdrawSharesAsTokens(address,address,uint256)":"387b1300"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IETHPOSDeposit\",\"name\":\"_ethPOS\",\"type\":\"address\"},{\"internalType\":\"contract IBeacon\",\"name\":\"_eigenPodBeacon\",\"type\":\"address\"},{\"internalType\":\"contract IStrategyManager\",\"name\":\"_strategyManager\",\"type\":\"address\"},{\"internalType\":\"contract ISlasher\",\"name\":\"_slasher\",\"type\":\"address\"},{\"internalType\":\"contract IDelegationManager\",\"name\":\"_delegationManager\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BeaconChainETHDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"nonce\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"delegatedAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"withdrawalRoot\",\"type\":\"bytes32\"}],\"name\":\"BeaconChainETHWithdrawalCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOracleAddress\",\"type\":\"address\"}],\"name\":\"BeaconOracleUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newValue\",\"type\":\"uint64\"}],\"name\":\"DenebForkTimestampUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IPauserRegistry\",\"name\":\"pauserRegistry\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"PauserRegistrySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"eigenPod\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"}],\"name\":\"PodDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"sharesDelta\",\"type\":\"int256\"}],\"name\":\"PodSharesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"addShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"beaconChainETHStrategy\",\"outputs\":[{\"internalType\":\"contract IStrategy\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"beaconChainOracle\",\"outputs\":[{\"internalType\":\"contract IBeaconChainOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"createPod\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegationManager\",\"outputs\":[{\"internalType\":\"contract IDelegationManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"denebForkTimestamp\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eigenPodBeacon\",\"outputs\":[{\"internalType\":\"contract IBeacon\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ethPOS\",\"outputs\":[{\"internalType\":\"contract IETHPOSDeposit\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"}],\"name\":\"getBlockRootAtTimestamp\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"}],\"name\":\"getPod\",\"outputs\":[{\"internalType\":\"contract IEigenPod\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"}],\"name\":\"hasPod\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IBeaconChainOracle\",\"name\":\"_beaconChainOracle\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"contract IPauserRegistry\",\"name\":\"_pauserRegistry\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_initPausedStatus\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"numPods\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"ownerToPod\",\"outputs\":[{\"internalType\":\"contract IEigenPod\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauserRegistry\",\"outputs\":[{\"internalType\":\"contract IPauserRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"podOwnerShares\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"},{\"internalType\":\"int256\",\"name\":\"sharesDelta\",\"type\":\"int256\"}],\"name\":\"recordBeaconChainETHBalanceUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"removeShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newDenebForkTimestamp\",\"type\":\"uint64\"}],\"name\":\"setDenebForkTimestamp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"setPauserRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slasher\",\"outputs\":[{\"internalType\":\"contract ISlasher\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"pubkey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"depositDataRoot\",\"type\":\"bytes32\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"strategyManager\",\"outputs\":[{\"internalType\":\"contract IStrategyManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IBeaconChainOracle\",\"name\":\"newBeaconChainOracle\",\"type\":\"address\"}],\"name\":\"updateBeaconChainOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"withdrawSharesAsTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"kind\":\"dev\",\"methods\":{\"addShares(address,uint256)\":{\"details\":\"Returns the number of shares added to `podOwnerShares[podOwner]` above zero, which will be less than the `shares` input in the event that the podOwner has an existing shares deficit (i.e. `podOwnerShares[podOwner]` starts below zero)Reverts if `shares` is not a whole Gwei amount\"},\"createPod()\":{\"details\":\"Function will revert if the `msg.sender` already has an EigenPod.Returns EigenPod address\"},\"denebForkTimestamp()\":{\"details\":\"This allows restricting the storage variable to be set once and only once.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pause(uint256)\":{\"details\":\"This function can only pause functionality, and thus cannot 'unflip' any bit in `_paused` from 1 to 0.\",\"params\":{\"newPausedStatus\":\"represents the new value for `_paused` to take, which means it may flip several bits at once.\"}},\"recordBeaconChainETHBalanceUpdate(address,int256)\":{\"details\":\"Callable only by the podOwner's EigenPod contract.Reverts if `sharesDelta` is not a whole Gwei amount\",\"params\":{\"podOwner\":\"is the pod owner whose balance is being updated.\",\"sharesDelta\":\"is the change in podOwner's beaconChainETHStrategy shares\"}},\"removeShares(address,uint256)\":{\"details\":\"This function reverts if it would result in `podOwnerShares[podOwner]` being less than zero, i.e. it is forbidden for this function to result in the `podOwner` incurring a \\\"share deficit\\\". This behavior prevents a Staker from queuing a withdrawal which improperly removes excessive shares from the operator to whom the staker is delegated.Reverts if `shares` is not a whole Gwei amountThe delegation manager validates that the podOwner is not address(0)\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setDenebForkTimestamp(uint64)\":{\"params\":{\"newDenebForkTimestamp\":\"is the new timestamp of the Deneb fork\"}},\"stake(bytes,bytes,bytes32)\":{\"params\":{\"depositDataRoot\":\"The root/hash of the deposit data for the validator's deposit.\",\"pubkey\":\"The 48 bytes public key of the beacon chain validator.\",\"signature\":\"The validator's signature of the deposit data.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unpause(uint256)\":{\"details\":\"This function can only unpause functionality, and thus cannot 'flip' any bit in `_paused` from 0 to 1.\",\"params\":{\"newPausedStatus\":\"represents the new value for `_paused` to take, which means it may flip several bits at once.\"}},\"updateBeaconChainOracle(address)\":{\"details\":\"Callable only by the owner of this contract (i.e. governance)\",\"params\":{\"newBeaconChainOracle\":\"is the new oracle contract being pointed to\"}},\"withdrawSharesAsTokens(address,address,uint256)\":{\"details\":\"Prioritizes decreasing the podOwner's share deficit, if they have oneReverts if `shares` is not a whole Gwei amountThis function assumes that `removeShares` has already been called by the delegationManager, hence why we do not need to update the podOwnerShares if `currentPodOwnerShares` is positive\"}},\"title\":\"The contract used for creating and managing EigenPods\",\"version\":1},\"userdoc\":{\"events\":{\"BeaconChainETHDeposited(address,uint256)\":{\"notice\":\"Emitted to notify a deposit of beacon chain ETH recorded in the strategy manager\"},\"BeaconChainETHWithdrawalCompleted(address,uint256,uint96,address,address,bytes32)\":{\"notice\":\"Emitted when a withdrawal of beacon chain ETH is completed\"},\"BeaconOracleUpdated(address)\":{\"notice\":\"Emitted to notify the update of the beaconChainOracle address\"},\"Paused(address,uint256)\":{\"notice\":\"Emitted when the pause is triggered by `account`, and changed to `newPausedStatus`.\"},\"PauserRegistrySet(address,address)\":{\"notice\":\"Emitted when the `pauserRegistry` is set to `newPauserRegistry`.\"},\"PodDeployed(address,address)\":{\"notice\":\"Emitted to notify the deployment of an EigenPod\"},\"PodSharesUpdated(address,int256)\":{\"notice\":\"Emitted when the balance of an EigenPod is updated\"},\"Unpaused(address,uint256)\":{\"notice\":\"Emitted when the pause is lifted by `account`, and changed to `newPausedStatus`.\"}},\"kind\":\"user\",\"methods\":{\"addShares(address,uint256)\":{\"notice\":\"Increases the `podOwner`'s shares by `shares`, paying off deficit if possible. Used by the DelegationManager to award a pod owner shares on exiting the withdrawal queue\"},\"beaconChainETHStrategy()\":{\"notice\":\"Canonical, virtual beacon chain ETH strategy\"},\"beaconChainOracle()\":{\"notice\":\"Oracle contract that provides updates to the beacon chain's state\"},\"createPod()\":{\"notice\":\"Creates an EigenPod for the sender.\"},\"delegationManager()\":{\"notice\":\"EigenLayer's DelegationManager contract\"},\"denebForkTimestamp()\":{\"notice\":\"Wrapper around the `_denebForkTimestamp` storage variable that returns type(uint64).max if the storage variable is unset.\"},\"eigenPodBeacon()\":{\"notice\":\"Beacon proxy to which the EigenPods point\"},\"ethPOS()\":{\"notice\":\"The ETH2 Deposit Contract\"},\"getBlockRootAtTimestamp(uint64)\":{\"notice\":\"Returns the Beacon block root at `timestamp`. Reverts if the Beacon block root at `timestamp` has not yet been finalized.\"},\"getPod(address)\":{\"notice\":\"Returns the address of the `podOwner`'s EigenPod (whether it is deployed yet or not).\"},\"hasPod(address)\":{\"notice\":\"Returns 'true' if the `podOwner` has created an EigenPod, and 'false' otherwise.\"},\"numPods()\":{\"notice\":\"The number of EigenPods that have been deployed\"},\"ownerToPod(address)\":{\"notice\":\"Pod owner to deployed EigenPod address\"},\"pause(uint256)\":{\"notice\":\"This function is used to pause an EigenLayer contract's functionality. It is permissioned to the `pauser` address, which is expected to be a low threshold multisig.\"},\"pauseAll()\":{\"notice\":\"Alias for `pause(type(uint256).max)`.\"},\"paused()\":{\"notice\":\"Returns the current paused status as a uint256.\"},\"paused(uint8)\":{\"notice\":\"Returns 'true' if the `indexed`th bit of `_paused` is 1, and 'false' otherwise\"},\"pauserRegistry()\":{\"notice\":\"Address of the `PauserRegistry` contract that this contract defers to for determining access control (for pausing).\"},\"podOwnerShares(address)\":{\"notice\":\"Mapping from Pod owner owner to the number of shares they have in the virtual beacon chain ETH strategy.\"},\"recordBeaconChainETHBalanceUpdate(address,int256)\":{\"notice\":\"Changes the `podOwner`'s shares by `sharesDelta` and performs a call to the DelegationManager to ensure that delegated shares are also tracked correctly\"},\"removeShares(address,uint256)\":{\"notice\":\"Used by the DelegationManager to remove a pod owner's shares while they're in the withdrawal queue. Simply decreases the `podOwner`'s shares by `shares`, down to a minimum of zero.\"},\"setDenebForkTimestamp(uint64)\":{\"notice\":\"Sets the timestamp of the Deneb fork.\"},\"setPauserRegistry(address)\":{\"notice\":\"Allows the unpauser to set a new pauser registry\"},\"slasher()\":{\"notice\":\"EigenLayer's Slasher contract\"},\"stake(bytes,bytes,bytes32)\":{\"notice\":\"Stakes for a new beacon chain validator on the sender's EigenPod. Also creates an EigenPod for the sender if they don't have one already.\"},\"strategyManager()\":{\"notice\":\"EigenLayer's StrategyManager contract\"},\"unpause(uint256)\":{\"notice\":\"This function is used to unpause an EigenLayer contract's functionality. It is permissioned to the `unpauser` address, which is expected to be a high threshold multisig or governance contract.\"},\"updateBeaconChainOracle(address)\":{\"notice\":\"Updates the oracle contract that provides the beacon chain state root\"},\"withdrawSharesAsTokens(address,address,uint256)\":{\"notice\":\"Used by the DelegationManager to complete a withdrawal, sending tokens to some destination address\"}},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-serviceThe main functionalities are: - creating EigenPods - staking for new validators on EigenPods - keeping track of the restaked balances of all EigenPod owners - withdrawing eth when withdrawals are completed\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/eigenlayer-contracts/src/contracts/pods/EigenPodManager.sol\":\"EigenPodManager\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x9906828f285cc76bbbe077f908d87c4bffd0a3bff9394f7a4b60a9d9a2672c1e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4c0f43e14e50ac322685b5cd301459118e2770bdfb053f8f3ded08ee9fbf5bf9\",\"dweb:/ipfs/QmPQtY6KEUCbrKwweu8BvA7YjnXXxkkuZPyLSRGV5EoPTe\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x1f8e17b0f952042132ca64e202022d83783b7f42ec364cd0cad1950ecb95a13d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a2be4c476902f25fb058f779e3d4e5b1182d9dc9fbdec518acbe9544c0d3c141\",\"dweb:/ipfs/QmdgZq6JrCD36Xry2vD8QSeGguGQ9TGWY2CMvKrhR9NQ6u\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x22b7a17d53696412f80645f1fa65274ae89040bdc706262e3b6cc577dbafcaa4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b15002346892a48fd7cf9a8a4cf121e17ba133d21e4822e71fbffac85117d6b2\",\"dweb:/ipfs/QmRBPJUcRQ6uKmSvCYhhtVWcKCAWkQFSVZZwZR7HR42kiz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x33a935182f77cfd508fc57ec8e45afc8dc3748e1e9b764d36bf90ae6466f257b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d3981b5bbf435cda04e2ed2f348f886ebf1500c18dd4bbf67b1f1bc0272e2d3f\",\"dweb:/ipfs/QmYHDzQx29ataM2ejRCXFcPxaPdxWqX8v7uwUAYoG9572w\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xffafae142d5337a5c204519e8f82fe3a5fae137286ebf597fa50699cf12c2474\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b577a12f7788095b230fd069b36ba9b3cdb376a0b7c3d8ae71588e5bf0c2f574\",\"dweb:/ipfs/QmXd1cDzYpxecyFEwowLiBKKjzRHgV8cs1qvLwypdEbVYy\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b\",\"dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x3d9eeecf96bd8d6427445db76b9a73f9861c6c3601001226bed2f7fb81e252e6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c836719a65892c5cffdba9de4e009e5f8a4e49aea9c5f46d57b15660c6c2d07d\",\"dweb:/ipfs/QmWuzNq2HdEH1hsRg8Jc95k1DZdNjXFb5ehkz9iLNNSqhT\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xaeee2ac5cfcc3388b63bef2668fa435c65a4b433b52ce9f5013822c6ec875fa3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://86eb6d3da5b45f7509995ffa170eaaadffbdd6d43e50f0902d421bb93a7dfda6\",\"dweb:/ipfs/QmWaYcgtnaVpcekSP7LyY6AGrE3hRE3kZE4H4EKhsSysDG\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x633b5fb10209891f696a9c8db4d7327ed7f560a2e9710489e38a67daeda59a96\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c8381baaec3afa6b200420c093706974776dfd14f6887abe7457eb867351a068\",\"dweb:/ipfs/QmP9H9ttS1sJ6FrvMEefJhU6B4z1wMCjcYYZqVfsLXagJE\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0x1c5895f913e95682b0c371595cb1fa0d9c34ea921a0fbb5c32201b4315e80a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c470e449a3144fbaaa17b44823ba9cba901f063b04355c800bf62cabdd081cd4\",\"dweb:/ipfs/QmSJ8gaAF4WA1aXGmLesnnRo8fDZNEFnqZSGNkJnXLRM9R\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0xcf8422dfa6ccc393de19417570c6239e0fde54de9433ea258cbeb6937ff7f316\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://328e582c05b7311ad4107c46f554f15b5572b89a4ab6d067c73425b7418d946c\",\"dweb:/ipfs/QmdM81GQY5nok5oCTP8Cc6M8s1UC9f6ZbSWybaUxrZNrmY\"]},\"lib/eigenlayer-contracts/src/contracts/permissions/Pausable.sol\":{\"keccak256\":\"0x53a08f01d778b91604dc1d27d4805fa99b9a2993f26e6079a1d8701699dc9f21\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://8fd5dd22dcb1fb4f803843b920501679f252ccf100a06acbad7a22452cdc1173\",\"dweb:/ipfs/QmeyoJoTN3Gi7Q4Fk4y89UTDDnyPFmSbdu8N7Vyijwjx2s\"]},\"lib/eigenlayer-contracts/src/contracts/pods/EigenPodManager.sol\":{\"keccak256\":\"0x2fef0293280f673bdacbaa952e8f7f4948a4bcc49c9bd360a29b54c5470bddf7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f3eb0ff7f93b12dd5b66959b1ead030950e56db3857ea2db5376a15db9d3d6e8\",\"dweb:/ipfs/QmSqMkXcZGB3HCxDTez6Ktkn31za2ruCEpVgcWqkoFQsxs\"]},\"lib/eigenlayer-contracts/src/contracts/pods/EigenPodManagerStorage.sol\":{\"keccak256\":\"0xad6f1bd56693ce436c74b52b510cccad94af03225bd806c0c2d5e7fda77564b2\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://61157d49b4fe88abfd9c3d2f9e7d1face5fb62b8ce7a6a62f58353cc1304ee55\",\"dweb:/ipfs/QmcTatdk18o9UjYnUqh7YCx5XQJn6nzvUyJ117qpzNrn1E\"]},\"lib/eigenlayer-contracts/src/contracts/pods/EigenPodPausingConstants.sol\":{\"keccak256\":\"0x0937ea5223171c1d711d504c5fbf0331f0dff03af05f4f22cd7bcf9160aea2c7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://241e6543834359917a1a8cffd842aaee1350531ae7997bec87b5584d88d5bb8c\",\"dweb:/ipfs/QmXSXGg35ke6nDXCqvZ8sPNQZxUdXaCnAYpQfrBtXgEvDr\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xd6b579f342ff00b0b45eb2b97f1fb5274a2c52a8f59f13f174394a26b0c2030e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://55f68d7ea9ac2b0369c77e91b737d0e7991c302bf07b5a5b507147c449bcde20\",\"dweb:/ipfs/QmT8Uv9f7SbxmXsmUgrBpKMYjwv6fD3EFQB22fu51nYGLp\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x1e4597b288e792b4530cbc7e97e28754e8457969e61a86d9e6e3a2857eb8a68f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://41fb94e2f5df15c1d070865db82373dc85e52bc3a2f85e3aa338488f8616532c\",\"dweb:/ipfs/QmeKTieHBEur42JbTkn2JChdGx3GT9YZbVCP7wj2ejQvMj\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x1e5f62292e000eb24ff5a82fbe1310b5a03871d008bcd2e203e08cd044af0466\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d300b99404ad2930649be8508f7b1ed9940bc82facb7291a0540c1ec42badcaa\",\"dweb:/ipfs/QmW2xV7vTvtyJPDb5PwYBRSrs2qGMWV5rT6V9dzjaPUp9q\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":{\"keccak256\":\"0xbf8a0c2e8e6ad8b7b8e6b51c84f15408c0c7a2f1d22d2ad7686da34fc9fef09f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72216f8ab158bf287bdf4540439d01d1cf138f0d58634c8d12cc9876cabf06c3\",\"dweb:/ipfs/QmUp2UdkfpPuPuVXFUF71LwbMY6rjBsNFFgTUD7tJWhdn5\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IETHPOSDeposit","name":"_ethPOS","type":"address"},{"internalType":"contract IBeacon","name":"_eigenPodBeacon","type":"address"},{"internalType":"contract IStrategyManager","name":"_strategyManager","type":"address"},{"internalType":"contract ISlasher","name":"_slasher","type":"address"},{"internalType":"contract IDelegationManager","name":"_delegationManager","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"podOwner","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"BeaconChainETHDeposited","anonymous":false},{"inputs":[{"internalType":"address","name":"podOwner","type":"address","indexed":true},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"uint96","name":"nonce","type":"uint96","indexed":false},{"internalType":"address","name":"delegatedAddress","type":"address","indexed":false},{"internalType":"address","name":"withdrawer","type":"address","indexed":false},{"internalType":"bytes32","name":"withdrawalRoot","type":"bytes32","indexed":false}],"type":"event","name":"BeaconChainETHWithdrawalCompleted","anonymous":false},{"inputs":[{"internalType":"address","name":"newOracleAddress","type":"address","indexed":true}],"type":"event","name":"BeaconOracleUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64","indexed":false}],"type":"event","name":"DenebForkTimestampUpdated","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"newPausedStatus","type":"uint256","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"contract IPauserRegistry","name":"pauserRegistry","type":"address","indexed":false},{"internalType":"contract IPauserRegistry","name":"newPauserRegistry","type":"address","indexed":false}],"type":"event","name":"PauserRegistrySet","anonymous":false},{"inputs":[{"internalType":"address","name":"eigenPod","type":"address","indexed":true},{"internalType":"address","name":"podOwner","type":"address","indexed":true}],"type":"event","name":"PodDeployed","anonymous":false},{"inputs":[{"internalType":"address","name":"podOwner","type":"address","indexed":true},{"internalType":"int256","name":"sharesDelta","type":"int256","indexed":false}],"type":"event","name":"PodSharesUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"newPausedStatus","type":"uint256","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"address","name":"podOwner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"addShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"beaconChainETHStrategy","outputs":[{"internalType":"contract IStrategy","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"beaconChainOracle","outputs":[{"internalType":"contract IBeaconChainOracle","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"createPod","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"delegationManager","outputs":[{"internalType":"contract IDelegationManager","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"denebForkTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eigenPodBeacon","outputs":[{"internalType":"contract IBeacon","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"ethPOS","outputs":[{"internalType":"contract IETHPOSDeposit","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"timestamp","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlockRootAtTimestamp","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"podOwner","type":"address"}],"stateMutability":"view","type":"function","name":"getPod","outputs":[{"internalType":"contract IEigenPod","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"podOwner","type":"address"}],"stateMutability":"view","type":"function","name":"hasPod","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"contract IBeaconChainOracle","name":"_beaconChainOracle","type":"address"},{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"contract IPauserRegistry","name":"_pauserRegistry","type":"address"},{"internalType":"uint256","name":"_initPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"numPods","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"ownerToPod","outputs":[{"internalType":"contract IEigenPod","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"newPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseAll"},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"}],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pauserRegistry","outputs":[{"internalType":"contract IPauserRegistry","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"podOwnerShares","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"address","name":"podOwner","type":"address"},{"internalType":"int256","name":"sharesDelta","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"recordBeaconChainETHBalanceUpdate"},{"inputs":[{"internalType":"address","name":"podOwner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"removeShares"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"uint64","name":"newDenebForkTimestamp","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setDenebForkTimestamp"},{"inputs":[{"internalType":"contract IPauserRegistry","name":"newPauserRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPauserRegistry"},{"inputs":[],"stateMutability":"view","type":"function","name":"slasher","outputs":[{"internalType":"contract ISlasher","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"pubkey","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes32","name":"depositDataRoot","type":"bytes32"}],"stateMutability":"payable","type":"function","name":"stake"},{"inputs":[],"stateMutability":"view","type":"function","name":"strategyManager","outputs":[{"internalType":"contract IStrategyManager","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"uint256","name":"newPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"contract IBeaconChainOracle","name":"newBeaconChainOracle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"updateBeaconChainOracle"},{"inputs":[{"internalType":"address","name":"podOwner","type":"address"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdrawSharesAsTokens"}],"devdoc":{"kind":"dev","methods":{"addShares(address,uint256)":{"details":"Returns the number of shares added to `podOwnerShares[podOwner]` above zero, which will be less than the `shares` input in the event that the podOwner has an existing shares deficit (i.e. `podOwnerShares[podOwner]` starts below zero)Reverts if `shares` is not a whole Gwei amount"},"createPod()":{"details":"Function will revert if the `msg.sender` already has an EigenPod.Returns EigenPod address"},"denebForkTimestamp()":{"details":"This allows restricting the storage variable to be set once and only once."},"owner()":{"details":"Returns the address of the current owner."},"pause(uint256)":{"details":"This function can only pause functionality, and thus cannot 'unflip' any bit in `_paused` from 1 to 0.","params":{"newPausedStatus":"represents the new value for `_paused` to take, which means it may flip several bits at once."}},"recordBeaconChainETHBalanceUpdate(address,int256)":{"details":"Callable only by the podOwner's EigenPod contract.Reverts if `sharesDelta` is not a whole Gwei amount","params":{"podOwner":"is the pod owner whose balance is being updated.","sharesDelta":"is the change in podOwner's beaconChainETHStrategy shares"}},"removeShares(address,uint256)":{"details":"This function reverts if it would result in `podOwnerShares[podOwner]` being less than zero, i.e. it is forbidden for this function to result in the `podOwner` incurring a \"share deficit\". This behavior prevents a Staker from queuing a withdrawal which improperly removes excessive shares from the operator to whom the staker is delegated.Reverts if `shares` is not a whole Gwei amountThe delegation manager validates that the podOwner is not address(0)"},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"setDenebForkTimestamp(uint64)":{"params":{"newDenebForkTimestamp":"is the new timestamp of the Deneb fork"}},"stake(bytes,bytes,bytes32)":{"params":{"depositDataRoot":"The root/hash of the deposit data for the validator's deposit.","pubkey":"The 48 bytes public key of the beacon chain validator.","signature":"The validator's signature of the deposit data."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"unpause(uint256)":{"details":"This function can only unpause functionality, and thus cannot 'flip' any bit in `_paused` from 0 to 1.","params":{"newPausedStatus":"represents the new value for `_paused` to take, which means it may flip several bits at once."}},"updateBeaconChainOracle(address)":{"details":"Callable only by the owner of this contract (i.e. governance)","params":{"newBeaconChainOracle":"is the new oracle contract being pointed to"}},"withdrawSharesAsTokens(address,address,uint256)":{"details":"Prioritizes decreasing the podOwner's share deficit, if they have oneReverts if `shares` is not a whole Gwei amountThis function assumes that `removeShares` has already been called by the delegationManager, hence why we do not need to update the podOwnerShares if `currentPodOwnerShares` is positive"}},"version":1},"userdoc":{"kind":"user","methods":{"addShares(address,uint256)":{"notice":"Increases the `podOwner`'s shares by `shares`, paying off deficit if possible. Used by the DelegationManager to award a pod owner shares on exiting the withdrawal queue"},"beaconChainETHStrategy()":{"notice":"Canonical, virtual beacon chain ETH strategy"},"beaconChainOracle()":{"notice":"Oracle contract that provides updates to the beacon chain's state"},"createPod()":{"notice":"Creates an EigenPod for the sender."},"delegationManager()":{"notice":"EigenLayer's DelegationManager contract"},"denebForkTimestamp()":{"notice":"Wrapper around the `_denebForkTimestamp` storage variable that returns type(uint64).max if the storage variable is unset."},"eigenPodBeacon()":{"notice":"Beacon proxy to which the EigenPods point"},"ethPOS()":{"notice":"The ETH2 Deposit Contract"},"getBlockRootAtTimestamp(uint64)":{"notice":"Returns the Beacon block root at `timestamp`. Reverts if the Beacon block root at `timestamp` has not yet been finalized."},"getPod(address)":{"notice":"Returns the address of the `podOwner`'s EigenPod (whether it is deployed yet or not)."},"hasPod(address)":{"notice":"Returns 'true' if the `podOwner` has created an EigenPod, and 'false' otherwise."},"numPods()":{"notice":"The number of EigenPods that have been deployed"},"ownerToPod(address)":{"notice":"Pod owner to deployed EigenPod address"},"pause(uint256)":{"notice":"This function is used to pause an EigenLayer contract's functionality. It is permissioned to the `pauser` address, which is expected to be a low threshold multisig."},"pauseAll()":{"notice":"Alias for `pause(type(uint256).max)`."},"paused()":{"notice":"Returns the current paused status as a uint256."},"paused(uint8)":{"notice":"Returns 'true' if the `indexed`th bit of `_paused` is 1, and 'false' otherwise"},"pauserRegistry()":{"notice":"Address of the `PauserRegistry` contract that this contract defers to for determining access control (for pausing)."},"podOwnerShares(address)":{"notice":"Mapping from Pod owner owner to the number of shares they have in the virtual beacon chain ETH strategy."},"recordBeaconChainETHBalanceUpdate(address,int256)":{"notice":"Changes the `podOwner`'s shares by `sharesDelta` and performs a call to the DelegationManager to ensure that delegated shares are also tracked correctly"},"removeShares(address,uint256)":{"notice":"Used by the DelegationManager to remove a pod owner's shares while they're in the withdrawal queue. Simply decreases the `podOwner`'s shares by `shares`, down to a minimum of zero."},"setDenebForkTimestamp(uint64)":{"notice":"Sets the timestamp of the Deneb fork."},"setPauserRegistry(address)":{"notice":"Allows the unpauser to set a new pauser registry"},"slasher()":{"notice":"EigenLayer's Slasher contract"},"stake(bytes,bytes,bytes32)":{"notice":"Stakes for a new beacon chain validator on the sender's EigenPod. Also creates an EigenPod for the sender if they don't have one already."},"strategyManager()":{"notice":"EigenLayer's StrategyManager contract"},"unpause(uint256)":{"notice":"This function is used to unpause an EigenLayer contract's functionality. It is permissioned to the `unpauser` address, which is expected to be a high threshold multisig or governance contract."},"updateBeaconChainOracle(address)":{"notice":"Updates the oracle contract that provides the beacon chain state root"},"withdrawSharesAsTokens(address,address,uint256)":{"notice":"Used by the DelegationManager to complete a withdrawal, sending tokens to some destination address"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable/","@openzeppelin/=lib/openzeppelin-contracts/","ds-test/=lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-contracts/src/contracts/pods/EigenPodManager.sol":"EigenPodManager"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x9906828f285cc76bbbe077f908d87c4bffd0a3bff9394f7a4b60a9d9a2672c1e","urls":["bzz-raw://4c0f43e14e50ac322685b5cd301459118e2770bdfb053f8f3ded08ee9fbf5bf9","dweb:/ipfs/QmPQtY6KEUCbrKwweu8BvA7YjnXXxkkuZPyLSRGV5EoPTe"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0x1f8e17b0f952042132ca64e202022d83783b7f42ec364cd0cad1950ecb95a13d","urls":["bzz-raw://a2be4c476902f25fb058f779e3d4e5b1182d9dc9fbdec518acbe9544c0d3c141","dweb:/ipfs/QmdgZq6JrCD36Xry2vD8QSeGguGQ9TGWY2CMvKrhR9NQ6u"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0x22b7a17d53696412f80645f1fa65274ae89040bdc706262e3b6cc577dbafcaa4","urls":["bzz-raw://b15002346892a48fd7cf9a8a4cf121e17ba133d21e4822e71fbffac85117d6b2","dweb:/ipfs/QmRBPJUcRQ6uKmSvCYhhtVWcKCAWkQFSVZZwZR7HR42kiz"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x33a935182f77cfd508fc57ec8e45afc8dc3748e1e9b764d36bf90ae6466f257b","urls":["bzz-raw://d3981b5bbf435cda04e2ed2f348f886ebf1500c18dd4bbf67b1f1bc0272e2d3f","dweb:/ipfs/QmYHDzQx29ataM2ejRCXFcPxaPdxWqX8v7uwUAYoG9572w"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0xffafae142d5337a5c204519e8f82fe3a5fae137286ebf597fa50699cf12c2474","urls":["bzz-raw://b577a12f7788095b230fd069b36ba9b3cdb376a0b7c3d8ae71588e5bf0c2f574","dweb:/ipfs/QmXd1cDzYpxecyFEwowLiBKKjzRHgV8cs1qvLwypdEbVYy"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4","urls":["bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b","dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x3d9eeecf96bd8d6427445db76b9a73f9861c6c3601001226bed2f7fb81e252e6","urls":["bzz-raw://c836719a65892c5cffdba9de4e009e5f8a4e49aea9c5f46d57b15660c6c2d07d","dweb:/ipfs/QmWuzNq2HdEH1hsRg8Jc95k1DZdNjXFb5ehkz9iLNNSqhT"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xaeee2ac5cfcc3388b63bef2668fa435c65a4b433b52ce9f5013822c6ec875fa3","urls":["bzz-raw://86eb6d3da5b45f7509995ffa170eaaadffbdd6d43e50f0902d421bb93a7dfda6","dweb:/ipfs/QmWaYcgtnaVpcekSP7LyY6AGrE3hRE3kZE4H4EKhsSysDG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x633b5fb10209891f696a9c8db4d7327ed7f560a2e9710489e38a67daeda59a96","urls":["bzz-raw://c8381baaec3afa6b200420c093706974776dfd14f6887abe7457eb867351a068","dweb:/ipfs/QmP9H9ttS1sJ6FrvMEefJhU6B4z1wMCjcYYZqVfsLXagJE"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0x1c5895f913e95682b0c371595cb1fa0d9c34ea921a0fbb5c32201b4315e80a56","urls":["bzz-raw://c470e449a3144fbaaa17b44823ba9cba901f063b04355c800bf62cabdd081cd4","dweb:/ipfs/QmSJ8gaAF4WA1aXGmLesnnRo8fDZNEFnqZSGNkJnXLRM9R"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0xcf8422dfa6ccc393de19417570c6239e0fde54de9433ea258cbeb6937ff7f316","urls":["bzz-raw://328e582c05b7311ad4107c46f554f15b5572b89a4ab6d067c73425b7418d946c","dweb:/ipfs/QmdM81GQY5nok5oCTP8Cc6M8s1UC9f6ZbSWybaUxrZNrmY"],"license":"MIT"},"lib/eigenlayer-contracts/src/contracts/permissions/Pausable.sol":{"keccak256":"0x53a08f01d778b91604dc1d27d4805fa99b9a2993f26e6079a1d8701699dc9f21","urls":["bzz-raw://8fd5dd22dcb1fb4f803843b920501679f252ccf100a06acbad7a22452cdc1173","dweb:/ipfs/QmeyoJoTN3Gi7Q4Fk4y89UTDDnyPFmSbdu8N7Vyijwjx2s"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/pods/EigenPodManager.sol":{"keccak256":"0x2fef0293280f673bdacbaa952e8f7f4948a4bcc49c9bd360a29b54c5470bddf7","urls":["bzz-raw://f3eb0ff7f93b12dd5b66959b1ead030950e56db3857ea2db5376a15db9d3d6e8","dweb:/ipfs/QmSqMkXcZGB3HCxDTez6Ktkn31za2ruCEpVgcWqkoFQsxs"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/pods/EigenPodManagerStorage.sol":{"keccak256":"0xad6f1bd56693ce436c74b52b510cccad94af03225bd806c0c2d5e7fda77564b2","urls":["bzz-raw://61157d49b4fe88abfd9c3d2f9e7d1face5fb62b8ce7a6a62f58353cc1304ee55","dweb:/ipfs/QmcTatdk18o9UjYnUqh7YCx5XQJn6nzvUyJ117qpzNrn1E"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/pods/EigenPodPausingConstants.sol":{"keccak256":"0x0937ea5223171c1d711d504c5fbf0331f0dff03af05f4f22cd7bcf9160aea2c7","urls":["bzz-raw://241e6543834359917a1a8cffd842aaee1350531ae7997bec87b5584d88d5bb8c","dweb:/ipfs/QmXSXGg35ke6nDXCqvZ8sPNQZxUdXaCnAYpQfrBtXgEvDr"],"license":"BUSL-1.1"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xd6b579f342ff00b0b45eb2b97f1fb5274a2c52a8f59f13f174394a26b0c2030e","urls":["bzz-raw://55f68d7ea9ac2b0369c77e91b737d0e7991c302bf07b5a5b507147c449bcde20","dweb:/ipfs/QmT8Uv9f7SbxmXsmUgrBpKMYjwv6fD3EFQB22fu51nYGLp"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x1e4597b288e792b4530cbc7e97e28754e8457969e61a86d9e6e3a2857eb8a68f","urls":["bzz-raw://41fb94e2f5df15c1d070865db82373dc85e52bc3a2f85e3aa338488f8616532c","dweb:/ipfs/QmeKTieHBEur42JbTkn2JChdGx3GT9YZbVCP7wj2ejQvMj"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x1e5f62292e000eb24ff5a82fbe1310b5a03871d008bcd2e203e08cd044af0466","urls":["bzz-raw://d300b99404ad2930649be8508f7b1ed9940bc82facb7291a0540c1ec42badcaa","dweb:/ipfs/QmW2xV7vTvtyJPDb5PwYBRSrs2qGMWV5rT6V9dzjaPUp9q"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Create2.sol":{"keccak256":"0xbf8a0c2e8e6ad8b7b8e6b51c84f15408c0c7a2f1d22d2ad7686da34fc9fef09f","urls":["bzz-raw://72216f8ab158bf287bdf4540439d01d1cf138f0d58634c8d12cc9876cabf06c3","dweb:/ipfs/QmUp2UdkfpPuPuVXFUF71LwbMY6rjBsNFFgTUD7tJWhdn5"],"license":"MIT"}},"version":1},"id":31} \ No newline at end of file diff --git a/crates/utils/json/IAVSDirectory.json b/crates/utils/json/IAVSDirectory.json deleted file mode 100644 index b684186f..00000000 --- a/crates/utils/json/IAVSDirectory.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"OPERATOR_AVS_REGISTRATION_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"calculateOperatorAVSRegistrationDigestHash","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"avs","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"deregisterOperatorFromAVS","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operatorSaltIsSpent","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"registerOperatorToAVS","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"operatorSignature","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateAVSMetadataURI","inputs":[{"name":"metadataURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AVSMetadataURIUpdated","inputs":[{"name":"avs","type":"address","indexed":true,"internalType":"address"},{"name":"metadataURI","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorAVSRegistrationStatusUpdated","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"avs","type":"address","indexed":true,"internalType":"address"},{"name":"status","type":"uint8","indexed":false,"internalType":"enum IAVSDirectory.OperatorAVSRegistrationStatus"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"OPERATOR_AVS_REGISTRATION_TYPEHASH()":"d79aceab","calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)":"a1060c88","deregisterOperatorFromAVS(address)":"a364f4da","operatorSaltIsSpent(address,bytes32)":"374823b5","registerOperatorToAVS(address,(bytes,bytes32,uint256))":"9926ee7d","updateAVSMetadataURI(string)":"a98fb355"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"avs\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"AVSMetadataURIUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"avs\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum IAVSDirectory.OperatorAVSRegistrationStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"OperatorAVSRegistrationStatusUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"OPERATOR_AVS_REGISTRATION_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"avs\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"calculateOperatorAVSRegistrationDigestHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"deregisterOperatorFromAVS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"operatorSaltIsSpent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithSaltAndExpiry\",\"name\":\"operatorSignature\",\"type\":\"tuple\"}],\"name\":\"registerOperatorToAVS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"updateAVSMetadataURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"AVSMetadataURIUpdated(address,string)\":{\"details\":\"Note that these strings are *never stored in storage* and are instead purely emitted in events for off-chain indexing\"}},\"kind\":\"dev\",\"methods\":{\"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)\":{\"params\":{\"avs\":\"The AVS the operator is registering to\",\"expiry\":\"Time after which the approver's signature becomes invalid\",\"operator\":\"The account registering as an operator\",\"salt\":\"A unique and single use value associated with the approver signature.\"}},\"deregisterOperatorFromAVS(address)\":{\"params\":{\"operator\":\"The address of the operator to deregister.\"}},\"operatorSaltIsSpent(address,bytes32)\":{\"details\":\"Salts is used in the `registerOperatorToAVS` function.\"},\"registerOperatorToAVS(address,(bytes,bytes32,uint256))\":{\"params\":{\"operator\":\"The address of the operator to register.\",\"operatorSignature\":\"The signature, salt, and expiry of the operator's signature.\"}},\"updateAVSMetadataURI(string)\":{\"details\":\"Note that the `metadataURI` is *never stored * and is only emitted in the `AVSMetadataURIUpdated` event\",\"params\":{\"metadataURI\":\"The URI for metadata associated with an AVS\"}}},\"version\":1},\"userdoc\":{\"events\":{\"AVSMetadataURIUpdated(address,string)\":{\"notice\":\"Emitted when @param avs indicates that they are updating their MetadataURI string\"},\"OperatorAVSRegistrationStatusUpdated(address,address,uint8)\":{\"notice\":\"Emitted when an operator's registration status for an AVS is updated\"}},\"kind\":\"user\",\"methods\":{\"OPERATOR_AVS_REGISTRATION_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the Registration struct used by the contract\"},\"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)\":{\"notice\":\"Calculates the digest hash to be signed by an operator to register with an AVS\"},\"deregisterOperatorFromAVS(address)\":{\"notice\":\"Called by an avs to deregister an operator with the avs.\"},\"operatorSaltIsSpent(address,bytes32)\":{\"notice\":\"Returns whether or not the salt has already been used by the operator.\"},\"registerOperatorToAVS(address,(bytes,bytes32,uint256))\":{\"notice\":\"Called by an avs to register an operator with the avs.\"},\"updateAVSMetadataURI(string)\":{\"notice\":\"Called by an AVS to emit an `AVSMetadataURIUpdated` event indicating the information has updated.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol\":\"IAVSDirectory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":@eigenlayer-scripts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/\",\":@eigenlayer/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/\",\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":ds-test/=lib/eigenlayer-middleware/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/contracts/\"]},\"sources\":{\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol\":{\"keccak256\":\"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa\",\"dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"avs","type":"address","indexed":true},{"internalType":"string","name":"metadataURI","type":"string","indexed":false}],"type":"event","name":"AVSMetadataURIUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"avs","type":"address","indexed":true},{"internalType":"enum IAVSDirectory.OperatorAVSRegistrationStatus","name":"status","type":"uint8","indexed":false}],"type":"event","name":"OperatorAVSRegistrationStatusUpdated","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_AVS_REGISTRATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"avs","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function","name":"calculateOperatorAVSRegistrationDigestHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deregisterOperatorFromAVS"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"stateMutability":"view","type":"function","name":"operatorSaltIsSpent","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","name":"operatorSignature","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"registerOperatorToAVS"},{"inputs":[{"internalType":"string","name":"metadataURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateAVSMetadataURI"}],"devdoc":{"kind":"dev","methods":{"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)":{"params":{"avs":"The AVS the operator is registering to","expiry":"Time after which the approver's signature becomes invalid","operator":"The account registering as an operator","salt":"A unique and single use value associated with the approver signature."}},"deregisterOperatorFromAVS(address)":{"params":{"operator":"The address of the operator to deregister."}},"operatorSaltIsSpent(address,bytes32)":{"details":"Salts is used in the `registerOperatorToAVS` function."},"registerOperatorToAVS(address,(bytes,bytes32,uint256))":{"params":{"operator":"The address of the operator to register.","operatorSignature":"The signature, salt, and expiry of the operator's signature."}},"updateAVSMetadataURI(string)":{"details":"Note that the `metadataURI` is *never stored * and is only emitted in the `AVSMetadataURIUpdated` event","params":{"metadataURI":"The URI for metadata associated with an AVS"}}},"version":1},"userdoc":{"kind":"user","methods":{"OPERATOR_AVS_REGISTRATION_TYPEHASH()":{"notice":"The EIP-712 typehash for the Registration struct used by the contract"},"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)":{"notice":"Calculates the digest hash to be signed by an operator to register with an AVS"},"deregisterOperatorFromAVS(address)":{"notice":"Called by an avs to deregister an operator with the avs."},"operatorSaltIsSpent(address,bytes32)":{"notice":"Returns whether or not the salt has already been used by the operator."},"registerOperatorToAVS(address,(bytes,bytes32,uint256))":{"notice":"Called by an avs to register an operator with the avs."},"updateAVSMetadataURI(string)":{"notice":"Called by an AVS to emit an `AVSMetadataURIUpdated` event indicating the information has updated."}},"version":1}},"settings":{"remappings":["@eigenlayer-middleware/=lib/eigenlayer-middleware/","@eigenlayer-scripts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/","@eigenlayer/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/","@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/","ds-test/=lib/eigenlayer-middleware/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol":"IAVSDirectory"},"evmVersion":"paris","libraries":{}},"sources":{"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol":{"keccak256":"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938","urls":["bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa","dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"}},"version":1},"id":32} \ No newline at end of file diff --git a/crates/utils/json/IBLSSignatureChecker.json b/crates/utils/json/IBLSSignatureChecker.json deleted file mode 100644 index f80746a8..00000000 --- a/crates/utils/json/IBLSSignatureChecker.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"blsApkRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IBLSApkRegistry"}],"stateMutability":"view"},{"type":"function","name":"checkSignatures","inputs":[{"name":"msgHash","type":"bytes32","internalType":"bytes32"},{"name":"quorumNumbers","type":"bytes","internalType":"bytes"},{"name":"referenceBlockNumber","type":"uint32","internalType":"uint32"},{"name":"nonSignerStakesAndSignature","type":"tuple","internalType":"struct IBLSSignatureChecker.NonSignerStakesAndSignature","components":[{"name":"nonSignerQuorumBitmapIndices","type":"uint32[]","internalType":"uint32[]"},{"name":"nonSignerPubkeys","type":"tuple[]","internalType":"struct BN254.G1Point[]","components":[{"name":"X","type":"uint256","internalType":"uint256"},{"name":"Y","type":"uint256","internalType":"uint256"}]},{"name":"quorumApks","type":"tuple[]","internalType":"struct BN254.G1Point[]","components":[{"name":"X","type":"uint256","internalType":"uint256"},{"name":"Y","type":"uint256","internalType":"uint256"}]},{"name":"apkG2","type":"tuple","internalType":"struct BN254.G2Point","components":[{"name":"X","type":"uint256[2]","internalType":"uint256[2]"},{"name":"Y","type":"uint256[2]","internalType":"uint256[2]"}]},{"name":"sigma","type":"tuple","internalType":"struct BN254.G1Point","components":[{"name":"X","type":"uint256","internalType":"uint256"},{"name":"Y","type":"uint256","internalType":"uint256"}]},{"name":"quorumApkIndices","type":"uint32[]","internalType":"uint32[]"},{"name":"totalStakeIndices","type":"uint32[]","internalType":"uint32[]"},{"name":"nonSignerStakeIndices","type":"uint32[][]","internalType":"uint32[][]"}]}],"outputs":[{"name":"","type":"tuple","internalType":"struct IBLSSignatureChecker.QuorumStakeTotals","components":[{"name":"signedStakeForQuorum","type":"uint96[]","internalType":"uint96[]"},{"name":"totalStakeForQuorum","type":"uint96[]","internalType":"uint96[]"}]},{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"delegation","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IDelegationManager"}],"stateMutability":"view"},{"type":"function","name":"registryCoordinator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IRegistryCoordinator"}],"stateMutability":"view"},{"type":"function","name":"stakeRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IStakeRegistry"}],"stateMutability":"view"},{"type":"event","name":"StaleStakesForbiddenUpdate","inputs":[{"name":"value","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"blsApkRegistry()":"5df45946","checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))":"6efb4636","delegation()":"df5cf723","registryCoordinator()":"6d14a987","stakeRegistry()":"68304835"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"StaleStakesForbiddenUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"blsApkRegistry\",\"outputs\":[{\"internalType\":\"contract IBLSApkRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"},{\"internalType\":\"uint32\",\"name\":\"referenceBlockNumber\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"uint32[]\",\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"struct BN254.G1Point[]\",\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"struct BN254.G1Point[]\",\"name\":\"quorumApks\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"X\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"Y\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct BN254.G2Point\",\"name\":\"apkG2\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"struct BN254.G1Point\",\"name\":\"sigma\",\"type\":\"tuple\"},{\"internalType\":\"uint32[]\",\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\"},{\"internalType\":\"uint32[]\",\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\"},{\"internalType\":\"uint32[][]\",\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\"}],\"internalType\":\"struct IBLSSignatureChecker.NonSignerStakesAndSignature\",\"name\":\"nonSignerStakesAndSignature\",\"type\":\"tuple\"}],\"name\":\"checkSignatures\",\"outputs\":[{\"components\":[{\"internalType\":\"uint96[]\",\"name\":\"signedStakeForQuorum\",\"type\":\"uint96[]\"},{\"internalType\":\"uint96[]\",\"name\":\"totalStakeForQuorum\",\"type\":\"uint96[]\"}],\"internalType\":\"struct IBLSSignatureChecker.QuorumStakeTotals\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegation\",\"outputs\":[{\"internalType\":\"contract IDelegationManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registryCoordinator\",\"outputs\":[{\"internalType\":\"contract IRegistryCoordinator\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakeRegistry\",\"outputs\":[{\"internalType\":\"contract IStakeRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"kind\":\"dev\",\"methods\":{\"checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))\":{\"details\":\"Before signature verification, the function verifies operator stake information. This includes ensuring that the provided `referenceBlockNumber` is correct, i.e., ensure that the stake returned from the specified block number is recent enough and that the stake is either the most recent update for the total stake (or the operator) or latest before the referenceBlockNumber.\"}},\"title\":\"Used for checking BLS aggregate signatures from the operators of a EigenLayer AVS with the RegistryCoordinator/BLSApkRegistry/StakeRegistry architechture.\",\"version\":1},\"userdoc\":{\"events\":{\"StaleStakesForbiddenUpdate(bool)\":{\"notice\":\"Emitted when `staleStakesForbiddenUpdate` is set\"}},\"kind\":\"user\",\"methods\":{\"checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))\":{\"notice\":\"This function is called by disperser when it has aggregated all the signatures of the operators that are part of the quorum for a particular taskNumber and is asserting them into onchain. The function checks that the claim for aggregated signatures are valid. The thesis of this procedure entails: - getting the aggregated pubkey of all registered nodes at the time of pre-commit by the disperser (represented by apk in the parameters), - subtracting the pubkeys of all the signers not in the quorum (nonSignerPubkeys) and storing the output in apk to get aggregated pubkey of all operators that are part of quorum. - use this aggregated pubkey to verify the aggregated signature under BLS scheme. \"}},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-serviceThis is the contract for checking the validity of aggregate operator signatures.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/IBLSSignatureChecker.sol\":\"IBLSSignatureChecker\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x9906828f285cc76bbbe077f908d87c4bffd0a3bff9394f7a4b60a9d9a2672c1e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4c0f43e14e50ac322685b5cd301459118e2770bdfb053f8f3ded08ee9fbf5bf9\",\"dweb:/ipfs/QmPQtY6KEUCbrKwweu8BvA7YjnXXxkkuZPyLSRGV5EoPTe\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x1f8e17b0f952042132ca64e202022d83783b7f42ec364cd0cad1950ecb95a13d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a2be4c476902f25fb058f779e3d4e5b1182d9dc9fbdec518acbe9544c0d3c141\",\"dweb:/ipfs/QmdgZq6JrCD36Xry2vD8QSeGguGQ9TGWY2CMvKrhR9NQ6u\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x22b7a17d53696412f80645f1fa65274ae89040bdc706262e3b6cc577dbafcaa4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b15002346892a48fd7cf9a8a4cf121e17ba133d21e4822e71fbffac85117d6b2\",\"dweb:/ipfs/QmRBPJUcRQ6uKmSvCYhhtVWcKCAWkQFSVZZwZR7HR42kiz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x33a935182f77cfd508fc57ec8e45afc8dc3748e1e9b764d36bf90ae6466f257b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d3981b5bbf435cda04e2ed2f348f886ebf1500c18dd4bbf67b1f1bc0272e2d3f\",\"dweb:/ipfs/QmYHDzQx29ataM2ejRCXFcPxaPdxWqX8v7uwUAYoG9572w\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xffafae142d5337a5c204519e8f82fe3a5fae137286ebf597fa50699cf12c2474\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b577a12f7788095b230fd069b36ba9b3cdb376a0b7c3d8ae71588e5bf0c2f574\",\"dweb:/ipfs/QmXd1cDzYpxecyFEwowLiBKKjzRHgV8cs1qvLwypdEbVYy\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b\",\"dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x3d9eeecf96bd8d6427445db76b9a73f9861c6c3601001226bed2f7fb81e252e6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c836719a65892c5cffdba9de4e009e5f8a4e49aea9c5f46d57b15660c6c2d07d\",\"dweb:/ipfs/QmWuzNq2HdEH1hsRg8Jc95k1DZdNjXFb5ehkz9iLNNSqhT\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xaeee2ac5cfcc3388b63bef2668fa435c65a4b433b52ce9f5013822c6ec875fa3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://86eb6d3da5b45f7509995ffa170eaaadffbdd6d43e50f0902d421bb93a7dfda6\",\"dweb:/ipfs/QmWaYcgtnaVpcekSP7LyY6AGrE3hRE3kZE4H4EKhsSysDG\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x633b5fb10209891f696a9c8db4d7327ed7f560a2e9710489e38a67daeda59a96\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c8381baaec3afa6b200420c093706974776dfd14f6887abe7457eb867351a068\",\"dweb:/ipfs/QmP9H9ttS1sJ6FrvMEefJhU6B4z1wMCjcYYZqVfsLXagJE\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0x1c5895f913e95682b0c371595cb1fa0d9c34ea921a0fbb5c32201b4315e80a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c470e449a3144fbaaa17b44823ba9cba901f063b04355c800bf62cabdd081cd4\",\"dweb:/ipfs/QmSJ8gaAF4WA1aXGmLesnnRo8fDZNEFnqZSGNkJnXLRM9R\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0xcf8422dfa6ccc393de19417570c6239e0fde54de9433ea258cbeb6937ff7f316\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://328e582c05b7311ad4107c46f554f15b5572b89a4ab6d067c73425b7418d946c\",\"dweb:/ipfs/QmdM81GQY5nok5oCTP8Cc6M8s1UC9f6ZbSWybaUxrZNrmY\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"src/interfaces/IBLSApkRegistry.sol\":{\"keccak256\":\"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354\",\"dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp\"]},\"src/interfaces/IBLSSignatureChecker.sol\":{\"keccak256\":\"0x91c233280d6707404c65b7989c3fec6997c40cb3ab7d6c2e3f021102a0e2750d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f2033dbb94acab37f3505734d8aad1481fbceedaa4742871f07506243a195aeb\",\"dweb:/ipfs/QmXWJNkhUxfMhGfuFWw4UAU6nvw9qP9aswisQJLnZUUCzs\"]},\"src/interfaces/IIndexRegistry.sol\":{\"keccak256\":\"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d\",\"dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F\"]},\"src/interfaces/IRegistry.sol\":{\"keccak256\":\"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25\",\"dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY\"]},\"src/interfaces/IRegistryCoordinator.sol\":{\"keccak256\":\"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d\",\"dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD\"]},\"src/interfaces/IStakeRegistry.sol\":{\"keccak256\":\"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97\",\"dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B\"]},\"src/libraries/BN254.sol\":{\"keccak256\":\"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae\",\"dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bool","name":"value","type":"bool","indexed":false}],"type":"event","name":"StaleStakesForbiddenUpdate","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"blsApkRegistry","outputs":[{"internalType":"contract IBLSApkRegistry","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"msgHash","type":"bytes32"},{"internalType":"bytes","name":"quorumNumbers","type":"bytes"},{"internalType":"uint32","name":"referenceBlockNumber","type":"uint32"},{"internalType":"struct IBLSSignatureChecker.NonSignerStakesAndSignature","name":"nonSignerStakesAndSignature","type":"tuple","components":[{"internalType":"uint32[]","name":"nonSignerQuorumBitmapIndices","type":"uint32[]"},{"internalType":"struct BN254.G1Point[]","name":"nonSignerPubkeys","type":"tuple[]","components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}]},{"internalType":"struct BN254.G1Point[]","name":"quorumApks","type":"tuple[]","components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}]},{"internalType":"struct BN254.G2Point","name":"apkG2","type":"tuple","components":[{"internalType":"uint256[2]","name":"X","type":"uint256[2]"},{"internalType":"uint256[2]","name":"Y","type":"uint256[2]"}]},{"internalType":"struct BN254.G1Point","name":"sigma","type":"tuple","components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}]},{"internalType":"uint32[]","name":"quorumApkIndices","type":"uint32[]"},{"internalType":"uint32[]","name":"totalStakeIndices","type":"uint32[]"},{"internalType":"uint32[][]","name":"nonSignerStakeIndices","type":"uint32[][]"}]}],"stateMutability":"view","type":"function","name":"checkSignatures","outputs":[{"internalType":"struct IBLSSignatureChecker.QuorumStakeTotals","name":"","type":"tuple","components":[{"internalType":"uint96[]","name":"signedStakeForQuorum","type":"uint96[]"},{"internalType":"uint96[]","name":"totalStakeForQuorum","type":"uint96[]"}]},{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"delegation","outputs":[{"internalType":"contract IDelegationManager","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"registryCoordinator","outputs":[{"internalType":"contract IRegistryCoordinator","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"stakeRegistry","outputs":[{"internalType":"contract IStakeRegistry","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))":{"details":"Before signature verification, the function verifies operator stake information. This includes ensuring that the provided `referenceBlockNumber` is correct, i.e., ensure that the stake returned from the specified block number is recent enough and that the stake is either the most recent update for the total stake (or the operator) or latest before the referenceBlockNumber."}},"version":1},"userdoc":{"kind":"user","methods":{"checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))":{"notice":"This function is called by disperser when it has aggregated all the signatures of the operators that are part of the quorum for a particular taskNumber and is asserting them into onchain. The function checks that the claim for aggregated signatures are valid. The thesis of this procedure entails: - getting the aggregated pubkey of all registered nodes at the time of pre-commit by the disperser (represented by apk in the parameters), - subtracting the pubkeys of all the signers not in the quorum (nonSignerPubkeys) and storing the output in apk to get aggregated pubkey of all operators that are part of quorum. - use this aggregated pubkey to verify the aggregated signature under BLS scheme. "}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable/","@openzeppelin/=lib/openzeppelin-contracts/","ds-test/=lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/IBLSSignatureChecker.sol":"IBLSSignatureChecker"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x9906828f285cc76bbbe077f908d87c4bffd0a3bff9394f7a4b60a9d9a2672c1e","urls":["bzz-raw://4c0f43e14e50ac322685b5cd301459118e2770bdfb053f8f3ded08ee9fbf5bf9","dweb:/ipfs/QmPQtY6KEUCbrKwweu8BvA7YjnXXxkkuZPyLSRGV5EoPTe"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0x1f8e17b0f952042132ca64e202022d83783b7f42ec364cd0cad1950ecb95a13d","urls":["bzz-raw://a2be4c476902f25fb058f779e3d4e5b1182d9dc9fbdec518acbe9544c0d3c141","dweb:/ipfs/QmdgZq6JrCD36Xry2vD8QSeGguGQ9TGWY2CMvKrhR9NQ6u"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0x22b7a17d53696412f80645f1fa65274ae89040bdc706262e3b6cc577dbafcaa4","urls":["bzz-raw://b15002346892a48fd7cf9a8a4cf121e17ba133d21e4822e71fbffac85117d6b2","dweb:/ipfs/QmRBPJUcRQ6uKmSvCYhhtVWcKCAWkQFSVZZwZR7HR42kiz"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x33a935182f77cfd508fc57ec8e45afc8dc3748e1e9b764d36bf90ae6466f257b","urls":["bzz-raw://d3981b5bbf435cda04e2ed2f348f886ebf1500c18dd4bbf67b1f1bc0272e2d3f","dweb:/ipfs/QmYHDzQx29ataM2ejRCXFcPxaPdxWqX8v7uwUAYoG9572w"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0xffafae142d5337a5c204519e8f82fe3a5fae137286ebf597fa50699cf12c2474","urls":["bzz-raw://b577a12f7788095b230fd069b36ba9b3cdb376a0b7c3d8ae71588e5bf0c2f574","dweb:/ipfs/QmXd1cDzYpxecyFEwowLiBKKjzRHgV8cs1qvLwypdEbVYy"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4","urls":["bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b","dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x3d9eeecf96bd8d6427445db76b9a73f9861c6c3601001226bed2f7fb81e252e6","urls":["bzz-raw://c836719a65892c5cffdba9de4e009e5f8a4e49aea9c5f46d57b15660c6c2d07d","dweb:/ipfs/QmWuzNq2HdEH1hsRg8Jc95k1DZdNjXFb5ehkz9iLNNSqhT"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xaeee2ac5cfcc3388b63bef2668fa435c65a4b433b52ce9f5013822c6ec875fa3","urls":["bzz-raw://86eb6d3da5b45f7509995ffa170eaaadffbdd6d43e50f0902d421bb93a7dfda6","dweb:/ipfs/QmWaYcgtnaVpcekSP7LyY6AGrE3hRE3kZE4H4EKhsSysDG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x633b5fb10209891f696a9c8db4d7327ed7f560a2e9710489e38a67daeda59a96","urls":["bzz-raw://c8381baaec3afa6b200420c093706974776dfd14f6887abe7457eb867351a068","dweb:/ipfs/QmP9H9ttS1sJ6FrvMEefJhU6B4z1wMCjcYYZqVfsLXagJE"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0x1c5895f913e95682b0c371595cb1fa0d9c34ea921a0fbb5c32201b4315e80a56","urls":["bzz-raw://c470e449a3144fbaaa17b44823ba9cba901f063b04355c800bf62cabdd081cd4","dweb:/ipfs/QmSJ8gaAF4WA1aXGmLesnnRo8fDZNEFnqZSGNkJnXLRM9R"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0xcf8422dfa6ccc393de19417570c6239e0fde54de9433ea258cbeb6937ff7f316","urls":["bzz-raw://328e582c05b7311ad4107c46f554f15b5572b89a4ab6d067c73425b7418d946c","dweb:/ipfs/QmdM81GQY5nok5oCTP8Cc6M8s1UC9f6ZbSWybaUxrZNrmY"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"src/interfaces/IBLSApkRegistry.sol":{"keccak256":"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5","urls":["bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354","dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp"],"license":"BUSL-1.1"},"src/interfaces/IBLSSignatureChecker.sol":{"keccak256":"0x91c233280d6707404c65b7989c3fec6997c40cb3ab7d6c2e3f021102a0e2750d","urls":["bzz-raw://f2033dbb94acab37f3505734d8aad1481fbceedaa4742871f07506243a195aeb","dweb:/ipfs/QmXWJNkhUxfMhGfuFWw4UAU6nvw9qP9aswisQJLnZUUCzs"],"license":"BUSL-1.1"},"src/interfaces/IIndexRegistry.sol":{"keccak256":"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b","urls":["bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d","dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F"],"license":"BUSL-1.1"},"src/interfaces/IRegistry.sol":{"keccak256":"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3","urls":["bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25","dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY"],"license":"BUSL-1.1"},"src/interfaces/IRegistryCoordinator.sol":{"keccak256":"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385","urls":["bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d","dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD"],"license":"BUSL-1.1"},"src/interfaces/IStakeRegistry.sol":{"keccak256":"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4","urls":["bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97","dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B"],"license":"BUSL-1.1"},"src/libraries/BN254.sol":{"keccak256":"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3","urls":["bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae","dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki"],"license":"MIT"}},"version":1},"id":108} \ No newline at end of file diff --git a/crates/utils/json/IERC20.json b/crates/utils/json/IERC20.json deleted file mode 100644 index 4cb39895..00000000 --- a/crates/utils/json/IERC20.json +++ /dev/null @@ -1,185 +0,0 @@ -[ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } -] \ No newline at end of file diff --git a/crates/utils/json/IRegistryCoordinator.json b/crates/utils/json/IRegistryCoordinator.json deleted file mode 100644 index e22dcf99..00000000 --- a/crates/utils/json/IRegistryCoordinator.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"blsApkRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IBLSApkRegistry"}],"stateMutability":"view"},{"type":"function","name":"ejectOperator","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"quorumNumbers","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getCurrentQuorumBitmap","inputs":[{"name":"operatorId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint192","internalType":"uint192"}],"stateMutability":"view"},{"type":"function","name":"getOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRegistryCoordinator.OperatorInfo","components":[{"name":"operatorId","type":"bytes32","internalType":"bytes32"},{"name":"status","type":"uint8","internalType":"enum IRegistryCoordinator.OperatorStatus"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorFromId","inputs":[{"name":"operatorId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"operator","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getOperatorId","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getOperatorSetParams","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRegistryCoordinator.OperatorSetParam","components":[{"name":"maxOperatorCount","type":"uint32","internalType":"uint32"},{"name":"kickBIPsOfOperatorStake","type":"uint16","internalType":"uint16"},{"name":"kickBIPsOfTotalStake","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorStatus","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum IRegistryCoordinator.OperatorStatus"}],"stateMutability":"view"},{"type":"function","name":"getQuorumBitmapAtBlockNumberByIndex","inputs":[{"name":"operatorId","type":"bytes32","internalType":"bytes32"},{"name":"blockNumber","type":"uint32","internalType":"uint32"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint192","internalType":"uint192"}],"stateMutability":"view"},{"type":"function","name":"getQuorumBitmapHistoryLength","inputs":[{"name":"operatorId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getQuorumBitmapIndicesAtBlockNumber","inputs":[{"name":"blockNumber","type":"uint32","internalType":"uint32"},{"name":"operatorIds","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"","type":"uint32[]","internalType":"uint32[]"}],"stateMutability":"view"},{"type":"function","name":"getQuorumBitmapUpdateByIndex","inputs":[{"name":"operatorId","type":"bytes32","internalType":"bytes32"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRegistryCoordinator.QuorumBitmapUpdate","components":[{"name":"updateBlockNumber","type":"uint32","internalType":"uint32"},{"name":"nextUpdateBlockNumber","type":"uint32","internalType":"uint32"},{"name":"quorumBitmap","type":"uint192","internalType":"uint192"}]}],"stateMutability":"view"},{"type":"function","name":"indexRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IIndexRegistry"}],"stateMutability":"view"},{"type":"function","name":"numRegistries","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pubkeyRegistrationMessageHash","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct BN254.G1Point","components":[{"name":"X","type":"uint256","internalType":"uint256"},{"name":"Y","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"quorumCount","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"quorumUpdateBlockNumber","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"registries","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"stakeRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IStakeRegistry"}],"stateMutability":"view"},{"type":"event","name":"ChurnApproverUpdated","inputs":[{"name":"prevChurnApprover","type":"address","indexed":false,"internalType":"address"},{"name":"newChurnApprover","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"EjectorUpdated","inputs":[{"name":"prevEjector","type":"address","indexed":false,"internalType":"address"},{"name":"newEjector","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorDeregistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"operatorId","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"operatorId","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"OperatorSetParamsUpdated","inputs":[{"name":"quorumNumber","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"operatorSetParams","type":"tuple","indexed":false,"internalType":"struct IRegistryCoordinator.OperatorSetParam","components":[{"name":"maxOperatorCount","type":"uint32","internalType":"uint32"},{"name":"kickBIPsOfOperatorStake","type":"uint16","internalType":"uint16"},{"name":"kickBIPsOfTotalStake","type":"uint16","internalType":"uint16"}]}],"anonymous":false},{"type":"event","name":"QuorumBlockNumberUpdated","inputs":[{"name":"quorumNumber","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"blocknumber","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"blsApkRegistry()":"5df45946","ejectOperator(address,bytes)":"6e3b17db","getCurrentQuorumBitmap(bytes32)":"871ef049","getOperator(address)":"5865c60c","getOperatorFromId(bytes32)":"296bb064","getOperatorId(address)":"13542a4e","getOperatorSetParams(uint8)":"e65797ad","getOperatorStatus(address)":"fd39105a","getQuorumBitmapAtBlockNumberByIndex(bytes32,uint32,uint256)":"04ec6351","getQuorumBitmapHistoryLength(bytes32)":"03fd3492","getQuorumBitmapIndicesAtBlockNumber(uint32,bytes32[])":"c391425e","getQuorumBitmapUpdateByIndex(bytes32,uint256)":"1eb812da","indexRegistry()":"9e9923c2","numRegistries()":"d72d8dd6","owner()":"8da5cb5b","pubkeyRegistrationMessageHash(address)":"3c2a7f4c","quorumCount()":"9aa1653d","quorumUpdateBlockNumber(uint8)":"249a0c42","registries(uint256)":"6347c900","stakeRegistry()":"68304835"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prevChurnApprover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newChurnApprover\",\"type\":\"address\"}],\"name\":\"ChurnApproverUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prevEjector\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newEjector\",\"type\":\"address\"}],\"name\":\"EjectorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"}],\"name\":\"OperatorDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"maxOperatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"kickBIPsOfOperatorStake\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"kickBIPsOfTotalStake\",\"type\":\"uint16\"}],\"indexed\":false,\"internalType\":\"struct IRegistryCoordinator.OperatorSetParam\",\"name\":\"operatorSetParams\",\"type\":\"tuple\"}],\"name\":\"OperatorSetParamsUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blocknumber\",\"type\":\"uint256\"}],\"name\":\"QuorumBlockNumberUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"blsApkRegistry\",\"outputs\":[{\"internalType\":\"contract IBLSApkRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"}],\"name\":\"ejectOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"}],\"name\":\"getCurrentQuorumBitmap\",\"outputs\":[{\"internalType\":\"uint192\",\"name\":\"\",\"type\":\"uint192\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperator\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"enum IRegistryCoordinator.OperatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"internalType\":\"struct IRegistryCoordinator.OperatorInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"}],\"name\":\"getOperatorFromId\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"}],\"name\":\"getOperatorSetParams\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"maxOperatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"kickBIPsOfOperatorStake\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"kickBIPsOfTotalStake\",\"type\":\"uint16\"}],\"internalType\":\"struct IRegistryCoordinator.OperatorSetParam\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorStatus\",\"outputs\":[{\"internalType\":\"enum IRegistryCoordinator.OperatorStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"blockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getQuorumBitmapAtBlockNumberByIndex\",\"outputs\":[{\"internalType\":\"uint192\",\"name\":\"\",\"type\":\"uint192\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"}],\"name\":\"getQuorumBitmapHistoryLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"blockNumber\",\"type\":\"uint32\"},{\"internalType\":\"bytes32[]\",\"name\":\"operatorIds\",\"type\":\"bytes32[]\"}],\"name\":\"getQuorumBitmapIndicesAtBlockNumber\",\"outputs\":[{\"internalType\":\"uint32[]\",\"name\":\"\",\"type\":\"uint32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getQuorumBitmapUpdateByIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"updateBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"nextUpdateBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint192\",\"name\":\"quorumBitmap\",\"type\":\"uint192\"}],\"internalType\":\"struct IRegistryCoordinator.QuorumBitmapUpdate\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"indexRegistry\",\"outputs\":[{\"internalType\":\"contract IIndexRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"numRegistries\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"pubkeyRegistrationMessageHash\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"struct BN254.G1Point\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"quorumCount\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"}],\"name\":\"quorumUpdateBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"registries\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakeRegistry\",\"outputs\":[{\"internalType\":\"contract IStakeRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"kind\":\"dev\",\"methods\":{\"ejectOperator(address,bytes)\":{\"params\":{\"operator\":\"is the operator to eject\",\"quorumNumbers\":\"are the quorum numbers to eject the operator from\"}},\"getQuorumBitmapAtBlockNumberByIndex(bytes32,uint32,uint256)\":{\"details\":\"reverts if `index` is incorrect \"},\"pubkeyRegistrationMessageHash(address)\":{\"params\":{\"operator\":\"is the address of the operator registering their BLS public key\"}}},\"title\":\"Interface for a contract that coordinates between various registries for an AVS.\",\"version\":1},\"userdoc\":{\"events\":{\"OperatorDeregistered(address,bytes32)\":{\"notice\":\"Emits when an operator is deregistered\"},\"OperatorRegistered(address,bytes32)\":{\"notice\":\"Emits when an operator is registered\"},\"QuorumBlockNumberUpdated(uint8,uint256)\":{\"notice\":\"emitted when all the operators for a quorum are updated at once\"}},\"kind\":\"user\",\"methods\":{\"blsApkRegistry()\":{\"notice\":\"the BLS Aggregate Pubkey Registry contract that will keep track of operators' BLS aggregate pubkeys per quorum\"},\"ejectOperator(address,bytes)\":{\"notice\":\"Ejects the provided operator from the provided quorums from the AVS\"},\"getCurrentQuorumBitmap(bytes32)\":{\"notice\":\"Returns the current quorum bitmap for the given `operatorId`\"},\"getOperator(address)\":{\"notice\":\"Returns the operator struct for the given `operator`\"},\"getOperatorFromId(bytes32)\":{\"notice\":\"Returns the operator address for the given `operatorId`\"},\"getOperatorId(address)\":{\"notice\":\"Returns the operatorId for the given `operator`\"},\"getOperatorSetParams(uint8)\":{\"notice\":\"Returns the operator set params for the given `quorumNumber`\"},\"getOperatorStatus(address)\":{\"notice\":\"Returns the status for the given `operator`\"},\"getQuorumBitmapAtBlockNumberByIndex(bytes32,uint32,uint256)\":{\"notice\":\"Returns the quorum bitmap for the given `operatorId` at the given `blockNumber` via the `index`\"},\"getQuorumBitmapHistoryLength(bytes32)\":{\"notice\":\"Returns the length of the quorum bitmap history for the given `operatorId`\"},\"getQuorumBitmapIndicesAtBlockNumber(uint32,bytes32[])\":{\"notice\":\"Returns the indices of the quorumBitmaps for the provided `operatorIds` at the given `blockNumber`\"},\"getQuorumBitmapUpdateByIndex(bytes32,uint256)\":{\"notice\":\"Returns the `index`th entry in the operator with `operatorId`'s bitmap history\"},\"indexRegistry()\":{\"notice\":\"the index Registry contract that will keep track of operators' indexes\"},\"numRegistries()\":{\"notice\":\"Returns the number of registries\"},\"owner()\":{\"notice\":\"The owner of the registry coordinator\"},\"pubkeyRegistrationMessageHash(address)\":{\"notice\":\"Returns the message hash that an operator must sign to register their BLS public key.\"},\"quorumCount()\":{\"notice\":\"Returns the number of quorums the registry coordinator has created\"},\"quorumUpdateBlockNumber(uint8)\":{\"notice\":\"returns the blocknumber the quorum was last updated all at once for all operators\"},\"registries(uint256)\":{\"notice\":\"Returns the registry at the desired index\"},\"stakeRegistry()\":{\"notice\":\"the Stake registry contract that will keep track of operators' stakes\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/IRegistryCoordinator.sol\":\"IRegistryCoordinator\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x9906828f285cc76bbbe077f908d87c4bffd0a3bff9394f7a4b60a9d9a2672c1e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4c0f43e14e50ac322685b5cd301459118e2770bdfb053f8f3ded08ee9fbf5bf9\",\"dweb:/ipfs/QmPQtY6KEUCbrKwweu8BvA7YjnXXxkkuZPyLSRGV5EoPTe\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x1f8e17b0f952042132ca64e202022d83783b7f42ec364cd0cad1950ecb95a13d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a2be4c476902f25fb058f779e3d4e5b1182d9dc9fbdec518acbe9544c0d3c141\",\"dweb:/ipfs/QmdgZq6JrCD36Xry2vD8QSeGguGQ9TGWY2CMvKrhR9NQ6u\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x22b7a17d53696412f80645f1fa65274ae89040bdc706262e3b6cc577dbafcaa4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b15002346892a48fd7cf9a8a4cf121e17ba133d21e4822e71fbffac85117d6b2\",\"dweb:/ipfs/QmRBPJUcRQ6uKmSvCYhhtVWcKCAWkQFSVZZwZR7HR42kiz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x33a935182f77cfd508fc57ec8e45afc8dc3748e1e9b764d36bf90ae6466f257b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d3981b5bbf435cda04e2ed2f348f886ebf1500c18dd4bbf67b1f1bc0272e2d3f\",\"dweb:/ipfs/QmYHDzQx29ataM2ejRCXFcPxaPdxWqX8v7uwUAYoG9572w\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xffafae142d5337a5c204519e8f82fe3a5fae137286ebf597fa50699cf12c2474\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b577a12f7788095b230fd069b36ba9b3cdb376a0b7c3d8ae71588e5bf0c2f574\",\"dweb:/ipfs/QmXd1cDzYpxecyFEwowLiBKKjzRHgV8cs1qvLwypdEbVYy\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b\",\"dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x3d9eeecf96bd8d6427445db76b9a73f9861c6c3601001226bed2f7fb81e252e6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c836719a65892c5cffdba9de4e009e5f8a4e49aea9c5f46d57b15660c6c2d07d\",\"dweb:/ipfs/QmWuzNq2HdEH1hsRg8Jc95k1DZdNjXFb5ehkz9iLNNSqhT\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xaeee2ac5cfcc3388b63bef2668fa435c65a4b433b52ce9f5013822c6ec875fa3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://86eb6d3da5b45f7509995ffa170eaaadffbdd6d43e50f0902d421bb93a7dfda6\",\"dweb:/ipfs/QmWaYcgtnaVpcekSP7LyY6AGrE3hRE3kZE4H4EKhsSysDG\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x633b5fb10209891f696a9c8db4d7327ed7f560a2e9710489e38a67daeda59a96\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c8381baaec3afa6b200420c093706974776dfd14f6887abe7457eb867351a068\",\"dweb:/ipfs/QmP9H9ttS1sJ6FrvMEefJhU6B4z1wMCjcYYZqVfsLXagJE\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0x1c5895f913e95682b0c371595cb1fa0d9c34ea921a0fbb5c32201b4315e80a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c470e449a3144fbaaa17b44823ba9cba901f063b04355c800bf62cabdd081cd4\",\"dweb:/ipfs/QmSJ8gaAF4WA1aXGmLesnnRo8fDZNEFnqZSGNkJnXLRM9R\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0xcf8422dfa6ccc393de19417570c6239e0fde54de9433ea258cbeb6937ff7f316\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://328e582c05b7311ad4107c46f554f15b5572b89a4ab6d067c73425b7418d946c\",\"dweb:/ipfs/QmdM81GQY5nok5oCTP8Cc6M8s1UC9f6ZbSWybaUxrZNrmY\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"src/interfaces/IBLSApkRegistry.sol\":{\"keccak256\":\"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354\",\"dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp\"]},\"src/interfaces/IIndexRegistry.sol\":{\"keccak256\":\"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d\",\"dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F\"]},\"src/interfaces/IRegistry.sol\":{\"keccak256\":\"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25\",\"dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY\"]},\"src/interfaces/IRegistryCoordinator.sol\":{\"keccak256\":\"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d\",\"dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD\"]},\"src/interfaces/IStakeRegistry.sol\":{\"keccak256\":\"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97\",\"dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B\"]},\"src/libraries/BN254.sol\":{\"keccak256\":\"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae\",\"dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"prevChurnApprover","type":"address","indexed":false},{"internalType":"address","name":"newChurnApprover","type":"address","indexed":false}],"type":"event","name":"ChurnApproverUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"prevEjector","type":"address","indexed":false},{"internalType":"address","name":"newEjector","type":"address","indexed":false}],"type":"event","name":"EjectorUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes32","name":"operatorId","type":"bytes32","indexed":true}],"type":"event","name":"OperatorDeregistered","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes32","name":"operatorId","type":"bytes32","indexed":true}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8","indexed":true},{"internalType":"struct IRegistryCoordinator.OperatorSetParam","name":"operatorSetParams","type":"tuple","components":[{"internalType":"uint32","name":"maxOperatorCount","type":"uint32"},{"internalType":"uint16","name":"kickBIPsOfOperatorStake","type":"uint16"},{"internalType":"uint16","name":"kickBIPsOfTotalStake","type":"uint16"}],"indexed":false}],"type":"event","name":"OperatorSetParamsUpdated","anonymous":false},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8","indexed":true},{"internalType":"uint256","name":"blocknumber","type":"uint256","indexed":false}],"type":"event","name":"QuorumBlockNumberUpdated","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"blsApkRegistry","outputs":[{"internalType":"contract IBLSApkRegistry","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes","name":"quorumNumbers","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"ejectOperator"},{"inputs":[{"internalType":"bytes32","name":"operatorId","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getCurrentQuorumBitmap","outputs":[{"internalType":"uint192","name":"","type":"uint192"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperator","outputs":[{"internalType":"struct IRegistryCoordinator.OperatorInfo","name":"","type":"tuple","components":[{"internalType":"bytes32","name":"operatorId","type":"bytes32"},{"internalType":"enum IRegistryCoordinator.OperatorStatus","name":"status","type":"uint8"}]}]},{"inputs":[{"internalType":"bytes32","name":"operatorId","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getOperatorFromId","outputs":[{"internalType":"address","name":"operator","type":"address"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"}],"stateMutability":"view","type":"function","name":"getOperatorSetParams","outputs":[{"internalType":"struct IRegistryCoordinator.OperatorSetParam","name":"","type":"tuple","components":[{"internalType":"uint32","name":"maxOperatorCount","type":"uint32"},{"internalType":"uint16","name":"kickBIPsOfOperatorStake","type":"uint16"},{"internalType":"uint16","name":"kickBIPsOfTotalStake","type":"uint16"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorStatus","outputs":[{"internalType":"enum IRegistryCoordinator.OperatorStatus","name":"","type":"uint8"}]},{"inputs":[{"internalType":"bytes32","name":"operatorId","type":"bytes32"},{"internalType":"uint32","name":"blockNumber","type":"uint32"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"getQuorumBitmapAtBlockNumberByIndex","outputs":[{"internalType":"uint192","name":"","type":"uint192"}]},{"inputs":[{"internalType":"bytes32","name":"operatorId","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getQuorumBitmapHistoryLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint32","name":"blockNumber","type":"uint32"},{"internalType":"bytes32[]","name":"operatorIds","type":"bytes32[]"}],"stateMutability":"view","type":"function","name":"getQuorumBitmapIndicesAtBlockNumber","outputs":[{"internalType":"uint32[]","name":"","type":"uint32[]"}]},{"inputs":[{"internalType":"bytes32","name":"operatorId","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"getQuorumBitmapUpdateByIndex","outputs":[{"internalType":"struct IRegistryCoordinator.QuorumBitmapUpdate","name":"","type":"tuple","components":[{"internalType":"uint32","name":"updateBlockNumber","type":"uint32"},{"internalType":"uint32","name":"nextUpdateBlockNumber","type":"uint32"},{"internalType":"uint192","name":"quorumBitmap","type":"uint192"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"indexRegistry","outputs":[{"internalType":"contract IIndexRegistry","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"numRegistries","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"pubkeyRegistrationMessageHash","outputs":[{"internalType":"struct BN254.G1Point","name":"","type":"tuple","components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"quorumCount","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"}],"stateMutability":"view","type":"function","name":"quorumUpdateBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"registries","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"stakeRegistry","outputs":[{"internalType":"contract IStakeRegistry","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"ejectOperator(address,bytes)":{"params":{"operator":"is the operator to eject","quorumNumbers":"are the quorum numbers to eject the operator from"}},"getQuorumBitmapAtBlockNumberByIndex(bytes32,uint32,uint256)":{"details":"reverts if `index` is incorrect "},"pubkeyRegistrationMessageHash(address)":{"params":{"operator":"is the address of the operator registering their BLS public key"}}},"version":1},"userdoc":{"kind":"user","methods":{"blsApkRegistry()":{"notice":"the BLS Aggregate Pubkey Registry contract that will keep track of operators' BLS aggregate pubkeys per quorum"},"ejectOperator(address,bytes)":{"notice":"Ejects the provided operator from the provided quorums from the AVS"},"getCurrentQuorumBitmap(bytes32)":{"notice":"Returns the current quorum bitmap for the given `operatorId`"},"getOperator(address)":{"notice":"Returns the operator struct for the given `operator`"},"getOperatorFromId(bytes32)":{"notice":"Returns the operator address for the given `operatorId`"},"getOperatorId(address)":{"notice":"Returns the operatorId for the given `operator`"},"getOperatorSetParams(uint8)":{"notice":"Returns the operator set params for the given `quorumNumber`"},"getOperatorStatus(address)":{"notice":"Returns the status for the given `operator`"},"getQuorumBitmapAtBlockNumberByIndex(bytes32,uint32,uint256)":{"notice":"Returns the quorum bitmap for the given `operatorId` at the given `blockNumber` via the `index`"},"getQuorumBitmapHistoryLength(bytes32)":{"notice":"Returns the length of the quorum bitmap history for the given `operatorId`"},"getQuorumBitmapIndicesAtBlockNumber(uint32,bytes32[])":{"notice":"Returns the indices of the quorumBitmaps for the provided `operatorIds` at the given `blockNumber`"},"getQuorumBitmapUpdateByIndex(bytes32,uint256)":{"notice":"Returns the `index`th entry in the operator with `operatorId`'s bitmap history"},"indexRegistry()":{"notice":"the index Registry contract that will keep track of operators' indexes"},"numRegistries()":{"notice":"Returns the number of registries"},"owner()":{"notice":"The owner of the registry coordinator"},"pubkeyRegistrationMessageHash(address)":{"notice":"Returns the message hash that an operator must sign to register their BLS public key."},"quorumCount()":{"notice":"Returns the number of quorums the registry coordinator has created"},"quorumUpdateBlockNumber(uint8)":{"notice":"returns the blocknumber the quorum was last updated all at once for all operators"},"registries(uint256)":{"notice":"Returns the registry at the desired index"},"stakeRegistry()":{"notice":"the Stake registry contract that will keep track of operators' stakes"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable/","@openzeppelin/=lib/openzeppelin-contracts/","ds-test/=lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/IRegistryCoordinator.sol":"IRegistryCoordinator"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x9906828f285cc76bbbe077f908d87c4bffd0a3bff9394f7a4b60a9d9a2672c1e","urls":["bzz-raw://4c0f43e14e50ac322685b5cd301459118e2770bdfb053f8f3ded08ee9fbf5bf9","dweb:/ipfs/QmPQtY6KEUCbrKwweu8BvA7YjnXXxkkuZPyLSRGV5EoPTe"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0x1f8e17b0f952042132ca64e202022d83783b7f42ec364cd0cad1950ecb95a13d","urls":["bzz-raw://a2be4c476902f25fb058f779e3d4e5b1182d9dc9fbdec518acbe9544c0d3c141","dweb:/ipfs/QmdgZq6JrCD36Xry2vD8QSeGguGQ9TGWY2CMvKrhR9NQ6u"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0x22b7a17d53696412f80645f1fa65274ae89040bdc706262e3b6cc577dbafcaa4","urls":["bzz-raw://b15002346892a48fd7cf9a8a4cf121e17ba133d21e4822e71fbffac85117d6b2","dweb:/ipfs/QmRBPJUcRQ6uKmSvCYhhtVWcKCAWkQFSVZZwZR7HR42kiz"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x33a935182f77cfd508fc57ec8e45afc8dc3748e1e9b764d36bf90ae6466f257b","urls":["bzz-raw://d3981b5bbf435cda04e2ed2f348f886ebf1500c18dd4bbf67b1f1bc0272e2d3f","dweb:/ipfs/QmYHDzQx29ataM2ejRCXFcPxaPdxWqX8v7uwUAYoG9572w"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0xffafae142d5337a5c204519e8f82fe3a5fae137286ebf597fa50699cf12c2474","urls":["bzz-raw://b577a12f7788095b230fd069b36ba9b3cdb376a0b7c3d8ae71588e5bf0c2f574","dweb:/ipfs/QmXd1cDzYpxecyFEwowLiBKKjzRHgV8cs1qvLwypdEbVYy"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4","urls":["bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b","dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x3d9eeecf96bd8d6427445db76b9a73f9861c6c3601001226bed2f7fb81e252e6","urls":["bzz-raw://c836719a65892c5cffdba9de4e009e5f8a4e49aea9c5f46d57b15660c6c2d07d","dweb:/ipfs/QmWuzNq2HdEH1hsRg8Jc95k1DZdNjXFb5ehkz9iLNNSqhT"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xaeee2ac5cfcc3388b63bef2668fa435c65a4b433b52ce9f5013822c6ec875fa3","urls":["bzz-raw://86eb6d3da5b45f7509995ffa170eaaadffbdd6d43e50f0902d421bb93a7dfda6","dweb:/ipfs/QmWaYcgtnaVpcekSP7LyY6AGrE3hRE3kZE4H4EKhsSysDG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x633b5fb10209891f696a9c8db4d7327ed7f560a2e9710489e38a67daeda59a96","urls":["bzz-raw://c8381baaec3afa6b200420c093706974776dfd14f6887abe7457eb867351a068","dweb:/ipfs/QmP9H9ttS1sJ6FrvMEefJhU6B4z1wMCjcYYZqVfsLXagJE"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0x1c5895f913e95682b0c371595cb1fa0d9c34ea921a0fbb5c32201b4315e80a56","urls":["bzz-raw://c470e449a3144fbaaa17b44823ba9cba901f063b04355c800bf62cabdd081cd4","dweb:/ipfs/QmSJ8gaAF4WA1aXGmLesnnRo8fDZNEFnqZSGNkJnXLRM9R"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0xcf8422dfa6ccc393de19417570c6239e0fde54de9433ea258cbeb6937ff7f316","urls":["bzz-raw://328e582c05b7311ad4107c46f554f15b5572b89a4ab6d067c73425b7418d946c","dweb:/ipfs/QmdM81GQY5nok5oCTP8Cc6M8s1UC9f6ZbSWybaUxrZNrmY"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"src/interfaces/IBLSApkRegistry.sol":{"keccak256":"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5","urls":["bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354","dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp"],"license":"BUSL-1.1"},"src/interfaces/IIndexRegistry.sol":{"keccak256":"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b","urls":["bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d","dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F"],"license":"BUSL-1.1"},"src/interfaces/IRegistry.sol":{"keccak256":"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3","urls":["bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25","dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY"],"license":"BUSL-1.1"},"src/interfaces/IRegistryCoordinator.sol":{"keccak256":"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385","urls":["bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d","dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD"],"license":"BUSL-1.1"},"src/interfaces/IStakeRegistry.sol":{"keccak256":"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4","urls":["bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97","dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B"],"license":"BUSL-1.1"},"src/libraries/BN254.sol":{"keccak256":"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3","urls":["bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae","dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki"],"license":"MIT"}},"version":1},"id":112} \ No newline at end of file diff --git a/crates/utils/json/ISlasher.json b/crates/utils/json/ISlasher.json deleted file mode 100644 index 3f78aadd..00000000 --- a/crates/utils/json/ISlasher.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"canSlash","inputs":[{"name":"toBeSlashed","type":"address","internalType":"address"},{"name":"slashingContract","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"canWithdraw","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"withdrawalStartBlock","type":"uint32","internalType":"uint32"},{"name":"middlewareTimesIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"contractCanSlashOperatorUntilBlock","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"serviceContract","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"delegation","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IDelegationManager"}],"stateMutability":"view"},{"type":"function","name":"freezeOperator","inputs":[{"name":"toBeFrozen","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getCorrectValueForInsertAfter","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"updateBlock","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getMiddlewareTimesIndexServeUntilBlock","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"getMiddlewareTimesIndexStalestUpdateBlock","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"isFrozen","inputs":[{"name":"staker","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"latestUpdateBlock","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"serviceContract","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"middlewareTimesLength","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"operatorToMiddlewareTimes","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"arrayIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ISlasher.MiddlewareTimes","components":[{"name":"stalestUpdateBlock","type":"uint32","internalType":"uint32"},{"name":"latestServeUntilBlock","type":"uint32","internalType":"uint32"}]}],"stateMutability":"view"},{"type":"function","name":"operatorWhitelistedContractsLinkedListEntry","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"node","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"operatorWhitelistedContractsLinkedListSize","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"optIntoSlashing","inputs":[{"name":"contractAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recordFirstStakeUpdate","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"serveUntilBlock","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recordLastStakeUpdateAndRevokeSlashingAbility","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"serveUntilBlock","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recordStakeUpdate","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"updateBlock","type":"uint32","internalType":"uint32"},{"name":"serveUntilBlock","type":"uint32","internalType":"uint32"},{"name":"insertAfter","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resetFrozenStatus","inputs":[{"name":"frozenAddresses","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"strategyManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IStrategyManager"}],"stateMutability":"view"},{"type":"event","name":"FrozenStatusReset","inputs":[{"name":"previouslySlashedAddress","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MiddlewareTimesAdded","inputs":[{"name":"operator","type":"address","indexed":false,"internalType":"address"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"stalestUpdateBlock","type":"uint32","indexed":false,"internalType":"uint32"},{"name":"latestServeUntilBlock","type":"uint32","indexed":false,"internalType":"uint32"}],"anonymous":false},{"type":"event","name":"OperatorFrozen","inputs":[{"name":"slashedOperator","type":"address","indexed":true,"internalType":"address"},{"name":"slashingContract","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OptedIntoSlashing","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SlashingAbilityRevoked","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"contractCanSlashOperatorUntilBlock","type":"uint32","indexed":false,"internalType":"uint32"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"canSlash(address,address)":"d98128c0","canWithdraw(address,uint32,uint256)":"8105e043","contractCanSlashOperatorUntilBlock(address,address)":"6f0c2f74","delegation()":"df5cf723","freezeOperator(address)":"38c8ee64","getCorrectValueForInsertAfter(address,uint32)":"723e59c7","getMiddlewareTimesIndexServeUntilBlock(address,uint32)":"7259a45c","getMiddlewareTimesIndexStalestUpdateBlock(address,uint32)":"1874e5ae","isFrozen(address)":"e5839836","latestUpdateBlock(address,address)":"da16e29b","middlewareTimesLength(address)":"a49db732","operatorToMiddlewareTimes(address,uint256)":"282670fc","operatorWhitelistedContractsLinkedListEntry(address,address)":"855fcc4a","operatorWhitelistedContractsLinkedListSize(address)":"e921d4fa","optIntoSlashing(address)":"f73b7519","recordFirstStakeUpdate(address,uint32)":"175d3205","recordLastStakeUpdateAndRevokeSlashingAbility(address,uint32)":"0ffabbce","recordStakeUpdate(address,uint32,uint32,uint256)":"c747075b","resetFrozenStatus(address[])":"7cf72bba","strategyManager()":"39b70e38"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previouslySlashedAddress\",\"type\":\"address\"}],\"name\":\"FrozenStatusReset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"stalestUpdateBlock\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"latestServeUntilBlock\",\"type\":\"uint32\"}],\"name\":\"MiddlewareTimesAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"slashedOperator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"slashingContract\",\"type\":\"address\"}],\"name\":\"OperatorFrozen\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"OptedIntoSlashing\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"contractCanSlashOperatorUntilBlock\",\"type\":\"uint32\"}],\"name\":\"SlashingAbilityRevoked\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"toBeSlashed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"slashingContract\",\"type\":\"address\"}],\"name\":\"canSlash\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"middlewareTimesIndex\",\"type\":\"uint256\"}],\"name\":\"canWithdraw\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"serviceContract\",\"type\":\"address\"}],\"name\":\"contractCanSlashOperatorUntilBlock\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegation\",\"outputs\":[{\"internalType\":\"contract IDelegationManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"toBeFrozen\",\"type\":\"address\"}],\"name\":\"freezeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"updateBlock\",\"type\":\"uint32\"}],\"name\":\"getCorrectValueForInsertAfter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getMiddlewareTimesIndexServeUntilBlock\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getMiddlewareTimesIndexStalestUpdateBlock\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"isFrozen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"serviceContract\",\"type\":\"address\"}],\"name\":\"latestUpdateBlock\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"middlewareTimesLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"arrayIndex\",\"type\":\"uint256\"}],\"name\":\"operatorToMiddlewareTimes\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"stalestUpdateBlock\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"latestServeUntilBlock\",\"type\":\"uint32\"}],\"internalType\":\"struct ISlasher.MiddlewareTimes\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"node\",\"type\":\"address\"}],\"name\":\"operatorWhitelistedContractsLinkedListEntry\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"operatorWhitelistedContractsLinkedListSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"optIntoSlashing\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"serveUntilBlock\",\"type\":\"uint32\"}],\"name\":\"recordFirstStakeUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"serveUntilBlock\",\"type\":\"uint32\"}],\"name\":\"recordLastStakeUpdateAndRevokeSlashingAbility\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"updateBlock\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"serveUntilBlock\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"insertAfter\",\"type\":\"uint256\"}],\"name\":\"recordStakeUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"frozenAddresses\",\"type\":\"address[]\"}],\"name\":\"resetFrozenStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"strategyManager\",\"outputs\":[{\"internalType\":\"contract IStrategyManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"events\":{\"OperatorFrozen(address,address)\":{\"details\":\"The `slashingContract` must have permission to slash the `slashedOperator`, i.e. `canSlash(slasherOperator, slashingContract)` must return 'true'.\"}},\"kind\":\"dev\",\"methods\":{\"canWithdraw(address,uint32,uint256)\":{\"details\":\"The correct `middlewareTimesIndex` input should be computable off-chain.\",\"params\":{\"middlewareTimesIndex\":\"Indicates an index in `operatorToMiddlewareTimes[operator]` to consult as proof of the `operator`'s ability to withdraw\",\"operator\":\"Either the operator who queued the withdrawal themselves, or if the withdrawing party is a staker who delegated to an operator, this address is the operator *who the staker was delegated to* at the time of the `withdrawalStartBlock`.\",\"withdrawalStartBlock\":\"The block number at which the withdrawal was initiated.\"}},\"freezeOperator(address)\":{\"details\":\"Technically the operator is 'frozen' (hence the name of this function), and then subject to slashing pending a decision by a human-in-the-loop.The operator must have previously given the caller (which should be a contract) the ability to slash them, through a call to `optIntoSlashing`.\",\"params\":{\"toBeFrozen\":\"The operator to be frozen.\"}},\"isFrozen(address)\":{\"params\":{\"staker\":\"The staker of interest.\"},\"returns\":{\"_0\":\"Returns 'true' if `staker` themselves has their status set to frozen, OR if the staker is delegated to an operator who has their status set to frozen. Otherwise returns 'false'.\"}},\"optIntoSlashing(address)\":{\"details\":\"Typically, this function must be called prior to registering for a middleware.\"},\"recordFirstStakeUpdate(address,uint32)\":{\"details\":\"adds the middleware's slashing contract to the operator's linked list\",\"params\":{\"operator\":\"the operator whose stake update is being recorded\",\"serveUntilBlock\":\"the block until which the operator's stake at the current block is slashable\"}},\"recordLastStakeUpdateAndRevokeSlashingAbility(address,uint32)\":{\"details\":\"removes the middleware's slashing contract to the operator's linked list and revokes the middleware's (i.e. caller's) ability to slash `operator` once `serveUntil` is reached\",\"params\":{\"operator\":\"the operator whose stake update is being recorded\",\"serveUntilBlock\":\"the block until which the operator's stake at the current block is slashable\"}},\"recordStakeUpdate(address,uint32,uint32,uint256)\":{\"details\":\"insertAfter should be calculated offchain before making the transaction that calls this. this is subject to race conditions, but it is anticipated to be rare and not detrimental.\",\"params\":{\"insertAfter\":\"the element of the operators linked list that the currently updating middleware should be inserted after\",\"operator\":\"the operator whose stake update is being recorded\",\"serveUntilBlock\":\"the block until which the operator's stake at updateBlock is slashable\",\"updateBlock\":\"the block for which the stake update is being recorded\"}},\"resetFrozenStatus(address[])\":{\"details\":\"Callable only by the contract owner (i.e. governance).\"}},\"title\":\"Interface for the primary 'slashing' contract for EigenLayer.\",\"version\":1},\"userdoc\":{\"events\":{\"FrozenStatusReset(address)\":{\"notice\":\"Emitted when `previouslySlashedAddress` is 'unfrozen', allowing them to again move deposited funds within EigenLayer.\"},\"MiddlewareTimesAdded(address,uint256,uint32,uint32)\":{\"notice\":\"Emitted when a middleware times is added to `operator`'s array.\"},\"OperatorFrozen(address,address)\":{\"notice\":\"Emitted when `slashingContract` 'freezes' the `slashedOperator`.\"},\"OptedIntoSlashing(address,address)\":{\"notice\":\"Emitted when `operator` begins to allow `contractAddress` to slash them.\"},\"SlashingAbilityRevoked(address,address,uint32)\":{\"notice\":\"Emitted when `contractAddress` signals that it will no longer be able to slash `operator` after the `contractCanSlashOperatorUntilBlock`.\"}},\"kind\":\"user\",\"methods\":{\"canSlash(address,address)\":{\"notice\":\"Returns true if `slashingContract` is currently allowed to slash `toBeSlashed`.\"},\"canWithdraw(address,uint32,uint256)\":{\"notice\":\"Returns 'true' if `operator` can currently complete a withdrawal started at the `withdrawalStartBlock`, with `middlewareTimesIndex` used to specify the index of a `MiddlewareTimes` struct in the operator's list (i.e. an index in `operatorToMiddlewareTimes[operator]`). The specified struct is consulted as proof of the `operator`'s ability (or lack thereof) to complete the withdrawal. This function will return 'false' if the operator cannot currently complete a withdrawal started at the `withdrawalStartBlock`, *or* in the event that an incorrect `middlewareTimesIndex` is supplied, even if one or more correct inputs exist.\"},\"contractCanSlashOperatorUntilBlock(address,address)\":{\"notice\":\"Returns the block until which `serviceContract` is allowed to slash the `operator`.\"},\"delegation()\":{\"notice\":\"The DelegationManager contract of EigenLayer\"},\"freezeOperator(address)\":{\"notice\":\"Used for 'slashing' a certain operator.\"},\"getCorrectValueForInsertAfter(address,uint32)\":{\"notice\":\"A search routine for finding the correct input value of `insertAfter` to `recordStakeUpdate` / `_updateMiddlewareList`.\"},\"getMiddlewareTimesIndexServeUntilBlock(address,uint32)\":{\"notice\":\"Getter function for fetching `operatorToMiddlewareTimes[operator][index].latestServeUntil`.\"},\"getMiddlewareTimesIndexStalestUpdateBlock(address,uint32)\":{\"notice\":\"Getter function for fetching `operatorToMiddlewareTimes[operator][index].stalestUpdateBlock`.\"},\"isFrozen(address)\":{\"notice\":\"Used to determine whether `staker` is actively 'frozen'. If a staker is frozen, then they are potentially subject to slashing of their funds, and cannot cannot deposit or withdraw from the strategyManager until the slashing process is completed and the staker's status is reset (to 'unfrozen').\"},\"latestUpdateBlock(address,address)\":{\"notice\":\"Returns the block at which the `serviceContract` last updated its view of the `operator`'s stake\"},\"middlewareTimesLength(address)\":{\"notice\":\"Getter function for fetching `operatorToMiddlewareTimes[operator].length`\"},\"operatorToMiddlewareTimes(address,uint256)\":{\"notice\":\"operator => [ ( the least recent update block of all of the middlewares it's serving/served, latest time that the stake bonded at that update needed to serve until ) ]\"},\"operatorWhitelistedContractsLinkedListEntry(address,address)\":{\"notice\":\"Getter function for fetching a single node in the operator's linked list (`_operatorToWhitelistedContractsByUpdate[operator]`).\"},\"operatorWhitelistedContractsLinkedListSize(address)\":{\"notice\":\"Getter function for fetching `_operatorToWhitelistedContractsByUpdate[operator].size`.\"},\"optIntoSlashing(address)\":{\"notice\":\"Gives the `contractAddress` permission to slash the funds of the caller.\"},\"recordFirstStakeUpdate(address,uint32)\":{\"notice\":\"this function is a called by middlewares during an operator's registration to make sure the operator's stake at registration is slashable until serveUntil\"},\"recordLastStakeUpdateAndRevokeSlashingAbility(address,uint32)\":{\"notice\":\"this function is a called by middlewares during an operator's deregistration to make sure the operator's stake at deregistration is slashable until serveUntil\"},\"recordStakeUpdate(address,uint32,uint32,uint256)\":{\"notice\":\"this function is a called by middlewares during a stake update for an operator (perhaps to free pending withdrawals) to make sure the operator's stake at updateBlock is slashable until serveUntil\"},\"resetFrozenStatus(address[])\":{\"notice\":\"Removes the 'frozen' status from each of the `frozenAddresses`\"},\"strategyManager()\":{\"notice\":\"The StrategyManager contract of EigenLayer\"}},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-serviceSee the `Slasher` contract itself for implementation details.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":\"ISlasher\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x9906828f285cc76bbbe077f908d87c4bffd0a3bff9394f7a4b60a9d9a2672c1e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4c0f43e14e50ac322685b5cd301459118e2770bdfb053f8f3ded08ee9fbf5bf9\",\"dweb:/ipfs/QmPQtY6KEUCbrKwweu8BvA7YjnXXxkkuZPyLSRGV5EoPTe\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x1f8e17b0f952042132ca64e202022d83783b7f42ec364cd0cad1950ecb95a13d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a2be4c476902f25fb058f779e3d4e5b1182d9dc9fbdec518acbe9544c0d3c141\",\"dweb:/ipfs/QmdgZq6JrCD36Xry2vD8QSeGguGQ9TGWY2CMvKrhR9NQ6u\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x22b7a17d53696412f80645f1fa65274ae89040bdc706262e3b6cc577dbafcaa4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b15002346892a48fd7cf9a8a4cf121e17ba133d21e4822e71fbffac85117d6b2\",\"dweb:/ipfs/QmRBPJUcRQ6uKmSvCYhhtVWcKCAWkQFSVZZwZR7HR42kiz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x33a935182f77cfd508fc57ec8e45afc8dc3748e1e9b764d36bf90ae6466f257b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d3981b5bbf435cda04e2ed2f348f886ebf1500c18dd4bbf67b1f1bc0272e2d3f\",\"dweb:/ipfs/QmYHDzQx29ataM2ejRCXFcPxaPdxWqX8v7uwUAYoG9572w\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xffafae142d5337a5c204519e8f82fe3a5fae137286ebf597fa50699cf12c2474\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b577a12f7788095b230fd069b36ba9b3cdb376a0b7c3d8ae71588e5bf0c2f574\",\"dweb:/ipfs/QmXd1cDzYpxecyFEwowLiBKKjzRHgV8cs1qvLwypdEbVYy\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b\",\"dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x3d9eeecf96bd8d6427445db76b9a73f9861c6c3601001226bed2f7fb81e252e6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c836719a65892c5cffdba9de4e009e5f8a4e49aea9c5f46d57b15660c6c2d07d\",\"dweb:/ipfs/QmWuzNq2HdEH1hsRg8Jc95k1DZdNjXFb5ehkz9iLNNSqhT\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xaeee2ac5cfcc3388b63bef2668fa435c65a4b433b52ce9f5013822c6ec875fa3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://86eb6d3da5b45f7509995ffa170eaaadffbdd6d43e50f0902d421bb93a7dfda6\",\"dweb:/ipfs/QmWaYcgtnaVpcekSP7LyY6AGrE3hRE3kZE4H4EKhsSysDG\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x633b5fb10209891f696a9c8db4d7327ed7f560a2e9710489e38a67daeda59a96\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c8381baaec3afa6b200420c093706974776dfd14f6887abe7457eb867351a068\",\"dweb:/ipfs/QmP9H9ttS1sJ6FrvMEefJhU6B4z1wMCjcYYZqVfsLXagJE\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0x1c5895f913e95682b0c371595cb1fa0d9c34ea921a0fbb5c32201b4315e80a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c470e449a3144fbaaa17b44823ba9cba901f063b04355c800bf62cabdd081cd4\",\"dweb:/ipfs/QmSJ8gaAF4WA1aXGmLesnnRo8fDZNEFnqZSGNkJnXLRM9R\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0xcf8422dfa6ccc393de19417570c6239e0fde54de9433ea258cbeb6937ff7f316\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://328e582c05b7311ad4107c46f554f15b5572b89a4ab6d067c73425b7418d946c\",\"dweb:/ipfs/QmdM81GQY5nok5oCTP8Cc6M8s1UC9f6ZbSWybaUxrZNrmY\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"previouslySlashedAddress","type":"address","indexed":true}],"type":"event","name":"FrozenStatusReset","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint32","name":"stalestUpdateBlock","type":"uint32","indexed":false},{"internalType":"uint32","name":"latestServeUntilBlock","type":"uint32","indexed":false}],"type":"event","name":"MiddlewareTimesAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"slashedOperator","type":"address","indexed":true},{"internalType":"address","name":"slashingContract","type":"address","indexed":true}],"type":"event","name":"OperatorFrozen","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true}],"type":"event","name":"OptedIntoSlashing","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint32","name":"contractCanSlashOperatorUntilBlock","type":"uint32","indexed":false}],"type":"event","name":"SlashingAbilityRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"toBeSlashed","type":"address"},{"internalType":"address","name":"slashingContract","type":"address"}],"stateMutability":"view","type":"function","name":"canSlash","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint32","name":"withdrawalStartBlock","type":"uint32"},{"internalType":"uint256","name":"middlewareTimesIndex","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"canWithdraw","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"serviceContract","type":"address"}],"stateMutability":"view","type":"function","name":"contractCanSlashOperatorUntilBlock","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"delegation","outputs":[{"internalType":"contract IDelegationManager","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"toBeFrozen","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"freezeOperator"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint32","name":"updateBlock","type":"uint32"}],"stateMutability":"view","type":"function","name":"getCorrectValueForInsertAfter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"view","type":"function","name":"getMiddlewareTimesIndexServeUntilBlock","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"view","type":"function","name":"getMiddlewareTimesIndexStalestUpdateBlock","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"stateMutability":"view","type":"function","name":"isFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"serviceContract","type":"address"}],"stateMutability":"view","type":"function","name":"latestUpdateBlock","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"middlewareTimesLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"arrayIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"operatorToMiddlewareTimes","outputs":[{"internalType":"struct ISlasher.MiddlewareTimes","name":"","type":"tuple","components":[{"internalType":"uint32","name":"stalestUpdateBlock","type":"uint32"},{"internalType":"uint32","name":"latestServeUntilBlock","type":"uint32"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"node","type":"address"}],"stateMutability":"view","type":"function","name":"operatorWhitelistedContractsLinkedListEntry","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"operatorWhitelistedContractsLinkedListSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"optIntoSlashing"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint32","name":"serveUntilBlock","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"recordFirstStakeUpdate"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint32","name":"serveUntilBlock","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"recordLastStakeUpdateAndRevokeSlashingAbility"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint32","name":"updateBlock","type":"uint32"},{"internalType":"uint32","name":"serveUntilBlock","type":"uint32"},{"internalType":"uint256","name":"insertAfter","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"recordStakeUpdate"},{"inputs":[{"internalType":"address[]","name":"frozenAddresses","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"resetFrozenStatus"},{"inputs":[],"stateMutability":"view","type":"function","name":"strategyManager","outputs":[{"internalType":"contract IStrategyManager","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"canWithdraw(address,uint32,uint256)":{"details":"The correct `middlewareTimesIndex` input should be computable off-chain.","params":{"middlewareTimesIndex":"Indicates an index in `operatorToMiddlewareTimes[operator]` to consult as proof of the `operator`'s ability to withdraw","operator":"Either the operator who queued the withdrawal themselves, or if the withdrawing party is a staker who delegated to an operator, this address is the operator *who the staker was delegated to* at the time of the `withdrawalStartBlock`.","withdrawalStartBlock":"The block number at which the withdrawal was initiated."}},"freezeOperator(address)":{"details":"Technically the operator is 'frozen' (hence the name of this function), and then subject to slashing pending a decision by a human-in-the-loop.The operator must have previously given the caller (which should be a contract) the ability to slash them, through a call to `optIntoSlashing`.","params":{"toBeFrozen":"The operator to be frozen."}},"isFrozen(address)":{"params":{"staker":"The staker of interest."},"returns":{"_0":"Returns 'true' if `staker` themselves has their status set to frozen, OR if the staker is delegated to an operator who has their status set to frozen. Otherwise returns 'false'."}},"optIntoSlashing(address)":{"details":"Typically, this function must be called prior to registering for a middleware."},"recordFirstStakeUpdate(address,uint32)":{"details":"adds the middleware's slashing contract to the operator's linked list","params":{"operator":"the operator whose stake update is being recorded","serveUntilBlock":"the block until which the operator's stake at the current block is slashable"}},"recordLastStakeUpdateAndRevokeSlashingAbility(address,uint32)":{"details":"removes the middleware's slashing contract to the operator's linked list and revokes the middleware's (i.e. caller's) ability to slash `operator` once `serveUntil` is reached","params":{"operator":"the operator whose stake update is being recorded","serveUntilBlock":"the block until which the operator's stake at the current block is slashable"}},"recordStakeUpdate(address,uint32,uint32,uint256)":{"details":"insertAfter should be calculated offchain before making the transaction that calls this. this is subject to race conditions, but it is anticipated to be rare and not detrimental.","params":{"insertAfter":"the element of the operators linked list that the currently updating middleware should be inserted after","operator":"the operator whose stake update is being recorded","serveUntilBlock":"the block until which the operator's stake at updateBlock is slashable","updateBlock":"the block for which the stake update is being recorded"}},"resetFrozenStatus(address[])":{"details":"Callable only by the contract owner (i.e. governance)."}},"version":1},"userdoc":{"kind":"user","methods":{"canSlash(address,address)":{"notice":"Returns true if `slashingContract` is currently allowed to slash `toBeSlashed`."},"canWithdraw(address,uint32,uint256)":{"notice":"Returns 'true' if `operator` can currently complete a withdrawal started at the `withdrawalStartBlock`, with `middlewareTimesIndex` used to specify the index of a `MiddlewareTimes` struct in the operator's list (i.e. an index in `operatorToMiddlewareTimes[operator]`). The specified struct is consulted as proof of the `operator`'s ability (or lack thereof) to complete the withdrawal. This function will return 'false' if the operator cannot currently complete a withdrawal started at the `withdrawalStartBlock`, *or* in the event that an incorrect `middlewareTimesIndex` is supplied, even if one or more correct inputs exist."},"contractCanSlashOperatorUntilBlock(address,address)":{"notice":"Returns the block until which `serviceContract` is allowed to slash the `operator`."},"delegation()":{"notice":"The DelegationManager contract of EigenLayer"},"freezeOperator(address)":{"notice":"Used for 'slashing' a certain operator."},"getCorrectValueForInsertAfter(address,uint32)":{"notice":"A search routine for finding the correct input value of `insertAfter` to `recordStakeUpdate` / `_updateMiddlewareList`."},"getMiddlewareTimesIndexServeUntilBlock(address,uint32)":{"notice":"Getter function for fetching `operatorToMiddlewareTimes[operator][index].latestServeUntil`."},"getMiddlewareTimesIndexStalestUpdateBlock(address,uint32)":{"notice":"Getter function for fetching `operatorToMiddlewareTimes[operator][index].stalestUpdateBlock`."},"isFrozen(address)":{"notice":"Used to determine whether `staker` is actively 'frozen'. If a staker is frozen, then they are potentially subject to slashing of their funds, and cannot cannot deposit or withdraw from the strategyManager until the slashing process is completed and the staker's status is reset (to 'unfrozen')."},"latestUpdateBlock(address,address)":{"notice":"Returns the block at which the `serviceContract` last updated its view of the `operator`'s stake"},"middlewareTimesLength(address)":{"notice":"Getter function for fetching `operatorToMiddlewareTimes[operator].length`"},"operatorToMiddlewareTimes(address,uint256)":{"notice":"operator => [ ( the least recent update block of all of the middlewares it's serving/served, latest time that the stake bonded at that update needed to serve until ) ]"},"operatorWhitelistedContractsLinkedListEntry(address,address)":{"notice":"Getter function for fetching a single node in the operator's linked list (`_operatorToWhitelistedContractsByUpdate[operator]`)."},"operatorWhitelistedContractsLinkedListSize(address)":{"notice":"Getter function for fetching `_operatorToWhitelistedContractsByUpdate[operator].size`."},"optIntoSlashing(address)":{"notice":"Gives the `contractAddress` permission to slash the funds of the caller."},"recordFirstStakeUpdate(address,uint32)":{"notice":"this function is a called by middlewares during an operator's registration to make sure the operator's stake at registration is slashable until serveUntil"},"recordLastStakeUpdateAndRevokeSlashingAbility(address,uint32)":{"notice":"this function is a called by middlewares during an operator's deregistration to make sure the operator's stake at deregistration is slashable until serveUntil"},"recordStakeUpdate(address,uint32,uint32,uint256)":{"notice":"this function is a called by middlewares during a stake update for an operator (perhaps to free pending withdrawals) to make sure the operator's stake at updateBlock is slashable until serveUntil"},"resetFrozenStatus(address[])":{"notice":"Removes the 'frozen' status from each of the `frozenAddresses`"},"strategyManager()":{"notice":"The StrategyManager contract of EigenLayer"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable/","@openzeppelin/=lib/openzeppelin-contracts/","ds-test/=lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":"ISlasher"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x9906828f285cc76bbbe077f908d87c4bffd0a3bff9394f7a4b60a9d9a2672c1e","urls":["bzz-raw://4c0f43e14e50ac322685b5cd301459118e2770bdfb053f8f3ded08ee9fbf5bf9","dweb:/ipfs/QmPQtY6KEUCbrKwweu8BvA7YjnXXxkkuZPyLSRGV5EoPTe"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0x1f8e17b0f952042132ca64e202022d83783b7f42ec364cd0cad1950ecb95a13d","urls":["bzz-raw://a2be4c476902f25fb058f779e3d4e5b1182d9dc9fbdec518acbe9544c0d3c141","dweb:/ipfs/QmdgZq6JrCD36Xry2vD8QSeGguGQ9TGWY2CMvKrhR9NQ6u"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0x22b7a17d53696412f80645f1fa65274ae89040bdc706262e3b6cc577dbafcaa4","urls":["bzz-raw://b15002346892a48fd7cf9a8a4cf121e17ba133d21e4822e71fbffac85117d6b2","dweb:/ipfs/QmRBPJUcRQ6uKmSvCYhhtVWcKCAWkQFSVZZwZR7HR42kiz"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x33a935182f77cfd508fc57ec8e45afc8dc3748e1e9b764d36bf90ae6466f257b","urls":["bzz-raw://d3981b5bbf435cda04e2ed2f348f886ebf1500c18dd4bbf67b1f1bc0272e2d3f","dweb:/ipfs/QmYHDzQx29ataM2ejRCXFcPxaPdxWqX8v7uwUAYoG9572w"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0xffafae142d5337a5c204519e8f82fe3a5fae137286ebf597fa50699cf12c2474","urls":["bzz-raw://b577a12f7788095b230fd069b36ba9b3cdb376a0b7c3d8ae71588e5bf0c2f574","dweb:/ipfs/QmXd1cDzYpxecyFEwowLiBKKjzRHgV8cs1qvLwypdEbVYy"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4","urls":["bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b","dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x3d9eeecf96bd8d6427445db76b9a73f9861c6c3601001226bed2f7fb81e252e6","urls":["bzz-raw://c836719a65892c5cffdba9de4e009e5f8a4e49aea9c5f46d57b15660c6c2d07d","dweb:/ipfs/QmWuzNq2HdEH1hsRg8Jc95k1DZdNjXFb5ehkz9iLNNSqhT"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xaeee2ac5cfcc3388b63bef2668fa435c65a4b433b52ce9f5013822c6ec875fa3","urls":["bzz-raw://86eb6d3da5b45f7509995ffa170eaaadffbdd6d43e50f0902d421bb93a7dfda6","dweb:/ipfs/QmWaYcgtnaVpcekSP7LyY6AGrE3hRE3kZE4H4EKhsSysDG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x633b5fb10209891f696a9c8db4d7327ed7f560a2e9710489e38a67daeda59a96","urls":["bzz-raw://c8381baaec3afa6b200420c093706974776dfd14f6887abe7457eb867351a068","dweb:/ipfs/QmP9H9ttS1sJ6FrvMEefJhU6B4z1wMCjcYYZqVfsLXagJE"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0x1c5895f913e95682b0c371595cb1fa0d9c34ea921a0fbb5c32201b4315e80a56","urls":["bzz-raw://c470e449a3144fbaaa17b44823ba9cba901f063b04355c800bf62cabdd081cd4","dweb:/ipfs/QmSJ8gaAF4WA1aXGmLesnnRo8fDZNEFnqZSGNkJnXLRM9R"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0xcf8422dfa6ccc393de19417570c6239e0fde54de9433ea258cbeb6937ff7f316","urls":["bzz-raw://328e582c05b7311ad4107c46f554f15b5572b89a4ab6d067c73425b7418d946c","dweb:/ipfs/QmdM81GQY5nok5oCTP8Cc6M8s1UC9f6ZbSWybaUxrZNrmY"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"}},"version":1},"id":18} \ No newline at end of file diff --git a/crates/utils/json/IStrategy.json b/crates/utils/json/IStrategy.json deleted file mode 100644 index 79c32425..00000000 --- a/crates/utils/json/IStrategy.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"deposit","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"explanation","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"shares","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"sharesToUnderlying","inputs":[{"name":"amountShares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"sharesToUnderlyingView","inputs":[{"name":"amountShares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalShares","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"underlyingToShares","inputs":[{"name":"amountUnderlying","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"underlyingToSharesView","inputs":[{"name":"amountUnderlying","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"underlyingToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"userUnderlying","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"userUnderlyingView","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdraw","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"amountShares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"deposit(address,uint256)":"47e7ef24","explanation()":"ab5921e1","shares(address)":"ce7c2ac2","sharesToUnderlying(uint256)":"f3e73875","sharesToUnderlyingView(uint256)":"7a8b2637","totalShares()":"3a98ef39","underlyingToShares(uint256)":"8c871019","underlyingToSharesView(uint256)":"e3dae51c","underlyingToken()":"2495a599","userUnderlying(address)":"8f6a6240","userUnderlyingView(address)":"553ca5f8","withdraw(address,address,uint256)":"d9caed12"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"explanation\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"shares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountShares\",\"type\":\"uint256\"}],\"name\":\"sharesToUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountShares\",\"type\":\"uint256\"}],\"name\":\"sharesToUnderlyingView\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"}],\"name\":\"underlyingToShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"}],\"name\":\"underlyingToSharesView\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlyingToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"userUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"userUnderlyingView\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountShares\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"kind\":\"dev\",\"methods\":{\"deposit(address,uint256)\":{\"details\":\"This function is only callable by the strategyManager contract. It is invoked inside of the strategyManager's `depositIntoStrategy` function, and individual share balances are recorded in the strategyManager as well.\",\"params\":{\"amount\":\"is the amount of token being deposited\",\"token\":\"is the ERC20 token being deposited\"},\"returns\":{\"_0\":\"newShares is the number of new shares issued at the current exchange ratio.\"}},\"sharesToUnderlying(uint256)\":{\"details\":\"Implementation for these functions in particular may vary significantly for different strategies\",\"params\":{\"amountShares\":\"is the amount of shares to calculate its conversion into the underlying token\"},\"returns\":{\"_0\":\"The amount of underlying tokens corresponding to the input `amountShares`\"}},\"sharesToUnderlyingView(uint256)\":{\"details\":\"Implementation for these functions in particular may vary significantly for different strategies\",\"params\":{\"amountShares\":\"is the amount of shares to calculate its conversion into the underlying token\"},\"returns\":{\"_0\":\"The amount of shares corresponding to the input `amountUnderlying`\"}},\"underlyingToShares(uint256)\":{\"details\":\"Implementation for these functions in particular may vary significantly for different strategies\",\"params\":{\"amountUnderlying\":\"is the amount of `underlyingToken` to calculate its conversion into strategy shares\"},\"returns\":{\"_0\":\"The amount of underlying tokens corresponding to the input `amountShares`\"}},\"underlyingToSharesView(uint256)\":{\"details\":\"Implementation for these functions in particular may vary significantly for different strategies\",\"params\":{\"amountUnderlying\":\"is the amount of `underlyingToken` to calculate its conversion into strategy shares\"},\"returns\":{\"_0\":\"The amount of shares corresponding to the input `amountUnderlying`\"}},\"withdraw(address,address,uint256)\":{\"details\":\"This function is only callable by the strategyManager contract. It is invoked inside of the strategyManager's other functions, and individual share balances are recorded in the strategyManager as well.\",\"params\":{\"amountShares\":\"is the amount of shares being withdrawn\",\"recipient\":\"is the address to receive the withdrawn funds\",\"token\":\"is the ERC20 token being transferred out\"}}},\"title\":\"Minimal interface for an `Strategy` contract.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deposit(address,uint256)\":{\"notice\":\"Used to deposit tokens into this Strategy\"},\"explanation()\":{\"notice\":\"Returns either a brief string explaining the strategy's goal & purpose, or a link to metadata that explains in more detail.\"},\"shares(address)\":{\"notice\":\"convenience function for fetching the current total shares of `user` in this strategy, by querying the `strategyManager` contract\"},\"sharesToUnderlying(uint256)\":{\"notice\":\"Used to convert a number of shares to the equivalent amount of underlying tokens for this strategy.In contrast to `sharesToUnderlyingView`, this function **may** make state modifications\"},\"sharesToUnderlyingView(uint256)\":{\"notice\":\"Used to convert a number of shares to the equivalent amount of underlying tokens for this strategy.In contrast to `sharesToUnderlying`, this function guarantees no state modifications\"},\"totalShares()\":{\"notice\":\"The total number of extant shares in this Strategy\"},\"underlyingToShares(uint256)\":{\"notice\":\"Used to convert an amount of underlying tokens to the equivalent amount of shares in this strategy.In contrast to `underlyingToSharesView`, this function **may** make state modifications\"},\"underlyingToSharesView(uint256)\":{\"notice\":\"Used to convert an amount of underlying tokens to the equivalent amount of shares in this strategy.In contrast to `underlyingToShares`, this function guarantees no state modifications\"},\"underlyingToken()\":{\"notice\":\"The underlying token for shares in this Strategy\"},\"userUnderlying(address)\":{\"notice\":\"convenience function for fetching the current underlying value of all of the `user`'s shares in this strategy. In contrast to `userUnderlyingView`, this function **may** make state modifications\"},\"userUnderlyingView(address)\":{\"notice\":\"convenience function for fetching the current underlying value of all of the `user`'s shares in this strategy. In contrast to `userUnderlying`, this function guarantees no state modifications\"},\"withdraw(address,address,uint256)\":{\"notice\":\"Used to withdraw tokens from this Strategy, to the `recipient`'s address\"}},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-serviceCustom `Strategy` implementations may expand extensively on this interface.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":\"IStrategy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"explanation","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"view","type":"function","name":"shares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountShares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"sharesToUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountShares","type":"uint256"}],"stateMutability":"view","type":"function","name":"sharesToUnderlyingView","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountUnderlying","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"underlyingToShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountUnderlying","type":"uint256"}],"stateMutability":"view","type":"function","name":"underlyingToSharesView","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"underlyingToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"userUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"view","type":"function","name":"userUnderlyingView","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amountShares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdraw"}],"devdoc":{"kind":"dev","methods":{"deposit(address,uint256)":{"details":"This function is only callable by the strategyManager contract. It is invoked inside of the strategyManager's `depositIntoStrategy` function, and individual share balances are recorded in the strategyManager as well.","params":{"amount":"is the amount of token being deposited","token":"is the ERC20 token being deposited"},"returns":{"_0":"newShares is the number of new shares issued at the current exchange ratio."}},"sharesToUnderlying(uint256)":{"details":"Implementation for these functions in particular may vary significantly for different strategies","params":{"amountShares":"is the amount of shares to calculate its conversion into the underlying token"},"returns":{"_0":"The amount of underlying tokens corresponding to the input `amountShares`"}},"sharesToUnderlyingView(uint256)":{"details":"Implementation for these functions in particular may vary significantly for different strategies","params":{"amountShares":"is the amount of shares to calculate its conversion into the underlying token"},"returns":{"_0":"The amount of shares corresponding to the input `amountUnderlying`"}},"underlyingToShares(uint256)":{"details":"Implementation for these functions in particular may vary significantly for different strategies","params":{"amountUnderlying":"is the amount of `underlyingToken` to calculate its conversion into strategy shares"},"returns":{"_0":"The amount of underlying tokens corresponding to the input `amountShares`"}},"underlyingToSharesView(uint256)":{"details":"Implementation for these functions in particular may vary significantly for different strategies","params":{"amountUnderlying":"is the amount of `underlyingToken` to calculate its conversion into strategy shares"},"returns":{"_0":"The amount of shares corresponding to the input `amountUnderlying`"}},"withdraw(address,address,uint256)":{"details":"This function is only callable by the strategyManager contract. It is invoked inside of the strategyManager's other functions, and individual share balances are recorded in the strategyManager as well.","params":{"amountShares":"is the amount of shares being withdrawn","recipient":"is the address to receive the withdrawn funds","token":"is the ERC20 token being transferred out"}}},"version":1},"userdoc":{"kind":"user","methods":{"deposit(address,uint256)":{"notice":"Used to deposit tokens into this Strategy"},"explanation()":{"notice":"Returns either a brief string explaining the strategy's goal & purpose, or a link to metadata that explains in more detail."},"shares(address)":{"notice":"convenience function for fetching the current total shares of `user` in this strategy, by querying the `strategyManager` contract"},"sharesToUnderlying(uint256)":{"notice":"Used to convert a number of shares to the equivalent amount of underlying tokens for this strategy.In contrast to `sharesToUnderlyingView`, this function **may** make state modifications"},"sharesToUnderlyingView(uint256)":{"notice":"Used to convert a number of shares to the equivalent amount of underlying tokens for this strategy.In contrast to `sharesToUnderlying`, this function guarantees no state modifications"},"totalShares()":{"notice":"The total number of extant shares in this Strategy"},"underlyingToShares(uint256)":{"notice":"Used to convert an amount of underlying tokens to the equivalent amount of shares in this strategy.In contrast to `underlyingToSharesView`, this function **may** make state modifications"},"underlyingToSharesView(uint256)":{"notice":"Used to convert an amount of underlying tokens to the equivalent amount of shares in this strategy.In contrast to `underlyingToShares`, this function guarantees no state modifications"},"underlyingToken()":{"notice":"The underlying token for shares in this Strategy"},"userUnderlying(address)":{"notice":"convenience function for fetching the current underlying value of all of the `user`'s shares in this strategy. In contrast to `userUnderlyingView`, this function **may** make state modifications"},"userUnderlyingView(address)":{"notice":"convenience function for fetching the current underlying value of all of the `user`'s shares in this strategy. In contrast to `userUnderlying`, this function guarantees no state modifications"},"withdraw(address,address,uint256)":{"notice":"Used to withdraw tokens from this Strategy, to the `recipient`'s address"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable/","@openzeppelin/=lib/openzeppelin-contracts/","ds-test/=lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":"IStrategy"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"}},"version":1},"id":19} \ No newline at end of file diff --git a/crates/utils/json/MockAvsServiceManager.json b/crates/utils/json/MockAvsServiceManager.json deleted file mode 100644 index 4672f799..00000000 --- a/crates/utils/json/MockAvsServiceManager.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_registryCoordinator","type":"address","internalType":"contract IRegistryCoordinator"},{"name":"_avsDirectory","type":"address","internalType":"contract IAVSDirectory"},{"name":"_rewardsCoordinator","type":"address","internalType":"contract IRewardsCoordinator"}],"stateMutability":"nonpayable"},{"type":"function","name":"avsDirectory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"blsApkRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IBLSApkRegistry"}],"stateMutability":"view"},{"type":"function","name":"checkSignatures","inputs":[{"name":"msgHash","type":"bytes32","internalType":"bytes32"},{"name":"quorumNumbers","type":"bytes","internalType":"bytes"},{"name":"referenceBlockNumber","type":"uint32","internalType":"uint32"},{"name":"params","type":"tuple","internalType":"struct IBLSSignatureChecker.NonSignerStakesAndSignature","components":[{"name":"nonSignerQuorumBitmapIndices","type":"uint32[]","internalType":"uint32[]"},{"name":"nonSignerPubkeys","type":"tuple[]","internalType":"struct BN254.G1Point[]","components":[{"name":"X","type":"uint256","internalType":"uint256"},{"name":"Y","type":"uint256","internalType":"uint256"}]},{"name":"quorumApks","type":"tuple[]","internalType":"struct BN254.G1Point[]","components":[{"name":"X","type":"uint256","internalType":"uint256"},{"name":"Y","type":"uint256","internalType":"uint256"}]},{"name":"apkG2","type":"tuple","internalType":"struct BN254.G2Point","components":[{"name":"X","type":"uint256[2]","internalType":"uint256[2]"},{"name":"Y","type":"uint256[2]","internalType":"uint256[2]"}]},{"name":"sigma","type":"tuple","internalType":"struct BN254.G1Point","components":[{"name":"X","type":"uint256","internalType":"uint256"},{"name":"Y","type":"uint256","internalType":"uint256"}]},{"name":"quorumApkIndices","type":"uint32[]","internalType":"uint32[]"},{"name":"totalStakeIndices","type":"uint32[]","internalType":"uint32[]"},{"name":"nonSignerStakeIndices","type":"uint32[][]","internalType":"uint32[][]"}]}],"outputs":[{"name":"","type":"tuple","internalType":"struct IBLSSignatureChecker.QuorumStakeTotals","components":[{"name":"signedStakeForQuorum","type":"uint96[]","internalType":"uint96[]"},{"name":"totalStakeForQuorum","type":"uint96[]","internalType":"uint96[]"}]},{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"createAVSRewardsSubmission","inputs":[{"name":"rewardsSubmissions","type":"tuple[]","internalType":"struct IRewardsCoordinator.RewardsSubmission[]","components":[{"name":"strategiesAndMultipliers","type":"tuple[]","internalType":"struct IRewardsCoordinator.StrategyAndMultiplier[]","components":[{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"multiplier","type":"uint96","internalType":"uint96"}]},{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"startTimestamp","type":"uint32","internalType":"uint32"},{"name":"duration","type":"uint32","internalType":"uint32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegation","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IDelegationManager"}],"stateMutability":"view"},{"type":"function","name":"deregisterOperatorFromAVS","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getOperatorRestakedStrategies","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getRestakeableStrategies","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_initialOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"registerOperatorToAVS","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"operatorSignature","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registryCoordinator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IRegistryCoordinator"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rewardsInitiator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setRewardsInitiator","inputs":[{"name":"newRewardsInitiator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStaleStakesForbidden","inputs":[{"name":"value","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stakeRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IStakeRegistry"}],"stateMutability":"view"},{"type":"function","name":"staleStakesForbidden","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"trySignatureAndApkVerification","inputs":[{"name":"msgHash","type":"bytes32","internalType":"bytes32"},{"name":"apk","type":"tuple","internalType":"struct BN254.G1Point","components":[{"name":"X","type":"uint256","internalType":"uint256"},{"name":"Y","type":"uint256","internalType":"uint256"}]},{"name":"apkG2","type":"tuple","internalType":"struct BN254.G2Point","components":[{"name":"X","type":"uint256[2]","internalType":"uint256[2]"},{"name":"Y","type":"uint256[2]","internalType":"uint256[2]"}]},{"name":"sigma","type":"tuple","internalType":"struct BN254.G1Point","components":[{"name":"X","type":"uint256","internalType":"uint256"},{"name":"Y","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"pairingSuccessful","type":"bool","internalType":"bool"},{"name":"siganatureIsValid","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"updateAVSMetadataURI","inputs":[{"name":"_metadataURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RewardsInitiatorUpdated","inputs":[{"name":"prevRewardsInitiator","type":"address","indexed":false,"internalType":"address"},{"name":"newRewardsInitiator","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StaleStakesForbiddenUpdate","inputs":[{"name":"value","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false}],"bytecode":{"object":"0x6101806040523480156200001257600080fd5b50604051620044e5380380620044e583398101604081905262000035916200033f565b82828285866001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000078573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009e919062000393565b6001600160a01b0380851660805280841660a05280831660c052811660e052620000c762000264565b50505050806001600160a01b0316610100816001600160a01b031681525050806001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000125573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014b919062000393565b6001600160a01b0316610120816001600160a01b031681525050806001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ca919062000393565b6001600160a01b0316610140816001600160a01b031681525050610120516001600160a01b031663df5cf7236040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000226573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024c919062000393565b6001600160a01b03166101605250620003ba92505050565b600054610100900460ff1615620002d15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000324576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200033c57600080fd5b50565b6000806000606084860312156200035557600080fd5b8351620003628162000326565b6020850151909350620003758162000326565b6040850151909250620003888162000326565b809150509250925092565b600060208284031215620003a657600080fd5b8151620003b38162000326565b9392505050565b60805160a05160c05160e0516101005161012051610140516101605161401d620004c86000396000818161030e01526112020152600081816101b801526113e40152600081816101f7015281816115ba015261177c015260008181610244015281816109e001528181610ecd01528181611065015261129f0152600081816106f501528181610850015281816108e701528181611e0801528181611f8b015261202a015260008181610520015281816105af0152818161062f01528181611a5001528181611b1c01528181611d460152611ee601526000818161235801528181612414015261250001526000818161021b01528181611aa401528181611b780152611bf7015261401d6000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80638da5cb5b116100b8578063c4d66de81161007c578063c4d66de8146102f6578063df5cf72314610309578063e481af9d14610330578063f2fde38b14610338578063fc299dee1461034b578063fce36c7d1461035e57600080fd5b80638da5cb5b1461028f5780639926ee7d146102a0578063a364f4da146102b3578063a98fb355146102c6578063b98d0908146102d957600080fd5b806368304835116100ff57806368304835146101f25780636b3aa72e146102195780636d14a9871461023f5780636efb463614610266578063715018a61461028757600080fd5b8063171f1d5b1461013c57806333cfb7b71461016b5780633bc28c8c1461018b578063416c7e5e146101a05780635df45946146101b3575b600080fd5b61014f61014a3660046133b2565b610371565b6040805192151583529015156020830152015b60405180910390f35b61017e610179366004613418565b6104fb565b6040516101629190613435565b61019e610199366004613418565b6109ca565b005b61019e6101ae366004613490565b6109de565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610162565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b7f00000000000000000000000000000000000000000000000000000000000000006101da565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b610279610274366004613763565b610b1a565b604051610162929190613856565b61019e611a31565b6033546001600160a01b03166101da565b61019e6102ae3660046138f6565b611a45565b61019e6102c1366004613418565b611b11565b61019e6102d43660046139a0565b611bd8565b6097546102e69060ff1681565b6040519015158152602001610162565b61019e610304366004613418565b611c2c565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b61017e611d40565b61019e610346366004613418565b612109565b6065546101da906001600160a01b031681565b61019e61036c3660046139f0565b61217f565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001878760000151886020015188600001516000600281106103b9576103b9613a64565b60200201518951600160200201518a602001516000600281106103de576103de613a64565b60200201518b602001516001600281106103fa576103fa613a64565b602090810291909101518c518d8301516040516104579a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c61047a9190613a7a565b90506104ed61049361048c8884612537565b86906125ce565b61049b612662565b6104e36104d4856104ce604080518082018252600080825260209182015281518083019092526001825260029082015290565b90612537565b6104dd8c612722565b906125ce565b886201d4c06127b2565b909890975095505050505050565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa158015610567573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058b9190613a9c565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa1580156105f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061a9190613ab5565b90506001600160c01b03811615806106b457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106af9190613ade565b60ff16155b156106d057505060408051600081526020810190915292915050565b60006106e4826001600160c01b03166129d6565b90506000805b82518110156107ba577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f584838151811061073457610734613a64565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610778573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079c9190613a9c565b6107a69083613b17565b9150806107b281613b2f565b9150506106ea565b506000816001600160401b038111156107d5576107d561323f565b6040519080825280602002602001820160405280156107fe578160200160208202803683370190505b5090506000805b84518110156109bd57600085828151811061082257610822613a64565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610897573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108bb9190613a9c565b905060005b818110156109a7576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015610935573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109599190613b5f565b6000015186868151811061096f5761096f613a64565b6001600160a01b03909216602092830291909101909101528461099181613b2f565b955050808061099f90613b2f565b9150506108c0565b50505080806109b590613b2f565b915050610805565b5090979650505050505050565b6109d2612a98565b6109db81612af2565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a609190613ba0565b6001600160a01b0316336001600160a01b031614610b115760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a4015b60405180910390fd5b6109db81612b5b565b6040805180820190915260608082526020820152600084610b915760405162461bcd60e51b81526020600482015260376024820152600080516020613fc883398151915260448201527f7265733a20656d7074792071756f72756d20696e7075740000000000000000006064820152608401610b08565b60408301515185148015610ba9575060a08301515185145b8015610bb9575060c08301515185145b8015610bc9575060e08301515185145b610c335760405162461bcd60e51b81526020600482015260416024820152600080516020613fc883398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610b08565b82515160208401515114610cab5760405162461bcd60e51b815260206004820152604460248201819052600080516020613fc8833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610b08565b4363ffffffff168463ffffffff1610610d1a5760405162461bcd60e51b815260206004820152603c6024820152600080516020613fc883398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610b08565b6040805180820182526000808252602080830191909152825180840190935260608084529083015290866001600160401b03811115610d5b57610d5b61323f565b604051908082528060200260200182016040528015610d84578160200160208202803683370190505b506020820152866001600160401b03811115610da257610da261323f565b604051908082528060200260200182016040528015610dcb578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b03811115610dff57610dff61323f565b604051908082528060200260200182016040528015610e28578160200160208202803683370190505b5081526020860151516001600160401b03811115610e4857610e4861323f565b604051908082528060200260200182016040528015610e71578160200160208202803683370190505b5081602001819052506000610f438a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e9190613ade565b612ba2565b905060005b8760200151518110156111de57610f8d88602001518281518110610f6e57610f6e613a64565b6020026020010151805160009081526020918201519091526040902090565b83602001518281518110610fa357610fa3613a64565b60209081029190910101528015611063576020830151610fc4600183613bbd565b81518110610fd457610fd4613a64565b602002602001015160001c83602001518281518110610ff557610ff5613a64565b602002602001015160001c11611063576040805162461bcd60e51b8152602060048201526024810191909152600080516020613fc883398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610b08565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec6351846020015183815181106110a8576110a8613a64565b60200260200101518b8b6000015185815181106110c7576110c7613a64565b60200260200101516040518463ffffffff1660e01b81526004016111049392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015611121573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111459190613ab5565b6001600160c01b03168360000151828151811061116457611164613a64565b6020026020010181815250506111ca61048c61119e848660000151858151811061119057611190613a64565b602002602001015116612c35565b8a6020015184815181106111b4576111b4613a64565b6020026020010151612c6090919063ffffffff16565b9450806111d681613b2f565b915050610f48565b50506111e983612d44565b60975490935060ff16600081611200576000611282565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561125e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112829190613a9c565b905060005b8a8110156119005782156113e2578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c428f8f868181106112de576112de613a64565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa15801561131e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113429190613a9c565b61134c9190613b17565b116113e25760405162461bcd60e51b81526020600482015260666024820152600080516020613fc883398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610b08565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8d8d8481811061142357611423613a64565b9050013560f81c60f81b60f81c8c8c60a00151858151811061144757611447613a64565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa1580156114a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c79190613bd4565b6001600160401b0319166114ea8a604001518381518110610f6e57610f6e613a64565b67ffffffffffffffff1916146115865760405162461bcd60e51b81526020600482015260616024820152600080516020613fc883398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610b08565b6115b68960400151828151811061159f5761159f613a64565b6020026020010151876125ce90919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568d8d848181106115f9576115f9613a64565b9050013560f81c60f81b60f81c8c8c60c00151858151811061161d5761161d613a64565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015611679573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169d9190613bff565b856020015182815181106116b3576116b3613a64565b6001600160601b039092166020928302919091018201528501518051829081106116df576116df613a64565b6020026020010151856000015182815181106116fd576116fd613a64565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a60200151518110156118eb576117758660000151828151811061174757611747613a64565b60200260200101518f8f8681811061176157611761613a64565b600192013560f81c9290921c811614919050565b156118d9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8f8f868181106117bb576117bb613a64565b9050013560f81c60f81b60f81c8e896020015185815181106117df576117df613a64565b60200260200101518f60e0015188815181106117fd576117fd613a64565b6020026020010151878151811061181657611816613a64565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa15801561187a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189e9190613bff565b87518051859081106118b2576118b2613a64565b602002602001018181516118c69190613c1c565b6001600160601b03169052506001909101905b806118e381613b2f565b915050611721565b505080806118f890613b2f565b915050611287565b50505060008061191a8c868a606001518b60800151610371565b915091508161198b5760405162461bcd60e51b81526020600482015260436024820152600080516020613fc883398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610b08565b806119ec5760405162461bcd60e51b81526020600482015260396024820152600080516020613fc883398151915260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610b08565b50506000878260200151604051602001611a07929190613c44565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b611a39612a98565b611a436000612ddf565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611a8d5760405162461bcd60e51b8152600401610b0890613c8c565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d90611adb9085908590600401613d51565b600060405180830381600087803b158015611af557600080fd5b505af1158015611b09573d6000803e3d6000fd5b505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b595760405162461bcd60e51b8152600401610b0890613c8c565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b158015611bbd57600080fd5b505af1158015611bd1573d6000803e3d6000fd5b5050505050565b611be0612a98565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb35590611ba3908490600401613d9c565b600054610100900460ff1615808015611c4c5750600054600160ff909116105b80611c665750303b158015611c66575060005460ff166001145b611cc95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b08565b6000805460ff191660011790558015611cec576000805461ff0019166101001790555b611cf68283612e31565b8015611d3c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611da2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc69190613ade565b60ff16905080611de457505060408051600081526020810190915290565b6000805b82811015611e9957604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015611e57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7b9190613a9c565b611e859083613b17565b915080611e9181613b2f565b915050611de8565b506000816001600160401b03811115611eb457611eb461323f565b604051908082528060200260200182016040528015611edd578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f669190613ade565b60ff168110156120ff57604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015611fda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ffe9190613a9c565b905060005b818110156120ea576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015612078573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209c9190613b5f565b600001518585815181106120b2576120b2613a64565b6001600160a01b0390921660209283029190910190910152836120d481613b2f565b94505080806120e290613b2f565b915050612003565b505080806120f790613b2f565b915050611ee4565b5090949350505050565b612111612a98565b6001600160a01b0381166121765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b08565b6109db81612ddf565b6065546001600160a01b031633146122145760405162461bcd60e51b815260206004820152604c60248201527f536572766963654d616e61676572426173652e6f6e6c7952657761726473496e60448201527f69746961746f723a2063616c6c6572206973206e6f742074686520726577617260648201526b32399034b734ba34b0ba37b960a11b608482015260a401610b08565b60005b818110156124e85782828281811061223157612231613a64565b90506020028101906122439190613db6565b612254906040810190602001613418565b6001600160a01b03166323b872dd333086868681811061227657612276613a64565b90506020028101906122889190613db6565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152013560448201526064016020604051808303816000875af11580156122df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123039190613de1565b50600083838381811061231857612318613a64565b905060200281019061232a9190613db6565b61233b906040810190602001613418565b604051636eb1769f60e11b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063dd62ed3e90604401602060405180830381865afa1580156123a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123cd9190613a9c565b90508383838181106123e1576123e1613a64565b90506020028101906123f39190613db6565b612404906040810190602001613418565b6001600160a01b031663095ea7b37f00000000000000000000000000000000000000000000000000000000000000008387878781811061244657612446613a64565b90506020028101906124589190613db6565b604001356124669190613b17565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156124b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d59190613de1565b5050806124e190613b2f565b9050612217565b5060405163fce36c7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fce36c7d90611adb9085908590600401613e59565b6040805180820190915260008082526020820152612553613165565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa905080801561258657612588565bfe5b50806125c65760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610b08565b505092915050565b60408051808201909152600080825260208201526125ea613183565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156125865750806125c65760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610b08565b61266a6131a1565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082019091526000808252602082015260008080612752600080516020613fa883398151915286613a7a565b90505b61275e81612eae565b9093509150600080516020613fa8833981519152828309831415612798576040805180820190915290815260208101919091529392505050565b600080516020613fa8833981519152600182089050612755565b6040805180820182528681526020808201869052825180840190935286835282018490526000918291906127e46131c6565b60005b60028110156129a95760006127fd826006613f66565b905084826002811061281157612811613a64565b60200201515183612823836000613b17565b600c811061283357612833613a64565b602002015284826002811061284a5761284a613a64565b602002015160200151838260016128619190613b17565b600c811061287157612871613a64565b602002015283826002811061288857612888613a64565b602002015151518361289b836002613b17565b600c81106128ab576128ab613a64565b60200201528382600281106128c2576128c2613a64565b60200201515160016020020151836128db836003613b17565b600c81106128eb576128eb613a64565b602002015283826002811061290257612902613a64565b60200201516020015160006002811061291d5761291d613a64565b60200201518361292e836004613b17565b600c811061293e5761293e613a64565b602002015283826002811061295557612955613a64565b60200201516020015160016002811061297057612970613a64565b602002015183612981836005613b17565b600c811061299157612991613a64565b602002015250806129a181613b2f565b9150506127e7565b506129b26131e5565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b60606000806129e484612c35565b61ffff166001600160401b038111156129ff576129ff61323f565b6040519080825280601f01601f191660200182016040528015612a29576020820181803683370190505b5090506000805b825182108015612a41575061010081105b156120ff576001811b935085841615612a88578060f81b838381518110612a6a57612a6a613a64565b60200101906001600160f81b031916908160001a9053508160010191505b612a9181613b2f565b9050612a30565b6033546001600160a01b03163314611a435760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b08565b606554604080516001600160a01b03928316815291831660208301527fe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6097805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b600080612bae84612f30565b9050808360ff166001901b11612c2c5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610b08565b90505b92915050565b6000805b8215612c2f57612c4a600184613bbd565b9092169180612c5881613f85565b915050612c39565b60408051808201909152600080825260208201526102008261ffff1610612cbc5760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610b08565b8161ffff1660011415612cd0575081612c2f565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff1610612d3957600161ffff871660ff83161c81161415612d1c57612d1984846125ce565b93505b612d2683846125ce565b92506201fffe600192831b169101612cec565b509195945050505050565b60408051808201909152600080825260208201528151158015612d6957506020820151155b15612d87575050604080518082019091526000808252602082015290565b604051806040016040528083600001518152602001600080516020613fa88339815191528460200151612dba9190613a7a565b612dd290600080516020613fa8833981519152613bbd565b905292915050565b919050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16612e9c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610b08565b612ea582612ddf565b611d3c81612af2565b60008080600080516020613fa88339815191526003600080516020613fa883398151915286600080516020613fa8833981519152888909090890506000612f24827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020613fa88339815191526130bd565b91959194509092505050565b600061010082511115612fb95760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610b08565b8151612fc757506000919050565b60008083600081518110612fdd57612fdd613a64565b0160200151600160f89190911c81901b92505b84518110156130b45784818151811061300b5761300b613a64565b0160200151600160f89190911c1b91508282116130a05760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610b08565b918117916130ad81613b2f565b9050612ff0565b50909392505050565b6000806130c86131e5565b6130d0613203565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561258657508261315a5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610b08565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806131b4613221565b81526020016131c1613221565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156132775761327761323f565b60405290565b60405161010081016001600160401b03811182821017156132775761327761323f565b604051606081016001600160401b03811182821017156132775761327761323f565b604051601f8201601f191681016001600160401b03811182821017156132ea576132ea61323f565b604052919050565b60006040828403121561330457600080fd5b61330c613255565b9050813581526020820135602082015292915050565b600082601f83011261333357600080fd5b61333b613255565b80604084018581111561334d57600080fd5b845b8181101561336757803584526020938401930161334f565b509095945050505050565b60006080828403121561338457600080fd5b61338c613255565b90506133988383613322565b81526133a78360408401613322565b602082015292915050565b60008060008061012085870312156133c957600080fd5b843593506133da86602087016132f2565b92506133e98660608701613372565b91506133f88660e087016132f2565b905092959194509250565b6001600160a01b03811681146109db57600080fd5b60006020828403121561342a57600080fd5b8135612c2c81613403565b6020808252825182820181905260009190848201906040850190845b818110156134765783516001600160a01b031683529284019291840191600101613451565b50909695505050505050565b80151581146109db57600080fd5b6000602082840312156134a257600080fd5b8135612c2c81613482565b803563ffffffff81168114612dda57600080fd5b60006001600160401b038211156134da576134da61323f565b5060051b60200190565b600082601f8301126134f557600080fd5b8135602061350a613505836134c1565b6132c2565b82815260059290921b8401810191818101908684111561352957600080fd5b8286015b8481101561354b5761353e816134ad565b835291830191830161352d565b509695505050505050565b600082601f83011261356757600080fd5b81356020613577613505836134c1565b82815260069290921b8401810191818101908684111561359657600080fd5b8286015b8481101561354b576135ac88826132f2565b83529183019160400161359a565b600082601f8301126135cb57600080fd5b813560206135db613505836134c1565b82815260059290921b840181019181810190868411156135fa57600080fd5b8286015b8481101561354b5780356001600160401b0381111561361d5760008081fd5b61362b8986838b01016134e4565b8452509183019183016135fe565b6000610180828403121561364c57600080fd5b61365461327d565b905081356001600160401b038082111561366d57600080fd5b613679858386016134e4565b8352602084013591508082111561368f57600080fd5b61369b85838601613556565b602084015260408401359150808211156136b457600080fd5b6136c085838601613556565b60408401526136d28560608601613372565b60608401526136e48560e086016132f2565b60808401526101208401359150808211156136fe57600080fd5b61370a858386016134e4565b60a084015261014084013591508082111561372457600080fd5b613730858386016134e4565b60c084015261016084013591508082111561374a57600080fd5b50613757848285016135ba565b60e08301525092915050565b60008060008060006080868803121561377b57600080fd5b8535945060208601356001600160401b038082111561379957600080fd5b818801915088601f8301126137ad57600080fd5b8135818111156137bc57600080fd5b8960208285010111156137ce57600080fd5b60208301965094506137e2604089016134ad565b935060608801359150808211156137f857600080fd5b5061380588828901613639565b9150509295509295909350565b600081518084526020808501945080840160005b8381101561384b5781516001600160601b031687529582019590820190600101613826565b509495945050505050565b60408152600083516040808401526138716080840182613812565b90506020850151603f1984830301606085015261388e8282613812565b925050508260208301529392505050565b60006001600160401b038311156138b8576138b861323f565b6138cb601f8401601f19166020016132c2565b90508281528383830111156138df57600080fd5b828260208301376000602084830101529392505050565b6000806040838503121561390957600080fd5b823561391481613403565b915060208301356001600160401b038082111561393057600080fd5b908401906060828703121561394457600080fd5b61394c6132a0565b82358281111561395b57600080fd5b83019150601f8201871361396e57600080fd5b61397d8783356020850161389f565b815260208301356020820152604083013560408201528093505050509250929050565b6000602082840312156139b257600080fd5b81356001600160401b038111156139c857600080fd5b8201601f810184136139d957600080fd5b6139e88482356020840161389f565b949350505050565b60008060208385031215613a0357600080fd5b82356001600160401b0380821115613a1a57600080fd5b818501915085601f830112613a2e57600080fd5b813581811115613a3d57600080fd5b8660208260051b8501011115613a5257600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052603260045260246000fd5b600082613a9757634e487b7160e01b600052601260045260246000fd5b500690565b600060208284031215613aae57600080fd5b5051919050565b600060208284031215613ac757600080fd5b81516001600160c01b0381168114612c2c57600080fd5b600060208284031215613af057600080fd5b815160ff81168114612c2c57600080fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115613b2a57613b2a613b01565b500190565b6000600019821415613b4357613b43613b01565b5060010190565b6001600160601b03811681146109db57600080fd5b600060408284031215613b7157600080fd5b613b79613255565b8251613b8481613403565b81526020830151613b9481613b4a565b60208201529392505050565b600060208284031215613bb257600080fd5b8151612c2c81613403565b600082821015613bcf57613bcf613b01565b500390565b600060208284031215613be657600080fd5b815167ffffffffffffffff1981168114612c2c57600080fd5b600060208284031215613c1157600080fd5b8151612c2c81613b4a565b60006001600160601b0383811690831681811015613c3c57613c3c613b01565b039392505050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b83811015613c7f57815185529382019390820190600101613c63565b5092979650505050505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b81811015613d2a57602081850181015186830182015201613d0e565b81811115613d3c576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b0383168152604060208201526000825160606040840152613d7b60a0840182613d04565b90506020840151606084015260408401516080840152809150509392505050565b602081526000613daf6020830184613d04565b9392505050565b60008235609e19833603018112613dcc57600080fd5b9190910192915050565b8035612dda81613403565b600060208284031215613df357600080fd5b8151612c2c81613482565b8183526000602080850194508260005b8581101561384b578135613e2181613403565b6001600160a01b0316875281830135613e3981613b4a565b6001600160601b0316878401526040968701969190910190600101613e0e565b60208082528181018390526000906040808401600586901b8501820187855b88811015613f5857878303603f190184528135368b9003609e19018112613e9e57600080fd5b8a0160a0813536839003601e19018112613eb757600080fd5b820180356001600160401b03811115613ecf57600080fd5b8060061b3603841315613ee157600080fd5b828752613ef3838801828c8501613dfe565b92505050613f02888301613dd6565b6001600160a01b03168886015281870135878601526060613f248184016134ad565b63ffffffff16908601526080613f3b8382016134ad565b63ffffffff16950194909452509285019290850190600101613e78565b509098975050505050505050565b6000816000190483118215151615613f8057613f80613b01565b500290565b600061ffff80831681811415613f9d57613f9d613b01565b600101939250505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47424c535369676e6174757265436865636b65722e636865636b5369676e617475a2646970667358221220385b53c243615f73fcb197652c1559cfc53f572d7d4298a65f9389029abee49064736f6c634300080c0033","sourceMap":"641:690:98:-:0;;;721:392;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1085:20;916:13;943:19;976:20;1010;-1:-1:-1;;;;;1010:34:98;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1590:30:56;;;;;1630:42;;;;;1682:44;;;;;1736:32;;;;2276:22:55::1;:20;:22::i;:::-;1894:411:::0;;;;1732:20:49;-1:-1:-1;;;;;1710:42:49;;;-1:-1:-1;;;;;1710:42:49;;;;;1778:20;-1:-1:-1;;;;;1778:34:49;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1762:52:49;;;-1:-1:-1;;;;;1762:52:49;;;;;1841:20;-1:-1:-1;;;;;1841:35:49;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1824:54:49;;;-1:-1:-1;;;;;1824:54:49;;;;;1901:13;;-1:-1:-1;;;;;1901:24:49;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1888:39:49;;;-1:-1:-1;641:690:98;;-1:-1:-1;;;641:690:98;5388:279:23;5456:13;;;;;;;5455:14;5447:66;;;;-1:-1:-1;;;5447:66:23;;1951:2:100;5447:66:23;;;1933:21:100;1990:2;1970:18;;;1963:30;2029:34;2009:18;;;2002:62;-1:-1:-1;;;2080:18:100;;;2073:37;2127:19;;5447:66:23;;;;;;;;5527:12;;5542:15;5527:12;;;:30;5523:138;;;5573:12;:30;;-1:-1:-1;;5573:30:23;5588:15;5573:30;;;;;;5622:28;;2299:36:100;;;5622:28:23;;2287:2:100;2272:18;5622:28:23;;;;;;;5523:138;5388:279::o;14:153:100:-;-1:-1:-1;;;;;111:31:100;;101:42;;91:70;;157:1;154;147:12;91:70;14:153;:::o;172:663::-;338:6;346;354;407:2;395:9;386:7;382:23;378:32;375:52;;;423:1;420;413:12;375:52;455:9;449:16;474:53;521:5;474:53;:::i;:::-;596:2;581:18;;575:25;546:5;;-1:-1:-1;609:55:100;575:25;609:55;:::i;:::-;735:2;720:18;;714:25;683:7;;-1:-1:-1;748:55:100;714:25;748:55;:::i;:::-;822:7;812:17;;;172:663;;;;;:::o;840:297::-;934:6;987:2;975:9;966:7;962:23;958:32;955:52;;;1003:1;1000;993:12;955:52;1035:9;1029:16;1054:53;1101:5;1054:53;:::i;:::-;1126:5;840:297;-1:-1:-1;;;840:297:100:o;2157:184::-;641:690:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101375760003560e01c80638da5cb5b116100b8578063c4d66de81161007c578063c4d66de8146102f6578063df5cf72314610309578063e481af9d14610330578063f2fde38b14610338578063fc299dee1461034b578063fce36c7d1461035e57600080fd5b80638da5cb5b1461028f5780639926ee7d146102a0578063a364f4da146102b3578063a98fb355146102c6578063b98d0908146102d957600080fd5b806368304835116100ff57806368304835146101f25780636b3aa72e146102195780636d14a9871461023f5780636efb463614610266578063715018a61461028757600080fd5b8063171f1d5b1461013c57806333cfb7b71461016b5780633bc28c8c1461018b578063416c7e5e146101a05780635df45946146101b3575b600080fd5b61014f61014a3660046133b2565b610371565b6040805192151583529015156020830152015b60405180910390f35b61017e610179366004613418565b6104fb565b6040516101629190613435565b61019e610199366004613418565b6109ca565b005b61019e6101ae366004613490565b6109de565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610162565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b7f00000000000000000000000000000000000000000000000000000000000000006101da565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b610279610274366004613763565b610b1a565b604051610162929190613856565b61019e611a31565b6033546001600160a01b03166101da565b61019e6102ae3660046138f6565b611a45565b61019e6102c1366004613418565b611b11565b61019e6102d43660046139a0565b611bd8565b6097546102e69060ff1681565b6040519015158152602001610162565b61019e610304366004613418565b611c2c565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b61017e611d40565b61019e610346366004613418565b612109565b6065546101da906001600160a01b031681565b61019e61036c3660046139f0565b61217f565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001878760000151886020015188600001516000600281106103b9576103b9613a64565b60200201518951600160200201518a602001516000600281106103de576103de613a64565b60200201518b602001516001600281106103fa576103fa613a64565b602090810291909101518c518d8301516040516104579a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c61047a9190613a7a565b90506104ed61049361048c8884612537565b86906125ce565b61049b612662565b6104e36104d4856104ce604080518082018252600080825260209182015281518083019092526001825260029082015290565b90612537565b6104dd8c612722565b906125ce565b886201d4c06127b2565b909890975095505050505050565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa158015610567573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058b9190613a9c565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa1580156105f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061a9190613ab5565b90506001600160c01b03811615806106b457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106af9190613ade565b60ff16155b156106d057505060408051600081526020810190915292915050565b60006106e4826001600160c01b03166129d6565b90506000805b82518110156107ba577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f584838151811061073457610734613a64565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610778573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079c9190613a9c565b6107a69083613b17565b9150806107b281613b2f565b9150506106ea565b506000816001600160401b038111156107d5576107d561323f565b6040519080825280602002602001820160405280156107fe578160200160208202803683370190505b5090506000805b84518110156109bd57600085828151811061082257610822613a64565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610897573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108bb9190613a9c565b905060005b818110156109a7576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015610935573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109599190613b5f565b6000015186868151811061096f5761096f613a64565b6001600160a01b03909216602092830291909101909101528461099181613b2f565b955050808061099f90613b2f565b9150506108c0565b50505080806109b590613b2f565b915050610805565b5090979650505050505050565b6109d2612a98565b6109db81612af2565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a609190613ba0565b6001600160a01b0316336001600160a01b031614610b115760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a4015b60405180910390fd5b6109db81612b5b565b6040805180820190915260608082526020820152600084610b915760405162461bcd60e51b81526020600482015260376024820152600080516020613fc883398151915260448201527f7265733a20656d7074792071756f72756d20696e7075740000000000000000006064820152608401610b08565b60408301515185148015610ba9575060a08301515185145b8015610bb9575060c08301515185145b8015610bc9575060e08301515185145b610c335760405162461bcd60e51b81526020600482015260416024820152600080516020613fc883398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610b08565b82515160208401515114610cab5760405162461bcd60e51b815260206004820152604460248201819052600080516020613fc8833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610b08565b4363ffffffff168463ffffffff1610610d1a5760405162461bcd60e51b815260206004820152603c6024820152600080516020613fc883398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610b08565b6040805180820182526000808252602080830191909152825180840190935260608084529083015290866001600160401b03811115610d5b57610d5b61323f565b604051908082528060200260200182016040528015610d84578160200160208202803683370190505b506020820152866001600160401b03811115610da257610da261323f565b604051908082528060200260200182016040528015610dcb578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b03811115610dff57610dff61323f565b604051908082528060200260200182016040528015610e28578160200160208202803683370190505b5081526020860151516001600160401b03811115610e4857610e4861323f565b604051908082528060200260200182016040528015610e71578160200160208202803683370190505b5081602001819052506000610f438a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e9190613ade565b612ba2565b905060005b8760200151518110156111de57610f8d88602001518281518110610f6e57610f6e613a64565b6020026020010151805160009081526020918201519091526040902090565b83602001518281518110610fa357610fa3613a64565b60209081029190910101528015611063576020830151610fc4600183613bbd565b81518110610fd457610fd4613a64565b602002602001015160001c83602001518281518110610ff557610ff5613a64565b602002602001015160001c11611063576040805162461bcd60e51b8152602060048201526024810191909152600080516020613fc883398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610b08565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec6351846020015183815181106110a8576110a8613a64565b60200260200101518b8b6000015185815181106110c7576110c7613a64565b60200260200101516040518463ffffffff1660e01b81526004016111049392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015611121573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111459190613ab5565b6001600160c01b03168360000151828151811061116457611164613a64565b6020026020010181815250506111ca61048c61119e848660000151858151811061119057611190613a64565b602002602001015116612c35565b8a6020015184815181106111b4576111b4613a64565b6020026020010151612c6090919063ffffffff16565b9450806111d681613b2f565b915050610f48565b50506111e983612d44565b60975490935060ff16600081611200576000611282565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561125e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112829190613a9c565b905060005b8a8110156119005782156113e2578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c428f8f868181106112de576112de613a64565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa15801561131e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113429190613a9c565b61134c9190613b17565b116113e25760405162461bcd60e51b81526020600482015260666024820152600080516020613fc883398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610b08565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8d8d8481811061142357611423613a64565b9050013560f81c60f81b60f81c8c8c60a00151858151811061144757611447613a64565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa1580156114a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c79190613bd4565b6001600160401b0319166114ea8a604001518381518110610f6e57610f6e613a64565b67ffffffffffffffff1916146115865760405162461bcd60e51b81526020600482015260616024820152600080516020613fc883398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610b08565b6115b68960400151828151811061159f5761159f613a64565b6020026020010151876125ce90919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568d8d848181106115f9576115f9613a64565b9050013560f81c60f81b60f81c8c8c60c00151858151811061161d5761161d613a64565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015611679573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169d9190613bff565b856020015182815181106116b3576116b3613a64565b6001600160601b039092166020928302919091018201528501518051829081106116df576116df613a64565b6020026020010151856000015182815181106116fd576116fd613a64565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a60200151518110156118eb576117758660000151828151811061174757611747613a64565b60200260200101518f8f8681811061176157611761613a64565b600192013560f81c9290921c811614919050565b156118d9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8f8f868181106117bb576117bb613a64565b9050013560f81c60f81b60f81c8e896020015185815181106117df576117df613a64565b60200260200101518f60e0015188815181106117fd576117fd613a64565b6020026020010151878151811061181657611816613a64565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa15801561187a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189e9190613bff565b87518051859081106118b2576118b2613a64565b602002602001018181516118c69190613c1c565b6001600160601b03169052506001909101905b806118e381613b2f565b915050611721565b505080806118f890613b2f565b915050611287565b50505060008061191a8c868a606001518b60800151610371565b915091508161198b5760405162461bcd60e51b81526020600482015260436024820152600080516020613fc883398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610b08565b806119ec5760405162461bcd60e51b81526020600482015260396024820152600080516020613fc883398151915260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610b08565b50506000878260200151604051602001611a07929190613c44565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b611a39612a98565b611a436000612ddf565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611a8d5760405162461bcd60e51b8152600401610b0890613c8c565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d90611adb9085908590600401613d51565b600060405180830381600087803b158015611af557600080fd5b505af1158015611b09573d6000803e3d6000fd5b505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b595760405162461bcd60e51b8152600401610b0890613c8c565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b158015611bbd57600080fd5b505af1158015611bd1573d6000803e3d6000fd5b5050505050565b611be0612a98565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb35590611ba3908490600401613d9c565b600054610100900460ff1615808015611c4c5750600054600160ff909116105b80611c665750303b158015611c66575060005460ff166001145b611cc95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b08565b6000805460ff191660011790558015611cec576000805461ff0019166101001790555b611cf68283612e31565b8015611d3c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611da2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc69190613ade565b60ff16905080611de457505060408051600081526020810190915290565b6000805b82811015611e9957604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015611e57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7b9190613a9c565b611e859083613b17565b915080611e9181613b2f565b915050611de8565b506000816001600160401b03811115611eb457611eb461323f565b604051908082528060200260200182016040528015611edd578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f669190613ade565b60ff168110156120ff57604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015611fda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ffe9190613a9c565b905060005b818110156120ea576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015612078573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209c9190613b5f565b600001518585815181106120b2576120b2613a64565b6001600160a01b0390921660209283029190910190910152836120d481613b2f565b94505080806120e290613b2f565b915050612003565b505080806120f790613b2f565b915050611ee4565b5090949350505050565b612111612a98565b6001600160a01b0381166121765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b08565b6109db81612ddf565b6065546001600160a01b031633146122145760405162461bcd60e51b815260206004820152604c60248201527f536572766963654d616e61676572426173652e6f6e6c7952657761726473496e60448201527f69746961746f723a2063616c6c6572206973206e6f742074686520726577617260648201526b32399034b734ba34b0ba37b960a11b608482015260a401610b08565b60005b818110156124e85782828281811061223157612231613a64565b90506020028101906122439190613db6565b612254906040810190602001613418565b6001600160a01b03166323b872dd333086868681811061227657612276613a64565b90506020028101906122889190613db6565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152013560448201526064016020604051808303816000875af11580156122df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123039190613de1565b50600083838381811061231857612318613a64565b905060200281019061232a9190613db6565b61233b906040810190602001613418565b604051636eb1769f60e11b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063dd62ed3e90604401602060405180830381865afa1580156123a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123cd9190613a9c565b90508383838181106123e1576123e1613a64565b90506020028101906123f39190613db6565b612404906040810190602001613418565b6001600160a01b031663095ea7b37f00000000000000000000000000000000000000000000000000000000000000008387878781811061244657612446613a64565b90506020028101906124589190613db6565b604001356124669190613b17565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156124b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d59190613de1565b5050806124e190613b2f565b9050612217565b5060405163fce36c7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fce36c7d90611adb9085908590600401613e59565b6040805180820190915260008082526020820152612553613165565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa905080801561258657612588565bfe5b50806125c65760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610b08565b505092915050565b60408051808201909152600080825260208201526125ea613183565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156125865750806125c65760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610b08565b61266a6131a1565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082019091526000808252602082015260008080612752600080516020613fa883398151915286613a7a565b90505b61275e81612eae565b9093509150600080516020613fa8833981519152828309831415612798576040805180820190915290815260208101919091529392505050565b600080516020613fa8833981519152600182089050612755565b6040805180820182528681526020808201869052825180840190935286835282018490526000918291906127e46131c6565b60005b60028110156129a95760006127fd826006613f66565b905084826002811061281157612811613a64565b60200201515183612823836000613b17565b600c811061283357612833613a64565b602002015284826002811061284a5761284a613a64565b602002015160200151838260016128619190613b17565b600c811061287157612871613a64565b602002015283826002811061288857612888613a64565b602002015151518361289b836002613b17565b600c81106128ab576128ab613a64565b60200201528382600281106128c2576128c2613a64565b60200201515160016020020151836128db836003613b17565b600c81106128eb576128eb613a64565b602002015283826002811061290257612902613a64565b60200201516020015160006002811061291d5761291d613a64565b60200201518361292e836004613b17565b600c811061293e5761293e613a64565b602002015283826002811061295557612955613a64565b60200201516020015160016002811061297057612970613a64565b602002015183612981836005613b17565b600c811061299157612991613a64565b602002015250806129a181613b2f565b9150506127e7565b506129b26131e5565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b60606000806129e484612c35565b61ffff166001600160401b038111156129ff576129ff61323f565b6040519080825280601f01601f191660200182016040528015612a29576020820181803683370190505b5090506000805b825182108015612a41575061010081105b156120ff576001811b935085841615612a88578060f81b838381518110612a6a57612a6a613a64565b60200101906001600160f81b031916908160001a9053508160010191505b612a9181613b2f565b9050612a30565b6033546001600160a01b03163314611a435760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b08565b606554604080516001600160a01b03928316815291831660208301527fe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6097805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b600080612bae84612f30565b9050808360ff166001901b11612c2c5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610b08565b90505b92915050565b6000805b8215612c2f57612c4a600184613bbd565b9092169180612c5881613f85565b915050612c39565b60408051808201909152600080825260208201526102008261ffff1610612cbc5760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610b08565b8161ffff1660011415612cd0575081612c2f565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff1610612d3957600161ffff871660ff83161c81161415612d1c57612d1984846125ce565b93505b612d2683846125ce565b92506201fffe600192831b169101612cec565b509195945050505050565b60408051808201909152600080825260208201528151158015612d6957506020820151155b15612d87575050604080518082019091526000808252602082015290565b604051806040016040528083600001518152602001600080516020613fa88339815191528460200151612dba9190613a7a565b612dd290600080516020613fa8833981519152613bbd565b905292915050565b919050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16612e9c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610b08565b612ea582612ddf565b611d3c81612af2565b60008080600080516020613fa88339815191526003600080516020613fa883398151915286600080516020613fa8833981519152888909090890506000612f24827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020613fa88339815191526130bd565b91959194509092505050565b600061010082511115612fb95760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610b08565b8151612fc757506000919050565b60008083600081518110612fdd57612fdd613a64565b0160200151600160f89190911c81901b92505b84518110156130b45784818151811061300b5761300b613a64565b0160200151600160f89190911c1b91508282116130a05760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610b08565b918117916130ad81613b2f565b9050612ff0565b50909392505050565b6000806130c86131e5565b6130d0613203565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561258657508261315a5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610b08565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806131b4613221565b81526020016131c1613221565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156132775761327761323f565b60405290565b60405161010081016001600160401b03811182821017156132775761327761323f565b604051606081016001600160401b03811182821017156132775761327761323f565b604051601f8201601f191681016001600160401b03811182821017156132ea576132ea61323f565b604052919050565b60006040828403121561330457600080fd5b61330c613255565b9050813581526020820135602082015292915050565b600082601f83011261333357600080fd5b61333b613255565b80604084018581111561334d57600080fd5b845b8181101561336757803584526020938401930161334f565b509095945050505050565b60006080828403121561338457600080fd5b61338c613255565b90506133988383613322565b81526133a78360408401613322565b602082015292915050565b60008060008061012085870312156133c957600080fd5b843593506133da86602087016132f2565b92506133e98660608701613372565b91506133f88660e087016132f2565b905092959194509250565b6001600160a01b03811681146109db57600080fd5b60006020828403121561342a57600080fd5b8135612c2c81613403565b6020808252825182820181905260009190848201906040850190845b818110156134765783516001600160a01b031683529284019291840191600101613451565b50909695505050505050565b80151581146109db57600080fd5b6000602082840312156134a257600080fd5b8135612c2c81613482565b803563ffffffff81168114612dda57600080fd5b60006001600160401b038211156134da576134da61323f565b5060051b60200190565b600082601f8301126134f557600080fd5b8135602061350a613505836134c1565b6132c2565b82815260059290921b8401810191818101908684111561352957600080fd5b8286015b8481101561354b5761353e816134ad565b835291830191830161352d565b509695505050505050565b600082601f83011261356757600080fd5b81356020613577613505836134c1565b82815260069290921b8401810191818101908684111561359657600080fd5b8286015b8481101561354b576135ac88826132f2565b83529183019160400161359a565b600082601f8301126135cb57600080fd5b813560206135db613505836134c1565b82815260059290921b840181019181810190868411156135fa57600080fd5b8286015b8481101561354b5780356001600160401b0381111561361d5760008081fd5b61362b8986838b01016134e4565b8452509183019183016135fe565b6000610180828403121561364c57600080fd5b61365461327d565b905081356001600160401b038082111561366d57600080fd5b613679858386016134e4565b8352602084013591508082111561368f57600080fd5b61369b85838601613556565b602084015260408401359150808211156136b457600080fd5b6136c085838601613556565b60408401526136d28560608601613372565b60608401526136e48560e086016132f2565b60808401526101208401359150808211156136fe57600080fd5b61370a858386016134e4565b60a084015261014084013591508082111561372457600080fd5b613730858386016134e4565b60c084015261016084013591508082111561374a57600080fd5b50613757848285016135ba565b60e08301525092915050565b60008060008060006080868803121561377b57600080fd5b8535945060208601356001600160401b038082111561379957600080fd5b818801915088601f8301126137ad57600080fd5b8135818111156137bc57600080fd5b8960208285010111156137ce57600080fd5b60208301965094506137e2604089016134ad565b935060608801359150808211156137f857600080fd5b5061380588828901613639565b9150509295509295909350565b600081518084526020808501945080840160005b8381101561384b5781516001600160601b031687529582019590820190600101613826565b509495945050505050565b60408152600083516040808401526138716080840182613812565b90506020850151603f1984830301606085015261388e8282613812565b925050508260208301529392505050565b60006001600160401b038311156138b8576138b861323f565b6138cb601f8401601f19166020016132c2565b90508281528383830111156138df57600080fd5b828260208301376000602084830101529392505050565b6000806040838503121561390957600080fd5b823561391481613403565b915060208301356001600160401b038082111561393057600080fd5b908401906060828703121561394457600080fd5b61394c6132a0565b82358281111561395b57600080fd5b83019150601f8201871361396e57600080fd5b61397d8783356020850161389f565b815260208301356020820152604083013560408201528093505050509250929050565b6000602082840312156139b257600080fd5b81356001600160401b038111156139c857600080fd5b8201601f810184136139d957600080fd5b6139e88482356020840161389f565b949350505050565b60008060208385031215613a0357600080fd5b82356001600160401b0380821115613a1a57600080fd5b818501915085601f830112613a2e57600080fd5b813581811115613a3d57600080fd5b8660208260051b8501011115613a5257600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052603260045260246000fd5b600082613a9757634e487b7160e01b600052601260045260246000fd5b500690565b600060208284031215613aae57600080fd5b5051919050565b600060208284031215613ac757600080fd5b81516001600160c01b0381168114612c2c57600080fd5b600060208284031215613af057600080fd5b815160ff81168114612c2c57600080fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115613b2a57613b2a613b01565b500190565b6000600019821415613b4357613b43613b01565b5060010190565b6001600160601b03811681146109db57600080fd5b600060408284031215613b7157600080fd5b613b79613255565b8251613b8481613403565b81526020830151613b9481613b4a565b60208201529392505050565b600060208284031215613bb257600080fd5b8151612c2c81613403565b600082821015613bcf57613bcf613b01565b500390565b600060208284031215613be657600080fd5b815167ffffffffffffffff1981168114612c2c57600080fd5b600060208284031215613c1157600080fd5b8151612c2c81613b4a565b60006001600160601b0383811690831681811015613c3c57613c3c613b01565b039392505050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b83811015613c7f57815185529382019390820190600101613c63565b5092979650505050505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b81811015613d2a57602081850181015186830182015201613d0e565b81811115613d3c576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b0383168152604060208201526000825160606040840152613d7b60a0840182613d04565b90506020840151606084015260408401516080840152809150509392505050565b602081526000613daf6020830184613d04565b9392505050565b60008235609e19833603018112613dcc57600080fd5b9190910192915050565b8035612dda81613403565b600060208284031215613df357600080fd5b8151612c2c81613482565b8183526000602080850194508260005b8581101561384b578135613e2181613403565b6001600160a01b0316875281830135613e3981613b4a565b6001600160601b0316878401526040968701969190910190600101613e0e565b60208082528181018390526000906040808401600586901b8501820187855b88811015613f5857878303603f190184528135368b9003609e19018112613e9e57600080fd5b8a0160a0813536839003601e19018112613eb757600080fd5b820180356001600160401b03811115613ecf57600080fd5b8060061b3603841315613ee157600080fd5b828752613ef3838801828c8501613dfe565b92505050613f02888301613dd6565b6001600160a01b03168886015281870135878601526060613f248184016134ad565b63ffffffff16908601526080613f3b8382016134ad565b63ffffffff16950194909452509285019290850190600101613e78565b509098975050505050505050565b6000816000190483118215151615613f8057613f80613b01565b500290565b600061ffff80831681811415613f9d57613f9d613b01565b600101939250505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47424c535369676e6174757265436865636b65722e636865636b5369676e617475a2646970667358221220385b53c243615f73fcb197652c1559cfc53f572d7d4298a65f9389029abee49064736f6c634300080c0033","sourceMap":"641:690:98:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14649:1081:49;;;;;;:::i;:::-;;:::i;:::-;;;;3285:14:100;;3278:22;3260:41;;3344:14;;3337:22;3332:2;3317:18;;3310:50;3233:18;14649:1081:49;;;;;;;;7697:1470:55;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5599:135::-;;;;;;:::i;:::-;;:::i;:::-;;2171:123:49;;;;;;:::i;:::-;;:::i;1122:47::-;;;;;;;;-1:-1:-1;;;;;5106:32:100;;;5088:51;;5076:2;5061:18;1122:47:49;4917:228:100;1071:45:49;;;;;9235:111:55;9325:13;9235:111;;1008:57:49;;;;;4417:9750;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2071:101:22:-;;;:::i;1441:85::-;1513:6;;-1:-1:-1;;;;;1513:6:22;1441:85;;4797:260:55;;;;;;:::i;:::-;;:::i;5262:158::-;;;;;;:::i;:::-;;:::i;2721:148::-;;;;;;:::i;:::-;;:::i;1360:32:49:-;;;;;;;;;;;;14205:14:100;;14198:22;14180:41;;14168:2;14153:18;1360:32:49;14040:187:100;1119:210:98;;;;;;:::i;:::-;;:::i;1175:46:49:-;;;;;6262:951:55;;;:::i;2321:198:22:-;;;;;;:::i;:::-;;:::i;1212:31:56:-;;;;;-1:-1:-1;;;;;1212:31:56;;;3631:872:55;;;;;;:::i;:::-;;:::i;14649:1081:49:-;14847:22;14871;14980:13;2037:77:68;15082:7:49;15111:3;:5;;;15138:3;:5;;;15165;:7;;;15173:1;15165:10;;;;;;;:::i;:::-;;;;;15197:7;;15205:1;15197:10;;;;15229:5;:7;;;15237:1;15229:10;;;;;;;:::i;:::-;;;;;15261:5;:7;;;15269:1;15261:10;;;;;;;:::i;:::-;;;;;;;;;;15293:7;;15322;;;;15044:303;;;;;;;;;;;15608:19:100;;;15652:2;15643:12;;15636:28;;;;15689:2;15680:12;;15673:28;;;;15726:2;15717:12;;15710:28;;;;15763:3;15754:13;;15747:29;;;;15801:3;15792:13;;15785:29;15839:3;15830:13;;15823:29;15877:3;15868:13;;15861:29;15915:3;15906:13;;15899:29;15953:3;15944:13;;15255:708;15044:303:49;;;;;;;;;;;;;15017:344;;;;;;14996:375;;:394;;;;:::i;:::-;14980:410;-1:-1:-1;15473:250:49;15504:33;15515:21;:3;14980:410;15515:14;:21::i;:::-;15504:5;;:10;:33::i;:::-;15551:22;:20;:22::i;:::-;15587:67;15616:37;15647:5;15616:19;-1:-1:-1;;;;;;;;;;;;;;;;;2392:13:68;;;;;;;;2400:1;2392:13;;2403:1;2392:13;;;;;2313:99;15616:19:49;:30;;:37::i;:::-;15587:23;15602:7;15587:14;:23::i;:::-;:28;;:67::i;:::-;15668:5;994:7;15473:17;:250::i;:::-;15432:291;;;;-1:-1:-1;14649:1081:49;-1:-1:-1;;;;;;14649:1081:49:o;7697:1470:55:-;7854:44;;-1:-1:-1;;;7854:44:55;;-1:-1:-1;;;;;5106:32:100;;;7854:44:55;;;5088:51:100;7801:16:55;;7833:18;;7854:20;:34;;;;5061:18:100;;7854:44:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7933:55;;-1:-1:-1;;;7933:55:55;;;;;16649:25:100;;;7833:65:55;;-1:-1:-1;7908:22:55;;-1:-1:-1;;;;;7933:20:55;:43;;;;16622:18:100;;7933:55:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7908:80;-1:-1:-1;;;;;;8003:19:55;;;;:62;;;8026:20;-1:-1:-1;;;;;8026:32:55;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:39;;;8003:62;7999:116;;;-1:-1:-1;;8088:16:55;;;8102:1;8088:16;;;;;;;;;8081:23;-1:-1:-1;;7697:1470:55:o;7999:116::-;8196:36;8235:46;8266:14;-1:-1:-1;;;;;8235:46:55;:30;:46::i;:::-;8196:85;-1:-1:-1;8291:21:55;;8322:173;8346:23;:30;8342:1;:34;8322:173;;;8414:14;-1:-1:-1;;;;;8414:35:55;;8456:23;8480:1;8456:26;;;;;;;;:::i;:::-;;;;;8414:70;;-1:-1:-1;;;;;;8414:70:55;;;;;;;8456:26;;;;;8414:70;;;17400:36:100;17373:18;;8414:70:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8397:87;;;;:::i;:::-;;-1:-1:-1;8378:3:55;;;;:::i;:::-;;;;8322:173;;;;8566:35;8618:13;-1:-1:-1;;;;;8604:28:55;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8604:28:55;;8566:66;;8642:13;8674:9;8669:457;8693:23;:30;8689:1;:34;8669:457;;;8744:12;8765:23;8789:1;8765:26;;;;;;;;:::i;:::-;;;;;8837:43;;-1:-1:-1;;;8837:43:55;;8765:26;;;;;8837:43;;;17400:36:100;;;8765:26:55;-1:-1:-1;;;;;;;;8837:14:55;:35;;;;17373:18:100;;8837:43:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8806:74;;8899:9;8894:222;8918:20;8914:1;:24;8894:222;;;9019:47;;-1:-1:-1;;;9019:47:55;;18241:4:100;18229:17;;9019:47:55;;;18211:36:100;18263:18;;;18256:34;;;9019:14:55;-1:-1:-1;;;;;9019:36:55;;;;18184:18:100;;9019:47:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;;;8963:18;8982:5;8963:25;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8963:113:55;;;:25;;;;;;;;;;;:113;9094:7;;;;:::i;:::-;;;;8940:3;;;;;:::i;:::-;;;;8894:222;;;;8730:396;;8725:3;;;;;:::i;:::-;;;;8669:457;;;-1:-1:-1;9142:18:55;;7697:1470;-1:-1:-1;;;;;;;7697:1470:55:o;5599:135::-;1334:13:22;:11;:13::i;:::-;5686:41:55::1;5707:19;5686:20;:41::i;:::-;5599:135:::0;:::o;2171:123:49:-;1476:19;-1:-1:-1;;;;;1476:25:49;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1462:41:49;:10;-1:-1:-1;;;;;1462:41:49;;1441:180;;;;-1:-1:-1;;;1441:180:49;;19399:2:100;1441:180:49;;;19381:21:100;19438:2;19418:18;;;19411:30;19477:34;19457:18;;;19450:62;19548:34;19528:18;;;19521:62;19620:30;19599:19;;;19592:59;19668:19;;1441:180:49;;;;;;;;;2256:31:::1;2281:5;2256:24;:31::i;4417:9750::-:0;-1:-1:-1;;;;;;;;;;;;;;;;;4646:7:49;4686:25;4665:127;;;;-1:-1:-1;;;4665:127:49;;19900:2:100;4665:127:49;;;19882:21:100;19939:2;19919:18;;;19912:30;-1:-1:-1;;;;;;;;;;;19958:18:100;;;19951:62;20049:25;20029:18;;;20022:53;20092:19;;4665:127:49;19698:419:100;4665:127:49;4849:17;;;;:24;4825:48;;4824:126;;;;-1:-1:-1;4919:23:49;;;;:30;4895:54;;4824:126;:203;;;;-1:-1:-1;4995:24:49;;;;:31;4971:55;;4824:203;:284;;;;-1:-1:-1;5072:28:49;;;;:35;5048:59;;4824:284;4803:396;;;;-1:-1:-1;;;4803:396:49;;20324:2:100;4803:396:49;;;20306:21:100;20363:2;20343:18;;;20336:30;-1:-1:-1;;;;;;;;;;;20382:18:100;;;20375:62;20473:34;20453:18;;;20446:62;-1:-1:-1;;;20524:19:100;;;20517:32;20566:19;;4803:396:49;20122:469:100;4803:396:49;5281:35;;:42;5231:23;;;;:30;:92;5210:207;;;;-1:-1:-1;;;5210:207:49;;20798:2:100;5210:207:49;;;20780:21:100;20837:2;20817:18;;;20810:30;;;-1:-1:-1;;;;;;;;;;;20856:18:100;;;20849:62;20947:34;20927:18;;;20920:62;-1:-1:-1;;;20998:19:100;;;20991:35;21043:19;;5210:207:49;20596:472:100;5210:207:49;5479:12;5449:43;;:20;:43;;;5428:150;;;;-1:-1:-1;;;5428:150:49;;21275:2:100;5428:150:49;;;21257:21:100;21314:2;21294:18;;;21287:30;-1:-1:-1;;;;;;;;;;;21333:18:100;;;21326:62;21424:30;21404:18;;;21397:58;21472:19;;5428:150:49;21073:424:100;5428:150:49;6095:19;;;;;;;;6068:24;6095:19;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;6095:19:49;6451:13;-1:-1:-1;;;;;6438:34:49;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6438:34:49;-1:-1:-1;6404:31:49;;;:68;6530:13;-1:-1:-1;;;;;6517:34:49;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6517:34:49;-1:-1:-1;6482:69:49;;-1:-1:-1;;;;;;;;;;;;;;;;;6657:6:49;:23;;;:30;-1:-1:-1;;;;;6630:67:49;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6630:67:49;-1:-1:-1;6603:94:49;;6747:23;;;;:30;-1:-1:-1;;;;;6733:45:49;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6733:45:49;;6707:10;:23;;:71;;;;6957:27;6987:133;7042:13;;6987:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7073:33:49;;;-1:-1:-1;;;7073:33:49;;;;-1:-1:-1;;;;;7073:19:49;:31;;-1:-1:-1;7073:31:49;;-1:-1:-1;7073:33:49;;;;;;;;;;;;;;:31;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6987:37;:133::i;:::-;6957:163;;7140:9;7135:1728;7159:6;:23;;;:30;7155:1;:34;7135:1728;;;7451:82;:6;:44;;;7496:1;7451:47;;;;;;;;:::i;:::-;;;;;;;10534:9:68;;10473:16;10524:20;;;10580:4;10576:13;;;10570:20;10557:34;;;10629:4;10616:18;;;10404:246;7451:82:49;7422:10;:23;;;7446:1;7422:26;;;;;;;;:::i;:::-;;;;;;;;;;:111;7555:6;;7551:305;;7692:23;;;;7716:5;7720:1;7716;:5;:::i;:::-;7692:30;;;;;;;;:::i;:::-;;;;;;;7684:39;;7626:10;:23;;;7650:1;7626:26;;;;;;;;:::i;:::-;;;;;;;7618:35;;:105;7585:252;;;;;-1:-1:-1;;;7585:252:49;;21834:2:100;7585:252:49;;;21816:21:100;21853:18;;;21846:30;;;;-1:-1:-1;;;;;;;;;;;21892:18:100;;;21885:62;21983:34;21963:18;;;21956:62;22035:19;;7585:252:49;21632:428:100;7585:252:49;7996:19;-1:-1:-1;;;;;7996:76:49;;8111:10;:23;;;8135:1;8111:26;;;;;;;;:::i;:::-;;;;;;;8176:20;8229:6;:35;;;8265:1;8229:38;;;;;;;;:::i;:::-;;;;;;;7996:294;;;;;;;;;;;;;;;;22363:25:100;;;22407:10;22453:15;;;22448:2;22433:18;;22426:43;22505:15;22500:2;22485:18;;22478:43;22351:2;22336:18;;22164:363;7996:294:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;7966:324:49;:10;:24;;;7991:1;7966:27;;;;;;;;:::i;:::-;;;;;;:324;;;;;8581:267;8611:219;8679:129;8763:19;8733:10;:24;;;8758:1;8733:27;;;;;;;;:::i;:::-;;;;;;;:49;8679:24;:129::i;:::-;8611:6;:23;;;8635:1;8611:26;;;;;;;;:::i;:::-;;;;;;;:42;;:219;;;;:::i;8581:267::-;8575:273;-1:-1:-1;7191:3:49;;;;:::i;:::-;;;;7135:1728;;;;6789:2084;9146:12;:3;:10;:12::i;:::-;9490:20;;9140:18;;-1:-1:-1;9490:20:49;;9461:26;9490:20;9556:97;;9652:1;9556:97;;;9596:10;-1:-1:-1;;;;;9596:35:49;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9524:129;;9673:9;9668:3451;9688:24;;;9668:3451;;;9896:21;9892:478;;;10179:20;9974:225;;10127:21;9974:19;-1:-1:-1;;;;;9974:43:49;;10053:13;;10067:1;10053:16;;;;;;;:::i;:::-;9974:122;;;;;;-1:-1:-1;;;;;;9974:122:49;;;10053:16;;;;;9974:122;;;17400:36:100;-1:-1:-1;17373:18:100;;9974:122:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:174;;;;:::i;:::-;:225;9941:410;;;;-1:-1:-1;;;9941:410:49;;22734:2:100;9941:410:49;;;22716:21:100;22773:3;22753:18;;;22746:31;-1:-1:-1;;;;;;;;;;;22793:18:100;;;22786:62;22884:34;22864:18;;;22857:62;22956:34;22935:19;;;22928:63;-1:-1:-1;;;23007:19:100;;;23000:37;23054:19;;9941:410:49;22532:547:100;9941:410:49;10638:14;-1:-1:-1;;;;;10638:46:49;;10735:13;;10749:1;10735:16;;;;;;;:::i;:::-;;;;;;;;;10729:23;;10795:20;10852:6;:23;;;10876:1;10852:26;;;;;;;;:::i;:::-;;;;;;;;;;;10638:267;;-1:-1:-1;;;;;;10638:267:49;;;;;;;23309:4:100;23297:17;;;10638:267:49;;;23279:36:100;10638:267:49;23380:15:100;;;23360:18;;;23353:43;23432:15;23412:18;;;23405:43;23252:18;;10638:267:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10567:338:49;;10575:34;:6;:17;;;10593:1;10575:20;;;;;;;;:::i;:34::-;-1:-1:-1;;10567:338:49;;10538:506;;;;-1:-1:-1;;;10538:506:49;;23960:2:100;10538:506:49;;;23942:21:100;23999:2;23979:18;;;23972:30;-1:-1:-1;;;;;;;;;;;24018:18:100;;;24011:62;24109:34;24089:18;;;24082:62;24181:34;24160:19;;;24153:63;-1:-1:-1;;;24232:19:100;;;24225:32;24274:19;;10538:506:49;23758:541:100;10538:506:49;11068:30;11077:6;:17;;;11095:1;11077:20;;;;;;;;:::i;:::-;;;;;;;11068:3;:8;;:30;;;;:::i;:::-;11062:36;;11252:13;-1:-1:-1;;;;;11252:70:49;;11369:13;;11383:1;11369:16;;;;;;;:::i;:::-;;;;;;;;;11363:23;;11425:20;11478:6;:24;;;11503:1;11478:27;;;;;;;;:::i;:::-;;;;;;;;;;;11252:276;;-1:-1:-1;;;;;;11252:276:49;;;;;;;23309:4:100;23297:17;;;11252:276:49;;;23279:36:100;11252:276:49;23380:15:100;;;23360:18;;;23353:43;23432:15;23412:18;;;23405:43;23252:18;;11252:276:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11215:11;:31;;;11247:1;11215:34;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11215:313:49;;;:34;;;;;;;;;;:313;11584:52;;;:55;;11637:1;;11584:55;;;;;;:::i;:::-;;;;;;;11546:11;:32;;;11579:1;11546:35;;;;;;;;:::i;:::-;;;;;;:93;-1:-1:-1;;;;;11546:93:49;;;-1:-1:-1;;;;;11546:93:49;;;;;11726:31;12009:9;12004:1101;12028:6;:23;;;:30;12024:1;:34;12004:1101;;;12225:153;12272:10;:24;;;12297:1;12272:27;;;;;;;;:::i;:::-;;;;;;;12335:13;;12349:1;12335:16;;;;;;;:::i;:::-;7404:1:69;12335:16:49;;;;;7387:13:69;;;;7386:19;;7380:26;;;-1:-1:-1;7292:121:69;12225:153:49;12196:891;;;12466:13;-1:-1:-1;;;;;12466:72:49;;12593:13;;12607:1;12593:16;;;;;;;:::i;:::-;;;;;;;;;12587:23;;12657:20;12723:10;:23;;;12747:1;12723:26;;;;;;;;:::i;:::-;;;;;;;12790:6;:28;;;12819:1;12790:31;;;;;;;;:::i;:::-;;;;;;;12859:23;12790:126;;;;;;;;:::i;:::-;;;;;;;;;;;12466:481;;-1:-1:-1;;;;;;12466:481:49;;;;;;;24812:4:100;24800:17;;;12466:481:49;;;24782:36:100;12466:481:49;24883:15:100;;;24863:18;;;24856:43;24915:18;;;24908:34;;;;24978:15;24958:18;;;24951:43;24754:19;;12466:481:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12427:32;;:35;;12460:1;;12427:35;;;;;;:::i;:::-;;;;;;:520;;;;;;;:::i;:::-;-1:-1:-1;;;;;12427:520:49;;;-1:-1:-1;13013:25:49;;;;;12196:891;12060:3;;;;:::i;:::-;;;;12004:1101;;;;9719:3400;9714:3;;;;;:::i;:::-;;;;9668:3451;;;;9447:3682;;13206:22;13246:21;13284:170;13336:7;13365:3;13390:6;:12;;;13424:6;:12;;;13284:30;:170::i;:::-;13188:266;;;;13493:17;13468:143;;;;-1:-1:-1;;;13468:143:49;;25449:2:100;13468:143:49;;;25431:21:100;25488:2;25468:18;;;25461:30;-1:-1:-1;;;;;;;;;;;25507:18:100;;;25500:62;25598:34;25578:18;;;25571:62;-1:-1:-1;;;25649:19:100;;;25642:34;25693:19;;13468:143:49;25247:471:100;13468:143:49;13650:16;13625:132;;;;-1:-1:-1;;;13625:132:49;;25925:2:100;13625:132:49;;;25907:21:100;25964:2;25944:18;;;25937:30;-1:-1:-1;;;;;;;;;;;25983:18:100;;;25976:62;26074:27;26054:18;;;26047:55;26119:19;;13625:132:49;25723:421:100;13625:132:49;13138:630;;13842:27;13912:20;13934:10;:23;;;13895:63;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;13895:63:49;;;;;;13872:96;;13895:63;13872:96;;;;14127:11;;13872:96;;-1:-1:-1;4417:9750:49;;-1:-1:-1;;;;;;;;;4417:9750:49:o;2071:101:22:-;1334:13;:11;:13::i;:::-;2135:30:::1;2162:1;2135:18;:30::i;:::-;2071:101::o:0;4797:260:55:-;1358:10;-1:-1:-1;;;;;1380:20:55;1358:43;;1337:172;;;;-1:-1:-1;;;1337:172:55;;;;;;;:::i;:::-;4986:64:::1;::::0;-1:-1:-1;;;4986:64:55;;-1:-1:-1;;;;;4986:13:55::1;:35;::::0;::::1;::::0;:64:::1;::::0;5022:8;;5032:17;;4986:64:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;4797:260:::0;;:::o;5262:158::-;1358:10;-1:-1:-1;;;;;1380:20:55;1358:43;;1337:172;;;;-1:-1:-1;;;1337:172:55;;;;;;;:::i;:::-;5364:49:::1;::::0;-1:-1:-1;;;5364:49:55;;-1:-1:-1;;;;;5106:32:100;;;5364:49:55::1;::::0;::::1;5088:51:100::0;5364:13:55::1;:39;::::0;::::1;::::0;5061:18:100;;5364:49:55::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5262:158:::0;:::o;2721:148::-;1334:13:22;:11;:13::i;:::-;2814:48:55::1;::::0;-1:-1:-1;;;2814:48:55;;-1:-1:-1;;;;;2814:13:55::1;:34;::::0;::::1;::::0;:48:::1;::::0;2849:12;;2814:48:::1;;;:::i;1119:210:98:-:0;3111:19:23;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:23;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:23;1476:19:24;:23;;;3219:66:23;;-1:-1:-1;3268:12:23;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:23;;28820:2:100;3157:201:23;;;28802:21:100;28859:2;28839:18;;;28832:30;28898:34;28878:18;;;28871:62;-1:-1:-1;;;28949:18:100;;;28942:44;29003:19;;3157:201:23;28618:410:100;3157:201:23;3368:12;:16;;-1:-1:-1;;3368:16:23;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:23;;;;;3394:65;1267:55:98::1;1293:13;1308;1267:25;:55::i;:::-;3483:14:23::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;3513:21:23;;;3553:14;;-1:-1:-1;17400:36:100;;3553:14:23;;17388:2:100;17373:18;3553:14:23;;;;;;;3479:99;3101:483;1119:210:98;:::o;6262:951:55:-;6321:16;6349:19;6371:20;-1:-1:-1;;;;;6371:32:55;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6349:56;;;-1:-1:-1;6420:16:55;6416:70;;-1:-1:-1;;6459:16:55;;;6473:1;6459:16;;;;;;;;;6262:951::o;6416:70::-;6496:21;;6527:129;6551:11;6547:1;:15;6527:129;;;6600:45;;-1:-1:-1;;;6600:45:55;;17430:4:100;17418:17;;6600:45:55;;;17400:36:100;6600:14:55;-1:-1:-1;;;;;6600:35:55;;;;17373:18:100;;6600:45:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6583:62;;;;:::i;:::-;;-1:-1:-1;6564:3:55;;;;:::i;:::-;;;;6527:129;;;;6666:35;6718:13;-1:-1:-1;;;;;6704:28:55;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6704:28:55;;6666:66;;6742:13;6774:9;6769:403;6793:20;-1:-1:-1;;;;;6793:32:55;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6789:38;;:1;:38;6769:403;;;6879:45;;-1:-1:-1;;;6879:45:55;;17430:4:100;17418:17;;6879:45:55;;;17400:36:100;6848:28:55;;6879:14;-1:-1:-1;;;;;6879:35:55;;;;17373:18:100;;6879:45:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6848:76;;6943:9;6938:224;6962:20;6958:1;:24;6938:224;;;7063:49;;-1:-1:-1;;;7063:49:55;;18241:4:100;18229:17;;7063:49:55;;;18211:36:100;18263:18;;;18256:34;;;7063:14:55;-1:-1:-1;;;;;7063:36:55;;;;18184:18:100;;7063:49:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:58;;;7007:18;7026:5;7007:25;;;;;;;;:::i;:::-;-1:-1:-1;;;;;7007:115:55;;;:25;;;;;;;;;;;:115;7140:7;;;;:::i;:::-;;;;6984:3;;;;;:::i;:::-;;;;6938:224;;;;6834:338;6829:3;;;;;:::i;:::-;;;;6769:403;;;-1:-1:-1;7188:18:55;;6262:951;-1:-1:-1;;;;6262:951:55:o;2321:198:22:-;1334:13;:11;:13::i;:::-;-1:-1:-1;;;;;2409:22:22;::::1;2401:73;;;::::0;-1:-1:-1;;;2401:73:22;;29434:2:100;2401:73:22::1;::::0;::::1;29416:21:100::0;29473:2;29453:18;;;29446:30;29512:34;29492:18;;;29485:62;-1:-1:-1;;;29563:18:100;;;29556:36;29609:19;;2401:73:22::1;29232:402:100::0;2401:73:22::1;2484:28;2503:8;2484:18;:28::i;3631:872:55:-:0;1684:16;;-1:-1:-1;;;;;1684:16:55;1670:10;:30;1649:153;;;;-1:-1:-1;;;1649:153:55;;29841:2:100;1649:153:55;;;29823:21:100;29880:2;29860:18;;;29853:30;29919:34;29899:18;;;29892:62;29990:34;29970:18;;;29963:62;-1:-1:-1;;;30041:19:100;;;30034:43;30094:19;;1649:153:55;29639:480:100;1649:153:55;3815:9:::1;3810:610;3830:29:::0;;::::1;3810:610;;;4029:18;;4048:1;4029:21;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:27;::::0;;;;;::::1;;;:::i;:::-;-1:-1:-1::0;;;;;4029:40:55::1;;4070:10;4090:4;4097:18;;4116:1;4097:21;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:28;4029:97:::0;;-1:-1:-1;;;;;;4029:97:55::1;::::0;;;;;;-1:-1:-1;;;;;31136:15:100;;;4029:97:55::1;::::0;::::1;31118:34:100::0;31188:15;;;;31168:18;;;31161:43;4097:28:55::1;;31220:18:100::0;;;31213:34;31053:18;;4029:97:55::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4140:17;4176:18;;4195:1;4176:21;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:27;::::0;;;;;::::1;;;:::i;:::-;:82;::::0;-1:-1:-1;;;4176:82:55;;4222:4:::1;4176:82;::::0;::::1;31720:34:100::0;-1:-1:-1;;;;;4237:19:55::1;31790:15:100::0;;31770:18;;;31763:43;4176:37:55;;;::::1;::::0;::::1;::::0;31655:18:100;;4176:82:55::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4140:118;;4272:18;;4291:1;4272:21;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:27;::::0;;;;;::::1;;;:::i;:::-;-1:-1:-1::0;;;;;4272:35:55::1;;4333:19;4386:9;4355:18;;4374:1;4355:21;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:28;;;:40;;;;:::i;:::-;4272:137;::::0;-1:-1:-1;;;;;;4272:137:55::1;::::0;;;;;;-1:-1:-1;;;;;32009:32:100;;;4272:137:55::1;::::0;::::1;31991:51:100::0;32058:18;;;32051:34;31964:18;;4272:137:55::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3866:554;3861:3;;;;:::i;:::-;;;3810:610;;;-1:-1:-1::0;4430:66:55::1;::::0;-1:-1:-1;;;4430:66:55;;-1:-1:-1;;;;;4430:19:55::1;:46;::::0;::::1;::::0;:66:::1;::::0;4477:18;;;;4430:66:::1;;;:::i;7084:580:68:-:0;-1:-1:-1;;;;;;;;;;;;;;;;;7184:23:68;;:::i;:::-;7228:3;;7217:14;;:8;7252:3;;;;7241:8;;;:14;7265:8;;;;:12;;;-1:-1:-1;;7452:1:68;7446:4;7217:14;7436:1;7429:4;7422:5;7418:16;7407:53;7396:64;-1:-1:-1;7396:64:68;7557:48;;;;7530:75;;7557:48;7582:9;7530:75;;7632:7;7624:33;;;;-1:-1:-1;;;7624:33:68;;35245:2:100;7624:33:68;;;35227:21:100;35284:2;35264:18;;;35257:30;-1:-1:-1;;;35303:18:100;;;35296:43;35356:18;;7624:33:68;35043:337:100;7624:33:68;7174:490;;7084:580;;;;:::o;4823:615::-;-1:-1:-1;;;;;;;;;;;;;;;;;4926:23:68;;:::i;:::-;4970:4;;4959:15;;:8;4995:4;;;;4984:8;;;:15;5020:4;;5009:8;;;;:15;;;;5045:4;;;;5034:8;;;:15;-1:-1:-1;;5225:1:68;5219:4;4959:15;5209:1;5202:4;5195:5;5191:16;5180:53;5169:64;-1:-1:-1;5169:64:68;5330:48;;;;5303:75;5406:7;5398:33;;;;-1:-1:-1;;;5398:33:68;;35587:2:100;5398:33:68;;;35569:21:100;35626:2;35606:18;;;35599:30;-1:-1:-1;;;35645:18:100;;;35638:43;35698:18;;5398:33:68;35385:337:100;4070:128:68;4119:14;;:::i;:::-;-1:-1:-1;4152:39:68;;;;;;;;3635:77;4152:39;;;;;;3752:77;4152:39;;;;;;;;;;;;;;3869:77;4152:39;;3986:77;4152:39;;;;;;;;;;;;;;;4070:128::o;11044:451::-;-1:-1:-1;;;;;;;;;;;;;;;;;11123:12:68;;;11185:24;-1:-1:-1;;;;;;;;;;;11193:2:68;11185:24;:::i;:::-;11173:36;;11220:239;11259:13;11270:1;11259:10;:13::i;:::-;11247:25;;-1:-1:-1;11247:25:68;-1:-1:-1;;;;;;;;;;;;11336:1:68;11333;11326:24;11318:4;:32;11314:92;;;11378:13;;;;;;;;;;;;;;;;;;;;11044:451;-1:-1:-1;;;11044:451:68:o;11314:92::-;-1:-1:-1;;;;;;;;;;;11434:1:68;11431;11424:24;11420:28;;11220:239;;9189:1112;9397:31;;;;;;;;;;;;;;;;;;9438;;;;;;;;;;;;;;;;9375:4;;;;9397:31;9480:24;;:::i;:::-;9520:9;9515:302;9539:1;9535;:5;9515:302;;;9561:9;9573:5;:1;9577;9573:5;:::i;:::-;9561:17;;9607:2;9610:1;9607:5;;;;;;;:::i;:::-;;;;;:7;9592:5;9598;:1;9607:7;9598:5;:::i;:::-;9592:12;;;;;;;:::i;:::-;;;;:22;9643:2;9646:1;9643:5;;;;;;;:::i;:::-;;;;;:7;;;9628:5;9634:1;9638;9634:5;;;;:::i;:::-;9628:12;;;;;;;:::i;:::-;;;;:22;9679:2;9682:1;9679:5;;;;;;;:::i;:::-;;;;;:7;:10;9664:5;9670;:1;9674;9670:5;:::i;:::-;9664:12;;;;;;;:::i;:::-;;;;:25;9718:2;9721:1;9718:5;;;;;;;:::i;:::-;;;;;:7;9726:1;9718:10;;;;9703:5;9709;:1;9713;9709:5;:::i;:::-;9703:12;;;;;;;:::i;:::-;;;;:25;9757:2;9760:1;9757:5;;;;;;;:::i;:::-;;;;;:7;;;9765:1;9757:10;;;;;;;:::i;:::-;;;;;9742:5;9748;:1;9752;9748:5;:::i;:::-;9742:12;;;;;;;:::i;:::-;;;;:25;9796:2;9799:1;9796:5;;;;;;;:::i;:::-;;;;;:7;;;9804:1;9796:10;;;;;;;:::i;:::-;;;;;9781:5;9787;:1;9791;9787:5;:::i;:::-;9781:12;;;;;;;:::i;:::-;;;;:25;-1:-1:-1;9542:3:68;;;;:::i;:::-;;;;9515:302;;;;9827:21;;:::i;:::-;9858:12;10032:4;10027:3;10012:13;10005:5;10002:1;9990:10;9979:58;10282:6;;9968:69;;10282:11;;;;-1:-1:-1;10265:29:68;;-1:-1:-1;;;;;;;;;;9189:1112:68:o;5465:1257:69:-;5532:12;5650:15;5728:23;5764:20;5777:6;5764:12;:20::i;:::-;5754:31;;-1:-1:-1;;;;;5754:31:69;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5754:31:69;;5728:57;;5841:18;6093:9;6088:601;6122:10;:17;6109:10;:30;6108:45;;;;;6149:3;6145:1;:7;6108:45;6088:601;;;6252:1;:6;;;-1:-1:-1;6339:16:69;;;:21;6335:344;;6524:1;6511:16;;6486:10;6497;6486:22;;;;;;;;:::i;:::-;;;;:41;-1:-1:-1;;;;;6486:41:69;;;;;;;;;6650:12;;;;;6335:344;6155:3;;;:::i;:::-;;;6088:601;;1599:130:22;1513:6;;-1:-1:-1;;;;;1513:6:22;929:10:25;1662:23:22;1654:68;;;;-1:-1:-1;;;1654:68:22;;36102:2:100;1654:68:22;;;36084:21:100;;;36121:18;;;36114:30;36180:34;36160:18;;;36153:62;36232:18;;1654:68:22;35900:356:100;5740:200:55;5847:16;;5823:62;;;-1:-1:-1;;;;;5847:16:55;;;31720:34:100;;31790:15;;;31785:2;31770:18;;31763:43;5823:62:55;;31655:18:100;5823:62:55;;;;;;;5895:16;:38;;-1:-1:-1;;;;;;5895:38:55;-1:-1:-1;;;;;5895:38:55;;;;;;;;;;5740:200::o;15736:148:49:-;15801:20;:28;;-1:-1:-1;;15801:28:49;;;;;;;;;;15844:33;;14180:41:100;;;15844:33:49;;14168:2:100;14153:18;15844:33:49;;;;;;;15736:148;:::o;3308:360:69:-;3419:7;3438:14;3455:44;3481:17;3455:25;:44::i;:::-;3438:61;;3541:6;3524:13;3519:18;;:1;:18;;3518:29;3510:127;;;;-1:-1:-1;;;3510:127:69;;36463:2:100;3510:127:69;;;36445:21:100;36502:2;36482:18;;;36475:30;36541:34;36521:18;;;36514:62;36612:33;36592:18;;;36585:61;36663:19;;3510:127:69;36261:427:100;3510:127:69;3655:6;-1:-1:-1;3308:360:69;;;;;:::o;6797:406::-;6853:6;;6897:209;6904:5;;6897:209;;6931:5;6935:1;6931;:5;:::i;:::-;6925:12;;;;7020:7;;;;:::i;:::-;;;;6897:209;;5698:1197:68;-1:-1:-1;;;;;;;;;;;;;;;;;5824:4:68;5820:1;:8;;;5812:37;;;;-1:-1:-1;;;5812:37:68;;37097:2:100;5812:37:68;;;37079:21:100;37136:2;37116:18;;;37109:30;-1:-1:-1;;;37155:18:100;;;37148:46;37211:18;;5812:37:68;36895:340:100;5812:37:68;5893:1;:6;;5898:1;5893:6;5890:44;;;-1:-1:-1;5922:1:68;5915:8;;5890:44;6016:19;;;;;;;;;5989:24;6016:19;;;;;;;;;6145:1;;6208;;6337:481;6348:1;6343:6;;:1;:6;;;6337:481;;6493:1;6483:6;;;;;;;6482:12;;:17;6478:84;;;6529:14;6534:3;6539;6529:4;:14::i;:::-;6523:20;;6478:84;6644:14;6649:3;6654;6644:4;:14::i;:::-;6638:20;-1:-1:-1;6765:7:68;6771:1;6765:7;;;;;6790:3;6337:481;;;-1:-1:-1;6885:3:68;;5698:1197;-1:-1:-1;;;;;5698:1197:68:o;4461:295::-;-1:-1:-1;;;;;;;;;;;;;;;;;4600:3:68;;:8;:20;;;;-1:-1:-1;4612:3:68;;;;:8;4600:20;4596:154;;;-1:-1:-1;;4643:13:68;;;;;;;;;-1:-1:-1;4643:13:68;;;;;;;;4461:295::o;4596:154::-;4694:45;;;;;;;;4702:1;:3;;;4694:45;;;;-1:-1:-1;;;;;;;;;;;4721:1:68;:3;;;:16;;;;:::i;:::-;4707:31;;-1:-1:-1;;;;;;;;;;;4707:31:68;:::i;:::-;4694:45;;4687:52;4461:295;-1:-1:-1;;4461:295:68:o;4596:154::-;4461:295;;;:::o;2673:187:22:-;2765:6;;;-1:-1:-1;;;;;2781:17:22;;;-1:-1:-1;;;;;;2781:17:22;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;2311:238:55:-;4910:13:23;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:23;;37442:2:100;4902:69:23;;;37424:21:100;37481:2;37461:18;;;37454:30;37520:34;37500:18;;;37493:62;-1:-1:-1;;;37571:18:100;;;37564:41;37622:19;;4902:69:23;37240:407:100;4902:69:23;2461:32:55::1;2480:12;2461:18;:32::i;:::-;2503:39;2524:17;2503:20;:39::i;11616:433:68:-:0;11670:7;;;-1:-1:-1;;;;;;;;;;;11801:1:68;-1:-1:-1;;;;;;;;;;;11785:1:68;-1:-1:-1;;;;;;;;;;;11769:1:68;11766;11759:24;11752:47;11745:70;11730:85;;11912:9;11924:91;11931:4;11937:65;-1:-1:-1;;;;;;;;;;;11924:6:68;:91::i;:::-;12034:4;;11912:103;;-1:-1:-1;11616:433:68;;-1:-1:-1;;;11616:433:68:o;1188:1693:69:-;1278:7;571:3;1409:17;:24;:49;;1401:142;;;;-1:-1:-1;;;1401:142:69;;37854:2:100;1401:142:69;;;37836:21:100;37893:2;37873:18;;;37866:30;;;37932:34;37912:18;;;37905:62;38003:34;37983:18;;;37976:62;-1:-1:-1;;;38054:19:100;;;38047:35;38099:19;;1401:142:69;37652:472:100;1401:142:69;1619:24;;1615:77;;-1:-1:-1;1679:1:69;;1188:1693;-1:-1:-1;1188:1693:69:o;1615:77::-;1770:14;1873:15;2180:17;2198:1;2180:20;;;;;;;;:::i;:::-;;;;;2169:1;2180:20;;;;;2169:32;;;;-1:-1:-1;2284:568:69;2308:17;:24;2304:1;:28;2284:568;;;2480:17;2498:1;2480:20;;;;;;;;:::i;:::-;;;;;2469:1;2480:20;;;;;2469:32;;-1:-1:-1;2665:16:69;;;2657:100;;;;-1:-1:-1;;;2657:100:69;;38331:2:100;2657:100:69;;;38313:21:100;38370:2;38350:18;;;38343:30;38409:34;38389:18;;;38382:62;38480:34;38460:18;;;38453:62;-1:-1:-1;;;38531:19:100;;;38524:38;38579:19;;2657:100:69;38129:475:100;2657:100:69;2824:16;;;;2334:3;;;:::i;:::-;;;2284:568;;;-1:-1:-1;2868:6:69;;1188:1693;-1:-1:-1;;;1188:1693:69:o;12055:874:68:-;12146:14;12172:12;12194:24;;:::i;:::-;12228:20;;:::i;:::-;12269:4;12258:15;;;12341:8;;;:15;;;12425:8;;;:15;;;12509:8;;;:16;;;12535:8;;;:20;;;12565:8;;;:19;;;12673:6;12667:4;12258:15;12571:1;12650:4;12643:5;12639:16;12628:58;12617:69;-1:-1:-1;12617:69:68;12783:48;;;;12756:75;12858:7;12850:46;;;;-1:-1:-1;;;12850:46:68;;38811:2:100;12850:46:68;;;38793:21:100;38850:2;38830:18;;;38823:30;38889:28;38869:18;;;38862:56;38935:18;;12850:46:68;38609:350:100;12850:46:68;-1:-1:-1;12913:9:68;;;-1:-1:-1;;;;;12055:874:68:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:127:100:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:257;218:4;212:11;;;250:17;;-1:-1:-1;;;;;282:34:100;;318:22;;;279:62;276:88;;;344:18;;:::i;:::-;380:4;373:24;146:257;:::o;664:255::-;736:2;730:9;778:6;766:19;;-1:-1:-1;;;;;800:34:100;;836:22;;;797:62;794:88;;;862:18;;:::i;924:253::-;996:2;990:9;1038:4;1026:17;;-1:-1:-1;;;;;1058:34:100;;1094:22;;;1055:62;1052:88;;;1120:18;;:::i;1182:275::-;1253:2;1247:9;1318:2;1299:13;;-1:-1:-1;;1295:27:100;1283:40;;-1:-1:-1;;;;;1338:34:100;;1374:22;;;1335:62;1332:88;;;1400:18;;:::i;:::-;1436:2;1429:22;1182:275;;-1:-1:-1;1182:275:100:o;1462:282::-;1516:5;1564:4;1552:9;1547:3;1543:19;1539:30;1536:50;;;1582:1;1579;1572:12;1536:50;1604:22;;:::i;:::-;1595:31;;1662:9;1649:23;1642:5;1635:38;1733:2;1722:9;1718:18;1705:32;1700:2;1693:5;1689:14;1682:56;1462:282;;;;:::o;1749:484::-;1799:5;1852:3;1845:4;1837:6;1833:17;1829:27;1819:55;;1870:1;1867;1860:12;1819:55;1894:22;;:::i;:::-;1938:3;1976:2;1968:6;1964:15;2002:3;1994:6;1991:15;1988:35;;;2019:1;2016;2009:12;1988:35;2043:6;2058:146;2074:6;2069:3;2066:15;2058:146;;;2142:17;;2130:30;;2189:4;2180:14;;;;2091;2058:146;;;-1:-1:-1;2222:5:100;;1749:484;-1:-1:-1;;;;;1749:484:100:o;2238:320::-;2292:5;2340:4;2328:9;2323:3;2319:19;2315:30;2312:50;;;2358:1;2355;2348:12;2312:50;2380:22;;:::i;:::-;2371:31;;2425:40;2461:3;2450:9;2425:40;:::i;:::-;2418:5;2411:55;2500:51;2547:3;2540:4;2529:9;2525:20;2500:51;:::i;:::-;2493:4;2486:5;2482:16;2475:77;2238:320;;;;:::o;2563:530::-;2727:6;2735;2743;2751;2804:3;2792:9;2783:7;2779:23;2775:33;2772:53;;;2821:1;2818;2811:12;2772:53;2857:9;2844:23;2834:33;;2886:54;2932:7;2927:2;2916:9;2912:18;2886:54;:::i;:::-;2876:64;;2959:54;3005:7;3000:2;2989:9;2985:18;2959:54;:::i;:::-;2949:64;;3032:55;3079:7;3073:3;3062:9;3058:19;3032:55;:::i;:::-;3022:65;;2563:530;;;;;;;:::o;3371:131::-;-1:-1:-1;;;;;3446:31:100;;3436:42;;3426:70;;3492:1;3489;3482:12;3507:247;3566:6;3619:2;3607:9;3598:7;3594:23;3590:32;3587:52;;;3635:1;3632;3625:12;3587:52;3674:9;3661:23;3693:31;3718:5;3693:31;:::i;3759:658::-;3930:2;3982:21;;;4052:13;;3955:18;;;4074:22;;;3901:4;;3930:2;4153:15;;;;4127:2;4112:18;;;3901:4;4196:195;4210:6;4207:1;4204:13;4196:195;;;4275:13;;-1:-1:-1;;;;;4271:39:100;4259:52;;4366:15;;;;4331:12;;;;4307:1;4225:9;4196:195;;;-1:-1:-1;4408:3:100;;3759:658;-1:-1:-1;;;;;;3759:658:100:o;4422:118::-;4508:5;4501:13;4494:21;4487:5;4484:32;4474:60;;4530:1;4527;4520:12;4545:241;4601:6;4654:2;4642:9;4633:7;4629:23;4625:32;4622:52;;;4670:1;4667;4660:12;4622:52;4709:9;4696:23;4728:28;4750:5;4728:28;:::i;5828:163::-;5895:20;;5955:10;5944:22;;5934:33;;5924:61;;5981:1;5978;5971:12;5996:182;6055:4;-1:-1:-1;;;;;6080:6:100;6077:30;6074:56;;;6110:18;;:::i;:::-;-1:-1:-1;6155:1:100;6151:14;6167:4;6147:25;;5996:182::o;6183:665::-;6236:5;6289:3;6282:4;6274:6;6270:17;6266:27;6256:55;;6307:1;6304;6297:12;6256:55;6343:6;6330:20;6369:4;6393:59;6409:42;6448:2;6409:42;:::i;:::-;6393:59;:::i;:::-;6486:15;;;6572:1;6568:10;;;;6556:23;;6552:32;;;6517:12;;;;6596:15;;;6593:35;;;6624:1;6621;6614:12;6593:35;6660:2;6652:6;6648:15;6672:147;6688:6;6683:3;6680:15;6672:147;;;6754:22;6772:3;6754:22;:::i;:::-;6742:35;;6797:12;;;;6705;;6672:147;;;-1:-1:-1;6837:5:100;6183:665;-1:-1:-1;;;;;;6183:665:100:o;6853:688::-;6914:5;6967:3;6960:4;6952:6;6948:17;6944:27;6934:55;;6985:1;6982;6975:12;6934:55;7021:6;7008:20;7047:4;7071:59;7087:42;7126:2;7087:42;:::i;7071:59::-;7164:15;;;7250:1;7246:10;;;;7234:23;;7230:32;;;7195:12;;;;7274:15;;;7271:35;;;7302:1;7299;7292:12;7271:35;7338:2;7330:6;7326:15;7350:162;7366:6;7361:3;7358:15;7350:162;;;7434:35;7465:3;7460;7434:35;:::i;:::-;7422:48;;7490:12;;;;7392:4;7383:14;7350:162;;7546:907;7609:5;7662:3;7655:4;7647:6;7643:17;7639:27;7629:55;;7680:1;7677;7670:12;7629:55;7716:6;7703:20;7742:4;7766:59;7782:42;7821:2;7782:42;:::i;7766:59::-;7859:15;;;7945:1;7941:10;;;;7929:23;;7925:32;;;7890:12;;;;7969:15;;;7966:35;;;7997:1;7994;7987:12;7966:35;8033:2;8025:6;8021:15;8045:379;8061:6;8056:3;8053:15;8045:379;;;8147:3;8134:17;-1:-1:-1;;;;;8170:11:100;8167:35;8164:125;;;8243:1;8272:2;8268;8261:14;8164:125;8314:67;8377:3;8372:2;8358:11;8350:6;8346:24;8342:33;8314:67;:::i;:::-;8302:80;;-1:-1:-1;8402:12:100;;;;8078;;8045:379;;8458:1566;8532:5;8580:6;8568:9;8563:3;8559:19;8555:32;8552:52;;;8600:1;8597;8590:12;8552:52;8622:22;;:::i;:::-;8613:31;;8680:9;8667:23;-1:-1:-1;;;;;8750:2:100;8742:6;8739:14;8736:34;;;8766:1;8763;8756:12;8736:34;8793:56;8845:3;8836:6;8825:9;8821:22;8793:56;:::i;:::-;8786:5;8779:71;8903:2;8892:9;8888:18;8875:32;8859:48;;8932:2;8922:8;8919:16;8916:36;;;8948:1;8945;8938:12;8916:36;8984:66;9046:3;9035:8;9024:9;9020:24;8984:66;:::i;:::-;8979:2;8972:5;8968:14;8961:90;9104:2;9093:9;9089:18;9076:32;9060:48;;9133:2;9123:8;9120:16;9117:36;;;9149:1;9146;9139:12;9117:36;9185:66;9247:3;9236:8;9225:9;9221:24;9185:66;:::i;:::-;9180:2;9173:5;9169:14;9162:90;9284:50;9330:3;9325:2;9314:9;9310:18;9284:50;:::i;:::-;9279:2;9272:5;9268:14;9261:74;9369:51;9416:3;9410;9399:9;9395:19;9369:51;:::i;:::-;9362:4;9355:5;9351:16;9344:77;9474:3;9463:9;9459:19;9446:33;9430:49;;9504:2;9494:8;9491:16;9488:36;;;9520:1;9517;9510:12;9488:36;9558:58;9612:3;9601:8;9590:9;9586:24;9558:58;:::i;:::-;9551:4;9544:5;9540:16;9533:84;9670:3;9659:9;9655:19;9642:33;9626:49;;9700:2;9690:8;9687:16;9684:36;;;9716:1;9713;9706:12;9684:36;9754:58;9808:3;9797:8;9786:9;9782:24;9754:58;:::i;:::-;9747:4;9740:5;9736:16;9729:84;9866:3;9855:9;9851:19;9838:33;9822:49;;9896:2;9886:8;9883:16;9880:36;;;9912:1;9909;9902:12;9880:36;;9949:68;10013:3;10002:8;9991:9;9987:24;9949:68;:::i;:::-;9943:3;9936:5;9932:15;9925:93;;8458:1566;;;;:::o;10029:996::-;10171:6;10179;10187;10195;10203;10256:3;10244:9;10235:7;10231:23;10227:33;10224:53;;;10273:1;10270;10263:12;10224:53;10309:9;10296:23;10286:33;;10370:2;10359:9;10355:18;10342:32;-1:-1:-1;;;;;10434:2:100;10426:6;10423:14;10420:34;;;10450:1;10447;10440:12;10420:34;10488:6;10477:9;10473:22;10463:32;;10533:7;10526:4;10522:2;10518:13;10514:27;10504:55;;10555:1;10552;10545:12;10504:55;10595:2;10582:16;10621:2;10613:6;10610:14;10607:34;;;10637:1;10634;10627:12;10607:34;10682:7;10677:2;10668:6;10664:2;10660:15;10656:24;10653:37;10650:57;;;10703:1;10700;10693:12;10650:57;10734:2;10726:11;;;-1:-1:-1;10756:6:100;-1:-1:-1;10781:37:100;10814:2;10799:18;;10781:37;:::i;:::-;10771:47;;10871:2;10860:9;10856:18;10843:32;10827:48;;10900:2;10890:8;10887:16;10884:36;;;10916:1;10913;10906:12;10884:36;;10939:80;11011:7;11000:8;10989:9;10985:24;10939:80;:::i;:::-;10929:90;;;10029:996;;;;;;;;:::o;11030:467::-;11082:3;11120:5;11114:12;11147:6;11142:3;11135:19;11173:4;11202:2;11197:3;11193:12;11186:19;;11239:2;11232:5;11228:14;11260:1;11270:202;11284:6;11281:1;11278:13;11270:202;;;11349:13;;-1:-1:-1;;;;;11345:46:100;11333:59;;11412:12;;;;11447:15;;;;11306:1;11299:9;11270:202;;;-1:-1:-1;11488:3:100;;11030:467;-1:-1:-1;;;;;11030:467:100:o;11502:645::-;11731:2;11720:9;11713:21;11694:4;11769:6;11763:13;11812:2;11807;11796:9;11792:18;11785:30;11838:62;11895:3;11884:9;11880:19;11866:12;11838:62;:::i;:::-;11824:76;;11949:4;11941:6;11937:17;11931:24;12023:2;12019:7;12007:9;11999:6;11995:22;11991:36;11986:2;11975:9;11971:18;11964:64;12045:51;12089:6;12073:14;12045:51;:::i;:::-;12037:59;;;;12134:6;12127:4;12116:9;12112:20;12105:36;11502:645;;;;;:::o;12152:406::-;12216:5;-1:-1:-1;;;;;12242:6:100;12239:30;12236:56;;;12272:18;;:::i;:::-;12310:57;12355:2;12334:15;;-1:-1:-1;;12330:29:100;12361:4;12326:40;12310:57;:::i;:::-;12301:66;;12390:6;12383:5;12376:21;12430:3;12421:6;12416:3;12412:16;12409:25;12406:45;;;12447:1;12444;12437:12;12406:45;12496:6;12491:3;12484:4;12477:5;12473:16;12460:43;12550:1;12543:4;12534:6;12527:5;12523:18;12519:29;12512:40;12152:406;;;;;:::o;12563:1017::-;12675:6;12683;12736:2;12724:9;12715:7;12711:23;12707:32;12704:52;;;12752:1;12749;12742:12;12704:52;12791:9;12778:23;12810:31;12835:5;12810:31;:::i;:::-;12860:5;-1:-1:-1;12916:2:100;12901:18;;12888:32;-1:-1:-1;;;;;12969:14:100;;;12966:34;;;12996:1;12993;12986:12;12966:34;13019:22;;;;13075:4;13057:16;;;13053:27;13050:47;;;13093:1;13090;13083:12;13050:47;13121:22;;:::i;:::-;13181:2;13168:16;13209:2;13199:8;13196:16;13193:36;;;13225:1;13222;13215:12;13193:36;13248:17;;;-1:-1:-1;13296:4:100;13288:13;;13284:27;-1:-1:-1;13274:55:100;;13325:1;13322;13315:12;13274:55;13354:73;13419:7;13414:2;13401:16;13396:2;13392;13388:11;13354:73;:::i;:::-;13345:7;13338:90;13483:2;13479;13475:11;13462:25;13457:2;13448:7;13444:16;13437:51;13543:2;13539;13535:11;13522:25;13517:2;13508:7;13504:16;13497:51;13567:7;13557:17;;;;;12563:1017;;;;;:::o;13585:450::-;13654:6;13707:2;13695:9;13686:7;13682:23;13678:32;13675:52;;;13723:1;13720;13713:12;13675:52;13763:9;13750:23;-1:-1:-1;;;;;13788:6:100;13785:30;13782:50;;;13828:1;13825;13818:12;13782:50;13851:22;;13904:4;13896:13;;13892:27;-1:-1:-1;13882:55:100;;13933:1;13930;13923:12;13882:55;13956:73;14021:7;14016:2;14003:16;13998:2;13994;13990:11;13956:73;:::i;:::-;13946:83;13585:450;-1:-1:-1;;;;13585:450:100:o;14466:652::-;14589:6;14597;14650:2;14638:9;14629:7;14625:23;14621:32;14618:52;;;14666:1;14663;14656:12;14618:52;14706:9;14693:23;-1:-1:-1;;;;;14776:2:100;14768:6;14765:14;14762:34;;;14792:1;14789;14782:12;14762:34;14830:6;14819:9;14815:22;14805:32;;14875:7;14868:4;14864:2;14860:13;14856:27;14846:55;;14897:1;14894;14887:12;14846:55;14937:2;14924:16;14963:2;14955:6;14952:14;14949:34;;;14979:1;14976;14969:12;14949:34;15032:7;15027:2;15017:6;15014:1;15010:14;15006:2;15002:23;14998:32;14995:45;14992:65;;;15053:1;15050;15043:12;14992:65;15084:2;15076:11;;;;;15106:6;;-1:-1:-1;14466:652:100;;-1:-1:-1;;;;14466:652:100:o;15123:127::-;15184:10;15179:3;15175:20;15172:1;15165:31;15215:4;15212:1;15205:15;15239:4;15236:1;15229:15;16100:209;16132:1;16158;16148:132;;16202:10;16197:3;16193:20;16190:1;16183:31;16237:4;16234:1;16227:15;16265:4;16262:1;16255:15;16148:132;-1:-1:-1;16294:9:100;;16100:209::o;16314:184::-;16384:6;16437:2;16425:9;16416:7;16412:23;16408:32;16405:52;;;16453:1;16450;16443:12;16405:52;-1:-1:-1;16476:16:100;;16314:184;-1:-1:-1;16314:184:100:o;16685:290::-;16755:6;16808:2;16796:9;16787:7;16783:23;16779:32;16776:52;;;16824:1;16821;16814:12;16776:52;16850:16;;-1:-1:-1;;;;;16895:31:100;;16885:42;;16875:70;;16941:1;16938;16931:12;16980:273;17048:6;17101:2;17089:9;17080:7;17076:23;17072:32;17069:52;;;17117:1;17114;17107:12;17069:52;17149:9;17143:16;17199:4;17192:5;17188:16;17181:5;17178:27;17168:55;;17219:1;17216;17209:12;17636:127;17697:10;17692:3;17688:20;17685:1;17678:31;17728:4;17725:1;17718:15;17752:4;17749:1;17742:15;17768:128;17808:3;17839:1;17835:6;17832:1;17829:13;17826:39;;;17845:18;;:::i;:::-;-1:-1:-1;17881:9:100;;17768:128::o;17901:135::-;17940:3;-1:-1:-1;;17961:17:100;;17958:43;;;17981:18;;:::i;:::-;-1:-1:-1;18028:1:100;18017:13;;17901:135::o;18301:137::-;-1:-1:-1;;;;;18379:5:100;18375:38;18368:5;18365:49;18355:77;;18428:1;18425;18418:12;18443:493;18546:6;18599:2;18587:9;18578:7;18574:23;18570:32;18567:52;;;18615:1;18612;18605:12;18567:52;18641:22;;:::i;:::-;18693:9;18687:16;18712:33;18737:7;18712:33;:::i;:::-;18754:22;;18821:2;18806:18;;18800:25;18834:32;18800:25;18834:32;:::i;:::-;18893:2;18882:14;;18875:31;18886:5;18443:493;-1:-1:-1;;;18443:493:100:o;18941:251::-;19011:6;19064:2;19052:9;19043:7;19039:23;19035:32;19032:52;;;19080:1;19077;19070:12;19032:52;19112:9;19106:16;19131:31;19156:5;19131:31;:::i;21502:125::-;21542:4;21570:1;21567;21564:8;21561:34;;;21575:18;;:::i;:::-;-1:-1:-1;21612:9:100;;21502:125::o;23459:294::-;23529:6;23582:2;23570:9;23561:7;23557:23;23553:32;23550:52;;;23598:1;23595;23588:12;23550:52;23624:16;;-1:-1:-1;;23669:35:100;;23659:46;;23649:74;;23719:1;23716;23709:12;24304:249;24373:6;24426:2;24414:9;24405:7;24401:23;24397:32;24394:52;;;24442:1;24439;24432:12;24394:52;24474:9;24468:16;24493:30;24517:5;24493:30;:::i;25005:237::-;25044:4;-1:-1:-1;;;;;25149:10:100;;;;25119;;25171:12;;;25168:38;;;25186:18;;:::i;:::-;25223:13;;25005:237;-1:-1:-1;;;25005:237:100:o;26149:644::-;26397:10;26392:3;26388:20;26379:6;26374:3;26370:16;26366:43;26361:3;26354:56;26336:3;26441:1;26436:3;26432:11;26472:6;26466:13;26521:4;26560:2;26552:6;26548:15;26581:1;26591:175;26605:6;26602:1;26599:13;26591:175;;;26668:13;;26654:28;;26704:14;;;;26741:15;;;;26627:1;26620:9;26591:175;;;-1:-1:-1;26782:5:100;;26149:644;-1:-1:-1;;;;;;;26149:644:100:o;26798:486::-;27000:2;26982:21;;;27039:2;27019:18;;;27012:30;27078:34;27073:2;27058:18;;27051:62;27149:34;27144:2;27129:18;;27122:62;-1:-1:-1;;;27215:3:100;27200:19;;27193:49;27274:3;27259:19;;26798:486::o;27289:471::-;27330:3;27368:5;27362:12;27395:6;27390:3;27383:19;27420:1;27430:162;27444:6;27441:1;27438:13;27430:162;;;27506:4;27562:13;;;27558:22;;27552:29;27534:11;;;27530:20;;27523:59;27459:12;27430:162;;;27610:6;27607:1;27604:13;27601:87;;;27676:1;27669:4;27660:6;27655:3;27651:16;27647:27;27640:38;27601:87;-1:-1:-1;27742:2:100;27721:15;-1:-1:-1;;27717:29:100;27708:39;;;;27749:4;27704:50;;27289:471;-1:-1:-1;;27289:471:100:o;27765:624::-;28039:1;28035;28030:3;28026:11;28022:19;28014:6;28010:32;27999:9;27992:51;28079:2;28074;28063:9;28059:18;28052:30;27973:4;28117:6;28111:13;28160:4;28155:2;28144:9;28140:18;28133:32;28188:51;28234:3;28223:9;28219:19;28205:12;28188:51;:::i;:::-;28174:65;;28295:2;28287:6;28283:15;28277:22;28270:4;28259:9;28255:20;28248:52;28355:2;28347:6;28343:15;28337:22;28331:3;28320:9;28316:19;28309:51;28377:6;28369:14;;;27765:624;;;;;:::o;28394:219::-;28543:2;28532:9;28525:21;28506:4;28563:44;28603:2;28592:9;28588:18;28580:6;28563:44;:::i;:::-;28555:52;28394:219;-1:-1:-1;;;28394:219:100:o;30124:335::-;30227:4;30285:11;30272:25;30379:3;30375:8;30364;30348:14;30344:29;30340:44;30320:18;30316:69;30306:97;;30399:1;30396;30389:12;30306:97;30420:33;;;;;30124:335;-1:-1:-1;;30124:335:100:o;30464:142::-;30540:20;;30569:31;30540:20;30569:31;:::i;31258:245::-;31325:6;31378:2;31366:9;31357:7;31353:23;31349:32;31346:52;;;31394:1;31391;31384:12;31346:52;31426:9;31420:16;31445:28;31467:5;31445:28;:::i;32096:756::-;32226:6;32221:3;32214:19;32196:3;32252:4;32281:2;32276:3;32272:12;32265:19;;32307:5;32330:1;32340:487;32354:6;32351:1;32348:13;32340:487;;;32431:6;32418:20;32451:33;32476:7;32451:33;:::i;:::-;-1:-1:-1;;;;;32509:33:100;32497:46;;32584:15;;;32571:29;32613:32;32571:29;32613:32;:::i;:::-;-1:-1:-1;;;;;32679:40:100;32665:12;;;32658:62;32743:4;32767:12;;;;32802:15;;;;;32376:1;32369:9;32340:487;;32857:2181;33110:2;33162:21;;;33135:18;;;33218:22;;;33081:4;;33259:2;33277:18;;;33341:1;33337:14;;;33322:30;;33318:39;;33380:6;33081:4;33414:1595;33428:6;33425:1;33422:13;33414:1595;;;33493:22;;;-1:-1:-1;;33489:36:100;33477:49;;33565:20;;33640:14;33636:27;;;-1:-1:-1;;33632:42:100;33608:67;;33598:95;;33689:1;33686;33679:12;33598:95;33719:31;;33773:4;33818:19;;33894:14;33890:26;;;-1:-1:-1;;33886:40:100;33860:67;;33850:95;;33941:1;33938;33931:12;33850:95;33973:32;;34032:21;;-1:-1:-1;;;;;34069:30:100;;34066:50;;;34112:1;34109;34102:12;34066:50;34170:6;34167:1;34163:14;34147;34143:35;34136:5;34132:47;34129:67;;;34192:1;34189;34182:12;34129:67;34224:2;34216:6;34209:18;34254:110;34360:2;34352:6;34348:15;34340:6;34335:2;34326:7;34322:16;34254:110;:::i;:::-;34240:124;;;;34397:42;34435:2;34428:5;34424:14;34397:42;:::i;:::-;-1:-1:-1;;;;;4874:31:100;34502:15;;;4862:44;34568:14;;;34555:28;34538:15;;;34531:53;34607:4;34646:33;34664:14;;;34646:33;:::i;:::-;22141:10;22130:22;34726:15;;;22118:35;34765:4;34804:33;34822:14;;;34804:33;:::i;:::-;22141:10;22130:22;34884:15;;22118:35;;;;-1:-1:-1;34987:12:100;;;;34952:15;;;;33450:1;33443:9;33414:1595;;;-1:-1:-1;35026:6:100;;32857:2181;-1:-1:-1;;;;;;;;32857:2181:100:o;35727:168::-;35767:7;35833:1;35829;35825:6;35821:14;35818:1;35815:21;35810:1;35803:9;35796:17;35792:45;35789:71;;;35840:18;;:::i;:::-;-1:-1:-1;35880:9:100;;35727:168::o;36693:197::-;36731:3;36759:6;36800:2;36793:5;36789:14;36827:2;36818:7;36815:15;36812:41;;;36833:18;;:::i;:::-;36882:1;36869:15;;36693:197;-1:-1:-1;;;36693:197:100:o","linkReferences":{},"immutableReferences":{"13640":[{"start":539,"length":32},{"start":6820,"length":32},{"start":7032,"length":32},{"start":7159,"length":32}],"13643":[{"start":9048,"length":32},{"start":9236,"length":32},{"start":9472,"length":32}],"13646":[{"start":1312,"length":32},{"start":1455,"length":32},{"start":1583,"length":32},{"start":6736,"length":32},{"start":6940,"length":32},{"start":7494,"length":32},{"start":7910,"length":32}],"13649":[{"start":1781,"length":32},{"start":2128,"length":32},{"start":2279,"length":32},{"start":7688,"length":32},{"start":8075,"length":32},{"start":8234,"length":32}],"8736":[{"start":580,"length":32},{"start":2528,"length":32},{"start":3789,"length":32},{"start":4197,"length":32},{"start":4767,"length":32}],"8739":[{"start":503,"length":32},{"start":5562,"length":32},{"start":6012,"length":32}],"8742":[{"start":440,"length":32},{"start":5092,"length":32}],"8745":[{"start":782,"length":32},{"start":4610,"length":32}]}},"methodIdentifiers":{"avsDirectory()":"6b3aa72e","blsApkRegistry()":"5df45946","checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))":"6efb4636","createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])":"fce36c7d","delegation()":"df5cf723","deregisterOperatorFromAVS(address)":"a364f4da","getOperatorRestakedStrategies(address)":"33cfb7b7","getRestakeableStrategies()":"e481af9d","initialize(address)":"c4d66de8","owner()":"8da5cb5b","registerOperatorToAVS(address,(bytes,bytes32,uint256))":"9926ee7d","registryCoordinator()":"6d14a987","renounceOwnership()":"715018a6","rewardsInitiator()":"fc299dee","setRewardsInitiator(address)":"3bc28c8c","setStaleStakesForbidden(bool)":"416c7e5e","stakeRegistry()":"68304835","staleStakesForbidden()":"b98d0908","transferOwnership(address)":"f2fde38b","trySignatureAndApkVerification(bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256))":"171f1d5b","updateAVSMetadataURI(string)":"a98fb355"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IRegistryCoordinator\",\"name\":\"_registryCoordinator\",\"type\":\"address\"},{\"internalType\":\"contract IAVSDirectory\",\"name\":\"_avsDirectory\",\"type\":\"address\"},{\"internalType\":\"contract IRewardsCoordinator\",\"name\":\"_rewardsCoordinator\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prevRewardsInitiator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newRewardsInitiator\",\"type\":\"address\"}],\"name\":\"RewardsInitiatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"StaleStakesForbiddenUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"avsDirectory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blsApkRegistry\",\"outputs\":[{\"internalType\":\"contract IBLSApkRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"},{\"internalType\":\"uint32\",\"name\":\"referenceBlockNumber\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"uint32[]\",\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"struct BN254.G1Point[]\",\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"struct BN254.G1Point[]\",\"name\":\"quorumApks\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"X\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"Y\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct BN254.G2Point\",\"name\":\"apkG2\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"struct BN254.G1Point\",\"name\":\"sigma\",\"type\":\"tuple\"},{\"internalType\":\"uint32[]\",\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\"},{\"internalType\":\"uint32[]\",\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\"},{\"internalType\":\"uint32[][]\",\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\"}],\"internalType\":\"struct IBLSSignatureChecker.NonSignerStakesAndSignature\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"checkSignatures\",\"outputs\":[{\"components\":[{\"internalType\":\"uint96[]\",\"name\":\"signedStakeForQuorum\",\"type\":\"uint96[]\"},{\"internalType\":\"uint96[]\",\"name\":\"totalStakeForQuorum\",\"type\":\"uint96[]\"}],\"internalType\":\"struct IBLSSignatureChecker.QuorumStakeTotals\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"multiplier\",\"type\":\"uint96\"}],\"internalType\":\"struct IRewardsCoordinator.StrategyAndMultiplier[]\",\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"startTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"}],\"internalType\":\"struct IRewardsCoordinator.RewardsSubmission[]\",\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\"}],\"name\":\"createAVSRewardsSubmission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegation\",\"outputs\":[{\"internalType\":\"contract IDelegationManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"deregisterOperatorFromAVS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRestakedStrategies\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRestakeableStrategies\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_initialOwner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithSaltAndExpiry\",\"name\":\"operatorSignature\",\"type\":\"tuple\"}],\"name\":\"registerOperatorToAVS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registryCoordinator\",\"outputs\":[{\"internalType\":\"contract IRegistryCoordinator\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardsInitiator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newRewardsInitiator\",\"type\":\"address\"}],\"name\":\"setRewardsInitiator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"setStaleStakesForbidden\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakeRegistry\",\"outputs\":[{\"internalType\":\"contract IStakeRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"staleStakesForbidden\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"struct BN254.G1Point\",\"name\":\"apk\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"X\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"Y\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct BN254.G2Point\",\"name\":\"apkG2\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"struct BN254.G1Point\",\"name\":\"sigma\",\"type\":\"tuple\"}],\"name\":\"trySignatureAndApkVerification\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"pairingSuccessful\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"siganatureIsValid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_metadataURI\",\"type\":\"string\"}],\"name\":\"updateAVSMetadataURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))\":{\"details\":\"Before signature verification, the function verifies operator stake information. This includes ensuring that the provided `referenceBlockNumber` is correct, i.e., ensure that the stake returned from the specified block number is recent enough and that the stake is either the most recent update for the total stake (of the operator) or latest before the referenceBlockNumber.NOTE: Be careful to ensure `msgHash` is collision-resistant! This method does not hash `msgHash` in any way, so if an attacker is able to pass in an arbitrary value, they may be able to tamper with signature verification.\",\"params\":{\"msgHash\":\"is the hash being signed\",\"params\":\"is the struct containing information on nonsigners, stakes, quorum apks, and the aggregate signature\",\"quorumNumbers\":\"is the bytes array of quorum numbers that are being signed for\",\"referenceBlockNumber\":\"is the block number at which the stake information is being verified\"},\"returns\":{\"_0\":\"quorumStakeTotals is the struct containing the total and signed stake for each quorum\",\"_1\":\"signatoryRecordHash is the hash of the signatory record, which is used for fraud proofs\"}},\"createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])\":{\"details\":\"Only callabe by the permissioned rewardsInitiator addressThe duration of the `rewardsSubmission` cannot exceed `MAX_REWARDS_DURATION`The tokens are sent to the `RewardsCoordinator` contractStrategies must be in ascending order of addresses to check for duplicatesThis function will revert if the `rewardsSubmission` is malformed, e.g. if the `strategies` and `weights` arrays are of non-equal lengths\",\"params\":{\"rewardsSubmissions\":\"The rewards submissions being created\"}},\"deregisterOperatorFromAVS(address)\":{\"params\":{\"operator\":\"The address of the operator to deregister.\"}},\"getOperatorRestakedStrategies(address)\":{\"details\":\"This function is intended to be called off-chainNo guarantee is made on whether the operator has shares for a strategy in a quorum or uniqueness of each element in the returned array. The off-chain service should do that validation separately\",\"params\":{\"operator\":\"The address of the operator to get restaked strategies for\"}},\"getRestakeableStrategies()\":{\"details\":\"This function is intended to be called off-chainNo guarantee is made on uniqueness of each element in the returned array. The off-chain service should do that validation separately\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"registerOperatorToAVS(address,(bytes,bytes32,uint256))\":{\"params\":{\"operator\":\"The address of the operator to register.\",\"operatorSignature\":\"The signature, salt, and expiry of the operator's signature.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setRewardsInitiator(address)\":{\"details\":\"only callable by the owner\",\"params\":{\"newRewardsInitiator\":\"The new rewards initiator address\"}},\"setStaleStakesForbidden(bool)\":{\"params\":{\"value\":\"to toggle staleStakesForbidden\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"trySignatureAndApkVerification(bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256))\":{\"params\":{\"apk\":\"is the claimed G1 public key\",\"apkG2\":\"is provided G2 public key\",\"msgHash\":\"is the hash being signed\",\"sigma\":\"is the G1 point signature\"},\"returns\":{\"pairingSuccessful\":\"is true if the pairing precompile call was successful\",\"siganatureIsValid\":\"is true if the signature is valid\"}},\"updateAVSMetadataURI(string)\":{\"details\":\"only callable by the owner\",\"params\":{\"_metadataURI\":\"is the metadata URI for the AVS\"}}},\"version\":1},\"userdoc\":{\"events\":{\"StaleStakesForbiddenUpdate(bool)\":{\"notice\":\"Emitted when `staleStakesForbiddenUpdate` is set\"}},\"kind\":\"user\",\"methods\":{\"avsDirectory()\":{\"notice\":\"Returns the EigenLayer AVSDirectory contract.\"},\"checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))\":{\"notice\":\"This function is called by disperser when it has aggregated all the signatures of the operators that are part of the quorum for a particular taskNumber and is asserting them into onchain. The function checks that the claim for aggregated signatures are valid. The thesis of this procedure entails: - getting the aggregated pubkey of all registered nodes at the time of pre-commit by the disperser (represented by apk in the parameters), - subtracting the pubkeys of all the signers not in the quorum (nonSignerPubkeys) and storing the output in apk to get aggregated pubkey of all operators that are part of quorum. - use this aggregated pubkey to verify the aggregated signature under BLS scheme.\"},\"createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])\":{\"notice\":\"Creates a new rewards submission to the EigenLayer RewardsCoordinator contract, to be split amongst the set of stakers delegated to operators who are registered to this `avs`\"},\"deregisterOperatorFromAVS(address)\":{\"notice\":\"Forwards a call to EigenLayer's AVSDirectory contract to confirm operator deregistration from the AVS\"},\"getOperatorRestakedStrategies(address)\":{\"notice\":\"Returns the list of strategies that the operator has potentially restaked on the AVS\"},\"getRestakeableStrategies()\":{\"notice\":\"Returns the list of strategies that the AVS supports for restaking\"},\"registerOperatorToAVS(address,(bytes,bytes32,uint256))\":{\"notice\":\"Forwards a call to EigenLayer's AVSDirectory contract to confirm operator registration with the AVS\"},\"rewardsInitiator()\":{\"notice\":\"The address of the entity that can initiate rewards\"},\"setRewardsInitiator(address)\":{\"notice\":\"Sets the rewards initiator address\"},\"setStaleStakesForbidden(bool)\":{\"notice\":\"/** RegistryCoordinator owner can either enforce or not that operator stakes are staler than the delegation.minWithdrawalDelayBlocks() window.\"},\"staleStakesForbidden()\":{\"notice\":\"If true, check the staleness of the operator stakes and that its within the delegation withdrawalDelayBlocks window.\"},\"trySignatureAndApkVerification(bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256))\":{\"notice\":\"trySignatureAndApkVerification verifies a BLS aggregate signature and the veracity of a calculated G1 Public key\"},\"updateAVSMetadataURI(string)\":{\"notice\":\"Updates the metadata URI for the AVS\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MockAvsServiceManager.sol\":\"MockAvsServiceManager\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-middleware/lib/openzeppelin-contracts/\",\":ds-test/=lib/eigenlayer-middleware/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/eigenlayer-middleware/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/contracts/\"]},\"sources\":{\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol\":{\"keccak256\":\"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa\",\"dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0xab76a9f4eff865cbb689f627cf98263488765519d7a4ec5ffbcb0ca4972842f9\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ff57ce18e8350bf39f190645db0988bc0f1279f1872150a114a1b520c38a2914\",\"dweb:/ipfs/QmSsUXkNUqYuJgGRumHTSs9rAaboGjecotcM4xHrdBYWaZ\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc\",\"dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8\",\"dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324\",\"dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IRewardsCoordinator.sol\":{\"keccak256\":\"0xeab6f1140a90eb7f107d95bae1e8b2ecfbfe36282d62c9df69e6a564c2c59771\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://785cd2777cdcab3b827b5eef2a4dae02c56db07252fdcefd8dd1016be034dc71\",\"dweb:/ipfs/QmNyDFchTuMeiVoxNEfQw96JVq7DfkohGz1txKXe7HyNbq\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232\",\"dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0x68bf02a443fc8b2f612eba3d39bfefa5f61f78b549f111cdecec5f2c58236a52\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://76bc6875ce74128b861fdac5fd1c0c72f3cc9bacf67fa4a73721b95fb23959ef\",\"dweb:/ipfs/QmPix4WJmf9fXyMZxfgwXEHBcg7V4NAbRqs4HUf5YrSJcM\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7\",\"dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f\",\"dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x9095fc29b96d102b10c02d44b3a6fbfa25593ef6ae4a810363ab885b9e6b0f71\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0945132d482d56278edddb1d32209903c4d3839c87ba4317aadd97dc23610d0f\",\"dweb:/ipfs/QmVuM2aLRHxitx4rPx3GTYTBCVNcjYn6sHBRr1biUjLBP5\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-middleware/src/BLSSignatureChecker.sol\":{\"keccak256\":\"0x0a2b3c95fb4de28406dcb0bab74538bce57606224aab18a30dd338747628b6bd\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://82fbb6423fb54d8ca7f4099ccb15b77e23cb009b31605b5113dd6851a960d803\",\"dweb:/ipfs/QmcEsEcFyNCwArMZGiyDcBeuLxAMswhnhNY2zGX5Zh7xdJ\"]},\"lib/eigenlayer-middleware/src/ServiceManagerBase.sol\":{\"keccak256\":\"0x7e32ef76daf32e5eb5a93cecf204223e64243f42afe70c7ca71ad3db3925b9c4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://19c10aa22f2e86e27e946b65c434e541caa6af06fcdde46c3b5e9b42890bd221\",\"dweb:/ipfs/QmPb5qDRdbJTniKSqsbjVhbtwdb72G9hWPYcHtVvj1zBxg\"]},\"lib/eigenlayer-middleware/src/ServiceManagerBaseStorage.sol\":{\"keccak256\":\"0xa544114dbf6d973a815f997a2ac9237c531c40b08c91d3a65a23b152ed621e1e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4cf69f9be7d3f3c4184b61b267280a829040973633ea9d95e2ec0dbf70f40a2e\",\"dweb:/ipfs/QmT2HeCJWBLX2p4KAWnyU318MMx9USb2brqCKq1vn2pXpR\"]},\"lib/eigenlayer-middleware/src/interfaces/IBLSApkRegistry.sol\":{\"keccak256\":\"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354\",\"dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp\"]},\"lib/eigenlayer-middleware/src/interfaces/IBLSSignatureChecker.sol\":{\"keccak256\":\"0x91c233280d6707404c65b7989c3fec6997c40cb3ab7d6c2e3f021102a0e2750d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f2033dbb94acab37f3505734d8aad1481fbceedaa4742871f07506243a195aeb\",\"dweb:/ipfs/QmXWJNkhUxfMhGfuFWw4UAU6nvw9qP9aswisQJLnZUUCzs\"]},\"lib/eigenlayer-middleware/src/interfaces/IIndexRegistry.sol\":{\"keccak256\":\"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d\",\"dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F\"]},\"lib/eigenlayer-middleware/src/interfaces/IRegistry.sol\":{\"keccak256\":\"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25\",\"dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY\"]},\"lib/eigenlayer-middleware/src/interfaces/IRegistryCoordinator.sol\":{\"keccak256\":\"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d\",\"dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD\"]},\"lib/eigenlayer-middleware/src/interfaces/IServiceManager.sol\":{\"keccak256\":\"0x7602cfb4397a114a0ed60e70e8e1d729fdcf406b585838181b3cb3ffa6ac9a9a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b718fa016a13a2a5ce298bc5ea7495cc70cf9c358211c75595d5c9dde9a6cc0f\",\"dweb:/ipfs/QmQNrVmU7P7pRqGBJuTQDkjf3wMDY2kJm7zXdtQwsQTbzY\"]},\"lib/eigenlayer-middleware/src/interfaces/IServiceManagerUI.sol\":{\"keccak256\":\"0x365761699b4a5b7360ee6c75f12606eefc4b0394754c8b8e1e1eefec0cba7ffb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ac14ada180b66cbbc5f9de0d6b4bb87b5946d2a9569ae88f2f62aaca47e879a8\",\"dweb:/ipfs/QmcN9xKYF24naNWc6cYah9suz5gJSYE9nPj9eZFWnP35VX\"]},\"lib/eigenlayer-middleware/src/interfaces/IStakeRegistry.sol\":{\"keccak256\":\"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97\",\"dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B\"]},\"lib/eigenlayer-middleware/src/libraries/BN254.sol\":{\"keccak256\":\"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae\",\"dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki\"]},\"lib/eigenlayer-middleware/src/libraries/BitmapUtils.sol\":{\"keccak256\":\"0x44315ac460be30a6b18fd4df4d1b8afb46653bf4dc06ca9f93c32353fd0605c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da14f2ead3a375b02afd09d4a02edddf7b63a88945746b96789b2473184fdb04\",\"dweb:/ipfs/QmRqcjxa2Vv2MrLdPeAwsktXdWTirapEDsRbJCyYRtKT6g\"]},\"src/MockAvsServiceManager.sol\":{\"keccak256\":\"0xed8438f541695173e7a9e28cd8f727dab9c46e62fd88583a76d703f9865cc68f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://55adbd24e9a62fa7a2b63738af766d92fb462ab252f8c9c86cb2c862b3b08cbf\",\"dweb:/ipfs/QmZmi1LP4CGa3iQcCvGZ2TaLobAmFMZnRtgt27kTTAUJfn\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IRegistryCoordinator","name":"_registryCoordinator","type":"address"},{"internalType":"contract IAVSDirectory","name":"_avsDirectory","type":"address"},{"internalType":"contract IRewardsCoordinator","name":"_rewardsCoordinator","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"prevRewardsInitiator","type":"address","indexed":false},{"internalType":"address","name":"newRewardsInitiator","type":"address","indexed":false}],"type":"event","name":"RewardsInitiatorUpdated","anonymous":false},{"inputs":[{"internalType":"bool","name":"value","type":"bool","indexed":false}],"type":"event","name":"StaleStakesForbiddenUpdate","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"avsDirectory","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blsApkRegistry","outputs":[{"internalType":"contract IBLSApkRegistry","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"msgHash","type":"bytes32"},{"internalType":"bytes","name":"quorumNumbers","type":"bytes"},{"internalType":"uint32","name":"referenceBlockNumber","type":"uint32"},{"internalType":"struct IBLSSignatureChecker.NonSignerStakesAndSignature","name":"params","type":"tuple","components":[{"internalType":"uint32[]","name":"nonSignerQuorumBitmapIndices","type":"uint32[]"},{"internalType":"struct BN254.G1Point[]","name":"nonSignerPubkeys","type":"tuple[]","components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}]},{"internalType":"struct BN254.G1Point[]","name":"quorumApks","type":"tuple[]","components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}]},{"internalType":"struct BN254.G2Point","name":"apkG2","type":"tuple","components":[{"internalType":"uint256[2]","name":"X","type":"uint256[2]"},{"internalType":"uint256[2]","name":"Y","type":"uint256[2]"}]},{"internalType":"struct BN254.G1Point","name":"sigma","type":"tuple","components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}]},{"internalType":"uint32[]","name":"quorumApkIndices","type":"uint32[]"},{"internalType":"uint32[]","name":"totalStakeIndices","type":"uint32[]"},{"internalType":"uint32[][]","name":"nonSignerStakeIndices","type":"uint32[][]"}]}],"stateMutability":"view","type":"function","name":"checkSignatures","outputs":[{"internalType":"struct IBLSSignatureChecker.QuorumStakeTotals","name":"","type":"tuple","components":[{"internalType":"uint96[]","name":"signedStakeForQuorum","type":"uint96[]"},{"internalType":"uint96[]","name":"totalStakeForQuorum","type":"uint96[]"}]},{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"struct IRewardsCoordinator.RewardsSubmission[]","name":"rewardsSubmissions","type":"tuple[]","components":[{"internalType":"struct IRewardsCoordinator.StrategyAndMultiplier[]","name":"strategiesAndMultipliers","type":"tuple[]","components":[{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint96","name":"multiplier","type":"uint96"}]},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint32","name":"startTimestamp","type":"uint32"},{"internalType":"uint32","name":"duration","type":"uint32"}]}],"stateMutability":"nonpayable","type":"function","name":"createAVSRewardsSubmission"},{"inputs":[],"stateMutability":"view","type":"function","name":"delegation","outputs":[{"internalType":"contract IDelegationManager","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deregisterOperatorFromAVS"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRestakedStrategies","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getRestakeableStrategies","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"_initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","name":"operatorSignature","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"registerOperatorToAVS"},{"inputs":[],"stateMutability":"view","type":"function","name":"registryCoordinator","outputs":[{"internalType":"contract IRegistryCoordinator","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardsInitiator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"newRewardsInitiator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRewardsInitiator"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setStaleStakesForbidden"},{"inputs":[],"stateMutability":"view","type":"function","name":"stakeRegistry","outputs":[{"internalType":"contract IStakeRegistry","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"staleStakesForbidden","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"bytes32","name":"msgHash","type":"bytes32"},{"internalType":"struct BN254.G1Point","name":"apk","type":"tuple","components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}]},{"internalType":"struct BN254.G2Point","name":"apkG2","type":"tuple","components":[{"internalType":"uint256[2]","name":"X","type":"uint256[2]"},{"internalType":"uint256[2]","name":"Y","type":"uint256[2]"}]},{"internalType":"struct BN254.G1Point","name":"sigma","type":"tuple","components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}]}],"stateMutability":"view","type":"function","name":"trySignatureAndApkVerification","outputs":[{"internalType":"bool","name":"pairingSuccessful","type":"bool"},{"internalType":"bool","name":"siganatureIsValid","type":"bool"}]},{"inputs":[{"internalType":"string","name":"_metadataURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateAVSMetadataURI"}],"devdoc":{"kind":"dev","methods":{"checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))":{"details":"Before signature verification, the function verifies operator stake information. This includes ensuring that the provided `referenceBlockNumber` is correct, i.e., ensure that the stake returned from the specified block number is recent enough and that the stake is either the most recent update for the total stake (of the operator) or latest before the referenceBlockNumber.NOTE: Be careful to ensure `msgHash` is collision-resistant! This method does not hash `msgHash` in any way, so if an attacker is able to pass in an arbitrary value, they may be able to tamper with signature verification.","params":{"msgHash":"is the hash being signed","params":"is the struct containing information on nonsigners, stakes, quorum apks, and the aggregate signature","quorumNumbers":"is the bytes array of quorum numbers that are being signed for","referenceBlockNumber":"is the block number at which the stake information is being verified"},"returns":{"_0":"quorumStakeTotals is the struct containing the total and signed stake for each quorum","_1":"signatoryRecordHash is the hash of the signatory record, which is used for fraud proofs"}},"createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])":{"details":"Only callabe by the permissioned rewardsInitiator addressThe duration of the `rewardsSubmission` cannot exceed `MAX_REWARDS_DURATION`The tokens are sent to the `RewardsCoordinator` contractStrategies must be in ascending order of addresses to check for duplicatesThis function will revert if the `rewardsSubmission` is malformed, e.g. if the `strategies` and `weights` arrays are of non-equal lengths","params":{"rewardsSubmissions":"The rewards submissions being created"}},"deregisterOperatorFromAVS(address)":{"params":{"operator":"The address of the operator to deregister."}},"getOperatorRestakedStrategies(address)":{"details":"This function is intended to be called off-chainNo guarantee is made on whether the operator has shares for a strategy in a quorum or uniqueness of each element in the returned array. The off-chain service should do that validation separately","params":{"operator":"The address of the operator to get restaked strategies for"}},"getRestakeableStrategies()":{"details":"This function is intended to be called off-chainNo guarantee is made on uniqueness of each element in the returned array. The off-chain service should do that validation separately"},"owner()":{"details":"Returns the address of the current owner."},"registerOperatorToAVS(address,(bytes,bytes32,uint256))":{"params":{"operator":"The address of the operator to register.","operatorSignature":"The signature, salt, and expiry of the operator's signature."}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"setRewardsInitiator(address)":{"details":"only callable by the owner","params":{"newRewardsInitiator":"The new rewards initiator address"}},"setStaleStakesForbidden(bool)":{"params":{"value":"to toggle staleStakesForbidden"}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"trySignatureAndApkVerification(bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256))":{"params":{"apk":"is the claimed G1 public key","apkG2":"is provided G2 public key","msgHash":"is the hash being signed","sigma":"is the G1 point signature"},"returns":{"pairingSuccessful":"is true if the pairing precompile call was successful","siganatureIsValid":"is true if the signature is valid"}},"updateAVSMetadataURI(string)":{"details":"only callable by the owner","params":{"_metadataURI":"is the metadata URI for the AVS"}}},"version":1},"userdoc":{"kind":"user","methods":{"avsDirectory()":{"notice":"Returns the EigenLayer AVSDirectory contract."},"checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))":{"notice":"This function is called by disperser when it has aggregated all the signatures of the operators that are part of the quorum for a particular taskNumber and is asserting them into onchain. The function checks that the claim for aggregated signatures are valid. The thesis of this procedure entails: - getting the aggregated pubkey of all registered nodes at the time of pre-commit by the disperser (represented by apk in the parameters), - subtracting the pubkeys of all the signers not in the quorum (nonSignerPubkeys) and storing the output in apk to get aggregated pubkey of all operators that are part of quorum. - use this aggregated pubkey to verify the aggregated signature under BLS scheme."},"createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])":{"notice":"Creates a new rewards submission to the EigenLayer RewardsCoordinator contract, to be split amongst the set of stakers delegated to operators who are registered to this `avs`"},"deregisterOperatorFromAVS(address)":{"notice":"Forwards a call to EigenLayer's AVSDirectory contract to confirm operator deregistration from the AVS"},"getOperatorRestakedStrategies(address)":{"notice":"Returns the list of strategies that the operator has potentially restaked on the AVS"},"getRestakeableStrategies()":{"notice":"Returns the list of strategies that the AVS supports for restaking"},"registerOperatorToAVS(address,(bytes,bytes32,uint256))":{"notice":"Forwards a call to EigenLayer's AVSDirectory contract to confirm operator registration with the AVS"},"rewardsInitiator()":{"notice":"The address of the entity that can initiate rewards"},"setRewardsInitiator(address)":{"notice":"Sets the rewards initiator address"},"setStaleStakesForbidden(bool)":{"notice":"/** RegistryCoordinator owner can either enforce or not that operator stakes are staler than the delegation.minWithdrawalDelayBlocks() window."},"staleStakesForbidden()":{"notice":"If true, check the staleness of the operator stakes and that its within the delegation withdrawalDelayBlocks window."},"trySignatureAndApkVerification(bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256))":{"notice":"trySignatureAndApkVerification verifies a BLS aggregate signature and the veracity of a calculated G1 Public key"},"updateAVSMetadataURI(string)":{"notice":"Updates the metadata URI for the AVS"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-middleware/lib/openzeppelin-contracts/","ds-test/=lib/eigenlayer-middleware/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/eigenlayer-middleware/lib/openzeppelin-contracts/","openzeppelin/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MockAvsServiceManager.sol":"MockAvsServiceManager"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol":{"keccak256":"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938","urls":["bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa","dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0xab76a9f4eff865cbb689f627cf98263488765519d7a4ec5ffbcb0ca4972842f9","urls":["bzz-raw://ff57ce18e8350bf39f190645db0988bc0f1279f1872150a114a1b520c38a2914","dweb:/ipfs/QmSsUXkNUqYuJgGRumHTSs9rAaboGjecotcM4xHrdBYWaZ"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba","urls":["bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc","dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c","urls":["bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8","dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f","urls":["bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324","dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IRewardsCoordinator.sol":{"keccak256":"0xeab6f1140a90eb7f107d95bae1e8b2ecfbfe36282d62c9df69e6a564c2c59771","urls":["bzz-raw://785cd2777cdcab3b827b5eef2a4dae02c56db07252fdcefd8dd1016be034dc71","dweb:/ipfs/QmNyDFchTuMeiVoxNEfQw96JVq7DfkohGz1txKXe7HyNbq"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79","urls":["bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232","dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0x68bf02a443fc8b2f612eba3d39bfefa5f61f78b549f111cdecec5f2c58236a52","urls":["bzz-raw://76bc6875ce74128b861fdac5fd1c0c72f3cc9bacf67fa4a73721b95fb23959ef","dweb:/ipfs/QmPix4WJmf9fXyMZxfgwXEHBcg7V4NAbRqs4HUf5YrSJcM"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377","urls":["bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7","dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d","urls":["bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f","dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x9095fc29b96d102b10c02d44b3a6fbfa25593ef6ae4a810363ab885b9e6b0f71","urls":["bzz-raw://0945132d482d56278edddb1d32209903c4d3839c87ba4317aadd97dc23610d0f","dweb:/ipfs/QmVuM2aLRHxitx4rPx3GTYTBCVNcjYn6sHBRr1biUjLBP5"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-middleware/src/BLSSignatureChecker.sol":{"keccak256":"0x0a2b3c95fb4de28406dcb0bab74538bce57606224aab18a30dd338747628b6bd","urls":["bzz-raw://82fbb6423fb54d8ca7f4099ccb15b77e23cb009b31605b5113dd6851a960d803","dweb:/ipfs/QmcEsEcFyNCwArMZGiyDcBeuLxAMswhnhNY2zGX5Zh7xdJ"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/ServiceManagerBase.sol":{"keccak256":"0x7e32ef76daf32e5eb5a93cecf204223e64243f42afe70c7ca71ad3db3925b9c4","urls":["bzz-raw://19c10aa22f2e86e27e946b65c434e541caa6af06fcdde46c3b5e9b42890bd221","dweb:/ipfs/QmPb5qDRdbJTniKSqsbjVhbtwdb72G9hWPYcHtVvj1zBxg"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/ServiceManagerBaseStorage.sol":{"keccak256":"0xa544114dbf6d973a815f997a2ac9237c531c40b08c91d3a65a23b152ed621e1e","urls":["bzz-raw://4cf69f9be7d3f3c4184b61b267280a829040973633ea9d95e2ec0dbf70f40a2e","dweb:/ipfs/QmT2HeCJWBLX2p4KAWnyU318MMx9USb2brqCKq1vn2pXpR"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/interfaces/IBLSApkRegistry.sol":{"keccak256":"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5","urls":["bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354","dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/interfaces/IBLSSignatureChecker.sol":{"keccak256":"0x91c233280d6707404c65b7989c3fec6997c40cb3ab7d6c2e3f021102a0e2750d","urls":["bzz-raw://f2033dbb94acab37f3505734d8aad1481fbceedaa4742871f07506243a195aeb","dweb:/ipfs/QmXWJNkhUxfMhGfuFWw4UAU6nvw9qP9aswisQJLnZUUCzs"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/interfaces/IIndexRegistry.sol":{"keccak256":"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b","urls":["bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d","dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/interfaces/IRegistry.sol":{"keccak256":"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3","urls":["bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25","dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/interfaces/IRegistryCoordinator.sol":{"keccak256":"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385","urls":["bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d","dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/interfaces/IServiceManager.sol":{"keccak256":"0x7602cfb4397a114a0ed60e70e8e1d729fdcf406b585838181b3cb3ffa6ac9a9a","urls":["bzz-raw://b718fa016a13a2a5ce298bc5ea7495cc70cf9c358211c75595d5c9dde9a6cc0f","dweb:/ipfs/QmQNrVmU7P7pRqGBJuTQDkjf3wMDY2kJm7zXdtQwsQTbzY"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/interfaces/IServiceManagerUI.sol":{"keccak256":"0x365761699b4a5b7360ee6c75f12606eefc4b0394754c8b8e1e1eefec0cba7ffb","urls":["bzz-raw://ac14ada180b66cbbc5f9de0d6b4bb87b5946d2a9569ae88f2f62aaca47e879a8","dweb:/ipfs/QmcN9xKYF24naNWc6cYah9suz5gJSYE9nPj9eZFWnP35VX"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/interfaces/IStakeRegistry.sol":{"keccak256":"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4","urls":["bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97","dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/libraries/BN254.sol":{"keccak256":"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3","urls":["bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae","dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki"],"license":"MIT"},"lib/eigenlayer-middleware/src/libraries/BitmapUtils.sol":{"keccak256":"0x44315ac460be30a6b18fd4df4d1b8afb46653bf4dc06ca9f93c32353fd0605c5","urls":["bzz-raw://da14f2ead3a375b02afd09d4a02edddf7b63a88945746b96789b2473184fdb04","dweb:/ipfs/QmRqcjxa2Vv2MrLdPeAwsktXdWTirapEDsRbJCyYRtKT6g"],"license":"MIT"},"src/MockAvsServiceManager.sol":{"keccak256":"0xed8438f541695173e7a9e28cd8f727dab9c46e62fd88583a76d703f9865cc68f","urls":["bzz-raw://55adbd24e9a62fa7a2b63738af766d92fb462ab252f8c9c86cb2c862b3b08cbf","dweb:/ipfs/QmZmi1LP4CGa3iQcCvGZ2TaLobAmFMZnRtgt27kTTAUJfn"],"license":"UNLICENSED"}},"version":1},"id":98} \ No newline at end of file diff --git a/crates/utils/json/OperatorStateRetriever.json b/crates/utils/json/OperatorStateRetriever.json deleted file mode 100644 index 6724eded..00000000 --- a/crates/utils/json/OperatorStateRetriever.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"getCheckSignaturesIndices","inputs":[{"name":"registryCoordinator","type":"address","internalType":"contract IRegistryCoordinator"},{"name":"referenceBlockNumber","type":"uint32","internalType":"uint32"},{"name":"quorumNumbers","type":"bytes","internalType":"bytes"},{"name":"nonSignerOperatorIds","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"","type":"tuple","internalType":"struct OperatorStateRetriever.CheckSignaturesIndices","components":[{"name":"nonSignerQuorumBitmapIndices","type":"uint32[]","internalType":"uint32[]"},{"name":"quorumApkIndices","type":"uint32[]","internalType":"uint32[]"},{"name":"totalStakeIndices","type":"uint32[]","internalType":"uint32[]"},{"name":"nonSignerStakeIndices","type":"uint32[][]","internalType":"uint32[][]"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorState","inputs":[{"name":"registryCoordinator","type":"address","internalType":"contract IRegistryCoordinator"},{"name":"quorumNumbers","type":"bytes","internalType":"bytes"},{"name":"blockNumber","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"tuple[][]","internalType":"struct OperatorStateRetriever.Operator[][]","components":[{"name":"operator","type":"address","internalType":"address"},{"name":"operatorId","type":"bytes32","internalType":"bytes32"},{"name":"stake","type":"uint96","internalType":"uint96"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorState","inputs":[{"name":"registryCoordinator","type":"address","internalType":"contract IRegistryCoordinator"},{"name":"operatorId","type":"bytes32","internalType":"bytes32"},{"name":"blockNumber","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"tuple[][]","internalType":"struct OperatorStateRetriever.Operator[][]","components":[{"name":"operator","type":"address","internalType":"address"},{"name":"operatorId","type":"bytes32","internalType":"bytes32"},{"name":"stake","type":"uint96","internalType":"uint96"}]}],"stateMutability":"view"},{"type":"function","name":"getQuorumBitmapsAtBlockNumber","inputs":[{"name":"registryCoordinator","type":"address","internalType":"contract IRegistryCoordinator"},{"name":"operatorIds","type":"bytes32[]","internalType":"bytes32[]"},{"name":"blockNumber","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"}],"bytecode":{"object":"0x608060405234801561001057600080fd5b50611a05806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80633563b0d1146100515780634f739f741461007a5780635c1556621461009a578063cefdc1d4146100ba575b600080fd5b61006461005f366004611172565b6100db565b60405161007191906112cd565b60405180910390f35b61008d610088366004611332565b610571565b6040516100719190611435565b6100ad6100a8366004611513565b610c9b565b60405161007191906115c4565b6100cd6100c8366004611608565b610e63565b60405161007192919061164a565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561011d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610141919061166b565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a7919061166b565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020d919061166b565b9050600086516001600160401b0381111561022a5761022a61110a565b60405190808252806020026020018201604052801561025d57816020015b60608152602001906001900390816102485790505b50905060005b875181101561056557600088828151811061028057610280611688565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa1580156102e1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610309919081019061169e565b905080516001600160401b038111156103245761032461110a565b60405190808252806020026020018201604052801561036f57816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816103425790505b5084848151811061038257610382611688565b602002602001018190525060005b815181101561054f576040518060600160405280876001600160a01b03166347b314e88585815181106103c5576103c5611688565b60200260200101516040518263ffffffff1660e01b81526004016103eb91815260200190565b602060405180830381865afa158015610408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042c919061166b565b6001600160a01b0316815260200183838151811061044c5761044c611688565b60200260200101518152602001896001600160a01b031663fa28c62785858151811061047a5761047a611688565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa919061172e565b6001600160601b031681525085858151811061051857610518611688565b6020026020010151828151811061053157610531611688565b602002602001018190525080806105479061176d565b915050610390565b505050808061055d9061176d565b915050610263565b50979650505050505050565b61059c6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610600919061166b565b905061062d6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e9061065d908b9089908990600401611788565b600060405180830381865afa15801561067a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106a291908101906117d2565b81526040516340e03a8160e11b81526001600160a01b038316906381c07502906106d4908b908b908b90600401611889565b600060405180830381865afa1580156106f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261071991908101906117d2565b6040820152856001600160401b038111156107365761073661110a565b60405190808252806020026020018201604052801561076957816020015b60608152602001906001900390816107545790505b50606082015260005b60ff8116871115610bac576000856001600160401b038111156107975761079761110a565b6040519080825280602002602001820160405280156107c0578160200160208202803683370190505b5083606001518360ff16815181106107da576107da611688565b602002602001018190525060005b86811015610aac5760008c6001600160a01b03166304ec63518a8a8581811061081357610813611688565b905060200201358e8860000151868151811061083157610831611688565b60200260200101516040518463ffffffff1660e01b815260040161086e9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906118b2565b90506001600160c01b0381166109575760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff1681811061096c5761096c611688565b6001600160c01b03841692013560f81c9190911c600190811614159050610a9957856001600160a01b031663dd9846b98a8a858181106109ae576109ae611688565b905060200201358d8d8860ff168181106109ca576109ca611688565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015610a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4491906118db565b85606001518560ff1681518110610a5d57610a5d611688565b60200260200101518481518110610a7657610a76611688565b63ffffffff9092166020928302919091019091015282610a958161176d565b9350505b5080610aa48161176d565b9150506107e8565b506000816001600160401b03811115610ac757610ac761110a565b604051908082528060200260200182016040528015610af0578160200160208202803683370190505b50905060005b82811015610b715784606001518460ff1681518110610b1757610b17611688565b60200260200101518181518110610b3057610b30611688565b6020026020010151828281518110610b4a57610b4a611688565b63ffffffff9092166020928302919091019091015280610b698161176d565b915050610af6565b508084606001518460ff1681518110610b8c57610b8c611688565b602002602001018190525050508080610ba4906118f8565b915050610772565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c11919061166b565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610c44908b908b908e90600401611918565b600060405180830381865afa158015610c61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c8991908101906117d2565b60208301525098975050505050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610ccd929190611942565b600060405180830381865afa158015610cea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d1291908101906117d2565b9050600084516001600160401b03811115610d2f57610d2f61110a565b604051908082528060200260200182016040528015610d58578160200160208202803683370190505b50905060005b8551811015610e5957866001600160a01b03166304ec6351878381518110610d8857610d88611688565b602002602001015187868581518110610da357610da3611688565b60200260200101516040518463ffffffff1660e01b8152600401610de09392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2191906118b2565b6001600160c01b0316828281518110610e3c57610e3c611688565b602090810291909101015280610e518161176d565b915050610d5e565b5095945050505050565b6040805160018082528183019092526000916060918391602080830190803683370190505090508481600081518110610e9e57610e9e611688565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e90610eda9088908690600401611942565b600060405180830381865afa158015610ef7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f1f91908101906117d2565b600081518110610f3157610f31611688565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc191906118b2565b6001600160c01b031690506000610fd782610ff5565b905081610fe58a838a6100db565b9550955050505050935093915050565b6060600080611003846110c1565b61ffff166001600160401b0381111561101e5761101e61110a565b6040519080825280601f01601f191660200182016040528015611048576020820181803683370190505b5090506000805b825182108015611060575061010081105b156110b7576001811b9350858416156110a7578060f81b83838151811061108957611089611688565b60200101906001600160f81b031916908160001a9053508160010191505b6110b08161176d565b905061104f565b5090949350505050565b6000805b82156110ec576110d6600184611996565b90921691806110e4816119ad565b9150506110c5565b92915050565b6001600160a01b038116811461110757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156111485761114861110a565b604052919050565b63ffffffff8116811461110757600080fd5b803561116d81611150565b919050565b60008060006060848603121561118757600080fd5b8335611192816110f2565b92506020848101356001600160401b03808211156111af57600080fd5b818701915087601f8301126111c357600080fd5b8135818111156111d5576111d561110a565b6111e7601f8201601f19168501611120565b915080825288848285010111156111fd57600080fd5b808484018584013760008482840101525080945050505061122060408501611162565b90509250925092565b600081518084526020808501808196508360051b810191508286016000805b868110156112bf578385038a52825180518087529087019087870190845b818110156112aa57835180516001600160a01b031684528a8101518b8501526040908101516001600160601b03169084015292890192606090920191600101611266565b50509a87019a95505091850191600101611248565b509298975050505050505050565b6020815260006112e06020830184611229565b9392505050565b60008083601f8401126112f957600080fd5b5081356001600160401b0381111561131057600080fd5b6020830191508360208260051b850101111561132b57600080fd5b9250929050565b6000806000806000806080878903121561134b57600080fd5b8635611356816110f2565b9550602087013561136681611150565b945060408701356001600160401b038082111561138257600080fd5b818901915089601f83011261139657600080fd5b8135818111156113a557600080fd5b8a60208285010111156113b757600080fd5b6020830196508095505060608901359150808211156113d557600080fd5b506113e289828a016112e7565b979a9699509497509295939492505050565b600081518084526020808501945080840160005b8381101561142a57815163ffffffff1687529582019590820190600101611408565b509495945050505050565b60006020808352835160808285015261145160a08501826113f4565b905081850151601f198086840301604087015261146e83836113f4565b9250604087015191508086840301606087015261148b83836113f4565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b828110156114e257848783030184526114d08287516113f4565b958801959388019391506001016114b6565b509998505050505050505050565b60006001600160401b038211156115095761150961110a565b5060051b60200190565b60008060006060848603121561152857600080fd5b8335611533816110f2565b92506020848101356001600160401b0381111561154f57600080fd5b8501601f8101871361156057600080fd5b803561157361156e826114f0565b611120565b81815260059190911b8201830190838101908983111561159257600080fd5b928401925b828410156115b057833582529284019290840190611597565b809650505050505061122060408501611162565b6020808252825182820181905260009190848201906040850190845b818110156115fc578351835292840192918401916001016115e0565b50909695505050505050565b60008060006060848603121561161d57600080fd5b8335611628816110f2565b925060208401359150604084013561163f81611150565b809150509250925092565b8281526040602082015260006116636040830184611229565b949350505050565b60006020828403121561167d57600080fd5b81516112e0816110f2565b634e487b7160e01b600052603260045260246000fd5b600060208083850312156116b157600080fd5b82516001600160401b038111156116c757600080fd5b8301601f810185136116d857600080fd5b80516116e661156e826114f0565b81815260059190911b8201830190838101908783111561170557600080fd5b928401925b828410156117235783518252928401929084019061170a565b979650505050505050565b60006020828403121561174057600080fd5b81516001600160601b03811681146112e057600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561178157611781611757565b5060010190565b63ffffffff84168152604060208201819052810182905260006001600160fb1b038311156117b557600080fd5b8260051b8085606085013760009201606001918252509392505050565b600060208083850312156117e557600080fd5b82516001600160401b038111156117fb57600080fd5b8301601f8101851361180c57600080fd5b805161181a61156e826114f0565b81815260059190911b8201830190838101908783111561183957600080fd5b928401925b8284101561172357835161185181611150565b8252928401929084019061183e565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff841681526040602082015260006118a9604083018486611860565b95945050505050565b6000602082840312156118c457600080fd5b81516001600160c01b03811681146112e057600080fd5b6000602082840312156118ed57600080fd5b81516112e081611150565b600060ff821660ff81141561190f5761190f611757565b60010192915050565b60408152600061192c604083018587611860565b905063ffffffff83166020830152949350505050565b60006040820163ffffffff851683526020604081850152818551808452606086019150828701935060005b818110156119895784518352938301939183019160010161196d565b5090979650505050505050565b6000828210156119a8576119a8611757565b500390565b600061ffff808316818114156119c5576119c5611757565b600101939250505056fea26469706673582212202992f3dff185428c82e654e9030d946655455c6fb79e7eae37640e8fc7d566ca64736f6c634300080c0033","sourceMap":"540:9718:100:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80633563b0d1146100515780634f739f741461007a5780635c1556621461009a578063cefdc1d4146100ba575b600080fd5b61006461005f366004611172565b6100db565b60405161007191906112cd565b60405180910390f35b61008d610088366004611332565b610571565b6040516100719190611435565b6100ad6100a8366004611513565b610c9b565b60405161007191906115c4565b6100cd6100c8366004611608565b610e63565b60405161007192919061164a565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561011d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610141919061166b565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a7919061166b565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020d919061166b565b9050600086516001600160401b0381111561022a5761022a61110a565b60405190808252806020026020018201604052801561025d57816020015b60608152602001906001900390816102485790505b50905060005b875181101561056557600088828151811061028057610280611688565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa1580156102e1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610309919081019061169e565b905080516001600160401b038111156103245761032461110a565b60405190808252806020026020018201604052801561036f57816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816103425790505b5084848151811061038257610382611688565b602002602001018190525060005b815181101561054f576040518060600160405280876001600160a01b03166347b314e88585815181106103c5576103c5611688565b60200260200101516040518263ffffffff1660e01b81526004016103eb91815260200190565b602060405180830381865afa158015610408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042c919061166b565b6001600160a01b0316815260200183838151811061044c5761044c611688565b60200260200101518152602001896001600160a01b031663fa28c62785858151811061047a5761047a611688565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa919061172e565b6001600160601b031681525085858151811061051857610518611688565b6020026020010151828151811061053157610531611688565b602002602001018190525080806105479061176d565b915050610390565b505050808061055d9061176d565b915050610263565b50979650505050505050565b61059c6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610600919061166b565b905061062d6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e9061065d908b9089908990600401611788565b600060405180830381865afa15801561067a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106a291908101906117d2565b81526040516340e03a8160e11b81526001600160a01b038316906381c07502906106d4908b908b908b90600401611889565b600060405180830381865afa1580156106f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261071991908101906117d2565b6040820152856001600160401b038111156107365761073661110a565b60405190808252806020026020018201604052801561076957816020015b60608152602001906001900390816107545790505b50606082015260005b60ff8116871115610bac576000856001600160401b038111156107975761079761110a565b6040519080825280602002602001820160405280156107c0578160200160208202803683370190505b5083606001518360ff16815181106107da576107da611688565b602002602001018190525060005b86811015610aac5760008c6001600160a01b03166304ec63518a8a8581811061081357610813611688565b905060200201358e8860000151868151811061083157610831611688565b60200260200101516040518463ffffffff1660e01b815260040161086e9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906118b2565b90506001600160c01b0381166109575760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff1681811061096c5761096c611688565b6001600160c01b03841692013560f81c9190911c600190811614159050610a9957856001600160a01b031663dd9846b98a8a858181106109ae576109ae611688565b905060200201358d8d8860ff168181106109ca576109ca611688565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015610a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4491906118db565b85606001518560ff1681518110610a5d57610a5d611688565b60200260200101518481518110610a7657610a76611688565b63ffffffff9092166020928302919091019091015282610a958161176d565b9350505b5080610aa48161176d565b9150506107e8565b506000816001600160401b03811115610ac757610ac761110a565b604051908082528060200260200182016040528015610af0578160200160208202803683370190505b50905060005b82811015610b715784606001518460ff1681518110610b1757610b17611688565b60200260200101518181518110610b3057610b30611688565b6020026020010151828281518110610b4a57610b4a611688565b63ffffffff9092166020928302919091019091015280610b698161176d565b915050610af6565b508084606001518460ff1681518110610b8c57610b8c611688565b602002602001018190525050508080610ba4906118f8565b915050610772565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c11919061166b565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610c44908b908b908e90600401611918565b600060405180830381865afa158015610c61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c8991908101906117d2565b60208301525098975050505050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610ccd929190611942565b600060405180830381865afa158015610cea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d1291908101906117d2565b9050600084516001600160401b03811115610d2f57610d2f61110a565b604051908082528060200260200182016040528015610d58578160200160208202803683370190505b50905060005b8551811015610e5957866001600160a01b03166304ec6351878381518110610d8857610d88611688565b602002602001015187868581518110610da357610da3611688565b60200260200101516040518463ffffffff1660e01b8152600401610de09392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2191906118b2565b6001600160c01b0316828281518110610e3c57610e3c611688565b602090810291909101015280610e518161176d565b915050610d5e565b5095945050505050565b6040805160018082528183019092526000916060918391602080830190803683370190505090508481600081518110610e9e57610e9e611688565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e90610eda9088908690600401611942565b600060405180830381865afa158015610ef7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f1f91908101906117d2565b600081518110610f3157610f31611688565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc191906118b2565b6001600160c01b031690506000610fd782610ff5565b905081610fe58a838a6100db565b9550955050505050935093915050565b6060600080611003846110c1565b61ffff166001600160401b0381111561101e5761101e61110a565b6040519080825280601f01601f191660200182016040528015611048576020820181803683370190505b5090506000805b825182108015611060575061010081105b156110b7576001811b9350858416156110a7578060f81b83838151811061108957611089611688565b60200101906001600160f81b031916908160001a9053508160010191505b6110b08161176d565b905061104f565b5090949350505050565b6000805b82156110ec576110d6600184611996565b90921691806110e4816119ad565b9150506110c5565b92915050565b6001600160a01b038116811461110757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156111485761114861110a565b604052919050565b63ffffffff8116811461110757600080fd5b803561116d81611150565b919050565b60008060006060848603121561118757600080fd5b8335611192816110f2565b92506020848101356001600160401b03808211156111af57600080fd5b818701915087601f8301126111c357600080fd5b8135818111156111d5576111d561110a565b6111e7601f8201601f19168501611120565b915080825288848285010111156111fd57600080fd5b808484018584013760008482840101525080945050505061122060408501611162565b90509250925092565b600081518084526020808501808196508360051b810191508286016000805b868110156112bf578385038a52825180518087529087019087870190845b818110156112aa57835180516001600160a01b031684528a8101518b8501526040908101516001600160601b03169084015292890192606090920191600101611266565b50509a87019a95505091850191600101611248565b509298975050505050505050565b6020815260006112e06020830184611229565b9392505050565b60008083601f8401126112f957600080fd5b5081356001600160401b0381111561131057600080fd5b6020830191508360208260051b850101111561132b57600080fd5b9250929050565b6000806000806000806080878903121561134b57600080fd5b8635611356816110f2565b9550602087013561136681611150565b945060408701356001600160401b038082111561138257600080fd5b818901915089601f83011261139657600080fd5b8135818111156113a557600080fd5b8a60208285010111156113b757600080fd5b6020830196508095505060608901359150808211156113d557600080fd5b506113e289828a016112e7565b979a9699509497509295939492505050565b600081518084526020808501945080840160005b8381101561142a57815163ffffffff1687529582019590820190600101611408565b509495945050505050565b60006020808352835160808285015261145160a08501826113f4565b905081850151601f198086840301604087015261146e83836113f4565b9250604087015191508086840301606087015261148b83836113f4565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b828110156114e257848783030184526114d08287516113f4565b958801959388019391506001016114b6565b509998505050505050505050565b60006001600160401b038211156115095761150961110a565b5060051b60200190565b60008060006060848603121561152857600080fd5b8335611533816110f2565b92506020848101356001600160401b0381111561154f57600080fd5b8501601f8101871361156057600080fd5b803561157361156e826114f0565b611120565b81815260059190911b8201830190838101908983111561159257600080fd5b928401925b828410156115b057833582529284019290840190611597565b809650505050505061122060408501611162565b6020808252825182820181905260009190848201906040850190845b818110156115fc578351835292840192918401916001016115e0565b50909695505050505050565b60008060006060848603121561161d57600080fd5b8335611628816110f2565b925060208401359150604084013561163f81611150565b809150509250925092565b8281526040602082015260006116636040830184611229565b949350505050565b60006020828403121561167d57600080fd5b81516112e0816110f2565b634e487b7160e01b600052603260045260246000fd5b600060208083850312156116b157600080fd5b82516001600160401b038111156116c757600080fd5b8301601f810185136116d857600080fd5b80516116e661156e826114f0565b81815260059190911b8201830190838101908783111561170557600080fd5b928401925b828410156117235783518252928401929084019061170a565b979650505050505050565b60006020828403121561174057600080fd5b81516001600160601b03811681146112e057600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561178157611781611757565b5060010190565b63ffffffff84168152604060208201819052810182905260006001600160fb1b038311156117b557600080fd5b8260051b8085606085013760009201606001918252509392505050565b600060208083850312156117e557600080fd5b82516001600160401b038111156117fb57600080fd5b8301601f8101851361180c57600080fd5b805161181a61156e826114f0565b81815260059190911b8201830190838101908783111561183957600080fd5b928401925b8284101561172357835161185181611150565b8252928401929084019061183e565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff841681526040602082015260006118a9604083018486611860565b95945050505050565b6000602082840312156118c457600080fd5b81516001600160c01b03811681146112e057600080fd5b6000602082840312156118ed57600080fd5b81516112e081611150565b600060ff821660ff81141561190f5761190f611757565b60010192915050565b60408152600061192c604083018587611860565b905063ffffffff83166020830152949350505050565b60006040820163ffffffff851683526020604081850152818551808452606086019150828701935060005b818110156119895784518352938301939183019160010161196d565b5090979650505050505050565b6000828210156119a8576119a8611757565b500390565b600061ffff808316818114156119c5576119c5611757565b600101939250505056fea26469706673582212202992f3dff185428c82e654e9030d946655455c6fb79e7eae37640e8fc7d566ca64736f6c634300080c0033","sourceMap":"540:9718:100:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3037:1255;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5476:3709;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;9602:654::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1757:712::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;3037:1255::-;3205:19;3236:28;3267:19;-1:-1:-1;;;;;3267:33:100;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3236:66;;3312:28;3343:19;-1:-1:-1;;;;;3343:33:100;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3312:66;;3388:30;3421:19;-1:-1:-1;;;;;3421:34:100;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3388:69;;3468:29;3517:13;:20;-1:-1:-1;;;;;3500:38:100;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3468:70;;3553:9;3548:699;3572:13;:20;3568:1;:24;3548:699;;;3613:18;3640:13;3654:1;3640:16;;;;;;;;:::i;:::-;;;;;3702:69;;-1:-1:-1;;;3702:69:100;;3640:16;;;;;3702:69;;;11324:36:178;;;11408:10;11396:23;;11376:18;;;11369:51;3640:16:100;-1:-1:-1;;;;;;;;3702:42:100;;;;;11297:18:178;;3702:69:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3702:69:100;;;;;;;;;;;;:::i;:::-;3671:100;;3815:11;:18;-1:-1:-1;;;;;3800:34:100;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;3800:34:100;;-1:-1:-1;;3800:34:100;;;;;;;;;;;;3785:9;3795:1;3785:12;;;;;;;;:::i;:::-;;;;;;:49;;;;3853:9;3848:389;3872:11;:18;3868:1;:22;3848:389;;;3933:289;;;;;;;;3974:14;-1:-1:-1;;;;;3974:40:100;;4015:11;4027:1;4015:14;;;;;;;;:::i;:::-;;;;;;;3974:56;;;;;;;;;;;;;12463:25:178;;12451:2;12436:18;;12317:177;3974:56:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3933:289:100;;;;;4072:11;4084:1;4072:14;;;;;;;;:::i;:::-;;;;;;;3933:289;;;;4116:13;-1:-1:-1;;;;;4116:35:100;;4160:11;4172:1;4160:14;;;;;;;;:::i;:::-;;;;;;;;;;;4116:87;;-1:-1:-1;;;;;;4116:87:100;;;;;;;;;;12973:25:178;;;;13046:4;13034:17;;13014:18;;;13007:45;4116:87:100;13088:23:178;;13068:18;;;13061:51;12946:18;;4116:87:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3933:289:100;;;;3915:9;3925:1;3915:12;;;;;;;;:::i;:::-;;;;;;;3928:1;3915:15;;;;;;;;:::i;:::-;;;;;;:307;;;;3892:3;;;;;:::i;:::-;;;;3848:389;;;;3599:648;;3594:3;;;;;:::i;:::-;;;;3548:699;;;-1:-1:-1;4276:9:100;3037:1255;-1:-1:-1;;;;;;;3037:1255:100:o;5476:3709::-;5716:29;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5716:29:100;5757:28;5788:19;-1:-1:-1;;;;;5788:33:100;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5757:66;;5833:52;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5833:52:100;6065:99;;-1:-1:-1;;;6065:99:100;;-1:-1:-1;;;;;6065:55:100;;;;;:99;;6121:20;;6143;;;;6065:99;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6065:99:100;;;;;;;;;;;;:::i;:::-;6011:153;;6322:84;;-1:-1:-1;;;6322:84:100;;-1:-1:-1;;;;;6322:47:100;;;;;:84;;6370:20;;6392:13;;;;6322:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6322:84:100;;;;;;;;;;;;:::i;:::-;6279:40;;;:127;6487:13;-1:-1:-1;;;;;6472:36:100;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6425:44:100;;;:83;6523:23;6518:2307;6552:40;;;;-1:-1:-1;6518:2307:100;;;6629:30;6883:20;-1:-1:-1;;;;;6870:41:100;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6870:41:100;;6804:22;:44;;;6849:17;6804:63;;;;;;;;;;:::i;:::-;;;;;;:107;;;;6931:6;6926:1405;6943:31;;;6926:1405;;;7091:29;7144:19;-1:-1:-1;;;;;7144:55:100;;7225:20;;7246:1;7225:23;;;;;;;:::i;:::-;;;;;;;7275:20;7322:22;:51;;;7374:1;7322:54;;;;;;;;:::i;:::-;;;;;;;7144:254;;;;;;;;;;;;;;;;16037:25:178;;;16081:10;16127:15;;;16122:2;16107:18;;16100:43;16179:15;16174:2;16159:18;;16152:43;16025:2;16010:18;;15838:363;7144:254:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7091:307;-1:-1:-1;;;;;;7441:26:100;;7433:131;;;;-1:-1:-1;;;7433:131:100;;16703:2:178;7433:131:100;;;16685:21:178;16742:2;16722:18;;;16715:30;16781:34;16761:18;;;16754:62;16852:34;16832:18;;;16825:62;16924:30;16903:19;;;16896:59;16972:19;;7433:131:100;;;;;;;;7750:13;;7764:17;7750:32;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;7719:64:100;;7750:32;;;;;7719:64;;;;7787:1;7718:70;;;:75;7714:603;;-1:-1:-1;7714:603:100;;8024:13;-1:-1:-1;;;;;8024:46:100;;8096:20;;8117:1;8096:23;;;;;;;:::i;:::-;;;;;;;8151:13;;8165:17;8151:32;;;;;;;;;:::i;:::-;8024:228;;-1:-1:-1;;;;;;8024:228:100;;;;;;;;;;12973:25:178;;;;8151:32:100;;;;;;;13014:18:178;;;13007:45;-1:-1:-1;8024:228:100;13088:23:178;;13068:18;;;13061:51;12946:18;;8024:228:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7934:22;:44;;;7979:17;7934:63;;;;;;;;;;:::i;:::-;;;;;;;7998:22;7934:87;;;;;;;;:::i;:::-;:318;;;;:87;;;;;;;;;;;:318;8274:24;;;;:::i;:::-;;;;7714:603;-1:-1:-1;6976:3:100;;;;:::i;:::-;;;;6926:1405;;;;8421:46;8483:22;-1:-1:-1;;;;;8470:36:100;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8470:36:100;;8421:85;;8525:6;8520:185;8541:22;8537:1;:26;8520:185;;;8624:22;:44;;;8669:17;8624:63;;;;;;;;;;:::i;:::-;;;;;;;8688:1;8624:66;;;;;;;;:::i;:::-;;;;;;;8588:30;8619:1;8588:33;;;;;;;;:::i;:::-;:102;;;;:33;;;;;;;;;;;:102;8565:3;;;;:::i;:::-;;;;8520:185;;;;8784:30;8718:22;:44;;;8763:17;8718:63;;;;;;;;;;:::i;:::-;;;;;;:96;;;;6615:2210;;6594:19;;;;;:::i;:::-;;;;6518:2307;;;;8835:30;8868:19;-1:-1:-1;;;;;8868:34:100;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9060:78;;-1:-1:-1;;;9060:78:100;;8835:69;;-1:-1:-1;;;;;;9060:41:100;;;;;:78;;9102:13;;;;9117:20;;9060:78;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9060:78:100;;;;;;;;;;;;:::i;:::-;9018:39;;;:120;-1:-1:-1;9018:39:100;5476:3709;-1:-1:-1;;;;;;;;5476:3709:100:o;9602:654::-;9786:16;9814:35;9852:19;-1:-1:-1;;;;;9852:55:100;;9908:11;9921;9852:81;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9852:81:100;;;;;;;;;;;;:::i;:::-;9814:119;;9943:30;9990:11;:18;-1:-1:-1;;;;;9976:33:100;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9976:33:100;;9943:66;;10024:9;10019:201;10043:11;:18;10039:1;:22;10019:201;;;10101:19;-1:-1:-1;;;;;10101:55:100;;10157:11;10169:1;10157:14;;;;;;;;:::i;:::-;;;;;;;10173:11;10186:19;10206:1;10186:22;;;;;;;;:::i;:::-;;;;;;;10101:108;;;;;;;;;;;;;;;;16037:25:178;;;16081:10;16127:15;;;16122:2;16107:18;;16100:43;16179:15;16174:2;16159:18;;16152:43;16025:2;16010:18;;15838:363;10101:108:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10082:127:100;:13;10096:1;10082:16;;;;;;;;:::i;:::-;;;;;;;;;;:127;10063:3;;;;:::i;:::-;;;;10019:201;;;-1:-1:-1;10236:13:100;9602:654;-1:-1:-1;;;;;9602:654:100:o;1757:712::-;1991:16;;;2005:1;1991:16;;;;;;;;;1920:7;;1929:19;;1920:7;;1991:16;;;;;;;;;;;-1:-1:-1;1991:16:100;1960:47;;2034:10;2017:11;2029:1;2017:14;;;;;;;;:::i;:::-;;;;;;;;;;:27;2070:81;;-1:-1:-1;;;2070:81:100;;2054:13;;-1:-1:-1;;;;;2070:55:100;;;;;:81;;2126:11;;2139;;2070:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2070:81:100;;;;;;;;;;;;:::i;:::-;2152:1;2070:84;;;;;;;;:::i;:::-;;;;;;;;;;;2192:87;;-1:-1:-1;;;2192:87:100;;;;;18695:25:178;;;2054:100:100;18756:23:178;;;18736:18;;;18729:51;2054:100:100;;;18796:18:178;;;18789:34;;;2054:100:100;-1:-1:-1;2169:20:100;;-1:-1:-1;;;;;2192:55:100;;;;;18668:18:178;;2192:87:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2169:110:100;;;2290:26;2319:44;2350:12;2319:30;:44::i;:::-;2290:73;;2382:12;2396:65;2413:19;2434:13;2449:11;2396:16;:65::i;:::-;2374:88;;;;;;;;1757:712;;;;;;:::o;5465:1257:117:-;5532:12;5650:15;5728:23;5764:20;5777:6;5764:12;:20::i;:::-;5754:31;;-1:-1:-1;;;;;5754:31:117;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5754:31:117;;5728:57;;5841:18;6093:9;6088:601;6122:10;:17;6109:10;:30;6108:45;;;;;6149:3;6145:1;:7;6108:45;6088:601;;;6252:1;:6;;;-1:-1:-1;6339:16:117;;;:21;6335:344;;6524:1;6511:16;;6486:10;6497;6486:22;;;;;;;;:::i;:::-;;;;:41;-1:-1:-1;;;;;6486:41:117;;;;;;;;;6650:12;;;;;6335:344;6155:3;;;:::i;:::-;;;6088:601;;;-1:-1:-1;6705:10:117;;5465:1257;-1:-1:-1;;;;5465:1257:117:o;6797:406::-;6853:6;;6897:209;6904:5;;6897:209;;6931:5;6935:1;6931;:5;:::i;:::-;6925:12;;;;7020:7;;;;:::i;:::-;;;;6897:209;;;7122:5;6797:406;-1:-1:-1;;6797:406:117:o;14:153:178:-;-1:-1:-1;;;;;111:31:178;;101:42;;91:70;;157:1;154;147:12;91:70;14:153;:::o;172:127::-;233:10;228:3;224:20;221:1;214:31;264:4;261:1;254:15;288:4;285:1;278:15;304:275;375:2;369:9;440:2;421:13;;-1:-1:-1;;417:27:178;405:40;;-1:-1:-1;;;;;460:34:178;;496:22;;;457:62;454:88;;;522:18;;:::i;:::-;558:2;551:22;304:275;;-1:-1:-1;304:275:178:o;584:121::-;669:10;662:5;658:22;651:5;648:33;638:61;;695:1;692;685:12;710:132;777:20;;806:30;777:20;806:30;:::i;:::-;710:132;;;:::o;847:1022::-;962:6;970;978;1031:2;1019:9;1010:7;1006:23;1002:32;999:52;;;1047:1;1044;1037:12;999:52;1086:9;1073:23;1105:53;1152:5;1105:53;:::i;:::-;1177:5;-1:-1:-1;1201:2:178;1239:18;;;1226:32;-1:-1:-1;;;;;1307:14:178;;;1304:34;;;1334:1;1331;1324:12;1304:34;1372:6;1361:9;1357:22;1347:32;;1417:7;1410:4;1406:2;1402:13;1398:27;1388:55;;1439:1;1436;1429:12;1388:55;1475:2;1462:16;1497:2;1493;1490:10;1487:36;;;1503:18;;:::i;:::-;1545:53;1588:2;1569:13;;-1:-1:-1;;1565:27:178;1561:36;;1545:53;:::i;:::-;1532:66;;1621:2;1614:5;1607:17;1661:7;1656:2;1651;1647;1643:11;1639:20;1636:33;1633:53;;;1682:1;1679;1672:12;1633:53;1737:2;1732;1728;1724:11;1719:2;1712:5;1708:14;1695:45;1781:1;1776:2;1771;1764:5;1760:14;1756:23;1749:34;;1802:5;1792:15;;;;;1826:37;1859:2;1848:9;1844:18;1826:37;:::i;:::-;1816:47;;847:1022;;;;;:::o;1874:1336::-;1945:3;1983:5;1977:12;2010:6;2005:3;1998:19;2036:4;2077:2;2072:3;2068:12;2102:11;2129;2122:18;;2179:6;2176:1;2172:14;2165:5;2161:26;2149:38;;2221:2;2214:5;2210:14;2242:1;2263;2273:911;2289:6;2284:3;2281:15;2273:911;;;2354:16;;;2342:29;;2394:13;;2466:9;;2488:22;;;2574:11;;;;2532:13;;;;2609:1;2623:455;2639:8;2634:3;2631:17;2623:455;;;2712:15;;2762:9;;-1:-1:-1;;;;;2758:35:178;2744:50;;2840:11;;;2834:18;2818:14;;;2811:42;2880:4;2934:11;;;2928:18;-1:-1:-1;;;;;2924:51:178;2908:14;;;2901:75;3047:17;;;;3013:4;3002:16;;;;2790:1;2658:11;2623:455;;;-1:-1:-1;;3162:12:178;;;;3099:5;-1:-1:-1;;3127:15:178;;;;2315:1;2306:11;2273:911;;;-1:-1:-1;3200:4:178;;1874:1336;-1:-1:-1;;;;;;;;1874:1336:178:o;3215:383::-;3498:2;3487:9;3480:21;3461:4;3518:74;3588:2;3577:9;3573:18;3565:6;3518:74;:::i;:::-;3510:82;3215:383;-1:-1:-1;;;3215:383:178:o;3603:367::-;3666:8;3676:6;3730:3;3723:4;3715:6;3711:17;3707:27;3697:55;;3748:1;3745;3738:12;3697:55;-1:-1:-1;3771:20:178;;-1:-1:-1;;;;;3803:30:178;;3800:50;;;3846:1;3843;3836:12;3800:50;3883:4;3875:6;3871:17;3859:29;;3943:3;3936:4;3926:6;3923:1;3919:14;3911:6;3907:27;3903:38;3900:47;3897:67;;;3960:1;3957;3950:12;3897:67;3603:367;;;;;:::o;3975:1233::-;4128:6;4136;4144;4152;4160;4168;4221:3;4209:9;4200:7;4196:23;4192:33;4189:53;;;4238:1;4235;4228:12;4189:53;4277:9;4264:23;4296:53;4343:5;4296:53;:::i;:::-;4368:5;-1:-1:-1;4425:2:178;4410:18;;4397:32;4438;4397;4438;:::i;:::-;4489:7;-1:-1:-1;4547:2:178;4532:18;;4519:32;-1:-1:-1;;;;;4600:14:178;;;4597:34;;;4627:1;4624;4617:12;4597:34;4665:6;4654:9;4650:22;4640:32;;4710:7;4703:4;4699:2;4695:13;4691:27;4681:55;;4732:1;4729;4722:12;4681:55;4772:2;4759:16;4798:2;4790:6;4787:14;4784:34;;;4814:1;4811;4804:12;4784:34;4859:7;4854:2;4845:6;4841:2;4837:15;4833:24;4830:37;4827:57;;;4880:1;4877;4870:12;4827:57;4911:2;4907;4903:11;4893:21;;4933:6;4923:16;;;4992:2;4981:9;4977:18;4964:32;4948:48;;5021:2;5011:8;5008:16;5005:36;;;5037:1;5034;5027:12;5005:36;;5076:72;5140:7;5129:8;5118:9;5114:24;5076:72;:::i;:::-;3975:1233;;;;-1:-1:-1;3975:1233:178;;-1:-1:-1;3975:1233:178;;5167:8;;3975:1233;-1:-1:-1;;;3975:1233:178:o;5213:451::-;5265:3;5303:5;5297:12;5330:6;5325:3;5318:19;5356:4;5385:2;5380:3;5376:12;5369:19;;5422:2;5415:5;5411:14;5443:1;5453:186;5467:6;5464:1;5461:13;5453:186;;;5532:13;;5547:10;5528:30;5516:43;;5579:12;;;;5614:15;;;;5489:1;5482:9;5453:186;;;-1:-1:-1;5655:3:178;;5213:451;-1:-1:-1;;;;;5213:451:178:o;5669:1493::-;5843:4;5872:2;5901;5890:9;5883:21;5939:6;5933:13;5982:4;5977:2;5966:9;5962:18;5955:32;6010:62;6067:3;6056:9;6052:19;6038:12;6010:62;:::i;:::-;5996:76;;6121:2;6113:6;6109:15;6103:22;6148:2;6144:7;6215:2;6203:9;6195:6;6191:22;6187:31;6182:2;6171:9;6167:18;6160:59;6242:51;6286:6;6270:14;6242:51;:::i;:::-;6228:65;;6342:2;6334:6;6330:15;6324:22;6302:44;;6410:2;6398:9;6390:6;6386:22;6382:31;6377:2;6366:9;6362:18;6355:59;6437:51;6481:6;6465:14;6437:51;:::i;:::-;6537:2;6525:15;;6519:22;6583;;;6579:31;;6572:4;6557:20;;6550:61;6660:21;;6690:22;;;6423:65;;-1:-1:-1;6825:23:178;;;-1:-1:-1;6728:15:178;;;;6786:1;6782:14;;;6770:27;;6766:36;;6866:1;6876:257;6890:6;6887:1;6884:13;6876:257;;;6976:2;6967:6;6959;6955:19;6951:28;6946:3;6939:41;7003:50;7046:6;7037;7031:13;7003:50;:::i;:::-;7076:15;;;;7111:12;;;;6993:60;-1:-1:-1;6912:1:178;6905:9;6876:257;;;-1:-1:-1;7150:6:178;5669:1493;-1:-1:-1;;;;;;;;;5669:1493:178:o;7167:183::-;7227:4;-1:-1:-1;;;;;7252:6:178;7249:30;7246:56;;;7282:18;;:::i;:::-;-1:-1:-1;7327:1:178;7323:14;7339:4;7319:25;;7167:183::o;7355:1150::-;7486:6;7494;7502;7555:2;7543:9;7534:7;7530:23;7526:32;7523:52;;;7571:1;7568;7561:12;7523:52;7610:9;7597:23;7629:53;7676:5;7629:53;:::i;:::-;7701:5;-1:-1:-1;7725:2:178;7763:18;;;7750:32;-1:-1:-1;;;;;7794:30:178;;7791:50;;;7837:1;7834;7827:12;7791:50;7860:22;;7913:4;7905:13;;7901:27;-1:-1:-1;7891:55:178;;7942:1;7939;7932:12;7891:55;7978:2;7965:16;8001:60;8017:43;8057:2;8017:43;:::i;:::-;8001:60;:::i;:::-;8095:15;;;8177:1;8173:10;;;;8165:19;;8161:28;;;8126:12;;;;8201:19;;;8198:39;;;8233:1;8230;8223:12;8198:39;8257:11;;;;8277:142;8293:6;8288:3;8285:15;8277:142;;;8359:17;;8347:30;;8310:12;;;;8397;;;;8277:142;;;8438:5;8428:15;;;;;;;8462:37;8495:2;8484:9;8480:18;8462:37;:::i;8510:632::-;8681:2;8733:21;;;8803:13;;8706:18;;;8825:22;;;8652:4;;8681:2;8904:15;;;;8878:2;8863:18;;;8652:4;8947:169;8961:6;8958:1;8955:13;8947:169;;;9022:13;;9010:26;;9091:15;;;;9056:12;;;;8983:1;8976:9;8947:169;;;-1:-1:-1;9133:3:178;;8510:632;-1:-1:-1;;;;;;8510:632:178:o;9147:506::-;9253:6;9261;9269;9322:2;9310:9;9301:7;9297:23;9293:32;9290:52;;;9338:1;9335;9328:12;9290:52;9377:9;9364:23;9396:53;9443:5;9396:53;:::i;:::-;9468:5;-1:-1:-1;9520:2:178;9505:18;;9492:32;;-1:-1:-1;9576:2:178;9561:18;;9548:32;9589;9548;9589;:::i;:::-;9640:7;9630:17;;;9147:506;;;;;:::o;9658:454::-;9969:6;9958:9;9951:25;10012:2;10007;9996:9;9992:18;9985:30;9932:4;10032:74;10102:2;10091:9;10087:18;10079:6;10032:74;:::i;:::-;10024:82;9658:454;-1:-1:-1;;;;9658:454:178:o;10117:297::-;10211:6;10264:2;10252:9;10243:7;10239:23;10235:32;10232:52;;;10280:1;10277;10270:12;10232:52;10312:9;10306:16;10331:53;10378:5;10331:53;:::i;11024:127::-;11085:10;11080:3;11076:20;11073:1;11066:31;11116:4;11113:1;11106:15;11140:4;11137:1;11130:15;11431:881;11526:6;11557:2;11600;11588:9;11579:7;11575:23;11571:32;11568:52;;;11616:1;11613;11606:12;11568:52;11649:9;11643:16;-1:-1:-1;;;;;11674:6:178;11671:30;11668:50;;;11714:1;11711;11704:12;11668:50;11737:22;;11790:4;11782:13;;11778:27;-1:-1:-1;11768:55:178;;11819:1;11816;11809:12;11768:55;11848:2;11842:9;11871:60;11887:43;11927:2;11887:43;:::i;11871:60::-;11965:15;;;12047:1;12043:10;;;;12035:19;;12031:28;;;11996:12;;;;12071:19;;;12068:39;;;12103:1;12100;12093:12;12068:39;12127:11;;;;12147:135;12163:6;12158:3;12155:15;12147:135;;;12229:10;;12217:23;;12180:12;;;;12260;;;;12147:135;;;12301:5;11431:881;-1:-1:-1;;;;;;;11431:881:178:o;13123:296::-;13192:6;13245:2;13233:9;13224:7;13220:23;13216:32;13213:52;;;13261:1;13258;13251:12;13213:52;13293:9;13287:16;-1:-1:-1;;;;;13336:5:178;13332:38;13325:5;13322:49;13312:77;;13385:1;13382;13375:12;13424:127;13485:10;13480:3;13476:20;13473:1;13466:31;13516:4;13513:1;13506:15;13540:4;13537:1;13530:15;13556:135;13595:3;-1:-1:-1;;13616:17:178;;13613:43;;;13636:18;;:::i;:::-;-1:-1:-1;13683:1:178;13672:13;;13556:135::o;13696:572::-;13923:10;13911:23;;13893:42;;13971:2;13966;13951:18;;13944:30;;;13990:18;;13983:34;;;-1:-1:-1;;;;;;14029:31:178;;14026:51;;;14073:1;14070;14063:12;14026:51;14107:6;14104:1;14100:14;14164:6;14156;14151:2;14140:9;14136:18;14123:48;14241:1;14194:22;;14218:2;14190:31;14230:13;;;-1:-1:-1;14190:31:178;13696:572;-1:-1:-1;;;13696:572:178:o;14273:954::-;14367:6;14398:2;14441;14429:9;14420:7;14416:23;14412:32;14409:52;;;14457:1;14454;14447:12;14409:52;14490:9;14484:16;-1:-1:-1;;;;;14515:6:178;14512:30;14509:50;;;14555:1;14552;14545:12;14509:50;14578:22;;14631:4;14623:13;;14619:27;-1:-1:-1;14609:55:178;;14660:1;14657;14650:12;14609:55;14689:2;14683:9;14712:60;14728:43;14768:2;14728:43;:::i;14712:60::-;14806:15;;;14888:1;14884:10;;;;14876:19;;14872:28;;;14837:12;;;;14912:19;;;14909:39;;;14944:1;14941;14934:12;14909:39;14968:11;;;;14988:209;15004:6;14999:3;14996:15;14988:209;;;15077:3;15071:10;15094:30;15118:5;15094:30;:::i;:::-;15137:18;;15021:12;;;;15175;;;;14988:209;;15232:266;15320:6;15315:3;15308:19;15372:6;15365:5;15358:4;15353:3;15349:14;15336:43;-1:-1:-1;15424:1:178;15399:16;;;15417:4;15395:27;;;15388:38;;;;15480:2;15459:15;;;-1:-1:-1;;15455:29:178;15446:39;;;15442:50;;15232:266::o;15503:330::-;15698:10;15690:6;15686:23;15675:9;15668:42;15746:2;15741;15730:9;15726:18;15719:30;15649:4;15766:61;15823:2;15812:9;15808:18;15800:6;15792;15766:61;:::i;:::-;15758:69;15503:330;-1:-1:-1;;;;;15503:330:178:o;16206:290::-;16276:6;16329:2;16317:9;16308:7;16304:23;16300:32;16297:52;;;16345:1;16342;16335:12;16297:52;16371:16;;-1:-1:-1;;;;;16416:31:178;;16406:42;;16396:70;;16462:1;16459;16452:12;17002:249;17071:6;17124:2;17112:9;17103:7;17099:23;17095:32;17092:52;;;17140:1;17137;17130:12;17092:52;17172:9;17166:16;17191:30;17215:5;17191:30;:::i;17256:175::-;17293:3;17337:4;17330:5;17326:16;17366:4;17357:7;17354:17;17351:43;;;17374:18;;:::i;:::-;17423:1;17410:15;;17256:175;-1:-1:-1;;17256:175:178:o;17436:331::-;17620:2;17609:9;17602:21;17583:4;17640:61;17697:2;17686:9;17682:18;17674:6;17666;17640:61;:::i;:::-;17632:69;;17749:10;17741:6;17737:23;17732:2;17721:9;17717:18;17710:51;17436:331;;;;;;:::o;17772:718::-;17940:4;17988:2;17977:9;17973:18;18030:10;18022:6;18018:23;18007:9;18000:42;18061:2;18099;18094;18083:9;18079:18;18072:30;18122:6;18157;18151:13;18188:6;18180;18173:22;18226:2;18215:9;18211:18;18204:25;;18264:2;18256:6;18252:15;18238:29;;18285:1;18295:169;18309:6;18306:1;18303:13;18295:169;;;18370:13;;18358:26;;18439:15;;;;18404:12;;;;18331:1;18324:9;18295:169;;;-1:-1:-1;18481:3:178;;17772:718;-1:-1:-1;;;;;;;17772:718:178:o;18834:125::-;18874:4;18902:1;18899;18896:8;18893:34;;;18907:18;;:::i;:::-;-1:-1:-1;18944:9:178;;18834:125::o;18964:197::-;19002:3;19030:6;19071:2;19064:5;19060:14;19098:2;19089:7;19086:15;19083:41;;;19104:18;;:::i;:::-;19153:1;19140:15;;18964:197;-1:-1:-1;;;18964:197:178:o","linkReferences":{}},"methodIdentifiers":{"getCheckSignaturesIndices(address,uint32,bytes,bytes32[])":"4f739f74","getOperatorState(address,bytes,uint32)":"3563b0d1","getOperatorState(address,bytes32,uint32)":"cefdc1d4","getQuorumBitmapsAtBlockNumber(address,bytes32[],uint32)":"5c155662"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IRegistryCoordinator\",\"name\":\"registryCoordinator\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"referenceBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"nonSignerOperatorIds\",\"type\":\"bytes32[]\"}],\"name\":\"getCheckSignaturesIndices\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32[]\",\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\"},{\"internalType\":\"uint32[]\",\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\"},{\"internalType\":\"uint32[]\",\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\"},{\"internalType\":\"uint32[][]\",\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\"}],\"internalType\":\"struct OperatorStateRetriever.CheckSignaturesIndices\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IRegistryCoordinator\",\"name\":\"registryCoordinator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"},{\"internalType\":\"uint32\",\"name\":\"blockNumber\",\"type\":\"uint32\"}],\"name\":\"getOperatorState\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint96\",\"name\":\"stake\",\"type\":\"uint96\"}],\"internalType\":\"struct OperatorStateRetriever.Operator[][]\",\"name\":\"\",\"type\":\"tuple[][]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IRegistryCoordinator\",\"name\":\"registryCoordinator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"blockNumber\",\"type\":\"uint32\"}],\"name\":\"getOperatorState\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint96\",\"name\":\"stake\",\"type\":\"uint96\"}],\"internalType\":\"struct OperatorStateRetriever.Operator[][]\",\"name\":\"\",\"type\":\"tuple[][]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IRegistryCoordinator\",\"name\":\"registryCoordinator\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"operatorIds\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint32\",\"name\":\"blockNumber\",\"type\":\"uint32\"}],\"name\":\"getQuorumBitmapsAtBlockNumber\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs Inc.\",\"kind\":\"dev\",\"methods\":{\"getCheckSignaturesIndices(address,uint32,bytes,bytes32[])\":{\"params\":{\"nonSignerOperatorIds\":\"are the ids of the nonsigning operators\",\"quorumNumbers\":\"are the ids of the quorums to get the operator state for\",\"referenceBlockNumber\":\"is the block number to get the indices for\",\"registryCoordinator\":\"is the registry coordinator to fetch the AVS registry information from\"},\"returns\":{\"_0\":\"1) the indices of the quorumBitmaps for each of the operators in the @param nonSignerOperatorIds array at the given blocknumber 2) the indices of the total stakes entries for the given quorums at the given blocknumber 3) the indices of the stakes of each of the nonsigners in each of the quorums they were a part of (for each nonsigner, an array of length the number of quorums they were a part of that are also part of the provided quorumNumbers) at the given blocknumber 4) the indices of the quorum apks for each of the provided quorums at the given blocknumber\"}},\"getOperatorState(address,bytes,uint32)\":{\"params\":{\"blockNumber\":\"is the block number to get the operator state for\",\"quorumNumbers\":\"are the ids of the quorums to get the operator state for\",\"registryCoordinator\":\"is the registry coordinator to fetch the AVS registry information from\"},\"returns\":{\"_0\":\"2d array of Operators. For each quorum, an ordered list of Operators\"}},\"getOperatorState(address,bytes32,uint32)\":{\"params\":{\"blockNumber\":\"is the block number to get the operator state for\",\"operatorId\":\"the id of the operator to fetch the quorums lists \",\"registryCoordinator\":\"is the registry coordinator to fetch the AVS registry information from\"},\"returns\":{\"_0\":\"1) the quorumBitmap of the operator at the given blockNumber 2) 2d array of Operator structs. For each quorum the provided operator was a part of at `blockNumber`, an ordered list of operators.\"}},\"getQuorumBitmapsAtBlockNumber(address,bytes32[],uint32)\":{\"params\":{\"blockNumber\":\"is the block number to get the quorumBitmaps for\",\"operatorIds\":\"are the ids of the operators to get the quorumBitmaps for\",\"registryCoordinator\":\"is the AVS registry coordinator to fetch the operator information from\"}}},\"title\":\"OperatorStateRetriever with view functions that allow to retrieve the state of an AVSs registry system.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCheckSignaturesIndices(address,uint32,bytes,bytes32[])\":{\"notice\":\"this is called by the AVS operator to get the relevant indices for the checkSignatures function if they are not running an indexer \"},\"getOperatorState(address,bytes,uint32)\":{\"notice\":\"returns the ordered list of operators (id and stake) for each quorum. The AVS coordinator may call this function directly to get the operator state for a given block number\"},\"getOperatorState(address,bytes32,uint32)\":{\"notice\":\"This function is intended to to be called by AVS operators every time a new task is created (i.e.) the AVS coordinator makes a request to AVS operators. Since all of the crucial information is kept onchain, operators don't need to run indexers to fetch the data.\"},\"getQuorumBitmapsAtBlockNumber(address,bytes32[],uint32)\":{\"notice\":\"this function returns the quorumBitmaps for each of the operators in the operatorIds array at the given blocknumber\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/OperatorStateRetriever.sol\":\"OperatorStateRetriever\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x9906828f285cc76bbbe077f908d87c4bffd0a3bff9394f7a4b60a9d9a2672c1e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4c0f43e14e50ac322685b5cd301459118e2770bdfb053f8f3ded08ee9fbf5bf9\",\"dweb:/ipfs/QmPQtY6KEUCbrKwweu8BvA7YjnXXxkkuZPyLSRGV5EoPTe\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x1f8e17b0f952042132ca64e202022d83783b7f42ec364cd0cad1950ecb95a13d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a2be4c476902f25fb058f779e3d4e5b1182d9dc9fbdec518acbe9544c0d3c141\",\"dweb:/ipfs/QmdgZq6JrCD36Xry2vD8QSeGguGQ9TGWY2CMvKrhR9NQ6u\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x22b7a17d53696412f80645f1fa65274ae89040bdc706262e3b6cc577dbafcaa4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b15002346892a48fd7cf9a8a4cf121e17ba133d21e4822e71fbffac85117d6b2\",\"dweb:/ipfs/QmRBPJUcRQ6uKmSvCYhhtVWcKCAWkQFSVZZwZR7HR42kiz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x33a935182f77cfd508fc57ec8e45afc8dc3748e1e9b764d36bf90ae6466f257b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d3981b5bbf435cda04e2ed2f348f886ebf1500c18dd4bbf67b1f1bc0272e2d3f\",\"dweb:/ipfs/QmYHDzQx29ataM2ejRCXFcPxaPdxWqX8v7uwUAYoG9572w\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xffafae142d5337a5c204519e8f82fe3a5fae137286ebf597fa50699cf12c2474\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b577a12f7788095b230fd069b36ba9b3cdb376a0b7c3d8ae71588e5bf0c2f574\",\"dweb:/ipfs/QmXd1cDzYpxecyFEwowLiBKKjzRHgV8cs1qvLwypdEbVYy\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b\",\"dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x3d9eeecf96bd8d6427445db76b9a73f9861c6c3601001226bed2f7fb81e252e6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c836719a65892c5cffdba9de4e009e5f8a4e49aea9c5f46d57b15660c6c2d07d\",\"dweb:/ipfs/QmWuzNq2HdEH1hsRg8Jc95k1DZdNjXFb5ehkz9iLNNSqhT\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xaeee2ac5cfcc3388b63bef2668fa435c65a4b433b52ce9f5013822c6ec875fa3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://86eb6d3da5b45f7509995ffa170eaaadffbdd6d43e50f0902d421bb93a7dfda6\",\"dweb:/ipfs/QmWaYcgtnaVpcekSP7LyY6AGrE3hRE3kZE4H4EKhsSysDG\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x633b5fb10209891f696a9c8db4d7327ed7f560a2e9710489e38a67daeda59a96\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c8381baaec3afa6b200420c093706974776dfd14f6887abe7457eb867351a068\",\"dweb:/ipfs/QmP9H9ttS1sJ6FrvMEefJhU6B4z1wMCjcYYZqVfsLXagJE\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0x1c5895f913e95682b0c371595cb1fa0d9c34ea921a0fbb5c32201b4315e80a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c470e449a3144fbaaa17b44823ba9cba901f063b04355c800bf62cabdd081cd4\",\"dweb:/ipfs/QmSJ8gaAF4WA1aXGmLesnnRo8fDZNEFnqZSGNkJnXLRM9R\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0xcf8422dfa6ccc393de19417570c6239e0fde54de9433ea258cbeb6937ff7f316\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://328e582c05b7311ad4107c46f554f15b5572b89a4ab6d067c73425b7418d946c\",\"dweb:/ipfs/QmdM81GQY5nok5oCTP8Cc6M8s1UC9f6ZbSWybaUxrZNrmY\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"src/OperatorStateRetriever.sol\":{\"keccak256\":\"0x7ad0adb547b031583fbd09458a6b2460292bceef9696afcb4d6d5e516ce4af4d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e01043865e5dc5e7706c61594130e04fc0b278d312ca07009ab37aad14bc4009\",\"dweb:/ipfs/QmZo7MUr5QZCvrqPaw3XURDd5Tu41qioLPUT9FKAParxZu\"]},\"src/interfaces/IBLSApkRegistry.sol\":{\"keccak256\":\"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354\",\"dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp\"]},\"src/interfaces/IIndexRegistry.sol\":{\"keccak256\":\"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d\",\"dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F\"]},\"src/interfaces/IRegistry.sol\":{\"keccak256\":\"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25\",\"dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY\"]},\"src/interfaces/IRegistryCoordinator.sol\":{\"keccak256\":\"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d\",\"dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD\"]},\"src/interfaces/IStakeRegistry.sol\":{\"keccak256\":\"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97\",\"dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B\"]},\"src/libraries/BN254.sol\":{\"keccak256\":\"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae\",\"dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki\"]},\"src/libraries/BitmapUtils.sol\":{\"keccak256\":\"0x44315ac460be30a6b18fd4df4d1b8afb46653bf4dc06ca9f93c32353fd0605c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da14f2ead3a375b02afd09d4a02edddf7b63a88945746b96789b2473184fdb04\",\"dweb:/ipfs/QmRqcjxa2Vv2MrLdPeAwsktXdWTirapEDsRbJCyYRtKT6g\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IRegistryCoordinator","name":"registryCoordinator","type":"address"},{"internalType":"uint32","name":"referenceBlockNumber","type":"uint32"},{"internalType":"bytes","name":"quorumNumbers","type":"bytes"},{"internalType":"bytes32[]","name":"nonSignerOperatorIds","type":"bytes32[]"}],"stateMutability":"view","type":"function","name":"getCheckSignaturesIndices","outputs":[{"internalType":"struct OperatorStateRetriever.CheckSignaturesIndices","name":"","type":"tuple","components":[{"internalType":"uint32[]","name":"nonSignerQuorumBitmapIndices","type":"uint32[]"},{"internalType":"uint32[]","name":"quorumApkIndices","type":"uint32[]"},{"internalType":"uint32[]","name":"totalStakeIndices","type":"uint32[]"},{"internalType":"uint32[][]","name":"nonSignerStakeIndices","type":"uint32[][]"}]}]},{"inputs":[{"internalType":"contract IRegistryCoordinator","name":"registryCoordinator","type":"address"},{"internalType":"bytes","name":"quorumNumbers","type":"bytes"},{"internalType":"uint32","name":"blockNumber","type":"uint32"}],"stateMutability":"view","type":"function","name":"getOperatorState","outputs":[{"internalType":"struct OperatorStateRetriever.Operator[][]","name":"","type":"tuple[][]","components":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes32","name":"operatorId","type":"bytes32"},{"internalType":"uint96","name":"stake","type":"uint96"}]}]},{"inputs":[{"internalType":"contract IRegistryCoordinator","name":"registryCoordinator","type":"address"},{"internalType":"bytes32","name":"operatorId","type":"bytes32"},{"internalType":"uint32","name":"blockNumber","type":"uint32"}],"stateMutability":"view","type":"function","name":"getOperatorState","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"struct OperatorStateRetriever.Operator[][]","name":"","type":"tuple[][]","components":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes32","name":"operatorId","type":"bytes32"},{"internalType":"uint96","name":"stake","type":"uint96"}]}]},{"inputs":[{"internalType":"contract IRegistryCoordinator","name":"registryCoordinator","type":"address"},{"internalType":"bytes32[]","name":"operatorIds","type":"bytes32[]"},{"internalType":"uint32","name":"blockNumber","type":"uint32"}],"stateMutability":"view","type":"function","name":"getQuorumBitmapsAtBlockNumber","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]}],"devdoc":{"kind":"dev","methods":{"getCheckSignaturesIndices(address,uint32,bytes,bytes32[])":{"params":{"nonSignerOperatorIds":"are the ids of the nonsigning operators","quorumNumbers":"are the ids of the quorums to get the operator state for","referenceBlockNumber":"is the block number to get the indices for","registryCoordinator":"is the registry coordinator to fetch the AVS registry information from"},"returns":{"_0":"1) the indices of the quorumBitmaps for each of the operators in the @param nonSignerOperatorIds array at the given blocknumber 2) the indices of the total stakes entries for the given quorums at the given blocknumber 3) the indices of the stakes of each of the nonsigners in each of the quorums they were a part of (for each nonsigner, an array of length the number of quorums they were a part of that are also part of the provided quorumNumbers) at the given blocknumber 4) the indices of the quorum apks for each of the provided quorums at the given blocknumber"}},"getOperatorState(address,bytes,uint32)":{"params":{"blockNumber":"is the block number to get the operator state for","quorumNumbers":"are the ids of the quorums to get the operator state for","registryCoordinator":"is the registry coordinator to fetch the AVS registry information from"},"returns":{"_0":"2d array of Operators. For each quorum, an ordered list of Operators"}},"getOperatorState(address,bytes32,uint32)":{"params":{"blockNumber":"is the block number to get the operator state for","operatorId":"the id of the operator to fetch the quorums lists ","registryCoordinator":"is the registry coordinator to fetch the AVS registry information from"},"returns":{"_0":"1) the quorumBitmap of the operator at the given blockNumber 2) 2d array of Operator structs. For each quorum the provided operator was a part of at `blockNumber`, an ordered list of operators."}},"getQuorumBitmapsAtBlockNumber(address,bytes32[],uint32)":{"params":{"blockNumber":"is the block number to get the quorumBitmaps for","operatorIds":"are the ids of the operators to get the quorumBitmaps for","registryCoordinator":"is the AVS registry coordinator to fetch the operator information from"}}},"version":1},"userdoc":{"kind":"user","methods":{"getCheckSignaturesIndices(address,uint32,bytes,bytes32[])":{"notice":"this is called by the AVS operator to get the relevant indices for the checkSignatures function if they are not running an indexer "},"getOperatorState(address,bytes,uint32)":{"notice":"returns the ordered list of operators (id and stake) for each quorum. The AVS coordinator may call this function directly to get the operator state for a given block number"},"getOperatorState(address,bytes32,uint32)":{"notice":"This function is intended to to be called by AVS operators every time a new task is created (i.e.) the AVS coordinator makes a request to AVS operators. Since all of the crucial information is kept onchain, operators don't need to run indexers to fetch the data."},"getQuorumBitmapsAtBlockNumber(address,bytes32[],uint32)":{"notice":"this function returns the quorumBitmaps for each of the operators in the operatorIds array at the given blocknumber"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable/","@openzeppelin/=lib/openzeppelin-contracts/","ds-test/=lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/OperatorStateRetriever.sol":"OperatorStateRetriever"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x9906828f285cc76bbbe077f908d87c4bffd0a3bff9394f7a4b60a9d9a2672c1e","urls":["bzz-raw://4c0f43e14e50ac322685b5cd301459118e2770bdfb053f8f3ded08ee9fbf5bf9","dweb:/ipfs/QmPQtY6KEUCbrKwweu8BvA7YjnXXxkkuZPyLSRGV5EoPTe"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0x1f8e17b0f952042132ca64e202022d83783b7f42ec364cd0cad1950ecb95a13d","urls":["bzz-raw://a2be4c476902f25fb058f779e3d4e5b1182d9dc9fbdec518acbe9544c0d3c141","dweb:/ipfs/QmdgZq6JrCD36Xry2vD8QSeGguGQ9TGWY2CMvKrhR9NQ6u"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0x22b7a17d53696412f80645f1fa65274ae89040bdc706262e3b6cc577dbafcaa4","urls":["bzz-raw://b15002346892a48fd7cf9a8a4cf121e17ba133d21e4822e71fbffac85117d6b2","dweb:/ipfs/QmRBPJUcRQ6uKmSvCYhhtVWcKCAWkQFSVZZwZR7HR42kiz"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x33a935182f77cfd508fc57ec8e45afc8dc3748e1e9b764d36bf90ae6466f257b","urls":["bzz-raw://d3981b5bbf435cda04e2ed2f348f886ebf1500c18dd4bbf67b1f1bc0272e2d3f","dweb:/ipfs/QmYHDzQx29ataM2ejRCXFcPxaPdxWqX8v7uwUAYoG9572w"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0xffafae142d5337a5c204519e8f82fe3a5fae137286ebf597fa50699cf12c2474","urls":["bzz-raw://b577a12f7788095b230fd069b36ba9b3cdb376a0b7c3d8ae71588e5bf0c2f574","dweb:/ipfs/QmXd1cDzYpxecyFEwowLiBKKjzRHgV8cs1qvLwypdEbVYy"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4","urls":["bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b","dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x3d9eeecf96bd8d6427445db76b9a73f9861c6c3601001226bed2f7fb81e252e6","urls":["bzz-raw://c836719a65892c5cffdba9de4e009e5f8a4e49aea9c5f46d57b15660c6c2d07d","dweb:/ipfs/QmWuzNq2HdEH1hsRg8Jc95k1DZdNjXFb5ehkz9iLNNSqhT"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xaeee2ac5cfcc3388b63bef2668fa435c65a4b433b52ce9f5013822c6ec875fa3","urls":["bzz-raw://86eb6d3da5b45f7509995ffa170eaaadffbdd6d43e50f0902d421bb93a7dfda6","dweb:/ipfs/QmWaYcgtnaVpcekSP7LyY6AGrE3hRE3kZE4H4EKhsSysDG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x633b5fb10209891f696a9c8db4d7327ed7f560a2e9710489e38a67daeda59a96","urls":["bzz-raw://c8381baaec3afa6b200420c093706974776dfd14f6887abe7457eb867351a068","dweb:/ipfs/QmP9H9ttS1sJ6FrvMEefJhU6B4z1wMCjcYYZqVfsLXagJE"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0x1c5895f913e95682b0c371595cb1fa0d9c34ea921a0fbb5c32201b4315e80a56","urls":["bzz-raw://c470e449a3144fbaaa17b44823ba9cba901f063b04355c800bf62cabdd081cd4","dweb:/ipfs/QmSJ8gaAF4WA1aXGmLesnnRo8fDZNEFnqZSGNkJnXLRM9R"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0xcf8422dfa6ccc393de19417570c6239e0fde54de9433ea258cbeb6937ff7f316","urls":["bzz-raw://328e582c05b7311ad4107c46f554f15b5572b89a4ab6d067c73425b7418d946c","dweb:/ipfs/QmdM81GQY5nok5oCTP8Cc6M8s1UC9f6ZbSWybaUxrZNrmY"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"src/OperatorStateRetriever.sol":{"keccak256":"0x7ad0adb547b031583fbd09458a6b2460292bceef9696afcb4d6d5e516ce4af4d","urls":["bzz-raw://e01043865e5dc5e7706c61594130e04fc0b278d312ca07009ab37aad14bc4009","dweb:/ipfs/QmZo7MUr5QZCvrqPaw3XURDd5Tu41qioLPUT9FKAParxZu"],"license":"BUSL-1.1"},"src/interfaces/IBLSApkRegistry.sol":{"keccak256":"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5","urls":["bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354","dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp"],"license":"BUSL-1.1"},"src/interfaces/IIndexRegistry.sol":{"keccak256":"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b","urls":["bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d","dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F"],"license":"BUSL-1.1"},"src/interfaces/IRegistry.sol":{"keccak256":"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3","urls":["bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25","dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY"],"license":"BUSL-1.1"},"src/interfaces/IRegistryCoordinator.sol":{"keccak256":"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385","urls":["bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d","dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD"],"license":"BUSL-1.1"},"src/interfaces/IStakeRegistry.sol":{"keccak256":"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4","urls":["bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97","dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B"],"license":"BUSL-1.1"},"src/libraries/BN254.sol":{"keccak256":"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3","urls":["bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae","dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki"],"license":"MIT"},"src/libraries/BitmapUtils.sol":{"keccak256":"0x44315ac460be30a6b18fd4df4d1b8afb46653bf4dc06ca9f93c32353fd0605c5","urls":["bzz-raw://da14f2ead3a375b02afd09d4a02edddf7b63a88945746b96789b2473184fdb04","dweb:/ipfs/QmRqcjxa2Vv2MrLdPeAwsktXdWTirapEDsRbJCyYRtKT6g"],"license":"MIT"}},"version":1},"id":100} \ No newline at end of file diff --git a/crates/utils/json/RegistryCoordinator.json b/crates/utils/json/RegistryCoordinator.json deleted file mode 100644 index 1121a025..00000000 --- a/crates/utils/json/RegistryCoordinator.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_serviceManager","type":"address","internalType":"contract IServiceManager"},{"name":"_stakeRegistry","type":"address","internalType":"contract IStakeRegistry"},{"name":"_blsApkRegistry","type":"address","internalType":"contract IBLSApkRegistry"},{"name":"_indexRegistry","type":"address","internalType":"contract IIndexRegistry"}],"stateMutability":"nonpayable"},{"type":"function","name":"OPERATOR_CHURN_APPROVAL_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"PUBKEY_REGISTRATION_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blsApkRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IBLSApkRegistry"}],"stateMutability":"view"},{"type":"function","name":"calculateOperatorChurnApprovalDigestHash","inputs":[{"name":"registeringOperator","type":"address","internalType":"address"},{"name":"registeringOperatorId","type":"bytes32","internalType":"bytes32"},{"name":"operatorKickParams","type":"tuple[]","internalType":"struct IRegistryCoordinator.OperatorKickParam[]","components":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"churnApprover","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"createQuorum","inputs":[{"name":"operatorSetParams","type":"tuple","internalType":"struct IRegistryCoordinator.OperatorSetParam","components":[{"name":"maxOperatorCount","type":"uint32","internalType":"uint32"},{"name":"kickBIPsOfOperatorStake","type":"uint16","internalType":"uint16"},{"name":"kickBIPsOfTotalStake","type":"uint16","internalType":"uint16"}]},{"name":"minimumStake","type":"uint96","internalType":"uint96"},{"name":"strategyParams","type":"tuple[]","internalType":"struct IStakeRegistry.StrategyParams[]","components":[{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"multiplier","type":"uint96","internalType":"uint96"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deregisterOperator","inputs":[{"name":"quorumNumbers","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"ejectOperator","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"quorumNumbers","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"ejector","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getCurrentQuorumBitmap","inputs":[{"name":"operatorId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint192","internalType":"uint192"}],"stateMutability":"view"},{"type":"function","name":"getOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRegistryCoordinator.OperatorInfo","components":[{"name":"operatorId","type":"bytes32","internalType":"bytes32"},{"name":"status","type":"uint8","internalType":"enum IRegistryCoordinator.OperatorStatus"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorFromId","inputs":[{"name":"operatorId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getOperatorId","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getOperatorSetParams","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRegistryCoordinator.OperatorSetParam","components":[{"name":"maxOperatorCount","type":"uint32","internalType":"uint32"},{"name":"kickBIPsOfOperatorStake","type":"uint16","internalType":"uint16"},{"name":"kickBIPsOfTotalStake","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorStatus","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum IRegistryCoordinator.OperatorStatus"}],"stateMutability":"view"},{"type":"function","name":"getQuorumBitmapAtBlockNumberByIndex","inputs":[{"name":"operatorId","type":"bytes32","internalType":"bytes32"},{"name":"blockNumber","type":"uint32","internalType":"uint32"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint192","internalType":"uint192"}],"stateMutability":"view"},{"type":"function","name":"getQuorumBitmapHistoryLength","inputs":[{"name":"operatorId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getQuorumBitmapIndicesAtBlockNumber","inputs":[{"name":"blockNumber","type":"uint32","internalType":"uint32"},{"name":"operatorIds","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"","type":"uint32[]","internalType":"uint32[]"}],"stateMutability":"view"},{"type":"function","name":"getQuorumBitmapUpdateByIndex","inputs":[{"name":"operatorId","type":"bytes32","internalType":"bytes32"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRegistryCoordinator.QuorumBitmapUpdate","components":[{"name":"updateBlockNumber","type":"uint32","internalType":"uint32"},{"name":"nextUpdateBlockNumber","type":"uint32","internalType":"uint32"},{"name":"quorumBitmap","type":"uint192","internalType":"uint192"}]}],"stateMutability":"view"},{"type":"function","name":"indexRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IIndexRegistry"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_initialOwner","type":"address","internalType":"address"},{"name":"_churnApprover","type":"address","internalType":"address"},{"name":"_ejector","type":"address","internalType":"address"},{"name":"_pauserRegistry","type":"address","internalType":"contract IPauserRegistry"},{"name":"_initialPausedStatus","type":"uint256","internalType":"uint256"},{"name":"_operatorSetParams","type":"tuple[]","internalType":"struct IRegistryCoordinator.OperatorSetParam[]","components":[{"name":"maxOperatorCount","type":"uint32","internalType":"uint32"},{"name":"kickBIPsOfOperatorStake","type":"uint16","internalType":"uint16"},{"name":"kickBIPsOfTotalStake","type":"uint16","internalType":"uint16"}]},{"name":"_minimumStakes","type":"uint96[]","internalType":"uint96[]"},{"name":"_strategyParams","type":"tuple[][]","internalType":"struct IStakeRegistry.StrategyParams[][]","components":[{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"multiplier","type":"uint96","internalType":"uint96"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isChurnApproverSaltUsed","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"numRegistries","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[{"name":"newPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pauseAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[{"name":"index","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pauserRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPauserRegistry"}],"stateMutability":"view"},{"type":"function","name":"pubkeyRegistrationMessageHash","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct BN254.G1Point","components":[{"name":"X","type":"uint256","internalType":"uint256"},{"name":"Y","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"quorumCount","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"quorumUpdateBlockNumber","inputs":[{"name":"","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"registerOperator","inputs":[{"name":"quorumNumbers","type":"bytes","internalType":"bytes"},{"name":"socket","type":"string","internalType":"string"},{"name":"params","type":"tuple","internalType":"struct IBLSApkRegistry.PubkeyRegistrationParams","components":[{"name":"pubkeyRegistrationSignature","type":"tuple","internalType":"struct BN254.G1Point","components":[{"name":"X","type":"uint256","internalType":"uint256"},{"name":"Y","type":"uint256","internalType":"uint256"}]},{"name":"pubkeyG1","type":"tuple","internalType":"struct BN254.G1Point","components":[{"name":"X","type":"uint256","internalType":"uint256"},{"name":"Y","type":"uint256","internalType":"uint256"}]},{"name":"pubkeyG2","type":"tuple","internalType":"struct BN254.G2Point","components":[{"name":"X","type":"uint256[2]","internalType":"uint256[2]"},{"name":"Y","type":"uint256[2]","internalType":"uint256[2]"}]}]},{"name":"operatorSignature","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperatorWithChurn","inputs":[{"name":"quorumNumbers","type":"bytes","internalType":"bytes"},{"name":"socket","type":"string","internalType":"string"},{"name":"params","type":"tuple","internalType":"struct IBLSApkRegistry.PubkeyRegistrationParams","components":[{"name":"pubkeyRegistrationSignature","type":"tuple","internalType":"struct BN254.G1Point","components":[{"name":"X","type":"uint256","internalType":"uint256"},{"name":"Y","type":"uint256","internalType":"uint256"}]},{"name":"pubkeyG1","type":"tuple","internalType":"struct BN254.G1Point","components":[{"name":"X","type":"uint256","internalType":"uint256"},{"name":"Y","type":"uint256","internalType":"uint256"}]},{"name":"pubkeyG2","type":"tuple","internalType":"struct BN254.G2Point","components":[{"name":"X","type":"uint256[2]","internalType":"uint256[2]"},{"name":"Y","type":"uint256[2]","internalType":"uint256[2]"}]}]},{"name":"operatorKickParams","type":"tuple[]","internalType":"struct IRegistryCoordinator.OperatorKickParam[]","components":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"churnApproverSignature","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}]},{"name":"operatorSignature","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registries","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IServiceManager"}],"stateMutability":"view"},{"type":"function","name":"setChurnApprover","inputs":[{"name":"_churnApprover","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setEjector","inputs":[{"name":"_ejector","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorSetParams","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"operatorSetParams","type":"tuple","internalType":"struct IRegistryCoordinator.OperatorSetParam","components":[{"name":"maxOperatorCount","type":"uint32","internalType":"uint32"},{"name":"kickBIPsOfOperatorStake","type":"uint16","internalType":"uint16"},{"name":"kickBIPsOfTotalStake","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPauserRegistry","inputs":[{"name":"newPauserRegistry","type":"address","internalType":"contract IPauserRegistry"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stakeRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IStakeRegistry"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","inputs":[{"name":"newPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperators","inputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorsForQuorum","inputs":[{"name":"operatorsPerQuorum","type":"address[][]","internalType":"address[][]"},{"name":"quorumNumbers","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateSocket","inputs":[{"name":"socket","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"ChurnApproverUpdated","inputs":[{"name":"prevChurnApprover","type":"address","indexed":false,"internalType":"address"},{"name":"newChurnApprover","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"EjectorUpdated","inputs":[{"name":"prevEjector","type":"address","indexed":false,"internalType":"address"},{"name":"newEjector","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"OperatorDeregistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"operatorId","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"operatorId","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"OperatorSetParamsUpdated","inputs":[{"name":"quorumNumber","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"operatorSetParams","type":"tuple","indexed":false,"internalType":"struct IRegistryCoordinator.OperatorSetParam","components":[{"name":"maxOperatorCount","type":"uint32","internalType":"uint32"},{"name":"kickBIPsOfOperatorStake","type":"uint16","internalType":"uint16"},{"name":"kickBIPsOfTotalStake","type":"uint16","internalType":"uint16"}]}],"anonymous":false},{"type":"event","name":"OperatorSocketUpdate","inputs":[{"name":"operatorId","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"socket","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PauserRegistrySet","inputs":[{"name":"pauserRegistry","type":"address","indexed":false,"internalType":"contract IPauserRegistry"},{"name":"newPauserRegistry","type":"address","indexed":false,"internalType":"contract IPauserRegistry"}],"anonymous":false},{"type":"event","name":"QuorumBlockNumberUpdated","inputs":[{"name":"quorumNumber","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"blocknumber","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x6101c06040523480156200001257600080fd5b506040516200618738038062006187833981016040819052620000359162000254565b604080518082018252601681527f4156535265676973747279436f6f7264696e61746f720000000000000000000060208083019182528351808501909452600684526576302e302e3160d01b908401528151902060e08190527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a996101008190524660a05287938793879387939192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620001358184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c05261012052505050506001600160a01b039384166101405291831661018052821661016052166101a0526200016f62000179565b50505050620002bc565b600054610100900460ff1615620001e65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000239576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200025157600080fd5b50565b600080600080608085870312156200026b57600080fd5b845162000278816200023b565b60208601519094506200028b816200023b565b60408601519093506200029e816200023b565b6060860151909250620002b1816200023b565b939692955090935050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615dc3620003c460003960008181610637015281816111130152818161201b01528181612d4d0152818161355a0152613b3201526000818161057c01528181611fa60152818161244e01528181612ccd015281816134b1015281816137070152613ab101526000818161054201528181610eae01528181611fe401528181612c4f01528181612e3501528181612eab015281816134310152613bae01526000818161048601528181612ba5015261337901526000613db501526000613e0401526000613ddf01526000613d3801526000613d6201526000613d8c0152615dc36000f3fe608060405234801561001057600080fd5b50600436106102945760003560e01c80635df45946116101675780639feab859116100ce578063d75b4c8811610087578063d75b4c88146106f5578063dd8283f314610708578063e65797ad1461071b578063f2fde38b146107be578063fabc1cbc146107d1578063fd39105a146107e457600080fd5b80639feab85914610659578063a50857bf14610680578063c391425e14610693578063ca0de882146106b3578063ca4f2d97146106da578063d72d8dd6146106ed57600080fd5b8063871ef04911610120578063871ef049146105cc578063886f1195146105df5780638da5cb5b146105f85780639aa1653d146106005780639b5d177b1461061f5780639e9923c21461063257600080fd5b80635df459461461053d5780636347c9001461056457806368304835146105775780636e3b17db1461059e578063715018a6146105b157806384ca5213146105b957600080fd5b806328f61b311161020b5780635140a548116101c45780635140a548146104c85780635865c60c146104db578063595c6a67146104fb5780635ac86ab7146105035780635b0b829f146105225780635c975abb1461053557600080fd5b806328f61b3114610435578063296bb0641461044857806329d1e0c31461045b5780632cdd1e861461046e5780633998fdd3146104815780633c2a7f4c146104a857600080fd5b806310d67a2f1161025d57806310d67a2f1461034a57806313542a4e1461035d578063136439dd146103865780631478851f146103995780631eb812da146103cc578063249a0c421461041557600080fd5b8062cf2ab51461029957806303fd3492146102ae57806304ec6351146102e1578063054310e61461030c5780630cf4b76714610337575b600080fd5b6102ac6102a73660046148b5565b610820565b005b6102ce6102bc3660046148f6565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b6102f46102ef366004614921565b610936565b6040516001600160c01b0390911681526020016102d8565b609d5461031f906001600160a01b031681565b6040516001600160a01b0390911681526020016102d8565b6102ac610345366004614a40565b610b2c565b6102ac610358366004614ab5565b610c14565b6102ce61036b366004614ab5565b6001600160a01b031660009081526099602052604090205490565b6102ac6103943660046148f6565b610cc7565b6103bc6103a73660046148f6565b609a6020526000908152604090205460ff1681565b60405190151581526020016102d8565b6103df6103da366004614ad2565b610e04565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b0316908201526060016102d8565b6102ce610423366004614b05565b609b6020526000908152604090205481565b609e5461031f906001600160a01b031681565b61031f6104563660046148f6565b610e95565b6102ac610469366004614ab5565b610f21565b6102ac61047c366004614ab5565b610f32565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6104bb6104b6366004614ab5565b610f43565b6040516102d89190614b20565b6102ac6104d6366004614b78565b610fc2565b6104ee6104e9366004614ab5565b6114d3565b6040516102d89190614c1b565b6102ac611547565b6103bc610511366004614b05565b6001805460ff9092161b9081161490565b6102ac610530366004614ca0565b611613565b6001546102ce565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b61031f6105723660046148f6565b6116aa565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ac6105ac366004614cd4565b6116d4565b6102ac611794565b6102ce6105c7366004614d8b565b6117a8565b6102f46105da3660046148f6565b6117f2565b60005461031f906201000090046001600160a01b031681565b61031f6117fd565b60965461060d9060ff1681565b60405160ff90911681526020016102d8565b6102ac61062d366004614f24565b611816565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ce7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6102ac61068e36600461501d565b611b4e565b6106a66106a13660046150c5565b611cd2565b6040516102d8919061516a565b6102ce7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6102ac6106e83660046151b4565b611d8b565b609c546102ce565b6102ac61070336600461529a565b611df2565b6102ac61071636600461544d565b611e05565b61078a610729366004614b05565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff9081169183019190915292820151909216908201526060016102d8565b6102ac6107cc366004614ab5565b612109565b6102ac6107df3660046148f6565b61217f565b6108136107f2366004614ab5565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516102d89190615521565b600154600290600490811614156108525760405162461bcd60e51b81526004016108499061552f565b60405180910390fd5b60005b8281101561093057600084848381811061087157610871615566565b90506020020160208101906108869190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156108d1576108d1614be3565b60028111156108e2576108e2614be3565b905250805190915060006108f5826122db565b9050600061090b826001600160c01b0316612344565b9050610918858583612410565b5050505050808061092890615592565b915050610855565b50505050565b600083815260986020526040812080548291908490811061095957610959615566565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610a535760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c401610849565b602081015163ffffffff161580610a795750806020015163ffffffff168463ffffffff16105b610b205760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c401610849565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610b5557610b55614be3565b14610bc85760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f742072656769737465726564000000006064820152608401610849565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610c099084906155fa565b60405180910390a250565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8b919061560d565b6001600160a01b0316336001600160a01b031614610cbb5760405162461bcd60e51b81526004016108499061562a565b610cc4816124fd565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610d14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d389190615674565b610d545760405162461bcd60e51b815260040161084990615696565b60015481811614610dcd5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610c09565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610e4157610e41615566565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa158015610efd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8f919061560d565b610f29612602565b610cc481612661565b610f3a612602565b610cc4816126ca565b6040805180820190915260008082526020820152610e8f610fbd7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de684604051602001610fa29291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120612733565b612781565b60015460029060049081161415610feb5760405162461bcd60e51b81526004016108499061552f565b600061103384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b90508483146110a45760405162461bcd60e51b81526020600482015260436024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a401610849565b60005b838110156114ca5760008585838181106110c3576110c3615566565b919091013560f81c915036905060008989858181106110e4576110e4615566565b90506020028101906110f691906156de565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa158015611162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111869190615727565b63ffffffff1681146112225760405162461bcd60e51b81526020600482015260656024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c401610849565b6000805b8281101561146957600084848381811061124257611242615566565b90506020020160208101906112579190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156112a2576112a2614be3565b60028111156112b3576112b3614be3565b905250805190915060006112c6826122db565b905060016001600160c01b03821660ff8b161c81161461134a5760405162461bcd60e51b815260206004820152604460248201819052600080516020615d2e833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a401610849565b856001600160a01b0316846001600160a01b0316116113f55760405162461bcd60e51b81526020600482015260676024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c401610849565b5061145383838f8f8d908e600161140c9190615744565b926114199392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061241092505050565b50909250611462905081615592565b9050611226565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a250505050806114c390615592565b90506110a7565b50505050505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff16600281111561152d5761152d614be3565b600281111561153e5761153e614be3565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611594573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b89190615674565b6115d45760405162461bcd60e51b815260040161084990615696565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61161b612602565b609654829060ff9081169082161061169b5760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610849565b6116a583836128a2565b505050565b609c81815481106116ba57600080fd5b6000918252602090912001546001600160a01b0316905081565b609e546001600160a01b031633146117545760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f720000000000006064820152608401610849565b6116a58383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b61179c612602565b6117a66000612dc1565b565b60006117e87f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a8787878787604051602001610fa296959493929190615786565b9695505050505050565b6000610e8f826122db565b60006118116064546001600160a01b031690565b905090565b60018054600091908116141561183e5760405162461bcd60e51b81526004016108499061552f565b8389146118c15760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610849565b60006118cd3388612e13565b905061192d33828888808060200260200160405190810160405280939291908181526020016000905b82821015611922576119136040830286013681900381019061580b565b815260200190600101906118f6565b505050505087612f44565b600061197433838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b905060005b8b811015611b3f576000609760008f8f8581811061199957611999615566565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b90910490931691810191909152845180519193509084908110611a0657611a06615566565b602002602001015163ffffffff161115611b2c57611aa78e8e84818110611a2f57611a2f615566565b9050013560f81c60f81b60f81c84604001518481518110611a5257611a52615566565b60200260200101513386602001518681518110611a7157611a71615566565b60200260200101518d8d88818110611a8b57611a8b615566565b905060400201803603810190611aa1919061580b565b866135e8565b611b2c898984818110611abc57611abc615566565b9050604002016020016020810190611ad49190614ab5565b8f8f8590866001611ae59190615744565b92611af29392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b5080611b3781615592565b915050611979565b50505050505050505050505050565b600180546000919081161415611b765760405162461bcd60e51b81526004016108499061552f565b6000611b823385612e13565b90506000611bcb33838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b51905060005b88811015611cc65760008a8a83818110611bed57611bed615566565b919091013560f81c600081815260976020526040902054855191935063ffffffff169150849084908110611c2357611c23615566565b602002602001015163ffffffff161115611cb35760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a401610849565b5080611cbe81615592565b915050611bd1565b50505050505050505050565b6060600082516001600160401b03811115611cef57611cef614959565b604051908082528060200260200182016040528015611d18578160200160208202803683370190505b50905060005b8351811015611d8357611d4a85858381518110611d3d57611d3d615566565b60200260200101516138bd565b828281518110611d5c57611d5c615566565b63ffffffff9092166020928302919091019091015280611d7b81615592565b915050611d1e565b509392505050565b6001805460029081161415611db25760405162461bcd60e51b81526004016108499061552f565b6116a53384848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b611dfa612602565b6116a58383836139f9565b600054610100900460ff1615808015611e255750600054600160ff909116105b80611e3f5750303b158015611e3f575060005460ff166001145b611ea25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610849565b6000805460ff191660011790558015611ec5576000805461ff0019166101001790555b82518451148015611ed7575081518351145b611f415760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b6064820152608401610849565b611f4a89612dc1565b611f548686613c10565b611f5d88612661565b611f66876126ca565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b84518110156120b7576120a585828151811061206457612064615566565b602002602001015185838151811061207e5761207e615566565b602002602001015185848151811061209857612098615566565b60200260200101516139f9565b806120af81615592565b915050612046565b5080156120fe576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b612111612602565b6001600160a01b0381166121765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610849565b610cc481612dc1565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f6919061560d565b6001600160a01b0316336001600160a01b0316146122265760405162461bcd60e51b81526004016108499061562a565b6001541981196001541916146122a45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610c09565b600081815260986020526040812054806122f85750600092915050565b6000838152609860205260409020612311600183615827565b8154811061232157612321615566565b600091825260209091200154600160401b90046001600160c01b03169392505050565b606060008061235284613d00565b61ffff166001600160401b0381111561236d5761236d614959565b6040519080825280601f01601f191660200182016040528015612397576020820181803683370190505b5090506000805b8251821080156123af575061010081105b15612406576001811b9350858416156123f6578060f81b8383815181106123d8576123d8615566565b60200101906001600160f81b031916908160001a9053508160010191505b6123ff81615592565b905061239e565b5090949350505050565b60018260200151600281111561242857612428614be3565b1461243257505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe906124879088908690889060040161583e565b6020604051808303816000875af11580156124a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ca919061586e565b90506001600160c01b038116156124f6576124f6856124f1836001600160c01b0316612344565b61294f565b5050505050565b6001600160a01b03811661258b5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610849565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b3361260b6117fd565b6001600160a01b0316146117a65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610849565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e8f612740613d2b565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6040805180820190915260008082526020820152600080806127b1600080516020615d6e833981519152866158ad565b90505b6127bd81613e52565b9093509150600080516020615d6e8339815191528283098314156127f7576040805180820190915290815260208101919091529392505050565b600080516020615d6e8339815191526001820890506127b4565b60008061281d84613ed4565b9050808360ff166001901b1161289b5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610849565b9392505050565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b6001600160a01b0382166000908152609960205260409020805460018083015460ff16600281111561298357612983614be3565b14612a025760405162461bcd60e51b815260206004820152604360248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a401610849565b609654600090612a1690859060ff16612811565b90506000612a23836122db565b90506001600160c01b038216612aa15760405162461bcd60e51b815260206004820152603b60248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206269746d61702063616e6e6f74206265203000000000006064820152608401610849565b612ab86001600160c01b0383811690831681161490565b612b505760405162461bcd60e51b815260206004820152605960248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a401610849565b6001600160c01b0382811619821616612b698482614061565b6001600160c01b038116612c385760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015612be957600080fd5b505af1158015612bfd573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590612c86908a908a906004016158c1565b600060405180830381600087803b158015612ca057600080fd5b505af1158015612cb4573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d069087908a906004016158e5565b600060405180830381600087803b158015612d2057600080fd5b505af1158015612d34573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d869087908a906004016158e5565b600060405180830381600087803b158015612da057600080fd5b505af1158015612db4573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015612e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea291906158fe565b905080610e8f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce588484612ee387610f43565b6040518463ffffffff1660e01b8152600401612f0193929190615917565b6020604051808303816000875af1158015612f20573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289b91906158fe565b6020808201516000908152609a909152604090205460ff1615612fea5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a401610849565b428160400151101561307f5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a401610849565b602080820180516000908152609a909252604091829020805460ff19166001179055609d54905191830151610930926001600160a01b03909216916130ca91889188918891906117a8565b8351614221565b6130f560405180606001604052806060815260200160608152602001606081525090565b600061313d86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b9050600061314a886122db565b90506001600160c01b0382166131c85760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f742062652030000000000000006064820152608401610849565b8082166001600160c01b03161561327e5760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c401610849565b6001600160c01b03818116908316176132978982614061565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516132c791906155fa565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561330157613301614be3565b1461341a576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff19169083600281111561335c5761335c614be3565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d906133b1908d908990600401615996565b600060405180830381600087803b1580156133cb57600080fd5b505af11580156133df573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb279529061346a908d908c908c90600401615a0a565b600060405180830381600087803b15801561348457600080fd5b505af1158015613498573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250632550477791506134ee908d908d908d908d90600401615a2f565b6000604051808303816000875af115801561350d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135359190810190615abb565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d90613592908c908c908c90600401615b1e565b6000604051808303816000875af11580156135b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135d99190810190615b38565b84525050509695505050505050565b6020808301516001600160a01b0380821660008181526099909452604090932054919290871614156136685760405162461bcd60e51b81526020600482015260356024820152600080516020615d4e83398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b6064820152608401610849565b8760ff16846000015160ff16146136e55760405162461bcd60e51b81526020600482015260476024820152600080516020615d4e83398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a401610849565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015613756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377a9190615bd1565b905061378681856143db565b6001600160601b0316866001600160601b0316116138195760405162461bcd60e51b81526020600482015260566024820152600080516020615d4e83398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a401610849565b61382388856143ff565b6001600160601b0316816001600160601b0316106120fe5760405162461bcd60e51b815260206004820152605c6024820152600080516020615d4e83398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a401610849565b600081815260986020526040812054815b8181101561394f5760016138e28284615827565b6138ec9190615827565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff168154811061391f5761391f615566565b60009182526020909120015463ffffffff161161393d575050610e8f565b8061394781615592565b9150506138ce565b5060405162461bcd60e51b815260206004820152606c60248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c401610849565b60965460ff1660c08110613a6d5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b6064820152608401610849565b613a78816001615bee565b6096805460ff191660ff9290921691909117905580613a9781866128a2565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a7790613aea90849088908890600401615c13565b600060405180830381600087803b158015613b0457600080fd5b505af1158015613b18573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613b8057600080fd5b505af1158015613b94573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613bfc57600080fd5b505af11580156120fe573d6000803e3d6000fd5b6000546201000090046001600160a01b0316158015613c3757506001600160a01b03821615155b613cb95760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2613cfc826124fd565b5050565b6000805b8215610e8f57613d15600184615827565b9092169180613d2381615c8c565b915050613d04565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015613d8457507f000000000000000000000000000000000000000000000000000000000000000046145b15613dae57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615d6e8339815191526003600080516020615d6e83398151915286600080516020615d6e833981519152888909090890506000613ec8827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615d6e833981519152614419565b91959194509092505050565b600061010082511115613f5d5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610849565b8151613f6b57506000919050565b60008083600081518110613f8157613f81615566565b0160200151600160f89190911c81901b92505b845181101561405857848181518110613faf57613faf615566565b0160200151600160f89190911c1b91508282116140445760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610849565b9181179161405181615592565b9050613f94565b50909392505050565b60008281526098602052604090205480614106576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b600083815260986020526040812061411f600184615827565b8154811061412f5761412f615566565b600091825260209091200180549091504363ffffffff908116911614156141735780546001600160401b0316600160401b6001600160c01b03851602178155610930565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b1561433b57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e9061426190869086906004016158e5565b602060405180830381865afa15801561427e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142a29190615cae565b6001600160e01b031916146116a55760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610849565b826001600160a01b031661434f83836144c8565b6001600160a01b0316146116a55760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610849565b6020810151600090612710906143f59061ffff1685615cd8565b61289b9190615d07565b6040810151600090612710906143f59061ffff1685615cd8565b600080614424614835565b61442c614853565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561446d5761446f565bfe5b50826144bd5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610849565b505195945050505050565b60008060006144d785856144e4565b91509150611d8381614554565b60008082516041141561451b5760208301516040840151606085015160001a61450f8782858561470f565b9450945050505061454d565b825160401415614545576020830151604084015161453a8683836147fc565b93509350505061454d565b506000905060025b9250929050565b600081600481111561456857614568614be3565b14156145715750565b600181600481111561458557614585614be3565b14156145d35760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610849565b60028160048111156145e7576145e7614be3565b14156146355760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610849565b600381600481111561464957614649614be3565b14156146a25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610849565b60048160048111156146b6576146b6614be3565b1415610cc45760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610849565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561474657506000905060036147f3565b8460ff16601b1415801561475e57508460ff16601c14155b1561476f57506000905060046147f3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156147c3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147ec576000600192509250506147f3565b9150600090505b94509492505050565b6000806001600160ff1b0383168161481960ff86901c601b615744565b90506148278782888561470f565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f84011261488357600080fd5b5081356001600160401b0381111561489a57600080fd5b6020830191508360208260051b850101111561454d57600080fd5b600080602083850312156148c857600080fd5b82356001600160401b038111156148de57600080fd5b6148ea85828601614871565b90969095509350505050565b60006020828403121561490857600080fd5b5035919050565b63ffffffff81168114610cc457600080fd5b60008060006060848603121561493657600080fd5b8335925060208401356149488161490f565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561499157614991614959565b60405290565b604080519081016001600160401b038111828210171561499157614991614959565b604051601f8201601f191681016001600160401b03811182821017156149e1576149e1614959565b604052919050565b60006001600160401b03831115614a0257614a02614959565b614a15601f8401601f19166020016149b9565b9050828152838383011115614a2957600080fd5b828260208301376000602084830101529392505050565b600060208284031215614a5257600080fd5b81356001600160401b03811115614a6857600080fd5b8201601f81018413614a7957600080fd5b614a88848235602084016149e9565b949350505050565b6001600160a01b0381168114610cc457600080fd5b8035614ab081614a90565b919050565b600060208284031215614ac757600080fd5b813561289b81614a90565b60008060408385031215614ae557600080fd5b50508035926020909101359150565b803560ff81168114614ab057600080fd5b600060208284031215614b1757600080fd5b61289b82614af4565b815181526020808301519082015260408101610e8f565b60008083601f840112614b4957600080fd5b5081356001600160401b03811115614b6057600080fd5b60208301915083602082850101111561454d57600080fd5b60008060008060408587031215614b8e57600080fd5b84356001600160401b0380821115614ba557600080fd5b614bb188838901614871565b90965094506020870135915080821115614bca57600080fd5b50614bd787828801614b37565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110614c1757634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614c3690840182614bf9565b5092915050565b803561ffff81168114614ab057600080fd5b600060608284031215614c6157600080fd5b614c6961496f565b90508135614c768161490f565b8152614c8460208301614c3d565b6020820152614c9560408301614c3d565b604082015292915050565b60008060808385031215614cb357600080fd5b614cbc83614af4565b9150614ccb8460208501614c4f565b90509250929050565b600080600060408486031215614ce957600080fd5b8335614cf481614a90565b925060208401356001600160401b03811115614d0f57600080fd5b614d1b86828701614b37565b9497909650939450505050565b60006001600160401b03821115614d4157614d41614959565b5060051b60200190565b600060408284031215614d5d57600080fd5b614d65614997565b9050614d7082614af4565b81526020820135614d8081614a90565b602082015292915050565b600080600080600060a08688031215614da357600080fd5b8535614dae81614a90565b945060208681013594506040808801356001600160401b03811115614dd257600080fd5b8801601f81018a13614de357600080fd5b8035614df6614df182614d28565b6149b9565b81815260069190911b8201840190848101908c831115614e1557600080fd5b928501925b82841015614e3b57614e2c8d85614d4b565b82529284019290850190614e1a565b999c989b5098996060810135995060800135979650505050505050565b60006101008284031215614e6b57600080fd5b50919050565b60008083601f840112614e8357600080fd5b5081356001600160401b03811115614e9a57600080fd5b6020830191508360208260061b850101111561454d57600080fd5b600060608284031215614ec757600080fd5b614ecf61496f565b905081356001600160401b03811115614ee757600080fd5b8201601f81018413614ef857600080fd5b614f07848235602084016149e9565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c031215614f4357600080fd5b89356001600160401b0380821115614f5a57600080fd5b614f668d838e01614b37565b909b50995060208c0135915080821115614f7f57600080fd5b614f8b8d838e01614b37565b9099509750879150614fa08d60408e01614e58565b96506101408c0135915080821115614fb757600080fd5b614fc38d838e01614e71565b90965094506101608c0135915080821115614fdd57600080fd5b614fe98d838e01614eb5565b93506101808c013591508082111561500057600080fd5b5061500d8c828d01614eb5565b9150509295985092959850929598565b600080600080600080610160878903121561503757600080fd5b86356001600160401b038082111561504e57600080fd5b61505a8a838b01614b37565b9098509650602089013591508082111561507357600080fd5b61507f8a838b01614b37565b90965094508491506150948a60408b01614e58565b93506101408901359150808211156150ab57600080fd5b506150b889828a01614eb5565b9150509295509295509295565b600080604083850312156150d857600080fd5b82356150e38161490f565b91506020838101356001600160401b038111156150ff57600080fd5b8401601f8101861361511057600080fd5b803561511e614df182614d28565b81815260059190911b8201830190838101908883111561513d57600080fd5b928401925b8284101561515b57833582529284019290840190615142565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156151a857835163ffffffff1683529284019291840191600101615186565b50909695505050505050565b600080602083850312156151c757600080fd5b82356001600160401b038111156151dd57600080fd5b6148ea85828601614b37565b6001600160601b0381168114610cc457600080fd5b600082601f83011261520f57600080fd5b8135602061521f614df183614d28565b82815260069290921b8401810191818101908684111561523e57600080fd5b8286015b8481101561528f576040818903121561525b5760008081fd5b615263614997565b813561526e81614a90565b81528185013561527d816151e9565b81860152835291830191604001615242565b509695505050505050565b600080600060a084860312156152af57600080fd5b6152b98585614c4f565b925060608401356152c9816151e9565b915060808401356001600160401b038111156152e457600080fd5b6152f0868287016151fe565b9150509250925092565b600082601f83011261530b57600080fd5b8135602061531b614df183614d28565b8281526060928302850182019282820191908785111561533a57600080fd5b8387015b8581101561535d576153508982614c4f565b845292840192810161533e565b5090979650505050505050565b600082601f83011261537b57600080fd5b8135602061538b614df183614d28565b82815260059290921b840181019181810190868411156153aa57600080fd5b8286015b8481101561528f5780356153c1816151e9565b83529183019183016153ae565b600082601f8301126153df57600080fd5b813560206153ef614df183614d28565b82815260059290921b8401810191818101908684111561540e57600080fd5b8286015b8481101561528f5780356001600160401b038111156154315760008081fd5b61543f8986838b01016151fe565b845250918301918301615412565b600080600080600080600080610100898b03121561546a57600080fd5b61547389614aa5565b975061548160208a01614aa5565b965061548f60408a01614aa5565b955061549d60608a01614aa5565b94506080890135935060a08901356001600160401b03808211156154c057600080fd5b6154cc8c838d016152fa565b945060c08b01359150808211156154e257600080fd5b6154ee8c838d0161536a565b935060e08b013591508082111561550457600080fd5b506155118b828c016153ce565b9150509295985092959890939650565b60208101610e8f8284614bf9565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156155a6576155a661557c565b5060010190565b6000815180845260005b818110156155d3576020818501810151868301820152016155b7565b818111156155e5576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061289b60208301846155ad565b60006020828403121561561f57600080fd5b815161289b81614a90565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561568657600080fd5b8151801515811461289b57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000808335601e198436030181126156f557600080fd5b8301803591506001600160401b0382111561570f57600080fd5b6020019150600581901b360382131561454d57600080fd5b60006020828403121561573957600080fd5b815161289b8161490f565b600082198211156157575761575761557c565b500190565b6000808585111561576c57600080fd5b8386111561577957600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a16828601526040898187015260c0606087015283895180865260e088019150848b01955060005b818110156157eb578651805160ff16845286015185168684015295850195918301916001016157c1565b505060808701989098525050505060a09091019190915250949350505050565b60006040828403121561581d57600080fd5b61289b8383614d4b565b6000828210156158395761583961557c565b500390565b60018060a01b038416815282602082015260606040820152600061586560608301846155ad565b95945050505050565b60006020828403121561588057600080fd5b81516001600160c01b038116811461289b57600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826158bc576158bc615897565b500690565b6001600160a01b0383168152604060208201819052600090614a88908301846155ad565b828152604060208201526000614a8860408301846155ad565b60006020828403121561591057600080fd5b5051919050565b6001600160a01b0384168152610160810161593f602083018580358252602090810135910152565b615959606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b60018060a01b03831681526040602082015260008251606060408401526159c060a08401826155ad565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061586590830184866159e1565b60018060a01b03851681528360208201526060604082015260006117e86060830184866159e1565b600082601f830112615a6857600080fd5b81516020615a78614df183614d28565b82815260059290921b84018101918181019086841115615a9757600080fd5b8286015b8481101561528f578051615aae816151e9565b8352918301918301615a9b565b60008060408385031215615ace57600080fd5b82516001600160401b0380821115615ae557600080fd5b615af186838701615a57565b93506020850151915080821115615b0757600080fd5b50615b1485828601615a57565b9150509250929050565b8381526040602082015260006158656040830184866159e1565b60006020808385031215615b4b57600080fd5b82516001600160401b03811115615b6157600080fd5b8301601f81018513615b7257600080fd5b8051615b80614df182614d28565b81815260059190911b82018301908381019087831115615b9f57600080fd5b928401925b82841015615bc6578351615bb78161490f565b82529284019290840190615ba4565b979650505050505050565b600060208284031215615be357600080fd5b815161289b816151e9565b600060ff821660ff84168060ff03821115615c0b57615c0b61557c565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015615c7c57865180516001600160a01b031684528601518516868401529585019591830191600101615c4c565b50909a9950505050505050505050565b600061ffff80831681811415615ca457615ca461557c565b6001019392505050565b600060208284031215615cc057600080fd5b81516001600160e01b03198116811461289b57600080fd5b60006001600160601b0380831681851681830481118215151615615cfe57615cfe61557c565b02949350505050565b60006001600160601b0380841680615d2157615d21615897565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a2646970667358221220598eaa5be9198a7133fde4c03f17da8c0b3d0e8e336586c8d946a01fa1418dfd64736f6c634300080c0033","sourceMap":"1702:41946:101:-:0;;;2432:375;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2455:592:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2455:592:93;;;;2541:22;;;;2768:25;;;;2597;2803:31;;;;2863:13;2844:32;;2646:15:101;;2663:14;;2679:15;;2696:14;;2455:592:93;;;2663:95;2913:58;2663:95;2541:22;2597:25;3621:73;;;;;;1251:25:178;;;1292:18;;;1285:34;;;1335:18;;;1328:34;;;3665:13:93;1378:18:178;;;1371:34;3688:4:93;1421:19:178;;;1414:61;3581:7:93;;1223:19:178;;3621:73:93;;;;;;;;;;;;3611:84;;;;;;3604:91;;3447:255;;;;;;2913:58;2886:85;;3004:4;2981:28;;3019:21;;-1:-1:-1;;;;;;;;;4230:32:102;;;;;4272:30;;;;;4312:32;;;;4354:30;;;2778:22:101::2;:20;:22::i;:::-;2432:375:::0;;;;1702:41946;;5388:279:59;5456:13;;;;;;;5455:14;5447:66;;;;-1:-1:-1;;;5447:66:59;;1688:2:178;5447:66:59;;;1670:21:178;1727:2;1707:18;;;1700:30;1766:34;1746:18;;;1739:62;-1:-1:-1;;;1817:18:178;;;1810:37;1864:19;;5447:66:59;;;;;;;;5527:12;;5542:15;5527:12;;;:30;5523:138;;;5573:12;:30;;-1:-1:-1;;5573:30:59;5588:15;5573:30;;;;;;5622:28;;2036:36:178;;;5622:28:59;;2024:2:178;2009:18;5622:28:59;;;;;;;5523:138;5388:279::o;14:148:178:-;-1:-1:-1;;;;;106:31:178;;96:42;;86:70;;152:1;149;142:12;86:70;14:148;:::o;167:820::-;362:6;370;378;386;439:3;427:9;418:7;414:23;410:33;407:53;;;456:1;453;446:12;407:53;488:9;482:16;507:48;549:5;507:48;:::i;:::-;624:2;609:18;;603:25;574:5;;-1:-1:-1;637:50:178;603:25;637:50;:::i;:::-;758:2;743:18;;737:25;706:7;;-1:-1:-1;771:50:178;737:25;771:50;:::i;:::-;892:2;877:18;;871:25;840:7;;-1:-1:-1;905:50:178;871:25;905:50;:::i;:::-;167:820;;;;-1:-1:-1;167:820:178;;-1:-1:-1;;167:820:178:o;1894:184::-;1702:41946:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106102945760003560e01c80635df45946116101675780639feab859116100ce578063d75b4c8811610087578063d75b4c88146106f5578063dd8283f314610708578063e65797ad1461071b578063f2fde38b146107be578063fabc1cbc146107d1578063fd39105a146107e457600080fd5b80639feab85914610659578063a50857bf14610680578063c391425e14610693578063ca0de882146106b3578063ca4f2d97146106da578063d72d8dd6146106ed57600080fd5b8063871ef04911610120578063871ef049146105cc578063886f1195146105df5780638da5cb5b146105f85780639aa1653d146106005780639b5d177b1461061f5780639e9923c21461063257600080fd5b80635df459461461053d5780636347c9001461056457806368304835146105775780636e3b17db1461059e578063715018a6146105b157806384ca5213146105b957600080fd5b806328f61b311161020b5780635140a548116101c45780635140a548146104c85780635865c60c146104db578063595c6a67146104fb5780635ac86ab7146105035780635b0b829f146105225780635c975abb1461053557600080fd5b806328f61b3114610435578063296bb0641461044857806329d1e0c31461045b5780632cdd1e861461046e5780633998fdd3146104815780633c2a7f4c146104a857600080fd5b806310d67a2f1161025d57806310d67a2f1461034a57806313542a4e1461035d578063136439dd146103865780631478851f146103995780631eb812da146103cc578063249a0c421461041557600080fd5b8062cf2ab51461029957806303fd3492146102ae57806304ec6351146102e1578063054310e61461030c5780630cf4b76714610337575b600080fd5b6102ac6102a73660046148b5565b610820565b005b6102ce6102bc3660046148f6565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b6102f46102ef366004614921565b610936565b6040516001600160c01b0390911681526020016102d8565b609d5461031f906001600160a01b031681565b6040516001600160a01b0390911681526020016102d8565b6102ac610345366004614a40565b610b2c565b6102ac610358366004614ab5565b610c14565b6102ce61036b366004614ab5565b6001600160a01b031660009081526099602052604090205490565b6102ac6103943660046148f6565b610cc7565b6103bc6103a73660046148f6565b609a6020526000908152604090205460ff1681565b60405190151581526020016102d8565b6103df6103da366004614ad2565b610e04565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b0316908201526060016102d8565b6102ce610423366004614b05565b609b6020526000908152604090205481565b609e5461031f906001600160a01b031681565b61031f6104563660046148f6565b610e95565b6102ac610469366004614ab5565b610f21565b6102ac61047c366004614ab5565b610f32565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6104bb6104b6366004614ab5565b610f43565b6040516102d89190614b20565b6102ac6104d6366004614b78565b610fc2565b6104ee6104e9366004614ab5565b6114d3565b6040516102d89190614c1b565b6102ac611547565b6103bc610511366004614b05565b6001805460ff9092161b9081161490565b6102ac610530366004614ca0565b611613565b6001546102ce565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b61031f6105723660046148f6565b6116aa565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ac6105ac366004614cd4565b6116d4565b6102ac611794565b6102ce6105c7366004614d8b565b6117a8565b6102f46105da3660046148f6565b6117f2565b60005461031f906201000090046001600160a01b031681565b61031f6117fd565b60965461060d9060ff1681565b60405160ff90911681526020016102d8565b6102ac61062d366004614f24565b611816565b61031f7f000000000000000000000000000000000000000000000000000000000000000081565b6102ce7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6102ac61068e36600461501d565b611b4e565b6106a66106a13660046150c5565b611cd2565b6040516102d8919061516a565b6102ce7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6102ac6106e83660046151b4565b611d8b565b609c546102ce565b6102ac61070336600461529a565b611df2565b6102ac61071636600461544d565b611e05565b61078a610729366004614b05565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff9081169183019190915292820151909216908201526060016102d8565b6102ac6107cc366004614ab5565b612109565b6102ac6107df3660046148f6565b61217f565b6108136107f2366004614ab5565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516102d89190615521565b600154600290600490811614156108525760405162461bcd60e51b81526004016108499061552f565b60405180910390fd5b60005b8281101561093057600084848381811061087157610871615566565b90506020020160208101906108869190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156108d1576108d1614be3565b60028111156108e2576108e2614be3565b905250805190915060006108f5826122db565b9050600061090b826001600160c01b0316612344565b9050610918858583612410565b5050505050808061092890615592565b915050610855565b50505050565b600083815260986020526040812080548291908490811061095957610959615566565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610a535760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c401610849565b602081015163ffffffff161580610a795750806020015163ffffffff168463ffffffff16105b610b205760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c401610849565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610b5557610b55614be3565b14610bc85760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f742072656769737465726564000000006064820152608401610849565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610c099084906155fa565b60405180910390a250565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8b919061560d565b6001600160a01b0316336001600160a01b031614610cbb5760405162461bcd60e51b81526004016108499061562a565b610cc4816124fd565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610d14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d389190615674565b610d545760405162461bcd60e51b815260040161084990615696565b60015481811614610dcd5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610c09565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610e4157610e41615566565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa158015610efd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8f919061560d565b610f29612602565b610cc481612661565b610f3a612602565b610cc4816126ca565b6040805180820190915260008082526020820152610e8f610fbd7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de684604051602001610fa29291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120612733565b612781565b60015460029060049081161415610feb5760405162461bcd60e51b81526004016108499061552f565b600061103384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b90508483146110a45760405162461bcd60e51b81526020600482015260436024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a401610849565b60005b838110156114ca5760008585838181106110c3576110c3615566565b919091013560f81c915036905060008989858181106110e4576110e4615566565b90506020028101906110f691906156de565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa158015611162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111869190615727565b63ffffffff1681146112225760405162461bcd60e51b81526020600482015260656024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c401610849565b6000805b8281101561146957600084848381811061124257611242615566565b90506020020160208101906112579190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156112a2576112a2614be3565b60028111156112b3576112b3614be3565b905250805190915060006112c6826122db565b905060016001600160c01b03821660ff8b161c81161461134a5760405162461bcd60e51b815260206004820152604460248201819052600080516020615d2e833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a401610849565b856001600160a01b0316846001600160a01b0316116113f55760405162461bcd60e51b81526020600482015260676024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c401610849565b5061145383838f8f8d908e600161140c9190615744565b926114199392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061241092505050565b50909250611462905081615592565b9050611226565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a250505050806114c390615592565b90506110a7565b50505050505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff16600281111561152d5761152d614be3565b600281111561153e5761153e614be3565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611594573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b89190615674565b6115d45760405162461bcd60e51b815260040161084990615696565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61161b612602565b609654829060ff9081169082161061169b5760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610849565b6116a583836128a2565b505050565b609c81815481106116ba57600080fd5b6000918252602090912001546001600160a01b0316905081565b609e546001600160a01b031633146117545760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f720000000000006064820152608401610849565b6116a58383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b61179c612602565b6117a66000612dc1565b565b60006117e87f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a8787878787604051602001610fa296959493929190615786565b9695505050505050565b6000610e8f826122db565b60006118116064546001600160a01b031690565b905090565b60018054600091908116141561183e5760405162461bcd60e51b81526004016108499061552f565b8389146118c15760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610849565b60006118cd3388612e13565b905061192d33828888808060200260200160405190810160405280939291908181526020016000905b82821015611922576119136040830286013681900381019061580b565b815260200190600101906118f6565b505050505087612f44565b600061197433838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b905060005b8b811015611b3f576000609760008f8f8581811061199957611999615566565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b90910490931691810191909152845180519193509084908110611a0657611a06615566565b602002602001015163ffffffff161115611b2c57611aa78e8e84818110611a2f57611a2f615566565b9050013560f81c60f81b60f81c84604001518481518110611a5257611a52615566565b60200260200101513386602001518681518110611a7157611a71615566565b60200260200101518d8d88818110611a8b57611a8b615566565b905060400201803603810190611aa1919061580b565b866135e8565b611b2c898984818110611abc57611abc615566565b9050604002016020016020810190611ad49190614ab5565b8f8f8590866001611ae59190615744565b92611af29392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b5080611b3781615592565b915050611979565b50505050505050505050505050565b600180546000919081161415611b765760405162461bcd60e51b81526004016108499061552f565b6000611b823385612e13565b90506000611bcb33838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b51905060005b88811015611cc65760008a8a83818110611bed57611bed615566565b919091013560f81c600081815260976020526040902054855191935063ffffffff169150849084908110611c2357611c23615566565b602002602001015163ffffffff161115611cb35760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a401610849565b5080611cbe81615592565b915050611bd1565b50505050505050505050565b6060600082516001600160401b03811115611cef57611cef614959565b604051908082528060200260200182016040528015611d18578160200160208202803683370190505b50905060005b8351811015611d8357611d4a85858381518110611d3d57611d3d615566565b60200260200101516138bd565b828281518110611d5c57611d5c615566565b63ffffffff9092166020928302919091019091015280611d7b81615592565b915050611d1e565b509392505050565b6001805460029081161415611db25760405162461bcd60e51b81526004016108499061552f565b6116a53384848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b611dfa612602565b6116a58383836139f9565b600054610100900460ff1615808015611e255750600054600160ff909116105b80611e3f5750303b158015611e3f575060005460ff166001145b611ea25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610849565b6000805460ff191660011790558015611ec5576000805461ff0019166101001790555b82518451148015611ed7575081518351145b611f415760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b6064820152608401610849565b611f4a89612dc1565b611f548686613c10565b611f5d88612661565b611f66876126ca565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b84518110156120b7576120a585828151811061206457612064615566565b602002602001015185838151811061207e5761207e615566565b602002602001015185848151811061209857612098615566565b60200260200101516139f9565b806120af81615592565b915050612046565b5080156120fe576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b612111612602565b6001600160a01b0381166121765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610849565b610cc481612dc1565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f6919061560d565b6001600160a01b0316336001600160a01b0316146122265760405162461bcd60e51b81526004016108499061562a565b6001541981196001541916146122a45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610c09565b600081815260986020526040812054806122f85750600092915050565b6000838152609860205260409020612311600183615827565b8154811061232157612321615566565b600091825260209091200154600160401b90046001600160c01b03169392505050565b606060008061235284613d00565b61ffff166001600160401b0381111561236d5761236d614959565b6040519080825280601f01601f191660200182016040528015612397576020820181803683370190505b5090506000805b8251821080156123af575061010081105b15612406576001811b9350858416156123f6578060f81b8383815181106123d8576123d8615566565b60200101906001600160f81b031916908160001a9053508160010191505b6123ff81615592565b905061239e565b5090949350505050565b60018260200151600281111561242857612428614be3565b1461243257505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe906124879088908690889060040161583e565b6020604051808303816000875af11580156124a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ca919061586e565b90506001600160c01b038116156124f6576124f6856124f1836001600160c01b0316612344565b61294f565b5050505050565b6001600160a01b03811661258b5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610849565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b3361260b6117fd565b6001600160a01b0316146117a65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610849565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e8f612740613d2b565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6040805180820190915260008082526020820152600080806127b1600080516020615d6e833981519152866158ad565b90505b6127bd81613e52565b9093509150600080516020615d6e8339815191528283098314156127f7576040805180820190915290815260208101919091529392505050565b600080516020615d6e8339815191526001820890506127b4565b60008061281d84613ed4565b9050808360ff166001901b1161289b5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610849565b9392505050565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b6001600160a01b0382166000908152609960205260409020805460018083015460ff16600281111561298357612983614be3565b14612a025760405162461bcd60e51b815260206004820152604360248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a401610849565b609654600090612a1690859060ff16612811565b90506000612a23836122db565b90506001600160c01b038216612aa15760405162461bcd60e51b815260206004820152603b60248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206269746d61702063616e6e6f74206265203000000000006064820152608401610849565b612ab86001600160c01b0383811690831681161490565b612b505760405162461bcd60e51b815260206004820152605960248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a401610849565b6001600160c01b0382811619821616612b698482614061565b6001600160c01b038116612c385760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015612be957600080fd5b505af1158015612bfd573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590612c86908a908a906004016158c1565b600060405180830381600087803b158015612ca057600080fd5b505af1158015612cb4573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d069087908a906004016158e5565b600060405180830381600087803b158015612d2057600080fd5b505af1158015612d34573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d869087908a906004016158e5565b600060405180830381600087803b158015612da057600080fd5b505af1158015612db4573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015612e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea291906158fe565b905080610e8f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce588484612ee387610f43565b6040518463ffffffff1660e01b8152600401612f0193929190615917565b6020604051808303816000875af1158015612f20573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289b91906158fe565b6020808201516000908152609a909152604090205460ff1615612fea5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a401610849565b428160400151101561307f5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a401610849565b602080820180516000908152609a909252604091829020805460ff19166001179055609d54905191830151610930926001600160a01b03909216916130ca91889188918891906117a8565b8351614221565b6130f560405180606001604052806060815260200160608152602001606081525090565b600061313d86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b9050600061314a886122db565b90506001600160c01b0382166131c85760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f742062652030000000000000006064820152608401610849565b8082166001600160c01b03161561327e5760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c401610849565b6001600160c01b03818116908316176132978982614061565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516132c791906155fa565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561330157613301614be3565b1461341a576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff19169083600281111561335c5761335c614be3565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d906133b1908d908990600401615996565b600060405180830381600087803b1580156133cb57600080fd5b505af11580156133df573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb279529061346a908d908c908c90600401615a0a565b600060405180830381600087803b15801561348457600080fd5b505af1158015613498573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250632550477791506134ee908d908d908d908d90600401615a2f565b6000604051808303816000875af115801561350d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135359190810190615abb565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d90613592908c908c908c90600401615b1e565b6000604051808303816000875af11580156135b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135d99190810190615b38565b84525050509695505050505050565b6020808301516001600160a01b0380821660008181526099909452604090932054919290871614156136685760405162461bcd60e51b81526020600482015260356024820152600080516020615d4e83398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b6064820152608401610849565b8760ff16846000015160ff16146136e55760405162461bcd60e51b81526020600482015260476024820152600080516020615d4e83398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a401610849565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015613756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377a9190615bd1565b905061378681856143db565b6001600160601b0316866001600160601b0316116138195760405162461bcd60e51b81526020600482015260566024820152600080516020615d4e83398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a401610849565b61382388856143ff565b6001600160601b0316816001600160601b0316106120fe5760405162461bcd60e51b815260206004820152605c6024820152600080516020615d4e83398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a401610849565b600081815260986020526040812054815b8181101561394f5760016138e28284615827565b6138ec9190615827565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff168154811061391f5761391f615566565b60009182526020909120015463ffffffff161161393d575050610e8f565b8061394781615592565b9150506138ce565b5060405162461bcd60e51b815260206004820152606c60248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c401610849565b60965460ff1660c08110613a6d5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b6064820152608401610849565b613a78816001615bee565b6096805460ff191660ff9290921691909117905580613a9781866128a2565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a7790613aea90849088908890600401615c13565b600060405180830381600087803b158015613b0457600080fd5b505af1158015613b18573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613b8057600080fd5b505af1158015613b94573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613bfc57600080fd5b505af11580156120fe573d6000803e3d6000fd5b6000546201000090046001600160a01b0316158015613c3757506001600160a01b03821615155b613cb95760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2613cfc826124fd565b5050565b6000805b8215610e8f57613d15600184615827565b9092169180613d2381615c8c565b915050613d04565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015613d8457507f000000000000000000000000000000000000000000000000000000000000000046145b15613dae57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615d6e8339815191526003600080516020615d6e83398151915286600080516020615d6e833981519152888909090890506000613ec8827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615d6e833981519152614419565b91959194509092505050565b600061010082511115613f5d5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610849565b8151613f6b57506000919050565b60008083600081518110613f8157613f81615566565b0160200151600160f89190911c81901b92505b845181101561405857848181518110613faf57613faf615566565b0160200151600160f89190911c1b91508282116140445760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610849565b9181179161405181615592565b9050613f94565b50909392505050565b60008281526098602052604090205480614106576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b600083815260986020526040812061411f600184615827565b8154811061412f5761412f615566565b600091825260209091200180549091504363ffffffff908116911614156141735780546001600160401b0316600160401b6001600160c01b03851602178155610930565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b1561433b57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e9061426190869086906004016158e5565b602060405180830381865afa15801561427e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142a29190615cae565b6001600160e01b031916146116a55760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610849565b826001600160a01b031661434f83836144c8565b6001600160a01b0316146116a55760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610849565b6020810151600090612710906143f59061ffff1685615cd8565b61289b9190615d07565b6040810151600090612710906143f59061ffff1685615cd8565b600080614424614835565b61442c614853565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561446d5761446f565bfe5b50826144bd5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610849565b505195945050505050565b60008060006144d785856144e4565b91509150611d8381614554565b60008082516041141561451b5760208301516040840151606085015160001a61450f8782858561470f565b9450945050505061454d565b825160401415614545576020830151604084015161453a8683836147fc565b93509350505061454d565b506000905060025b9250929050565b600081600481111561456857614568614be3565b14156145715750565b600181600481111561458557614585614be3565b14156145d35760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610849565b60028160048111156145e7576145e7614be3565b14156146355760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610849565b600381600481111561464957614649614be3565b14156146a25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610849565b60048160048111156146b6576146b6614be3565b1415610cc45760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610849565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561474657506000905060036147f3565b8460ff16601b1415801561475e57508460ff16601c14155b1561476f57506000905060046147f3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156147c3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147ec576000600192509250506147f3565b9150600090505b94509492505050565b6000806001600160ff1b0383168161481960ff86901c601b615744565b90506148278782888561470f565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f84011261488357600080fd5b5081356001600160401b0381111561489a57600080fd5b6020830191508360208260051b850101111561454d57600080fd5b600080602083850312156148c857600080fd5b82356001600160401b038111156148de57600080fd5b6148ea85828601614871565b90969095509350505050565b60006020828403121561490857600080fd5b5035919050565b63ffffffff81168114610cc457600080fd5b60008060006060848603121561493657600080fd5b8335925060208401356149488161490f565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561499157614991614959565b60405290565b604080519081016001600160401b038111828210171561499157614991614959565b604051601f8201601f191681016001600160401b03811182821017156149e1576149e1614959565b604052919050565b60006001600160401b03831115614a0257614a02614959565b614a15601f8401601f19166020016149b9565b9050828152838383011115614a2957600080fd5b828260208301376000602084830101529392505050565b600060208284031215614a5257600080fd5b81356001600160401b03811115614a6857600080fd5b8201601f81018413614a7957600080fd5b614a88848235602084016149e9565b949350505050565b6001600160a01b0381168114610cc457600080fd5b8035614ab081614a90565b919050565b600060208284031215614ac757600080fd5b813561289b81614a90565b60008060408385031215614ae557600080fd5b50508035926020909101359150565b803560ff81168114614ab057600080fd5b600060208284031215614b1757600080fd5b61289b82614af4565b815181526020808301519082015260408101610e8f565b60008083601f840112614b4957600080fd5b5081356001600160401b03811115614b6057600080fd5b60208301915083602082850101111561454d57600080fd5b60008060008060408587031215614b8e57600080fd5b84356001600160401b0380821115614ba557600080fd5b614bb188838901614871565b90965094506020870135915080821115614bca57600080fd5b50614bd787828801614b37565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110614c1757634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614c3690840182614bf9565b5092915050565b803561ffff81168114614ab057600080fd5b600060608284031215614c6157600080fd5b614c6961496f565b90508135614c768161490f565b8152614c8460208301614c3d565b6020820152614c9560408301614c3d565b604082015292915050565b60008060808385031215614cb357600080fd5b614cbc83614af4565b9150614ccb8460208501614c4f565b90509250929050565b600080600060408486031215614ce957600080fd5b8335614cf481614a90565b925060208401356001600160401b03811115614d0f57600080fd5b614d1b86828701614b37565b9497909650939450505050565b60006001600160401b03821115614d4157614d41614959565b5060051b60200190565b600060408284031215614d5d57600080fd5b614d65614997565b9050614d7082614af4565b81526020820135614d8081614a90565b602082015292915050565b600080600080600060a08688031215614da357600080fd5b8535614dae81614a90565b945060208681013594506040808801356001600160401b03811115614dd257600080fd5b8801601f81018a13614de357600080fd5b8035614df6614df182614d28565b6149b9565b81815260069190911b8201840190848101908c831115614e1557600080fd5b928501925b82841015614e3b57614e2c8d85614d4b565b82529284019290850190614e1a565b999c989b5098996060810135995060800135979650505050505050565b60006101008284031215614e6b57600080fd5b50919050565b60008083601f840112614e8357600080fd5b5081356001600160401b03811115614e9a57600080fd5b6020830191508360208260061b850101111561454d57600080fd5b600060608284031215614ec757600080fd5b614ecf61496f565b905081356001600160401b03811115614ee757600080fd5b8201601f81018413614ef857600080fd5b614f07848235602084016149e9565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c031215614f4357600080fd5b89356001600160401b0380821115614f5a57600080fd5b614f668d838e01614b37565b909b50995060208c0135915080821115614f7f57600080fd5b614f8b8d838e01614b37565b9099509750879150614fa08d60408e01614e58565b96506101408c0135915080821115614fb757600080fd5b614fc38d838e01614e71565b90965094506101608c0135915080821115614fdd57600080fd5b614fe98d838e01614eb5565b93506101808c013591508082111561500057600080fd5b5061500d8c828d01614eb5565b9150509295985092959850929598565b600080600080600080610160878903121561503757600080fd5b86356001600160401b038082111561504e57600080fd5b61505a8a838b01614b37565b9098509650602089013591508082111561507357600080fd5b61507f8a838b01614b37565b90965094508491506150948a60408b01614e58565b93506101408901359150808211156150ab57600080fd5b506150b889828a01614eb5565b9150509295509295509295565b600080604083850312156150d857600080fd5b82356150e38161490f565b91506020838101356001600160401b038111156150ff57600080fd5b8401601f8101861361511057600080fd5b803561511e614df182614d28565b81815260059190911b8201830190838101908883111561513d57600080fd5b928401925b8284101561515b57833582529284019290840190615142565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156151a857835163ffffffff1683529284019291840191600101615186565b50909695505050505050565b600080602083850312156151c757600080fd5b82356001600160401b038111156151dd57600080fd5b6148ea85828601614b37565b6001600160601b0381168114610cc457600080fd5b600082601f83011261520f57600080fd5b8135602061521f614df183614d28565b82815260069290921b8401810191818101908684111561523e57600080fd5b8286015b8481101561528f576040818903121561525b5760008081fd5b615263614997565b813561526e81614a90565b81528185013561527d816151e9565b81860152835291830191604001615242565b509695505050505050565b600080600060a084860312156152af57600080fd5b6152b98585614c4f565b925060608401356152c9816151e9565b915060808401356001600160401b038111156152e457600080fd5b6152f0868287016151fe565b9150509250925092565b600082601f83011261530b57600080fd5b8135602061531b614df183614d28565b8281526060928302850182019282820191908785111561533a57600080fd5b8387015b8581101561535d576153508982614c4f565b845292840192810161533e565b5090979650505050505050565b600082601f83011261537b57600080fd5b8135602061538b614df183614d28565b82815260059290921b840181019181810190868411156153aa57600080fd5b8286015b8481101561528f5780356153c1816151e9565b83529183019183016153ae565b600082601f8301126153df57600080fd5b813560206153ef614df183614d28565b82815260059290921b8401810191818101908684111561540e57600080fd5b8286015b8481101561528f5780356001600160401b038111156154315760008081fd5b61543f8986838b01016151fe565b845250918301918301615412565b600080600080600080600080610100898b03121561546a57600080fd5b61547389614aa5565b975061548160208a01614aa5565b965061548f60408a01614aa5565b955061549d60608a01614aa5565b94506080890135935060a08901356001600160401b03808211156154c057600080fd5b6154cc8c838d016152fa565b945060c08b01359150808211156154e257600080fd5b6154ee8c838d0161536a565b935060e08b013591508082111561550457600080fd5b506155118b828c016153ce565b9150509295985092959890939650565b60208101610e8f8284614bf9565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156155a6576155a661557c565b5060010190565b6000815180845260005b818110156155d3576020818501810151868301820152016155b7565b818111156155e5576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061289b60208301846155ad565b60006020828403121561561f57600080fd5b815161289b81614a90565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561568657600080fd5b8151801515811461289b57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000808335601e198436030181126156f557600080fd5b8301803591506001600160401b0382111561570f57600080fd5b6020019150600581901b360382131561454d57600080fd5b60006020828403121561573957600080fd5b815161289b8161490f565b600082198211156157575761575761557c565b500190565b6000808585111561576c57600080fd5b8386111561577957600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a16828601526040898187015260c0606087015283895180865260e088019150848b01955060005b818110156157eb578651805160ff16845286015185168684015295850195918301916001016157c1565b505060808701989098525050505060a09091019190915250949350505050565b60006040828403121561581d57600080fd5b61289b8383614d4b565b6000828210156158395761583961557c565b500390565b60018060a01b038416815282602082015260606040820152600061586560608301846155ad565b95945050505050565b60006020828403121561588057600080fd5b81516001600160c01b038116811461289b57600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826158bc576158bc615897565b500690565b6001600160a01b0383168152604060208201819052600090614a88908301846155ad565b828152604060208201526000614a8860408301846155ad565b60006020828403121561591057600080fd5b5051919050565b6001600160a01b0384168152610160810161593f602083018580358252602090810135910152565b615959606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b60018060a01b03831681526040602082015260008251606060408401526159c060a08401826155ad565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061586590830184866159e1565b60018060a01b03851681528360208201526060604082015260006117e86060830184866159e1565b600082601f830112615a6857600080fd5b81516020615a78614df183614d28565b82815260059290921b84018101918181019086841115615a9757600080fd5b8286015b8481101561528f578051615aae816151e9565b8352918301918301615a9b565b60008060408385031215615ace57600080fd5b82516001600160401b0380821115615ae557600080fd5b615af186838701615a57565b93506020850151915080821115615b0757600080fd5b50615b1485828601615a57565b9150509250929050565b8381526040602082015260006158656040830184866159e1565b60006020808385031215615b4b57600080fd5b82516001600160401b03811115615b6157600080fd5b8301601f81018513615b7257600080fd5b8051615b80614df182614d28565b81815260059190911b82018301908381019087831115615b9f57600080fd5b928401925b82841015615bc6578351615bb78161490f565b82529284019290840190615ba4565b979650505050505050565b600060208284031215615be357600080fd5b815161289b816151e9565b600060ff821660ff84168060ff03821115615c0b57615c0b61557c565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015615c7c57865180516001600160a01b031684528601518516868401529585019591830191600101615c4c565b50909a9950505050505050505050565b600061ffff80831681811415615ca457615ca461557c565b6001019392505050565b600060208284031215615cc057600080fd5b81516001600160e01b03198116811461289b57600080fd5b60006001600160601b0380831681851681830481118215151615615cfe57615cfe61557c565b02949350505050565b60006001600160601b0380841680615d2157615d21615897565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a2646970667358221220598eaa5be9198a7133fde4c03f17da8c0b3d0e8e336586c8d946a01fa1418dfd64736f6c634300080c0033","sourceMap":"1702:41946:101:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12102:656;;;;;;:::i;:::-;;:::i;:::-;;41614:155;;;;;;:::i;:::-;41695:7;41721:34;;;:22;:34;;;;;:41;;41614:155;;;;1159:25:178;;;1147:2;1132:18;41614:155:101;;;;;;;;39871:1055;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1871:32:178;;;1853:51;;1841:2;1826:18;39871:1055:101;1707:203:178;3897:28:102;;;;;-1:-1:-1;;;;;3897:28:102;;;;;;-1:-1:-1;;;;;2079:32:178;;;2061:51;;2049:2;2034:18;3897:28:102;1915:203:178;17130:285:101;;;;;;:::i;:::-;;:::i;5814:138:27:-;;;;;;:::i;:::-;;:::i;38175:131:101:-;;;;;;:::i;:::-;-1:-1:-1;;;;;38265:23:101;38239:7;38265:23;;;:13;:23;;;;;:34;;38175:131;3832:392:27;;;;;;:::i;:::-;;:::i;3418:55:102:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5343:14:178;;5336:22;5318:41;;5306:2;5291:18;3418:55:102;5178:187:178;41027:211:101;;;;;;:::i;:::-;;:::i;:::-;;;;5894:13:178;;5853:10;5890:22;;;5872:41;;5973:4;5961:17;;;5955:24;5951:33;;;5929:20;;;5922:63;6033:17;;;6027:24;-1:-1:-1;;;;;6023:50:178;6001:20;;;5994:80;5831:2;5816:18;41027:211:101;5623:457:178;3584:56:102;;;;;;:::i;:::-;;;;;;;;;;;;;;4013:22;;;;;-1:-1:-1;;;;;4013:22:102;;;38384:155:101;;;;;;:::i;:::-;;:::i;19824:119::-;;;;;;:::i;:::-;;:::i;20126:95::-;;;;;;:::i;:::-;;:::i;2088:47:102:-;;;;;43099:271:101;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;13943:3021::-;;;;;;:::i;:::-;;:::i;37975:130::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4299:136:27:-;;;:::i;5594:149::-;;;;;;:::i;:::-;5683:1;5712:7;;5683:10;;;;;5712:14;;;5711:24;;5594:149;19350:233:101;;;;;;:::i;:::-;;:::i;5406:87:27:-;5479:7;;5406:87;;2272:47:102;;;;;3739:27;;;;;;:::i;:::-;;:::i;2411:45::-;;;;;17857:238:101;;;;;;:::i;:::-;;:::i;2071:101:57:-;;;:::i;42414:475:101:-;;;;;;:::i;:::-;;:::i;41375:142::-;;;;;;:::i;:::-;;:::i;1825:37:27:-;;;;;;;;-1:-1:-1;;;;;1825:37:27;;;43462:184:101;;;:::i;2902:24:102:-;;;;;;;;;;;;13279:4:178;13267:17;;;13249:36;;13237:2;13222:18;2902:24:102;13107:184:178;8448:2859:101;;;;;;:::i;:::-;;:::i;2549:45:102:-;;;;;1159:109;;1214:54;1159:109;;5809:1630:101;;;;;;:::i;:::-;;:::i;39104:416::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;798:281:102:-;;865:214;798:281;;11499:252:101;;;;;;:::i;:::-;;:::i;41824:98::-;41898:10;:17;41824:98;;18785:277;;;;;;:::i;:::-;;:::i;3565:1212::-;;;;;;:::i;:::-;;:::i;37751:149::-;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;37866:27:101;;;;;;;:13;:27;;;;;;37859:34;;;;;;;;;;;;;;-1:-1:-1;;;37859:34:101;;;;;;;;;;;-1:-1:-1;;;37859:34:101;;;;;;;;37751:149;;;;;25866:13:178;;25881:10;25862:30;25844:49;;25940:4;25928:17;;;25922:24;25965:6;26009:21;;;25987:20;;;25980:51;;;;26079:17;;;26073:24;26069:33;;;26047:20;;;26040:63;25832:2;25817:18;37751:149:101;25628:481:178;2321:198:57;;;;;;:::i;:::-;;:::i;4911:425:27:-;;;;;;:::i;:::-;;:::i;38605:159:101:-;;;;;;:::i;:::-;-1:-1:-1;;;;;38727:23:101;38673:35;38727:23;;;:13;:23;;;;;:30;;;;;;38605:159;;;;;;;;:::i;12102:656::-;5683:1:27;5712:7;1856:1:102;;5683:10:27;5712:14;;;5711:24;2767:14;2759:52;;;;-1:-1:-1;;;2759:52:27;;;;;;;:::i;:::-;;;;;;;;;12223:9:101::1;12218:534;12238:20:::0;;::::1;12218:534;;;12279:16;12298:9;;12308:1;12298:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12359:23:101;::::1;12324:32;12359:23:::0;;;:13:::1;:23;::::0;;;;;;;12324:58;;;;::::1;::::0;;;;;;;::::1;::::0;::::1;::::0;12279:31;;-1:-1:-1;12324:32:101;;:58;;12359:23;12324:58;::::1;::::0;::::1;;;::::0;::::1;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;::::0;;-1:-1:-1;12417:23:101;;12324:58;;-1:-1:-1;12396:18:101::1;12547:34;12417:23:::0;12547:22:::1;:34::i;:::-;12523:58;;12595:28;12626:45;12657:13;-1:-1:-1::0;;;;;12626:45:101::1;:30;:45::i;:::-;12595:76;;12685:56;12701:8;12711:12;12725:15;12685;:56::i;:::-;12265:487;;;;;12260:3;;;;;:::i;:::-;;;;12218:534;;;;12102:656:::0;;;:::o;39871:1055::-;40026:7;40092:34;;;:22;:34;;;;;:41;;40026:7;;40092:34;40127:5;;40092:41;;;;;;:::i;:::-;;;;;;;;;;40045:88;;;;;;;;40092:41;;;;40045:88;;;;;;;;-1:-1:-1;;;40045:88:101;;;;;;;;;;;-1:-1:-1;;;40045:88:101;;;-1:-1:-1;;;;;40045:88:101;;;;;;;;;;-1:-1:-1;40429:51:101;;;;40408:200;;;;-1:-1:-1;;;40408:200:101;;27298:2:178;40408:200:101;;;27280:21:178;27337:3;27317:18;;;27310:31;27377:34;27357:18;;;27350:62;27448:34;27428:18;;;27421:62;27520:34;27499:19;;;27492:63;-1:-1:-1;;;27571:19:178;;;27564:36;27617:19;;40408:200:101;27096:546:178;40408:200:101;40639:40;;;;:45;;;;:103;;;40702:18;:40;;;40688:54;;:11;:54;;;40639:103;40618:252;;;;-1:-1:-1;;;40618:252:101;;27849:2:178;40618:252:101;;;27831:21:178;27888:3;27868:18;;;27861:31;27928:34;27908:18;;;27901:62;27999:34;27979:18;;;27972:62;28071:34;28050:19;;;28043:63;-1:-1:-1;;;28122:19:178;;;28115:37;28169:19;;40618:252:101;27647:547:178;40618:252:101;40888:31;;;;39871:1055;-1:-1:-1;;;;39871:1055:101:o;17130:285::-;17237:25;17215:10;17201:25;;;;:13;:25;;;;;:32;;;;;:61;;;;;;;;:::i;:::-;;17193:134;;;;-1:-1:-1;;;17193:134:101;;28401:2:178;17193:134:101;;;28383:21:178;28440:2;28420:18;;;28413:30;28479:34;28459:18;;;28452:62;28550:30;28530:18;;;28523:58;28598:19;;17193:134:101;28199:424:178;17193:134:101;17377:10;17363:25;;;;:13;:25;;;;;;;:36;17342:66;;;;;;17401:6;;17342:66;:::i;:::-;;;;;;;;17130:285;:::o;5814:138:27:-;2285:14;;;;;;;;;-1:-1:-1;;;;;2285:14:27;-1:-1:-1;;;;;2285:23:27;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2271:39:27;:10;-1:-1:-1;;;;;2271:39:27;;2263:94;;;;-1:-1:-1;;;2263:94:27;;;;;;;:::i;:::-;5908:37:::1;5927:17;5908:18;:37::i;:::-;5814:138:::0;:::o;3832:392::-;2125:14;;:35;;-1:-1:-1;;;2125:35:27;;2149:10;2125:35;;;2061:51:178;2125:14:27;;;;-1:-1:-1;;;;;2125:14:27;;:23;;2034:18:178;;2125:35:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2117:88;;;;-1:-1:-1;;;2117:88:27;;;;;;;:::i;:::-;4064:7:::1;::::0;4034:25;;::::1;4033:38;4025:107;;;::::0;-1:-1:-1;;;4025:107:27;;30907:2:178;4025:107:27::1;::::0;::::1;30889:21:178::0;30946:2;30926:18;;;30919:30;30985:34;30965:18;;;30958:62;31056:26;31036:18;;;31029:54;31100:19;;4025:107:27::1;30705:420:178::0;4025:107:27::1;4142:7;:25:::0;;;4182:35:::1;::::0;1159:25:178;;;4189:10:27::1;::::0;4182:35:::1;::::0;1147:2:178;1132:18;4182:35:27::1;1013:177:178::0;41027:211:101;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;41190:34:101;;;;:22;:34;;;;;:41;;41225:5;;41190:41;;;;;;:::i;:::-;;;;;;;;;;41183:48;;;;;;;;41190:41;;;;41183:48;;;;;;;-1:-1:-1;;;41183:48:101;;;;;;;;;;-1:-1:-1;;;;;;;;41183:48:101;;;;;;;;;;;;-1:-1:-1;41027:211:101;;;;;:::o;38384:155::-;38480:52;;-1:-1:-1;;;38480:52:101;;;;;1159:25:178;;;38454:7:101;;38480:14;-1:-1:-1;;;;;38480:40:101;;;;1132:18:178;;38480:52:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;19824:119::-;1334:13:57;:11;:13::i;:::-;19903:33:101::1;19921:14;19903:17;:33::i;20126:95::-:0;1334:13:57;:11;:13::i;:::-;20193:21:101::1;20205:8;20193:11;:21::i;43099:271::-:0;-1:-1:-1;;;;;;;;;;;;;;;;;43216:147:101;43244:109;1214:54:102;43329:8:101;43288:50;;;;;;;;31304:25:178;;;-1:-1:-1;;;;;31365:32:178;31360:2;31345:18;;31338:60;31292:2;31277:18;;31130:274;43288:50:101;;;;;;;;;;;;;43278:61;;;;;;43244:16;:109::i;:::-;43216:14;:147::i;13943:3021::-;5683:1:27;5712:7;1856:1:102;;5683:10:27;5712:14;;;5711:24;2767:14;2759:52;;;;-1:-1:-1;;;2759:52:27;;;;;;;:::i;:::-;14383:20:101::1;14414:65;14452:13;;14414:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;14467:11:101::1;::::0;::::1;;::::0;-1:-1:-1;14414:37:101::1;::::0;-1:-1:-1;14414:65:101:i:1;:::-;14383:97:::0;-1:-1:-1;14511:49:101;;::::1;14490:163;;;::::0;-1:-1:-1;;;14490:163:101;;31611:2:178;14490:163:101::1;::::0;::::1;31593:21:178::0;31650:2;31630:18;;;31623:30;-1:-1:-1;;;;;;;;;;;31669:18:178;;;31662:62;31760:34;31740:18;;;31733:62;-1:-1:-1;;;31811:19:178;;;31804:34;31855:19;;14490:163:101::1;31409:471:178::0;14490:163:101::1;14729:9;14724:2234;14744:24:::0;;::::1;14724:2234;;;14789:18;14816:13;;14830:1;14816:16;;;;;;;:::i;:::-;::::0;;;::::1;;;;::::0;-1:-1:-1;14934:38:101::1;::::0;-1:-1:-1;14934:38:101::1;14975:18:::0;;14994:1;14975:21;;::::1;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;15065:51;::::0;-1:-1:-1;;;15065:51:101;;13279:4:178;13267:17;;15065:51:101::1;::::0;::::1;13249:36:178::0;14934:62:101;;-1:-1:-1;14934:62:101;-1:-1:-1;15065:13:101::1;-1:-1:-1::0;;;;;15065:37:101::1;::::0;::::1;::::0;13222:18:178;;15065:51:101::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15035:81;;::::0;::::1;15010:241;;;::::0;-1:-1:-1;;;15010:241:101;;32891:2:178;15010:241:101::1;::::0;::::1;32873:21:178::0;32930:3;32910:18;;;32903:31;-1:-1:-1;;;;;;;;;;;32950:18:178;;;32943:62;33041:34;33021:18;;;33014:62;33113:34;33092:19;;;33085:63;-1:-1:-1;;;33164:19:178;;;33157:36;33210:19;;15010:241:101::1;32689:546:178::0;15010:241:101::1;15266:27;15553:9:::0;15548:1171:::1;15568:30:::0;;::::1;15548:1171;;;15623:16;15642:19;;15662:1;15642:22;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15734:23:101;::::1;15699:32;15734:23:::0;;;:13:::1;:23;::::0;;;;;;;15699:58;;;;::::1;::::0;;;;;;;::::1;::::0;::::1;::::0;15623:41;;-1:-1:-1;15699:32:101;;:58;;15734:23;15699:58;::::1;::::0;::::1;;;::::0;::::1;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;::::0;;-1:-1:-1;15796:23:101;;15699:58;;-1:-1:-1;15775:18:101::1;15900:34;15796:23:::0;15900:22:::1;:34::i;:::-;15876:58:::0;-1:-1:-1;7404:1:117;-1:-1:-1;;;;;16050:46:101;::::1;7387:13:117::0;;;;7386:19;;7380:26;16017:197:101::1;;;::::0;-1:-1:-1;;;16017:197:101;;33442:2:178;16017:197:101::1;::::0;::::1;33424:21:178::0;33481:2;33461:18;;;33454:30;;;-1:-1:-1;;;;;;;;;;;33500:18:178;;;33493:62;33591:34;33571:18;;;33564:62;-1:-1:-1;;;33642:19:178;;;33635:35;33687:19;;16017:197:101::1;33240:472:178::0;16017:197:101::1;16331:19;-1:-1:-1::0;;;;;16320:30:101::1;:8;-1:-1:-1::0;;;;;16320:30:101::1;;16287:216;;;::::0;-1:-1:-1;;;16287:216:101;;33919:2:178;16287:216:101::1;::::0;::::1;33901:21:178::0;33958:3;33938:18;;;33931:31;-1:-1:-1;;;;;;;;;;;33978:18:178;;;33971:62;34069:34;34049:18;;;34042:62;34141:34;34120:19;;;34113:63;-1:-1:-1;;;34192:19:178;;;34185:38;34240:19;;16287:216:101::1;33717:548:178::0;16287:216:101::1;15854:668;16595:61;16611:8;16621:12;16635:13;;16649:1;16635:20;16651:1;16653;16651:3;;;;:::i;:::-;16635:20;;;;;;;:::i;:::-;16595:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;16595:15:101::1;::::0;-1:-1:-1;;;16595:61:101:i:1;:::-;-1:-1:-1::0;16696:8:101;;-1:-1:-1;15600:3:101::1;::::0;-1:-1:-1;15600:3:101;::::1;:::i;:::-;;;15548:1171;;;-1:-1:-1::0;16824:37:101::1;::::0;::::1;;::::0;;;:23:::1;:37;::::0;;;;;;;;16864:12:::1;16824:52:::0;;;;16895;;1159:25:178;;;16895:52:101::1;::::0;1132:18:178;16895:52:101::1;;;;;;;14775:2183;;;;14770:3;;;;:::i;:::-;;;14724:2234;;;;14121:2843;13943:3021:::0;;;;;:::o;37975:130::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;38075:23:101;;;;;;:13;:23;;;;;;;;;38068:30;;;;;;;;;;;;;;;;38075:23;;38068:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;-1:-1:-1;38068:30:101;37975:130;-1:-1:-1;;37975:130:101:o;4299:136:27:-;2125:14;;:35;;-1:-1:-1;;;2125:35:27;;2149:10;2125:35;;;2061:51:178;2125:14:27;;;;-1:-1:-1;;;;;2125:14:27;;:23;;2034:18:178;;2125:35:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2117:88;;;;-1:-1:-1;;;2117:88:27;;;;;;;:::i;:::-;-1:-1:-1;;4349:7:27::1;:27:::0;;;4391:37:::1;::::0;1159:25:178;;;4398:10:27::1;::::0;4391:37:::1;::::0;1147:2:178;1132:18;4391:37:27::1;;;;;;;4299:136::o:0;19350:233:101:-;1334:13:57;:11;:13::i;:::-;2315:11:101::1;::::0;19498:12;;2315:11:::1;::::0;;::::1;2300:26:::0;;::::1;;2279:129;;;::::0;-1:-1:-1;;;2279:129:101;;34941:2:178;2279:129:101::1;::::0;::::1;34923:21:178::0;34980:2;34960:18;;;34953:30;35019:34;34999:18;;;34992:62;35090:25;35070:18;;;35063:53;35133:19;;2279:129:101::1;34739:419:178::0;2279:129:101::1;19522:54:::2;19544:12;19558:17;19522:21;:54::i;:::-;1357:1:57::1;19350:233:101::0;;:::o;3739:27:102:-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3739:27:102;;-1:-1:-1;3739:27:102;:::o;17857:238:101:-;2004:7;;-1:-1:-1;;;;;2004:7:101;1990:10;:21;1982:92;;;;-1:-1:-1;;;1982:92:101;;35365:2:178;1982:92:101;;;35347:21:178;35404:2;35384:18;;;35377:30;35443:34;35423:18;;;35416:62;35514:28;35494:18;;;35487:56;35560:19;;1982:92:101;35163:422:178;1982:92:101;17982:106:::1;18026:8;18064:13;;17982:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;17982:19:101::1;::::0;-1:-1:-1;;;17982:106:101:i:1;2071:101:57:-:0;1334:13;:11;:13::i;:::-;2135:30:::1;2162:1;2135:18;:30::i;:::-;2071:101::o:0;42414:475:101:-;42668:7;42731:151;865:214:102;42803:19:101;42824:21;42847:18;42867:4;42873:6;42758:122;;;;;;;;;;;;;:::i;42731:151::-;42724:158;42414:475;-1:-1:-1;;;;;;42414:475:101:o;41375:142::-;41450:7;41476:34;41499:10;41476:22;:34::i;43462:184::-;43583:7;43613:26;1513:6:57;;-1:-1:-1;;;;;1513:6:57;;1441:85;43613:26:101;43606:33;;43462:184;:::o;8448:2859::-;5683:1:27;5712:7;;1611:1:102;;5712:14:27;;;5711:24;2767:14;2759:52;;;;-1:-1:-1;;;2759:52:27;;;;;;;:::i;:::-;8881:49:101;;::::1;8873:130;;;::::0;-1:-1:-1;;;8873:130:101;;37034:2:178;8873:130:101::1;::::0;::::1;37016:21:178::0;37073:2;37053:18;;;37046:30;;;37112:34;37092:18;;;37085:62;37183:34;37163:18;;;37156:62;-1:-1:-1;;;37234:19:178;;;37227:35;37279:19;;8873:130:101::1;36832:472:178::0;8873:130:101::1;9324:18;9345:42;9368:10;9380:6;9345:22;:42::i;:::-;9324:63;;9492:245;9557:10;9604;9648:18;;9492:245;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;9704:22;9492:29;:245::i;:::-;9890:30;9923:219;9965:10;10001;10040:13;;10075:6;;9923:219;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;10114:17:101;;-1:-1:-1;9923:17:101::1;::::0;-1:-1:-1;;9923:219:101:i:1;:::-;9890:252;;10351:9;10346:955;10366:24:::0;;::::1;10346:955;;;10411:41;10455:13;:38;10475:13;;10489:1;10475:16;;;;;;;:::i;:::-;::::0;;;::::1;;;;10455:38:::0;;-1:-1:-1;10455:38:101::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;10455:38:101;10411:82;;::::1;::::0;::::1;::::0;;;;::::1;::::0;::::1;::::0;;;::::1;-1:-1:-1::0;;;10411:82:101;::::1;::::0;::::1;::::0;;::::1;::::0;;;;-1:-1:-1;;;10411:82:101;;::::1;::::0;;::::1;::::0;;;;;;;10725:29;;:32;;10411:82;;-1:-1:-1;10725:29:101;10755:1;;10725:32;::::1;;;;;:::i;:::-;;;;;;;:69;;;10721:570;;;10814:370;10871:13;;10885:1;10871:16;;;;;;;:::i;:::-;;;;;;;;;10865:23;;10928:7;:19;;;10948:1;10928:22;;;;;;;;:::i;:::-;;;;;;;10985:10;11035:7;:22;;;11058:1;11035:25;;;;;;;;:::i;:::-;;;;;;;11094:18;;11113:1;11094:21;;;;;;;:::i;:::-;;;;;;10814:370;;;;;;;;;;:::i;:::-;11148:17;10814:14;:370::i;:::-;11203:73;11223:18;;11242:1;11223:21;;;;;;;:::i;:::-;;;;;;:30;;;;;;;;;;:::i;:::-;11255:13;;11269:1;11255:20;11271:1;11273;11271:3;;;;:::i;:::-;11255:20;;;;;;;:::i;:::-;11203:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;11203:19:101::1;::::0;-1:-1:-1;;;11203:73:101:i:1;:::-;-1:-1:-1::0;10392:3:101;::::1;::::0;::::1;:::i;:::-;;;;10346:955;;;;8863:2444;;8448:2859:::0;;;;;;;;;;:::o;5809:1630::-;5683:1:27;5712:7;;1611:1:102;;5712:14:27;;;5711:24;2767:14;2759:52;;;;-1:-1:-1;;;2759:52:27;;;;;;;:::i;:::-;6403:18:101::1;6424:42;6447:10;6459:6;6424:22;:42::i;:::-;6403:63;;6619:37;6659:221;6701:10;6738;6777:13;;6813:6;;6659:221;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;6852:17:101;;-1:-1:-1;6659:17:101::1;::::0;-1:-1:-1;;6659:221:101:i:1;:::-;:243:::0;;-1:-1:-1;6659:243:101::1;7099:334;7119:24:::0;;::::1;7099:334;;;7164:18;7191:13;;7205:1;7191:16;;;;;;;:::i;:::-;::::0;;;::::1;;;;7276:27;::::0;;;:13:::1;:27;::::0;;;;:44;7248:24;;7191:16;;-1:-1:-1;7276:44:101::1;;::::0;-1:-1:-1;7248:21:101;;7270:1;;7248:24;::::1;;;;;:::i;:::-;;;;;;;:72;;;;7223:199;;;::::0;-1:-1:-1;;;7223:199:101;;37764:2:178;7223:199:101::1;::::0;::::1;37746:21:178::0;37803:2;37783:18;;;37776:30;;;37842:34;37822:18;;;37815:62;37913:34;37893:18;;;37886:62;-1:-1:-1;;;37964:19:178;;;37957:35;38009:19;;7223:199:101::1;37562:472:178::0;7223:199:101::1;-1:-1:-1::0;7145:3:101;::::1;::::0;::::1;:::i;:::-;;;;7099:334;;;;6091:1348;;5809:1630:::0;;;;;;;:::o;39104:416::-;39245:15;39272:23;39311:11;:18;-1:-1:-1;;;;;39298:32:101;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39298:32:101;;39272:58;;39345:9;39340:150;39364:11;:18;39360:1;:22;39340:150;;;39416:63;39451:11;39464;39476:1;39464:14;;;;;;;;:::i;:::-;;;;;;;39416:34;:63::i;:::-;39403:7;39411:1;39403:10;;;;;;;;:::i;:::-;:76;;;;:10;;;;;;;;;;;:76;39384:3;;;;:::i;:::-;;;;39340:150;;;-1:-1:-1;39506:7:101;39104:416;-1:-1:-1;;;39104:416:101:o;11499:252::-;1738:1:102;5712:7:27;;5683:10;5712:14;;;5711:24;2767:14;2759:52;;;;-1:-1:-1;;;2759:52:27;;;;;;;:::i;:::-;11636:108:101::1;11680:10;11720:13;;11636:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;11636:19:101::1;::::0;-1:-1:-1;;;11636:108:101:i:1;18785:277::-:0;1334:13:57;:11;:13::i;:::-;18993:62:101::1;19007:17;19026:12;19040:14;18993:13;:62::i;3565:1212::-:0;3111:19:59;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:59;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:59;1476:19:61;:23;;;3219:66:59;;-1:-1:-1;3268:12:59;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:59;;38241:2:178;3157:201:59;;;38223:21:178;38280:2;38260:18;;;38253:30;38319:34;38299:18;;;38292:62;-1:-1:-1;;;38370:18:178;;;38363:44;38424:19;;3157:201:59;38039:410:178;3157:201:59;3368:12;:16;;-1:-1:-1;;3368:16:59;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:59;;;;;3394:65;4000:14:101::1;:21;3971:18;:25;:50;:101;;;;;4050:15;:22;4025:14;:21;:47;3971:101;3950:201;;;::::0;-1:-1:-1;;;3950:201:101;;38656:2:178;3950:201:101::1;::::0;::::1;38638:21:178::0;38695:2;38675:18;;;38668:30;38734:34;38714:18;;;38707:62;-1:-1:-1;;;38785:18:178;;;38778:51;38846:19;;3950:201:101::1;38454:417:178::0;3950:201:101::1;4198:33;4217:13;4198:18;:33::i;:::-;4241:56;4259:15;4276:20;4241:17;:56::i;:::-;4307:33;4325:14;4307:17;:33::i;:::-;4350:21;4362:8;4350:11;:21::i;:::-;4440:10;:39:::0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;4440:39:101;;;;;;::::1;::::0;;-1:-1:-1;;;;;4464:13:101::1;4440:39:::0;::::1;-1:-1:-1::0;;;;;;4440:39:101;;::::1;;::::0;;;4489:40;;;;::::1;::::0;;;::::1;::::0;;4513:14:::1;4489:40:::0;::::1;::::0;;::::1;;::::0;;4539:39;;;;::::1;::::0;;;;;;::::1;::::0;;4563:13:::1;4539:39:::0;;::::1;::::0;;;::::1;;::::0;;;4615:156:::1;4639:18;:25;4635:1;:29;4615:156;;;4685:75;4699:18;4718:1;4699:21;;;;;;;;:::i;:::-;;;;;;;4722:14;4737:1;4722:17;;;;;;;;:::i;:::-;;;;;;;4741:15;4757:1;4741:18;;;;;;;;:::i;:::-;;;;;;;4685:13;:75::i;:::-;4666:3:::0;::::1;::::0;::::1;:::i;:::-;;;;4615:156;;;;3483:14:59::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;3513:21:59;;;3553:14;;-1:-1:-1;13249:36:178;;3553:14:59;;13237:2:178;13222:18;3553:14:59;;;;;;;3479:99;3101:483;3565:1212:101;;;;;;;;:::o;2321:198:57:-;1334:13;:11;:13::i;:::-;-1:-1:-1;;;;;2409:22:57;::::1;2401:73;;;::::0;-1:-1:-1;;;2401:73:57;;39277:2:178;2401:73:57::1;::::0;::::1;39259:21:178::0;39316:2;39296:18;;;39289:30;39355:34;39335:18;;;39328:62;-1:-1:-1;;;39406:18:178;;;39399:36;39452:19;;2401:73:57::1;39075:402:178::0;2401:73:57::1;2484:28;2503:8;2484:18;:28::i;4911:425:27:-:0;2285:14;;;;;;;;;-1:-1:-1;;;;;2285:14:27;-1:-1:-1;;;;;2285:23:27;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2271:39:27;:10;-1:-1:-1;;;;;2271:39:27;;2263:94;;;;-1:-1:-1;;;2263:94:27;;;;;;;:::i;:::-;5164:7:::1;;5163:8;5141:15;5140:16;5128:7;;5127:8;5126:31;5125:47;5104:138;;;::::0;-1:-1:-1;;;5104:138:27;;39684:2:178;5104:138:27::1;::::0;::::1;39666:21:178::0;39723:2;39703:18;;;39696:30;39762:34;39742:18;;;39735:62;39833:26;39813:18;;;39806:54;39877:19;;5104:138:27::1;39482:420:178::0;5104:138:27::1;5252:7;:25:::0;;;5292:37:::1;::::0;1159:25:178;;;5301:10:27::1;::::0;5292:37:::1;::::0;1147:2:178;1132:18;5292:37:27::1;1013:177:178::0;35443:336:101;35518:7;35561:34;;;:22;:34;;;;;:41;35616:18;35612:161;;-1:-1:-1;35657:1:101;;35443:336;-1:-1:-1;;35443:336:101:o;35612:161::-;35696:34;;;;:22;:34;;;;;35731:17;35747:1;35731:13;:17;:::i;:::-;35696:53;;;;;;;;:::i;:::-;;;;;;;;;;:66;-1:-1:-1;;;35696:66:101;;-1:-1:-1;;;;;35696:66:101;;;-1:-1:-1;;;35443:336:101:o;5465:1257:117:-;5532:12;5650:15;5728:23;5764:20;5777:6;5764:12;:20::i;:::-;5754:31;;-1:-1:-1;;;;;5754:31:117;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5754:31:117;;5728:57;;5841:18;6093:9;6088:601;6122:10;:17;6109:10;:30;6108:45;;;;;6149:3;6145:1;:7;6108:45;6088:601;;;6252:1;:6;;;-1:-1:-1;6339:16:117;;;:21;6335:344;;6524:1;6511:16;;6486:10;6497;6486:22;;;;;;;;:::i;:::-;;;;:41;-1:-1:-1;;;;;6486:41:117;;;;;;;;;6650:12;;;;;6335:344;6155:3;;;:::i;:::-;;;6088:601;;;-1:-1:-1;6705:10:117;;5465:1257;-1:-1:-1;;;;5465:1257:117:o;29710:631:101:-;29893:25;29870:12;:19;;;:48;;;;;;;;:::i;:::-;;29866:85;;29710:631;;;:::o;29866:85::-;29981:23;;30040:72;;-1:-1:-1;;;30040:72:101;;29960:18;;-1:-1:-1;;;;;30040:13:101;:33;;;;:72;;30074:8;;29981:23;;30096:15;;30040:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30014:98;-1:-1:-1;;;;;;30128:23:101;;7978:11:117;30123:212:101;;30169:151;30217:8;30258:47;30289:15;-1:-1:-1;;;;;30258:47:101;:30;:47::i;:::-;30169:19;:151::i;:::-;29856:485;;29710:631;;;:::o;6012:360:27:-;-1:-1:-1;;;;;6115:40:27;;6094:160;;;;-1:-1:-1;;;6094:160:27;;40925:2:178;6094:160:27;;;40907:21:178;40964:2;40944:18;;;40937:30;41003:34;40983:18;;;40976:62;41074:34;41054:18;;;41047:62;-1:-1:-1;;;41125:19:178;;;41118:40;41175:19;;6094:160:27;40723:477:178;6094:160:27;6287:14;;6269:52;;;-1:-1:-1;;;;;6287:14:27;;;;;;41465:34:178;;41535:15;;;41530:2;41515:18;;41508:43;6269:52:27;;41400:18:178;6269:52:27;;;;;;;6331:14;:34;;-1:-1:-1;;;;;6331:34:27;;;;;-1:-1:-1;;;;;;6331:34:27;;;;;;;;;6012:360::o;1599:130:57:-;921:10:63;1662:7:57;:5;:7::i;:::-;-1:-1:-1;;;;;1662:23:57;;1654:68;;;;-1:-1:-1;;;1654:68:57;;41764:2:178;1654:68:57;;;41746:21:178;;;41783:18;;;41776:30;41842:34;41822:18;;;41815:62;41894:18;;1654:68:57;41562:356:178;37132:179:101;37230:13;;37209:53;;;-1:-1:-1;;;;;37230:13:101;;;41465:34:178;;41535:15;;;41530:2;41515:18;;41508:43;37209:53:101;;41400:18:178;37209:53:101;;;;;;;37272:13;:32;;-1:-1:-1;;;;;;37272:32:101;-1:-1:-1;;;;;37272:32:101;;;;;;;;;;37132:179::o;37317:137::-;37397:7;;37382:35;;;-1:-1:-1;;;;;37397:7:101;;;41465:34:178;;41535:15;;;41530:2;41515:18;;41508:43;37382:35:101;;41400:18:178;37382:35:101;;;;;;;37427:7;:20;;-1:-1:-1;;;;;;37427:20:101;-1:-1:-1;;;;;37427:20:101;;;;;;;;;;37317:137::o;4327:165:93:-;4404:7;4430:55;4452:20;:18;:20::i;:::-;4474:10;9184:57:92;;-1:-1:-1;;;9184:57:92;;;58012:27:178;58055:11;;;58048:27;;;58091:12;;;58084:28;;;9148:7:92;;58128:12:178;;9184:57:92;;;;;;;;;;;;9174:68;;;;;;9167:75;;9055:194;;;;;11044:451:116;-1:-1:-1;;;;;;;;;;;;;;;;;11123:12:116;;;11185:24;-1:-1:-1;;;;;;;;;;;11193:2:116;11185:24;:::i;:::-;11173:36;;11220:239;11259:13;11270:1;11259:10;:13::i;:::-;11247:25;;-1:-1:-1;11247:25:116;-1:-1:-1;;;;;;;;;;;;11336:1:116;11333;11326:24;11318:4;:32;11314:92;;;11378:13;;;;;;;;;;;;;;;;;;;;11044:451;-1:-1:-1;;;11044:451:116:o;11314:92::-;-1:-1:-1;;;;;;;;;;;11434:1:116;11431;11424:24;11420:28;;11220:239;;3308:360:117;3419:7;3438:14;3455:44;3481:17;3455:25;:44::i;:::-;3438:61;;3541:6;3524:13;3519:18;;:1;:18;;3518:29;3510:127;;;;-1:-1:-1;;;3510:127:117;;42683:2:178;3510:127:117;;;42665:21:178;42722:2;42702:18;;;42695:30;42761:34;42741:18;;;42734:62;42832:33;42812:18;;;42805:61;42883:19;;3510:127:117;42481:427:178;3510:127:117;3655:6;3308:360;-1:-1:-1;;;3308:360:117:o;36883:239:101:-;36996:27;;;;;;;:13;:27;;;;;;;;;:47;;;;;;;;;;;;;;;;;;-1:-1:-1;;36996:47:101;;;;;-1:-1:-1;;;36996:47:101;;;;;;-1:-1:-1;;36996:47:101;-1:-1:-1;;;36996:47:101;;;;;;;;;;;;;;37058:57;;25844:49:178;;;25922:24;26009:21;;25987:20;;;25980:51;;;;26073:24;26069:33;26047:20;;;26040:63;;;;37058:57:101;;25832:2:178;25817:18;37058:57:101;;;;;;;36883:239;;:::o;27039:2284::-;-1:-1:-1;;;;;27268:23:101;;27232:33;27268:23;;;:13;:23;;;;;27322;;27386:25;27363:19;;;;;;:48;;;;;;;;:::i;:::-;;27355:128;;;;-1:-1:-1;;;27355:128:101;;43115:2:178;27355:128:101;;;43097:21:178;43154:2;43134:18;;;43127:30;43193:34;43173:18;;;43166:62;43264:34;43244:18;;;43237:62;-1:-1:-1;;;43315:19:178;;;43308:34;43359:19;;27355:128:101;42913:471:178;27355:128:101;28063:11;;27976:23;;28010:65;;28048:13;;28063:11;;28010:37;:65::i;:::-;27976:100;;28086:21;28110:34;28133:10;28110:22;:34::i;:::-;28086:58;-1:-1:-1;;;;;;28163:23:101;;28154:98;;;;-1:-1:-1;;;28154:98:101;;43591:2:178;28154:98:101;;;43573:21:178;43630:2;43610:18;;;43603:30;43669:34;43649:18;;;43642:62;43740:29;43720:18;;;43713:57;43787:19;;28154:98:101;43389:423:178;28154:98:101;28270:41;-1:-1:-1;;;;;28270:26:101;;;;:41;;8398:5:117;;:10;;8310:105;28270:41:101;28262:143;;;;-1:-1:-1;;;28262:143:101;;44019:2:178;28262:143:101;;;44001:21:178;44058:2;44038:18;;;44031:30;44097:34;44077:18;;;44070:62;44168:34;44148:18;;;44141:62;44240:27;44219:19;;;44212:56;44285:19;;28262:143:101;43817:493:178;28262:143:101;-1:-1:-1;;;;;28443:36:101;;;8930:2:117;8926:6;;;28538:103:101;28586:10;8926:6:117;28538:21:101;:103::i;:::-;-1:-1:-1;;;;;28823:17:101;;28819:224;;28858:19;;;:49;;-1:-1:-1;;28858:49:101;28880:27;28858:49;;;28921:50;;-1:-1:-1;;;28921:50:101;;-1:-1:-1;;;;;2079:32:178;;;28921:50:101;;;2061:51:178;28921:14:101;:40;;;;2034:18:178;;28921:50:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28990:42:101;;29021:10;;-1:-1:-1;;;;;;28990:42:101;;;-1:-1:-1;28990:42:101;;;;;28819:224;29120:58;;-1:-1:-1;;;29120:58:101;;-1:-1:-1;;;;;29120:14:101;:33;;;;:58;;29154:8;;29164:13;;29120:58;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;29188:59:101;;-1:-1:-1;;;29188:59:101;;-1:-1:-1;;;;;29188:13:101;:32;;-1:-1:-1;29188:32:101;;-1:-1:-1;29188:59:101;;29221:10;;29233:13;;29188:59;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;29257:59:101;;-1:-1:-1;;;29257:59:101;;-1:-1:-1;;;;;29257:13:101;:32;;-1:-1:-1;29257:32:101;;-1:-1:-1;29257:59:101;;29290:10;;29302:13;;29257:59;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27154:2169;;;;;27039:2284;;:::o;2673:187:57:-;2765:6;;;-1:-1:-1;;;;;2781:17:57;;;-1:-1:-1;;;;;;2781:17:57;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;23973:425:101:-;24164:38;;-1:-1:-1;;;24164:38:101;;-1:-1:-1;;;;;2079:32:178;;;24164:38:101;;;2061:51:178;24121:18:101;;24164:14;:28;;;;;;2034:18:178;;24164:38:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24151:51;-1:-1:-1;24216:15:101;24212:153;;24260:14;-1:-1:-1;;;;;24260:35:101;;24296:8;24306:6;24314:39;24344:8;24314:29;:39::i;:::-;24260:94;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;31290:1102::-;31641:27;;;;;31617:52;;;;:23;:52;;;;;;;;;31616:53;31608:148;;;;-1:-1:-1;;;31608:148:101;;46336:2:178;31608:148:101;;;46318:21:178;46375:2;46355:18;;;46348:30;46414:34;46394:18;;;46387:62;46485:34;46465:18;;;46458:62;-1:-1:-1;;;46536:19:178;;;46529:49;46595:19;;31608:148:101;46134:486:178;31608:148:101;31807:15;31774:22;:29;;;:48;;31766:143;;;;-1:-1:-1;;;31766:143:101;;46827:2:178;31766:143:101;;;46809:21:178;46866:2;46846:18;;;46839:30;46905:34;46885:18;;;46878:62;46976:34;46956:18;;;46949:62;-1:-1:-1;;;47027:19:178;;;47020:49;47086:19;;31766:143:101;46625:486:178;31766:143:101;31980:27;;;;;;31956:52;;;;:23;:52;;;;;;;;:59;;-1:-1:-1;;31956:59:101;32011:4;31956:59;;;32136:13;;32269:27;;32298:29;;;;32078:307;;-1:-1:-1;;;;;32136:13:101;;;;32164:164;;32205:19;;32226:21;;32249:18;;32269:27;32164:40;:164::i;:::-;32343:32;;32078:44;:307::i;20780:2696::-;21023:30;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;21023:30:101;21522:20;21553:65;21591:13;;21553:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21606:11:101;;;;;-1:-1:-1;21553:37:101;;-1:-1:-1;21553:65:101:i;:::-;21522:97;;21629:21;21653:34;21676:10;21653:22;:34::i;:::-;21629:58;-1:-1:-1;;;;;;21706:20:101;;21697:93;;;;-1:-1:-1;;;21697:93:101;;47318:2:178;21697:93:101;;;47300:21:178;47357:2;47337:18;;;47330:30;47396:34;47376:18;;;47369:62;47467:27;47447:18;;;47440:55;47512:19;;21697:93:101;47116:421:178;21697:93:101;8177:5:117;;;-1:-1:-1;;;;;8177:5:117;:10;21800:159:101;;;;-1:-1:-1;;;21800:159:101;;47744:2:178;21800:159:101;;;47726:21:178;47783:3;47763:18;;;47756:31;47823:34;47803:18;;;47796:62;47894:34;47874:18;;;47867:62;47966:34;47945:19;;;47938:63;-1:-1:-1;;;48017:19:178;;;48010:39;48066:19;;21800:159:101;47542:549:178;21800:159:101;-1:-1:-1;;;;;21997:18:101;;;:32;;;8653:5:117;22239:103:101;22287:10;8653:5:117;22239:21:101;:103::i;:::-;22379:10;22358:40;22391:6;22358:40;;;;;;:::i;:::-;;;;;;;;22611:25;-1:-1:-1;;;;;22577:23:101;;;;;;:13;:23;;;;;:30;;;;;:59;;;;;;;;:::i;:::-;;22573:477;;22678:119;;;;;;;;;;;22757:25;22678:119;;;;;;;-1:-1:-1;;;;;22652:23:101;;-1:-1:-1;22652:23:101;;;:13;:23;;;;;;:145;;;;;;;;;;;22678:119;;22652:23;:145;;;;-1:-1:-1;;22652:145:101;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;22914:65:101;;-1:-1:-1;;;22914:65:101;;-1:-1:-1;;;;;22914:14:101;:36;;-1:-1:-1;22914:36:101;;:65;;22951:8;;22961:17;;22914:65;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22999:40:101;;23028:10;;-1:-1:-1;;;;;;22999:40:101;;;-1:-1:-1;22999:40:101;;;;;22573:477;23151:56;;-1:-1:-1;;;23151:56:101;;-1:-1:-1;;;;;23151:14:101;:31;;;;:56;;23183:8;;23193:13;;;;23151:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23278:67:101;;-1:-1:-1;;;23278:67:101;;-1:-1:-1;;;;;23278:13:101;:30;;-1:-1:-1;23278:30:101;;-1:-1:-1;23278:67:101;;23309:8;;23319:10;;23331:13;;;;23278:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23278:67:101;;;;;;;;;;;;:::i;:::-;23242:19;;;;23217:128;;;;23218:22;;;23217:128;;;;23387:57;-1:-1:-1;;;23387:57:101;;-1:-1:-1;;;;;23387:13:101;:30;;;;:57;;23418:10;;23430:13;;;;23387:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23387:57:101;;;;;;;;;;;;:::i;:::-;23355:89;;-1:-1:-1;;;20780:2696:101;;;;;;;;:::o;25547:1246::-;25840:19;;;;;-1:-1:-1;;;;;25888:29:101;;;25815:22;25888:29;;;:13;:29;;;;;;;:40;25840:19;;25946:29;;;;;25938:95;;;;-1:-1:-1;;;25938:95:101;;52627:2:178;25938:95:101;;;52609:21:178;52666:2;52646:18;;;52639:30;-1:-1:-1;;;;;;;;;;;52685:18:178;;;52678:62;-1:-1:-1;;;52756:18:178;;;52749:51;52817:19;;25938:95:101;52425:417:178;25938:95:101;26078:12;26051:39;;:10;:23;;;:39;;;26043:123;;;;-1:-1:-1;;;26043:123:101;;53049:2:178;26043:123:101;;;53031:21:178;53088:2;53068:18;;;53061:30;-1:-1:-1;;;;;;;;;;;53107:18:178;;;53100:62;53198:34;53178:18;;;53171:62;-1:-1:-1;;;53249:19:178;;;53242:38;53297:19;;26043:123:101;52847:475:178;26043:123:101;26296:53;;-1:-1:-1;;;26296:53:101;;;;;53497:25:178;;;53570:4;53558:17;;53538:18;;;53531:45;26267:26:101;;26296:13;-1:-1:-1;;;;;26296:29:101;;;;53470:18:178;;26296:53:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26267:82;;26399:56;26424:19;26445:9;26399:24;:56::i;:::-;-1:-1:-1;;;;;26380:75:101;:16;-1:-1:-1;;;;;26380:75:101;;26359:208;;;;-1:-1:-1;;;26359:208:101;;54043:2:178;26359:208:101;;;54025:21:178;54082:2;54062:18;;;54055:30;-1:-1:-1;;;;;;;;;;;54101:18:178;;;54094:62;54192:34;54172:18;;;54165:62;-1:-1:-1;;;54243:19:178;;;54236:53;54306:19;;26359:208:101;53841:490:178;26359:208:101;26620:48;26640:16;26658:9;26620:19;:48::i;:::-;-1:-1:-1;;;;;26598:70:101;:19;-1:-1:-1;;;;;26598:70:101;;26577:209;;;;-1:-1:-1;;;26577:209:101;;54538:2:178;26577:209:101;;;54520:21:178;54577:2;54557:18;;;54550:30;-1:-1:-1;;;;;;;;;;;54596:18:178;;;54589:62;54687:34;54667:18;;;54660:62;54759:30;54738:19;;;54731:59;54807:19;;26577:209:101;54336:496:178;36108:769:101;36238:12;36279:34;;;:22;:34;;;;;:41;36238:12;36489:231;36513:6;36509:1;:10;36489:231;;;36568:1;36555:10;36564:1;36555:6;:10;:::i;:::-;:14;;;;:::i;:::-;36540:30;;36652:11;36589:74;;:22;:34;36612:10;36589:34;;;;;;;;;;;36624:5;36589:41;;;;;;;;;;:::i;:::-;;;;;;;;;;:59;;;:74;36585:125;;36683:12;;;;36585:125;36521:3;;;;:::i;:::-;;;;36489:231;;;-1:-1:-1;36730:140:101;;-1:-1:-1;;;36730:140:101;;55039:2:178;36730:140:101;;;55021:21:178;55078:3;55058:18;;;55051:31;55118:34;55098:18;;;55091:62;55189:34;55169:18;;;55162:62;55261:34;55240:19;;;55233:63;-1:-1:-1;;;55312:19:178;;;55305:43;55365:19;;36730:140:101;54837:553:178;32856:894:101;33150:11;;;;1975:3:102;33179:34:101;;33171:100;;;;-1:-1:-1;;;33171:100:101;;55597:2:178;33171:100:101;;;55579:21:178;55636:2;55616:18;;;55609:30;55675:34;55655:18;;;55648:62;-1:-1:-1;;;55726:18:178;;;55719:51;55787:19;;33171:100:101;55395:417:178;33171:100:101;33295:19;:15;33313:1;33295:19;:::i;:::-;33281:11;:33;;-1:-1:-1;;33281:33:101;;;;;;;;;;;;33411:15;33496:54;33411:15;33532:17;33496:21;:54::i;:::-;33560:74;;-1:-1:-1;;;;;;33560:74:101;;-1:-1:-1;;;;;33560:13:101;:30;;;;:74;;33591:12;;33605;;33619:14;;33560:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;33644:44:101;;-1:-1:-1;;;33644:44:101;;13279:4:178;13267:17;;33644:44:101;;;13249:36:178;33644:13:101;-1:-1:-1;;;;;33644:30:101;;-1:-1:-1;33644:30:101;;-1:-1:-1;13222:18:178;;33644:44:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;33698:45:101;;-1:-1:-1;;;33698:45:101;;13279:4:178;13267:17;;33698:45:101;;;13249:36:178;33698:14:101;-1:-1:-1;;;;;33698:31:101;;-1:-1:-1;33698:31:101;;-1:-1:-1;13222:18:178;;33698:45:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2943:441:27;3104:1;3077:14;;;;-1:-1:-1;;;;;3077:14:27;3069:37;:79;;;;-1:-1:-1;;;;;;3110:38:27;;;;3069:79;3048:197;;;;-1:-1:-1;;;3048:197:27;;57274:2:178;3048:197:27;;;57256:21:178;57313:2;57293:18;;;57286:30;57352:34;57332:18;;;57325:62;57423:34;57403:18;;;57396:62;-1:-1:-1;;;57474:19:178;;;57467:38;57522:19;;3048:197:27;57072:475:178;3048:197:27;3255:7;:26;;;3296:36;;1159:25:178;;;3303:10:27;;3296:36;;1147:2:178;1132:18;3296:36:27;;;;;;;3342:35;3361:15;3342:18;:35::i;:::-;2943:441;;:::o;6797:406:117:-;6853:6;;6897:209;6904:5;;6897:209;;6931:5;6935:1;6931;:5;:::i;:::-;6925:12;;;;7020:7;;;;:::i;:::-;;;;6897:209;;3133:308:93;3186:7;3217:4;-1:-1:-1;;;;;3226:12:93;3209:29;;:66;;;;;3259:16;3242:13;:33;3209:66;3205:230;;;-1:-1:-1;3298:24:93;;3133:308::o;3205:230::-;-1:-1:-1;3621:73:93;;;3382:10;3621:73;;;;61129:25:178;;;;3394:12:93;61170:18:178;;;61163:34;3408:15:93;61213:18:178;;;61206:34;3665:13:93;61256:18:178;;;61249:34;3688:4:93;61299:19:178;;;;61292:61;;;;3621:73:93;;;;;;;;;;61101:19:178;;;;3621:73:93;;;3611:84;;;;;;43462:184:101:o;11616:433:116:-;11670:7;;;-1:-1:-1;;;;;;;;;;;11801:1:116;-1:-1:-1;;;;;;;;;;;11785:1:116;-1:-1:-1;;;;;;;;;;;11769:1:116;11766;11759:24;11752:47;11745:70;11730:85;;11912:9;11924:91;11931:4;11937:65;-1:-1:-1;;;;;;;;;;;11924:6:116;:91::i;:::-;12034:4;;11912:103;;-1:-1:-1;11616:433:116;;-1:-1:-1;;;11616:433:116:o;1188:1693:117:-;1278:7;571:3;1409:17;:24;:49;;1401:142;;;;-1:-1:-1;;;1401:142:117;;58353:2:178;1401:142:117;;;58335:21:178;58392:2;58372:18;;;58365:30;;;58431:34;58411:18;;;58404:62;58502:34;58482:18;;;58475:62;-1:-1:-1;;;58553:19:178;;;58546:35;58598:19;;1401:142:117;58151:472:178;1401:142:117;1619:24;;1615:77;;-1:-1:-1;1679:1:117;;1188:1693;-1:-1:-1;1188:1693:117:o;1615:77::-;1770:14;1873:15;2180:17;2198:1;2180:20;;;;;;;;:::i;:::-;;;;;2169:1;2180:20;;;;;2169:32;;;;-1:-1:-1;2284:568:117;2308:17;:24;2304:1;:28;2284:568;;;2480:17;2498:1;2480:20;;;;;;;;:::i;:::-;;;;;2469:1;2480:20;;;;;2469:32;;-1:-1:-1;2665:16:117;;;2657:100;;;;-1:-1:-1;;;2657:100:117;;58830:2:178;2657:100:117;;;58812:21:178;58869:2;58849:18;;;58842:30;58908:34;58888:18;;;58881:62;58979:34;58959:18;;;58952:62;-1:-1:-1;;;59030:19:178;;;59023:38;59078:19;;2657:100:117;58628:475:178;2657:100:117;2824:16;;;;2334:3;;;:::i;:::-;;;2284:568;;;-1:-1:-1;2868:6:117;;1188:1693;-1:-1:-1;;;1188:1693:117:o;33929:1378:101:-;34019:21;34043:34;;;:22;:34;;;;;:41;34099:18;34095:1206;;34195:34;;;;:22;:34;;;;;;;;34235:174;;;;;;;;34298:12;34235:174;;;;;;;;;;-1:-1:-1;;;;;34235:174:101;;;;;;;;;34195:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;34195:215:101;-1:-1:-1;;;;;34195:215:101;;;-1:-1:-1;;;34195:215:101;-1:-1:-1;;34195:215:101;;;;;;;;;;;;;;;;;;;1357:1:57::1;19350:233:101::0;;:::o;34095:1206::-;34511:37;34551:34;;;:22;:34;;;;;34586:17;34602:1;34586:13;:17;:::i;:::-;34551:53;;;;;;;;:::i;:::-;;;;;;;;;;34826:28;;34551:53;;-1:-1:-1;34865:12:101;34826:52;;;;:28;;:52;34822:469;;;34898:35;;-1:-1:-1;;;;;34898:35:101;-1:-1:-1;;;;;;;;34898:35:101;;;;;;34822:469;;;34972:55;;;35014:12;34972:55;;-1:-1:-1;;;34972:55:101;;;-1:-1:-1;;34972:55:101;;;;;;;;;:32;35045:34;;;:22;:34;;;;;;;;35085:190;;;;;;;;;;;;;;;;-1:-1:-1;;;;;35085:190:101;;;;;;;;;35045:231;;-1:-1:-1;35045:231:101;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;35045:231:101;-1:-1:-1;;;;;35045:231:101;;;;;;-1:-1:-1;;35045:231:101;;;;;;;;;;;;;;;;;;;;;;34427:874;34008:1299;33929:1378;;:::o;974:926:23:-;-1:-1:-1;;;;;1476:19:61;;;:23;1410:484:23;;1481:56;;-1:-1:-1;;;1481:56:23;;;1541:18;-1:-1:-1;;;;;1481:33:23;;;574:10;;1481:56;;1515:10;;1527:9;;1481:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1481:78:23;;1456:220;;;;-1:-1:-1;;;1456:220:23;;59605:2:178;1456:220:23;;;59587:21:178;59644:2;59624:18;;;59617:30;59683:34;59663:18;;;59656:62;59754:34;59734:18;;;59727:62;-1:-1:-1;;;59805:19:178;;;59798:50;59865:19;;1456:220:23;59403:487:178;1410:484:23;1772:6;-1:-1:-1;;;;;1732:46:23;:36;1746:10;1758:9;1732:13;:36::i;:::-;-1:-1:-1;;;;;1732:46:23;;1707:176;;;;-1:-1:-1;;;1707:176:23;;60097:2:178;1707:176:23;;;60079:21:178;60136:2;60116:18;;;60109:30;60175:34;60155:18;;;60148:62;60246:34;60226:18;;;60219:62;-1:-1:-1;;;60297:19:178;;;60290:38;60345:19;;1707:176:23;59895:475:178;30545:214:101;30700:33;;;;30659:6;;1484:5:102;;30684:49:101;;:68;:49;:13;:49;:::i;:::-;:68;;;;:::i;30967:200::-;31111:30;;;;31073:6;;1484:5:102;;31098:43:101;;:62;:43;:10;:43;:::i;12055:874:116:-;12146:14;12172:12;12194:24;;:::i;:::-;12228:20;;:::i;:::-;12269:4;12258:15;;;12341:8;;;:15;;;12425:8;;;:15;;;12509:8;;;:16;;;12535:8;;;:20;;;12565:8;;;:19;;;12673:6;12667:4;12258:15;12571:1;12650:4;12643:5;12639:16;12628:58;12617:69;-1:-1:-1;12617:69:116;12783:48;;;;12756:75;;12783:48;12808:9;12756:75;;12858:7;12850:46;;;;-1:-1:-1;;;12850:46:116;;61566:2:178;12850:46:116;;;61548:21:178;61605:2;61585:18;;;61578:30;61644:28;61624:18;;;61617:56;61690:18;;12850:46:116;61364:350:178;12850:46:116;-1:-1:-1;12913:9:116;;;-1:-1:-1;;;;;12055:874:116:o;4402:227:92:-;4480:7;4500:17;4519:18;4541:27;4552:4;4558:9;4541:10;:27::i;:::-;4499:69;;;;4578:18;4590:5;4578:11;:18::i;2243:1373::-;2324:7;2333:12;2554:9;:16;2574:2;2554:22;2550:1060;;;2890:4;2875:20;;2869:27;2939:4;2924:20;;2918:27;2996:4;2981:20;;2975:27;2592:9;2967:36;3037:25;3048:4;2967:36;2869:27;2918;3037:10;:25::i;:::-;3030:32;;;;;;;;;2550:1060;3083:9;:16;3103:2;3083:22;3079:531;;;3399:4;3384:20;;3378:27;3449:4;3434:20;;3428:27;3489:23;3500:4;3378:27;3428;3489:10;:23::i;:::-;3482:30;;;;;;;;3079:531;-1:-1:-1;3559:1:92;;-1:-1:-1;3563:35:92;3079:531;2243:1373;;;;;:::o;548:631::-;625:20;616:5;:29;;;;;;;;:::i;:::-;;612:561;;;548:631;:::o;612:561::-;721:29;712:5;:38;;;;;;;;:::i;:::-;;708:465;;;766:34;;-1:-1:-1;;;766:34:92;;61921:2:178;766:34:92;;;61903:21:178;61960:2;61940:18;;;61933:30;61999:26;61979:18;;;61972:54;62043:18;;766:34:92;61719:348:178;708:465:92;830:35;821:5;:44;;;;;;;;:::i;:::-;;817:356;;;881:41;;-1:-1:-1;;;881:41:92;;62274:2:178;881:41:92;;;62256:21:178;62313:2;62293:18;;;62286:30;62352:33;62332:18;;;62325:61;62403:18;;881:41:92;62072:355:178;817:356:92;952:30;943:5;:39;;;;;;;;:::i;:::-;;939:234;;;998:44;;-1:-1:-1;;;998:44:92;;62634:2:178;998:44:92;;;62616:21:178;62673:2;62653:18;;;62646:30;62712:34;62692:18;;;62685:62;-1:-1:-1;;;62763:18:178;;;62756:32;62805:19;;998:44:92;62432:398:178;939:234:92;1072:30;1063:5;:39;;;;;;;;:::i;:::-;;1059:114;;;1118:44;;-1:-1:-1;;;1118:44:92;;63037:2:178;1118:44:92;;;63019:21:178;63076:2;63056:18;;;63049:30;63115:34;63095:18;;;63088:62;-1:-1:-1;;;63166:18:178;;;63159:32;63208:19;;1118:44:92;62835:398:178;5750:1565:92;5838:7;;6762:66;6749:79;;6745:161;;;-1:-1:-1;6860:1:92;;-1:-1:-1;6864:30:92;6844:51;;6745:161;6919:1;:7;;6924:2;6919:7;;:18;;;;;6930:1;:7;;6935:2;6930:7;;6919:18;6915:100;;;-1:-1:-1;6969:1:92;;-1:-1:-1;6973:30:92;6953:51;;6915:100;7126:24;;;7109:14;7126:24;;;;;;;;;63465:25:178;;;63538:4;63526:17;;63506:18;;;63499:45;;;;63560:18;;;63553:34;;;63603:18;;;63596:34;;;7126:24:92;;63437:19:178;;7126:24:92;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7126:24:92;;-1:-1:-1;;7126:24:92;;;-1:-1:-1;;;;;;;7164:20:92;;7160:101;;7216:1;7220:29;7200:50;;;;;;;7160:101;7279:6;-1:-1:-1;7287:20:92;;-1:-1:-1;5750:1565:92;;;;;;;;:::o;4883:306::-;4963:7;;-1:-1:-1;;;;;5008:80:92;;4963:7;5114:25;5130:3;5115:18;;;5137:2;5114:25;:::i;:::-;5098:42;;5157:25;5168:4;5174:1;5177;5180;5157:10;:25::i;:::-;5150:32;;;;;;4883:306;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:367:178:-;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:55;;159:1;156;149:12;108:55;-1:-1:-1;182:20:178;;-1:-1:-1;;;;;214:30:178;;211:50;;;257:1;254;247:12;211:50;294:4;286:6;282:17;270:29;;354:3;347:4;337:6;334:1;330:14;322:6;318:27;314:38;311:47;308:67;;;371:1;368;361:12;386:437;472:6;480;533:2;521:9;512:7;508:23;504:32;501:52;;;549:1;546;539:12;501:52;589:9;576:23;-1:-1:-1;;;;;614:6:178;611:30;608:50;;;654:1;651;644:12;608:50;693:70;755:7;746:6;735:9;731:22;693:70;:::i;:::-;782:8;;667:96;;-1:-1:-1;386:437:178;-1:-1:-1;;;;386:437:178:o;828:180::-;887:6;940:2;928:9;919:7;915:23;911:32;908:52;;;956:1;953;946:12;908:52;-1:-1:-1;979:23:178;;828:180;-1:-1:-1;828:180:178:o;1195:121::-;1280:10;1273:5;1269:22;1262:5;1259:33;1249:61;;1306:1;1303;1296:12;1321:381;1397:6;1405;1413;1466:2;1454:9;1445:7;1441:23;1437:32;1434:52;;;1482:1;1479;1472:12;1434:52;1518:9;1505:23;1495:33;;1578:2;1567:9;1563:18;1550:32;1591:30;1615:5;1591:30;:::i;:::-;1321:381;;1640:5;;-1:-1:-1;;;1692:2:178;1677:18;;;;1664:32;;1321:381::o;2123:127::-;2184:10;2179:3;2175:20;2172:1;2165:31;2215:4;2212:1;2205:15;2239:4;2236:1;2229:15;2255:253;2327:2;2321:9;2369:4;2357:17;;-1:-1:-1;;;;;2389:34:178;;2425:22;;;2386:62;2383:88;;;2451:18;;:::i;:::-;2487:2;2480:22;2255:253;:::o;2513:257::-;2585:4;2579:11;;;2617:17;;-1:-1:-1;;;;;2649:34:178;;2685:22;;;2646:62;2643:88;;;2711:18;;:::i;2775:275::-;2846:2;2840:9;2911:2;2892:13;;-1:-1:-1;;2888:27:178;2876:40;;-1:-1:-1;;;;;2931:34:178;;2967:22;;;2928:62;2925:88;;;2993:18;;:::i;:::-;3029:2;3022:22;2775:275;;-1:-1:-1;2775:275:178:o;3055:407::-;3120:5;-1:-1:-1;;;;;3146:6:178;3143:30;3140:56;;;3176:18;;:::i;:::-;3214:57;3259:2;3238:15;;-1:-1:-1;;3234:29:178;3265:4;3230:40;3214:57;:::i;:::-;3205:66;;3294:6;3287:5;3280:21;3334:3;3325:6;3320:3;3316:16;3313:25;3310:45;;;3351:1;3348;3341:12;3310:45;3400:6;3395:3;3388:4;3381:5;3377:16;3364:43;3454:1;3447:4;3438:6;3431:5;3427:18;3423:29;3416:40;3055:407;;;;;:::o;3467:451::-;3536:6;3589:2;3577:9;3568:7;3564:23;3560:32;3557:52;;;3605:1;3602;3595:12;3557:52;3645:9;3632:23;-1:-1:-1;;;;;3670:6:178;3667:30;3664:50;;;3710:1;3707;3700:12;3664:50;3733:22;;3786:4;3778:13;;3774:27;-1:-1:-1;3764:55:178;;3815:1;3812;3805:12;3764:55;3838:74;3904:7;3899:2;3886:16;3881:2;3877;3873:11;3838:74;:::i;:::-;3828:84;3467:451;-1:-1:-1;;;;3467:451:178:o;3923:148::-;-1:-1:-1;;;;;4015:31:178;;4005:42;;3995:70;;4061:1;4058;4051:12;4076:168;4161:20;;4190:48;4161:20;4190:48;:::i;:::-;4076:168;;;:::o;4249:288::-;4332:6;4385:2;4373:9;4364:7;4360:23;4356:32;4353:52;;;4401:1;4398;4391:12;4353:52;4440:9;4427:23;4459:48;4501:5;4459:48;:::i;5370:248::-;5438:6;5446;5499:2;5487:9;5478:7;5474:23;5470:32;5467:52;;;5515:1;5512;5505:12;5467:52;-1:-1:-1;;5538:23:178;;;5608:2;5593:18;;;5580:32;;-1:-1:-1;5370:248:178:o;6085:156::-;6151:20;;6211:4;6200:16;;6190:27;;6180:55;;6231:1;6228;6221:12;6246:182;6303:6;6356:2;6344:9;6335:7;6331:23;6327:32;6324:52;;;6372:1;6369;6362:12;6324:52;6395:27;6412:9;6395:27;:::i;6819:248::-;6739:12;;6727:25;;6801:4;6790:16;;;6784:23;6768:14;;;6761:47;7005:2;6990:18;;7017:44;6666:148;7072:347;7123:8;7133:6;7187:3;7180:4;7172:6;7168:17;7164:27;7154:55;;7205:1;7202;7195:12;7154:55;-1:-1:-1;7228:20:178;;-1:-1:-1;;;;;7260:30:178;;7257:50;;;7303:1;7300;7293:12;7257:50;7340:4;7332:6;7328:17;7316:29;;7392:3;7385:4;7376:6;7368;7364:19;7360:30;7357:39;7354:59;;;7409:1;7406;7399:12;7424:772;7557:6;7565;7573;7581;7634:2;7622:9;7613:7;7609:23;7605:32;7602:52;;;7650:1;7647;7640:12;7602:52;7690:9;7677:23;-1:-1:-1;;;;;7760:2:178;7752:6;7749:14;7746:34;;;7776:1;7773;7766:12;7746:34;7815:70;7877:7;7868:6;7857:9;7853:22;7815:70;:::i;:::-;7904:8;;-1:-1:-1;7789:96:178;-1:-1:-1;7992:2:178;7977:18;;7964:32;;-1:-1:-1;8008:16:178;;;8005:36;;;8037:1;8034;8027:12;8005:36;;8076:60;8128:7;8117:8;8106:9;8102:24;8076:60;:::i;:::-;7424:772;;;;-1:-1:-1;8155:8:178;-1:-1:-1;;;;7424:772:178:o;8201:127::-;8262:10;8257:3;8253:20;8250:1;8243:31;8293:4;8290:1;8283:15;8317:4;8314:1;8307:15;8333:242;8419:1;8412:5;8409:12;8399:143;;8464:10;8459:3;8455:20;8452:1;8445:31;8499:4;8496:1;8489:15;8527:4;8524:1;8517:15;8399:143;8551:18;;8333:242::o;8580:374::-;8806:13;;8788:32;;8867:4;8855:17;;;8849:24;8776:2;8761:18;;;8882:66;;8927:20;;8849:24;8882:66;:::i;:::-;;8580:374;;;;:::o;8959:159::-;9026:20;;9086:6;9075:18;;9065:29;;9055:57;;9108:1;9105;9098:12;9123:438;9186:5;9234:4;9222:9;9217:3;9213:19;9209:30;9206:50;;;9252:1;9249;9242:12;9206:50;9274:22;;:::i;:::-;9265:31;;9333:9;9320:23;9352:32;9376:7;9352:32;:::i;:::-;9393:22;;9447:37;9480:2;9465:18;;9447:37;:::i;:::-;9442:2;9435:5;9431:14;9424:61;9517:37;9550:2;9539:9;9535:18;9517:37;:::i;:::-;9512:2;9505:5;9501:14;9494:61;9123:438;;;;:::o;9566:317::-;9667:6;9675;9728:3;9716:9;9707:7;9703:23;9699:33;9696:53;;;9745:1;9742;9735:12;9696:53;9768:27;9785:9;9768:27;:::i;:::-;9758:37;;9814:63;9869:7;9864:2;9853:9;9849:18;9814:63;:::i;:::-;9804:73;;9566:317;;;;;:::o;10353:561::-;10432:6;10440;10448;10501:2;10489:9;10480:7;10476:23;10472:32;10469:52;;;10517:1;10514;10507:12;10469:52;10556:9;10543:23;10575:48;10617:5;10575:48;:::i;:::-;10642:5;-1:-1:-1;10698:2:178;10683:18;;10670:32;-1:-1:-1;;;;;10714:30:178;;10711:50;;;10757:1;10754;10747:12;10711:50;10796:58;10846:7;10837:6;10826:9;10822:22;10796:58;:::i;:::-;10353:561;;10873:8;;-1:-1:-1;10770:84:178;;-1:-1:-1;;;;10353:561:178:o;10919:200::-;10996:4;-1:-1:-1;;;;;11021:6:178;11018:30;11015:56;;;11051:18;;:::i;:::-;-1:-1:-1;11096:1:178;11092:14;11108:4;11088:25;;10919:200::o;11124:386::-;11188:5;11236:4;11224:9;11219:3;11215:19;11211:30;11208:50;;;11254:1;11251;11244:12;11208:50;11276:22;;:::i;:::-;11267:31;;11321:27;11338:9;11321:27;:::i;:::-;11314:5;11307:42;11401:2;11390:9;11386:18;11373:32;11414:50;11456:7;11414:50;:::i;:::-;11491:2;11480:14;;11473:31;11484:5;11124:386;-1:-1:-1;;11124:386:178:o;11515:1355::-;11671:6;11679;11687;11695;11703;11756:3;11744:9;11735:7;11731:23;11727:33;11724:53;;;11773:1;11770;11763:12;11724:53;11812:9;11799:23;11831:48;11873:5;11831:48;:::i;:::-;11898:5;-1:-1:-1;11922:2:178;11956:18;;;11943:32;;-1:-1:-1;11994:2:178;12032:18;;;12019:32;-1:-1:-1;;;;;12063:30:178;;12060:50;;;12106:1;12103;12096:12;12060:50;12129:22;;12182:4;12174:13;;12170:27;-1:-1:-1;12160:55:178;;12211:1;12208;12201:12;12160:55;12247:2;12234:16;12270:77;12286:60;12343:2;12286:60;:::i;:::-;12270:77;:::i;:::-;12381:15;;;12463:1;12459:10;;;;12451:19;;12447:28;;;12412:12;;;;12487:19;;;12484:39;;;12519:1;12516;12509:12;12484:39;12543:11;;;;12563:174;12579:6;12574:3;12571:15;12563:174;;;12645:49;12686:7;12681:3;12645:49;:::i;:::-;12633:62;;12596:12;;;;12715;;;;12563:174;;;11515:1355;;;;-1:-1:-1;12756:5:178;;12808:2;12793:18;;12780:32;;-1:-1:-1;12859:3:178;12844:19;12831:33;;11515:1355;-1:-1:-1;;;;;;;11515:1355:178:o;13296:173::-;13373:5;13418:3;13409:6;13404:3;13400:16;13396:26;13393:46;;;13435:1;13432;13425:12;13393:46;-1:-1:-1;13457:6:178;13296:173;-1:-1:-1;13296:173:178:o;13474:393::-;13563:8;13573:6;13627:3;13620:4;13612:6;13608:17;13604:27;13594:55;;13645:1;13642;13635:12;13594:55;-1:-1:-1;13668:20:178;;-1:-1:-1;;;;;13700:30:178;;13697:50;;;13743:1;13740;13733:12;13697:50;13780:4;13772:6;13768:17;13756:29;;13840:3;13833:4;13823:6;13820:1;13816:14;13808:6;13804:27;13800:38;13797:47;13794:67;;;13857:1;13854;13847:12;13872:625;13945:5;13993:4;13981:9;13976:3;13972:19;13968:30;13965:50;;;14011:1;14008;14001:12;13965:50;14033:22;;:::i;:::-;14024:31;;14091:9;14078:23;-1:-1:-1;;;;;14116:6:178;14113:30;14110:50;;;14156:1;14153;14146:12;14110:50;14179:22;;14232:4;14224:13;;14220:23;-1:-1:-1;14210:51:178;;14257:1;14254;14247:12;14210:51;14284:72;14352:3;14347:2;14334:16;14327:4;14323:2;14319:13;14284:72;:::i;:::-;14277:5;14270:87;;14419:4;14408:9;14404:20;14391:34;14384:4;14377:5;14373:16;14366:60;14486:2;14475:9;14471:18;14458:32;14453:2;14446:5;14442:14;14435:56;13872:625;;;;:::o;14502:1784::-;14827:6;14835;14843;14851;14859;14867;14875;14883;14891;14944:3;14932:9;14923:7;14919:23;14915:33;14912:53;;;14961:1;14958;14951:12;14912:53;15001:9;14988:23;-1:-1:-1;;;;;15071:2:178;15063:6;15060:14;15057:34;;;15087:1;15084;15077:12;15057:34;15126:58;15176:7;15167:6;15156:9;15152:22;15126:58;:::i;:::-;15203:8;;-1:-1:-1;15100:84:178;-1:-1:-1;15291:2:178;15276:18;;15263:32;;-1:-1:-1;15307:16:178;;;15304:36;;;15336:1;15333;15326:12;15304:36;15375:60;15427:7;15416:8;15405:9;15401:24;15375:60;:::i;:::-;15454:8;;-1:-1:-1;15349:86:178;-1:-1:-1;15349:86:178;;-1:-1:-1;15508:80:178;15580:7;15575:2;15560:18;;15508:80;:::i;:::-;15498:90;;15641:3;15630:9;15626:19;15613:33;15597:49;;15671:2;15661:8;15658:16;15655:36;;;15687:1;15684;15677:12;15655:36;15726:98;15816:7;15805:8;15794:9;15790:24;15726:98;:::i;:::-;15843:8;;-1:-1:-1;15700:124:178;-1:-1:-1;15931:3:178;15916:19;;15903:33;;-1:-1:-1;15948:16:178;;;15945:36;;;15977:1;15974;15967:12;15945:36;16000:79;16071:7;16060:8;16049:9;16045:24;16000:79;:::i;:::-;15990:89;;16132:3;16121:9;16117:19;16104:33;16088:49;;16162:2;16152:8;16149:16;16146:36;;;16178:1;16175;16168:12;16146:36;;16201:79;16272:7;16261:8;16250:9;16246:24;16201:79;:::i;:::-;16191:89;;;14502:1784;;;;;;;;;;;:::o;16523:1142::-;16721:6;16729;16737;16745;16753;16761;16814:3;16802:9;16793:7;16789:23;16785:33;16782:53;;;16831:1;16828;16821:12;16782:53;16871:9;16858:23;-1:-1:-1;;;;;16941:2:178;16933:6;16930:14;16927:34;;;16957:1;16954;16947:12;16927:34;16996:58;17046:7;17037:6;17026:9;17022:22;16996:58;:::i;:::-;17073:8;;-1:-1:-1;16970:84:178;-1:-1:-1;17161:2:178;17146:18;;17133:32;;-1:-1:-1;17177:16:178;;;17174:36;;;17206:1;17203;17196:12;17174:36;17245:60;17297:7;17286:8;17275:9;17271:24;17245:60;:::i;:::-;17324:8;;-1:-1:-1;17219:86:178;-1:-1:-1;17219:86:178;;-1:-1:-1;17378:80:178;17450:7;17445:2;17430:18;;17378:80;:::i;:::-;17368:90;;17511:3;17500:9;17496:19;17483:33;17467:49;;17541:2;17531:8;17528:16;17525:36;;;17557:1;17554;17547:12;17525:36;;17580:79;17651:7;17640:8;17629:9;17625:24;17580:79;:::i;:::-;17570:89;;;16523:1142;;;;;;;;:::o;17670:1041::-;17762:6;17770;17823:2;17811:9;17802:7;17798:23;17794:32;17791:52;;;17839:1;17836;17829:12;17791:52;17878:9;17865:23;17897:30;17921:5;17897:30;:::i;:::-;17946:5;-1:-1:-1;17970:2:178;18008:18;;;17995:32;-1:-1:-1;;;;;18039:30:178;;18036:50;;;18082:1;18079;18072:12;18036:50;18105:22;;18158:4;18150:13;;18146:27;-1:-1:-1;18136:55:178;;18187:1;18184;18177:12;18136:55;18223:2;18210:16;18246:77;18262:60;18319:2;18262:60;:::i;18246:77::-;18357:15;;;18439:1;18435:10;;;;18427:19;;18423:28;;;18388:12;;;;18463:19;;;18460:39;;;18495:1;18492;18485:12;18460:39;18519:11;;;;18539:142;18555:6;18550:3;18547:15;18539:142;;;18621:17;;18609:30;;18572:12;;;;18659;;;;18539:142;;;18700:5;18690:15;;;;;;;17670:1041;;;;;:::o;18716:647::-;18885:2;18937:21;;;19007:13;;18910:18;;;19029:22;;;18856:4;;18885:2;19108:15;;;;19082:2;19067:18;;;18856:4;19151:186;19165:6;19162:1;19159:13;19151:186;;;19230:13;;19245:10;19226:30;19214:43;;19312:15;;;;19277:12;;;;19187:1;19180:9;19151:186;;;-1:-1:-1;19354:3:178;;18716:647;-1:-1:-1;;;;;;18716:647:178:o;19368:409::-;19438:6;19446;19499:2;19487:9;19478:7;19474:23;19470:32;19467:52;;;19515:1;19512;19505:12;19467:52;19555:9;19542:23;-1:-1:-1;;;;;19580:6:178;19577:30;19574:50;;;19620:1;19617;19610:12;19574:50;19659:58;19709:7;19700:6;19689:9;19685:22;19659:58;:::i;19782:137::-;-1:-1:-1;;;;;19860:5:178;19856:38;19849:5;19846:49;19836:77;;19909:1;19906;19899:12;19924:1144;19992:5;20045:3;20038:4;20030:6;20026:17;20022:27;20012:55;;20063:1;20060;20053:12;20012:55;20099:6;20086:20;20125:4;20149:77;20165:60;20222:2;20165:60;:::i;20149:77::-;20260:15;;;20346:1;20342:10;;;;20330:23;;20326:32;;;20291:12;;;;20370:15;;;20367:35;;;20398:1;20395;20388:12;20367:35;20434:2;20426:6;20422:15;20446:593;20462:6;20457:3;20454:15;20446:593;;;20540:4;20534:3;20529;20525:13;20521:24;20518:114;;;20586:1;20615:2;20611;20604:14;20518:114;20658:22;;:::i;:::-;20721:3;20708:17;20738:50;20780:7;20738:50;:::i;:::-;20801:22;;20864:12;;;20851:26;20890:32;20851:26;20890:32;:::i;:::-;20942:14;;;20935:31;20979:18;;21017:12;;;;20488:4;20479:14;20446:593;;;-1:-1:-1;21057:5:178;19924:1144;-1:-1:-1;;;;;;19924:1144:178:o;21073:664::-;21242:6;21250;21258;21311:3;21299:9;21290:7;21286:23;21282:33;21279:53;;;21328:1;21325;21318:12;21279:53;21351:54;21397:7;21386:9;21351:54;:::i;:::-;21341:64;;21455:2;21444:9;21440:18;21427:32;21468:30;21492:5;21468:30;:::i;:::-;21517:5;-1:-1:-1;21573:3:178;21558:19;;21545:33;-1:-1:-1;;;;;21590:30:178;;21587:50;;;21633:1;21630;21623:12;21587:50;21656:75;21723:7;21714:6;21703:9;21699:22;21656:75;:::i;:::-;21646:85;;;21073:664;;;;;:::o;21742:746::-;21812:5;21865:3;21858:4;21850:6;21846:17;21842:27;21832:55;;21883:1;21880;21873:12;21832:55;21919:6;21906:20;21945:4;21969:77;21985:60;22042:2;21985:60;:::i;21969:77::-;22080:15;;;22142:4;22185:11;;;22173:24;;22169:33;;;22111:12;;;;22068:3;22214:15;;;22211:35;;;22242:1;22239;22232:12;22211:35;22278:2;22270:6;22266:15;22290:169;22306:6;22301:3;22298:15;22290:169;;;22372:44;22412:3;22407;22372:44;:::i;:::-;22360:57;;22437:12;;;;22323;;22290:169;;;-1:-1:-1;22477:5:178;;21742:746;-1:-1:-1;;;;;;;21742:746:178:o;22493:752::-;22546:5;22599:3;22592:4;22584:6;22580:17;22576:27;22566:55;;22617:1;22614;22607:12;22566:55;22653:6;22640:20;22679:4;22703:77;22719:60;22776:2;22719:60;:::i;22703:77::-;22814:15;;;22900:1;22896:10;;;;22884:23;;22880:32;;;22845:12;;;;22924:15;;;22921:35;;;22952:1;22949;22942:12;22921:35;22988:2;22980:6;22976:15;23000:216;23016:6;23011:3;23008:15;23000:216;;;23096:3;23083:17;23113:30;23137:5;23113:30;:::i;:::-;23156:18;;23194:12;;;;23033;;23000:216;;23250:955;23328:5;23381:3;23374:4;23366:6;23362:17;23358:27;23348:55;;23399:1;23396;23389:12;23348:55;23435:6;23422:20;23461:4;23485:77;23501:60;23558:2;23501:60;:::i;23485:77::-;23596:15;;;23682:1;23678:10;;;;23666:23;;23662:32;;;23627:12;;;;23706:15;;;23703:35;;;23734:1;23731;23724:12;23703:35;23770:2;23762:6;23758:15;23782:394;23798:6;23793:3;23790:15;23782:394;;;23884:3;23871:17;-1:-1:-1;;;;;23907:11:178;23904:35;23901:125;;;23980:1;24009:2;24005;23998:14;23901:125;24051:82;24129:3;24124:2;24110:11;24102:6;24098:24;24094:33;24051:82;:::i;:::-;24039:95;;-1:-1:-1;24154:12:178;;;;23815;;23782:394;;24210:1413;24523:6;24531;24539;24547;24555;24563;24571;24579;24632:3;24620:9;24611:7;24607:23;24603:33;24600:53;;;24649:1;24646;24639:12;24600:53;24672:46;24708:9;24672:46;:::i;:::-;24662:56;;24737:55;24788:2;24777:9;24773:18;24737:55;:::i;:::-;24727:65;;24811:55;24862:2;24851:9;24847:18;24811:55;:::i;:::-;24801:65;;24885:55;24936:2;24925:9;24921:18;24885:55;:::i;:::-;24875:65;;24987:3;24976:9;24972:19;24959:33;24949:43;;25043:3;25032:9;25028:19;25015:33;-1:-1:-1;;;;;25108:2:178;25100:6;25097:14;25094:34;;;25124:1;25121;25114:12;25094:34;25147:77;25216:7;25207:6;25196:9;25192:22;25147:77;:::i;:::-;25137:87;;25277:3;25266:9;25262:19;25249:33;25233:49;;25307:2;25297:8;25294:16;25291:36;;;25323:1;25320;25313:12;25291:36;25346:62;25400:7;25389:8;25378:9;25374:24;25346:62;:::i;:::-;25336:72;;25461:3;25450:9;25446:19;25433:33;25417:49;;25491:2;25481:8;25478:16;25475:36;;;25507:1;25504;25497:12;25475:36;;25530:87;25609:7;25598:8;25587:9;25583:24;25530:87;:::i;:::-;25520:97;;;24210:1413;;;;;;;;;;;:::o;26114:219::-;26266:2;26251:18;;26278:49;26255:9;26309:6;26278:49;:::i;26338:349::-;26540:2;26522:21;;;26579:2;26559:18;;;26552:30;26618:27;26613:2;26598:18;;26591:55;26678:2;26663:18;;26338:349::o;26692:127::-;26753:10;26748:3;26744:20;26741:1;26734:31;26784:4;26781:1;26774:15;26808:4;26805:1;26798:15;26824:127;26885:10;26880:3;26876:20;26873:1;26866:31;26916:4;26913:1;26906:15;26940:4;26937:1;26930:15;26956:135;26995:3;-1:-1:-1;;27016:17:178;;27013:43;;;27036:18;;:::i;:::-;-1:-1:-1;27083:1:178;27072:13;;26956:135::o;28628:472::-;28670:3;28708:5;28702:12;28735:6;28730:3;28723:19;28760:1;28770:162;28784:6;28781:1;28778:13;28770:162;;;28846:4;28902:13;;;28898:22;;28892:29;28874:11;;;28870:20;;28863:59;28799:12;28770:162;;;28950:6;28947:1;28944:13;28941:87;;;29016:1;29009:4;29000:6;28995:3;28991:16;28987:27;28980:38;28941:87;-1:-1:-1;29082:2:178;29061:15;-1:-1:-1;;29057:29:178;29048:39;;;;29089:4;29044:50;;28628:472;-1:-1:-1;;28628:472:178:o;29105:220::-;29254:2;29243:9;29236:21;29217:4;29274:45;29315:2;29304:9;29300:18;29292:6;29274:45;:::i;29330:268::-;29400:6;29453:2;29441:9;29432:7;29428:23;29424:32;29421:52;;;29469:1;29466;29459:12;29421:52;29501:9;29495:16;29520:48;29562:5;29520:48;:::i;29603:406::-;29805:2;29787:21;;;29844:2;29824:18;;;29817:30;29883:34;29878:2;29863:18;;29856:62;-1:-1:-1;;;29949:2:178;29934:18;;29927:40;29999:3;29984:19;;29603:406::o;30014:277::-;30081:6;30134:2;30122:9;30113:7;30109:23;30105:32;30102:52;;;30150:1;30147;30140:12;30102:52;30182:9;30176:16;30235:5;30228:13;30221:21;30214:5;30211:32;30201:60;;30257:1;30254;30247:12;30296:404;30498:2;30480:21;;;30537:2;30517:18;;;30510:30;30576:34;30571:2;30556:18;;30549:62;-1:-1:-1;;;30642:2:178;30627:18;;30620:38;30690:3;30675:19;;30296:404::o;31885:545::-;31978:4;31984:6;32044:11;32031:25;32138:2;32134:7;32123:8;32107:14;32103:29;32099:43;32079:18;32075:68;32065:96;;32157:1;32154;32147:12;32065:96;32184:33;;32236:20;;;-1:-1:-1;;;;;;32268:30:178;;32265:50;;;32311:1;32308;32301:12;32265:50;32344:4;32332:17;;-1:-1:-1;32395:1:178;32391:14;;;32375;32371:35;32361:46;;32358:66;;;32420:1;32417;32410:12;32435:249;32504:6;32557:2;32545:9;32536:7;32532:23;32528:32;32525:52;;;32573:1;32570;32563:12;32525:52;32605:9;32599:16;32624:30;32648:5;32624:30;:::i;34270:128::-;34310:3;34341:1;34337:6;34334:1;34331:13;34328:39;;;34347:18;;:::i;:::-;-1:-1:-1;34383:9:178;;34270:128::o;34403:331::-;34508:9;34519;34561:8;34549:10;34546:24;34543:44;;;34583:1;34580;34573:12;34543:44;34612:6;34602:8;34599:20;34596:40;;;34632:1;34629;34622:12;34596:40;-1:-1:-1;;34658:23:178;;;34703:25;;;;;-1:-1:-1;34403:331:178:o;35590:1237::-;35944:4;35992:3;35981:9;35977:19;36023:6;36012:9;36005:25;36049:2;36087:1;36083;36078:3;36074:11;36070:19;36137:2;36129:6;36125:15;36120:2;36109:9;36105:18;36098:43;36160:2;36198:6;36193:2;36182:9;36178:18;36171:34;36241:3;36236:2;36225:9;36221:18;36214:31;36265:6;36300;36294:13;36331:6;36323;36316:22;36369:3;36358:9;36354:19;36347:26;;36408:2;36400:6;36396:15;36382:29;;36429:1;36439:274;36453:6;36450:1;36447:13;36439:274;;;36512:13;;36554:9;;36565:4;36550:20;36538:33;;36615:11;;36609:18;36605:27;;36591:12;;;36584:49;36688:15;;;;36653:12;;;;36475:1;36468:9;36439:274;;;-1:-1:-1;;36764:3:178;36749:19;;36742:35;;;;-1:-1:-1;;;;36808:3:178;36793:19;;;36786:35;;;;-1:-1:-1;36730:3:178;35590:1237;-1:-1:-1;;;;35590:1237:178:o;37309:248::-;37404:6;37457:2;37445:9;37436:7;37432:23;37428:32;37425:52;;;37473:1;37470;37463:12;37425:52;37496:55;37543:7;37532:9;37496:55;:::i;39907:125::-;39947:4;39975:1;39972;39969:8;39966:34;;;39980:18;;:::i;:::-;-1:-1:-1;40017:9:178;;39907:125::o;40037:386::-;40269:1;40265;40260:3;40256:11;40252:19;40244:6;40240:32;40229:9;40222:51;40309:6;40304:2;40293:9;40289:18;40282:34;40352:2;40347;40336:9;40332:18;40325:30;40203:4;40372:45;40413:2;40402:9;40398:18;40390:6;40372:45;:::i;:::-;40364:53;40037:386;-1:-1:-1;;;;;40037:386:178:o;40428:290::-;40498:6;40551:2;40539:9;40530:7;40526:23;40522:32;40519:52;;;40567:1;40564;40557:12;40519:52;40593:16;;-1:-1:-1;;;;;40638:31:178;;40628:42;;40618:70;;40684:1;40681;40674:12;42232:127;42293:10;42288:3;42284:20;42281:1;42274:31;42324:4;42321:1;42314:15;42348:4;42345:1;42338:15;42364:112;42396:1;42422;42412:35;;42427:18;;:::i;:::-;-1:-1:-1;42461:9:178;;42364:112::o;44315:315::-;-1:-1:-1;;;;;44490:32:178;;44472:51;;44559:2;44554;44539:18;;44532:30;;;-1:-1:-1;;44579:45:178;;44605:18;;44597:6;44579:45;:::i;44635:289::-;44810:6;44799:9;44792:25;44853:2;44848;44837:9;44833:18;44826:30;44773:4;44873:45;44914:2;44903:9;44899:18;44891:6;44873:45;:::i;44929:184::-;44999:6;45052:2;45040:9;45031:7;45027:23;45023:32;45020:52;;;45068:1;45065;45058:12;45020:52;-1:-1:-1;45091:16:178;;44929:184;-1:-1:-1;44929:184:178:o;45294:835::-;-1:-1:-1;;;;;45655:32:178;;45637:51;;45624:3;45609:19;;45697:62;45755:2;45740:18;;45732:6;45200:19;;45188:32;;45276:4;45265:16;;;45252:30;45236:14;;45229:54;45118:171;45697:62;45768:73;45837:2;45826:9;45822:18;45815:4;45807:6;45803:17;45200:19;;45188:32;;45276:4;45265:16;;;45252:30;45236:14;;45229:54;45118:171;45768:73;45903:4;45896;45888:6;45884:17;45878:3;45867:9;45863:19;45850:58;45942:3;45931:9;45927:19;45966:1;45962:2;45955:13;46012:4;46006:3;45998:6;45994:16;45990:2;45977:40;-1:-1:-1;46075:1:178;46051:3;46036:19;;46064:13;;;6739:12;;6727:25;;6801:4;6790:16;;;6784:23;6768:14;;;;6761:47;45294:835;;-1:-1:-1;;45294:835:178:o;48096:625::-;48370:1;48366;48361:3;48357:11;48353:19;48345:6;48341:32;48330:9;48323:51;48410:2;48405;48394:9;48390:18;48383:30;48304:4;48448:6;48442:13;48491:4;48486:2;48475:9;48471:18;48464:32;48519:52;48566:3;48555:9;48551:19;48537:12;48519:52;:::i;:::-;48505:66;;48627:2;48619:6;48615:15;48609:22;48602:4;48591:9;48587:20;48580:52;48687:2;48679:6;48675:15;48669:22;48663:3;48652:9;48648:19;48641:51;48709:6;48701:14;;;48096:625;;;;;:::o;48726:266::-;48814:6;48809:3;48802:19;48866:6;48859:5;48852:4;48847:3;48843:14;48830:43;-1:-1:-1;48918:1:178;48893:16;;;48911:4;48889:27;;;48882:38;;;;48974:2;48953:15;;;-1:-1:-1;;48949:29:178;48940:39;;;48936:50;;48726:266::o;48997:341::-;-1:-1:-1;;;;;49182:32:178;;49164:51;;49251:2;49246;49231:18;;49224:30;;;-1:-1:-1;;49271:61:178;;49313:18;;49305:6;49297;49271:61;:::i;49343:412::-;49585:1;49581;49576:3;49572:11;49568:19;49560:6;49556:32;49545:9;49538:51;49625:6;49620:2;49609:9;49605:18;49598:34;49668:2;49663;49652:9;49648:18;49641:30;49519:4;49688:61;49745:2;49734:9;49730:18;49722:6;49714;49688:61;:::i;49760:749::-;49824:5;49877:3;49870:4;49862:6;49858:17;49854:27;49844:55;;49895:1;49892;49885:12;49844:55;49924:6;49918:13;49950:4;49974:77;49990:60;50047:2;49990:60;:::i;49974:77::-;50085:15;;;50171:1;50167:10;;;;50155:23;;50151:32;;;50116:12;;;;50195:15;;;50192:35;;;50223:1;50220;50213:12;50192:35;50259:2;50251:6;50247:15;50271:209;50287:6;50282:3;50279:15;50271:209;;;50360:3;50354:10;50377:30;50401:5;50377:30;:::i;:::-;50420:18;;50458:12;;;;50304;;50271:209;;50514:610;50641:6;50649;50702:2;50690:9;50681:7;50677:23;50673:32;50670:52;;;50718:1;50715;50708:12;50670:52;50751:9;50745:16;-1:-1:-1;;;;;50821:2:178;50813:6;50810:14;50807:34;;;50837:1;50834;50827:12;50807:34;50860:71;50923:7;50914:6;50903:9;50899:22;50860:71;:::i;:::-;50850:81;;50977:2;50966:9;50962:18;50956:25;50940:41;;51006:2;50996:8;50993:16;50990:36;;;51022:1;51019;51012:12;50990:36;;51045:73;51110:7;51099:8;51088:9;51084:24;51045:73;:::i;:::-;51035:83;;;50514:610;;;;;:::o;51129:315::-;51314:6;51303:9;51296:25;51357:2;51352;51341:9;51337:18;51330:30;51277:4;51377:61;51434:2;51423:9;51419:18;51411:6;51403;51377:61;:::i;51449:971::-;51543:6;51574:2;51617;51605:9;51596:7;51592:23;51588:32;51585:52;;;51633:1;51630;51623:12;51585:52;51666:9;51660:16;-1:-1:-1;;;;;51691:6:178;51688:30;51685:50;;;51731:1;51728;51721:12;51685:50;51754:22;;51807:4;51799:13;;51795:27;-1:-1:-1;51785:55:178;;51836:1;51833;51826:12;51785:55;51865:2;51859:9;51888:77;51904:60;51961:2;51904:60;:::i;51888:77::-;51999:15;;;52081:1;52077:10;;;;52069:19;;52065:28;;;52030:12;;;;52105:19;;;52102:39;;;52137:1;52134;52127:12;52102:39;52161:11;;;;52181:209;52197:6;52192:3;52189:15;52181:209;;;52270:3;52264:10;52287:30;52311:5;52287:30;:::i;:::-;52330:18;;52214:12;;;;52368;;;;52181:209;;;52409:5;51449:971;-1:-1:-1;;;;;;;51449:971:178:o;53587:249::-;53656:6;53709:2;53697:9;53688:7;53684:23;53680:32;53677:52;;;53725:1;53722;53715:12;53677:52;53757:9;53751:16;53776:30;53800:5;53776:30;:::i;55817:204::-;55855:3;55891:4;55888:1;55884:12;55923:4;55920:1;55916:12;55958:3;55952:4;55948:14;55943:3;55940:23;55937:49;;;55966:18;;:::i;:::-;56002:13;;55817:204;-1:-1:-1;;;55817:204:178:o;56026:1041::-;56284:4;56332:2;56321:9;56317:18;56374:4;56366:6;56362:17;56351:9;56344:36;56399:2;-1:-1:-1;;;;;56494:2:178;56486:6;56482:15;56477:2;56466:9;56462:18;56455:43;56517:2;56555;56550;56539:9;56535:18;56528:30;56578:6;56613;56607:13;56644:6;56636;56629:22;56682:3;56671:9;56667:19;56660:26;;56721:2;56713:6;56709:15;56695:29;;56742:1;56752:289;56766:6;56763:1;56760:13;56752:289;;;56825:13;;56867:9;;-1:-1:-1;;;;;56863:35:178;56851:48;;56943:11;;56937:18;56933:27;;56919:12;;;56912:49;57016:15;;;;56981:12;;;;56895:1;56781:9;56752:289;;;-1:-1:-1;57058:3:178;;56026:1041;-1:-1:-1;;;;;;;;;;56026:1041:178:o;57552:197::-;57590:3;57618:6;57659:2;57652:5;57648:14;57686:2;57677:7;57674:15;57671:41;;;57692:18;;:::i;:::-;57741:1;57728:15;;57552:197;-1:-1:-1;;;57552:197:178:o;59108:290::-;59177:6;59230:2;59218:9;59209:7;59205:23;59201:32;59198:52;;;59246:1;59243;59236:12;59198:52;59272:16;;-1:-1:-1;;;;;;59317:32:178;;59307:43;;59297:71;;59364:1;59361;59354:12;60375:278;60414:7;-1:-1:-1;;;;;60499:2:178;60496:1;60492:10;60529:2;60526:1;60522:10;60585:3;60581:2;60577:12;60572:3;60569:21;60562:3;60555:11;60548:19;60544:47;60541:73;;;60594:18;;:::i;:::-;60634:13;;60375:278;-1:-1:-1;;;;60375:278:178:o;60658:207::-;60697:1;-1:-1:-1;;;;;60776:2:178;60773:1;60769:10;60798:3;60788:37;;60805:18;;:::i;:::-;60843:10;;60839:20;;;;;60658:207;-1:-1:-1;;60658:207:178:o","linkReferences":{},"immutableReferences":{"63498":[{"start":15756,"length":32}],"63500":[{"start":15714,"length":32}],"63502":[{"start":15672,"length":32}],"63504":[{"start":15839,"length":32}],"63506":[{"start":15876,"length":32}],"63508":[{"start":15797,"length":32}],"68508":[{"start":1158,"length":32},{"start":11173,"length":32},{"start":13177,"length":32}],"68512":[{"start":1346,"length":32},{"start":3758,"length":32},{"start":8164,"length":32},{"start":11343,"length":32},{"start":11829,"length":32},{"start":11947,"length":32},{"start":13361,"length":32},{"start":15278,"length":32}],"68516":[{"start":1404,"length":32},{"start":8102,"length":32},{"start":9294,"length":32},{"start":11469,"length":32},{"start":13489,"length":32},{"start":14087,"length":32},{"start":15025,"length":32}],"68520":[{"start":1591,"length":32},{"start":4371,"length":32},{"start":8219,"length":32},{"start":11597,"length":32},{"start":13658,"length":32},{"start":15154,"length":32}]}},"methodIdentifiers":{"OPERATOR_CHURN_APPROVAL_TYPEHASH()":"ca0de882","PUBKEY_REGISTRATION_TYPEHASH()":"9feab859","blsApkRegistry()":"5df45946","calculateOperatorChurnApprovalDigestHash(address,bytes32,(uint8,address)[],bytes32,uint256)":"84ca5213","churnApprover()":"054310e6","createQuorum((uint32,uint16,uint16),uint96,(address,uint96)[])":"d75b4c88","deregisterOperator(bytes)":"ca4f2d97","ejectOperator(address,bytes)":"6e3b17db","ejector()":"28f61b31","getCurrentQuorumBitmap(bytes32)":"871ef049","getOperator(address)":"5865c60c","getOperatorFromId(bytes32)":"296bb064","getOperatorId(address)":"13542a4e","getOperatorSetParams(uint8)":"e65797ad","getOperatorStatus(address)":"fd39105a","getQuorumBitmapAtBlockNumberByIndex(bytes32,uint32,uint256)":"04ec6351","getQuorumBitmapHistoryLength(bytes32)":"03fd3492","getQuorumBitmapIndicesAtBlockNumber(uint32,bytes32[])":"c391425e","getQuorumBitmapUpdateByIndex(bytes32,uint256)":"1eb812da","indexRegistry()":"9e9923c2","initialize(address,address,address,address,uint256,(uint32,uint16,uint16)[],uint96[],(address,uint96)[][])":"dd8283f3","isChurnApproverSaltUsed(bytes32)":"1478851f","numRegistries()":"d72d8dd6","owner()":"8da5cb5b","pause(uint256)":"136439dd","pauseAll()":"595c6a67","paused()":"5c975abb","paused(uint8)":"5ac86ab7","pauserRegistry()":"886f1195","pubkeyRegistrationMessageHash(address)":"3c2a7f4c","quorumCount()":"9aa1653d","quorumUpdateBlockNumber(uint8)":"249a0c42","registerOperator(bytes,string,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(bytes,bytes32,uint256))":"a50857bf","registerOperatorWithChurn(bytes,string,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(uint8,address)[],(bytes,bytes32,uint256),(bytes,bytes32,uint256))":"9b5d177b","registries(uint256)":"6347c900","renounceOwnership()":"715018a6","serviceManager()":"3998fdd3","setChurnApprover(address)":"29d1e0c3","setEjector(address)":"2cdd1e86","setOperatorSetParams(uint8,(uint32,uint16,uint16))":"5b0b829f","setPauserRegistry(address)":"10d67a2f","stakeRegistry()":"68304835","transferOwnership(address)":"f2fde38b","unpause(uint256)":"fabc1cbc","updateOperators(address[])":"00cf2ab5","updateOperatorsForQuorum(address[][],bytes)":"5140a548","updateSocket(string)":"0cf4b767"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IServiceManager\",\"name\":\"_serviceManager\",\"type\":\"address\"},{\"internalType\":\"contract IStakeRegistry\",\"name\":\"_stakeRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IBLSApkRegistry\",\"name\":\"_blsApkRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IIndexRegistry\",\"name\":\"_indexRegistry\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prevChurnApprover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newChurnApprover\",\"type\":\"address\"}],\"name\":\"ChurnApproverUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prevEjector\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newEjector\",\"type\":\"address\"}],\"name\":\"EjectorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"}],\"name\":\"OperatorDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"maxOperatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"kickBIPsOfOperatorStake\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"kickBIPsOfTotalStake\",\"type\":\"uint16\"}],\"indexed\":false,\"internalType\":\"struct IRegistryCoordinator.OperatorSetParam\",\"name\":\"operatorSetParams\",\"type\":\"tuple\"}],\"name\":\"OperatorSetParamsUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"socket\",\"type\":\"string\"}],\"name\":\"OperatorSocketUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IPauserRegistry\",\"name\":\"pauserRegistry\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"PauserRegistrySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blocknumber\",\"type\":\"uint256\"}],\"name\":\"QuorumBlockNumberUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"OPERATOR_CHURN_APPROVAL_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PUBKEY_REGISTRATION_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blsApkRegistry\",\"outputs\":[{\"internalType\":\"contract IBLSApkRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registeringOperator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"registeringOperatorId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct IRegistryCoordinator.OperatorKickParam[]\",\"name\":\"operatorKickParams\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"calculateOperatorChurnApprovalDigestHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"churnApprover\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"maxOperatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"kickBIPsOfOperatorStake\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"kickBIPsOfTotalStake\",\"type\":\"uint16\"}],\"internalType\":\"struct IRegistryCoordinator.OperatorSetParam\",\"name\":\"operatorSetParams\",\"type\":\"tuple\"},{\"internalType\":\"uint96\",\"name\":\"minimumStake\",\"type\":\"uint96\"},{\"components\":[{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"multiplier\",\"type\":\"uint96\"}],\"internalType\":\"struct IStakeRegistry.StrategyParams[]\",\"name\":\"strategyParams\",\"type\":\"tuple[]\"}],\"name\":\"createQuorum\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"}],\"name\":\"ejectOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ejector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"}],\"name\":\"getCurrentQuorumBitmap\",\"outputs\":[{\"internalType\":\"uint192\",\"name\":\"\",\"type\":\"uint192\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperator\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"enum IRegistryCoordinator.OperatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"internalType\":\"struct IRegistryCoordinator.OperatorInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"}],\"name\":\"getOperatorFromId\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"}],\"name\":\"getOperatorSetParams\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"maxOperatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"kickBIPsOfOperatorStake\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"kickBIPsOfTotalStake\",\"type\":\"uint16\"}],\"internalType\":\"struct IRegistryCoordinator.OperatorSetParam\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorStatus\",\"outputs\":[{\"internalType\":\"enum IRegistryCoordinator.OperatorStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"blockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getQuorumBitmapAtBlockNumberByIndex\",\"outputs\":[{\"internalType\":\"uint192\",\"name\":\"\",\"type\":\"uint192\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"}],\"name\":\"getQuorumBitmapHistoryLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"blockNumber\",\"type\":\"uint32\"},{\"internalType\":\"bytes32[]\",\"name\":\"operatorIds\",\"type\":\"bytes32[]\"}],\"name\":\"getQuorumBitmapIndicesAtBlockNumber\",\"outputs\":[{\"internalType\":\"uint32[]\",\"name\":\"\",\"type\":\"uint32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getQuorumBitmapUpdateByIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"updateBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"nextUpdateBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint192\",\"name\":\"quorumBitmap\",\"type\":\"uint192\"}],\"internalType\":\"struct IRegistryCoordinator.QuorumBitmapUpdate\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"indexRegistry\",\"outputs\":[{\"internalType\":\"contract IIndexRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_initialOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_churnApprover\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_ejector\",\"type\":\"address\"},{\"internalType\":\"contract IPauserRegistry\",\"name\":\"_pauserRegistry\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_initialPausedStatus\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"maxOperatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"kickBIPsOfOperatorStake\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"kickBIPsOfTotalStake\",\"type\":\"uint16\"}],\"internalType\":\"struct IRegistryCoordinator.OperatorSetParam[]\",\"name\":\"_operatorSetParams\",\"type\":\"tuple[]\"},{\"internalType\":\"uint96[]\",\"name\":\"_minimumStakes\",\"type\":\"uint96[]\"},{\"components\":[{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"multiplier\",\"type\":\"uint96\"}],\"internalType\":\"struct IStakeRegistry.StrategyParams[][]\",\"name\":\"_strategyParams\",\"type\":\"tuple[][]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"isChurnApproverSaltUsed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"numRegistries\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauserRegistry\",\"outputs\":[{\"internalType\":\"contract IPauserRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"pubkeyRegistrationMessageHash\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"struct BN254.G1Point\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"quorumCount\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"quorumUpdateBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"socket\",\"type\":\"string\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"struct BN254.G1Point\",\"name\":\"pubkeyRegistrationSignature\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"struct BN254.G1Point\",\"name\":\"pubkeyG1\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"X\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"Y\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct BN254.G2Point\",\"name\":\"pubkeyG2\",\"type\":\"tuple\"}],\"internalType\":\"struct IBLSApkRegistry.PubkeyRegistrationParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithSaltAndExpiry\",\"name\":\"operatorSignature\",\"type\":\"tuple\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"socket\",\"type\":\"string\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"struct BN254.G1Point\",\"name\":\"pubkeyRegistrationSignature\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"struct BN254.G1Point\",\"name\":\"pubkeyG1\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"X\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"Y\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct BN254.G2Point\",\"name\":\"pubkeyG2\",\"type\":\"tuple\"}],\"internalType\":\"struct IBLSApkRegistry.PubkeyRegistrationParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct IRegistryCoordinator.OperatorKickParam[]\",\"name\":\"operatorKickParams\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithSaltAndExpiry\",\"name\":\"churnApproverSignature\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithSaltAndExpiry\",\"name\":\"operatorSignature\",\"type\":\"tuple\"}],\"name\":\"registerOperatorWithChurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"registries\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceManager\",\"outputs\":[{\"internalType\":\"contract IServiceManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_churnApprover\",\"type\":\"address\"}],\"name\":\"setChurnApprover\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ejector\",\"type\":\"address\"}],\"name\":\"setEjector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"maxOperatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"kickBIPsOfOperatorStake\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"kickBIPsOfTotalStake\",\"type\":\"uint16\"}],\"internalType\":\"struct IRegistryCoordinator.OperatorSetParam\",\"name\":\"operatorSetParams\",\"type\":\"tuple\"}],\"name\":\"setOperatorSetParams\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"setPauserRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakeRegistry\",\"outputs\":[{\"internalType\":\"contract IStakeRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"updateOperators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[][]\",\"name\":\"operatorsPerQuorum\",\"type\":\"address[][]\"},{\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"}],\"name\":\"updateOperatorsForQuorum\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"socket\",\"type\":\"string\"}],\"name\":\"updateSocket\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"kind\":\"dev\",\"methods\":{\"calculateOperatorChurnApprovalDigestHash(address,bytes32,(uint8,address)[],bytes32,uint256)\":{\"params\":{\"expiry\":\"The desired expiry time of the churnApprover's signature\",\"operatorKickParams\":\"The parameters needed to kick the operator from the quorums that have reached their caps\",\"registeringOperatorId\":\"The id of the registering operator \",\"salt\":\"The salt to use for the churnApprover's signature\"}},\"createQuorum((uint32,uint16,uint16),uint96,(address,uint96)[])\":{\"params\":{\"minimumStake\":\"sets the minimum stake required for an operator to register or remain registered\",\"operatorSetParams\":\"configures the quorum's max operator count and churn parameters\",\"strategyParams\":\"a list of strategies and multipliers used by the StakeRegistry to calculate an operator's stake weight for the quorum\"}},\"deregisterOperator(bytes)\":{\"params\":{\"quorumNumbers\":\"is an ordered byte array containing the quorum numbers being deregistered from\"}},\"ejectOperator(address,bytes)\":{\"params\":{\"operator\":\"the operator to eject\",\"quorumNumbers\":\"the quorum numbers to eject the operator from\"}},\"getQuorumBitmapAtBlockNumberByIndex(bytes32,uint32,uint256)\":{\"details\":\"This function is meant to be used in concert with `getQuorumBitmapIndicesAtBlockNumber`, which helps off-chain processes to fetch the correct `index` input\"},\"getQuorumBitmapIndicesAtBlockNumber(uint32,bytes32[])\":{\"details\":\"Reverts if any of the `operatorIds` was not (yet) registered at `blockNumber`This function is designed to find proper inputs to the `getQuorumBitmapAtBlockNumberByIndex` function\"},\"initialize(address,address,address,address,uint256,(uint32,uint16,uint16)[],uint96[],(address,uint96)[][])\":{\"params\":{\"_churnApprover\":\"will hold the churnApprover role, which authorizes registering with churn\",\"_ejector\":\"will hold the ejector role, which can force-eject operators from quorums\",\"_initialOwner\":\"will hold the owner role\",\"_initialPausedStatus\":\"pause status after calling initialize Config for initial quorums (see `createQuorum`):\",\"_minimumStakes\":\"minimum stake weight to allow an operator to register\",\"_operatorSetParams\":\"max operator count and operator churn parameters\",\"_pauserRegistry\":\"a registry of addresses that can pause the contract\",\"_strategyParams\":\"which Strategies/multipliers a quorum considers when calculating stake weight\"}},\"owner()\":{\"details\":\"need to override function here since its defined in both these contracts\"},\"pause(uint256)\":{\"details\":\"This function can only pause functionality, and thus cannot 'unflip' any bit in `_paused` from 1 to 0.\",\"params\":{\"newPausedStatus\":\"represents the new value for `_paused` to take, which means it may flip several bits at once.\"}},\"pubkeyRegistrationMessageHash(address)\":{\"params\":{\"operator\":\"is the address of the operator registering their BLS public key\"}},\"registerOperator(bytes,string,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(bytes,bytes32,uint256))\":{\"details\":\"`params` is ignored if the caller has previously registered a public key`operatorSignature` is ignored if the operator's status is already REGISTERED\",\"params\":{\"operatorSignature\":\"is the signature of the operator used by the AVS to register the operator in the delegation manager\",\"params\":\"contains the G1 & G2 public keys of the operator, and a signature proving their ownership\",\"quorumNumbers\":\"is an ordered byte array containing the quorum numbers being registered for\",\"socket\":\"is the socket of the operator (typically an IP address)\"}},\"registerOperatorWithChurn(bytes,string,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(uint8,address)[],(bytes,bytes32,uint256),(bytes,bytes32,uint256))\":{\"details\":\"`params` is ignored if the caller has previously registered a public key`operatorSignature` is ignored if the operator's status is already REGISTERED\",\"params\":{\"churnApproverSignature\":\"is the signature of the churnApprover over the `operatorKickParams`\",\"operatorKickParams\":\"used to determine which operator is removed to maintain quorum capacity as the operator registers for quorums\",\"operatorSignature\":\"is the signature of the operator used by the AVS to register the operator in the delegation manager\",\"params\":\"contains the G1 & G2 public keys of the operator, and a signature proving their ownership\",\"quorumNumbers\":\"is an ordered byte array containing the quorum numbers being registered for\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setChurnApprover(address)\":{\"details\":\"only callable by the owner\",\"params\":{\"_churnApprover\":\"the new churn approver\"}},\"setEjector(address)\":{\"details\":\"only callable by the owner\",\"params\":{\"_ejector\":\"the new ejector\"}},\"setOperatorSetParams(uint8,(uint32,uint16,uint16))\":{\"details\":\"only callable by the owner\",\"params\":{\"operatorSetParams\":\"the new config\",\"quorumNumber\":\"the quorum number to update\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unpause(uint256)\":{\"details\":\"This function can only unpause functionality, and thus cannot 'flip' any bit in `_paused` from 0 to 1.\",\"params\":{\"newPausedStatus\":\"represents the new value for `_paused` to take, which means it may flip several bits at once.\"}},\"updateOperators(address[])\":{\"details\":\"stakes are queried from the Eigenlayer core DelegationManager contract\",\"params\":{\"operators\":\"a list of operator addresses to update\"}},\"updateOperatorsForQuorum(address[][],bytes)\":{\"details\":\"stakes are queried from the Eigenlayer core DelegationManager contractEach list of operator addresses MUST be sorted in ascending orderEach list of operator addresses MUST represent the entire list of registered operators for the corresponding quoruminvariant: Each list of `operatorsPerQuorum` MUST be a sorted version of `IndexRegistry.getOperatorListAtBlockNumber` for the corresponding quorum.note on race condition: if an operator registers/deregisters for any quorum in `quorumNumbers` after a txn to this method is broadcast (but before it is executed), the method will fail\",\"params\":{\"operatorsPerQuorum\":\"for each quorum in `quorumNumbers`, this has a corresponding list of operators to update.\",\"quorumNumbers\":\"is an ordered byte array containing the quorum numbers being updated\"}},\"updateSocket(string)\":{\"params\":{\"socket\":\"is the new socket of the operator\"}}},\"title\":\"A `RegistryCoordinator` that has three registries: 1) a `StakeRegistry` that keeps track of operators' stakes 2) a `BLSApkRegistry` that keeps track of operators' BLS public keys and aggregate BLS public keys for each quorum 3) an `IndexRegistry` that keeps track of an ordered list of operators for each quorum \",\"version\":1},\"userdoc\":{\"events\":{\"OperatorDeregistered(address,bytes32)\":{\"notice\":\"Emits when an operator is deregistered\"},\"OperatorRegistered(address,bytes32)\":{\"notice\":\"Emits when an operator is registered\"},\"Paused(address,uint256)\":{\"notice\":\"Emitted when the pause is triggered by `account`, and changed to `newPausedStatus`.\"},\"PauserRegistrySet(address,address)\":{\"notice\":\"Emitted when the `pauserRegistry` is set to `newPauserRegistry`.\"},\"QuorumBlockNumberUpdated(uint8,uint256)\":{\"notice\":\"emitted when all the operators for a quorum are updated at once\"},\"Unpaused(address,uint256)\":{\"notice\":\"Emitted when the pause is lifted by `account`, and changed to `newPausedStatus`.\"}},\"kind\":\"user\",\"methods\":{\"OPERATOR_CHURN_APPROVAL_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the `DelegationApproval` struct used by the contract\"},\"PUBKEY_REGISTRATION_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash used for registering BLS public keys\"},\"blsApkRegistry()\":{\"notice\":\"the BLS Aggregate Pubkey Registry contract that will keep track of operators' aggregate BLS public keys per quorum\"},\"calculateOperatorChurnApprovalDigestHash(address,bytes32,(uint8,address)[],bytes32,uint256)\":{\"notice\":\"Public function for the the churnApprover signature hash calculation when operators are being kicked from quorums\"},\"churnApprover()\":{\"notice\":\"the address of the entity allowed to sign off on operators getting kicked out of the AVS during registration\"},\"createQuorum((uint32,uint16,uint16),uint96,(address,uint96)[])\":{\"notice\":\"Creates a quorum and initializes it in each registry contract\"},\"deregisterOperator(bytes)\":{\"notice\":\"Deregisters the caller from one or more quorums\"},\"ejectOperator(address,bytes)\":{\"notice\":\"Forcibly deregisters an operator from one or more quorums\"},\"ejector()\":{\"notice\":\"the address of the entity allowed to eject operators from the AVS\"},\"getCurrentQuorumBitmap(bytes32)\":{\"notice\":\"Returns the current quorum bitmap for the given `operatorId` or 0 if the operator is not registered for any quorum\"},\"getOperator(address)\":{\"notice\":\"Returns the operator struct for the given `operator`\"},\"getOperatorFromId(bytes32)\":{\"notice\":\"Returns the operator address for the given `operatorId`\"},\"getOperatorId(address)\":{\"notice\":\"Returns the operatorId for the given `operator`\"},\"getOperatorSetParams(uint8)\":{\"notice\":\"Returns the operator set params for the given `quorumNumber`\"},\"getOperatorStatus(address)\":{\"notice\":\"Returns the status for the given `operator`\"},\"getQuorumBitmapAtBlockNumberByIndex(bytes32,uint32,uint256)\":{\"notice\":\"Returns the quorum bitmap for the given `operatorId` at the given `blockNumber` via the `index`, reverting if `index` is incorrect\"},\"getQuorumBitmapHistoryLength(bytes32)\":{\"notice\":\"Returns the length of the quorum bitmap history for the given `operatorId`\"},\"getQuorumBitmapIndicesAtBlockNumber(uint32,bytes32[])\":{\"notice\":\"Returns the indices of the quorumBitmaps for the provided `operatorIds` at the given `blockNumber`\"},\"getQuorumBitmapUpdateByIndex(bytes32,uint256)\":{\"notice\":\"Returns the `index`th entry in the operator with `operatorId`'s bitmap history\"},\"indexRegistry()\":{\"notice\":\"the Index Registry contract that will keep track of operators' indexes\"},\"isChurnApproverSaltUsed(bytes32)\":{\"notice\":\"whether the salt has been used for an operator churn approval\"},\"numRegistries()\":{\"notice\":\"Returns the number of registries\"},\"pause(uint256)\":{\"notice\":\"This function is used to pause an EigenLayer contract's functionality. It is permissioned to the `pauser` address, which is expected to be a low threshold multisig.\"},\"pauseAll()\":{\"notice\":\"Alias for `pause(type(uint256).max)`.\"},\"paused()\":{\"notice\":\"Returns the current paused status as a uint256.\"},\"paused(uint8)\":{\"notice\":\"Returns 'true' if the `indexed`th bit of `_paused` is 1, and 'false' otherwise\"},\"pauserRegistry()\":{\"notice\":\"Address of the `PauserRegistry` contract that this contract defers to for determining access control (for pausing).\"},\"pubkeyRegistrationMessageHash(address)\":{\"notice\":\"Returns the message hash that an operator must sign to register their BLS public key.\"},\"quorumCount()\":{\"notice\":\"the current number of quorums supported by the registry coordinator\"},\"quorumUpdateBlockNumber(uint8)\":{\"notice\":\"mapping from quorum number to the latest block that all quorums were updated all at once\"},\"registerOperator(bytes,string,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(bytes,bytes32,uint256))\":{\"notice\":\"Registers msg.sender as an operator for one or more quorums. If any quorum exceeds its maximum operator capacity after the operator is registered, this method will fail.\"},\"registerOperatorWithChurn(bytes,string,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(uint8,address)[],(bytes,bytes32,uint256),(bytes,bytes32,uint256))\":{\"notice\":\"Registers msg.sender as an operator for one or more quorums. If any quorum reaches its maximum operator capacity, `operatorKickParams` is used to replace an old operator with the new one.\"},\"registries(uint256)\":{\"notice\":\"the dynamic-length array of the registries this coordinator is coordinating\"},\"serviceManager()\":{\"notice\":\"the ServiceManager for this AVS, which forwards calls onto EigenLayer's core contracts\"},\"setChurnApprover(address)\":{\"notice\":\"Sets the churnApprover, which approves operator registration with churn (see `registerOperatorWithChurn`)\"},\"setEjector(address)\":{\"notice\":\"Sets the ejector, which can force-deregister operators from quorums\"},\"setOperatorSetParams(uint8,(uint32,uint16,uint16))\":{\"notice\":\"Updates an existing quorum's configuration with a new max operator count and operator churn parameters\"},\"setPauserRegistry(address)\":{\"notice\":\"Allows the unpauser to set a new pauser registry\"},\"stakeRegistry()\":{\"notice\":\"the Stake Registry contract that will keep track of operators' stakes\"},\"unpause(uint256)\":{\"notice\":\"This function is used to unpause an EigenLayer contract's functionality. It is permissioned to the `unpauser` address, which is expected to be a high threshold multisig or governance contract.\"},\"updateOperators(address[])\":{\"notice\":\"Updates the StakeRegistry's view of one or more operators' stakes. If any operator is found to be below the minimum stake for the quorum, they are deregistered.\"},\"updateOperatorsForQuorum(address[][],bytes)\":{\"notice\":\"For each quorum in `quorumNumbers`, updates the StakeRegistry's view of ALL its registered operators' stakes. Each quorum's `quorumUpdateBlockNumber` is also updated, which tracks the most recent block number when ALL registered operators were updated.\"},\"updateSocket(string)\":{\"notice\":\"Updates the socket of the msg.sender given they are a registered operator\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/RegistryCoordinator.sol\":\"RegistryCoordinator\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x9906828f285cc76bbbe077f908d87c4bffd0a3bff9394f7a4b60a9d9a2672c1e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4c0f43e14e50ac322685b5cd301459118e2770bdfb053f8f3ded08ee9fbf5bf9\",\"dweb:/ipfs/QmPQtY6KEUCbrKwweu8BvA7YjnXXxkkuZPyLSRGV5EoPTe\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x1f8e17b0f952042132ca64e202022d83783b7f42ec364cd0cad1950ecb95a13d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a2be4c476902f25fb058f779e3d4e5b1182d9dc9fbdec518acbe9544c0d3c141\",\"dweb:/ipfs/QmdgZq6JrCD36Xry2vD8QSeGguGQ9TGWY2CMvKrhR9NQ6u\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x22b7a17d53696412f80645f1fa65274ae89040bdc706262e3b6cc577dbafcaa4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b15002346892a48fd7cf9a8a4cf121e17ba133d21e4822e71fbffac85117d6b2\",\"dweb:/ipfs/QmRBPJUcRQ6uKmSvCYhhtVWcKCAWkQFSVZZwZR7HR42kiz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x33a935182f77cfd508fc57ec8e45afc8dc3748e1e9b764d36bf90ae6466f257b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d3981b5bbf435cda04e2ed2f348f886ebf1500c18dd4bbf67b1f1bc0272e2d3f\",\"dweb:/ipfs/QmYHDzQx29ataM2ejRCXFcPxaPdxWqX8v7uwUAYoG9572w\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xffafae142d5337a5c204519e8f82fe3a5fae137286ebf597fa50699cf12c2474\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b577a12f7788095b230fd069b36ba9b3cdb376a0b7c3d8ae71588e5bf0c2f574\",\"dweb:/ipfs/QmXd1cDzYpxecyFEwowLiBKKjzRHgV8cs1qvLwypdEbVYy\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b\",\"dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x3d9eeecf96bd8d6427445db76b9a73f9861c6c3601001226bed2f7fb81e252e6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c836719a65892c5cffdba9de4e009e5f8a4e49aea9c5f46d57b15660c6c2d07d\",\"dweb:/ipfs/QmWuzNq2HdEH1hsRg8Jc95k1DZdNjXFb5ehkz9iLNNSqhT\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xaeee2ac5cfcc3388b63bef2668fa435c65a4b433b52ce9f5013822c6ec875fa3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://86eb6d3da5b45f7509995ffa170eaaadffbdd6d43e50f0902d421bb93a7dfda6\",\"dweb:/ipfs/QmWaYcgtnaVpcekSP7LyY6AGrE3hRE3kZE4H4EKhsSysDG\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x633b5fb10209891f696a9c8db4d7327ed7f560a2e9710489e38a67daeda59a96\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c8381baaec3afa6b200420c093706974776dfd14f6887abe7457eb867351a068\",\"dweb:/ipfs/QmP9H9ttS1sJ6FrvMEefJhU6B4z1wMCjcYYZqVfsLXagJE\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/EIP1271SignatureUtils.sol\":{\"keccak256\":\"0xe92d584c47c5828e026a8082af3da38a853e3942c4da7deb705d6470a41afab3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1c436c578781fd7d3dffdb24e906819422819f5e9a71d39ee63166a3d5cb3373\",\"dweb:/ipfs/QmP7bJhYqLpwqk2Xq4tqDCUMi2nFAhxxW3Pz36ctE1sbdD\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0x1c5895f913e95682b0c371595cb1fa0d9c34ea921a0fbb5c32201b4315e80a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c470e449a3144fbaaa17b44823ba9cba901f063b04355c800bf62cabdd081cd4\",\"dweb:/ipfs/QmSJ8gaAF4WA1aXGmLesnnRo8fDZNEFnqZSGNkJnXLRM9R\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0xcf8422dfa6ccc393de19417570c6239e0fde54de9433ea258cbeb6937ff7f316\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://328e582c05b7311ad4107c46f554f15b5572b89a4ab6d067c73425b7418d946c\",\"dweb:/ipfs/QmdM81GQY5nok5oCTP8Cc6M8s1UC9f6ZbSWybaUxrZNrmY\"]},\"lib/eigenlayer-contracts/src/contracts/permissions/Pausable.sol\":{\"keccak256\":\"0x53a08f01d778b91604dc1d27d4805fa99b9a2993f26e6079a1d8701699dc9f21\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://8fd5dd22dcb1fb4f803843b920501679f252ccf100a06acbad7a22452cdc1173\",\"dweb:/ipfs/QmeyoJoTN3Gi7Q4Fk4y89UTDDnyPFmSbdu8N7Vyijwjx2s\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x1e4597b288e792b4530cbc7e97e28754e8457969e61a86d9e6e3a2857eb8a68f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://41fb94e2f5df15c1d070865db82373dc85e52bc3a2f85e3aa338488f8616532c\",\"dweb:/ipfs/QmeKTieHBEur42JbTkn2JChdGx3GT9YZbVCP7wj2ejQvMj\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x1e5f62292e000eb24ff5a82fbe1310b5a03871d008bcd2e203e08cd044af0466\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d300b99404ad2930649be8508f7b1ed9940bc82facb7291a0540c1ec42badcaa\",\"dweb:/ipfs/QmW2xV7vTvtyJPDb5PwYBRSrs2qGMWV5rT6V9dzjaPUp9q\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e\",\"dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x78297d2d2e50b4fec6a42ecf5be5c76a6c102810388d11f165a363e0aa8f5034\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09968869e3943f45df330f42bdb49f96c71f55b5a424c73faba95135fafc5c78\",\"dweb:/ipfs/QmTLAoVbabvKZybmaFEHwib1feE2gWwN5yMcQBADVyBM5E\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xf57046ce68c681ede23c9a117b8ed58b7c960dc7f806ab8a4db80a0dac737a88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://beec7753d3491d55fb6f416e28ec8dd79b5f866405025fab32d51e3ae027e865\",\"dweb:/ipfs/QmQdqhSufKYphPsy3PQzjzu3VqbXk5mzuSm2grk345rPCh\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/draft-EIP712.sol\":{\"keccak256\":\"0x6bf2bdf6cb44f0ed451fc740ed5607d3e6bc00f901eea052e3ed0a272b92595c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66d031460a93ca474c9181341759e2e4c757e2ab6e19a283695dd6aa070d96f6\",\"dweb:/ipfs/QmY2PAM2XqX9UMnqDdg4FGaaUhYF7HL5RLFT6FbUZkFZqM\"]},\"src/RegistryCoordinator.sol\":{\"keccak256\":\"0x2d75249e4073e8f475caf96f914aba6b647269ccee138d8bddaa390bbeaba583\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d93c75c87ceb916e361860e081afbe3bb7a1e4928540bdbc6f07e19471f1d94b\",\"dweb:/ipfs/Qmcavtw4bVTQj5bGgvvwMbMshEk9PrbdP9hHmRXxUjzz8G\"]},\"src/RegistryCoordinatorStorage.sol\":{\"keccak256\":\"0x01fa3683bb6614cb10192362894fcca8853108dfdcf17c0108cc730755e72b01\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7f026f5b691135fdf3cb3ce689e6d929eb350bd0510948d21f26b0aaaf274115\",\"dweb:/ipfs/QmQgaHac3kFzFS74ZvTbqFtAyp6sSvqfw55DVELZ98J3ZE\"]},\"src/interfaces/IBLSApkRegistry.sol\":{\"keccak256\":\"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354\",\"dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp\"]},\"src/interfaces/IIndexRegistry.sol\":{\"keccak256\":\"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d\",\"dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F\"]},\"src/interfaces/IRegistry.sol\":{\"keccak256\":\"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25\",\"dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY\"]},\"src/interfaces/IRegistryCoordinator.sol\":{\"keccak256\":\"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d\",\"dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD\"]},\"src/interfaces/IServiceManager.sol\":{\"keccak256\":\"0x89d338743852e613157a974204bef7a66e407937d4c581b1ae862e966689307f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4a90fad166378a27c0ea189ff2f2d02df7ca171152edc197f2046013e7a48e60\",\"dweb:/ipfs/QmbaHqG2jpqoyxSj7C1FFjENfsytYSKy6E1BsJozL5dvxt\"]},\"src/interfaces/ISocketUpdater.sol\":{\"keccak256\":\"0x2f209d4556d493b7b9d30a48eb98b9ee17f823ff677e9c656ebd6ed454b3626e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1f1a7930cf8acf19684bcc39ea958d354586846f6dac0fd6a10e69a30eebea25\",\"dweb:/ipfs/QmNsuiA1KKx22mf2YxYvK8CeuqUsgPNfUR7ijvnpBZWETw\"]},\"src/interfaces/IStakeRegistry.sol\":{\"keccak256\":\"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97\",\"dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B\"]},\"src/libraries/BN254.sol\":{\"keccak256\":\"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae\",\"dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki\"]},\"src/libraries/BitmapUtils.sol\":{\"keccak256\":\"0x44315ac460be30a6b18fd4df4d1b8afb46653bf4dc06ca9f93c32353fd0605c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da14f2ead3a375b02afd09d4a02edddf7b63a88945746b96789b2473184fdb04\",\"dweb:/ipfs/QmRqcjxa2Vv2MrLdPeAwsktXdWTirapEDsRbJCyYRtKT6g\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IServiceManager","name":"_serviceManager","type":"address"},{"internalType":"contract IStakeRegistry","name":"_stakeRegistry","type":"address"},{"internalType":"contract IBLSApkRegistry","name":"_blsApkRegistry","type":"address"},{"internalType":"contract IIndexRegistry","name":"_indexRegistry","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"prevChurnApprover","type":"address","indexed":false},{"internalType":"address","name":"newChurnApprover","type":"address","indexed":false}],"type":"event","name":"ChurnApproverUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"prevEjector","type":"address","indexed":false},{"internalType":"address","name":"newEjector","type":"address","indexed":false}],"type":"event","name":"EjectorUpdated","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes32","name":"operatorId","type":"bytes32","indexed":true}],"type":"event","name":"OperatorDeregistered","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes32","name":"operatorId","type":"bytes32","indexed":true}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8","indexed":true},{"internalType":"struct IRegistryCoordinator.OperatorSetParam","name":"operatorSetParams","type":"tuple","components":[{"internalType":"uint32","name":"maxOperatorCount","type":"uint32"},{"internalType":"uint16","name":"kickBIPsOfOperatorStake","type":"uint16"},{"internalType":"uint16","name":"kickBIPsOfTotalStake","type":"uint16"}],"indexed":false}],"type":"event","name":"OperatorSetParamsUpdated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"operatorId","type":"bytes32","indexed":true},{"internalType":"string","name":"socket","type":"string","indexed":false}],"type":"event","name":"OperatorSocketUpdate","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"newPausedStatus","type":"uint256","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"contract IPauserRegistry","name":"pauserRegistry","type":"address","indexed":false},{"internalType":"contract IPauserRegistry","name":"newPauserRegistry","type":"address","indexed":false}],"type":"event","name":"PauserRegistrySet","anonymous":false},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8","indexed":true},{"internalType":"uint256","name":"blocknumber","type":"uint256","indexed":false}],"type":"event","name":"QuorumBlockNumberUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"newPausedStatus","type":"uint256","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_CHURN_APPROVAL_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"PUBKEY_REGISTRATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blsApkRegistry","outputs":[{"internalType":"contract IBLSApkRegistry","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"registeringOperator","type":"address"},{"internalType":"bytes32","name":"registeringOperatorId","type":"bytes32"},{"internalType":"struct IRegistryCoordinator.OperatorKickParam[]","name":"operatorKickParams","type":"tuple[]","components":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function","name":"calculateOperatorChurnApprovalDigestHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"churnApprover","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"struct IRegistryCoordinator.OperatorSetParam","name":"operatorSetParams","type":"tuple","components":[{"internalType":"uint32","name":"maxOperatorCount","type":"uint32"},{"internalType":"uint16","name":"kickBIPsOfOperatorStake","type":"uint16"},{"internalType":"uint16","name":"kickBIPsOfTotalStake","type":"uint16"}]},{"internalType":"uint96","name":"minimumStake","type":"uint96"},{"internalType":"struct IStakeRegistry.StrategyParams[]","name":"strategyParams","type":"tuple[]","components":[{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint96","name":"multiplier","type":"uint96"}]}],"stateMutability":"nonpayable","type":"function","name":"createQuorum"},{"inputs":[{"internalType":"bytes","name":"quorumNumbers","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"deregisterOperator"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes","name":"quorumNumbers","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"ejectOperator"},{"inputs":[],"stateMutability":"view","type":"function","name":"ejector","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"operatorId","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getCurrentQuorumBitmap","outputs":[{"internalType":"uint192","name":"","type":"uint192"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperator","outputs":[{"internalType":"struct IRegistryCoordinator.OperatorInfo","name":"","type":"tuple","components":[{"internalType":"bytes32","name":"operatorId","type":"bytes32"},{"internalType":"enum IRegistryCoordinator.OperatorStatus","name":"status","type":"uint8"}]}]},{"inputs":[{"internalType":"bytes32","name":"operatorId","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getOperatorFromId","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"}],"stateMutability":"view","type":"function","name":"getOperatorSetParams","outputs":[{"internalType":"struct IRegistryCoordinator.OperatorSetParam","name":"","type":"tuple","components":[{"internalType":"uint32","name":"maxOperatorCount","type":"uint32"},{"internalType":"uint16","name":"kickBIPsOfOperatorStake","type":"uint16"},{"internalType":"uint16","name":"kickBIPsOfTotalStake","type":"uint16"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorStatus","outputs":[{"internalType":"enum IRegistryCoordinator.OperatorStatus","name":"","type":"uint8"}]},{"inputs":[{"internalType":"bytes32","name":"operatorId","type":"bytes32"},{"internalType":"uint32","name":"blockNumber","type":"uint32"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"getQuorumBitmapAtBlockNumberByIndex","outputs":[{"internalType":"uint192","name":"","type":"uint192"}]},{"inputs":[{"internalType":"bytes32","name":"operatorId","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getQuorumBitmapHistoryLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint32","name":"blockNumber","type":"uint32"},{"internalType":"bytes32[]","name":"operatorIds","type":"bytes32[]"}],"stateMutability":"view","type":"function","name":"getQuorumBitmapIndicesAtBlockNumber","outputs":[{"internalType":"uint32[]","name":"","type":"uint32[]"}]},{"inputs":[{"internalType":"bytes32","name":"operatorId","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"getQuorumBitmapUpdateByIndex","outputs":[{"internalType":"struct IRegistryCoordinator.QuorumBitmapUpdate","name":"","type":"tuple","components":[{"internalType":"uint32","name":"updateBlockNumber","type":"uint32"},{"internalType":"uint32","name":"nextUpdateBlockNumber","type":"uint32"},{"internalType":"uint192","name":"quorumBitmap","type":"uint192"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"indexRegistry","outputs":[{"internalType":"contract IIndexRegistry","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_initialOwner","type":"address"},{"internalType":"address","name":"_churnApprover","type":"address"},{"internalType":"address","name":"_ejector","type":"address"},{"internalType":"contract IPauserRegistry","name":"_pauserRegistry","type":"address"},{"internalType":"uint256","name":"_initialPausedStatus","type":"uint256"},{"internalType":"struct IRegistryCoordinator.OperatorSetParam[]","name":"_operatorSetParams","type":"tuple[]","components":[{"internalType":"uint32","name":"maxOperatorCount","type":"uint32"},{"internalType":"uint16","name":"kickBIPsOfOperatorStake","type":"uint16"},{"internalType":"uint16","name":"kickBIPsOfTotalStake","type":"uint16"}]},{"internalType":"uint96[]","name":"_minimumStakes","type":"uint96[]"},{"internalType":"struct IStakeRegistry.StrategyParams[][]","name":"_strategyParams","type":"tuple[][]","components":[{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint96","name":"multiplier","type":"uint96"}]}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"isChurnApproverSaltUsed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"numRegistries","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"newPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseAll"},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"}],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pauserRegistry","outputs":[{"internalType":"contract IPauserRegistry","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"pubkeyRegistrationMessageHash","outputs":[{"internalType":"struct BN254.G1Point","name":"","type":"tuple","components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"quorumCount","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function","name":"quorumUpdateBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes","name":"quorumNumbers","type":"bytes"},{"internalType":"string","name":"socket","type":"string"},{"internalType":"struct IBLSApkRegistry.PubkeyRegistrationParams","name":"params","type":"tuple","components":[{"internalType":"struct BN254.G1Point","name":"pubkeyRegistrationSignature","type":"tuple","components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}]},{"internalType":"struct BN254.G1Point","name":"pubkeyG1","type":"tuple","components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}]},{"internalType":"struct BN254.G2Point","name":"pubkeyG2","type":"tuple","components":[{"internalType":"uint256[2]","name":"X","type":"uint256[2]"},{"internalType":"uint256[2]","name":"Y","type":"uint256[2]"}]}]},{"internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","name":"operatorSignature","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"bytes","name":"quorumNumbers","type":"bytes"},{"internalType":"string","name":"socket","type":"string"},{"internalType":"struct IBLSApkRegistry.PubkeyRegistrationParams","name":"params","type":"tuple","components":[{"internalType":"struct BN254.G1Point","name":"pubkeyRegistrationSignature","type":"tuple","components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}]},{"internalType":"struct BN254.G1Point","name":"pubkeyG1","type":"tuple","components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}]},{"internalType":"struct BN254.G2Point","name":"pubkeyG2","type":"tuple","components":[{"internalType":"uint256[2]","name":"X","type":"uint256[2]"},{"internalType":"uint256[2]","name":"Y","type":"uint256[2]"}]}]},{"internalType":"struct IRegistryCoordinator.OperatorKickParam[]","name":"operatorKickParams","type":"tuple[]","components":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","name":"churnApproverSignature","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}]},{"internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","name":"operatorSignature","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"registerOperatorWithChurn"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"registries","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceManager","outputs":[{"internalType":"contract IServiceManager","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_churnApprover","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setChurnApprover"},{"inputs":[{"internalType":"address","name":"_ejector","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setEjector"},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"struct IRegistryCoordinator.OperatorSetParam","name":"operatorSetParams","type":"tuple","components":[{"internalType":"uint32","name":"maxOperatorCount","type":"uint32"},{"internalType":"uint16","name":"kickBIPsOfOperatorStake","type":"uint16"},{"internalType":"uint16","name":"kickBIPsOfTotalStake","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"setOperatorSetParams"},{"inputs":[{"internalType":"contract IPauserRegistry","name":"newPauserRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPauserRegistry"},{"inputs":[],"stateMutability":"view","type":"function","name":"stakeRegistry","outputs":[{"internalType":"contract IStakeRegistry","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"uint256","name":"newPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"updateOperators"},{"inputs":[{"internalType":"address[][]","name":"operatorsPerQuorum","type":"address[][]"},{"internalType":"bytes","name":"quorumNumbers","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorsForQuorum"},{"inputs":[{"internalType":"string","name":"socket","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateSocket"}],"devdoc":{"kind":"dev","methods":{"calculateOperatorChurnApprovalDigestHash(address,bytes32,(uint8,address)[],bytes32,uint256)":{"params":{"expiry":"The desired expiry time of the churnApprover's signature","operatorKickParams":"The parameters needed to kick the operator from the quorums that have reached their caps","registeringOperatorId":"The id of the registering operator ","salt":"The salt to use for the churnApprover's signature"}},"createQuorum((uint32,uint16,uint16),uint96,(address,uint96)[])":{"params":{"minimumStake":"sets the minimum stake required for an operator to register or remain registered","operatorSetParams":"configures the quorum's max operator count and churn parameters","strategyParams":"a list of strategies and multipliers used by the StakeRegistry to calculate an operator's stake weight for the quorum"}},"deregisterOperator(bytes)":{"params":{"quorumNumbers":"is an ordered byte array containing the quorum numbers being deregistered from"}},"ejectOperator(address,bytes)":{"params":{"operator":"the operator to eject","quorumNumbers":"the quorum numbers to eject the operator from"}},"getQuorumBitmapAtBlockNumberByIndex(bytes32,uint32,uint256)":{"details":"This function is meant to be used in concert with `getQuorumBitmapIndicesAtBlockNumber`, which helps off-chain processes to fetch the correct `index` input"},"getQuorumBitmapIndicesAtBlockNumber(uint32,bytes32[])":{"details":"Reverts if any of the `operatorIds` was not (yet) registered at `blockNumber`This function is designed to find proper inputs to the `getQuorumBitmapAtBlockNumberByIndex` function"},"initialize(address,address,address,address,uint256,(uint32,uint16,uint16)[],uint96[],(address,uint96)[][])":{"params":{"_churnApprover":"will hold the churnApprover role, which authorizes registering with churn","_ejector":"will hold the ejector role, which can force-eject operators from quorums","_initialOwner":"will hold the owner role","_initialPausedStatus":"pause status after calling initialize Config for initial quorums (see `createQuorum`):","_minimumStakes":"minimum stake weight to allow an operator to register","_operatorSetParams":"max operator count and operator churn parameters","_pauserRegistry":"a registry of addresses that can pause the contract","_strategyParams":"which Strategies/multipliers a quorum considers when calculating stake weight"}},"owner()":{"details":"need to override function here since its defined in both these contracts"},"pause(uint256)":{"details":"This function can only pause functionality, and thus cannot 'unflip' any bit in `_paused` from 1 to 0.","params":{"newPausedStatus":"represents the new value for `_paused` to take, which means it may flip several bits at once."}},"pubkeyRegistrationMessageHash(address)":{"params":{"operator":"is the address of the operator registering their BLS public key"}},"registerOperator(bytes,string,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(bytes,bytes32,uint256))":{"details":"`params` is ignored if the caller has previously registered a public key`operatorSignature` is ignored if the operator's status is already REGISTERED","params":{"operatorSignature":"is the signature of the operator used by the AVS to register the operator in the delegation manager","params":"contains the G1 & G2 public keys of the operator, and a signature proving their ownership","quorumNumbers":"is an ordered byte array containing the quorum numbers being registered for","socket":"is the socket of the operator (typically an IP address)"}},"registerOperatorWithChurn(bytes,string,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(uint8,address)[],(bytes,bytes32,uint256),(bytes,bytes32,uint256))":{"details":"`params` is ignored if the caller has previously registered a public key`operatorSignature` is ignored if the operator's status is already REGISTERED","params":{"churnApproverSignature":"is the signature of the churnApprover over the `operatorKickParams`","operatorKickParams":"used to determine which operator is removed to maintain quorum capacity as the operator registers for quorums","operatorSignature":"is the signature of the operator used by the AVS to register the operator in the delegation manager","params":"contains the G1 & G2 public keys of the operator, and a signature proving their ownership","quorumNumbers":"is an ordered byte array containing the quorum numbers being registered for"}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"setChurnApprover(address)":{"details":"only callable by the owner","params":{"_churnApprover":"the new churn approver"}},"setEjector(address)":{"details":"only callable by the owner","params":{"_ejector":"the new ejector"}},"setOperatorSetParams(uint8,(uint32,uint16,uint16))":{"details":"only callable by the owner","params":{"operatorSetParams":"the new config","quorumNumber":"the quorum number to update"}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"unpause(uint256)":{"details":"This function can only unpause functionality, and thus cannot 'flip' any bit in `_paused` from 0 to 1.","params":{"newPausedStatus":"represents the new value for `_paused` to take, which means it may flip several bits at once."}},"updateOperators(address[])":{"details":"stakes are queried from the Eigenlayer core DelegationManager contract","params":{"operators":"a list of operator addresses to update"}},"updateOperatorsForQuorum(address[][],bytes)":{"details":"stakes are queried from the Eigenlayer core DelegationManager contractEach list of operator addresses MUST be sorted in ascending orderEach list of operator addresses MUST represent the entire list of registered operators for the corresponding quoruminvariant: Each list of `operatorsPerQuorum` MUST be a sorted version of `IndexRegistry.getOperatorListAtBlockNumber` for the corresponding quorum.note on race condition: if an operator registers/deregisters for any quorum in `quorumNumbers` after a txn to this method is broadcast (but before it is executed), the method will fail","params":{"operatorsPerQuorum":"for each quorum in `quorumNumbers`, this has a corresponding list of operators to update.","quorumNumbers":"is an ordered byte array containing the quorum numbers being updated"}},"updateSocket(string)":{"params":{"socket":"is the new socket of the operator"}}},"version":1},"userdoc":{"kind":"user","methods":{"OPERATOR_CHURN_APPROVAL_TYPEHASH()":{"notice":"The EIP-712 typehash for the `DelegationApproval` struct used by the contract"},"PUBKEY_REGISTRATION_TYPEHASH()":{"notice":"The EIP-712 typehash used for registering BLS public keys"},"blsApkRegistry()":{"notice":"the BLS Aggregate Pubkey Registry contract that will keep track of operators' aggregate BLS public keys per quorum"},"calculateOperatorChurnApprovalDigestHash(address,bytes32,(uint8,address)[],bytes32,uint256)":{"notice":"Public function for the the churnApprover signature hash calculation when operators are being kicked from quorums"},"churnApprover()":{"notice":"the address of the entity allowed to sign off on operators getting kicked out of the AVS during registration"},"createQuorum((uint32,uint16,uint16),uint96,(address,uint96)[])":{"notice":"Creates a quorum and initializes it in each registry contract"},"deregisterOperator(bytes)":{"notice":"Deregisters the caller from one or more quorums"},"ejectOperator(address,bytes)":{"notice":"Forcibly deregisters an operator from one or more quorums"},"ejector()":{"notice":"the address of the entity allowed to eject operators from the AVS"},"getCurrentQuorumBitmap(bytes32)":{"notice":"Returns the current quorum bitmap for the given `operatorId` or 0 if the operator is not registered for any quorum"},"getOperator(address)":{"notice":"Returns the operator struct for the given `operator`"},"getOperatorFromId(bytes32)":{"notice":"Returns the operator address for the given `operatorId`"},"getOperatorId(address)":{"notice":"Returns the operatorId for the given `operator`"},"getOperatorSetParams(uint8)":{"notice":"Returns the operator set params for the given `quorumNumber`"},"getOperatorStatus(address)":{"notice":"Returns the status for the given `operator`"},"getQuorumBitmapAtBlockNumberByIndex(bytes32,uint32,uint256)":{"notice":"Returns the quorum bitmap for the given `operatorId` at the given `blockNumber` via the `index`, reverting if `index` is incorrect"},"getQuorumBitmapHistoryLength(bytes32)":{"notice":"Returns the length of the quorum bitmap history for the given `operatorId`"},"getQuorumBitmapIndicesAtBlockNumber(uint32,bytes32[])":{"notice":"Returns the indices of the quorumBitmaps for the provided `operatorIds` at the given `blockNumber`"},"getQuorumBitmapUpdateByIndex(bytes32,uint256)":{"notice":"Returns the `index`th entry in the operator with `operatorId`'s bitmap history"},"indexRegistry()":{"notice":"the Index Registry contract that will keep track of operators' indexes"},"isChurnApproverSaltUsed(bytes32)":{"notice":"whether the salt has been used for an operator churn approval"},"numRegistries()":{"notice":"Returns the number of registries"},"pause(uint256)":{"notice":"This function is used to pause an EigenLayer contract's functionality. It is permissioned to the `pauser` address, which is expected to be a low threshold multisig."},"pauseAll()":{"notice":"Alias for `pause(type(uint256).max)`."},"paused()":{"notice":"Returns the current paused status as a uint256."},"paused(uint8)":{"notice":"Returns 'true' if the `indexed`th bit of `_paused` is 1, and 'false' otherwise"},"pauserRegistry()":{"notice":"Address of the `PauserRegistry` contract that this contract defers to for determining access control (for pausing)."},"pubkeyRegistrationMessageHash(address)":{"notice":"Returns the message hash that an operator must sign to register their BLS public key."},"quorumCount()":{"notice":"the current number of quorums supported by the registry coordinator"},"quorumUpdateBlockNumber(uint8)":{"notice":"mapping from quorum number to the latest block that all quorums were updated all at once"},"registerOperator(bytes,string,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(bytes,bytes32,uint256))":{"notice":"Registers msg.sender as an operator for one or more quorums. If any quorum exceeds its maximum operator capacity after the operator is registered, this method will fail."},"registerOperatorWithChurn(bytes,string,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(uint8,address)[],(bytes,bytes32,uint256),(bytes,bytes32,uint256))":{"notice":"Registers msg.sender as an operator for one or more quorums. If any quorum reaches its maximum operator capacity, `operatorKickParams` is used to replace an old operator with the new one."},"registries(uint256)":{"notice":"the dynamic-length array of the registries this coordinator is coordinating"},"serviceManager()":{"notice":"the ServiceManager for this AVS, which forwards calls onto EigenLayer's core contracts"},"setChurnApprover(address)":{"notice":"Sets the churnApprover, which approves operator registration with churn (see `registerOperatorWithChurn`)"},"setEjector(address)":{"notice":"Sets the ejector, which can force-deregister operators from quorums"},"setOperatorSetParams(uint8,(uint32,uint16,uint16))":{"notice":"Updates an existing quorum's configuration with a new max operator count and operator churn parameters"},"setPauserRegistry(address)":{"notice":"Allows the unpauser to set a new pauser registry"},"stakeRegistry()":{"notice":"the Stake Registry contract that will keep track of operators' stakes"},"unpause(uint256)":{"notice":"This function is used to unpause an EigenLayer contract's functionality. It is permissioned to the `unpauser` address, which is expected to be a high threshold multisig or governance contract."},"updateOperators(address[])":{"notice":"Updates the StakeRegistry's view of one or more operators' stakes. If any operator is found to be below the minimum stake for the quorum, they are deregistered."},"updateOperatorsForQuorum(address[][],bytes)":{"notice":"For each quorum in `quorumNumbers`, updates the StakeRegistry's view of ALL its registered operators' stakes. Each quorum's `quorumUpdateBlockNumber` is also updated, which tracks the most recent block number when ALL registered operators were updated."},"updateSocket(string)":{"notice":"Updates the socket of the msg.sender given they are a registered operator"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable/","@openzeppelin/=lib/openzeppelin-contracts/","ds-test/=lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/RegistryCoordinator.sol":"RegistryCoordinator"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x9906828f285cc76bbbe077f908d87c4bffd0a3bff9394f7a4b60a9d9a2672c1e","urls":["bzz-raw://4c0f43e14e50ac322685b5cd301459118e2770bdfb053f8f3ded08ee9fbf5bf9","dweb:/ipfs/QmPQtY6KEUCbrKwweu8BvA7YjnXXxkkuZPyLSRGV5EoPTe"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0x1f8e17b0f952042132ca64e202022d83783b7f42ec364cd0cad1950ecb95a13d","urls":["bzz-raw://a2be4c476902f25fb058f779e3d4e5b1182d9dc9fbdec518acbe9544c0d3c141","dweb:/ipfs/QmdgZq6JrCD36Xry2vD8QSeGguGQ9TGWY2CMvKrhR9NQ6u"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0x22b7a17d53696412f80645f1fa65274ae89040bdc706262e3b6cc577dbafcaa4","urls":["bzz-raw://b15002346892a48fd7cf9a8a4cf121e17ba133d21e4822e71fbffac85117d6b2","dweb:/ipfs/QmRBPJUcRQ6uKmSvCYhhtVWcKCAWkQFSVZZwZR7HR42kiz"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x33a935182f77cfd508fc57ec8e45afc8dc3748e1e9b764d36bf90ae6466f257b","urls":["bzz-raw://d3981b5bbf435cda04e2ed2f348f886ebf1500c18dd4bbf67b1f1bc0272e2d3f","dweb:/ipfs/QmYHDzQx29ataM2ejRCXFcPxaPdxWqX8v7uwUAYoG9572w"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0xffafae142d5337a5c204519e8f82fe3a5fae137286ebf597fa50699cf12c2474","urls":["bzz-raw://b577a12f7788095b230fd069b36ba9b3cdb376a0b7c3d8ae71588e5bf0c2f574","dweb:/ipfs/QmXd1cDzYpxecyFEwowLiBKKjzRHgV8cs1qvLwypdEbVYy"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4","urls":["bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b","dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x3d9eeecf96bd8d6427445db76b9a73f9861c6c3601001226bed2f7fb81e252e6","urls":["bzz-raw://c836719a65892c5cffdba9de4e009e5f8a4e49aea9c5f46d57b15660c6c2d07d","dweb:/ipfs/QmWuzNq2HdEH1hsRg8Jc95k1DZdNjXFb5ehkz9iLNNSqhT"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xaeee2ac5cfcc3388b63bef2668fa435c65a4b433b52ce9f5013822c6ec875fa3","urls":["bzz-raw://86eb6d3da5b45f7509995ffa170eaaadffbdd6d43e50f0902d421bb93a7dfda6","dweb:/ipfs/QmWaYcgtnaVpcekSP7LyY6AGrE3hRE3kZE4H4EKhsSysDG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x633b5fb10209891f696a9c8db4d7327ed7f560a2e9710489e38a67daeda59a96","urls":["bzz-raw://c8381baaec3afa6b200420c093706974776dfd14f6887abe7457eb867351a068","dweb:/ipfs/QmP9H9ttS1sJ6FrvMEefJhU6B4z1wMCjcYYZqVfsLXagJE"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/EIP1271SignatureUtils.sol":{"keccak256":"0xe92d584c47c5828e026a8082af3da38a853e3942c4da7deb705d6470a41afab3","urls":["bzz-raw://1c436c578781fd7d3dffdb24e906819422819f5e9a71d39ee63166a3d5cb3373","dweb:/ipfs/QmP7bJhYqLpwqk2Xq4tqDCUMi2nFAhxxW3Pz36ctE1sbdD"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0x1c5895f913e95682b0c371595cb1fa0d9c34ea921a0fbb5c32201b4315e80a56","urls":["bzz-raw://c470e449a3144fbaaa17b44823ba9cba901f063b04355c800bf62cabdd081cd4","dweb:/ipfs/QmSJ8gaAF4WA1aXGmLesnnRo8fDZNEFnqZSGNkJnXLRM9R"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0xcf8422dfa6ccc393de19417570c6239e0fde54de9433ea258cbeb6937ff7f316","urls":["bzz-raw://328e582c05b7311ad4107c46f554f15b5572b89a4ab6d067c73425b7418d946c","dweb:/ipfs/QmdM81GQY5nok5oCTP8Cc6M8s1UC9f6ZbSWybaUxrZNrmY"],"license":"MIT"},"lib/eigenlayer-contracts/src/contracts/permissions/Pausable.sol":{"keccak256":"0x53a08f01d778b91604dc1d27d4805fa99b9a2993f26e6079a1d8701699dc9f21","urls":["bzz-raw://8fd5dd22dcb1fb4f803843b920501679f252ccf100a06acbad7a22452cdc1173","dweb:/ipfs/QmeyoJoTN3Gi7Q4Fk4y89UTDDnyPFmSbdu8N7Vyijwjx2s"],"license":"BUSL-1.1"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x1e4597b288e792b4530cbc7e97e28754e8457969e61a86d9e6e3a2857eb8a68f","urls":["bzz-raw://41fb94e2f5df15c1d070865db82373dc85e52bc3a2f85e3aa338488f8616532c","dweb:/ipfs/QmeKTieHBEur42JbTkn2JChdGx3GT9YZbVCP7wj2ejQvMj"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x1e5f62292e000eb24ff5a82fbe1310b5a03871d008bcd2e203e08cd044af0466","urls":["bzz-raw://d300b99404ad2930649be8508f7b1ed9940bc82facb7291a0540c1ec42badcaa","dweb:/ipfs/QmW2xV7vTvtyJPDb5PwYBRSrs2qGMWV5rT6V9dzjaPUp9q"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544","urls":["bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e","dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x78297d2d2e50b4fec6a42ecf5be5c76a6c102810388d11f165a363e0aa8f5034","urls":["bzz-raw://09968869e3943f45df330f42bdb49f96c71f55b5a424c73faba95135fafc5c78","dweb:/ipfs/QmTLAoVbabvKZybmaFEHwib1feE2gWwN5yMcQBADVyBM5E"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3","urls":["bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638","dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xf57046ce68c681ede23c9a117b8ed58b7c960dc7f806ab8a4db80a0dac737a88","urls":["bzz-raw://beec7753d3491d55fb6f416e28ec8dd79b5f866405025fab32d51e3ae027e865","dweb:/ipfs/QmQdqhSufKYphPsy3PQzjzu3VqbXk5mzuSm2grk345rPCh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/draft-EIP712.sol":{"keccak256":"0x6bf2bdf6cb44f0ed451fc740ed5607d3e6bc00f901eea052e3ed0a272b92595c","urls":["bzz-raw://66d031460a93ca474c9181341759e2e4c757e2ab6e19a283695dd6aa070d96f6","dweb:/ipfs/QmY2PAM2XqX9UMnqDdg4FGaaUhYF7HL5RLFT6FbUZkFZqM"],"license":"MIT"},"src/RegistryCoordinator.sol":{"keccak256":"0x2d75249e4073e8f475caf96f914aba6b647269ccee138d8bddaa390bbeaba583","urls":["bzz-raw://d93c75c87ceb916e361860e081afbe3bb7a1e4928540bdbc6f07e19471f1d94b","dweb:/ipfs/Qmcavtw4bVTQj5bGgvvwMbMshEk9PrbdP9hHmRXxUjzz8G"],"license":"BUSL-1.1"},"src/RegistryCoordinatorStorage.sol":{"keccak256":"0x01fa3683bb6614cb10192362894fcca8853108dfdcf17c0108cc730755e72b01","urls":["bzz-raw://7f026f5b691135fdf3cb3ce689e6d929eb350bd0510948d21f26b0aaaf274115","dweb:/ipfs/QmQgaHac3kFzFS74ZvTbqFtAyp6sSvqfw55DVELZ98J3ZE"],"license":"BUSL-1.1"},"src/interfaces/IBLSApkRegistry.sol":{"keccak256":"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5","urls":["bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354","dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp"],"license":"BUSL-1.1"},"src/interfaces/IIndexRegistry.sol":{"keccak256":"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b","urls":["bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d","dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F"],"license":"BUSL-1.1"},"src/interfaces/IRegistry.sol":{"keccak256":"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3","urls":["bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25","dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY"],"license":"BUSL-1.1"},"src/interfaces/IRegistryCoordinator.sol":{"keccak256":"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385","urls":["bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d","dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD"],"license":"BUSL-1.1"},"src/interfaces/IServiceManager.sol":{"keccak256":"0x89d338743852e613157a974204bef7a66e407937d4c581b1ae862e966689307f","urls":["bzz-raw://4a90fad166378a27c0ea189ff2f2d02df7ca171152edc197f2046013e7a48e60","dweb:/ipfs/QmbaHqG2jpqoyxSj7C1FFjENfsytYSKy6E1BsJozL5dvxt"],"license":"BUSL-1.1"},"src/interfaces/ISocketUpdater.sol":{"keccak256":"0x2f209d4556d493b7b9d30a48eb98b9ee17f823ff677e9c656ebd6ed454b3626e","urls":["bzz-raw://1f1a7930cf8acf19684bcc39ea958d354586846f6dac0fd6a10e69a30eebea25","dweb:/ipfs/QmNsuiA1KKx22mf2YxYvK8CeuqUsgPNfUR7ijvnpBZWETw"],"license":"BUSL-1.1"},"src/interfaces/IStakeRegistry.sol":{"keccak256":"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4","urls":["bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97","dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B"],"license":"BUSL-1.1"},"src/libraries/BN254.sol":{"keccak256":"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3","urls":["bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae","dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki"],"license":"MIT"},"src/libraries/BitmapUtils.sol":{"keccak256":"0x44315ac460be30a6b18fd4df4d1b8afb46653bf4dc06ca9f93c32353fd0605c5","urls":["bzz-raw://da14f2ead3a375b02afd09d4a02edddf7b63a88945746b96789b2473184fdb04","dweb:/ipfs/QmRqcjxa2Vv2MrLdPeAwsktXdWTirapEDsRbJCyYRtKT6g"],"license":"MIT"}},"version":1},"id":101} \ No newline at end of file diff --git a/crates/utils/json/ServiceManagerBase.json b/crates/utils/json/ServiceManagerBase.json deleted file mode 100644 index d430ddd7..00000000 --- a/crates/utils/json/ServiceManagerBase.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"avsDirectory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"deregisterOperatorFromAVS","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getOperatorRestakedStrategies","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getRestakeableStrategies","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"registerOperatorToAVS","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"operatorSignature","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateAVSMetadataURI","inputs":[{"name":"_metadataURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"avsDirectory()":"6b3aa72e","deregisterOperatorFromAVS(address)":"a364f4da","getOperatorRestakedStrategies(address)":"33cfb7b7","getRestakeableStrategies()":"e481af9d","owner()":"8da5cb5b","registerOperatorToAVS(address,(bytes,bytes32,uint256))":"9926ee7d","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b","updateAVSMetadataURI(string)":"a98fb355"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"avsDirectory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"deregisterOperatorFromAVS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRestakedStrategies\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRestakeableStrategies\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithSaltAndExpiry\",\"name\":\"operatorSignature\",\"type\":\"tuple\"}],\"name\":\"registerOperatorToAVS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_metadataURI\",\"type\":\"string\"}],\"name\":\"updateAVSMetadataURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"kind\":\"dev\",\"methods\":{\"deregisterOperatorFromAVS(address)\":{\"params\":{\"operator\":\"The address of the operator to deregister.\"}},\"getOperatorRestakedStrategies(address)\":{\"details\":\"This function is intended to be called off-chainNo guarantee is made on whether the operator has shares for a strategy in a quorum or uniqueness of each element in the returned array. The off-chain service should do that validation separately\",\"params\":{\"operator\":\"The address of the operator to get restaked strategies for\"}},\"getRestakeableStrategies()\":{\"details\":\"This function is intended to be called off-chainNo guarantee is made on uniqueness of each element in the returned array. The off-chain service should do that validation separately\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"registerOperatorToAVS(address,(bytes,bytes32,uint256))\":{\"params\":{\"operator\":\"The address of the operator to register.\",\"operatorSignature\":\"The signature, salt, and expiry of the operator's signature.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"updateAVSMetadataURI(string)\":{\"details\":\"only callable by the owner\",\"params\":{\"_metadataURI\":\"is the metadata URI for the AVS\"}}},\"title\":\"Minimal implementation of a ServiceManager-type contract. This contract can be inherited from or simply used as a point-of-reference.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"avsDirectory()\":{\"notice\":\"Returns the EigenLayer AVSDirectory contract.\"},\"constructor\":{\"notice\":\"Sets the (immutable) `_registryCoordinator` address\"},\"deregisterOperatorFromAVS(address)\":{\"notice\":\"Forwards a call to EigenLayer's AVSDirectory contract to confirm operator deregistration from the AVS\"},\"getOperatorRestakedStrategies(address)\":{\"notice\":\"Returns the list of strategies that the operator has potentially restaked on the AVS\"},\"getRestakeableStrategies()\":{\"notice\":\"Returns the list of strategies that the AVS supports for restaking\"},\"registerOperatorToAVS(address,(bytes,bytes32,uint256))\":{\"notice\":\"Forwards a call to EigenLayer's AVSDirectory contract to confirm operator registration with the AVS\"},\"updateAVSMetadataURI(string)\":{\"notice\":\"Updates the metadata URI for the AVS\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/ServiceManagerBase.sol\":\"ServiceManagerBase\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol\":{\"keccak256\":\"0x337c94d7fdb7a862dd0d65e3d0ae837fc9a62f7e2b314f39a3d65a683eb666ff\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://88bc4de1a2d44c4c18f60a084a216deb3708ffed305e647a9d999543ffc4f9f1\",\"dweb:/ipfs/QmbgxTunu4Erz9EewrvkzcTSDPZn3oSKXxKJBeXhbJPSv8\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x9906828f285cc76bbbe077f908d87c4bffd0a3bff9394f7a4b60a9d9a2672c1e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4c0f43e14e50ac322685b5cd301459118e2770bdfb053f8f3ded08ee9fbf5bf9\",\"dweb:/ipfs/QmPQtY6KEUCbrKwweu8BvA7YjnXXxkkuZPyLSRGV5EoPTe\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x1f8e17b0f952042132ca64e202022d83783b7f42ec364cd0cad1950ecb95a13d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a2be4c476902f25fb058f779e3d4e5b1182d9dc9fbdec518acbe9544c0d3c141\",\"dweb:/ipfs/QmdgZq6JrCD36Xry2vD8QSeGguGQ9TGWY2CMvKrhR9NQ6u\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x22b7a17d53696412f80645f1fa65274ae89040bdc706262e3b6cc577dbafcaa4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b15002346892a48fd7cf9a8a4cf121e17ba133d21e4822e71fbffac85117d6b2\",\"dweb:/ipfs/QmRBPJUcRQ6uKmSvCYhhtVWcKCAWkQFSVZZwZR7HR42kiz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x33a935182f77cfd508fc57ec8e45afc8dc3748e1e9b764d36bf90ae6466f257b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d3981b5bbf435cda04e2ed2f348f886ebf1500c18dd4bbf67b1f1bc0272e2d3f\",\"dweb:/ipfs/QmYHDzQx29ataM2ejRCXFcPxaPdxWqX8v7uwUAYoG9572w\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xffafae142d5337a5c204519e8f82fe3a5fae137286ebf597fa50699cf12c2474\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b577a12f7788095b230fd069b36ba9b3cdb376a0b7c3d8ae71588e5bf0c2f574\",\"dweb:/ipfs/QmXd1cDzYpxecyFEwowLiBKKjzRHgV8cs1qvLwypdEbVYy\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b\",\"dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x3d9eeecf96bd8d6427445db76b9a73f9861c6c3601001226bed2f7fb81e252e6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c836719a65892c5cffdba9de4e009e5f8a4e49aea9c5f46d57b15660c6c2d07d\",\"dweb:/ipfs/QmWuzNq2HdEH1hsRg8Jc95k1DZdNjXFb5ehkz9iLNNSqhT\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xaeee2ac5cfcc3388b63bef2668fa435c65a4b433b52ce9f5013822c6ec875fa3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://86eb6d3da5b45f7509995ffa170eaaadffbdd6d43e50f0902d421bb93a7dfda6\",\"dweb:/ipfs/QmWaYcgtnaVpcekSP7LyY6AGrE3hRE3kZE4H4EKhsSysDG\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x633b5fb10209891f696a9c8db4d7327ed7f560a2e9710489e38a67daeda59a96\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c8381baaec3afa6b200420c093706974776dfd14f6887abe7457eb867351a068\",\"dweb:/ipfs/QmP9H9ttS1sJ6FrvMEefJhU6B4z1wMCjcYYZqVfsLXagJE\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0x1c5895f913e95682b0c371595cb1fa0d9c34ea921a0fbb5c32201b4315e80a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c470e449a3144fbaaa17b44823ba9cba901f063b04355c800bf62cabdd081cd4\",\"dweb:/ipfs/QmSJ8gaAF4WA1aXGmLesnnRo8fDZNEFnqZSGNkJnXLRM9R\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0xcf8422dfa6ccc393de19417570c6239e0fde54de9433ea258cbeb6937ff7f316\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://328e582c05b7311ad4107c46f554f15b5572b89a4ab6d067c73425b7418d946c\",\"dweb:/ipfs/QmdM81GQY5nok5oCTP8Cc6M8s1UC9f6ZbSWybaUxrZNrmY\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x1e4597b288e792b4530cbc7e97e28754e8457969e61a86d9e6e3a2857eb8a68f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://41fb94e2f5df15c1d070865db82373dc85e52bc3a2f85e3aa338488f8616532c\",\"dweb:/ipfs/QmeKTieHBEur42JbTkn2JChdGx3GT9YZbVCP7wj2ejQvMj\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x1e5f62292e000eb24ff5a82fbe1310b5a03871d008bcd2e203e08cd044af0466\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d300b99404ad2930649be8508f7b1ed9940bc82facb7291a0540c1ec42badcaa\",\"dweb:/ipfs/QmW2xV7vTvtyJPDb5PwYBRSrs2qGMWV5rT6V9dzjaPUp9q\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"src/ServiceManagerBase.sol\":{\"keccak256\":\"0x0c7642a89c66276951017dc20e55080f8b6e2eed03feb167a41cc98447375202\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4e69b1de857a69b7a38fa989491ed7917f7408417fe43663ef5777dd6721f9e0\",\"dweb:/ipfs/QmVggasbZaG9uGW7SsA8hZ3LQquVTXoPWKS6R4NnShT23G\"]},\"src/interfaces/IBLSApkRegistry.sol\":{\"keccak256\":\"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354\",\"dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp\"]},\"src/interfaces/IIndexRegistry.sol\":{\"keccak256\":\"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d\",\"dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F\"]},\"src/interfaces/IRegistry.sol\":{\"keccak256\":\"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25\",\"dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY\"]},\"src/interfaces/IRegistryCoordinator.sol\":{\"keccak256\":\"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d\",\"dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD\"]},\"src/interfaces/IServiceManager.sol\":{\"keccak256\":\"0x89d338743852e613157a974204bef7a66e407937d4c581b1ae862e966689307f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4a90fad166378a27c0ea189ff2f2d02df7ca171152edc197f2046013e7a48e60\",\"dweb:/ipfs/QmbaHqG2jpqoyxSj7C1FFjENfsytYSKy6E1BsJozL5dvxt\"]},\"src/interfaces/IStakeRegistry.sol\":{\"keccak256\":\"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97\",\"dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B\"]},\"src/libraries/BN254.sol\":{\"keccak256\":\"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae\",\"dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki\"]},\"src/libraries/BitmapUtils.sol\":{\"keccak256\":\"0x44315ac460be30a6b18fd4df4d1b8afb46653bf4dc06ca9f93c32353fd0605c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da14f2ead3a375b02afd09d4a02edddf7b63a88945746b96789b2473184fdb04\",\"dweb:/ipfs/QmRqcjxa2Vv2MrLdPeAwsktXdWTirapEDsRbJCyYRtKT6g\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"avsDirectory","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deregisterOperatorFromAVS"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRestakedStrategies","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getRestakeableStrategies","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","name":"operatorSignature","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"registerOperatorToAVS"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"string","name":"_metadataURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateAVSMetadataURI"}],"devdoc":{"kind":"dev","methods":{"deregisterOperatorFromAVS(address)":{"params":{"operator":"The address of the operator to deregister."}},"getOperatorRestakedStrategies(address)":{"details":"This function is intended to be called off-chainNo guarantee is made on whether the operator has shares for a strategy in a quorum or uniqueness of each element in the returned array. The off-chain service should do that validation separately","params":{"operator":"The address of the operator to get restaked strategies for"}},"getRestakeableStrategies()":{"details":"This function is intended to be called off-chainNo guarantee is made on uniqueness of each element in the returned array. The off-chain service should do that validation separately"},"owner()":{"details":"Returns the address of the current owner."},"registerOperatorToAVS(address,(bytes,bytes32,uint256))":{"params":{"operator":"The address of the operator to register.","operatorSignature":"The signature, salt, and expiry of the operator's signature."}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"updateAVSMetadataURI(string)":{"details":"only callable by the owner","params":{"_metadataURI":"is the metadata URI for the AVS"}}},"version":1},"userdoc":{"kind":"user","methods":{"avsDirectory()":{"notice":"Returns the EigenLayer AVSDirectory contract."},"constructor":{"notice":"Sets the (immutable) `_registryCoordinator` address"},"deregisterOperatorFromAVS(address)":{"notice":"Forwards a call to EigenLayer's AVSDirectory contract to confirm operator deregistration from the AVS"},"getOperatorRestakedStrategies(address)":{"notice":"Returns the list of strategies that the operator has potentially restaked on the AVS"},"getRestakeableStrategies()":{"notice":"Returns the list of strategies that the AVS supports for restaking"},"registerOperatorToAVS(address,(bytes,bytes32,uint256))":{"notice":"Forwards a call to EigenLayer's AVSDirectory contract to confirm operator registration with the AVS"},"updateAVSMetadataURI(string)":{"notice":"Updates the metadata URI for the AVS"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable/","@openzeppelin/=lib/openzeppelin-contracts/","ds-test/=lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/ServiceManagerBase.sol":"ServiceManagerBase"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol":{"keccak256":"0x337c94d7fdb7a862dd0d65e3d0ae837fc9a62f7e2b314f39a3d65a683eb666ff","urls":["bzz-raw://88bc4de1a2d44c4c18f60a084a216deb3708ffed305e647a9d999543ffc4f9f1","dweb:/ipfs/QmbgxTunu4Erz9EewrvkzcTSDPZn3oSKXxKJBeXhbJPSv8"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x9906828f285cc76bbbe077f908d87c4bffd0a3bff9394f7a4b60a9d9a2672c1e","urls":["bzz-raw://4c0f43e14e50ac322685b5cd301459118e2770bdfb053f8f3ded08ee9fbf5bf9","dweb:/ipfs/QmPQtY6KEUCbrKwweu8BvA7YjnXXxkkuZPyLSRGV5EoPTe"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0x1f8e17b0f952042132ca64e202022d83783b7f42ec364cd0cad1950ecb95a13d","urls":["bzz-raw://a2be4c476902f25fb058f779e3d4e5b1182d9dc9fbdec518acbe9544c0d3c141","dweb:/ipfs/QmdgZq6JrCD36Xry2vD8QSeGguGQ9TGWY2CMvKrhR9NQ6u"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0x22b7a17d53696412f80645f1fa65274ae89040bdc706262e3b6cc577dbafcaa4","urls":["bzz-raw://b15002346892a48fd7cf9a8a4cf121e17ba133d21e4822e71fbffac85117d6b2","dweb:/ipfs/QmRBPJUcRQ6uKmSvCYhhtVWcKCAWkQFSVZZwZR7HR42kiz"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x33a935182f77cfd508fc57ec8e45afc8dc3748e1e9b764d36bf90ae6466f257b","urls":["bzz-raw://d3981b5bbf435cda04e2ed2f348f886ebf1500c18dd4bbf67b1f1bc0272e2d3f","dweb:/ipfs/QmYHDzQx29ataM2ejRCXFcPxaPdxWqX8v7uwUAYoG9572w"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0xffafae142d5337a5c204519e8f82fe3a5fae137286ebf597fa50699cf12c2474","urls":["bzz-raw://b577a12f7788095b230fd069b36ba9b3cdb376a0b7c3d8ae71588e5bf0c2f574","dweb:/ipfs/QmXd1cDzYpxecyFEwowLiBKKjzRHgV8cs1qvLwypdEbVYy"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4","urls":["bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b","dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x3d9eeecf96bd8d6427445db76b9a73f9861c6c3601001226bed2f7fb81e252e6","urls":["bzz-raw://c836719a65892c5cffdba9de4e009e5f8a4e49aea9c5f46d57b15660c6c2d07d","dweb:/ipfs/QmWuzNq2HdEH1hsRg8Jc95k1DZdNjXFb5ehkz9iLNNSqhT"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xaeee2ac5cfcc3388b63bef2668fa435c65a4b433b52ce9f5013822c6ec875fa3","urls":["bzz-raw://86eb6d3da5b45f7509995ffa170eaaadffbdd6d43e50f0902d421bb93a7dfda6","dweb:/ipfs/QmWaYcgtnaVpcekSP7LyY6AGrE3hRE3kZE4H4EKhsSysDG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x633b5fb10209891f696a9c8db4d7327ed7f560a2e9710489e38a67daeda59a96","urls":["bzz-raw://c8381baaec3afa6b200420c093706974776dfd14f6887abe7457eb867351a068","dweb:/ipfs/QmP9H9ttS1sJ6FrvMEefJhU6B4z1wMCjcYYZqVfsLXagJE"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0x1c5895f913e95682b0c371595cb1fa0d9c34ea921a0fbb5c32201b4315e80a56","urls":["bzz-raw://c470e449a3144fbaaa17b44823ba9cba901f063b04355c800bf62cabdd081cd4","dweb:/ipfs/QmSJ8gaAF4WA1aXGmLesnnRo8fDZNEFnqZSGNkJnXLRM9R"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0xcf8422dfa6ccc393de19417570c6239e0fde54de9433ea258cbeb6937ff7f316","urls":["bzz-raw://328e582c05b7311ad4107c46f554f15b5572b89a4ab6d067c73425b7418d946c","dweb:/ipfs/QmdM81GQY5nok5oCTP8Cc6M8s1UC9f6ZbSWybaUxrZNrmY"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x1e4597b288e792b4530cbc7e97e28754e8457969e61a86d9e6e3a2857eb8a68f","urls":["bzz-raw://41fb94e2f5df15c1d070865db82373dc85e52bc3a2f85e3aa338488f8616532c","dweb:/ipfs/QmeKTieHBEur42JbTkn2JChdGx3GT9YZbVCP7wj2ejQvMj"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x1e5f62292e000eb24ff5a82fbe1310b5a03871d008bcd2e203e08cd044af0466","urls":["bzz-raw://d300b99404ad2930649be8508f7b1ed9940bc82facb7291a0540c1ec42badcaa","dweb:/ipfs/QmW2xV7vTvtyJPDb5PwYBRSrs2qGMWV5rT6V9dzjaPUp9q"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"src/ServiceManagerBase.sol":{"keccak256":"0x0c7642a89c66276951017dc20e55080f8b6e2eed03feb167a41cc98447375202","urls":["bzz-raw://4e69b1de857a69b7a38fa989491ed7917f7408417fe43663ef5777dd6721f9e0","dweb:/ipfs/QmVggasbZaG9uGW7SsA8hZ3LQquVTXoPWKS6R4NnShT23G"],"license":"BUSL-1.1"},"src/interfaces/IBLSApkRegistry.sol":{"keccak256":"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5","urls":["bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354","dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp"],"license":"BUSL-1.1"},"src/interfaces/IIndexRegistry.sol":{"keccak256":"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b","urls":["bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d","dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F"],"license":"BUSL-1.1"},"src/interfaces/IRegistry.sol":{"keccak256":"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3","urls":["bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25","dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY"],"license":"BUSL-1.1"},"src/interfaces/IRegistryCoordinator.sol":{"keccak256":"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385","urls":["bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d","dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD"],"license":"BUSL-1.1"},"src/interfaces/IServiceManager.sol":{"keccak256":"0x89d338743852e613157a974204bef7a66e407937d4c581b1ae862e966689307f","urls":["bzz-raw://4a90fad166378a27c0ea189ff2f2d02df7ca171152edc197f2046013e7a48e60","dweb:/ipfs/QmbaHqG2jpqoyxSj7C1FFjENfsytYSKy6E1BsJozL5dvxt"],"license":"BUSL-1.1"},"src/interfaces/IStakeRegistry.sol":{"keccak256":"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4","urls":["bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97","dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B"],"license":"BUSL-1.1"},"src/libraries/BN254.sol":{"keccak256":"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3","urls":["bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae","dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki"],"license":"MIT"},"src/libraries/BitmapUtils.sol":{"keccak256":"0x44315ac460be30a6b18fd4df4d1b8afb46653bf4dc06ca9f93c32353fd0605c5","urls":["bzz-raw://da14f2ead3a375b02afd09d4a02edddf7b63a88945746b96789b2473184fdb04","dweb:/ipfs/QmRqcjxa2Vv2MrLdPeAwsktXdWTirapEDsRbJCyYRtKT6g"],"license":"MIT"}},"version":1},"id":103} \ No newline at end of file diff --git a/crates/utils/json/StakeRegistry.json b/crates/utils/json/StakeRegistry.json deleted file mode 100644 index 7223f01c..00000000 --- a/crates/utils/json/StakeRegistry.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_registryCoordinator","type":"address","internalType":"contract IRegistryCoordinator"},{"name":"_delegationManager","type":"address","internalType":"contract IDelegationManager"}],"stateMutability":"nonpayable"},{"type":"function","name":"MAX_WEIGHING_FUNCTION_LENGTH","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"WEIGHTING_DIVISOR","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"addStrategies","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"_strategyParams","type":"tuple[]","internalType":"struct IStakeRegistry.StrategyParams[]","components":[{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"multiplier","type":"uint96","internalType":"uint96"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegation","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IDelegationManager"}],"stateMutability":"view"},{"type":"function","name":"deregisterOperator","inputs":[{"name":"operatorId","type":"bytes32","internalType":"bytes32"},{"name":"quorumNumbers","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getCurrentStake","inputs":[{"name":"operatorId","type":"bytes32","internalType":"bytes32"},{"name":"quorumNumber","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint96","internalType":"uint96"}],"stateMutability":"view"},{"type":"function","name":"getCurrentTotalStake","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint96","internalType":"uint96"}],"stateMutability":"view"},{"type":"function","name":"getLatestStakeUpdate","inputs":[{"name":"operatorId","type":"bytes32","internalType":"bytes32"},{"name":"quorumNumber","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IStakeRegistry.StakeUpdate","components":[{"name":"updateBlockNumber","type":"uint32","internalType":"uint32"},{"name":"nextUpdateBlockNumber","type":"uint32","internalType":"uint32"},{"name":"stake","type":"uint96","internalType":"uint96"}]}],"stateMutability":"view"},{"type":"function","name":"getStakeAtBlockNumber","inputs":[{"name":"operatorId","type":"bytes32","internalType":"bytes32"},{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"blockNumber","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"uint96","internalType":"uint96"}],"stateMutability":"view"},{"type":"function","name":"getStakeAtBlockNumberAndIndex","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"blockNumber","type":"uint32","internalType":"uint32"},{"name":"operatorId","type":"bytes32","internalType":"bytes32"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint96","internalType":"uint96"}],"stateMutability":"view"},{"type":"function","name":"getStakeHistory","inputs":[{"name":"operatorId","type":"bytes32","internalType":"bytes32"},{"name":"quorumNumber","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct IStakeRegistry.StakeUpdate[]","components":[{"name":"updateBlockNumber","type":"uint32","internalType":"uint32"},{"name":"nextUpdateBlockNumber","type":"uint32","internalType":"uint32"},{"name":"stake","type":"uint96","internalType":"uint96"}]}],"stateMutability":"view"},{"type":"function","name":"getStakeHistoryLength","inputs":[{"name":"operatorId","type":"bytes32","internalType":"bytes32"},{"name":"quorumNumber","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getStakeUpdateAtIndex","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"operatorId","type":"bytes32","internalType":"bytes32"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IStakeRegistry.StakeUpdate","components":[{"name":"updateBlockNumber","type":"uint32","internalType":"uint32"},{"name":"nextUpdateBlockNumber","type":"uint32","internalType":"uint32"},{"name":"stake","type":"uint96","internalType":"uint96"}]}],"stateMutability":"view"},{"type":"function","name":"getStakeUpdateIndexAtBlockNumber","inputs":[{"name":"operatorId","type":"bytes32","internalType":"bytes32"},{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"blockNumber","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"getTotalStakeAtBlockNumberFromIndex","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"blockNumber","type":"uint32","internalType":"uint32"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint96","internalType":"uint96"}],"stateMutability":"view"},{"type":"function","name":"getTotalStakeHistoryLength","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTotalStakeIndicesAtBlockNumber","inputs":[{"name":"blockNumber","type":"uint32","internalType":"uint32"},{"name":"quorumNumbers","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint32[]","internalType":"uint32[]"}],"stateMutability":"view"},{"type":"function","name":"getTotalStakeUpdateAtIndex","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IStakeRegistry.StakeUpdate","components":[{"name":"updateBlockNumber","type":"uint32","internalType":"uint32"},{"name":"nextUpdateBlockNumber","type":"uint32","internalType":"uint32"},{"name":"stake","type":"uint96","internalType":"uint96"}]}],"stateMutability":"view"},{"type":"function","name":"initializeQuorum","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"minimumStake","type":"uint96","internalType":"uint96"},{"name":"_strategyParams","type":"tuple[]","internalType":"struct IStakeRegistry.StrategyParams[]","components":[{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"multiplier","type":"uint96","internalType":"uint96"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"minimumStakeForQuorum","inputs":[{"name":"","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint96","internalType":"uint96"}],"stateMutability":"view"},{"type":"function","name":"modifyStrategyParams","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"strategyIndices","type":"uint256[]","internalType":"uint256[]"},{"name":"newMultipliers","type":"uint96[]","internalType":"uint96[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"operatorId","type":"bytes32","internalType":"bytes32"},{"name":"quorumNumbers","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint96[]","internalType":"uint96[]"},{"name":"","type":"uint96[]","internalType":"uint96[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"registryCoordinator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"removeStrategies","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"indicesToRemove","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinimumStakeForQuorum","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"minimumStake","type":"uint96","internalType":"uint96"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"strategiesPerQuorum","inputs":[{"name":"","type":"uint8","internalType":"uint8"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"contract IStrategy"}],"stateMutability":"view"},{"type":"function","name":"strategyParams","inputs":[{"name":"","type":"uint8","internalType":"uint8"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"multiplier","type":"uint96","internalType":"uint96"}],"stateMutability":"view"},{"type":"function","name":"strategyParamsByIndex","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IStakeRegistry.StrategyParams","components":[{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"multiplier","type":"uint96","internalType":"uint96"}]}],"stateMutability":"view"},{"type":"function","name":"strategyParamsLength","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"updateOperatorStake","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"operatorId","type":"bytes32","internalType":"bytes32"},{"name":"quorumNumbers","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint192","internalType":"uint192"}],"stateMutability":"nonpayable"},{"type":"function","name":"weightOfOperatorForQuorum","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint96","internalType":"uint96"}],"stateMutability":"view"},{"type":"event","name":"MinimumStakeForQuorumUpdated","inputs":[{"name":"quorumNumber","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"minimumStake","type":"uint96","indexed":false,"internalType":"uint96"}],"anonymous":false},{"type":"event","name":"OperatorStakeUpdate","inputs":[{"name":"operatorId","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"quorumNumber","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"stake","type":"uint96","indexed":false,"internalType":"uint96"}],"anonymous":false},{"type":"event","name":"QuorumCreated","inputs":[{"name":"quorumNumber","type":"uint8","indexed":true,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"StrategyAddedToQuorum","inputs":[{"name":"quorumNumber","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"strategy","type":"address","indexed":false,"internalType":"contract IStrategy"}],"anonymous":false},{"type":"event","name":"StrategyMultiplierUpdated","inputs":[{"name":"quorumNumber","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"strategy","type":"address","indexed":false,"internalType":"contract IStrategy"},{"name":"multiplier","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"StrategyRemovedFromQuorum","inputs":[{"name":"quorumNumber","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"strategy","type":"address","indexed":false,"internalType":"contract IStrategy"}],"anonymous":false}],"bytecode":{"object":"0x60c06040523480156200001157600080fd5b506040516200395838038062003958833981016040819052620000349162000065565b6001600160a01b0391821660a05216608052620000a4565b6001600160a01b03811681146200006257600080fd5b50565b600080604083850312156200007957600080fd5b825162000086816200004c565b602084015190925062000099816200004c565b809150509250929050565b60805160a05161384f620001096000396000818161037a015281816106320152818161096f01528181610ce6015281816111110152818161170301528181611805015281816119290152611ce70152600081816105290152611ea8015261384f6000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612c27565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e366004612c42565b610597565b604051610217929190612c6c565b61025461024f366004612ca6565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a366004612d21565b610630565b005b61029461028f366004612de2565b610961565b604051610217929190612e81565b6102b56102b0366004612ea6565b610c2c565b6040516102179190612ed2565b61020d6102d0366004612c27565b60ff1660009081526003602052604090205490565b61020d6102f3366004612ea6565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612ea6565b610ccb565b61020d670de0b6b3a764000081565b61027f610345366004612fdb565b610ce4565b61035d610358366004612de2565b611104565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc366004613097565b61125e565b60405161021791906130e9565b61039c6103fc366004612c42565b611528565b61041461040f366004613127565b611560565b604051610217919061315a565b61043461042f366004612c42565b6115f8565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f366004612c42565b611672565b61027f6104823660046131a6565b611701565b61027f6104953660046131d0565b6117fa565b6102546104a8366004612c27565b6000602081905290815260409020546001600160601b031681565b61027f6104d136600461329c565b611927565b6102546104e43660046132e9565b611a1b565b6102546104f7366004612c27565b611a99565b61050f61050a366004613325565b611aec565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b610254610559366004613361565b611b01565b61041461056c366004612ea6565b611b96565b61025461057f366004613325565b611c7b565b61027f6105923660046133a3565b611cdc565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff8216600090815260016020526040812054839061061a5760405162461bcd60e51b815260040161061190613400565b60405180910390fd5b60006106268585611e47565b5095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b29190613451565b6001600160a01b0316336001600160a01b0316146106e25760405162461bcd60e51b81526004016106119061346e565b846106fe8160ff16600090815260016020526040902054151590565b61071a5760405162461bcd60e51b815260040161061190613400565b8380610790576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152608401610611565b8281146108055760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610611565b60ff87166000908152600360205260408120905b8281101561095657858582818110610833576108336134ea565b90506020020160208101906108489190613500565b8289898481811061085b5761085b6134ea565b9050602002013581548110610872576108726134ea565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106108db576108db6134ea565b90506020020135815481106108f2576108f26134ea565b6000918252602090912001546001600160a01b0316888885818110610919576109196134ea565b905060200201602081019061092e9190613500565b60405161093c929190612c6c565b60405180910390a28061094e81613531565b915050610819565b505050505050505050565b606080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109ac5760405162461bcd60e51b81526004016106119061354c565b6000836001600160401b038111156109c6576109c6612f4a565b6040519080825280602002602001820160405280156109ef578160200160208202803683370190505b5090506000846001600160401b03811115610a0c57610a0c612f4a565b604051908082528060200260200182016040528015610a35578160200160208202803683370190505b50905060005b85811015610c1e576000878783818110610a5757610a576134ea565b919091013560f81c60008181526001602052604090205490925015159050610adf5760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608401610611565b600080610aec838d611e47565b9150915080610b895760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610611565b6000610b968c8585612045565b905082878681518110610bab57610bab6134ea565b60200260200101906001600160601b031690816001600160601b031681525050610bd584826122c5565b868681518110610be757610be76134ea565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610c1690613531565b915050610a3b565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610cbe576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610c65565b5050505090505b92915050565b600080610cd88484611b96565b60400151949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d669190613451565b6001600160a01b0316336001600160a01b031614610d965760405162461bcd60e51b81526004016106119061346e565b81610db28160ff16600090815260016020526040902054151590565b610dce5760405162461bcd60e51b815260040161061190613400565b815180610e435760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610611565b60ff841660009081526003602090815260408083206004909252822090915b838110156110fb578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610ea257610ea26134ea565b602002602001015181548110610eba57610eba6134ea565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610f1857610f186134ea565b602002602001015181548110610f3057610f306134ea565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610f70906001906135be565b81548110610f8057610f806134ea565b9060005260206000200183878381518110610f9d57610f9d6134ea565b602002602001015181548110610fb557610fb56134ea565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080611008576110086135d5565b60008281526020812082016000199081019190915501905581548290611030906001906135be565b81548110611040576110406134ea565b9060005260206000200160009054906101000a90046001600160a01b031682878381518110611071576110716134ea565b602002602001015181548110611089576110896134ea565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818054806110c7576110c76135d5565b600082815260209020810160001990810180546001600160a01b0319169055019055806110f381613531565b915050610e62565b50505050505050565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461114e5760405162461bcd60e51b81526004016106119061354c565b6000805b8381101561062657600085858381811061116e5761116e6134ea565b919091013560f81c600081815260016020526040902054909250151590506111fe5760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608401610611565b60008061120b838b611e47565b915091508061122d5760009150600160ff84161b6001600160c01b0386161794505b600061123a8a8585612045565b905061124684826122c5565b5050505050808061125690613531565b915050611152565b60606000826001600160401b0381111561127a5761127a612f4a565b6040519080825280602002602001820160405280156112a3578160200160208202803683370190505b50905060005b8381101561151d5760008585838181106112c5576112c56134ea565b919091013560f81c600081815260016020526040902054909250151590506113645760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a401610611565b60ff81166000908152600160205260408120805463ffffffff8a16929061138d5761138d6134ea565b60009182526020909120015463ffffffff1611156114395760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610611565b60ff8116600090815260016020526040812054905b818110156115075760ff8316600090815260016020819052604090912063ffffffff8b169161147d84866135be565b61148791906135be565b81548110611497576114976134ea565b60009182526020909120015463ffffffff16116114f55760016114ba82846135be565b6114c491906135be565b8585815181106114d6576114d66134ea565b602002602001019063ffffffff16908163ffffffff1681525050611507565b806114ff81613531565b91505061144e565b505050808061151590613531565b9150506112a9565b5090505b9392505050565b6004602052816000526040600020818154811061154457600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106115a5576115a56134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805483908110611630576116306134ea565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260019052919091208054839081106116af576116af6134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117839190613451565b6001600160a01b0316336001600160a01b0316146117b35760405162461bcd60e51b81526004016106119061346e565b816117cf8160ff16600090815260016020526040902054151590565b6117eb5760405162461bcd60e51b815260040161061190613400565b6117f5838361243f565b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146118425760405162461bcd60e51b81526004016106119061354c565b60005b81811015611921576000838383818110611861576118616134ea565b919091013560f81c600081815260016020526040902054909250151590506118f15760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610611565b60006118ff86836000612045565b905061190b82826122c5565b505050808061191990613531565b915050611845565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a99190613451565b6001600160a01b0316336001600160a01b0316146119d95760405162461bcd60e51b81526004016106119061346e565b816119f58160ff16600090815260016020526040902054151590565b611a115760405162461bcd60e51b815260040161061190613400565b6117f583836124a8565b60ff83166000908152600160205260408120805482919084908110611a4257611a426134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610cd881856128eb565b60ff81166000908152600160208190526040822080549091611aba916135be565b81548110611aca57611aca6134ea565b600091825260209091200154600160401b90046001600160601b031692915050565b6000611af9848484612a65565b949350505050565b600082815260026020908152604080832060ff881684529091528120805482919084908110611b3257611b326134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611b8981866128eb565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff87168352815284822054855193840186528284529083018290529382015290919081611bef579150610cc59050565b600085815260026020908152604080832060ff881684529091529020611c166001846135be565b81548110611c2657611c266134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610cc5915050565b600083815260026020908152604080832060ff861684529091528120611ca2858585612a65565b63ffffffff1681548110611cb857611cb86134ea565b600091825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611d245760405162461bcd60e51b81526004016106119061354c565b60ff831660009081526001602052604090205415611da25760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610611565b611dac83826124a8565b611db6838361243f565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b600080600080611e668660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692639004134792611edb928c92016135eb565b600060405180830381865afa158015611ef8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f20919081019061364a565b905060005b838110156120115760ff89166000908152600360205260409020805482908110611f5157611f516134ea565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b0316908201528351909450839083908110611f9f57611f9f6134ea565b60200260200101511115611fff57670de0b6b3a764000083602001516001600160601b0316838381518110611fd657611fd66134ea565b6020026020010151611fe891906136da565b611ff291906136f9565b611ffc908661371b565b94505b8061200981613531565b915050611f25565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b600083815260026020908152604080832060ff8616845290915281205481908061210957600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff199096169190921617939093171691909117905561226b565b600086815260026020908152604080832060ff8916845290915281206121306001846135be565b81548110612140576121406134ea565b600091825260209091200180546001600160601b03600160401b9091048116945090915085168314156121795760009350505050611521565b80544363ffffffff908116911614156121b3578054600160401b600160a01b031916600160401b6001600160601b03871602178155612269565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26122bb8285612bcb565b9695505050505050565b60ff8216600090815260016020819052604082208054918391906122e990846135be565b815481106122f9576122f96134ea565b90600052602060002001905083600014156123285754600160401b90046001600160601b03169150610cc59050565b805460009061234790600160401b90046001600160601b031686612be3565b82549091504363ffffffff90811691161415612384578154600160401b600160a01b031916600160401b6001600160601b03831602178255612436565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b600081511161250d5760405162461bcd60e51b815260206004820152603860248201526000805160206137fa83398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610611565b805160ff8316600090815260036020908152604090912054906125308383613746565b11156125a05760405162461bcd60e51b815260206004820152604560248201526000805160206137fa83398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610611565b60005b828110156128e45760005b6125b88284613746565b811015612699578482815181106125d1576125d16134ea565b6020026020010151600001516001600160a01b0316600360008860ff1660ff1681526020019081526020016000208281548110612610576126106134ea565b6000918252602090912001546001600160a01b031614156126875760405162461bcd60e51b815260206004820152603d60248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610611565b8061269181613531565b9150506125ae565b5060008482815181106126ae576126ae6134ea565b6020026020010151602001516001600160601b0316116127335760405162461bcd60e51b815260206004820152604660248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610611565b60ff851660009081526003602052604090208451859083908110612759576127596134ea565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff87168252600490526040902084518590839081106127be576127be6134ea565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f540490869084908110612835576128356134ea565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75858381518110612892576128926134ea565b6020026020010151600001518684815181106128b0576128b06134ea565b6020026020010151602001516040516128ca929190612c6c565b60405180910390a2806128dc81613531565b9150506125a3565b5050505050565b816000015163ffffffff168163ffffffff1610156129905760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610611565b602082015163ffffffff1615806129b65750816020015163ffffffff168163ffffffff16105b612a615760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610611565b5050565b600083815260026020908152604080832060ff86168452909152812054805b8015612b0657600086815260026020908152604080832060ff89168452909152902063ffffffff851690612ab96001846135be565b81548110612ac957612ac96134ea565b60009182526020909120015463ffffffff1611612af457612aeb6001826135be565b92505050611521565b80612afe8161375e565b915050612a84565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610611565b60006115216001600160601b03808516908416613775565b600080821215612c0757612bf6826137b4565b612c0090846137d1565b9050610cc5565b612c00828461371b565b803560ff81168114612c2257600080fd5b919050565b600060208284031215612c3957600080fd5b61152182612c11565b60008060408385031215612c5557600080fd5b612c5e83612c11565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612ca357600080fd5b50565b60008060408385031215612cb957600080fd5b612cc283612c11565b91506020830135612cd281612c8e565b809150509250929050565b60008083601f840112612cef57600080fd5b5081356001600160401b03811115612d0657600080fd5b6020830191508360208260051b850101111561203e57600080fd5b600080600080600060608688031215612d3957600080fd5b612d4286612c11565b945060208601356001600160401b0380821115612d5e57600080fd5b612d6a89838a01612cdd565b90965094506040880135915080821115612d8357600080fd5b50612d9088828901612cdd565b969995985093965092949392505050565b60008083601f840112612db357600080fd5b5081356001600160401b03811115612dca57600080fd5b60208301915083602082850101111561203e57600080fd5b60008060008060608587031215612df857600080fd5b8435612e0381612c8e565b93506020850135925060408501356001600160401b03811115612e2557600080fd5b612e3187828801612da1565b95989497509550505050565b600081518084526020808501945080840160005b83811015612e765781516001600160601b031687529582019590820190600101612e51565b509495945050505050565b604081526000612e946040830185612e3d565b82810360208401526124368185612e3d565b60008060408385031215612eb957600080fd5b82359150612ec960208401612c11565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57612f2b83855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612eee565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f8257612f82612f4a565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612fb057612fb0612f4a565b604052919050565b60006001600160401b03821115612fd157612fd1612f4a565b5060051b60200190565b60008060408385031215612fee57600080fd5b612ff783612c11565b91506020808401356001600160401b0381111561301357600080fd5b8401601f8101861361302457600080fd5b803561303761303282612fb8565b612f88565b81815260059190911b8201830190838101908883111561305657600080fd5b928401925b828410156130745783358252928401929084019061305b565b80955050505050509250929050565b803563ffffffff81168114612c2257600080fd5b6000806000604084860312156130ac57600080fd5b6130b584613083565b925060208401356001600160401b038111156130d057600080fd5b6130dc86828701612da1565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57835163ffffffff1683529284019291840191600101613105565b60008060006060848603121561313c57600080fd5b61314584612c11565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610cc5565b80356001600160601b0381168114612c2257600080fd5b600080604083850312156131b957600080fd5b6131c283612c11565b9150612ec96020840161318f565b6000806000604084860312156131e557600080fd5b8335925060208401356001600160401b038111156130d057600080fd5b600082601f83011261321357600080fd5b8135602061322361303283612fb8565b82815260069290921b8401810191818101908684111561324257600080fd5b8286015b84811015613291576040818903121561325f5760008081fd5b613267612f60565b813561327281612c8e565b815261327f82860161318f565b81860152835291830191604001613246565b509695505050505050565b600080604083850312156132af57600080fd5b6132b883612c11565b915060208301356001600160401b038111156132d357600080fd5b6132df85828601613202565b9150509250929050565b6000806000606084860312156132fe57600080fd5b61330784612c11565b925061331560208501613083565b9150604084013590509250925092565b60008060006060848603121561333a57600080fd5b8335925061334a60208501612c11565b915061335860408501613083565b90509250925092565b6000806000806080858703121561337757600080fd5b61338085612c11565b935061338e60208601613083565b93969395505050506040820135916060013590565b6000806000606084860312156133b857600080fd5b6133c184612c11565b92506133cf6020850161318f565b915060408401356001600160401b038111156133ea57600080fd5b6133f686828701613202565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b60006020828403121561346357600080fd5b815161152181612c8e565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561351257600080fd5b6115218261318f565b634e487b7160e01b600052601160045260246000fd5b60006000198214156135455761354561351b565b5060010190565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b6000828210156135d0576135d061351b565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b8181101561363c57855485168352600195860195928401920161361e565b509098975050505050505050565b6000602080838503121561365d57600080fd5b82516001600160401b0381111561367357600080fd5b8301601f8101851361368457600080fd5b805161369261303282612fb8565b81815260059190911b820183019083810190878311156136b157600080fd5b928401925b828410156136cf578351825292840192908401906136b6565b979650505050505050565b60008160001904831182151516156136f4576136f461351b565b500290565b60008261371657634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b0380831681851680830382111561373d5761373d61351b565b01949350505050565b600082198211156137595761375961351b565b500190565b60008161376d5761376d61351b565b506000190190565b60008083128015600160ff1b8501841216156137935761379361351b565b6001600160ff1b03840183138116156137ae576137ae61351b565b50500390565b6000600160ff1b8214156137ca576137ca61351b565b5060000390565b60006001600160601b03838116908316818110156137f1576137f161351b565b03939250505056fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a2646970667358221220e72609fbf7eeabba140d8b0834e2f062dd1d70f05840d79caf271b058dad8ae664736f6c634300080c0033","sourceMap":"960:31820:105:-:0;;;1675:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2269:51:106;;;;;2330:31;;;960:31820:105;;14:153:178;-1:-1:-1;;;;;111:31:178;;101:42;;91:70;;157:1;154;147:12;91:70;14:153;:::o;172:486::-;308:6;316;369:2;357:9;348:7;344:23;340:32;337:52;;;385:1;382;375:12;337:52;417:9;411:16;436:53;483:5;436:53;:::i;:::-;558:2;543:18;;537:25;508:5;;-1:-1:-1;571:55:178;537:25;571:55;:::i;:::-;645:7;635:17;;;172:486;;;;;:::o;:::-;960:31820:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612c27565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e366004612c42565b610597565b604051610217929190612c6c565b61025461024f366004612ca6565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a366004612d21565b610630565b005b61029461028f366004612de2565b610961565b604051610217929190612e81565b6102b56102b0366004612ea6565b610c2c565b6040516102179190612ed2565b61020d6102d0366004612c27565b60ff1660009081526003602052604090205490565b61020d6102f3366004612ea6565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612ea6565b610ccb565b61020d670de0b6b3a764000081565b61027f610345366004612fdb565b610ce4565b61035d610358366004612de2565b611104565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc366004613097565b61125e565b60405161021791906130e9565b61039c6103fc366004612c42565b611528565b61041461040f366004613127565b611560565b604051610217919061315a565b61043461042f366004612c42565b6115f8565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f366004612c42565b611672565b61027f6104823660046131a6565b611701565b61027f6104953660046131d0565b6117fa565b6102546104a8366004612c27565b6000602081905290815260409020546001600160601b031681565b61027f6104d136600461329c565b611927565b6102546104e43660046132e9565b611a1b565b6102546104f7366004612c27565b611a99565b61050f61050a366004613325565b611aec565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b610254610559366004613361565b611b01565b61041461056c366004612ea6565b611b96565b61025461057f366004613325565b611c7b565b61027f6105923660046133a3565b611cdc565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff8216600090815260016020526040812054839061061a5760405162461bcd60e51b815260040161061190613400565b60405180910390fd5b60006106268585611e47565b5095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b29190613451565b6001600160a01b0316336001600160a01b0316146106e25760405162461bcd60e51b81526004016106119061346e565b846106fe8160ff16600090815260016020526040902054151590565b61071a5760405162461bcd60e51b815260040161061190613400565b8380610790576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152608401610611565b8281146108055760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610611565b60ff87166000908152600360205260408120905b8281101561095657858582818110610833576108336134ea565b90506020020160208101906108489190613500565b8289898481811061085b5761085b6134ea565b9050602002013581548110610872576108726134ea565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106108db576108db6134ea565b90506020020135815481106108f2576108f26134ea565b6000918252602090912001546001600160a01b0316888885818110610919576109196134ea565b905060200201602081019061092e9190613500565b60405161093c929190612c6c565b60405180910390a28061094e81613531565b915050610819565b505050505050505050565b606080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109ac5760405162461bcd60e51b81526004016106119061354c565b6000836001600160401b038111156109c6576109c6612f4a565b6040519080825280602002602001820160405280156109ef578160200160208202803683370190505b5090506000846001600160401b03811115610a0c57610a0c612f4a565b604051908082528060200260200182016040528015610a35578160200160208202803683370190505b50905060005b85811015610c1e576000878783818110610a5757610a576134ea565b919091013560f81c60008181526001602052604090205490925015159050610adf5760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608401610611565b600080610aec838d611e47565b9150915080610b895760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610611565b6000610b968c8585612045565b905082878681518110610bab57610bab6134ea565b60200260200101906001600160601b031690816001600160601b031681525050610bd584826122c5565b868681518110610be757610be76134ea565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610c1690613531565b915050610a3b565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610cbe576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610c65565b5050505090505b92915050565b600080610cd88484611b96565b60400151949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d669190613451565b6001600160a01b0316336001600160a01b031614610d965760405162461bcd60e51b81526004016106119061346e565b81610db28160ff16600090815260016020526040902054151590565b610dce5760405162461bcd60e51b815260040161061190613400565b815180610e435760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610611565b60ff841660009081526003602090815260408083206004909252822090915b838110156110fb578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610ea257610ea26134ea565b602002602001015181548110610eba57610eba6134ea565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610f1857610f186134ea565b602002602001015181548110610f3057610f306134ea565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610f70906001906135be565b81548110610f8057610f806134ea565b9060005260206000200183878381518110610f9d57610f9d6134ea565b602002602001015181548110610fb557610fb56134ea565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080611008576110086135d5565b60008281526020812082016000199081019190915501905581548290611030906001906135be565b81548110611040576110406134ea565b9060005260206000200160009054906101000a90046001600160a01b031682878381518110611071576110716134ea565b602002602001015181548110611089576110896134ea565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818054806110c7576110c76135d5565b600082815260209020810160001990810180546001600160a01b0319169055019055806110f381613531565b915050610e62565b50505050505050565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461114e5760405162461bcd60e51b81526004016106119061354c565b6000805b8381101561062657600085858381811061116e5761116e6134ea565b919091013560f81c600081815260016020526040902054909250151590506111fe5760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608401610611565b60008061120b838b611e47565b915091508061122d5760009150600160ff84161b6001600160c01b0386161794505b600061123a8a8585612045565b905061124684826122c5565b5050505050808061125690613531565b915050611152565b60606000826001600160401b0381111561127a5761127a612f4a565b6040519080825280602002602001820160405280156112a3578160200160208202803683370190505b50905060005b8381101561151d5760008585838181106112c5576112c56134ea565b919091013560f81c600081815260016020526040902054909250151590506113645760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a401610611565b60ff81166000908152600160205260408120805463ffffffff8a16929061138d5761138d6134ea565b60009182526020909120015463ffffffff1611156114395760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610611565b60ff8116600090815260016020526040812054905b818110156115075760ff8316600090815260016020819052604090912063ffffffff8b169161147d84866135be565b61148791906135be565b81548110611497576114976134ea565b60009182526020909120015463ffffffff16116114f55760016114ba82846135be565b6114c491906135be565b8585815181106114d6576114d66134ea565b602002602001019063ffffffff16908163ffffffff1681525050611507565b806114ff81613531565b91505061144e565b505050808061151590613531565b9150506112a9565b5090505b9392505050565b6004602052816000526040600020818154811061154457600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106115a5576115a56134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805483908110611630576116306134ea565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260019052919091208054839081106116af576116af6134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117839190613451565b6001600160a01b0316336001600160a01b0316146117b35760405162461bcd60e51b81526004016106119061346e565b816117cf8160ff16600090815260016020526040902054151590565b6117eb5760405162461bcd60e51b815260040161061190613400565b6117f5838361243f565b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146118425760405162461bcd60e51b81526004016106119061354c565b60005b81811015611921576000838383818110611861576118616134ea565b919091013560f81c600081815260016020526040902054909250151590506118f15760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610611565b60006118ff86836000612045565b905061190b82826122c5565b505050808061191990613531565b915050611845565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a99190613451565b6001600160a01b0316336001600160a01b0316146119d95760405162461bcd60e51b81526004016106119061346e565b816119f58160ff16600090815260016020526040902054151590565b611a115760405162461bcd60e51b815260040161061190613400565b6117f583836124a8565b60ff83166000908152600160205260408120805482919084908110611a4257611a426134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610cd881856128eb565b60ff81166000908152600160208190526040822080549091611aba916135be565b81548110611aca57611aca6134ea565b600091825260209091200154600160401b90046001600160601b031692915050565b6000611af9848484612a65565b949350505050565b600082815260026020908152604080832060ff881684529091528120805482919084908110611b3257611b326134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611b8981866128eb565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff87168352815284822054855193840186528284529083018290529382015290919081611bef579150610cc59050565b600085815260026020908152604080832060ff881684529091529020611c166001846135be565b81548110611c2657611c266134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610cc5915050565b600083815260026020908152604080832060ff861684529091528120611ca2858585612a65565b63ffffffff1681548110611cb857611cb86134ea565b600091825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611d245760405162461bcd60e51b81526004016106119061354c565b60ff831660009081526001602052604090205415611da25760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610611565b611dac83826124a8565b611db6838361243f565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b600080600080611e668660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692639004134792611edb928c92016135eb565b600060405180830381865afa158015611ef8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f20919081019061364a565b905060005b838110156120115760ff89166000908152600360205260409020805482908110611f5157611f516134ea565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b0316908201528351909450839083908110611f9f57611f9f6134ea565b60200260200101511115611fff57670de0b6b3a764000083602001516001600160601b0316838381518110611fd657611fd66134ea565b6020026020010151611fe891906136da565b611ff291906136f9565b611ffc908661371b565b94505b8061200981613531565b915050611f25565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b600083815260026020908152604080832060ff8616845290915281205481908061210957600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff199096169190921617939093171691909117905561226b565b600086815260026020908152604080832060ff8916845290915281206121306001846135be565b81548110612140576121406134ea565b600091825260209091200180546001600160601b03600160401b9091048116945090915085168314156121795760009350505050611521565b80544363ffffffff908116911614156121b3578054600160401b600160a01b031916600160401b6001600160601b03871602178155612269565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26122bb8285612bcb565b9695505050505050565b60ff8216600090815260016020819052604082208054918391906122e990846135be565b815481106122f9576122f96134ea565b90600052602060002001905083600014156123285754600160401b90046001600160601b03169150610cc59050565b805460009061234790600160401b90046001600160601b031686612be3565b82549091504363ffffffff90811691161415612384578154600160401b600160a01b031916600160401b6001600160601b03831602178255612436565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b600081511161250d5760405162461bcd60e51b815260206004820152603860248201526000805160206137fa83398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610611565b805160ff8316600090815260036020908152604090912054906125308383613746565b11156125a05760405162461bcd60e51b815260206004820152604560248201526000805160206137fa83398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610611565b60005b828110156128e45760005b6125b88284613746565b811015612699578482815181106125d1576125d16134ea565b6020026020010151600001516001600160a01b0316600360008860ff1660ff1681526020019081526020016000208281548110612610576126106134ea565b6000918252602090912001546001600160a01b031614156126875760405162461bcd60e51b815260206004820152603d60248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610611565b8061269181613531565b9150506125ae565b5060008482815181106126ae576126ae6134ea565b6020026020010151602001516001600160601b0316116127335760405162461bcd60e51b815260206004820152604660248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610611565b60ff851660009081526003602052604090208451859083908110612759576127596134ea565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff87168252600490526040902084518590839081106127be576127be6134ea565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f540490869084908110612835576128356134ea565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75858381518110612892576128926134ea565b6020026020010151600001518684815181106128b0576128b06134ea565b6020026020010151602001516040516128ca929190612c6c565b60405180910390a2806128dc81613531565b9150506125a3565b5050505050565b816000015163ffffffff168163ffffffff1610156129905760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610611565b602082015163ffffffff1615806129b65750816020015163ffffffff168163ffffffff16105b612a615760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610611565b5050565b600083815260026020908152604080832060ff86168452909152812054805b8015612b0657600086815260026020908152604080832060ff89168452909152902063ffffffff851690612ab96001846135be565b81548110612ac957612ac96134ea565b60009182526020909120015463ffffffff1611612af457612aeb6001826135be565b92505050611521565b80612afe8161375e565b915050612a84565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610611565b60006115216001600160601b03808516908416613775565b600080821215612c0757612bf6826137b4565b612c0090846137d1565b9050610cc5565b612c00828461371b565b803560ff81168114612c2257600080fd5b919050565b600060208284031215612c3957600080fd5b61152182612c11565b60008060408385031215612c5557600080fd5b612c5e83612c11565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612ca357600080fd5b50565b60008060408385031215612cb957600080fd5b612cc283612c11565b91506020830135612cd281612c8e565b809150509250929050565b60008083601f840112612cef57600080fd5b5081356001600160401b03811115612d0657600080fd5b6020830191508360208260051b850101111561203e57600080fd5b600080600080600060608688031215612d3957600080fd5b612d4286612c11565b945060208601356001600160401b0380821115612d5e57600080fd5b612d6a89838a01612cdd565b90965094506040880135915080821115612d8357600080fd5b50612d9088828901612cdd565b969995985093965092949392505050565b60008083601f840112612db357600080fd5b5081356001600160401b03811115612dca57600080fd5b60208301915083602082850101111561203e57600080fd5b60008060008060608587031215612df857600080fd5b8435612e0381612c8e565b93506020850135925060408501356001600160401b03811115612e2557600080fd5b612e3187828801612da1565b95989497509550505050565b600081518084526020808501945080840160005b83811015612e765781516001600160601b031687529582019590820190600101612e51565b509495945050505050565b604081526000612e946040830185612e3d565b82810360208401526124368185612e3d565b60008060408385031215612eb957600080fd5b82359150612ec960208401612c11565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57612f2b83855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612eee565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f8257612f82612f4a565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612fb057612fb0612f4a565b604052919050565b60006001600160401b03821115612fd157612fd1612f4a565b5060051b60200190565b60008060408385031215612fee57600080fd5b612ff783612c11565b91506020808401356001600160401b0381111561301357600080fd5b8401601f8101861361302457600080fd5b803561303761303282612fb8565b612f88565b81815260059190911b8201830190838101908883111561305657600080fd5b928401925b828410156130745783358252928401929084019061305b565b80955050505050509250929050565b803563ffffffff81168114612c2257600080fd5b6000806000604084860312156130ac57600080fd5b6130b584613083565b925060208401356001600160401b038111156130d057600080fd5b6130dc86828701612da1565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57835163ffffffff1683529284019291840191600101613105565b60008060006060848603121561313c57600080fd5b61314584612c11565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610cc5565b80356001600160601b0381168114612c2257600080fd5b600080604083850312156131b957600080fd5b6131c283612c11565b9150612ec96020840161318f565b6000806000604084860312156131e557600080fd5b8335925060208401356001600160401b038111156130d057600080fd5b600082601f83011261321357600080fd5b8135602061322361303283612fb8565b82815260069290921b8401810191818101908684111561324257600080fd5b8286015b84811015613291576040818903121561325f5760008081fd5b613267612f60565b813561327281612c8e565b815261327f82860161318f565b81860152835291830191604001613246565b509695505050505050565b600080604083850312156132af57600080fd5b6132b883612c11565b915060208301356001600160401b038111156132d357600080fd5b6132df85828601613202565b9150509250929050565b6000806000606084860312156132fe57600080fd5b61330784612c11565b925061331560208501613083565b9150604084013590509250925092565b60008060006060848603121561333a57600080fd5b8335925061334a60208501612c11565b915061335860408501613083565b90509250925092565b6000806000806080858703121561337757600080fd5b61338085612c11565b935061338e60208601613083565b93969395505050506040820135916060013590565b6000806000606084860312156133b857600080fd5b6133c184612c11565b92506133cf6020850161318f565b915060408401356001600160401b038111156133ea57600080fd5b6133f686828701613202565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b60006020828403121561346357600080fd5b815161152181612c8e565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561351257600080fd5b6115218261318f565b634e487b7160e01b600052601160045260246000fd5b60006000198214156135455761354561351b565b5060010190565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b6000828210156135d0576135d061351b565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b8181101561363c57855485168352600195860195928401920161361e565b509098975050505050505050565b6000602080838503121561365d57600080fd5b82516001600160401b0381111561367357600080fd5b8301601f8101851361368457600080fd5b805161369261303282612fb8565b81815260059190911b820183019083810190878311156136b157600080fd5b928401925b828410156136cf578351825292840192908401906136b6565b979650505050505050565b60008160001904831182151516156136f4576136f461351b565b500290565b60008261371657634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b0380831681851680830382111561373d5761373d61351b565b01949350505050565b600082198211156137595761375961351b565b500190565b60008161376d5761376d61351b565b506000190190565b60008083128015600160ff1b8501841216156137935761379361351b565b6001600160ff1b03840183138116156137ae576137ae61351b565b50500390565b6000600160ff1b8214156137ca576137ca61351b565b5060000390565b60006001600160601b03838116908316818110156137f1576137f161351b565b03939250505056fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a2646970667358221220e72609fbf7eeabba140d8b0834e2f062dd1d70f05840d79caf271b058dad8ae664736f6c634300080c0033","sourceMap":"960:31820:105:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29348:151;;;;;;:::i;:::-;29453:32;;29427:7;29453:32;;;:18;:32;;;;;:39;;29348:151;;;;508:25:178;;;496:2;481:18;29348:151:105;;;;;;;;2016:56:106;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;23351:268:105:-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1747:39:178;;;1729:58;;1717:2;1702:18;23351:268:105;1585:208:178;12019:891:105;;;;;;:::i;:::-;;:::i;:::-;;2913:1550;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;24963:203::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;23723:139::-;;;;;;:::i;:::-;23820:28;;23794:7;23820:28;;;:14;:28;;;;;:35;;23723:139;24521:202;;;;;;:::i;:::-;24637:7;24663:32;;;:20;:32;;;;;;;;:46;;;;;;;;;;;;:53;;24521:202;25384:242;;;;;;:::i;:::-;;:::i;748:48:106:-;;792:4;748:48;;10540:1151:105;;;;;;:::i;:::-;;:::i;6652:1876::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;8184:32:178;;;8166:51;;8154:2;8139:18;6652:1876:105;8020:203:178;1270:44:106;;;;;;;;-1:-1:-1;;;;;8392:32:178;;;8374:51;;8362:2;8347:18;1270:44:106;8228:203:178;884:55:106;;937:2;884:55;;;;;8608:4:178;8596:17;;;8578:36;;8566:2;8551:18;884:55:106;8436:184:178;31695:1083:105;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2078:56:106:-;;;;;;:::i;:::-;;:::i;26832:236:105:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;23984:196::-;;;;;;:::i;:::-;;:::i;:::-;;;;10979:13:178;;-1:-1:-1;;;;;10975:39:178;10957:58;;11075:4;11063:17;;;11057:24;-1:-1:-1;;;;;11053:57:178;11031:20;;;11024:87;;;;10930:18;23984:196:105;10745:372:178;30217:199:105;;;;;;:::i;:::-;;:::i;9210:231::-;;;;;;:::i;:::-;;:::i;5234:982::-;;;;;;:::i;:::-;;:::i;1490:53:106:-;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1490:53:106;;;9970:236:105;;;;;;:::i;:::-;;:::i;30953:368::-;;;;;;:::i;:::-;;:::i;29706:188::-;;;;;;:::i;:::-;;:::i;27662:270::-;;;;;;:::i;:::-;;:::i;:::-;;;14385:10:178;14373:23;;;14355:42;;14343:2;14328:18;27662:270:105;14211:192:178;1138:46:106;;;;;28599:413:105;;;;;;:::i;:::-;;:::i;25877:517::-;;;;;;:::i;:::-;;:::i;27183:355::-;;;;;;:::i;:::-;;:::i;8608:596::-;;;;;;:::i;:::-;;:::i;2016:56:106:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2016:56:106;;;-1:-1:-1;;;;2016:56:106;;-1:-1:-1;;;;;2016:56:106;;-1:-1:-1;2016:56:106;:::o;23351:268:105:-;22902:32;;;23503:6;22902:32;;;:18;:32;;;;;:39;23480:12;;1562:89;;;;-1:-1:-1;;;1562:89:105;;;;;;;:::i;:::-;;;;;;;;;23522:12:::1;23540:50;23567:12;23581:8;23540:26;:50::i;:::-;-1:-1:-1::0;23521:69:105;23351:268;-1:-1:-1;;;;;23351:268:105:o;12019:891::-;1367:19;-1:-1:-1;;;;;1346:47:105;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1332:63:105;:10;-1:-1:-1;;;;;1332:63:105;;1324:162;;;;-1:-1:-1;;;1324:162:105;;;;;;;:::i;:::-;12218:12:::1;1570:27;1584:12;22902:32:::0;;22879:4;22902:32;;;:18;:32;;;;;:39;:44;;;22813:140;1570:27:::1;1562:89;;;;-1:-1:-1::0;;;1562:89:105::1;;;;;;;:::i;:::-;12262:15:::0;12302:13;12294:90:::2;;;::::0;;-1:-1:-1;;;12294:90:105;;16952:2:178;12294:90:105::2;::::0;::::2;16934:21:178::0;16971:18;;;16964:30;;;;17030:34;17010:18;;;17003:62;17101:34;17081:18;;;17074:62;17153:19;;12294:90:105::2;16750:428:178::0;12294:90:105::2;12402:34:::0;;::::2;12394:104;;;::::0;-1:-1:-1;;;12394:104:105;;17385:2:178;12394:104:105::2;::::0;::::2;17367:21:178::0;17424:2;17404:18;;;17397:30;17463:34;17443:18;;;17436:62;17534:27;17514:18;;;17507:55;17579:19;;12394:104:105::2;17183:421:178::0;12394:104:105::2;12552:28;::::0;::::2;12509:40;12552:28:::0;;;:14:::2;:28;::::0;;;;;12591:313:::2;12615:9;12611:1;:13;12591:313;;;12753:14;;12768:1;12753:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;12704:15;12720;;12736:1;12720:18;;;;;;;:::i;:::-;;;;;;;12704:35;;;;;;;;:::i;:::-;;;;;;;;:46;;;:66;;;;;-1:-1:-1::0;;;;;12704:66:105::2;;;;;-1:-1:-1::0;;;;;12704:66:105::2;;;;;;12815:12;12789:104;;;12829:15;12845;;12861:1;12845:18;;;;;;;:::i;:::-;;;;;;;12829:35;;;;;;;;:::i;:::-;;::::0;;;::::2;::::0;;;::::2;:44:::0;-1:-1:-1;;;;;12829:44:105::2;12875:14:::0;;12890:1;12875:17;;::::2;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;12789:104;;;;;;;:::i;:::-;;;;;;;;12626:3:::0;::::2;::::0;::::2;:::i;:::-;;;;12591:313;;;;12232:678;;1496:1:::1;12019:891:::0;;;;;:::o;2913:1550::-;3085:15;;1114:10;-1:-1:-1;;;;;1136:19:105;1114:42;;1093:165;;;;-1:-1:-1;;;1093:165:105;;;;;;;:::i;:::-;3130:29:::1;3175:13:::0;-1:-1:-1;;;;;3162:34:105;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;3162:34:105::1;-1:-1:-1::0;3130:66:105;-1:-1:-1;3206:27:105::1;3249:13:::0;-1:-1:-1;;;;;3236:34:105;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;3236:34:105::1;;3206:64;;3285:9;3280:1131;3300:24:::0;;::::1;3280:1131;;;3370:18;3397:13;;3411:1;3397:16;;;;;;;:::i;:::-;::::0;;;::::1;;;;22879:4:::0;22902:32;;;:18;:32;;;;;:39;3397:16;;-1:-1:-1;22902:44:105;;;-1:-1:-1;3428:93:105::1;;;::::0;-1:-1:-1;;;3428:93:105;;19218:2:178;3428:93:105::1;::::0;::::1;19200:21:178::0;19257:2;19237:18;;;19230:30;19296:34;19276:18;;;19269:62;-1:-1:-1;;;19347:18:178;;;19340:51;19408:19;;3428:93:105::1;19016:417:178::0;3428:93:105::1;3674:19;3695:20:::0;3719:50:::1;3746:12;3760:8;3719:26;:50::i;:::-;3673:96;;;;3808:15;3783:165;;;::::0;-1:-1:-1;;;3783:165:105;;19640:2:178;3783:165:105::1;::::0;::::1;19622:21:178::0;19679:2;19659:18;;;19652:30;19718:34;19698:18;;;19691:62;19789:34;19769:18;;;19762:62;19861:29;19840:19;;;19833:58;19908:19;;3783:165:105::1;19438:495:178::0;3783:165:105::1;4006:17;4026:167;4083:10;4126:12;4166;4026:26;:167::i;:::-;4006:187;;4308:12;4289:13;4303:1;4289:16;;;;;;;;:::i;:::-;;;;;;:31;-1:-1:-1::0;;;;;4289:31:105::1;;;-1:-1:-1::0;;;;;4289:31:105::1;;;::::0;::::1;4351:49;4375:12;4389:10;4351:23;:49::i;:::-;4334:11;4346:1;4334:14;;;;;;;;:::i;:::-;;;;;;:66;-1:-1:-1::0;;;;;4334:66:105::1;;;-1:-1:-1::0;;;;;4334:66:105::1;;;::::0;::::1;3331:1080;;;;3326:3;;;;;:::i;:::-;;;;3280:1131;;;-1:-1:-1::0;4429:13:105;;;;-1:-1:-1;2913:1550:105;-1:-1:-1;;;;;2913:1550:105:o;24963:203::-;25113:32;;;;:20;:32;;;;;;;;:46;;;;;;;;;;25106:53;;;;;;;;;;;;;;;;;25074:20;;25106:53;;25113:46;;25106:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;25106:53:105;;;;;;;-1:-1:-1;;;25106:53:105;;-1:-1:-1;;;;;25106:53:105;;;;;;;;;;;;;;;;;;;;;;24963:203;;;;;:::o;25384:242::-;25472:6;25490:38;25531:46;25552:10;25564:12;25531:20;:46::i;:::-;25594:25;;;;25384:242;-1:-1:-1;;;;25384:242:105:o;10540:1151::-;1367:19;-1:-1:-1;;;;;1346:47:105;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1332:63:105;:10;-1:-1:-1;;;;;1332:63:105;;1324:162;;;;-1:-1:-1;;;1324:162:105;;;;;;;:::i;:::-;10691:12:::1;1570:27;1584:12;22902:32:::0;;22879:4;22902:32;;;:18;:32;;;;;:39;:44;;;22813:140;1570:27:::1;1562:89;;;;-1:-1:-1::0;;;1562:89:105::1;;;;;;;:::i;:::-;10740:22:::0;;10780:18;10772:92:::2;;;::::0;-1:-1:-1;;;10772:92:105;;20140:2:178;10772:92:105::2;::::0;::::2;20122:21:178::0;20179:2;20159:18;;;20152:30;20218:34;20198:18;;;20191:62;20289:31;20269:18;;;20262:59;20338:19;;10772:92:105::2;19938:425:178::0;10772:92:105::2;10918:28;::::0;::::2;10875:40;10918:28:::0;;;:14:::2;:28;::::0;;;;;;;10999:19:::2;:33:::0;;;;;10918:28;;11043:642:::2;11067:14;11063:1;:18;11043:642;;;11133:12;11107:85;;;11147:15;11163;11179:1;11163:18;;;;;;;;:::i;:::-;;;;;;;11147:35;;;;;;;;:::i;:::-;;::::0;;;::::2;::::0;;;;::::2;:44:::0;11107:85:::2;::::0;-1:-1:-1;;;;;11147:44:105;;::::2;8374:51:178::0;;8347:18;11107:85:105::2;;;;;;;11237:12;11211:88;;;11251:15;11267;11283:1;11267:18;;;;;;;;:::i;:::-;;;;;;;11251:35;;;;;;;;:::i;:::-;;::::0;;;::::2;::::0;;;;;;::::2;:44:::0;11211:88:::2;::::0;;-1:-1:-1;;;;;11251:44:105;;::::2;20568:51:178::0;;20635:18;;;20628:34;;;;20541:18;11211:88:105::2;;;;;;;11462:22:::0;;11446:15;;11462:26:::2;::::0;11487:1:::2;::::0;11462:26:::2;:::i;:::-;11446:43;;;;;;;;:::i;:::-;;;;;;;;11408:15;11424;11440:1;11424:18;;;;;;;;:::i;:::-;;;;;;;11408:35;;;;;;;;:::i;:::-;;::::0;;;::::2;::::0;;;:81;;:35;::::2;:81:::0;;-1:-1:-1;;;;;;11408:81:105::2;-1:-1:-1::0;;;;;11408:81:105;;::::2;::::0;;::::2;::::0;;;;-1:-1:-1;;;;;;;;11408:81:105;;;::::2;;;;::::0;;11503:21;;:15;;:21;::::2;;;;:::i;:::-;;::::0;;;::::2;::::0;;;;-1:-1:-1;;11503:21:105;;;;;;;;;;11602:27;;11581:20;;11602:31:::2;::::0;11503:21:::2;::::0;11602:31:::2;:::i;:::-;11581:53;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;11581:53:105::2;11538:20;11559:15;11575:1;11559:18;;;;;;;;:::i;:::-;;;;;;;11538:40;;;;;;;;:::i;:::-;;;;;;;;;:96;;;;;-1:-1:-1::0;;;;;11538:96:105::2;;;;;-1:-1:-1::0;;;;;11538:96:105::2;;;;;;11648:20;:26;;;;;;;:::i;:::-;;::::0;;;::::2;::::0;;;;-1:-1:-1;;11648:26:105;;;;;-1:-1:-1;;;;;;11648:26:105::2;::::0;;;;;11083:3;::::2;::::0;::::2;:::i;:::-;;;;11043:642;;;;10705:986;;;1496:1:::1;10540:1151:::0;;:::o;6652:1876::-;6823:7;1114:10;-1:-1:-1;;;;;1136:19:105;1114:42;;1093:165;;;;-1:-1:-1;;;1093:165:105;;;;;;;:::i;:::-;6842:23:::1;::::0;7246:1243:::1;7266:24:::0;;::::1;7246:1243;;;7311:18;7338:13;;7352:1;7338:16;;;;;;;:::i;:::-;::::0;;;::::1;;;;22879:4:::0;22902:32;;;:18;:32;;;;;:39;7338:16;;-1:-1:-1;22902:44:105;;;-1:-1:-1;7369:96:105::1;;;::::0;-1:-1:-1;;;7369:96:105;;21137:2:178;7369:96:105::1;::::0;::::1;21119:21:178::0;21176:2;21156:18;;;21149:30;21215:34;21195:18;;;21188:62;21286:26;21266:18;;;21259:54;21330:19;;7369:96:105::1;20935:420:178::0;7369:96:105::1;7645:18;7665:20:::0;7689:50:::1;7716:12;7730:8;7689:26;:50::i;:::-;7644:95;;;;7875:15;7870:151;;7924:1;::::0;-1:-1:-1;7805:1:117;:8;;;;-1:-1:-1;;;;;7969:22:105;::::1;7795:19:117::0;7943:63:105::1;;7870:151;8170:17;8190:165;8247:10;8289:12;8329:11;8190:26;:165::i;:::-;8170:185;;8429:49;8453:12;8467:10;8429:23;:49::i;:::-;;7297:1192;;;;7292:3;;;;;:::i;:::-;;;;7246:1243;;31695:1083:::0;31833:15;31860:23;31899:13;-1:-1:-1;;;;;31886:34:105;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31886:34:105;;31860:60;;31935:9;31930:818;31950:24;;;31930:818;;;31995:18;32022:13;;32036:1;32022:16;;;;;;;:::i;:::-;;;;;;;;22879:4;22902:32;;;:18;:32;;;;;:39;32022:16;;-1:-1:-1;22902:44:105;;;-1:-1:-1;32053:110:105;;;;-1:-1:-1;;;32053:110:105;;21562:2:178;32053:110:105;;;21544:21:178;21601:2;21581:18;;;21574:30;21640:34;21620:18;;;21613:62;21711:34;21691:18;;;21684:62;-1:-1:-1;;;21762:19:178;;;21755:37;21809:19;;32053:110:105;21360:474:178;32053:110:105;32202:32;;;;;;;:18;:32;;;;;:35;;:68;;;;:32;:35;;;;:::i;:::-;;;;;;;;;;:53;;;:68;;32177:218;;;;-1:-1:-1;;;32177:218:105;;22041:2:178;32177:218:105;;;22023:21:178;22080:2;22060:18;;;22053:30;22119:34;22099:18;;;22092:62;22190:34;22170:18;;;22163:62;22262:29;22241:19;;;22234:58;22309:19;;32177:218:105;21839:495:178;32177:218:105;32426:32;;;32409:14;32426:32;;;:18;:32;;;;;:39;;32479:259;32503:6;32499:1;:10;32479:259;;;32538:32;;;;;;;:18;:32;;;;;;;;:81;;;;32571:10;32580:1;32571:6;:10;:::i;:::-;:14;;;;:::i;:::-;32538:48;;;;;;;;:::i;:::-;;;;;;;;;;:66;;;:81;32534:190;;32676:1;32663:10;32672:1;32663:6;:10;:::i;:::-;:14;;;;:::i;:::-;32643:7;32651:1;32643:10;;;;;;;;:::i;:::-;;;;;;:35;;;;;;;;;;;32700:5;;32534:190;32511:3;;;;:::i;:::-;;;;32479:259;;;;31981:767;;31976:3;;;;;:::i;:::-;;;;31930:818;;;-1:-1:-1;32764:7:105;-1:-1:-1;31695:1083:105;;;;;;:::o;2078:56:106:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2078:56:106;;-1:-1:-1;2078:56:106;;-1:-1:-1;2078:56:106:o;26832:236:105:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;27008:32:105;;;:20;:32;;;;;:46;;;;;;;;;;;:53;;27055:5;;27008:53;;;;;;:::i;:::-;;;;;;;;;;27001:60;;;;;;;;27008:53;;;;27001:60;;;;;;;-1:-1:-1;;;27001:60:105;;;;;;;;;;-1:-1:-1;;;27001:60:105;;;-1:-1:-1;;;;;27001:60:105;;;;;;;;;26832:236;-1:-1:-1;;;;26832:236:105:o;23984:196::-;-1:-1:-1;;;;;;;;;;;;;;;;;24138:28:105;;;;;;;:14;:28;;;;;:35;;24167:5;;24138:35;;;;;;:::i;:::-;;;;;;;;;;24131:42;;;;;;;;;24138:35;;24131:42;-1:-1:-1;;;;;24131:42:105;;;;-1:-1:-1;;;24131:42:105;;-1:-1:-1;;;;;24131:42:105;;;;;;;;;23984:196;-1:-1:-1;;;23984:196:105:o;30217:199::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;30370:32:105;;;;;:18;:32;;;;;;:39;;30403:5;;30370:39;;;;;;:::i;:::-;;;;;;;;;;30363:46;;;;;;;;30370:39;;;;30363:46;;;;;;;-1:-1:-1;;;30363:46:105;;;;;;;;;;-1:-1:-1;;;30363:46:105;;;-1:-1:-1;;;;;30363:46:105;;;;;;;;;30217:199;-1:-1:-1;;;30217:199:105:o;9210:231::-;1367:19;-1:-1:-1;;;;;1346:47:105;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1332:63:105;:10;-1:-1:-1;;;;;1332:63:105;;1324:162;;;;-1:-1:-1;;;1324:162:105;;;;;;;:::i;:::-;9357:12:::1;1570:27;1584:12;22902:32:::0;;22879:4;22902:32;;;:18;:32;;;;;:39;:44;;;22813:140;1570:27:::1;1562:89;;;;-1:-1:-1::0;;;1562:89:105::1;;;;;;;:::i;:::-;9381:53:::2;9407:12;9421;9381:25;:53::i;:::-;1496:1:::1;9210:231:::0;;:::o;5234:982::-;1114:10;-1:-1:-1;;;;;1136:19:105;1114:42;;1093:165;;;;-1:-1:-1;;;1093:165:105;;;;;;;:::i;:::-;5557:9:::1;5552:658;5572:24:::0;;::::1;5552:658;;;5617:18;5644:13;;5658:1;5644:16;;;;;;;:::i;:::-;::::0;;;::::1;;;;22879:4:::0;22902:32;;;:18;:32;;;;;:39;5644:16;;-1:-1:-1;22902:44:105;;;-1:-1:-1;5675:95:105::1;;;::::0;-1:-1:-1;;;5675:95:105;;22541:2:178;5675:95:105::1;::::0;::::1;22523:21:178::0;22580:2;22560:18;;;22553:30;22619:34;22599:18;;;22592:62;22690:25;22670:18;;;22663:53;22733:19;;5675:95:105::1;22339:419:178::0;5675:95:105::1;5875:17;5895:157;5952:10;5995:12;6036:1;5895:26;:157::i;:::-;5875:177;;6150:49;6174:12;6188:10;6150:23;:49::i;:::-;;5603:607;;5598:3;;;;;:::i;:::-;;;;5552:658;;;;5234:982:::0;;;:::o;9970:236::-;1367:19;-1:-1:-1;;;;;1346:47:105;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1332:63:105;:10;-1:-1:-1;;;;;1332:63:105;;1324:162;;;;-1:-1:-1;;;1324:162:105;;;;;;;:::i;:::-;10126:12:::1;1570:27;1584:12;22902:32:::0;;22879:4;22902:32;;;:18;:32;;;;;:39;:44;;;22813:140;1570:27:::1;1562:89;;;;-1:-1:-1::0;;;1562:89:105::1;;;;;;;:::i;:::-;10150:49:::2;10169:12;10183:15;10150:18;:49::i;30953:368::-:0;31162:32;;;31106:6;31162:32;;;:18;:32;;;;;:39;;31106:6;;31162:32;31195:5;;31162:39;;;;;;:::i;:::-;;;;;;;;;;31124:77;;;;;;;;31162:39;;;;31124:77;;;;;;;-1:-1:-1;;;31124:77:105;;;;;;;;;;-1:-1:-1;;;;;;;;31124:77:105;;;;;;;;;;;;-1:-1:-1;31211:64:105;31124:77;31263:11;31211:33;:64::i;29706:188::-;29804:32;;;29779:6;29804:32;;;:18;:32;;;;;;;29837:39;;29804:32;;29837:43;;;:::i;:::-;29804:77;;;;;;;;:::i;:::-;;;;;;;;;;:83;-1:-1:-1;;;29804:83:105;;-1:-1:-1;;;;;29804:83:105;;;-1:-1:-1;;29706:188:105:o;27662:270::-;27817:6;27842:83;27887:10;27899:12;27913:11;27842:44;:83::i;:::-;27835:90;27662:270;-1:-1:-1;;;;27662:270:105:o;28599:413::-;28774:6;28833:32;;;:20;:32;;;;;;;;:46;;;;;;;;;;:53;;28774:6;;28833:46;28880:5;;28833:53;;;;;;:::i;:::-;;;;;;;;;;28792:94;;;;;;;;28833:53;;;;28792:94;;;;;;;-1:-1:-1;;;28792:94:105;;;;;;;;;;-1:-1:-1;;;;;;;;28792:94:105;;;;;;;;;;;;-1:-1:-1;28896:67:105;28792:94;28951:11;28896:33;:67::i;:::-;28980:25;;;;28599:413;-1:-1:-1;;;;;28599:413:105:o;25877:517::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;26044:32:105;;;:20;:32;;;;;:46;;;;;;;;;;:53;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;26044:53:105;;26155:233;;26200:19;-1:-1:-1;26193:26:105;;-1:-1:-1;26193:26:105;26155:233;26272:32;;;;:20;:32;;;;;;;;:46;;;;;;;;;;26319:17;26335:1;26319:13;:17;:::i;:::-;26272:65;;;;;;;;:::i;:::-;;;;;;;;;;26250:87;;;;;;;;26272:65;;;;26250:87;;;;;;;-1:-1:-1;;;26250:87:105;;;;;;;;;;-1:-1:-1;;;;;;;;26250:87:105;;;;;;;;;;;;-1:-1:-1;26351:26:105;;-1:-1:-1;;26351:26:105;27183:355;27327:6;27364:32;;;:20;:32;;;;;;;;:46;;;;;;;;;;27428:83;27385:10;27397:12;27499:11;27428:44;:83::i;:::-;27364:161;;;;;;;;;;:::i;:::-;;;;;;;;;;:167;-1:-1:-1;;;27364:167:105;;-1:-1:-1;;;;;27364:167:105;;27183:355;-1:-1:-1;;;;27183:355:105:o;8608:596::-;1114:10;-1:-1:-1;;;;;1136:19:105;1114:42;;1093:165;;;;-1:-1:-1;;;1093:165:105;;;;;;;:::i;:::-;22902:32;;;22879:4;22902:32;;;:18;:32;;;;;:39;:44;8795:94:::1;;;::::0;-1:-1:-1;;;8795:94:105;;22965:2:178;8795:94:105::1;::::0;::::1;22947:21:178::0;23004:2;22984:18;;;22977:30;23043:34;23023:18;;;23016:62;-1:-1:-1;;;23094:18:178;;;23087:51;23155:19;;8795:94:105::1;22763:417:178::0;8795:94:105::1;8899:49;8918:12;8932:15;8899:18;:49::i;:::-;8958:53;8984:12;8998;8958:25;:53::i;:::-;-1:-1:-1::0;;9022:32:105::1;;;::::0;;;:18:::1;:32;::::0;;;;;;;9060:136;;::::1;::::0;::::1;::::0;;::::1;9112:12;9060:136:::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;9022:175;;;;::::1;::::0;;;;;;;;;;;;;;::::1;::::0;;;;;;-1:-1:-1;;;;;9022:175:105::1;-1:-1:-1::0;;;9022:175:105::1;-1:-1:-1::0;;;;;;;;9022:175:105;;::::1;-1:-1:-1::0;;;9022:175:105::1;-1:-1:-1::0;;9022:175:105;;;;;;::::1;::::0;;;;::::1;::::0;;;::::1;;::::0;;8608:596::o;21690:1051::-;21795:6;21803:4;21819:13;21842:20;21865:34;21886:12;23820:28;;23794:7;23820:28;;;:14;:28;;;;;:35;;23723:139;21865:34;-1:-1:-1;;;;;;;;;;;;;;;;;21842:57:105;;-1:-1:-1;22036:33:105;;;21963:31;22036:33;;;:19;:33;;;;;;;;21997:73;;-1:-1:-1;;;21997:73:105;;-1:-1:-1;;;;;21997:10:105;:28;;;;:73;;22026:8;;21997:73;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21997:73:105;;;;;;;;;;;;:::i;:::-;21963:107;;22085:9;22080:444;22104:12;22100:1;:16;22080:444;;;22234:28;;;;;;;:14;:28;;;;;:31;;22263:1;;22234:31;;;;;;:::i;:::-;;;;;;;;;22210:55;;;;;;;;;22234:31;;22210:55;-1:-1:-1;;;;;22210:55:105;;;;-1:-1:-1;;;22210:55:105;;-1:-1:-1;;;;;22210:55:105;;;;;22368:17;;22210:55;;-1:-1:-1;22368:17:105;;22383:1;;22368:17;;;;;;:::i;:::-;;;;;;;:21;22364:150;;;792:4:106;22446:21:105;:32;;;-1:-1:-1;;;;;22426:52:105;:14;22441:1;22426:17;;;;;;;;:::i;:::-;;;;;;;:52;;;;:::i;:::-;:72;;;;:::i;:::-;22409:90;;;;:::i;:::-;;;22364:150;22118:3;;;;:::i;:::-;;;;22080:444;;;-1:-1:-1;;;22657:35:105;;;22624:20;22657:35;;;;;;;;;;;22647:6;;-1:-1:-1;;;;;;;22657:35:105;;;22647:45;;;;;;-1:-1:-1;21690:1051:105;;;;;;:::o;14377:1857::-;14518:6;14587:32;;;:20;:32;;;;;;;;:46;;;;;;;;;;:53;14518:6;;14655:18;14651:1393;;14750:32;;;;:20;:32;;;;;;;;:46;;;;;;;;;;14802:159;;;;;;;;14858:12;14802:159;;;;;;;;;;-1:-1:-1;;;;;14802:159:105;;;;;;;;;14750:212;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14750:212:105;-1:-1:-1;;;;;;;;14750:212:105;;;-1:-1:-1;;;14750:212:105;-1:-1:-1;;14750:212:105;;;;;;;;;;;;;;;;;;;14651:1393;;;15068:30;15101:32;;;:20;:32;;;;;;;;:46;;;;;;;;;;15148:15;15162:1;15148:13;:15;:::i;:::-;15101:63;;;;;;;;:::i;:::-;;;;;;;;;;15191:16;;-1:-1:-1;;;;;;;;15191:16:105;;;;;;-1:-1:-1;15101:63:105;;-1:-1:-1;15290:21:105;;;;15286:68;;;15338:1;15331:8;;;;;;;15286:68;15580:28;;15619:12;15580:52;;;;:28;;:52;15576:458;;;15652:27;;-1:-1:-1;;;;;;;;15652:27:105;-1:-1:-1;;;;;;;;15652:27:105;;;;;;15576:458;;;15718:55;;-1:-1:-1;;15718:55:105;-1:-1:-1;;;15760:12:105;15718:55;;;;;;;;;;;;;-1:-1:-1;15791:32:105;;;:20;:32;;;;;;;;:46;;;;;;;;;;15843:175;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15843:175:105;;;;;;;;;15791:228;;-1:-1:-1;15791:228:105;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15791:228:105;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;15791:228:105;-1:-1:-1;;;15791:228:105;;;;;;;;;;;15576:458;14979:1065;14651:1393;16104:55;;;25718:4:178;25706:17;;25688:36;;-1:-1:-1;;;;;25760:39:178;;25755:2;25740:18;;25733:67;16124:10:105;;16104:55;;25661:18:178;16104:55:105;;;;;;;16176:51;16200:9;16216:8;16176:15;:51::i;:::-;16169:58;14377:1857;-1:-1:-1;;;;;;14377:1857:105:o;16378:1272::-;16556:32;;;16468:6;16556:32;;;:18;:32;;;;;;;:39;;;16468:6;;16556:32;16676:17;;16556:39;16676:17;:::i;:::-;16643:51;;;;;;;;:::i;:::-;;;;;;;;16605:89;;16756:10;16770:1;16756:15;16752:74;;;16794:21;-1:-1:-1;;;16794:21:105;;-1:-1:-1;;;;;16794:21:105;;-1:-1:-1;16787:28:105;;-1:-1:-1;16787:28:105;16752:74;16959:21;;16929:15;;16947:46;;-1:-1:-1;;;16959:21:105;;-1:-1:-1;;;;;16959:21:105;16982:10;16947:11;:46::i;:::-;17199:33;;16929:64;;-1:-1:-1;17243:12:105;17199:57;;;;:33;;:57;17195:423;;;17272:32;;-1:-1:-1;;;;;;;;17272:32:105;-1:-1:-1;;;;;;;;17272:32:105;;;;;;17195:423;;;17335:60;;;17382:12;17335:60;;-1:-1:-1;;;17335:60:105;;;-1:-1:-1;;17335:60:105;;;;;;;;;17409:32;;;17335:37;17409:32;;;-1:-1:-1;17409:32:105;;;;;;;;17447:159;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17447:159:105;;;;;;;;;17409:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;17409:198:105;-1:-1:-1;;;;;;;;17409:198:105;;;;;;-1:-1:-1;;17409:198:105;;;;;;;;;;;;;;;;;;;;;;17195:423;17635:8;16378:1272;-1:-1:-1;;;;;16378:1272:105:o;13969:223::-;14064:35;;;:21;:35;;;;;;;;;;;;:50;;-1:-1:-1;;14064:50:105;-1:-1:-1;;;;;14064:50:105;;;;;;;;14129:56;;1729:58:178;;;14129:56:105;;1702:18:178;14129:56:105;;;;;;;13969:223;;:::o;18193:1628::-;18356:1;18331:15;:22;:26;18323:95;;;;-1:-1:-1;;;18323:95:105;;26013:2:178;18323:95:105;;;25995:21:178;26052:2;26032:18;;;26025:30;-1:-1:-1;;;;;;;;;;;26071:18:178;;;26064:62;26162:26;26142:18;;;26135:54;26206:19;;18323:95:105;25811:420:178;18323:95:105;18453:22;;18513:28;;;18428:22;18513:28;;;:14;:28;;;;;;;;:35;;18579:34;18453:22;18513:35;18579:34;:::i;:::-;:66;;18558:182;;;;-1:-1:-1;;;18558:182:105;;26571:2:178;18558:182:105;;;26553:21:178;26610:2;26590:18;;;26583:30;-1:-1:-1;;;;;;;;;;;26629:18:178;;;26622:62;26720:34;26700:18;;;26693:62;-1:-1:-1;;;26771:19:178;;;26764:36;26817:19;;18558:182:105;26369:473:178;18558:182:105;18755:9;18750:1065;18774:14;18770:1;:18;18750:1065;;;18933:9;18928:290;18953:21;18973:1;18953:17;:21;:::i;:::-;18948:1;:27;18928:290;;;19073:15;19089:1;19073:18;;;;;;;;:::i;:::-;;;;;;;:27;;;-1:-1:-1;;;;;19029:71:105;:14;:28;19044:12;19029:28;;;;;;;;;;;;;;;19058:1;19029:31;;;;;;;;:::i;:::-;;;;;;;;;;:40;-1:-1:-1;;;;;19029:40:105;:71;;19000:203;;;;-1:-1:-1;;;19000:203:105;;27049:2:178;19000:203:105;;;27031:21:178;27088:2;27068:18;;;27061:30;-1:-1:-1;;;;;;;;;;;27107:18:178;;;27100:62;27198:31;27178:18;;;27171:59;27247:19;;19000:203:105;26847:425:178;19000:203:105;18977:3;;;;:::i;:::-;;;;18928:290;;;;19288:1;19256:15;19272:1;19256:18;;;;;;;;:::i;:::-;;;;;;;:29;;;-1:-1:-1;;;;;19256:33:105;;19231:162;;;;-1:-1:-1;;;19231:162:105;;27479:2:178;19231:162:105;;;27461:21:178;27518:2;27498:18;;;27491:30;-1:-1:-1;;;;;;;;;;;27537:18:178;;;27530:62;27628:34;27608:18;;;27601:62;-1:-1:-1;;;27679:19:178;;;27672:37;27726:19;;19231:162:105;27277:474:178;19231:162:105;19407:28;;;;;;;:14;:28;;;;;19441:18;;:15;;19457:1;;19441:18;;;;;;:::i;:::-;;;;;;;;;;;;19407:53;;;;;;;-1:-1:-1;19407:53:105;;;;;;;;;;;;-1:-1:-1;;;;;19407:53:105;-1:-1:-1;;;19407:53:105;-1:-1:-1;;;;;19407:53:105;;;;;;;;;;19474:33;;;;;:19;:33;;;;;19513:18;;:15;;19529:1;;19513:18;;;;;;:::i;:::-;;;;;;;;;;;;:27;19474:67;;;;;;;-1:-1:-1;19474:67:105;;;;;;;;;;-1:-1:-1;;;;;;19474:67:105;-1:-1:-1;;;;;19474:67:105;;;;;;;;;19596:18;;19560:64;;;;;;19596:18;;19612:1;;19596:18;;;;;;:::i;:::-;;;;;;;;;;;;:27;19560:64;;-1:-1:-1;;;;;8392:32:178;;;8374:51;;8347:18;19560:64:105;;;;;;;19686:12;19643:161;;;19716:15;19732:1;19716:18;;;;;;;;:::i;:::-;;;;;;;:27;;;19761:15;19777:1;19761:18;;;;;;;;:::i;:::-;;;;;;;:29;;;19643:161;;;;;;;:::i;:::-;;;;;;;;18790:3;;;;:::i;:::-;;;;18750:1065;;;;18313:1508;;18193:1628;;:::o;20475:830::-;20905:11;:29;;;20890:44;;:11;:44;;;;20869:177;;;;-1:-1:-1;;;20869:177:105;;27958:2:178;20869:177:105;;;27940:21:178;27997:2;27977:18;;;27970:30;28036:34;28016:18;;;28009:62;28107:34;28087:18;;;28080:62;-1:-1:-1;;;28158:19:178;;;28151:53;28221:19;;20869:177:105;27756:490:178;20869:177:105;21077:33;;;;:38;;;;:89;;;21133:11;:33;;;21119:47;;:11;:47;;;21077:89;21056:242;;;;-1:-1:-1;;;21056:242:105;;28453:2:178;21056:242:105;;;28435:21:178;28492:3;28472:18;;;28465:31;28532:34;28512:18;;;28505:62;28603:34;28583:18;;;28576:62;28675:34;28654:19;;;28647:63;-1:-1:-1;;;28726:19:178;;;28719:41;28777:19;;21056:242:105;28251:551:178;21056:242:105;20475:830;;:::o;13134:829::-;13301:6;13336:32;;;:20;:32;;;;;;;;:46;;;;;;;;;;:53;;13508:206;13533:5;;13508:206;;13563:32;;;;:20;:32;;;;;;;;:46;;;;;;;;;;:86;;;;13610:5;13614:1;13610;:5;:::i;:::-;13563:53;;;;;;;;:::i;:::-;;;;;;;;;;:71;;;:86;13559:145;;13683:5;13687:1;13683;:5;:::i;:::-;13669:20;;;;;;13559:145;13540:3;;;;:::i;:::-;;;;13508:206;;;-1:-1:-1;13795:161:105;;-1:-1:-1;;;13795:161:105;;29150:2:178;13795:161:105;;;29132:21:178;29189:3;29169:18;;;29162:31;29229:34;29209:18;;;29202:62;29300:34;29280:18;;;29273:62;29372:34;29351:19;;;29344:63;29444:34;29423:19;;;29416:63;-1:-1:-1;;;29495:19:178;;;29488:32;29537:19;;13795:161:105;28948:614:178;19915:149:105;19988:6;20013:44;-1:-1:-1;;;;;20043:13:105;;;;20020:12;;20013:44;:::i;20144:242::-;20216:6;20246:1;20238:5;:9;20234:146;;;20293:6;20294:5;20293:6;:::i;:::-;20270:31;;:5;:31;:::i;:::-;20263:38;;;;20234:146;20339:30;20362:5;20339;:30;:::i;14:156:178:-;80:20;;140:4;129:16;;119:27;;109:55;;160:1;157;150:12;109:55;14:156;;;:::o;175:182::-;232:6;285:2;273:9;264:7;260:23;256:32;253:52;;;301:1;298;291:12;253:52;324:27;341:9;324:27;:::i;544:250::-;610:6;618;671:2;659:9;650:7;646:23;642:32;639:52;;;687:1;684;677:12;639:52;710:27;727:9;710:27;:::i;:::-;700:37;784:2;769:18;;;;756:32;;-1:-1:-1;;;544:250:178:o;799:323::-;-1:-1:-1;;;;;1007:32:178;;;;989:51;;-1:-1:-1;;;;;1076:39:178;1071:2;1056:18;;1049:67;977:2;962:18;;799:323::o;1127:131::-;-1:-1:-1;;;;;1202:31:178;;1192:42;;1182:70;;1248:1;1245;1238:12;1182:70;1127:131;:::o;1263:317::-;1329:6;1337;1390:2;1378:9;1369:7;1365:23;1361:32;1358:52;;;1406:1;1403;1396:12;1358:52;1429:27;1446:9;1429:27;:::i;:::-;1419:37;;1506:2;1495:9;1491:18;1478:32;1519:31;1544:5;1519:31;:::i;:::-;1569:5;1559:15;;;1263:317;;;;;:::o;1798:367::-;1861:8;1871:6;1925:3;1918:4;1910:6;1906:17;1902:27;1892:55;;1943:1;1940;1933:12;1892:55;-1:-1:-1;1966:20:178;;-1:-1:-1;;;;;1998:30:178;;1995:50;;;2041:1;2038;2031:12;1995:50;2078:4;2070:6;2066:17;2054:29;;2138:3;2131:4;2121:6;2118:1;2114:14;2106:6;2102:27;2098:38;2095:47;2092:67;;;2155:1;2152;2145:12;2170:842;2298:6;2306;2314;2322;2330;2383:2;2371:9;2362:7;2358:23;2354:32;2351:52;;;2399:1;2396;2389:12;2351:52;2422:27;2439:9;2422:27;:::i;:::-;2412:37;;2500:2;2489:9;2485:18;2472:32;-1:-1:-1;;;;;2564:2:178;2556:6;2553:14;2550:34;;;2580:1;2577;2570:12;2550:34;2619:70;2681:7;2672:6;2661:9;2657:22;2619:70;:::i;:::-;2708:8;;-1:-1:-1;2593:96:178;-1:-1:-1;2796:2:178;2781:18;;2768:32;;-1:-1:-1;2812:16:178;;;2809:36;;;2841:1;2838;2831:12;2809:36;;2880:72;2944:7;2933:8;2922:9;2918:24;2880:72;:::i;:::-;2170:842;;;;-1:-1:-1;2170:842:178;;-1:-1:-1;2971:8:178;;2854:98;2170:842;-1:-1:-1;;;2170:842:178:o;3017:347::-;3068:8;3078:6;3132:3;3125:4;3117:6;3113:17;3109:27;3099:55;;3150:1;3147;3140:12;3099:55;-1:-1:-1;3173:20:178;;-1:-1:-1;;;;;3205:30:178;;3202:50;;;3248:1;3245;3238:12;3202:50;3285:4;3277:6;3273:17;3261:29;;3337:3;3330:4;3321:6;3313;3309:19;3305:30;3302:39;3299:59;;;3354:1;3351;3344:12;3369:612;3457:6;3465;3473;3481;3534:2;3522:9;3513:7;3509:23;3505:32;3502:52;;;3550:1;3547;3540:12;3502:52;3589:9;3576:23;3608:31;3633:5;3608:31;:::i;:::-;3658:5;-1:-1:-1;3710:2:178;3695:18;;3682:32;;-1:-1:-1;3765:2:178;3750:18;;3737:32;-1:-1:-1;;;;;3781:30:178;;3778:50;;;3824:1;3821;3814:12;3778:50;3863:58;3913:7;3904:6;3893:9;3889:22;3863:58;:::i;:::-;3369:612;;;;-1:-1:-1;3940:8:178;-1:-1:-1;;;;3369:612:178:o;3986:467::-;4038:3;4076:5;4070:12;4103:6;4098:3;4091:19;4129:4;4158:2;4153:3;4149:12;4142:19;;4195:2;4188:5;4184:14;4216:1;4226:202;4240:6;4237:1;4234:13;4226:202;;;4305:13;;-1:-1:-1;;;;;4301:46:178;4289:59;;4368:12;;;;4403:15;;;;4262:1;4255:9;4226:202;;;-1:-1:-1;4444:3:178;;3986:467;-1:-1:-1;;;;;3986:467:178:o;4458:459::-;4711:2;4700:9;4693:21;4674:4;4737:55;4788:2;4777:9;4773:18;4765:6;4737:55;:::i;:::-;4840:9;4832:6;4828:22;4823:2;4812:9;4808:18;4801:50;4868:43;4904:6;4896;4868:43;:::i;4922:250::-;4988:6;4996;5049:2;5037:9;5028:7;5024:23;5020:32;5017:52;;;5065:1;5062;5055:12;5017:52;5101:9;5088:23;5078:33;;5130:36;5162:2;5151:9;5147:18;5130:36;:::i;:::-;5120:46;;4922:250;;;;;:::o;5470:717::-;5701:2;5753:21;;;5823:13;;5726:18;;;5845:22;;;5672:4;;5701:2;5924:15;;;;5898:2;5883:18;;;5672:4;5967:194;5981:6;5978:1;5975:13;5967:194;;;6030:49;6075:3;6066:6;6060:13;5252:10;5301:2;5293:5;5287:12;5283:21;5278:3;5271:34;5366:2;5358:4;5351:5;5347:16;5341:23;5337:32;5330:4;5325:3;5321:14;5314:56;;-1:-1:-1;;;;;5423:4:178;5416:5;5412:16;5406:23;5402:56;5395:4;5390:3;5386:14;5379:80;5177:288;;;6030:49;6136:15;;;;6108:4;6099:14;;;;;6003:1;5996:9;5967:194;;;-1:-1:-1;6178:3:178;;5470:717;-1:-1:-1;;;;;;5470:717:178:o;6192:127::-;6253:10;6248:3;6244:20;6241:1;6234:31;6284:4;6281:1;6274:15;6308:4;6305:1;6298:15;6324:257;6396:4;6390:11;;;6428:17;;-1:-1:-1;;;;;6460:34:178;;6496:22;;;6457:62;6454:88;;;6522:18;;:::i;:::-;6558:4;6551:24;6324:257;:::o;6586:275::-;6657:2;6651:9;6722:2;6703:13;;-1:-1:-1;;6699:27:178;6687:40;;-1:-1:-1;;;;;6742:34:178;;6778:22;;;6739:62;6736:88;;;6804:18;;:::i;:::-;6840:2;6833:22;6586:275;;-1:-1:-1;6586:275:178:o;6866:183::-;6926:4;-1:-1:-1;;;;;6951:6:178;6948:30;6945:56;;;6981:18;;:::i;:::-;-1:-1:-1;7026:1:178;7022:14;7038:4;7018:25;;6866:183::o;7054:961::-;7145:6;7153;7206:2;7194:9;7185:7;7181:23;7177:32;7174:52;;;7222:1;7219;7212:12;7174:52;7245:27;7262:9;7245:27;:::i;:::-;7235:37;;7291:2;7344;7333:9;7329:18;7316:32;-1:-1:-1;;;;;7363:6:178;7360:30;7357:50;;;7403:1;7400;7393:12;7357:50;7426:22;;7479:4;7471:13;;7467:27;-1:-1:-1;7457:55:178;;7508:1;7505;7498:12;7457:55;7544:2;7531:16;7567:60;7583:43;7623:2;7583:43;:::i;:::-;7567:60;:::i;:::-;7661:15;;;7743:1;7739:10;;;;7731:19;;7727:28;;;7692:12;;;;7767:19;;;7764:39;;;7799:1;7796;7789:12;7764:39;7823:11;;;;7843:142;7859:6;7854:3;7851:15;7843:142;;;7925:17;;7913:30;;7876:12;;;;7963;;;;7843:142;;;8004:5;7994:15;;;;;;;7054:961;;;;;:::o;8625:163::-;8692:20;;8752:10;8741:22;;8731:33;;8721:61;;8778:1;8775;8768:12;8793:481;8871:6;8879;8887;8940:2;8928:9;8919:7;8915:23;8911:32;8908:52;;;8956:1;8953;8946:12;8908:52;8979:28;8997:9;8979:28;:::i;:::-;8969:38;;9058:2;9047:9;9043:18;9030:32;-1:-1:-1;;;;;9077:6:178;9074:30;9071:50;;;9117:1;9114;9107:12;9071:50;9156:58;9206:7;9197:6;9186:9;9182:22;9156:58;:::i;:::-;8793:481;;9233:8;;-1:-1:-1;9130:84:178;;-1:-1:-1;;;;8793:481:178:o;9279:647::-;9448:2;9500:21;;;9570:13;;9473:18;;;9592:22;;;9419:4;;9448:2;9671:15;;;;9645:2;9630:18;;;9419:4;9714:186;9728:6;9725:1;9722:13;9714:186;;;9793:13;;9808:10;9789:30;9777:43;;9875:15;;;;9840:12;;;;9750:1;9743:9;9714:186;;10157:318;10232:6;10240;10248;10301:2;10289:9;10280:7;10276:23;10272:32;10269:52;;;10317:1;10314;10307:12;10269:52;10340:27;10357:9;10340:27;:::i;:::-;10330:37;10414:2;10399:18;;10386:32;;-1:-1:-1;10465:2:178;10450:18;;;10437:32;;10157:318;-1:-1:-1;;;10157:318:178:o;10480:260::-;5287:12;;5252:10;5283:21;;;5271:34;;5358:4;5347:16;;;5341:23;5337:32;;;5321:14;;;5314:56;5423:4;5412:16;;;5406:23;-1:-1:-1;;;;;5402:56:178;5386:14;;;5379:80;10674:2;10659:18;;10686:48;5177:288;11122:179;11189:20;;-1:-1:-1;;;;;11238:38:178;;11228:49;;11218:77;;11291:1;11288;11281:12;11306:254;11371:6;11379;11432:2;11420:9;11411:7;11407:23;11403:32;11400:52;;;11448:1;11445;11438:12;11400:52;11471:27;11488:9;11471:27;:::i;:::-;11461:37;;11517;11550:2;11539:9;11535:18;11517:37;:::i;11565:477::-;11644:6;11652;11660;11713:2;11701:9;11692:7;11688:23;11684:32;11681:52;;;11729:1;11726;11719:12;11681:52;11765:9;11752:23;11742:33;;11826:2;11815:9;11811:18;11798:32;-1:-1:-1;;;;;11845:6:178;11842:30;11839:50;;;11885:1;11882;11875:12;12047:1035;12115:5;12168:3;12161:4;12153:6;12149:17;12145:27;12135:55;;12186:1;12183;12176:12;12135:55;12222:6;12209:20;12248:4;12272:60;12288:43;12328:2;12288:43;:::i;12272:60::-;12366:15;;;12452:1;12448:10;;;;12436:23;;12432:32;;;12397:12;;;;12476:15;;;12473:35;;;12504:1;12501;12494:12;12473:35;12540:2;12532:6;12528:15;12552:501;12568:6;12563:3;12560:15;12552:501;;;12646:4;12640:3;12635;12631:13;12627:24;12624:114;;;12692:1;12721:2;12717;12710:14;12624:114;12764:22;;:::i;:::-;12827:3;12814:17;12844:33;12869:7;12844:33;:::i;:::-;12890:22;;12948:31;12966:12;;;12948:31;:::i;:::-;12932:14;;;12925:55;12993:18;;13031:12;;;;12594:4;12585:14;12552:501;;;-1:-1:-1;13071:5:178;12047:1035;-1:-1:-1;;;;;;12047:1035:178:o;13087:465::-;13211:6;13219;13272:2;13260:9;13251:7;13247:23;13243:32;13240:52;;;13288:1;13285;13278:12;13240:52;13311:27;13328:9;13311:27;:::i;:::-;13301:37;;13389:2;13378:9;13374:18;13361:32;-1:-1:-1;;;;;13408:6:178;13405:30;13402:50;;;13448:1;13445;13438:12;13402:50;13471:75;13538:7;13529:6;13518:9;13514:22;13471:75;:::i;:::-;13461:85;;;13087:465;;;;;:::o;13557:322::-;13631:6;13639;13647;13700:2;13688:9;13679:7;13675:23;13671:32;13668:52;;;13716:1;13713;13706:12;13668:52;13739:27;13756:9;13739:27;:::i;:::-;13729:37;;13785;13818:2;13807:9;13803:18;13785:37;:::i;:::-;13775:47;;13869:2;13858:9;13854:18;13841:32;13831:42;;13557:322;;;;;:::o;13884:::-;13958:6;13966;13974;14027:2;14015:9;14006:7;14002:23;13998:32;13995:52;;;14043:1;14040;14033:12;13995:52;14079:9;14066:23;14056:33;;14108:36;14140:2;14129:9;14125:18;14108:36;:::i;:::-;14098:46;;14163:37;14196:2;14185:9;14181:18;14163:37;:::i;:::-;14153:47;;13884:322;;;;;:::o;14643:391::-;14726:6;14734;14742;14750;14803:3;14791:9;14782:7;14778:23;14774:33;14771:53;;;14820:1;14817;14810:12;14771:53;14843:27;14860:9;14843:27;:::i;:::-;14833:37;;14889;14922:2;14911:9;14907:18;14889:37;:::i;:::-;14643:391;;14879:47;;-1:-1:-1;;;;14973:2:178;14958:18;;14945:32;;15024:2;15009:18;14996:32;;14643:391::o;15039:537::-;15171:6;15179;15187;15240:2;15228:9;15219:7;15215:23;15211:32;15208:52;;;15256:1;15253;15246:12;15208:52;15279:27;15296:9;15279:27;:::i;:::-;15269:37;;15325;15358:2;15347:9;15343:18;15325:37;:::i;:::-;15315:47;;15413:2;15402:9;15398:18;15385:32;-1:-1:-1;;;;;15432:6:178;15429:30;15426:50;;;15472:1;15469;15462:12;15426:50;15495:75;15562:7;15553:6;15542:9;15538:22;15495:75;:::i;:::-;15485:85;;;15039:537;;;;;:::o;15581:413::-;15783:2;15765:21;;;15822:2;15802:18;;;15795:30;15861:34;15856:2;15841:18;;15834:62;-1:-1:-1;;;15927:2:178;15912:18;;15905:47;15984:3;15969:19;;15581:413::o;15999:251::-;16069:6;16122:2;16110:9;16101:7;16097:23;16093:32;16090:52;;;16138:1;16135;16128:12;16090:52;16170:9;16164:16;16189:31;16214:5;16189:31;:::i;16255:490::-;16457:2;16439:21;;;16496:2;16476:18;;;16469:30;16535:34;16530:2;16515:18;;16508:62;16606:34;16601:2;16586:18;;16579:62;-1:-1:-1;;;16672:3:178;16657:19;;16650:53;16735:3;16720:19;;16255:490::o;17609:127::-;17670:10;17665:3;17661:20;17658:1;17651:31;17701:4;17698:1;17691:15;17725:4;17722:1;17715:15;17741:184;17799:6;17852:2;17840:9;17831:7;17827:23;17823:32;17820:52;;;17868:1;17865;17858:12;17820:52;17891:28;17909:9;17891:28;:::i;18259:127::-;18320:10;18315:3;18311:20;18308:1;18301:31;18351:4;18348:1;18341:15;18375:4;18372:1;18365:15;18391:135;18430:3;-1:-1:-1;;18451:17:178;;18448:43;;;18471:18;;:::i;:::-;-1:-1:-1;18518:1:178;18507:13;;18391:135::o;18531:480::-;18733:2;18715:21;;;18772:2;18752:18;;;18745:30;18811:34;18806:2;18791:18;;18784:62;18882:34;18877:2;18862:18;;18855:62;-1:-1:-1;;;18948:3:178;18933:19;;18926:43;19001:3;18986:19;;18531:480::o;20673:125::-;20713:4;20741:1;20738;20735:8;20732:34;;;20746:18;;:::i;:::-;-1:-1:-1;20783:9:178;;20673:125::o;20803:127::-;20864:10;20859:3;20855:20;20852:1;20845:31;20895:4;20892:1;20885:15;20919:4;20916:1;20909:15;23185:800;23370:4;23418:2;23407:9;23403:18;23457:1;23453;23448:3;23444:11;23440:19;23498:2;23490:6;23486:15;23475:9;23468:34;23521:2;23559;23554;23543:9;23539:18;23532:30;23582:6;23617;23611:13;23648:6;23640;23633:22;23686:2;23675:9;23671:18;23664:25;;23708:6;23705:1;23698:17;23751:2;23748:1;23738:16;23724:30;;23772:1;23782:177;23796:6;23793:1;23790:13;23782:177;;;23861:13;;23857:22;;23845:35;;23947:1;23935:14;;;;23900:12;;;;23811:9;23782:177;;;-1:-1:-1;23976:3:178;;23185:800;-1:-1:-1;;;;;;;;23185:800:178:o;23990:881::-;24085:6;24116:2;24159;24147:9;24138:7;24134:23;24130:32;24127:52;;;24175:1;24172;24165:12;24127:52;24208:9;24202:16;-1:-1:-1;;;;;24233:6:178;24230:30;24227:50;;;24273:1;24270;24263:12;24227:50;24296:22;;24349:4;24341:13;;24337:27;-1:-1:-1;24327:55:178;;24378:1;24375;24368:12;24327:55;24407:2;24401:9;24430:60;24446:43;24486:2;24446:43;:::i;24430:60::-;24524:15;;;24606:1;24602:10;;;;24594:19;;24590:28;;;24555:12;;;;24630:19;;;24627:39;;;24662:1;24659;24652:12;24627:39;24686:11;;;;24706:135;24722:6;24717:3;24714:15;24706:135;;;24788:10;;24776:23;;24739:12;;;;24819;;;;24706:135;;;24860:5;23990:881;-1:-1:-1;;;;;;;23990:881:178:o;24876:168::-;24916:7;24982:1;24978;24974:6;24970:14;24967:1;24964:21;24959:1;24952:9;24945:17;24941:45;24938:71;;;24989:18;;:::i;:::-;-1:-1:-1;25029:9:178;;24876:168::o;25049:217::-;25089:1;25115;25105:132;;25159:10;25154:3;25150:20;25147:1;25140:31;25194:4;25191:1;25184:15;25222:4;25219:1;25212:15;25105:132;-1:-1:-1;25251:9:178;;25049:217::o;25271:244::-;25310:3;-1:-1:-1;;;;;25391:2:178;25388:1;25384:10;25421:2;25418:1;25414:10;25452:3;25448:2;25444:12;25439:3;25436:21;25433:47;;;25460:18;;:::i;:::-;25496:13;;25271:244;-1:-1:-1;;;;25271:244:178:o;26236:128::-;26276:3;26307:1;26303:6;26300:1;26297:13;26294:39;;;26313:18;;:::i;:::-;-1:-1:-1;26349:9:178;;26236:128::o;28807:136::-;28846:3;28874:5;28864:39;;28883:18;;:::i;:::-;-1:-1:-1;;;28919:18:178;;28807:136::o;29567:267::-;29606:4;29635:9;;;29660:10;;-1:-1:-1;;;29679:19:178;;29672:27;;29656:44;29653:70;;;29703:18;;:::i;:::-;-1:-1:-1;;;;;29750:27:178;;29743:35;;29735:44;;29732:70;;;29782:18;;:::i;:::-;-1:-1:-1;;29819:9:178;;29567:267::o;29839:136::-;29874:3;-1:-1:-1;;;29895:22:178;;29892:48;;;29920:18;;:::i;:::-;-1:-1:-1;29960:1:178;29956:13;;29839:136::o;29980:237::-;30019:4;-1:-1:-1;;;;;30124:10:178;;;;30094;;30146:12;;;30143:38;;;30161:18;;:::i;:::-;30198:13;;29980:237;-1:-1:-1;;;29980:237:178:o","linkReferences":{},"immutableReferences":{"70884":[{"start":1321,"length":32},{"start":7848,"length":32}],"70887":[{"start":890,"length":32},{"start":1586,"length":32},{"start":2415,"length":32},{"start":3302,"length":32},{"start":4369,"length":32},{"start":5891,"length":32},{"start":6149,"length":32},{"start":6441,"length":32},{"start":7399,"length":32}]}},"methodIdentifiers":{"MAX_WEIGHING_FUNCTION_LENGTH()":"7c172347","WEIGHTING_DIVISOR()":"5e5a6775","addStrategies(uint8,(address,uint96)[])":"c601527d","delegation()":"df5cf723","deregisterOperator(bytes32,bytes)":"bd29b8cd","getCurrentStake(bytes32,uint8)":"5401ed27","getCurrentTotalStake(uint8)":"d5eccc05","getLatestStakeUpdate(bytes32,uint8)":"f851e198","getStakeAtBlockNumber(bytes32,uint8,uint32)":"fa28c627","getStakeAtBlockNumberAndIndex(uint8,uint32,bytes32,uint256)":"f2be94ae","getStakeHistory(bytes32,uint8)":"2cd95940","getStakeHistoryLength(bytes32,uint8)":"4bd26e09","getStakeUpdateAtIndex(uint8,bytes32,uint256)":"ac6bfb03","getStakeUpdateIndexAtBlockNumber(bytes32,uint8,uint32)":"dd9846b9","getTotalStakeAtBlockNumberFromIndex(uint8,uint32,uint256)":"c8294c56","getTotalStakeHistoryLength(uint8)":"0491b41c","getTotalStakeIndicesAtBlockNumber(uint32,bytes)":"81c07502","getTotalStakeUpdateAtIndex(uint8,uint256)":"b6904b78","initializeQuorum(uint8,uint96,(address,uint96)[])":"ff694a77","minimumStakeForQuorum(uint8)":"c46778a5","modifyStrategyParams(uint8,uint256[],uint96[])":"20b66298","registerOperator(address,bytes32,bytes)":"25504777","registryCoordinator()":"6d14a987","removeStrategies(uint8,uint256[])":"5f1f2d77","setMinimumStakeForQuorum(uint8,uint96)":"bc9a40c3","strategiesPerQuorum(uint8,uint256)":"9f3ccf65","strategyParams(uint8,uint256)":"08732461","strategyParamsByIndex(uint8,uint256)":"adc804da","strategyParamsLength(uint8)":"3ca5a5f5","updateOperatorStake(address,bytes32,bytes)":"66acfefe","weightOfOperatorForQuorum(uint8,address)":"1f9b74e0"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IRegistryCoordinator\",\"name\":\"_registryCoordinator\",\"type\":\"address\"},{\"internalType\":\"contract IDelegationManager\",\"name\":\"_delegationManager\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"minimumStake\",\"type\":\"uint96\"}],\"name\":\"MinimumStakeForQuorumUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"stake\",\"type\":\"uint96\"}],\"name\":\"OperatorStakeUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"}],\"name\":\"QuorumCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyAddedToQuorum\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"multiplier\",\"type\":\"uint256\"}],\"name\":\"StrategyMultiplierUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyRemovedFromQuorum\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_WEIGHING_FUNCTION_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WEIGHTING_DIVISOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"multiplier\",\"type\":\"uint96\"}],\"internalType\":\"struct IStakeRegistry.StrategyParams[]\",\"name\":\"_strategyParams\",\"type\":\"tuple[]\"}],\"name\":\"addStrategies\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegation\",\"outputs\":[{\"internalType\":\"contract IDelegationManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"}],\"name\":\"getCurrentStake\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"}],\"name\":\"getCurrentTotalStake\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"}],\"name\":\"getLatestStakeUpdate\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"updateBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"nextUpdateBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"stake\",\"type\":\"uint96\"}],\"internalType\":\"struct IStakeRegistry.StakeUpdate\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"blockNumber\",\"type\":\"uint32\"}],\"name\":\"getStakeAtBlockNumber\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"blockNumber\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getStakeAtBlockNumberAndIndex\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"}],\"name\":\"getStakeHistory\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"updateBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"nextUpdateBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"stake\",\"type\":\"uint96\"}],\"internalType\":\"struct IStakeRegistry.StakeUpdate[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"}],\"name\":\"getStakeHistoryLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getStakeUpdateAtIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"updateBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"nextUpdateBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"stake\",\"type\":\"uint96\"}],\"internalType\":\"struct IStakeRegistry.StakeUpdate\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"blockNumber\",\"type\":\"uint32\"}],\"name\":\"getStakeUpdateIndexAtBlockNumber\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"blockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getTotalStakeAtBlockNumberFromIndex\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"}],\"name\":\"getTotalStakeHistoryLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"blockNumber\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"}],\"name\":\"getTotalStakeIndicesAtBlockNumber\",\"outputs\":[{\"internalType\":\"uint32[]\",\"name\":\"\",\"type\":\"uint32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getTotalStakeUpdateAtIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"updateBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"nextUpdateBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"stake\",\"type\":\"uint96\"}],\"internalType\":\"struct IStakeRegistry.StakeUpdate\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"internalType\":\"uint96\",\"name\":\"minimumStake\",\"type\":\"uint96\"},{\"components\":[{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"multiplier\",\"type\":\"uint96\"}],\"internalType\":\"struct IStakeRegistry.StrategyParams[]\",\"name\":\"_strategyParams\",\"type\":\"tuple[]\"}],\"name\":\"initializeQuorum\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"minimumStakeForQuorum\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"internalType\":\"uint256[]\",\"name\":\"strategyIndices\",\"type\":\"uint256[]\"},{\"internalType\":\"uint96[]\",\"name\":\"newMultipliers\",\"type\":\"uint96[]\"}],\"name\":\"modifyStrategyParams\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"}],\"name\":\"registerOperator\",\"outputs\":[{\"internalType\":\"uint96[]\",\"name\":\"\",\"type\":\"uint96[]\"},{\"internalType\":\"uint96[]\",\"name\":\"\",\"type\":\"uint96[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registryCoordinator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"internalType\":\"uint256[]\",\"name\":\"indicesToRemove\",\"type\":\"uint256[]\"}],\"name\":\"removeStrategies\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"internalType\":\"uint96\",\"name\":\"minimumStake\",\"type\":\"uint96\"}],\"name\":\"setMinimumStakeForQuorum\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"strategiesPerQuorum\",\"outputs\":[{\"internalType\":\"contract IStrategy\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"strategyParams\",\"outputs\":[{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"multiplier\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"strategyParamsByIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"multiplier\",\"type\":\"uint96\"}],\"internalType\":\"struct IStakeRegistry.StrategyParams\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"}],\"name\":\"strategyParamsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"}],\"name\":\"updateOperatorStake\",\"outputs\":[{\"internalType\":\"uint192\",\"name\":\"\",\"type\":\"uint192\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"weightOfOperatorForQuorum\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"kind\":\"dev\",\"methods\":{\"addStrategies(uint8,(address,uint96)[])\":{\"details\":\"Checks to make sure that the *same* strategy cannot be added multiple times (checks against both against existing and new strategies).This function has no check to make sure that the strategies for a single quorum have the same underlying asset. This is a concious choice, since a middleware may want, e.g., a stablecoin quorum that accepts USDC, USDT, DAI, etc. as underlying assets and trades them as \\\"equivalent\\\".\"},\"deregisterOperator(bytes32,bytes)\":{\"details\":\"access restricted to the RegistryCoordinatorPreconditions (these are assumed, not validated in this contract): 1) `quorumNumbers` has no duplicates 2) `quorumNumbers.length` != 0 3) `quorumNumbers` is ordered in ascending order 4) the operator is not already deregistered 5) `quorumNumbers` is a subset of the quorumNumbers that the operator is registered for\",\"params\":{\"operatorId\":\"The id of the operator to deregister.\",\"quorumNumbers\":\"The quorum numbers the operator is deregistering from, where each byte is an 8 bit integer quorumNumber.\"}},\"getCurrentStake(bytes32,uint8)\":{\"details\":\"Function returns weight of **0** in the event that the operator has no stake history\"},\"getCurrentTotalStake(uint8)\":{\"details\":\"Will revert if `_totalStakeHistory[quorumNumber]` is empty.\"},\"getLatestStakeUpdate(bytes32,uint8)\":{\"details\":\"Function returns an StakeUpdate struct with **every entry equal to 0** in the event that the operator has no stake history\"},\"getStakeAtBlockNumberAndIndex(uint8,uint32,bytes32,uint256)\":{\"details\":\"Function will revert if `index` is out-of-bounds.\",\"params\":{\"blockNumber\":\"Block number to make sure the stake is from.\",\"index\":\"Array index for lookup, within the dynamic array `operatorStakeHistory[operatorId][quorumNumber]`.\",\"operatorId\":\"The id of the operator of interest.\",\"quorumNumber\":\"The quorum number to get the stake for.\"}},\"getStakeHistory(bytes32,uint8)\":{\"params\":{\"operatorId\":\"The id of the operator of interest.\",\"quorumNumber\":\"The quorum number to get the stake for.\"}},\"getStakeUpdateAtIndex(uint8,bytes32,uint256)\":{\"details\":\"Function will revert if `index` is out-of-bounds.\",\"params\":{\"index\":\"Array index for lookup, within the dynamic array `operatorStakeHistory[operatorId][quorumNumber]`.\",\"operatorId\":\"The id of the operator of interest.\",\"quorumNumber\":\"The quorum number to get the stake for.\"}},\"getTotalStakeAtBlockNumberFromIndex(uint8,uint32,uint256)\":{\"details\":\"Function will revert if `index` is out-of-bounds.\",\"params\":{\"blockNumber\":\"Block number to make sure the stake is from.\",\"index\":\"Array index for lookup, within the dynamic array `_totalStakeHistory[quorumNumber]`.\",\"quorumNumber\":\"The quorum number to get the stake for.\"}},\"getTotalStakeIndicesAtBlockNumber(uint32,bytes)\":{\"details\":\"Function will revert if there are no indices for the given `blockNumber`\",\"params\":{\"blockNumber\":\"Block number to retrieve the stake indices from.\",\"quorumNumbers\":\"The quorum numbers to get the stake indices for.\"}},\"getTotalStakeUpdateAtIndex(uint8,uint256)\":{\"params\":{\"index\":\"Array index for lookup, within the dynamic array `_totalStakeHistory[quorumNumber]`.\",\"quorumNumber\":\"The quorum number to get the stake for.\"}},\"modifyStrategyParams(uint8,uint256[],uint96[])\":{\"params\":{\"newMultipliers\":\"are the new multipliers for the strategies\",\"quorumNumber\":\"is the quorum number to which the strategies belong\",\"strategyIndices\":\"are the indices of the strategies to change\"}},\"registerOperator(address,bytes32,bytes)\":{\"details\":\"access restricted to the RegistryCoordinatorPreconditions (these are assumed, not validated in this contract): 1) `quorumNumbers` has no duplicates 2) `quorumNumbers.length` != 0 3) `quorumNumbers` is ordered in ascending order 4) the operator is not already registered\",\"params\":{\"operator\":\"The address of the operator to register.\",\"operatorId\":\"The id of the operator to register.\",\"quorumNumbers\":\"The quorum numbers the operator is registering for, where each byte is an 8 bit integer quorumNumber.\"},\"returns\":{\"_0\":\"The operator's current stake for each quorum, and the total stake for each quorum\"}},\"removeStrategies(uint8,uint256[])\":{\"details\":\"higher indices should be *first* in the list of @param indicesToRemove, since otherwise the removal of lower index entries will cause a shift in the indices of the other strategies to remove\"},\"updateOperatorStake(address,bytes32,bytes)\":{\"returns\":{\"_0\":\"A bitmap of quorums where the operator no longer meets the minimum stake and should be deregistered.\"}},\"weightOfOperatorForQuorum(uint8,address)\":{\"details\":\"reverts if the quorum does not exist\"}},\"title\":\"A `Registry` that keeps track of stakes of operators for up to 256 quorums. Specifically, it keeps track of 1) The stake of each operator in all the quorums they are a part of for block ranges 2) The total stake of all operators in each quorum for block ranges 3) The minimum stake required to register for each quorum It allows an additional functionality (in addition to registering and deregistering) to update the stake of an operator.\",\"version\":1},\"userdoc\":{\"events\":{\"MinimumStakeForQuorumUpdated(uint8,uint96)\":{\"notice\":\"emitted when the minimum stake for a quorum is updated\"},\"OperatorStakeUpdate(bytes32,uint8,uint96)\":{\"notice\":\"emitted whenever the stake of `operator` is updated\"},\"QuorumCreated(uint8)\":{\"notice\":\"emitted when a new quorum is created\"},\"StrategyAddedToQuorum(uint8,address)\":{\"notice\":\"emitted when `strategy` has been added to the array at `strategyParams[quorumNumber]`\"},\"StrategyMultiplierUpdated(uint8,address,uint256)\":{\"notice\":\"emitted when `strategy` has its `multiplier` updated in the array at `strategyParams[quorumNumber]`\"},\"StrategyRemovedFromQuorum(uint8,address)\":{\"notice\":\"emitted when `strategy` has removed from the array at `strategyParams[quorumNumber]`\"}},\"kind\":\"user\",\"methods\":{\"MAX_WEIGHING_FUNCTION_LENGTH()\":{\"notice\":\"Maximum length of dynamic arrays in the `strategyParams` mapping.\"},\"WEIGHTING_DIVISOR()\":{\"notice\":\"Constant used as a divisor in calculating weights.\"},\"addStrategies(uint8,(address,uint96)[])\":{\"notice\":\"Adds strategies and weights to the quorum\"},\"delegation()\":{\"notice\":\"The address of the Delegation contract for EigenLayer.\"},\"deregisterOperator(bytes32,bytes)\":{\"notice\":\"Deregisters the operator with `operatorId` for the specified `quorumNumbers`.\"},\"getCurrentStake(bytes32,uint8)\":{\"notice\":\"Returns the most recent stake weight for the `operatorId` for quorum `quorumNumber`\"},\"getCurrentTotalStake(uint8)\":{\"notice\":\"Returns the stake weight from the latest entry in `_totalStakeHistory` for quorum `quorumNumber`.\"},\"getLatestStakeUpdate(bytes32,uint8)\":{\"notice\":\"Returns the most recent stake weight for the `operatorId` for a certain quorum\"},\"getStakeAtBlockNumber(bytes32,uint8,uint32)\":{\"notice\":\"Returns the stake of the operator for the provided `quorumNumber` at the given `blockNumber`\"},\"getStakeAtBlockNumberAndIndex(uint8,uint32,bytes32,uint256)\":{\"notice\":\"Returns the stake weight corresponding to `operatorId` for quorum `quorumNumber`, at the `index`-th entry in the `operatorStakeHistory[operatorId][quorumNumber]` array if it was the operator's stake at `blockNumber`. Reverts otherwise.\"},\"getStakeHistory(bytes32,uint8)\":{\"notice\":\"Returns the entire `operatorStakeHistory[operatorId][quorumNumber]` array.\"},\"getStakeHistoryLength(bytes32,uint8)\":{\"notice\":\"Returns the length of an operator's stake history for the given quorum\"},\"getStakeUpdateAtIndex(uint8,bytes32,uint256)\":{\"notice\":\"Returns the `index`-th entry in the `operatorStakeHistory[operatorId][quorumNumber]` array.\"},\"getStakeUpdateIndexAtBlockNumber(bytes32,uint8,uint32)\":{\"notice\":\"Returns the indices of the operator stakes for the provided `quorumNumber` at the given `blockNumber`\"},\"getTotalStakeAtBlockNumberFromIndex(uint8,uint32,uint256)\":{\"notice\":\"Returns the total stake weight for quorum `quorumNumber`, at the `index`-th entry in the `_totalStakeHistory[quorumNumber]` array if it was the stake at `blockNumber`. Reverts otherwise.\"},\"getTotalStakeHistoryLength(uint8)\":{\"notice\":\"Returns the length of the total stake history for the given quorum\"},\"getTotalStakeIndicesAtBlockNumber(uint32,bytes)\":{\"notice\":\"Returns the indices of the total stakes for the provided `quorumNumbers` at the given `blockNumber`\"},\"getTotalStakeUpdateAtIndex(uint8,uint256)\":{\"notice\":\"Returns the `index`-th entry in the dynamic array of total stake, `_totalStakeHistory` for quorum `quorumNumber`.\"},\"initializeQuorum(uint8,uint96,(address,uint96)[])\":{\"notice\":\"Initialize a new quorum and push its first history update\"},\"minimumStakeForQuorum(uint8)\":{\"notice\":\"In order to register for a quorum i, an operator must have at least `minimumStakeForQuorum[i]` evaluated by this contract's 'VoteWeigher' logic.\"},\"modifyStrategyParams(uint8,uint256[],uint96[])\":{\"notice\":\"Modifies the weights of existing strategies for a specific quorum\"},\"registerOperator(address,bytes32,bytes)\":{\"notice\":\"Registers the `operator` with `operatorId` for the specified `quorumNumbers`.\"},\"registryCoordinator()\":{\"notice\":\"the coordinator contract that this registry is associated with\"},\"removeStrategies(uint8,uint256[])\":{\"notice\":\"Remove strategies and their associated weights from the quorum's considered strategies\"},\"strategyParams(uint8,uint256)\":{\"notice\":\"mapping from quorum number to the list of strategies considered and their corresponding multipliers for that specific quorum\"},\"strategyParamsByIndex(uint8,uint256)\":{\"notice\":\"Returns the strategy and weight multiplier for the `index`'th strategy in the quorum `quorumNumber`\"},\"strategyParamsLength(uint8)\":{\"notice\":\"Returns the length of the dynamic array stored in `strategyParams[quorumNumber]`.\"},\"updateOperatorStake(address,bytes32,bytes)\":{\"notice\":\"Called by the registry coordinator to update an operator's stake for one or more quorums. If the operator no longer has the minimum stake required for a quorum, they are added to the `quorumsToRemove`, which is returned to the registry coordinator\"},\"weightOfOperatorForQuorum(uint8,address)\":{\"notice\":\"This function computes the total weight of the @param operator in the quorum @param quorumNumber.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/StakeRegistry.sol\":\"StakeRegistry\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x9906828f285cc76bbbe077f908d87c4bffd0a3bff9394f7a4b60a9d9a2672c1e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4c0f43e14e50ac322685b5cd301459118e2770bdfb053f8f3ded08ee9fbf5bf9\",\"dweb:/ipfs/QmPQtY6KEUCbrKwweu8BvA7YjnXXxkkuZPyLSRGV5EoPTe\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x1f8e17b0f952042132ca64e202022d83783b7f42ec364cd0cad1950ecb95a13d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a2be4c476902f25fb058f779e3d4e5b1182d9dc9fbdec518acbe9544c0d3c141\",\"dweb:/ipfs/QmdgZq6JrCD36Xry2vD8QSeGguGQ9TGWY2CMvKrhR9NQ6u\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x22b7a17d53696412f80645f1fa65274ae89040bdc706262e3b6cc577dbafcaa4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b15002346892a48fd7cf9a8a4cf121e17ba133d21e4822e71fbffac85117d6b2\",\"dweb:/ipfs/QmRBPJUcRQ6uKmSvCYhhtVWcKCAWkQFSVZZwZR7HR42kiz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x33a935182f77cfd508fc57ec8e45afc8dc3748e1e9b764d36bf90ae6466f257b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d3981b5bbf435cda04e2ed2f348f886ebf1500c18dd4bbf67b1f1bc0272e2d3f\",\"dweb:/ipfs/QmYHDzQx29ataM2ejRCXFcPxaPdxWqX8v7uwUAYoG9572w\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xffafae142d5337a5c204519e8f82fe3a5fae137286ebf597fa50699cf12c2474\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b577a12f7788095b230fd069b36ba9b3cdb376a0b7c3d8ae71588e5bf0c2f574\",\"dweb:/ipfs/QmXd1cDzYpxecyFEwowLiBKKjzRHgV8cs1qvLwypdEbVYy\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b\",\"dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x3d9eeecf96bd8d6427445db76b9a73f9861c6c3601001226bed2f7fb81e252e6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c836719a65892c5cffdba9de4e009e5f8a4e49aea9c5f46d57b15660c6c2d07d\",\"dweb:/ipfs/QmWuzNq2HdEH1hsRg8Jc95k1DZdNjXFb5ehkz9iLNNSqhT\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xaeee2ac5cfcc3388b63bef2668fa435c65a4b433b52ce9f5013822c6ec875fa3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://86eb6d3da5b45f7509995ffa170eaaadffbdd6d43e50f0902d421bb93a7dfda6\",\"dweb:/ipfs/QmWaYcgtnaVpcekSP7LyY6AGrE3hRE3kZE4H4EKhsSysDG\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x633b5fb10209891f696a9c8db4d7327ed7f560a2e9710489e38a67daeda59a96\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c8381baaec3afa6b200420c093706974776dfd14f6887abe7457eb867351a068\",\"dweb:/ipfs/QmP9H9ttS1sJ6FrvMEefJhU6B4z1wMCjcYYZqVfsLXagJE\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0x1c5895f913e95682b0c371595cb1fa0d9c34ea921a0fbb5c32201b4315e80a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c470e449a3144fbaaa17b44823ba9cba901f063b04355c800bf62cabdd081cd4\",\"dweb:/ipfs/QmSJ8gaAF4WA1aXGmLesnnRo8fDZNEFnqZSGNkJnXLRM9R\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0xcf8422dfa6ccc393de19417570c6239e0fde54de9433ea258cbeb6937ff7f316\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://328e582c05b7311ad4107c46f554f15b5572b89a4ab6d067c73425b7418d946c\",\"dweb:/ipfs/QmdM81GQY5nok5oCTP8Cc6M8s1UC9f6ZbSWybaUxrZNrmY\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"src/StakeRegistry.sol\":{\"keccak256\":\"0xb065491d1a4ab43172487534f297369c2eefe9548d6db0cc41f870566f0d6bff\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://53a87f0a1ff6655ae03cc8859c255d5212ad5284e1a7225cb83092116c188327\",\"dweb:/ipfs/QmeURXtkWV5G89qv6wYbEmwqoubb5YzYPRFQ5qpk1GiuaH\"]},\"src/StakeRegistryStorage.sol\":{\"keccak256\":\"0xd0675a2edd88adf10f0e7f6f17f8274b3f660cf891bdd781defb1f229d0144d1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://8d044348b69a2e71016b196a9011436bfe5c3b48e3942cce4706c0795cab8732\",\"dweb:/ipfs/Qmb1Khrwj57BMmQ71NdMUdXrnTNw9Fnc7k79svkT6HtJ5s\"]},\"src/interfaces/IBLSApkRegistry.sol\":{\"keccak256\":\"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354\",\"dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp\"]},\"src/interfaces/IIndexRegistry.sol\":{\"keccak256\":\"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d\",\"dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F\"]},\"src/interfaces/IRegistry.sol\":{\"keccak256\":\"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25\",\"dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY\"]},\"src/interfaces/IRegistryCoordinator.sol\":{\"keccak256\":\"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d\",\"dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD\"]},\"src/interfaces/IStakeRegistry.sol\":{\"keccak256\":\"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97\",\"dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B\"]},\"src/libraries/BN254.sol\":{\"keccak256\":\"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae\",\"dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki\"]},\"src/libraries/BitmapUtils.sol\":{\"keccak256\":\"0x44315ac460be30a6b18fd4df4d1b8afb46653bf4dc06ca9f93c32353fd0605c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da14f2ead3a375b02afd09d4a02edddf7b63a88945746b96789b2473184fdb04\",\"dweb:/ipfs/QmRqcjxa2Vv2MrLdPeAwsktXdWTirapEDsRbJCyYRtKT6g\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IRegistryCoordinator","name":"_registryCoordinator","type":"address"},{"internalType":"contract IDelegationManager","name":"_delegationManager","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8","indexed":true},{"internalType":"uint96","name":"minimumStake","type":"uint96","indexed":false}],"type":"event","name":"MinimumStakeForQuorumUpdated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"operatorId","type":"bytes32","indexed":true},{"internalType":"uint8","name":"quorumNumber","type":"uint8","indexed":false},{"internalType":"uint96","name":"stake","type":"uint96","indexed":false}],"type":"event","name":"OperatorStakeUpdate","anonymous":false},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8","indexed":true}],"type":"event","name":"QuorumCreated","anonymous":false},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8","indexed":true},{"internalType":"contract IStrategy","name":"strategy","type":"address","indexed":false}],"type":"event","name":"StrategyAddedToQuorum","anonymous":false},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8","indexed":true},{"internalType":"contract IStrategy","name":"strategy","type":"address","indexed":false},{"internalType":"uint256","name":"multiplier","type":"uint256","indexed":false}],"type":"event","name":"StrategyMultiplierUpdated","anonymous":false},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8","indexed":true},{"internalType":"contract IStrategy","name":"strategy","type":"address","indexed":false}],"type":"event","name":"StrategyRemovedFromQuorum","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_WEIGHING_FUNCTION_LENGTH","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"WEIGHTING_DIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"struct IStakeRegistry.StrategyParams[]","name":"_strategyParams","type":"tuple[]","components":[{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint96","name":"multiplier","type":"uint96"}]}],"stateMutability":"nonpayable","type":"function","name":"addStrategies"},{"inputs":[],"stateMutability":"view","type":"function","name":"delegation","outputs":[{"internalType":"contract IDelegationManager","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"operatorId","type":"bytes32"},{"internalType":"bytes","name":"quorumNumbers","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"deregisterOperator"},{"inputs":[{"internalType":"bytes32","name":"operatorId","type":"bytes32"},{"internalType":"uint8","name":"quorumNumber","type":"uint8"}],"stateMutability":"view","type":"function","name":"getCurrentStake","outputs":[{"internalType":"uint96","name":"","type":"uint96"}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"}],"stateMutability":"view","type":"function","name":"getCurrentTotalStake","outputs":[{"internalType":"uint96","name":"","type":"uint96"}]},{"inputs":[{"internalType":"bytes32","name":"operatorId","type":"bytes32"},{"internalType":"uint8","name":"quorumNumber","type":"uint8"}],"stateMutability":"view","type":"function","name":"getLatestStakeUpdate","outputs":[{"internalType":"struct IStakeRegistry.StakeUpdate","name":"","type":"tuple","components":[{"internalType":"uint32","name":"updateBlockNumber","type":"uint32"},{"internalType":"uint32","name":"nextUpdateBlockNumber","type":"uint32"},{"internalType":"uint96","name":"stake","type":"uint96"}]}]},{"inputs":[{"internalType":"bytes32","name":"operatorId","type":"bytes32"},{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"uint32","name":"blockNumber","type":"uint32"}],"stateMutability":"view","type":"function","name":"getStakeAtBlockNumber","outputs":[{"internalType":"uint96","name":"","type":"uint96"}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"uint32","name":"blockNumber","type":"uint32"},{"internalType":"bytes32","name":"operatorId","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"getStakeAtBlockNumberAndIndex","outputs":[{"internalType":"uint96","name":"","type":"uint96"}]},{"inputs":[{"internalType":"bytes32","name":"operatorId","type":"bytes32"},{"internalType":"uint8","name":"quorumNumber","type":"uint8"}],"stateMutability":"view","type":"function","name":"getStakeHistory","outputs":[{"internalType":"struct IStakeRegistry.StakeUpdate[]","name":"","type":"tuple[]","components":[{"internalType":"uint32","name":"updateBlockNumber","type":"uint32"},{"internalType":"uint32","name":"nextUpdateBlockNumber","type":"uint32"},{"internalType":"uint96","name":"stake","type":"uint96"}]}]},{"inputs":[{"internalType":"bytes32","name":"operatorId","type":"bytes32"},{"internalType":"uint8","name":"quorumNumber","type":"uint8"}],"stateMutability":"view","type":"function","name":"getStakeHistoryLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"bytes32","name":"operatorId","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"getStakeUpdateAtIndex","outputs":[{"internalType":"struct IStakeRegistry.StakeUpdate","name":"","type":"tuple","components":[{"internalType":"uint32","name":"updateBlockNumber","type":"uint32"},{"internalType":"uint32","name":"nextUpdateBlockNumber","type":"uint32"},{"internalType":"uint96","name":"stake","type":"uint96"}]}]},{"inputs":[{"internalType":"bytes32","name":"operatorId","type":"bytes32"},{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"uint32","name":"blockNumber","type":"uint32"}],"stateMutability":"view","type":"function","name":"getStakeUpdateIndexAtBlockNumber","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"uint32","name":"blockNumber","type":"uint32"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTotalStakeAtBlockNumberFromIndex","outputs":[{"internalType":"uint96","name":"","type":"uint96"}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"}],"stateMutability":"view","type":"function","name":"getTotalStakeHistoryLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint32","name":"blockNumber","type":"uint32"},{"internalType":"bytes","name":"quorumNumbers","type":"bytes"}],"stateMutability":"view","type":"function","name":"getTotalStakeIndicesAtBlockNumber","outputs":[{"internalType":"uint32[]","name":"","type":"uint32[]"}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTotalStakeUpdateAtIndex","outputs":[{"internalType":"struct IStakeRegistry.StakeUpdate","name":"","type":"tuple","components":[{"internalType":"uint32","name":"updateBlockNumber","type":"uint32"},{"internalType":"uint32","name":"nextUpdateBlockNumber","type":"uint32"},{"internalType":"uint96","name":"stake","type":"uint96"}]}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"uint96","name":"minimumStake","type":"uint96"},{"internalType":"struct IStakeRegistry.StrategyParams[]","name":"_strategyParams","type":"tuple[]","components":[{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint96","name":"multiplier","type":"uint96"}]}],"stateMutability":"nonpayable","type":"function","name":"initializeQuorum"},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function","name":"minimumStakeForQuorum","outputs":[{"internalType":"uint96","name":"","type":"uint96"}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"uint256[]","name":"strategyIndices","type":"uint256[]"},{"internalType":"uint96[]","name":"newMultipliers","type":"uint96[]"}],"stateMutability":"nonpayable","type":"function","name":"modifyStrategyParams"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes32","name":"operatorId","type":"bytes32"},{"internalType":"bytes","name":"quorumNumbers","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator","outputs":[{"internalType":"uint96[]","name":"","type":"uint96[]"},{"internalType":"uint96[]","name":"","type":"uint96[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"registryCoordinator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"uint256[]","name":"indicesToRemove","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"removeStrategies"},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"uint96","name":"minimumStake","type":"uint96"}],"stateMutability":"nonpayable","type":"function","name":"setMinimumStakeForQuorum"},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"strategiesPerQuorum","outputs":[{"internalType":"contract IStrategy","name":"","type":"address"}]},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"strategyParams","outputs":[{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint96","name":"multiplier","type":"uint96"}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"strategyParamsByIndex","outputs":[{"internalType":"struct IStakeRegistry.StrategyParams","name":"","type":"tuple","components":[{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint96","name":"multiplier","type":"uint96"}]}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"}],"stateMutability":"view","type":"function","name":"strategyParamsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes32","name":"operatorId","type":"bytes32"},{"internalType":"bytes","name":"quorumNumbers","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorStake","outputs":[{"internalType":"uint192","name":"","type":"uint192"}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"weightOfOperatorForQuorum","outputs":[{"internalType":"uint96","name":"","type":"uint96"}]}],"devdoc":{"kind":"dev","methods":{"addStrategies(uint8,(address,uint96)[])":{"details":"Checks to make sure that the *same* strategy cannot be added multiple times (checks against both against existing and new strategies).This function has no check to make sure that the strategies for a single quorum have the same underlying asset. This is a concious choice, since a middleware may want, e.g., a stablecoin quorum that accepts USDC, USDT, DAI, etc. as underlying assets and trades them as \"equivalent\"."},"deregisterOperator(bytes32,bytes)":{"details":"access restricted to the RegistryCoordinatorPreconditions (these are assumed, not validated in this contract): 1) `quorumNumbers` has no duplicates 2) `quorumNumbers.length` != 0 3) `quorumNumbers` is ordered in ascending order 4) the operator is not already deregistered 5) `quorumNumbers` is a subset of the quorumNumbers that the operator is registered for","params":{"operatorId":"The id of the operator to deregister.","quorumNumbers":"The quorum numbers the operator is deregistering from, where each byte is an 8 bit integer quorumNumber."}},"getCurrentStake(bytes32,uint8)":{"details":"Function returns weight of **0** in the event that the operator has no stake history"},"getCurrentTotalStake(uint8)":{"details":"Will revert if `_totalStakeHistory[quorumNumber]` is empty."},"getLatestStakeUpdate(bytes32,uint8)":{"details":"Function returns an StakeUpdate struct with **every entry equal to 0** in the event that the operator has no stake history"},"getStakeAtBlockNumberAndIndex(uint8,uint32,bytes32,uint256)":{"details":"Function will revert if `index` is out-of-bounds.","params":{"blockNumber":"Block number to make sure the stake is from.","index":"Array index for lookup, within the dynamic array `operatorStakeHistory[operatorId][quorumNumber]`.","operatorId":"The id of the operator of interest.","quorumNumber":"The quorum number to get the stake for."}},"getStakeHistory(bytes32,uint8)":{"params":{"operatorId":"The id of the operator of interest.","quorumNumber":"The quorum number to get the stake for."}},"getStakeUpdateAtIndex(uint8,bytes32,uint256)":{"details":"Function will revert if `index` is out-of-bounds.","params":{"index":"Array index for lookup, within the dynamic array `operatorStakeHistory[operatorId][quorumNumber]`.","operatorId":"The id of the operator of interest.","quorumNumber":"The quorum number to get the stake for."}},"getTotalStakeAtBlockNumberFromIndex(uint8,uint32,uint256)":{"details":"Function will revert if `index` is out-of-bounds.","params":{"blockNumber":"Block number to make sure the stake is from.","index":"Array index for lookup, within the dynamic array `_totalStakeHistory[quorumNumber]`.","quorumNumber":"The quorum number to get the stake for."}},"getTotalStakeIndicesAtBlockNumber(uint32,bytes)":{"details":"Function will revert if there are no indices for the given `blockNumber`","params":{"blockNumber":"Block number to retrieve the stake indices from.","quorumNumbers":"The quorum numbers to get the stake indices for."}},"getTotalStakeUpdateAtIndex(uint8,uint256)":{"params":{"index":"Array index for lookup, within the dynamic array `_totalStakeHistory[quorumNumber]`.","quorumNumber":"The quorum number to get the stake for."}},"modifyStrategyParams(uint8,uint256[],uint96[])":{"params":{"newMultipliers":"are the new multipliers for the strategies","quorumNumber":"is the quorum number to which the strategies belong","strategyIndices":"are the indices of the strategies to change"}},"registerOperator(address,bytes32,bytes)":{"details":"access restricted to the RegistryCoordinatorPreconditions (these are assumed, not validated in this contract): 1) `quorumNumbers` has no duplicates 2) `quorumNumbers.length` != 0 3) `quorumNumbers` is ordered in ascending order 4) the operator is not already registered","params":{"operator":"The address of the operator to register.","operatorId":"The id of the operator to register.","quorumNumbers":"The quorum numbers the operator is registering for, where each byte is an 8 bit integer quorumNumber."},"returns":{"_0":"The operator's current stake for each quorum, and the total stake for each quorum"}},"removeStrategies(uint8,uint256[])":{"details":"higher indices should be *first* in the list of @param indicesToRemove, since otherwise the removal of lower index entries will cause a shift in the indices of the other strategies to remove"},"updateOperatorStake(address,bytes32,bytes)":{"returns":{"_0":"A bitmap of quorums where the operator no longer meets the minimum stake and should be deregistered."}},"weightOfOperatorForQuorum(uint8,address)":{"details":"reverts if the quorum does not exist"}},"version":1},"userdoc":{"kind":"user","methods":{"MAX_WEIGHING_FUNCTION_LENGTH()":{"notice":"Maximum length of dynamic arrays in the `strategyParams` mapping."},"WEIGHTING_DIVISOR()":{"notice":"Constant used as a divisor in calculating weights."},"addStrategies(uint8,(address,uint96)[])":{"notice":"Adds strategies and weights to the quorum"},"delegation()":{"notice":"The address of the Delegation contract for EigenLayer."},"deregisterOperator(bytes32,bytes)":{"notice":"Deregisters the operator with `operatorId` for the specified `quorumNumbers`."},"getCurrentStake(bytes32,uint8)":{"notice":"Returns the most recent stake weight for the `operatorId` for quorum `quorumNumber`"},"getCurrentTotalStake(uint8)":{"notice":"Returns the stake weight from the latest entry in `_totalStakeHistory` for quorum `quorumNumber`."},"getLatestStakeUpdate(bytes32,uint8)":{"notice":"Returns the most recent stake weight for the `operatorId` for a certain quorum"},"getStakeAtBlockNumber(bytes32,uint8,uint32)":{"notice":"Returns the stake of the operator for the provided `quorumNumber` at the given `blockNumber`"},"getStakeAtBlockNumberAndIndex(uint8,uint32,bytes32,uint256)":{"notice":"Returns the stake weight corresponding to `operatorId` for quorum `quorumNumber`, at the `index`-th entry in the `operatorStakeHistory[operatorId][quorumNumber]` array if it was the operator's stake at `blockNumber`. Reverts otherwise."},"getStakeHistory(bytes32,uint8)":{"notice":"Returns the entire `operatorStakeHistory[operatorId][quorumNumber]` array."},"getStakeHistoryLength(bytes32,uint8)":{"notice":"Returns the length of an operator's stake history for the given quorum"},"getStakeUpdateAtIndex(uint8,bytes32,uint256)":{"notice":"Returns the `index`-th entry in the `operatorStakeHistory[operatorId][quorumNumber]` array."},"getStakeUpdateIndexAtBlockNumber(bytes32,uint8,uint32)":{"notice":"Returns the indices of the operator stakes for the provided `quorumNumber` at the given `blockNumber`"},"getTotalStakeAtBlockNumberFromIndex(uint8,uint32,uint256)":{"notice":"Returns the total stake weight for quorum `quorumNumber`, at the `index`-th entry in the `_totalStakeHistory[quorumNumber]` array if it was the stake at `blockNumber`. Reverts otherwise."},"getTotalStakeHistoryLength(uint8)":{"notice":"Returns the length of the total stake history for the given quorum"},"getTotalStakeIndicesAtBlockNumber(uint32,bytes)":{"notice":"Returns the indices of the total stakes for the provided `quorumNumbers` at the given `blockNumber`"},"getTotalStakeUpdateAtIndex(uint8,uint256)":{"notice":"Returns the `index`-th entry in the dynamic array of total stake, `_totalStakeHistory` for quorum `quorumNumber`."},"initializeQuorum(uint8,uint96,(address,uint96)[])":{"notice":"Initialize a new quorum and push its first history update"},"minimumStakeForQuorum(uint8)":{"notice":"In order to register for a quorum i, an operator must have at least `minimumStakeForQuorum[i]` evaluated by this contract's 'VoteWeigher' logic."},"modifyStrategyParams(uint8,uint256[],uint96[])":{"notice":"Modifies the weights of existing strategies for a specific quorum"},"registerOperator(address,bytes32,bytes)":{"notice":"Registers the `operator` with `operatorId` for the specified `quorumNumbers`."},"registryCoordinator()":{"notice":"the coordinator contract that this registry is associated with"},"removeStrategies(uint8,uint256[])":{"notice":"Remove strategies and their associated weights from the quorum's considered strategies"},"strategyParams(uint8,uint256)":{"notice":"mapping from quorum number to the list of strategies considered and their corresponding multipliers for that specific quorum"},"strategyParamsByIndex(uint8,uint256)":{"notice":"Returns the strategy and weight multiplier for the `index`'th strategy in the quorum `quorumNumber`"},"strategyParamsLength(uint8)":{"notice":"Returns the length of the dynamic array stored in `strategyParams[quorumNumber]`."},"updateOperatorStake(address,bytes32,bytes)":{"notice":"Called by the registry coordinator to update an operator's stake for one or more quorums. If the operator no longer has the minimum stake required for a quorum, they are added to the `quorumsToRemove`, which is returned to the registry coordinator"},"weightOfOperatorForQuorum(uint8,address)":{"notice":"This function computes the total weight of the @param operator in the quorum @param quorumNumber."}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable/","@openzeppelin/=lib/openzeppelin-contracts/","ds-test/=lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/StakeRegistry.sol":"StakeRegistry"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x9906828f285cc76bbbe077f908d87c4bffd0a3bff9394f7a4b60a9d9a2672c1e","urls":["bzz-raw://4c0f43e14e50ac322685b5cd301459118e2770bdfb053f8f3ded08ee9fbf5bf9","dweb:/ipfs/QmPQtY6KEUCbrKwweu8BvA7YjnXXxkkuZPyLSRGV5EoPTe"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0x1f8e17b0f952042132ca64e202022d83783b7f42ec364cd0cad1950ecb95a13d","urls":["bzz-raw://a2be4c476902f25fb058f779e3d4e5b1182d9dc9fbdec518acbe9544c0d3c141","dweb:/ipfs/QmdgZq6JrCD36Xry2vD8QSeGguGQ9TGWY2CMvKrhR9NQ6u"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0x22b7a17d53696412f80645f1fa65274ae89040bdc706262e3b6cc577dbafcaa4","urls":["bzz-raw://b15002346892a48fd7cf9a8a4cf121e17ba133d21e4822e71fbffac85117d6b2","dweb:/ipfs/QmRBPJUcRQ6uKmSvCYhhtVWcKCAWkQFSVZZwZR7HR42kiz"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x33a935182f77cfd508fc57ec8e45afc8dc3748e1e9b764d36bf90ae6466f257b","urls":["bzz-raw://d3981b5bbf435cda04e2ed2f348f886ebf1500c18dd4bbf67b1f1bc0272e2d3f","dweb:/ipfs/QmYHDzQx29ataM2ejRCXFcPxaPdxWqX8v7uwUAYoG9572w"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0xffafae142d5337a5c204519e8f82fe3a5fae137286ebf597fa50699cf12c2474","urls":["bzz-raw://b577a12f7788095b230fd069b36ba9b3cdb376a0b7c3d8ae71588e5bf0c2f574","dweb:/ipfs/QmXd1cDzYpxecyFEwowLiBKKjzRHgV8cs1qvLwypdEbVYy"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4","urls":["bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b","dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x3d9eeecf96bd8d6427445db76b9a73f9861c6c3601001226bed2f7fb81e252e6","urls":["bzz-raw://c836719a65892c5cffdba9de4e009e5f8a4e49aea9c5f46d57b15660c6c2d07d","dweb:/ipfs/QmWuzNq2HdEH1hsRg8Jc95k1DZdNjXFb5ehkz9iLNNSqhT"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xaeee2ac5cfcc3388b63bef2668fa435c65a4b433b52ce9f5013822c6ec875fa3","urls":["bzz-raw://86eb6d3da5b45f7509995ffa170eaaadffbdd6d43e50f0902d421bb93a7dfda6","dweb:/ipfs/QmWaYcgtnaVpcekSP7LyY6AGrE3hRE3kZE4H4EKhsSysDG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x633b5fb10209891f696a9c8db4d7327ed7f560a2e9710489e38a67daeda59a96","urls":["bzz-raw://c8381baaec3afa6b200420c093706974776dfd14f6887abe7457eb867351a068","dweb:/ipfs/QmP9H9ttS1sJ6FrvMEefJhU6B4z1wMCjcYYZqVfsLXagJE"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0x1c5895f913e95682b0c371595cb1fa0d9c34ea921a0fbb5c32201b4315e80a56","urls":["bzz-raw://c470e449a3144fbaaa17b44823ba9cba901f063b04355c800bf62cabdd081cd4","dweb:/ipfs/QmSJ8gaAF4WA1aXGmLesnnRo8fDZNEFnqZSGNkJnXLRM9R"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0xcf8422dfa6ccc393de19417570c6239e0fde54de9433ea258cbeb6937ff7f316","urls":["bzz-raw://328e582c05b7311ad4107c46f554f15b5572b89a4ab6d067c73425b7418d946c","dweb:/ipfs/QmdM81GQY5nok5oCTP8Cc6M8s1UC9f6ZbSWybaUxrZNrmY"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"src/StakeRegistry.sol":{"keccak256":"0xb065491d1a4ab43172487534f297369c2eefe9548d6db0cc41f870566f0d6bff","urls":["bzz-raw://53a87f0a1ff6655ae03cc8859c255d5212ad5284e1a7225cb83092116c188327","dweb:/ipfs/QmeURXtkWV5G89qv6wYbEmwqoubb5YzYPRFQ5qpk1GiuaH"],"license":"BUSL-1.1"},"src/StakeRegistryStorage.sol":{"keccak256":"0xd0675a2edd88adf10f0e7f6f17f8274b3f660cf891bdd781defb1f229d0144d1","urls":["bzz-raw://8d044348b69a2e71016b196a9011436bfe5c3b48e3942cce4706c0795cab8732","dweb:/ipfs/Qmb1Khrwj57BMmQ71NdMUdXrnTNw9Fnc7k79svkT6HtJ5s"],"license":"BUSL-1.1"},"src/interfaces/IBLSApkRegistry.sol":{"keccak256":"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5","urls":["bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354","dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp"],"license":"BUSL-1.1"},"src/interfaces/IIndexRegistry.sol":{"keccak256":"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b","urls":["bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d","dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F"],"license":"BUSL-1.1"},"src/interfaces/IRegistry.sol":{"keccak256":"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3","urls":["bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25","dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY"],"license":"BUSL-1.1"},"src/interfaces/IRegistryCoordinator.sol":{"keccak256":"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385","urls":["bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d","dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD"],"license":"BUSL-1.1"},"src/interfaces/IStakeRegistry.sol":{"keccak256":"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4","urls":["bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97","dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B"],"license":"BUSL-1.1"},"src/libraries/BN254.sol":{"keccak256":"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3","urls":["bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae","dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki"],"license":"MIT"},"src/libraries/BitmapUtils.sol":{"keccak256":"0x44315ac460be30a6b18fd4df4d1b8afb46653bf4dc06ca9f93c32353fd0605c5","urls":["bzz-raw://da14f2ead3a375b02afd09d4a02edddf7b63a88945746b96789b2473184fdb04","dweb:/ipfs/QmRqcjxa2Vv2MrLdPeAwsktXdWTirapEDsRbJCyYRtKT6g"],"license":"MIT"}},"version":1},"id":105} \ No newline at end of file diff --git a/crates/utils/json/StrategyManager.json b/crates/utils/json/StrategyManager.json deleted file mode 100644 index 98c71b3f..00000000 --- a/crates/utils/json/StrategyManager.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_delegation","type":"address","internalType":"contract IDelegationManager"},{"name":"_eigenPodManager","type":"address","internalType":"contract IEigenPodManager"},{"name":"_slasher","type":"address","internalType":"contract ISlasher"}],"stateMutability":"nonpayable"},{"type":"function","name":"DEPOSIT_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DOMAIN_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"addShares","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addStrategiesToDepositWhitelist","inputs":[{"name":"strategiesToWhitelist","type":"address[]","internalType":"contract IStrategy[]"},{"name":"thirdPartyTransfersForbiddenValues","type":"bool[]","internalType":"bool[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"calculateWithdrawalRoot","inputs":[{"name":"queuedWithdrawal","type":"tuple","internalType":"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal","components":[{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"},{"name":"staker","type":"address","internalType":"address"},{"name":"withdrawerAndNonce","type":"tuple","internalType":"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce","components":[{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint96","internalType":"uint96"}]},{"name":"withdrawalStartBlock","type":"uint32","internalType":"uint32"},{"name":"delegatedAddress","type":"address","internalType":"address"}]}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"delegation","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IDelegationManager"}],"stateMutability":"view"},{"type":"function","name":"depositIntoStrategy","inputs":[{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"depositIntoStrategyWithSignature","inputs":[{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"staker","type":"address","internalType":"address"},{"name":"expiry","type":"uint256","internalType":"uint256"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"domainSeparator","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"eigenPodManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IEigenPodManager"}],"stateMutability":"view"},{"type":"function","name":"getDeposits","inputs":[{"name":"staker","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"contract IStrategy[]"},{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"initialOwner","type":"address","internalType":"address"},{"name":"initialStrategyWhitelister","type":"address","internalType":"address"},{"name":"_pauserRegistry","type":"address","internalType":"contract IPauserRegistry"},{"name":"initialPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"migrateQueuedWithdrawal","inputs":[{"name":"queuedWithdrawal","type":"tuple","internalType":"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal","components":[{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"},{"name":"staker","type":"address","internalType":"address"},{"name":"withdrawerAndNonce","type":"tuple","internalType":"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce","components":[{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint96","internalType":"uint96"}]},{"name":"withdrawalStartBlock","type":"uint32","internalType":"uint32"},{"name":"delegatedAddress","type":"address","internalType":"address"}]}],"outputs":[{"name":"","type":"bool","internalType":"bool"},{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"nonces","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[{"name":"newPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pauseAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[{"name":"index","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pauserRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPauserRegistry"}],"stateMutability":"view"},{"type":"function","name":"removeShares","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeStrategiesFromDepositWhitelist","inputs":[{"name":"strategiesToRemoveFromWhitelist","type":"address[]","internalType":"contract IStrategy[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPauserRegistry","inputs":[{"name":"newPauserRegistry","type":"address","internalType":"contract IPauserRegistry"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStrategyWhitelister","inputs":[{"name":"newStrategyWhitelister","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setThirdPartyTransfersForbidden","inputs":[{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slasher","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ISlasher"}],"stateMutability":"view"},{"type":"function","name":"stakerStrategyList","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"contract IStrategy"}],"stateMutability":"view"},{"type":"function","name":"stakerStrategyListLength","inputs":[{"name":"staker","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakerStrategyShares","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"contract IStrategy"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"strategyIsWhitelistedForDeposit","inputs":[{"name":"","type":"address","internalType":"contract IStrategy"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"strategyWhitelister","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"thirdPartyTransfersForbidden","inputs":[{"name":"","type":"address","internalType":"contract IStrategy"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","inputs":[{"name":"newPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawSharesAsTokens","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"token","type":"address","internalType":"contract IERC20"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawalRootPending","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"Deposit","inputs":[{"name":"staker","type":"address","indexed":false,"internalType":"address"},{"name":"token","type":"address","indexed":false,"internalType":"contract IERC20"},{"name":"strategy","type":"address","indexed":false,"internalType":"contract IStrategy"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PauserRegistrySet","inputs":[{"name":"pauserRegistry","type":"address","indexed":false,"internalType":"contract IPauserRegistry"},{"name":"newPauserRegistry","type":"address","indexed":false,"internalType":"contract IPauserRegistry"}],"anonymous":false},{"type":"event","name":"StrategyAddedToDepositWhitelist","inputs":[{"name":"strategy","type":"address","indexed":false,"internalType":"contract IStrategy"}],"anonymous":false},{"type":"event","name":"StrategyRemovedFromDepositWhitelist","inputs":[{"name":"strategy","type":"address","indexed":false,"internalType":"contract IStrategy"}],"anonymous":false},{"type":"event","name":"StrategyWhitelisterChanged","inputs":[{"name":"previousAddress","type":"address","indexed":false,"internalType":"address"},{"name":"newAddress","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"UpdatedThirdPartyTransfersForbidden","inputs":[{"name":"strategy","type":"address","indexed":false,"internalType":"contract IStrategy"},{"name":"value","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false}],"bytecode":{"object":"0x6101006040523480156200001257600080fd5b506040516200382938038062003829833981016040819052620000359162000140565b6001600160a01b0380841660805280831660a052811660c0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e051613638620001f1600039600061161d0152600061048f015260006102a601526000818161059b01528181610c0501528181610f9f01528181610ff3015281816110f70152611bd301526136386000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c806394f649dd11610130578063c6656702116100b8578063df5cf7231161007c578063df5cf72314610596578063e7a050aa146105bd578063f2fde38b146105d0578063f698da25146105e3578063fabc1cbc146105eb57600080fd5b8063c665670214610520578063cbc2bd6214610533578063cd293f6f14610546578063cf756fdf14610570578063df5b35471461058357600080fd5b8063b43b514b116100ff578063b43b514b146104b1578063b5d8b5b8146104c4578063c3c6b3a9146104d7578063c4623ea1146104fa578063c608c7f31461050d57600080fd5b806394f649dd14610433578063967fc0d2146104545780639b4da03d14610467578063b13442711461048a57600080fd5b80635c975abb116101b35780637ecebe00116101825780637ecebe00146103b3578063886f1195146103d35780638b8aac3c146103e65780638c80d4e51461040f5780638da5cb5b1461042257600080fd5b80635c975abb14610355578063663c1de41461035d578063715018a6146103805780637a7e0d921461038857600080fd5b80634665bcda116101fa5780634665bcda146102a157806348825e94146102e05780634e5a426314610307578063595c6a671461031a5780635ac86ab71461032257600080fd5b806310d67a2f1461022c578063136439dd1461024157806320606b701461025457806332e89ace1461028e575b600080fd5b61023f61023a366004612b4a565b6105fe565b005b61023f61024f366004612b67565b6106ba565b61027b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61027b61029c366004612c00565b6107f9565b6102c87f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610285565b61027b7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61023f610315366004612ced565b610ae7565b61023f610b1f565b610345610330366004612d26565b609854600160ff9092169190911b9081161490565b6040519015158152602001610285565b60985461027b565b61034561036b366004612b4a565b60d16020526000908152604090205460ff1681565b61023f610be6565b61027b610396366004612d49565b60cd60209081526000928352604080842090915290825290205481565b61027b6103c1366004612b4a565b60ca6020526000908152604090205481565b6097546102c8906001600160a01b031681565b61027b6103f4366004612b4a565b6001600160a01b0316600090815260ce602052604090205490565b61023f61041d366004612d77565b610bfa565b6033546001600160a01b03166102c8565b610446610441366004612b4a565b610c53565b604051610285929190612e2c565b60cb546102c8906001600160a01b031681565b610345610475366004612b4a565b60d36020526000908152604090205460ff1681565b6102c87f000000000000000000000000000000000000000000000000000000000000000081565b61027b6104bf366004612fd5565b610dd3565b61023f6104d23660046130f0565b610e20565b6103456104e5366004612b67565b60cf6020526000908152604090205460ff1681565b61023f610508366004613132565b610f94565b61023f61051b366004613183565b610fe8565b61023f61052e366004612b4a565b6110a0565b6102c86105413660046131d6565b6110b1565b610559610554366004612fd5565b6110e9565b604080519215158352602083019190915201610285565b61023f61057e366004613132565b61117d565b61023f610591366004613202565b6112b1565b6102c87f000000000000000000000000000000000000000000000000000000000000000081565b61027b6105cb366004612d77565b6114da565b61023f6105de366004612b4a565b6115a3565b61027b611619565b61023f6105f9366004612b67565b611657565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610651573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610675919061326e565b6001600160a01b0316336001600160a01b0316146106ae5760405162461bcd60e51b81526004016106a59061328b565b60405180910390fd5b6106b7816117b3565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610702573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072691906132d5565b6107425760405162461bcd60e51b81526004016106a5906132f2565b609854818116146107bb5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016106a5565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6098546000908190600190811614156108505760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016106a5565b600260655414156108a35760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106a5565b60026065556001600160a01b038816600090815260d3602052604090205460ff161561094a5760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a4016106a5565b428410156109cc5760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a4016106a5565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a84611619565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610ac78882886118aa565b610ad3888c8c8c611a69565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610b115760405162461bcd60e51b81526004016106a59061333a565b610b1b8282611c38565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8b91906132d5565b610ba75760405162461bcd60e51b81526004016106a5906132f2565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610bee611ca6565b610bf86000611d00565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c425760405162461bcd60e51b81526004016106a5906133a4565b610c4d838383611d52565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c8b57610c8b612b90565b604051908082528060200260200182016040528015610cb4578160200160208202803683370190505b50905060005b82811015610d45576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610cf957610cf9613402565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610d3257610d32613402565b6020908102919091010152600101610cba565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610dc157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610da3575b50505050509150935093505050915091565b80516020808301516040808501516060860151608087015160a08801519351600097610e03979096959101613418565b604051602081830303815290604052805190602001209050919050565b60cb546001600160a01b03163314610e4a5760405162461bcd60e51b81526004016106a59061333a565b8060005b81811015610c4d5760d16000858584818110610e6c57610e6c613402565b9050602002016020810190610e819190612b4a565b6001600160a01b0316815260208101919091526040016000205460ff1615610f8c57600060d16000868685818110610ebb57610ebb613402565b9050602002016020810190610ed09190612b4a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610f2b57610f2b613402565b9050602002016020810190610f409190612b4a565b6040516001600160a01b03909116815260200160405180910390a1610f8c848483818110610f7057610f70613402565b9050602002016020810190610f859190612b4a565b6000611c38565b600101610e4e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fdc5760405162461bcd60e51b81526004016106a5906133a4565b610c4d84848484611eae565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110305760405162461bcd60e51b81526004016106a5906133a4565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b15801561108257600080fd5b505af1158015611096573d6000803e3d6000fd5b5050505050505050565b6110a8611ca6565b6106b78161213b565b60ce60205281600052604060002081815481106110cd57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111345760405162461bcd60e51b81526004016106a5906133a4565b600061113f84610dd3565b600081815260cf60205260408120549192509060ff16156111745750600081815260cf60205260409020805460ff1916905560015b92509050915091565b600054610100900460ff161580801561119d5750600054600160ff909116105b806111b75750303b1580156111b7575060005460ff166001145b61121a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a5565b6000805460ff19166001179055801561123d576000805461ff0019166101001790555b6112456121a4565b60c955611252838361223b565b61125b85611d00565b6112648461213b565b80156112aa576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146112db5760405162461bcd60e51b81526004016106a59061333a565b8281146113645760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a4016106a5565b8260005b818110156114d25760d1600087878481811061138657611386613402565b905060200201602081019061139b9190612b4a565b6001600160a01b0316815260208101919091526040016000205460ff166114ca57600160d160008888858181106113d4576113d4613402565b90506020020160208101906113e99190612b4a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe86868381811061144457611444613402565b90506020020160208101906114599190612b4a565b6040516001600160a01b03909116815260200160405180910390a16114ca86868381811061148957611489613402565b905060200201602081019061149e9190612b4a565b8585848181106114b0576114b0613402565b90506020020160208101906114c59190613491565b611c38565b600101611368565b505050505050565b6098546000908190600190811614156115315760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016106a5565b600260655414156115845760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106a5565b600260655561159533868686611a69565b600160655595945050505050565b6115ab611ca6565b6001600160a01b0381166116105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106a5565b6106b781611d00565b60007f000000000000000000000000000000000000000000000000000000000000000046141561164a575060c95490565b6116526121a4565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ce919061326e565b6001600160a01b0316336001600160a01b0316146116fe5760405162461bcd60e51b81526004016106a59061328b565b60985419811960985419161461177c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016106a5565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016107ee565b6001600160a01b0381166118415760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016106a5565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b156119c957604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906118ea9086908690600401613506565b602060405180830381865afa158015611907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192b919061351f565b6001600160e01b031916146119c45760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a4016106a5565b505050565b826001600160a01b03166119dd8383612321565b6001600160a01b0316146119c45760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a4016106a5565b6001600160a01b038316600090815260d16020526040812054849060ff16611b0f5760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a4016106a5565b611b246001600160a01b038516338786612345565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611b73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b979190613549565b9150611ba586858785611eae565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611c1757600080fd5b505af1158015611c2b573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610bf85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a5565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081611dc75760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f21000060648201526084016106a5565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611e595760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b60648201526084016106a5565b6001600160a01b03808616600090815260cd602090815260408083209388168352929052208382039081905590831415611ea157611e97858561239f565b6001915050611ea7565b60009150505b9392505050565b6001600160a01b038416611f2a5760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f20616464726573730000000000000060648201526084016106a5565b80611f965760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b60648201526084016106a5565b6001600160a01b03808516600090815260cd60209081526040808320938616835292905220546120a7576001600160a01b038416600090815260ce6020908152604090912054106120685760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a4016106a5565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd60209081526040808320938616835292905290812080548392906120de908490613578565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b031615801561225c57506001600160a01b03821615155b6122de5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016106a5565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610b1b826117b3565b60008060006123308585612591565b9150915061233d81612601565b509392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610c4d9085906127bc565b6001600160a01b038216600090815260ce6020526040812054905b818110156124ba576001600160a01b03848116600090815260ce60205260409020805491851691839081106123f1576123f1613402565b6000918252602090912001546001600160a01b031614156124b2576001600160a01b038416600090815260ce60205260409020805461243290600190613590565b8154811061244257612442613402565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061247f5761247f613402565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506124ba565b6001016123ba565b818114156125425760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a4016106a5565b6001600160a01b038416600090815260ce60205260409020805480612569576125696135a7565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604114156125c85760208301516040840151606085015160001a6125bc8782858561288e565b945094505050506125fa565b8251604014156125f257602083015160408401516125e786838361297b565b9350935050506125fa565b506000905060025b9250929050565b6000816004811115612615576126156135bd565b141561261e5750565b6001816004811115612632576126326135bd565b14156126805760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106a5565b6002816004811115612694576126946135bd565b14156126e25760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106a5565b60038160048111156126f6576126f66135bd565b141561274f5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106a5565b6004816004811115612763576127636135bd565b14156106b75760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016106a5565b6000612811826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166129b49092919063ffffffff16565b8051909150156119c4578080602001905181019061282f91906132d5565b6119c45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a5565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156128c55750600090506003612972565b8460ff16601b141580156128dd57508460ff16601c14155b156128ee5750600090506004612972565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612942573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661296b57600060019250925050612972565b9150600090505b94509492505050565b6000806001600160ff1b0383168161299860ff86901c601b613578565b90506129a68782888561288e565b935093505050935093915050565b60606129c384846000856129cb565b949350505050565b606082471015612a2c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a5565b6001600160a01b0385163b612a835760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a5565b600080866001600160a01b03168587604051612a9f91906135d3565b60006040518083038185875af1925050503d8060008114612adc576040519150601f19603f3d011682016040523d82523d6000602084013e612ae1565b606091505b5091509150612af1828286612afc565b979650505050505050565b60608315612b0b575081611ea7565b825115612b1b5782518084602001fd5b8160405162461bcd60e51b81526004016106a591906135ef565b6001600160a01b03811681146106b757600080fd5b600060208284031215612b5c57600080fd5b8135611ea781612b35565b600060208284031215612b7957600080fd5b5035919050565b8035612b8b81612b35565b919050565b634e487b7160e01b600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715612bc957612bc9612b90565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612bf857612bf8612b90565b604052919050565b60008060008060008060c08789031215612c1957600080fd5b8635612c2481612b35565b9550602087810135612c3581612b35565b9550604088013594506060880135612c4c81612b35565b93506080880135925060a088013567ffffffffffffffff80821115612c7057600080fd5b818a0191508a601f830112612c8457600080fd5b813581811115612c9657612c96612b90565b612ca8601f8201601f19168501612bcf565b91508082528b84828501011115612cbe57600080fd5b80848401858401376000848284010152508093505050509295509295509295565b80151581146106b757600080fd5b60008060408385031215612d0057600080fd5b8235612d0b81612b35565b91506020830135612d1b81612cdf565b809150509250929050565b600060208284031215612d3857600080fd5b813560ff81168114611ea757600080fd5b60008060408385031215612d5c57600080fd5b8235612d6781612b35565b91506020830135612d1b81612b35565b600080600060608486031215612d8c57600080fd5b8335612d9781612b35565b92506020840135612da781612b35565b929592945050506040919091013590565b600081518084526020808501945080840160005b83811015612df15781516001600160a01b031687529582019590820190600101612dcc565b509495945050505050565b600081518084526020808501945080840160005b83811015612df157815187529582019590820190600101612e10565b604081526000612e3f6040830185612db8565b8281036020840152612e518185612dfc565b95945050505050565b600067ffffffffffffffff821115612e7457612e74612b90565b5060051b60200190565b600082601f830112612e8f57600080fd5b81356020612ea4612e9f83612e5a565b612bcf565b82815260059290921b84018101918181019086841115612ec357600080fd5b8286015b84811015612ee7578035612eda81612b35565b8352918301918301612ec7565b509695505050505050565b600082601f830112612f0357600080fd5b81356020612f13612e9f83612e5a565b82815260059290921b84018101918181019086841115612f3257600080fd5b8286015b84811015612ee75780358352918301918301612f36565b600060408284031215612f5f57600080fd5b6040516040810181811067ffffffffffffffff82111715612f8257612f82612b90565b6040529050808235612f9381612b35565b815260208301356bffffffffffffffffffffffff81168114612fb457600080fd5b6020919091015292915050565b803563ffffffff81168114612b8b57600080fd5b600060208284031215612fe757600080fd5b813567ffffffffffffffff80821115612fff57600080fd5b9083019060e0828603121561301357600080fd5b61301b612ba6565b82358281111561302a57600080fd5b61303687828601612e7e565b82525060208301358281111561304b57600080fd5b61305787828601612ef2565b60208301525061306960408401612b80565b604082015261307b8660608501612f4d565b606082015261308c60a08401612fc1565b608082015261309d60c08401612b80565b60a082015295945050505050565b60008083601f8401126130bd57600080fd5b50813567ffffffffffffffff8111156130d557600080fd5b6020830191508360208260051b85010111156125fa57600080fd5b6000806020838503121561310357600080fd5b823567ffffffffffffffff81111561311a57600080fd5b613126858286016130ab565b90969095509350505050565b6000806000806080858703121561314857600080fd5b843561315381612b35565b9350602085013561316381612b35565b9250604085013561317381612b35565b9396929550929360600135925050565b6000806000806080858703121561319957600080fd5b84356131a481612b35565b935060208501356131b481612b35565b92506040850135915060608501356131cb81612b35565b939692955090935050565b600080604083850312156131e957600080fd5b82356131f481612b35565b946020939093013593505050565b6000806000806040858703121561321857600080fd5b843567ffffffffffffffff8082111561323057600080fd5b61323c888389016130ab565b9096509450602087013591508082111561325557600080fd5b50613262878288016130ab565b95989497509550505050565b60006020828403121561328057600080fd5b8151611ea781612b35565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156132e757600080fd5b8151611ea781612cdf565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60e08152600061342b60e0830189612db8565b828103602084015261343d8189612dfc565b6001600160a01b0397881660408501528651881660608501526020909601516bffffffffffffffffffffffff166080840152505063ffffffff9290921660a083015290921660c09092019190915292915050565b6000602082840312156134a357600080fd5b8135611ea781612cdf565b60005b838110156134c95781810151838201526020016134b1565b83811115610c4d5750506000910152565b600081518084526134f28160208601602086016134ae565b601f01601f19169290920160200192915050565b8281526040602082015260006129c360408301846134da565b60006020828403121561353157600080fd5b81516001600160e01b031981168114611ea757600080fd5b60006020828403121561355b57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561358b5761358b613562565b500190565b6000828210156135a2576135a2613562565b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600082516135e58184602087016134ae565b9190910192915050565b602081526000611ea760208301846134da56fea2646970667358221220e3058c7f85bbc0d134ce18d5c7ff3becd81c71816d2b61dacc064944af4f1cd664736f6c634300080c0033","sourceMap":"969:22080:6:-:0;;;2265:256;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4357:24:7;;;;;4391:34;;;;;4435:18;;;;2449:22:6::1;:20;:22::i;:::-;-1:-1:-1::0;;2501:13:6::1;2481:33;::::0;-1:-1:-1;969:22080:6;;5388:279:59;5456:13;;;;;;;5455:14;5447:66;;;;-1:-1:-1;;;5447:66:59;;1025:2:178;5447:66:59;;;1007:21:178;1064:2;1044:18;;;1037:30;1103:34;1083:18;;;1076:62;-1:-1:-1;;;1154:18:178;;;1147:37;1201:19;;5447:66:59;;;;;;;;5527:12;;5542:15;5527:12;;;:30;5523:138;;;5573:12;:30;;-1:-1:-1;;5573:30:59;5588:15;5573:30;;;;;;5622:28;;1373:36:178;;;5622:28:59;;1361:2:178;1346:18;5622:28:59;;;;;;;5523:138;5388:279::o;14:151:178:-;-1:-1:-1;;;;;109:31:178;;99:42;;89:70;;155:1;152;145:12;89:70;14:151;:::o;170:648::-;327:6;335;343;396:2;384:9;375:7;371:23;367:32;364:52;;;412:1;409;402:12;364:52;444:9;438:16;463:51;508:5;463:51;:::i;:::-;583:2;568:18;;562:25;533:5;;-1:-1:-1;596:53:178;562:25;596:53;:::i;:::-;720:2;705:18;;699:25;668:7;;-1:-1:-1;733:53:178;699:25;733:53;:::i;:::-;805:7;795:17;;;170:648;;;;;:::o;1231:184::-;969:22080:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106102275760003560e01c806394f649dd11610130578063c6656702116100b8578063df5cf7231161007c578063df5cf72314610596578063e7a050aa146105bd578063f2fde38b146105d0578063f698da25146105e3578063fabc1cbc146105eb57600080fd5b8063c665670214610520578063cbc2bd6214610533578063cd293f6f14610546578063cf756fdf14610570578063df5b35471461058357600080fd5b8063b43b514b116100ff578063b43b514b146104b1578063b5d8b5b8146104c4578063c3c6b3a9146104d7578063c4623ea1146104fa578063c608c7f31461050d57600080fd5b806394f649dd14610433578063967fc0d2146104545780639b4da03d14610467578063b13442711461048a57600080fd5b80635c975abb116101b35780637ecebe00116101825780637ecebe00146103b3578063886f1195146103d35780638b8aac3c146103e65780638c80d4e51461040f5780638da5cb5b1461042257600080fd5b80635c975abb14610355578063663c1de41461035d578063715018a6146103805780637a7e0d921461038857600080fd5b80634665bcda116101fa5780634665bcda146102a157806348825e94146102e05780634e5a426314610307578063595c6a671461031a5780635ac86ab71461032257600080fd5b806310d67a2f1461022c578063136439dd1461024157806320606b701461025457806332e89ace1461028e575b600080fd5b61023f61023a366004612b4a565b6105fe565b005b61023f61024f366004612b67565b6106ba565b61027b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61027b61029c366004612c00565b6107f9565b6102c87f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610285565b61027b7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61023f610315366004612ced565b610ae7565b61023f610b1f565b610345610330366004612d26565b609854600160ff9092169190911b9081161490565b6040519015158152602001610285565b60985461027b565b61034561036b366004612b4a565b60d16020526000908152604090205460ff1681565b61023f610be6565b61027b610396366004612d49565b60cd60209081526000928352604080842090915290825290205481565b61027b6103c1366004612b4a565b60ca6020526000908152604090205481565b6097546102c8906001600160a01b031681565b61027b6103f4366004612b4a565b6001600160a01b0316600090815260ce602052604090205490565b61023f61041d366004612d77565b610bfa565b6033546001600160a01b03166102c8565b610446610441366004612b4a565b610c53565b604051610285929190612e2c565b60cb546102c8906001600160a01b031681565b610345610475366004612b4a565b60d36020526000908152604090205460ff1681565b6102c87f000000000000000000000000000000000000000000000000000000000000000081565b61027b6104bf366004612fd5565b610dd3565b61023f6104d23660046130f0565b610e20565b6103456104e5366004612b67565b60cf6020526000908152604090205460ff1681565b61023f610508366004613132565b610f94565b61023f61051b366004613183565b610fe8565b61023f61052e366004612b4a565b6110a0565b6102c86105413660046131d6565b6110b1565b610559610554366004612fd5565b6110e9565b604080519215158352602083019190915201610285565b61023f61057e366004613132565b61117d565b61023f610591366004613202565b6112b1565b6102c87f000000000000000000000000000000000000000000000000000000000000000081565b61027b6105cb366004612d77565b6114da565b61023f6105de366004612b4a565b6115a3565b61027b611619565b61023f6105f9366004612b67565b611657565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610651573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610675919061326e565b6001600160a01b0316336001600160a01b0316146106ae5760405162461bcd60e51b81526004016106a59061328b565b60405180910390fd5b6106b7816117b3565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610702573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072691906132d5565b6107425760405162461bcd60e51b81526004016106a5906132f2565b609854818116146107bb5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016106a5565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6098546000908190600190811614156108505760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016106a5565b600260655414156108a35760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106a5565b60026065556001600160a01b038816600090815260d3602052604090205460ff161561094a5760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a4016106a5565b428410156109cc5760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a4016106a5565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a84611619565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610ac78882886118aa565b610ad3888c8c8c611a69565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610b115760405162461bcd60e51b81526004016106a59061333a565b610b1b8282611c38565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8b91906132d5565b610ba75760405162461bcd60e51b81526004016106a5906132f2565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610bee611ca6565b610bf86000611d00565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c425760405162461bcd60e51b81526004016106a5906133a4565b610c4d838383611d52565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c8b57610c8b612b90565b604051908082528060200260200182016040528015610cb4578160200160208202803683370190505b50905060005b82811015610d45576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610cf957610cf9613402565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610d3257610d32613402565b6020908102919091010152600101610cba565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610dc157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610da3575b50505050509150935093505050915091565b80516020808301516040808501516060860151608087015160a08801519351600097610e03979096959101613418565b604051602081830303815290604052805190602001209050919050565b60cb546001600160a01b03163314610e4a5760405162461bcd60e51b81526004016106a59061333a565b8060005b81811015610c4d5760d16000858584818110610e6c57610e6c613402565b9050602002016020810190610e819190612b4a565b6001600160a01b0316815260208101919091526040016000205460ff1615610f8c57600060d16000868685818110610ebb57610ebb613402565b9050602002016020810190610ed09190612b4a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610f2b57610f2b613402565b9050602002016020810190610f409190612b4a565b6040516001600160a01b03909116815260200160405180910390a1610f8c848483818110610f7057610f70613402565b9050602002016020810190610f859190612b4a565b6000611c38565b600101610e4e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fdc5760405162461bcd60e51b81526004016106a5906133a4565b610c4d84848484611eae565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110305760405162461bcd60e51b81526004016106a5906133a4565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b15801561108257600080fd5b505af1158015611096573d6000803e3d6000fd5b5050505050505050565b6110a8611ca6565b6106b78161213b565b60ce60205281600052604060002081815481106110cd57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111345760405162461bcd60e51b81526004016106a5906133a4565b600061113f84610dd3565b600081815260cf60205260408120549192509060ff16156111745750600081815260cf60205260409020805460ff1916905560015b92509050915091565b600054610100900460ff161580801561119d5750600054600160ff909116105b806111b75750303b1580156111b7575060005460ff166001145b61121a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a5565b6000805460ff19166001179055801561123d576000805461ff0019166101001790555b6112456121a4565b60c955611252838361223b565b61125b85611d00565b6112648461213b565b80156112aa576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146112db5760405162461bcd60e51b81526004016106a59061333a565b8281146113645760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a4016106a5565b8260005b818110156114d25760d1600087878481811061138657611386613402565b905060200201602081019061139b9190612b4a565b6001600160a01b0316815260208101919091526040016000205460ff166114ca57600160d160008888858181106113d4576113d4613402565b90506020020160208101906113e99190612b4a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe86868381811061144457611444613402565b90506020020160208101906114599190612b4a565b6040516001600160a01b03909116815260200160405180910390a16114ca86868381811061148957611489613402565b905060200201602081019061149e9190612b4a565b8585848181106114b0576114b0613402565b90506020020160208101906114c59190613491565b611c38565b600101611368565b505050505050565b6098546000908190600190811614156115315760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016106a5565b600260655414156115845760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106a5565b600260655561159533868686611a69565b600160655595945050505050565b6115ab611ca6565b6001600160a01b0381166116105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106a5565b6106b781611d00565b60007f000000000000000000000000000000000000000000000000000000000000000046141561164a575060c95490565b6116526121a4565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ce919061326e565b6001600160a01b0316336001600160a01b0316146116fe5760405162461bcd60e51b81526004016106a59061328b565b60985419811960985419161461177c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016106a5565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016107ee565b6001600160a01b0381166118415760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016106a5565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b156119c957604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906118ea9086908690600401613506565b602060405180830381865afa158015611907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192b919061351f565b6001600160e01b031916146119c45760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a4016106a5565b505050565b826001600160a01b03166119dd8383612321565b6001600160a01b0316146119c45760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a4016106a5565b6001600160a01b038316600090815260d16020526040812054849060ff16611b0f5760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a4016106a5565b611b246001600160a01b038516338786612345565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611b73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b979190613549565b9150611ba586858785611eae565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611c1757600080fd5b505af1158015611c2b573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610bf85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a5565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081611dc75760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f21000060648201526084016106a5565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611e595760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b60648201526084016106a5565b6001600160a01b03808616600090815260cd602090815260408083209388168352929052208382039081905590831415611ea157611e97858561239f565b6001915050611ea7565b60009150505b9392505050565b6001600160a01b038416611f2a5760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f20616464726573730000000000000060648201526084016106a5565b80611f965760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b60648201526084016106a5565b6001600160a01b03808516600090815260cd60209081526040808320938616835292905220546120a7576001600160a01b038416600090815260ce6020908152604090912054106120685760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a4016106a5565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd60209081526040808320938616835292905290812080548392906120de908490613578565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b031615801561225c57506001600160a01b03821615155b6122de5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016106a5565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610b1b826117b3565b60008060006123308585612591565b9150915061233d81612601565b509392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610c4d9085906127bc565b6001600160a01b038216600090815260ce6020526040812054905b818110156124ba576001600160a01b03848116600090815260ce60205260409020805491851691839081106123f1576123f1613402565b6000918252602090912001546001600160a01b031614156124b2576001600160a01b038416600090815260ce60205260409020805461243290600190613590565b8154811061244257612442613402565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061247f5761247f613402565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506124ba565b6001016123ba565b818114156125425760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a4016106a5565b6001600160a01b038416600090815260ce60205260409020805480612569576125696135a7565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604114156125c85760208301516040840151606085015160001a6125bc8782858561288e565b945094505050506125fa565b8251604014156125f257602083015160408401516125e786838361297b565b9350935050506125fa565b506000905060025b9250929050565b6000816004811115612615576126156135bd565b141561261e5750565b6001816004811115612632576126326135bd565b14156126805760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106a5565b6002816004811115612694576126946135bd565b14156126e25760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106a5565b60038160048111156126f6576126f66135bd565b141561274f5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106a5565b6004816004811115612763576127636135bd565b14156106b75760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016106a5565b6000612811826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166129b49092919063ffffffff16565b8051909150156119c4578080602001905181019061282f91906132d5565b6119c45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a5565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156128c55750600090506003612972565b8460ff16601b141580156128dd57508460ff16601c14155b156128ee5750600090506004612972565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612942573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661296b57600060019250925050612972565b9150600090505b94509492505050565b6000806001600160ff1b0383168161299860ff86901c601b613578565b90506129a68782888561288e565b935093505050935093915050565b60606129c384846000856129cb565b949350505050565b606082471015612a2c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a5565b6001600160a01b0385163b612a835760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a5565b600080866001600160a01b03168587604051612a9f91906135d3565b60006040518083038185875af1925050503d8060008114612adc576040519150601f19603f3d011682016040523d82523d6000602084013e612ae1565b606091505b5091509150612af1828286612afc565b979650505050505050565b60608315612b0b575081611ea7565b825115612b1b5782518084602001fd5b8160405162461bcd60e51b81526004016106a591906135ef565b6001600160a01b03811681146106b757600080fd5b600060208284031215612b5c57600080fd5b8135611ea781612b35565b600060208284031215612b7957600080fd5b5035919050565b8035612b8b81612b35565b919050565b634e487b7160e01b600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715612bc957612bc9612b90565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612bf857612bf8612b90565b604052919050565b60008060008060008060c08789031215612c1957600080fd5b8635612c2481612b35565b9550602087810135612c3581612b35565b9550604088013594506060880135612c4c81612b35565b93506080880135925060a088013567ffffffffffffffff80821115612c7057600080fd5b818a0191508a601f830112612c8457600080fd5b813581811115612c9657612c96612b90565b612ca8601f8201601f19168501612bcf565b91508082528b84828501011115612cbe57600080fd5b80848401858401376000848284010152508093505050509295509295509295565b80151581146106b757600080fd5b60008060408385031215612d0057600080fd5b8235612d0b81612b35565b91506020830135612d1b81612cdf565b809150509250929050565b600060208284031215612d3857600080fd5b813560ff81168114611ea757600080fd5b60008060408385031215612d5c57600080fd5b8235612d6781612b35565b91506020830135612d1b81612b35565b600080600060608486031215612d8c57600080fd5b8335612d9781612b35565b92506020840135612da781612b35565b929592945050506040919091013590565b600081518084526020808501945080840160005b83811015612df15781516001600160a01b031687529582019590820190600101612dcc565b509495945050505050565b600081518084526020808501945080840160005b83811015612df157815187529582019590820190600101612e10565b604081526000612e3f6040830185612db8565b8281036020840152612e518185612dfc565b95945050505050565b600067ffffffffffffffff821115612e7457612e74612b90565b5060051b60200190565b600082601f830112612e8f57600080fd5b81356020612ea4612e9f83612e5a565b612bcf565b82815260059290921b84018101918181019086841115612ec357600080fd5b8286015b84811015612ee7578035612eda81612b35565b8352918301918301612ec7565b509695505050505050565b600082601f830112612f0357600080fd5b81356020612f13612e9f83612e5a565b82815260059290921b84018101918181019086841115612f3257600080fd5b8286015b84811015612ee75780358352918301918301612f36565b600060408284031215612f5f57600080fd5b6040516040810181811067ffffffffffffffff82111715612f8257612f82612b90565b6040529050808235612f9381612b35565b815260208301356bffffffffffffffffffffffff81168114612fb457600080fd5b6020919091015292915050565b803563ffffffff81168114612b8b57600080fd5b600060208284031215612fe757600080fd5b813567ffffffffffffffff80821115612fff57600080fd5b9083019060e0828603121561301357600080fd5b61301b612ba6565b82358281111561302a57600080fd5b61303687828601612e7e565b82525060208301358281111561304b57600080fd5b61305787828601612ef2565b60208301525061306960408401612b80565b604082015261307b8660608501612f4d565b606082015261308c60a08401612fc1565b608082015261309d60c08401612b80565b60a082015295945050505050565b60008083601f8401126130bd57600080fd5b50813567ffffffffffffffff8111156130d557600080fd5b6020830191508360208260051b85010111156125fa57600080fd5b6000806020838503121561310357600080fd5b823567ffffffffffffffff81111561311a57600080fd5b613126858286016130ab565b90969095509350505050565b6000806000806080858703121561314857600080fd5b843561315381612b35565b9350602085013561316381612b35565b9250604085013561317381612b35565b9396929550929360600135925050565b6000806000806080858703121561319957600080fd5b84356131a481612b35565b935060208501356131b481612b35565b92506040850135915060608501356131cb81612b35565b939692955090935050565b600080604083850312156131e957600080fd5b82356131f481612b35565b946020939093013593505050565b6000806000806040858703121561321857600080fd5b843567ffffffffffffffff8082111561323057600080fd5b61323c888389016130ab565b9096509450602087013591508082111561325557600080fd5b50613262878288016130ab565b95989497509550505050565b60006020828403121561328057600080fd5b8151611ea781612b35565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156132e757600080fd5b8151611ea781612cdf565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60e08152600061342b60e0830189612db8565b828103602084015261343d8189612dfc565b6001600160a01b0397881660408501528651881660608501526020909601516bffffffffffffffffffffffff166080840152505063ffffffff9290921660a083015290921660c09092019190915292915050565b6000602082840312156134a357600080fd5b8135611ea781612cdf565b60005b838110156134c95781810151838201526020016134b1565b83811115610c4d5750506000910152565b600081518084526134f28160208601602086016134ae565b601f01601f19169290920160200192915050565b8281526040602082015260006129c360408301846134da565b60006020828403121561353157600080fd5b81516001600160e01b031981168114611ea757600080fd5b60006020828403121561355b57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561358b5761358b613562565b500190565b6000828210156135a2576135a2613562565b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600082516135e58184602087016134ae565b9190910192915050565b602081526000611ea760208301846134da56fea2646970667358221220e3058c7f85bbc0d134ce18d5c7ff3becd81c71816d2b61dacc064944af4f1cd664736f6c634300080c0033","sourceMap":"969:22080:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5814:138:27;;;;;;:::i;:::-;;:::i;:::-;;3832:392;;;;;;:::i;:::-;;:::i;681:130:7:-;;731:80;681:130;;;;;791:25:178;;;779:2;764:18;681:130:7;;;;;;;;6385:1579:6;;;;;;:::i;:::-;;:::i;1300:49:7:-;;;;;;;;-1:-1:-1;;;;;3433:32:178;;;3415:51;;3403:2;3388:18;1300:49:7;3244:228:178;898:162:7;;949:111;898:162;;10231:172:6;;;;;;:::i;:::-;;:::i;4299:136:27:-;;;:::i;5594:149::-;;;;;;:::i;:::-;5712:7;;5683:1;:10;;;;;;;;5712:14;;;5711:24;;5594:149;;;;4461:14:178;;4454:22;4436:41;;4424:2;4409:18;5594:149:27;4296:187:178;5406:87:27;5479:7;;5406:87;;3339:65:7;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2071:101:57;;;:::i;2335:77:7:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1808:41;;;;;;:::i;:::-;;;;;;;;;;;;;;1825:37:27;;;;;-1:-1:-1;;;;;1825:37:27;;;21463:139:6;;;;;;:::i;:::-;-1:-1:-1;;;;;21562:26:6;21536:7;21562:26;;;:18;:26;;;;;:33;;21463:139;8106:161;;;;;;:::i;:::-;;:::i;1441:85:57:-;1513:6;;-1:-1:-1;;;;;1513:6:57;1441:85;;20865:503:6;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;1981:34:7:-;;;;;-1:-1:-1;;;;;1981:34:7;;;4180:62;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1355:33;;;;;22470:577:6;;;;;;:::i;:::-;;:::i;12530:926::-;;;;;;:::i;:::-;;:::i;2805:53:7:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8395:196:6;;;;;;:::i;:::-;;:::i;8710:212::-;;;;;;:::i;:::-;;:::i;10585:147::-;;;;;;:::i;:::-;;:::i;2507:57:7:-;;;;;;:::i;:::-;;:::i;9212:561:6:-;;;;;;:::i;:::-;;:::i;:::-;;;;14951:14:178;;14944:22;14926:41;;14998:2;14983:18;;14976:34;;;;14899:18;9212:561:6;14758:258:178;3093:431:6;;;;;;:::i;:::-;;:::i;11152:1072::-;;;;;;:::i;:::-;;:::i;1248:46:7:-;;;;;4396:280:6;;;;;;:::i;:::-;;:::i;2321:198:57:-;;;;;;:::i;:::-;;:::i;21809:227:6:-;;;:::i;4911:425:27:-;;;;;;:::i;:::-;;:::i;5814:138::-;2285:14;;;;;;;;;-1:-1:-1;;;;;2285:14:27;-1:-1:-1;;;;;2285:23:27;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2271:39:27;:10;-1:-1:-1;;;;;2271:39:27;;2263:94;;;;-1:-1:-1;;;2263:94:27;;;;;;;:::i;:::-;;;;;;;;;5908:37:::1;5927:17;5908:18;:37::i;:::-;5814:138:::0;:::o;3832:392::-;2125:14;;:35;;-1:-1:-1;;;2125:35:27;;2149:10;2125:35;;;3415:51:178;-1:-1:-1;;;;;2125:14:27;;;;:23;;3388:18:178;;2125:35:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2117:88;;;;-1:-1:-1;;;2117:88:27;;;;;;;:::i;:::-;4064:7:::1;::::0;4034:25;;::::1;4033:38;4025:107;;;::::0;-1:-1:-1;;;4025:107:27;;18823:2:178;4025:107:27::1;::::0;::::1;18805:21:178::0;18862:2;18842:18;;;18835:30;18901:34;18881:18;;;18874:62;18972:26;18952:18;;;18945:54;19016:19;;4025:107:27::1;18621:420:178::0;4025:107:27::1;4142:7;:25:::0;;;4182:35:::1;::::0;791:25:178;;;4189:10:27::1;::::0;4182:35:::1;::::0;779:2:178;764:18;4182:35:27::1;;;;;;;;3832:392:::0;:::o;6385:1579:6:-;5712:7:27;;6653:14:6;;;;5683:1:27;5712:14;;;5711:24;2767:14;2759:52;;;;-1:-1:-1;;;2759:52:27;;19248:2:178;2759:52:27;;;19230:21:178;19287:2;19267:18;;;19260:30;-1:-1:-1;;;19306:18:178;;;19299:55;19371:18;;2759:52:27;19046:349:178;2759:52:27;1816:1:60::1;2570:7;;:19;;2562:63;;;::::0;-1:-1:-1;;;2562:63:60;;19602:2:178;2562:63:60::1;::::0;::::1;19584:21:178::0;19641:2;19621:18;;;19614:30;19680:33;19660:18;;;19653:61;19731:18;;2562:63:60::1;19400:355:178::0;2562:63:60::1;1816:1;2700:7;:18:::0;-1:-1:-1;;;;;6701:38:6;::::2;;::::0;;;:28:::2;:38;::::0;;;;;::::2;;6700:39;6679:160;;;::::0;-1:-1:-1;;;6679:160:6;;19962:2:178;6679:160:6::2;::::0;::::2;19944:21:178::0;20001:2;19981:18;;;19974:30;20040:34;20020:18;;;20013:62;20111:34;20091:18;;;20084:62;-1:-1:-1;;;20162:19:178;;;20155:41;20213:19;;6679:160:6::2;19760:478:178::0;6679:160:6::2;6867:15;6857:6;:25;;6849:105;;;::::0;-1:-1:-1;;;6849:105:6;;20445:2:178;6849:105:6::2;::::0;::::2;20427:21:178::0;20484:2;20464:18;;;20457:30;20523:34;20503:18;;;20496:62;20594:34;20574:18;;;20567:62;-1:-1:-1;;;20645:19:178;;;20638:34;20689:19;;6849:105:6::2;20243:471:178::0;6849:105:6::2;-1:-1:-1::0;;;;;7046:14:6;;::::2;7030:13;7046:14:::0;;;:6:::2;:14;::::0;;;;;;;;7101:76;;949:111:7::2;7101:76:6::0;;::::2;21068:25:178::0;;;;21147:18;;;21140:43;;;;21219:15;;;21199:18;;;21192:43;21271:15;;;21251:18;;;21244:43;21303:19;;;21296:35;;;21347:19;;;21340:35;;;21391:19;;;21384:35;;;7046:14:6;;21040:19:178;;7101:76:6::2;::::0;;-1:-1:-1;;7101:76:6;;::::2;::::0;;;;;;7091:87;;7101:76:::2;7091:87:::0;;::::2;::::0;-1:-1:-1;;;;;7212:14:6;::::2;;::::0;;;:6:::2;:14:::0;;;;;;7237:1:::2;7229:9:::0;::::2;7212:26:::0;;7091:87;-1:-1:-1;7356:17:6::2;:15;:17::i;:::-;7327:59;::::0;-1:-1:-1;;;7327:59:6::2;::::0;::::2;21688:27:178::0;21731:11;;;21724:27;;;;21767:12;;;21760:28;;;21804:12;;7327:59:6::2;;;;;;;;;;;;7317:70;;;;;;7296:91;;7713:75;7758:6;7766:10;7778:9;7713:44;:75::i;:::-;7904:53;7925:6;7933:8;7943:5;7950:6;7904:20;:53::i;:::-;1773:1:60::1;2873:7;:22:::0;7895:62:6;6385:1579;-1:-1:-1;;;;;;;;;;;6385:1579:6:o;10231:172::-;1436:19;;-1:-1:-1;;;;;1436:19:6;1422:10;:33;1401:136;;;;-1:-1:-1;;;1401:136:6;;;;;;;:::i;:::-;10347:49:::1;10380:8;10390:5;10347:32;:49::i;:::-;10231:172:::0;;:::o;4299:136:27:-;2125:14;;:35;;-1:-1:-1;;;2125:35:27;;2149:10;2125:35;;;3415:51:178;-1:-1:-1;;;;;2125:14:27;;;;:23;;3388:18:178;;2125:35:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2117:88;;;;-1:-1:-1;;;2117:88:27;;;;;;;:::i;:::-;-1:-1:-1;;4349:7:27::1;:27:::0;;;4391:37:::1;::::0;791:25:178;;;4398:10:27::1;::::0;4391:37:::1;::::0;779:2:178;764:18;4391:37:27::1;;;;;;;4299:136::o:0;2071:101:57:-;1334:13;:11;:13::i;:::-;2135:30:::1;2162:1;2135:18;:30::i;:::-;2071:101::o:0;8106:161:6:-;1876:10;-1:-1:-1;;;;;1898:10:6;1876:33;;1868:110;;;;-1:-1:-1;;;1868:110:6;;;;;;;:::i;:::-;8221:39:::1;8235:6;8243:8;8253:6;8221:13;:39::i;:::-;;8106:161:::0;;;:::o;20865:503::-;-1:-1:-1;;;;;21000:26:6;;20973:24;21000:26;;;:18;:26;;;;;:33;20925:18;;;;21000:33;;21069:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21069:31:6;;21043:57;;21116:9;21111:198;21135:16;21131:1;:20;21111:198;;;-1:-1:-1;;;;;21180:28:6;;;;;;:20;:28;;;;;;;;21209:18;:26;;;;;:29;;21180:28;;;21236:1;;21209:29;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;21209:29:6;21180:59;;;;;;;;;;;;;21168:9;;:6;;21175:1;;21168:9;;;;;;:::i;:::-;;;;;;;;;;:71;21281:3;;21111:198;;;;21326:18;:26;21345:6;-1:-1:-1;;;;;21326:26:6;-1:-1:-1;;;;;21326:26:6;;;;;;;;;;;;21354:6;21318:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21318:43:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20865:503;;;:::o;22470:577::-;22710:27;;22759:23;;;;;22804;;;;;22849:35;;;;22906:37;;;;22965:33;;;;22678:338;;22607:7;;22678:338;;22710:27;;22759:23;22965:33;22678:338;;:::i;:::-;;;;;;;;;;;;;22651:379;;;;;;22630:410;;22470:577;;;:::o;12530:926::-;1436:19;;-1:-1:-1;;;;;1436:19:6;1422:10;:33;1401:136;;;;-1:-1:-1;;;1401:136:6;;;;;;;:::i;:::-;12741:31;12693:45:::1;12789:661;12813:37;12809:1;:41;12789:661;;;12957:31;:67;12989:31;;13021:1;12989:34;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12957:67:6::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12957:67:6;;::::1;;12953:428;;;13114:5;13044:31;:67;13076:31;;13108:1;13076:34;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13044:67:6::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;13044:67:6;:75;;-1:-1:-1;;13044:75:6::1;::::0;::::1;;::::0;;;::::1;::::0;;13142:71:::1;13178:31:::0;;13210:1;13178:34;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;13142:71;::::0;-1:-1:-1;;;;;3433:32:178;;;3415:51;;3403:2;3388:18;13142:71:6::1;;;;;;;13291:75;13324:31;;13356:1;13324:34;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;13360:5;13291:32;:75::i;:::-;13422:3;;12789:661;;8395:196:::0;1876:10;-1:-1:-1;;;;;1898:10:6;1876:33;;1868:110;;;;-1:-1:-1;;;1868:110:6;;;;;;;:::i;:::-;8541:43:::1;8552:6;8560:5;8567:8;8577:6;8541:10;:43::i;8710:212::-:0;1876:10;-1:-1:-1;;;;;1898:10:6;1876:33;;1868:110;;;;-1:-1:-1;;;1868:110:6;;;;;;;:::i;:::-;8872:43:::1;::::0;-1:-1:-1;;;8872:43:6;;-1:-1:-1;;;;;24216:15:178;;;8872:43:6::1;::::0;::::1;24198:34:178::0;24268:15;;;24248:18;;;24241:43;24300:18;;;24293:34;;;8872:17:6;::::1;::::0;::::1;::::0;24133:18:178;;8872:43:6::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8710:212:::0;;;;:::o;10585:147::-;1334:13:57;:11;:13::i;:::-;10678:47:6::1;10702:22;10678:23;:47::i;2507:57:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2507:57:7;;-1:-1:-1;2507:57:7;;-1:-1:-1;2507:57:7:o;9212:561:6:-;9368:4;;1876:10;-1:-1:-1;;;;;1898:10:6;1876:33;;1868:110;;;;-1:-1:-1;;;1868:110:6;;;;;;;:::i;:::-;9397:30:::1;9430:41;9454:16;9430:23;:41::i;:::-;9481:14;9560:45:::0;;;:21:::1;:45;::::0;;;;;9397:74;;-1:-1:-1;9481:14:6;9560:45:::1;;9556:159;;;-1:-1:-1::0;9669:5:6::1;9621:45:::0;;;:21:::1;:45;::::0;;;;:53;;-1:-1:-1;;9621:53:6::1;::::0;;;9556:159:::1;9732:9:::0;-1:-1:-1;9743:22:6;-1:-1:-1;9212:561:6;;;:::o;3093:431::-;3111:19:59;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:59;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:59;1476:19:61;:23;;;3219:66:59;;-1:-1:-1;3268:12:59;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:59;;24540:2:178;3157:201:59;;;24522:21:178;24579:2;24559:18;;;24552:30;24618:34;24598:18;;;24591:62;-1:-1:-1;;;24669:18:178;;;24662:44;24723:19;;3157:201:59;24338:410:178;3157:201:59;3368:12;:16;;-1:-1:-1;;3368:16:59;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:59;;;;;3394:65;3322:27:6::1;:25;:27::i;:::-;3302:17;:47:::0;3359:55:::1;3377:15:::0;3394:19;3359:17:::1;:55::i;:::-;3424:32;3443:12;3424:18;:32::i;:::-;3466:51;3490:26;3466:23;:51::i;:::-;3483:14:59::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;3513:21:59;;;3553:14;;-1:-1:-1;24905:36:178;;3553:14:59;;24893:2:178;24878:18;3553:14:59;;;;;;;3479:99;3101:483;3093:431:6;;;;:::o;11152:1072::-;1436:19;;-1:-1:-1;;;;;1436:19:6;1422:10;:33;1401:136;;;;-1:-1:-1;;;1401:136:6;;;;;;;:::i;:::-;11375:73;;::::1;11354:195;;;::::0;-1:-1:-1;;;11354:195:6;;25154:2:178;11354:195:6::1;::::0;::::1;25136:21:178::0;25193:2;25173:18;;;25166:30;25232:34;25212:18;;;25205:62;25303:34;25283:18;;;25276:62;-1:-1:-1;;;25354:19:178;;;25347:42;25406:19;;11354:195:6::1;24952:479:178::0;11354:195:6::1;11597:21:::0;11559:35:::1;11635:583;11659:27;11655:1;:31;11635:583;;;11798:31;:57;11830:21;;11852:1;11830:24;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11798:57:6::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11798:57:6;;::::1;;11793:356;;11935:4;11875:31;:57;11907:21;;11929:1;11907:24;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11875:57:6::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11875:57:6;:64;;-1:-1:-1;;11875:64:6::1;::::0;::::1;;::::0;;;::::1;::::0;;11962:57:::1;11994:21:::0;;12016:1;11994:24;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;11962:57;::::0;-1:-1:-1;;;;;3433:32:178;;;3415:51;;3403:2;3388:18;11962:57:6::1;;;;;;;12037:97;12070:21;;12092:1;12070:24;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;12096:34;;12131:1;12096:37;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;12037:32;:97::i;:::-;12190:3;;11635:583;;;;11344:880;11152:1072:::0;;;;:::o;4396:280::-;5712:7:27;;4573:14:6;;;;5683:1:27;5712:14;;;5711:24;2767:14;2759:52;;;;-1:-1:-1;;;2759:52:27;;19248:2:178;2759:52:27;;;19230:21:178;19287:2;19267:18;;;19260:30;-1:-1:-1;;;19306:18:178;;;19299:55;19371:18;;2759:52:27;19046:349:178;2759:52:27;1816:1:60::1;2570:7;;:19;;2562:63;;;::::0;-1:-1:-1;;;2562:63:60;;19602:2:178;2562:63:60::1;::::0;::::1;19584:21:178::0;19641:2;19621:18;;;19614:30;19680:33;19660:18;;;19653:61;19731:18;;2562:63:60::1;19400:355:178::0;2562:63:60::1;1816:1;2700:7;:18:::0;4612:57:6::2;4633:10;4645:8:::0;4655:5;4662:6;4612:20:::2;:57::i;:::-;1773:1:60::1;2873:7;:22:::0;4603:66:6;4396:280;-1:-1:-1;;;;;4396:280:6:o;2321:198:57:-;1334:13;:11;:13::i;:::-;-1:-1:-1;;;;;2409:22:57;::::1;2401:73;;;::::0;-1:-1:-1;;;2401:73:57;;25884:2:178;2401:73:57::1;::::0;::::1;25866:21:178::0;25923:2;25903:18;;;25896:30;25962:34;25942:18;;;25935:62;-1:-1:-1;;;26013:18:178;;;26006:36;26059:19;;2401:73:57::1;25682:402:178::0;2401:73:57::1;2484:28;2503:8;2484:18;:28::i;21809:227:6:-:0;21857:7;21897:17;21880:13;:34;21876:154;;;-1:-1:-1;21937:17:6;;;21809:227::o;21876:154::-;21992:27;:25;:27::i;:::-;21985:34;;21809:227;:::o;4911:425:27:-;2285:14;;;;;;;;;-1:-1:-1;;;;;2285:14:27;-1:-1:-1;;;;;2285:23:27;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2271:39:27;:10;-1:-1:-1;;;;;2271:39:27;;2263:94;;;;-1:-1:-1;;;2263:94:27;;;;;;;:::i;:::-;5164:7:::1;;5163:8;5141:15;5140:16;5128:7;;5127:8;5126:31;5125:47;5104:138;;;::::0;-1:-1:-1;;;5104:138:27;;26291:2:178;5104:138:27::1;::::0;::::1;26273:21:178::0;26330:2;26310:18;;;26303:30;26369:34;26349:18;;;26342:62;26440:26;26420:18;;;26413:54;26484:19;;5104:138:27::1;26089:420:178::0;5104:138:27::1;5252:7;:25:::0;;;5292:37:::1;::::0;791:25:178;;;5301:10:27::1;::::0;5292:37:::1;::::0;779:2:178;764:18;5292:37:27::1;645:177:178::0;6012:360:27;-1:-1:-1;;;;;6115:40:27;;6094:160;;;;-1:-1:-1;;;6094:160:27;;26716:2:178;6094:160:27;;;26698:21:178;26755:2;26735:18;;;26728:30;26794:34;26774:18;;;26767:62;26865:34;26845:18;;;26838:62;-1:-1:-1;;;26916:19:178;;;26909:40;26966:19;;6094:160:27;26514:477:178;6094:160:27;6287:14;;6269:52;;;-1:-1:-1;;;;;6287:14:27;;;27256:34:178;;27326:15;;;27321:2;27306:18;;27299:43;6269:52:27;;27191:18:178;6269:52:27;;;;;;;6331:14;:34;;-1:-1:-1;;;;;;6331:34:27;-1:-1:-1;;;;;6331:34:27;;;;;;;;;;6012:360::o;974:926:23:-;-1:-1:-1;;;;;1476:19:61;;;:23;1410:484:23;;1481:56;;-1:-1:-1;;;1481:56:23;;;1541:18;-1:-1:-1;;;;;1481:33:23;;;574:10;;1481:56;;1515:10;;1527:9;;1481:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1481:78:23;;1456:220;;;;-1:-1:-1;;;1456:220:23;;28668:2:178;1456:220:23;;;28650:21:178;28707:2;28687:18;;;28680:30;28746:34;28726:18;;;28719:62;28817:34;28797:18;;;28790:62;-1:-1:-1;;;28868:19:178;;;28861:50;28928:19;;1456:220:23;28466:487:178;1456:220:23;974:926;;;:::o;1410:484::-;1772:6;-1:-1:-1;;;;;1732:46:23;:36;1746:10;1758:9;1732:13;:36::i;:::-;-1:-1:-1;;;;;1732:46:23;;1707:176;;;;-1:-1:-1;;;1707:176:23;;29160:2:178;1707:176:23;;;29142:21:178;29199:2;29179:18;;;29172:30;29238:34;29218:18;;;29211:62;29309:34;29289:18;;;29282:62;-1:-1:-1;;;29360:19:178;;;29353:38;29408:19;;1707:176:23;28958:475:178;15759:801:6;-1:-1:-1;;;;;1657:41:6;;15943:14;1657:41;;;:31;:41;;;;;;15916:8;;1657:41;;1636:165;;;;-1:-1:-1;;;1636:165:6;;29640:2:178;1636:165:6;;;29622:21:178;29679:2;29659:18;;;29652:30;29718:34;29698:18;;;29691:62;29789:34;29769:18;;;29762:62;-1:-1:-1;;;29840:19:178;;;29833:44;29894:19;;1636:165:6;29438:481:178;1636:165:6;16032:61:::1;-1:-1:-1::0;;;;;16032:22:6;::::1;16055:10;16075:8:::0;16086:6;16032:22:::1;:61::i;:::-;16228:31;::::0;-1:-1:-1;;;16228:31:6;;-1:-1:-1;;;;;30132:32:178;;;16228:31:6::1;::::0;::::1;30114:51:178::0;30181:18;;;30174:34;;;16228:16:6;::::1;::::0;::::1;::::0;30087:18:178;;16228:31:6::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16219:40;;16355:43;16366:6;16374:5;16381:8;16391:6;16355:10;:43::i;:::-;16469:60;::::0;-1:-1:-1;;;16469:60:6;;-1:-1:-1;;;;;24216:15:178;;;16469:60:6::1;::::0;::::1;24198:34:178::0;24268:15;;;24248:18;;;24241:43;24300:18;;;24293:34;;;16469:10:6::1;:34;::::0;::::1;::::0;24133:18:178;;16469:60:6::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15759:801:::0;;;;;;;:::o;19896:213::-;19994:52;;;-1:-1:-1;;;;;31010:32:178;;30992:51;;31086:14;;31079:22;31074:2;31059:18;;31052:50;19994:52:6;;30965:18:178;19994:52:6;;;;;;;-1:-1:-1;;;;;20056:38:6;;;;;;;;:28;:38;;;;;:46;;-1:-1:-1;;20056:46:6;;;;;;;;;;19896:213::o;1599:130:57:-;1513:6;;-1:-1:-1;;;;;1513:6:57;921:10:63;1662:23:57;1654:68;;;;-1:-1:-1;;;1654:68:57;;31315:2:178;1654:68:57;;;31297:21:178;;;31334:18;;;31327:30;31393:34;31373:18;;;31366:62;31445:18;;1654:68:57;31113:356:178;2673:187:57;2765:6;;;-1:-1:-1;;;;;2781:17:57;;;-1:-1:-1;;;;;;2781:17:57;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;17093:1225:6:-;17191:4;17250:16;17242:91;;;;-1:-1:-1;;;17242:91:6;;31676:2:178;17242:91:6;;;31658:21:178;31715:2;31695:18;;;31688:30;31754:34;31734:18;;;31727:62;31825:32;31805:18;;;31798:60;31875:19;;17242:91:6;31474:426:178;17242:91:6;-1:-1:-1;;;;;17417:28:6;;;17396:18;17417:28;;;:20;:28;;;;;;;;:38;;;;;;;;;;17474:25;;;;17466:89;;;;-1:-1:-1;;;17466:89:6;;32107:2:178;17466:89:6;;;32089:21:178;32146:2;32126:18;;;32119:30;32185:34;32165:18;;;32158:62;-1:-1:-1;;;32236:18:178;;;32229:49;32295:19;;17466:89:6;31905:415:178;17466:89:6;-1:-1:-1;;;;;17794:28:6;;;;;;;:20;:28;;;;;;;;:38;;;;;;;;;17666:24;;;17794:51;;;;17666:24;17960:15;;17956:229;;;17991:55;18029:6;18037:8;17991:37;:55::i;:::-;18170:4;18163:11;;;;;17956:229;18306:5;18299:12;;;17093:1225;;;;;;:::o;14245:949::-;-1:-1:-1;;;;;14393:20:6;;14385:90;;;;-1:-1:-1;;;14385:90:6;;32527:2:178;14385:90:6;;;32509:21:178;32566:2;32546:18;;;32539:30;32605:34;32585:18;;;32578:62;32676:27;32656:18;;;32649:55;32721:19;;14385:90:6;32325:421:178;14385:90:6;14493:11;14485:78;;;;-1:-1:-1;;;14485:78:6;;32953:2:178;14485:78:6;;;32935:21:178;32992:2;32972:18;;;32965:30;33031:34;33011:18;;;33004:62;-1:-1:-1;;;33082:18:178;;;33075:52;33144:19;;14485:78:6;32751:418:178;14485:78:6;-1:-1:-1;;;;;14664:28:6;;;;;;;:20;:28;;;;;;;;:38;;;;;;;;;;14660:335;;-1:-1:-1;;;;;14748:26:6;;;;;;:18;1215:2:7;14748:26:6;;;;;;;:33;:67;14723:206;;;;-1:-1:-1;;;14723:206:6;;33376:2:178;14723:206:6;;;33358:21:178;33415:2;33395:18;;;33388:30;33454:34;33434:18;;;33427:62;33525:34;33505:18;;;33498:62;-1:-1:-1;;;33576:19:178;;;33569:47;33633:19;;14723:206:6;33174:484:178;14723:206:6;-1:-1:-1;;;;;14943:26:6;;;;;;;:18;:26;;;;;;;:41;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14943:41:6;;;;;;;;;;14660:335;-1:-1:-1;;;;;15083:28:6;;;;;;;:20;:28;;;;;;;;:38;;;;;;;;;;;:48;;15125:6;;15083:28;:48;;15125:6;;15083:48;:::i;:::-;;;;-1:-1:-1;;15147:40:6;;;-1:-1:-1;;;;;34249:15:178;;;34231:34;;34301:15;;;34296:2;34281:18;;34274:43;34353:15;;34333:18;;;34326:43;34400:2;34385:18;;34378:34;;;15147:40:6;;;;;;;34180:3:178;15147:40:6;;;14245:949;;;;:::o;20369:221::-;20485:19;;20458:71;;;-1:-1:-1;;;;;20485:19:6;;;27256:34:178;;27326:15;;;27321:2;27306:18;;27299:43;20458:71:6;;27191:18:178;20458:71:6;;;;;;;20539:19;:44;;-1:-1:-1;;;;;;20539:44:6;-1:-1:-1;;;;;20539:44:6;;;;;;;;;;20369:221::o;22137:193::-;22271:19;;;;;;;;;;;-1:-1:-1;;;22271:19:6;;;;;22233:89;;731:80:7;22233:89:6;;;34963:25:178;22261:30:6;35004:18:178;;;34997:34;22293:13:6;35047:18:178;;;35040:34;22316:4:6;35090:18:178;;;;35083:60;;;;22233:89:6;;;;;;;;;;34935:19:178;;;;22233:89:6;;;22223:100;;;;;;22137:193::o;2943:441:27:-;3077:14;;-1:-1:-1;;;;;3077:14:27;3069:37;:79;;;;-1:-1:-1;;;;;;3110:38:27;;;;3069:79;3048:197;;;;-1:-1:-1;;;3048:197:27;;35356:2:178;3048:197:27;;;35338:21:178;35395:2;35375:18;;;35368:30;35434:34;35414:18;;;35407:62;35505:34;35485:18;;;35478:62;-1:-1:-1;;;35556:19:178;;;35549:38;35604:19;;3048:197:27;35154:475:178;3048:197:27;3255:7;:26;;;3296:36;;791:25:178;;;3303:10:27;;3296:36;;779:2:178;764:18;3296:36:27;;;;;;;3342:35;3361:15;3342:18;:35::i;4402:227:92:-;4480:7;4500:17;4519:18;4541:27;4552:4;4558:9;4541:10;:27::i;:::-;4499:69;;;;4578:18;4590:5;4578:11;:18::i;:::-;-1:-1:-1;4613:9:92;4402:227;-1:-1:-1;;;4402:227:92:o;944:203:86:-;1071:68;;;-1:-1:-1;;;;;24216:15:178;;;1071:68:86;;;24198:34:178;24268:15;;24248:18;;;24241:43;24300:18;;;;24293:34;;;1071:68:86;;;;;;;;;;24133:18:178;;;;1071:68:86;;;;;;;;-1:-1:-1;;;;;1071:68:86;-1:-1:-1;;;1071:68:86;;;1044:96;;1064:5;;1044:19;:96::i;18607:924:6:-;-1:-1:-1;;;;;18811:26:6;;18788:20;18811:26;;;:18;:26;;;;;:33;;18877:383;18888:12;18884:1;:16;18877:383;;;-1:-1:-1;;;;;18921:26:6;;;;;;;:18;:26;;;;;:29;;:41;;;;18948:1;;18921:29;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;18921:29:6;:41;18917:274;;;-1:-1:-1;;;;;19088:26:6;;;;;;:18;:26;;;;;19115:33;;:37;;19151:1;;19115:37;:::i;:::-;19088:65;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;19056:26:6;;;;;:18;:26;;;;;;;:29;;19088:65;;;;;19056:26;19083:1;;19056:29;;;;;;:::i;:::-;;;;;;;;;:97;;;;;-1:-1:-1;;;;;19056:97:6;;;;;-1:-1:-1;;;;;19056:97:6;;;;;;19171:5;;18917:274;19232:3;;18877:383;;;19332:12;19327:1;:17;;19319:103;;;;-1:-1:-1;;;19319:103:6;;36346:2:178;19319:103:6;;;36328:21:178;36385:2;36365:18;;;36358:30;36424:34;36404:18;;;36397:62;36495:34;36475:18;;;36468:62;-1:-1:-1;;;36546:19:178;;;36539:40;36596:19;;19319:103:6;36144:477:178;19319:103:6;-1:-1:-1;;;;;19492:26:6;;;;;;:18;:26;;;;;:32;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;19492:32:6;;;;;-1:-1:-1;;;;;;19492:32:6;;;;;;-1:-1:-1;;;;18607:924:6:o;2243:1373:92:-;2324:7;2333:12;2554:9;:16;2574:2;2554:22;2550:1060;;;2890:4;2875:20;;2869:27;2939:4;2924:20;;2918:27;2996:4;2981:20;;2975:27;2592:9;2967:36;3037:25;3048:4;2967:36;2869:27;2918;3037:10;:25::i;:::-;3030:32;;;;;;;;;2550:1060;3083:9;:16;3103:2;3083:22;3079:531;;;3399:4;3384:20;;3378:27;3449:4;3434:20;;3428:27;3489:23;3500:4;3378:27;3428;3489:10;:23::i;:::-;3482:30;;;;;;;;3079:531;-1:-1:-1;3559:1:92;;-1:-1:-1;3563:35:92;3079:531;2243:1373;;;;;:::o;548:631::-;625:20;616:5;:29;;;;;;;;:::i;:::-;;612:561;;;548:631;:::o;612:561::-;721:29;712:5;:38;;;;;;;;:::i;:::-;;708:465;;;766:34;;-1:-1:-1;;;766:34:92;;37092:2:178;766:34:92;;;37074:21:178;37131:2;37111:18;;;37104:30;37170:26;37150:18;;;37143:54;37214:18;;766:34:92;36890:348:178;708:465:92;830:35;821:5;:44;;;;;;;;:::i;:::-;;817:356;;;881:41;;-1:-1:-1;;;881:41:92;;37445:2:178;881:41:92;;;37427:21:178;37484:2;37464:18;;;37457:30;37523:33;37503:18;;;37496:61;37574:18;;881:41:92;37243:355:178;817:356:92;952:30;943:5;:39;;;;;;;;:::i;:::-;;939:234;;;998:44;;-1:-1:-1;;;998:44:92;;37805:2:178;998:44:92;;;37787:21:178;37844:2;37824:18;;;37817:30;37883:34;37863:18;;;37856:62;-1:-1:-1;;;37934:18:178;;;37927:32;37976:19;;998:44:92;37603:398:178;939:234:92;1072:30;1063:5;:39;;;;;;;;:::i;:::-;;1059:114;;;1118:44;;-1:-1:-1;;;1118:44:92;;38208:2:178;1118:44:92;;;38190:21:178;38247:2;38227:18;;;38220:30;38286:34;38266:18;;;38259:62;-1:-1:-1;;;38337:18:178;;;38330:32;38379:19;;1118:44:92;38006:398:178;3589:706:86;4008:23;4034:69;4062:4;4034:69;;;;;;;;;;;;;;;;;4042:5;-1:-1:-1;;;;;4034:27:86;;;:69;;;;;:::i;:::-;4117:17;;4008:95;;-1:-1:-1;4117:21:86;4113:176;;4212:10;4201:30;;;;;;;;;;;;:::i;:::-;4193:85;;;;-1:-1:-1;;;4193:85:86;;38611:2:178;4193:85:86;;;38593:21:178;38650:2;38630:18;;;38623:30;38689:34;38669:18;;;38662:62;-1:-1:-1;;;38740:18:178;;;38733:40;38790:19;;4193:85:86;38409:406:178;5750:1565:92;5838:7;;6762:66;6749:79;;6745:161;;;-1:-1:-1;6860:1:92;;-1:-1:-1;6864:30:92;6844:51;;6745:161;6919:1;:7;;6924:2;6919:7;;:18;;;;;6930:1;:7;;6935:2;6930:7;;6919:18;6915:100;;;-1:-1:-1;6969:1:92;;-1:-1:-1;6973:30:92;6953:51;;6915:100;7126:24;;;7109:14;7126:24;;;;;;;;;39047:25:178;;;39120:4;39108:17;;39088:18;;;39081:45;;;;39142:18;;;39135:34;;;39185:18;;;39178:34;;;7126:24:92;;39019:19:178;;7126:24:92;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7126:24:92;;-1:-1:-1;;7126:24:92;;;-1:-1:-1;;;;;;;7164:20:92;;7160:101;;7216:1;7220:29;7200:50;;;;;;;7160:101;7279:6;-1:-1:-1;7287:20:92;;-1:-1:-1;5750:1565:92;;;;;;;;:::o;4883:306::-;4963:7;;-1:-1:-1;;;;;5008:80:92;;4963:7;5114:25;5130:3;5115:18;;;5137:2;5114:25;:::i;:::-;5098:42;;5157:25;5168:4;5174:1;5177;5180;5157:10;:25::i;:::-;5150:32;;;;;;4883:306;;;;;;:::o;3860:213:87:-;3979:12;4014:52;4036:6;4044:4;4050:1;4053:12;4014:21;:52::i;:::-;4007:59;3860:213;-1:-1:-1;;;;3860:213:87:o;4907:481::-;5050:12;5111:5;5086:21;:30;;5078:81;;;;-1:-1:-1;;;5078:81:87;;39425:2:178;5078:81:87;;;39407:21:178;39464:2;39444:18;;;39437:30;39503:34;39483:18;;;39476:62;-1:-1:-1;;;39554:18:178;;;39547:36;39600:19;;5078:81:87;39223:402:178;5078:81:87;-1:-1:-1;;;;;1476:19:61;;;5169:60:87;;;;-1:-1:-1;;;5169:60:87;;39832:2:178;5169:60:87;;;39814:21:178;39871:2;39851:18;;;39844:30;39910:31;39890:18;;;39883:59;39959:18;;5169:60:87;39630:353:178;5169:60:87;5241:12;5255:23;5282:6;-1:-1:-1;;;;;5282:11:87;5301:5;5308:4;5282:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5240:73;;;;5330:51;5347:7;5356:10;5368:12;5330:16;:51::i;:::-;5323:58;4907:481;-1:-1:-1;;;;;;;4907:481:87:o;7490:740::-;7630:12;7662:7;7658:566;;;-1:-1:-1;7692:10:87;7685:17;;7658:566;7803:17;;:21;7799:415;;8047:10;8041:17;8107:15;8094:10;8090:2;8086:19;8079:44;7799:415;8186:12;8179:20;;-1:-1:-1;;;8179:20:87;;;;;;;;:::i;14:148:178:-;-1:-1:-1;;;;;106:31:178;;96:42;;86:70;;152:1;149;142:12;167:288;250:6;303:2;291:9;282:7;278:23;274:32;271:52;;;319:1;316;309:12;271:52;358:9;345:23;377:48;419:5;377:48;:::i;460:180::-;519:6;572:2;560:9;551:7;547:23;543:32;540:52;;;588:1;585;578:12;540:52;-1:-1:-1;611:23:178;;460:180;-1:-1:-1;460:180:178:o;827:151::-;895:20;;924:48;895:20;924:48;:::i;:::-;827:151;;;:::o;983:127::-;1044:10;1039:3;1035:20;1032:1;1025:31;1075:4;1072:1;1065:15;1099:4;1096:1;1089:15;1115:253;1187:2;1181:9;1229:4;1217:17;;1264:18;1249:34;;1285:22;;;1246:62;1243:88;;;1311:18;;:::i;:::-;1347:2;1340:22;1115:253;:::o;1373:275::-;1444:2;1438:9;1509:2;1490:13;;-1:-1:-1;;1486:27:178;1474:40;;1544:18;1529:34;;1565:22;;;1526:62;1523:88;;;1591:18;;:::i;:::-;1627:2;1620:22;1373:275;;-1:-1:-1;1373:275:178:o;1653:1404::-;1800:6;1808;1816;1824;1832;1840;1893:3;1881:9;1872:7;1868:23;1864:33;1861:53;;;1910:1;1907;1900:12;1861:53;1949:9;1936:23;1968:48;2010:5;1968:48;:::i;:::-;2035:5;-1:-1:-1;2059:2:178;2098:18;;;2085:32;2126:50;2085:32;2126:50;:::i;:::-;2195:7;-1:-1:-1;2249:2:178;2234:18;;2221:32;;-1:-1:-1;2305:2:178;2290:18;;2277:32;2318:50;2277:32;2318:50;:::i;:::-;2387:7;-1:-1:-1;2441:3:178;2426:19;;2413:33;;-1:-1:-1;2497:3:178;2482:19;;2469:33;2521:18;2551:14;;;2548:34;;;2578:1;2575;2568:12;2548:34;2616:6;2605:9;2601:22;2591:32;;2661:7;2654:4;2650:2;2646:13;2642:27;2632:55;;2683:1;2680;2673:12;2632:55;2719:2;2706:16;2741:2;2737;2734:10;2731:36;;;2747:18;;:::i;:::-;2789:53;2832:2;2813:13;;-1:-1:-1;;2809:27:178;2805:36;;2789:53;:::i;:::-;2776:66;;2865:2;2858:5;2851:17;2905:7;2900:2;2895;2891;2887:11;2883:20;2880:33;2877:53;;;2926:1;2923;2916:12;2877:53;2981:2;2976;2972;2968:11;2963:2;2956:5;2952:14;2939:45;3025:1;3020:2;3015;3008:5;3004:14;3000:23;2993:34;;3046:5;3036:15;;;;;1653:1404;;;;;;;;:::o;3477:118::-;3563:5;3556:13;3549:21;3542:5;3539:32;3529:60;;3585:1;3582;3575:12;3600:417;3683:6;3691;3744:2;3732:9;3723:7;3719:23;3715:32;3712:52;;;3760:1;3757;3750:12;3712:52;3799:9;3786:23;3818:48;3860:5;3818:48;:::i;:::-;3885:5;-1:-1:-1;3942:2:178;3927:18;;3914:32;3955:30;3914:32;3955:30;:::i;:::-;4004:7;3994:17;;;3600:417;;;;;:::o;4022:269::-;4079:6;4132:2;4120:9;4111:7;4107:23;4103:32;4100:52;;;4148:1;4145;4138:12;4100:52;4187:9;4174:23;4237:4;4230:5;4226:16;4219:5;4216:27;4206:55;;4257:1;4254;4247:12;4775:440;4861:6;4869;4922:2;4910:9;4901:7;4897:23;4893:32;4890:52;;;4938:1;4935;4928:12;4890:52;4977:9;4964:23;4996:48;5038:5;4996:48;:::i;:::-;5063:5;-1:-1:-1;5120:2:178;5105:18;;5092:32;5133:50;5092:32;5133:50;:::i;5721:508::-;5816:6;5824;5832;5885:2;5873:9;5864:7;5860:23;5856:32;5853:52;;;5901:1;5898;5891:12;5853:52;5940:9;5927:23;5959:48;6001:5;5959:48;:::i;:::-;6026:5;-1:-1:-1;6083:2:178;6068:18;;6055:32;6096:50;6055:32;6096:50;:::i;:::-;5721:508;;6165:7;;-1:-1:-1;;;6219:2:178;6204:18;;;;6191:32;;5721:508::o;6442:472::-;6506:3;6544:5;6538:12;6571:6;6566:3;6559:19;6597:4;6626:2;6621:3;6617:12;6610:19;;6663:2;6656:5;6652:14;6684:1;6694:195;6708:6;6705:1;6702:13;6694:195;;;6773:13;;-1:-1:-1;;;;;6769:39:178;6757:52;;6829:12;;;;6864:15;;;;6805:1;6723:9;6694:195;;;-1:-1:-1;6905:3:178;;6442:472;-1:-1:-1;;;;;6442:472:178:o;6919:435::-;6972:3;7010:5;7004:12;7037:6;7032:3;7025:19;7063:4;7092:2;7087:3;7083:12;7076:19;;7129:2;7122:5;7118:14;7150:1;7160:169;7174:6;7171:1;7168:13;7160:169;;;7235:13;;7223:26;;7269:12;;;;7304:15;;;;7196:1;7189:9;7160:169;;7359:494;7634:2;7623:9;7616:21;7597:4;7660:67;7723:2;7712:9;7708:18;7700:6;7660:67;:::i;:::-;7775:9;7767:6;7763:22;7758:2;7747:9;7743:18;7736:50;7803:44;7840:6;7832;7803:44;:::i;:::-;7795:52;7359:494;-1:-1:-1;;;;;7359:494:178:o;8083:194::-;8154:4;8187:18;8179:6;8176:30;8173:56;;;8209:18;;:::i;:::-;-1:-1:-1;8254:1:178;8250:14;8266:4;8246:25;;8083:194::o;8282:776::-;8347:5;8400:3;8393:4;8385:6;8381:17;8377:27;8367:55;;8418:1;8415;8408:12;8367:55;8454:6;8441:20;8480:4;8504:71;8520:54;8571:2;8520:54;:::i;:::-;8504:71;:::i;:::-;8609:15;;;8695:1;8691:10;;;;8679:23;;8675:32;;;8640:12;;;;8719:15;;;8716:35;;;8747:1;8744;8737:12;8716:35;8783:2;8775:6;8771:15;8795:234;8811:6;8806:3;8803:15;8795:234;;;8891:3;8878:17;8908:48;8950:5;8908:48;:::i;:::-;8969:18;;9007:12;;;;8828;;8795:234;;;-1:-1:-1;9047:5:178;8282:776;-1:-1:-1;;;;;;8282:776:178:o;9063:673::-;9117:5;9170:3;9163:4;9155:6;9151:17;9147:27;9137:55;;9188:1;9185;9178:12;9137:55;9224:6;9211:20;9250:4;9274:71;9290:54;9341:2;9290:54;:::i;9274:71::-;9379:15;;;9465:1;9461:10;;;;9449:23;;9445:32;;;9410:12;;;;9489:15;;;9486:35;;;9517:1;9514;9507:12;9486:35;9553:2;9545:6;9541:15;9565:142;9581:6;9576:3;9573:15;9565:142;;;9647:17;;9635:30;;9685:12;;;;9598;;9565:142;;9741:715;9823:5;9871:4;9859:9;9854:3;9850:19;9846:30;9843:50;;;9889:1;9886;9879:12;9843:50;9922:4;9916:11;9966:4;9958:6;9954:17;10037:6;10025:10;10022:22;10001:18;9989:10;9986:34;9983:62;9980:88;;;10048:18;;:::i;:::-;10084:4;10077:24;10119:6;-1:-1:-1;10119:6:178;10149:23;;10181:50;10149:23;10181:50;:::i;:::-;10240:23;;10315:2;10300:18;;10287:32;10363:26;10350:40;;10338:53;;10328:81;;10405:1;10402;10395:12;10328:81;10437:2;10425:15;;;;10418:32;9741:715;;-1:-1:-1;;9741:715:178:o;10461:163::-;10528:20;;10588:10;10577:22;;10567:33;;10557:61;;10614:1;10611;10604:12;10629:1146;10739:6;10792:2;10780:9;10771:7;10767:23;10763:32;10760:52;;;10808:1;10805;10798:12;10760:52;10848:9;10835:23;10877:18;10918:2;10910:6;10907:14;10904:34;;;10934:1;10931;10924:12;10904:34;10957:22;;;;11013:4;10995:16;;;10991:27;10988:47;;;11031:1;11028;11021:12;10988:47;11057:22;;:::i;:::-;11117:2;11104:16;11145:2;11135:8;11132:16;11129:36;;;11161:1;11158;11151:12;11129:36;11188:67;11247:7;11236:8;11232:2;11228:17;11188:67;:::i;:::-;11181:5;11174:82;;11302:2;11298;11294:11;11281:25;11331:2;11321:8;11318:16;11315:36;;;11347:1;11344;11337:12;11315:36;11383:56;11431:7;11420:8;11416:2;11412:17;11383:56;:::i;:::-;11378:2;11371:5;11367:14;11360:80;;11472:31;11499:2;11495;11491:11;11472:31;:::i;:::-;11467:2;11460:5;11456:14;11449:55;11536:75;11603:7;11598:2;11594;11590:11;11536:75;:::i;:::-;11531:2;11524:5;11520:14;11513:99;11646:31;11672:3;11668:2;11664:12;11646:31;:::i;:::-;11639:4;11632:5;11628:16;11621:57;11711:33;11738:4;11734:2;11730:13;11711:33;:::i;:::-;11705:3;11694:15;;11687:58;11698:5;10629:1146;-1:-1:-1;;;;;10629:1146:178:o;11780:378::-;11854:8;11864:6;11918:3;11911:4;11903:6;11899:17;11895:27;11885:55;;11936:1;11933;11926:12;11885:55;-1:-1:-1;11959:20:178;;12002:18;11991:30;;11988:50;;;12034:1;12031;12024:12;11988:50;12071:4;12063:6;12059:17;12047:29;;12131:3;12124:4;12114:6;12111:1;12107:14;12099:6;12095:27;12091:38;12088:47;12085:67;;;12148:1;12145;12138:12;12163:466;12267:6;12275;12328:2;12316:9;12307:7;12303:23;12299:32;12296:52;;;12344:1;12341;12334:12;12296:52;12384:9;12371:23;12417:18;12409:6;12406:30;12403:50;;;12449:1;12446;12439:12;12403:50;12488:81;12561:7;12552:6;12541:9;12537:22;12488:81;:::i;:::-;12588:8;;12462:107;;-1:-1:-1;12163:466:178;-1:-1:-1;;;;12163:466:178:o;12819:683::-;12939:6;12947;12955;12963;13016:3;13004:9;12995:7;12991:23;12987:33;12984:53;;;13033:1;13030;13023:12;12984:53;13072:9;13059:23;13091:48;13133:5;13091:48;:::i;:::-;13158:5;-1:-1:-1;13215:2:178;13200:18;;13187:32;13228:50;13187:32;13228:50;:::i;:::-;13297:7;-1:-1:-1;13356:2:178;13341:18;;13328:32;13369:50;13328:32;13369:50;:::i;:::-;12819:683;;;;-1:-1:-1;13438:7:178;;13492:2;13477:18;13464:32;;-1:-1:-1;;12819:683:178:o;13507:::-;13627:6;13635;13643;13651;13704:3;13692:9;13683:7;13679:23;13675:33;13672:53;;;13721:1;13718;13711:12;13672:53;13760:9;13747:23;13779:48;13821:5;13779:48;:::i;:::-;13846:5;-1:-1:-1;13903:2:178;13888:18;;13875:32;13916:50;13875:32;13916:50;:::i;:::-;13985:7;-1:-1:-1;14039:2:178;14024:18;;14011:32;;-1:-1:-1;14095:2:178;14080:18;;14067:32;14108:50;14067:32;14108:50;:::i;:::-;13507:683;;;;-1:-1:-1;13507:683:178;;-1:-1:-1;;13507:683:178:o;14195:332::-;14263:6;14271;14324:2;14312:9;14303:7;14299:23;14295:32;14292:52;;;14340:1;14337;14330:12;14292:52;14379:9;14366:23;14398:48;14440:5;14398:48;:::i;:::-;14465:5;14517:2;14502:18;;;;14489:32;;-1:-1:-1;;;14195:332:178:o;15699:810::-;15836:6;15844;15852;15860;15913:2;15901:9;15892:7;15888:23;15884:32;15881:52;;;15929:1;15926;15919:12;15881:52;15969:9;15956:23;15998:18;16039:2;16031:6;16028:14;16025:34;;;16055:1;16052;16045:12;16025:34;16094:81;16167:7;16158:6;16147:9;16143:22;16094:81;:::i;:::-;16194:8;;-1:-1:-1;16068:107:178;-1:-1:-1;16282:2:178;16267:18;;16254:32;;-1:-1:-1;16298:16:178;;;16295:36;;;16327:1;16324;16317:12;16295:36;;16366:83;16441:7;16430:8;16419:9;16415:24;16366:83;:::i;:::-;15699:810;;;;-1:-1:-1;16468:8:178;-1:-1:-1;;;;15699:810:178:o;17278:268::-;17348:6;17401:2;17389:9;17380:7;17376:23;17372:32;17369:52;;;17417:1;17414;17407:12;17369:52;17449:9;17443:16;17468:48;17510:5;17468:48;:::i;17551:406::-;17753:2;17735:21;;;17792:2;17772:18;;;17765:30;17831:34;17826:2;17811:18;;17804:62;-1:-1:-1;;;17897:2:178;17882:18;;17875:40;17947:3;17932:19;;17551:406::o;17962:245::-;18029:6;18082:2;18070:9;18061:7;18057:23;18053:32;18050:52;;;18098:1;18095;18088:12;18050:52;18130:9;18124:16;18149:28;18171:5;18149:28;:::i;18212:404::-;18414:2;18396:21;;;18453:2;18433:18;;;18426:30;18492:34;18487:2;18472:18;;18465:62;-1:-1:-1;;;18558:2:178;18543:18;;18536:38;18606:3;18591:19;;18212:404::o;21827:472::-;22029:2;22011:21;;;22068:2;22048:18;;;22041:30;22107:34;22102:2;22087:18;;22080:62;22178:34;22173:2;22158:18;;22151:62;-1:-1:-1;;;22244:3:178;22229:19;;22222:35;22289:3;22274:19;;21827:472::o;22304:428::-;22506:2;22488:21;;;22545:2;22525:18;;;22518:30;;;22584:34;22564:18;;;22557:62;22655:34;22650:2;22635:18;;22628:62;22722:3;22707:19;;22304:428::o;22737:127::-;22798:10;22793:3;22789:20;22786:1;22779:31;22829:4;22826:1;22819:15;22853:4;22850:1;22843:15;22869:1068;23360:3;23349:9;23342:22;23323:4;23387:68;23450:3;23439:9;23435:19;23427:6;23387:68;:::i;:::-;23503:9;23495:6;23491:22;23486:2;23475:9;23471:18;23464:50;23531:44;23568:6;23560;23531:44;:::i;:::-;-1:-1:-1;;;;;23649:15:178;;;23644:2;23629:18;;23622:43;23705:13;;23701:22;;23696:2;23681:18;;23674:50;23783:2;23771:15;;;23765:22;23789:26;23761:55;23755:3;23740:19;;23733:84;-1:-1:-1;;23866:10:178;23854:23;;;;23602:3;23833:19;;23826:52;23915:15;;;23909:3;23894:19;;;23887:44;;;;23523:52;22869:1068;-1:-1:-1;;22869:1068:178:o;25436:241::-;25492:6;25545:2;25533:9;25524:7;25520:23;25516:32;25513:52;;;25561:1;25558;25551:12;25513:52;25600:9;25587:23;25619:28;25641:5;25619:28;:::i;27353:258::-;27425:1;27435:113;27449:6;27446:1;27443:13;27435:113;;;27525:11;;;27519:18;27506:11;;;27499:39;27471:2;27464:10;27435:113;;;27566:6;27563:1;27560:13;27557:48;;;-1:-1:-1;;27601:1:178;27583:16;;27576:27;27353:258::o;27616:257::-;27657:3;27695:5;27689:12;27722:6;27717:3;27710:19;27738:63;27794:6;27787:4;27782:3;27778:14;27771:4;27764:5;27760:16;27738:63;:::i;:::-;27855:2;27834:15;-1:-1:-1;;27830:29:178;27821:39;;;;27862:4;27817:50;;27616:257;-1:-1:-1;;27616:257:178:o;27878:288::-;28053:6;28042:9;28035:25;28096:2;28091;28080:9;28076:18;28069:30;28016:4;28116:44;28156:2;28145:9;28141:18;28133:6;28116:44;:::i;28171:290::-;28240:6;28293:2;28281:9;28272:7;28268:23;28264:32;28261:52;;;28309:1;28306;28299:12;28261:52;28335:16;;-1:-1:-1;;;;;;28380:32:178;;28370:43;;28360:71;;28427:1;28424;28417:12;30219:184;30289:6;30342:2;30330:9;30321:7;30317:23;30313:32;30310:52;;;30358:1;30355;30348:12;30310:52;-1:-1:-1;30381:16:178;;30219:184;-1:-1:-1;30219:184:178:o;33663:127::-;33724:10;33719:3;33715:20;33712:1;33705:31;33755:4;33752:1;33745:15;33779:4;33776:1;33769:15;33795:128;33835:3;33866:1;33862:6;33859:1;33856:13;33853:39;;;33872:18;;:::i;:::-;-1:-1:-1;33908:9:178;;33795:128::o;36014:125::-;36054:4;36082:1;36079;36076:8;36073:34;;;36087:18;;:::i;:::-;-1:-1:-1;36124:9:178;;36014:125::o;36626:127::-;36687:10;36682:3;36678:20;36675:1;36668:31;36718:4;36715:1;36708:15;36742:4;36739:1;36732:15;36758:127;36819:10;36814:3;36810:20;36807:1;36800:31;36850:4;36847:1;36840:15;36874:4;36871:1;36864:15;39988:274;40117:3;40155:6;40149:13;40171:53;40217:6;40212:3;40205:4;40197:6;40193:17;40171:53;:::i;:::-;40240:16;;;;;39988:274;-1:-1:-1;;39988:274:178:o;40267:219::-;40416:2;40405:9;40398:21;40379:4;40436:44;40476:2;40465:9;40461:18;40453:6;40436:44;:::i","linkReferences":{},"immutableReferences":{"5337":[{"start":5661,"length":32}],"6323":[{"start":1435,"length":32},{"start":3077,"length":32},{"start":3999,"length":32},{"start":4083,"length":32},{"start":4343,"length":32},{"start":7123,"length":32}],"6326":[{"start":678,"length":32}],"6329":[{"start":1167,"length":32}]}},"methodIdentifiers":{"DEPOSIT_TYPEHASH()":"48825e94","DOMAIN_TYPEHASH()":"20606b70","addShares(address,address,address,uint256)":"c4623ea1","addStrategiesToDepositWhitelist(address[],bool[])":"df5b3547","calculateWithdrawalRoot((address[],uint256[],address,(address,uint96),uint32,address))":"b43b514b","delegation()":"df5cf723","depositIntoStrategy(address,address,uint256)":"e7a050aa","depositIntoStrategyWithSignature(address,address,uint256,address,uint256,bytes)":"32e89ace","domainSeparator()":"f698da25","eigenPodManager()":"4665bcda","getDeposits(address)":"94f649dd","initialize(address,address,address,uint256)":"cf756fdf","migrateQueuedWithdrawal((address[],uint256[],address,(address,uint96),uint32,address))":"cd293f6f","nonces(address)":"7ecebe00","owner()":"8da5cb5b","pause(uint256)":"136439dd","pauseAll()":"595c6a67","paused()":"5c975abb","paused(uint8)":"5ac86ab7","pauserRegistry()":"886f1195","removeShares(address,address,uint256)":"8c80d4e5","removeStrategiesFromDepositWhitelist(address[])":"b5d8b5b8","renounceOwnership()":"715018a6","setPauserRegistry(address)":"10d67a2f","setStrategyWhitelister(address)":"c6656702","setThirdPartyTransfersForbidden(address,bool)":"4e5a4263","slasher()":"b1344271","stakerStrategyList(address,uint256)":"cbc2bd62","stakerStrategyListLength(address)":"8b8aac3c","stakerStrategyShares(address,address)":"7a7e0d92","strategyIsWhitelistedForDeposit(address)":"663c1de4","strategyWhitelister()":"967fc0d2","thirdPartyTransfersForbidden(address)":"9b4da03d","transferOwnership(address)":"f2fde38b","unpause(uint256)":"fabc1cbc","withdrawSharesAsTokens(address,address,uint256,address)":"c608c7f3","withdrawalRootPending(bytes32)":"c3c6b3a9"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IDelegationManager\",\"name\":\"_delegation\",\"type\":\"address\"},{\"internalType\":\"contract IEigenPodManager\",\"name\":\"_eigenPodManager\",\"type\":\"address\"},{\"internalType\":\"contract ISlasher\",\"name\":\"_slasher\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IPauserRegistry\",\"name\":\"pauserRegistry\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"PauserRegistrySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyAddedToDepositWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyRemovedFromDepositWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"StrategyWhitelisterChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"UpdatedThirdPartyTransfersForbidden\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEPOSIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"addShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategiesToWhitelist\",\"type\":\"address[]\"},{\"internalType\":\"bool[]\",\"name\":\"thirdPartyTransfersForbiddenValues\",\"type\":\"bool[]\"}],\"name\":\"addStrategiesToDepositWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"nonce\",\"type\":\"uint96\"}],\"internalType\":\"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce\",\"name\":\"withdrawerAndNonce\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"delegatedAddress\",\"type\":\"address\"}],\"internalType\":\"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal\",\"name\":\"queuedWithdrawal\",\"type\":\"tuple\"}],\"name\":\"calculateWithdrawalRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegation\",\"outputs\":[{\"internalType\":\"contract IDelegationManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositIntoStrategy\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"depositIntoStrategyWithSignature\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"domainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eigenPodManager\",\"outputs\":[{\"internalType\":\"contract IEigenPodManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"getDeposits\",\"outputs\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialStrategyWhitelister\",\"type\":\"address\"},{\"internalType\":\"contract IPauserRegistry\",\"name\":\"_pauserRegistry\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialPausedStatus\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"nonce\",\"type\":\"uint96\"}],\"internalType\":\"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce\",\"name\":\"withdrawerAndNonce\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"delegatedAddress\",\"type\":\"address\"}],\"internalType\":\"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal\",\"name\":\"queuedWithdrawal\",\"type\":\"tuple\"}],\"name\":\"migrateQueuedWithdrawal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauserRegistry\",\"outputs\":[{\"internalType\":\"contract IPauserRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"removeShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategiesToRemoveFromWhitelist\",\"type\":\"address[]\"}],\"name\":\"removeStrategiesFromDepositWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"setPauserRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newStrategyWhitelister\",\"type\":\"address\"}],\"name\":\"setStrategyWhitelister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"setThirdPartyTransfersForbidden\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slasher\",\"outputs\":[{\"internalType\":\"contract ISlasher\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"stakerStrategyList\",\"outputs\":[{\"internalType\":\"contract IStrategy\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"stakerStrategyListLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"stakerStrategyShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStrategy\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"strategyIsWhitelistedForDeposit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"strategyWhitelister\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStrategy\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"thirdPartyTransfersForbidden\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"withdrawSharesAsTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"withdrawalRootPending\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"kind\":\"dev\",\"methods\":{\"addStrategiesToDepositWhitelist(address[],bool[])\":{\"params\":{\"strategiesToWhitelist\":\"Strategies that will be added to the `strategyIsWhitelistedForDeposit` mapping (if they aren't in it already)\",\"thirdPartyTransfersForbiddenValues\":\"bool values to set `thirdPartyTransfersForbidden` to for each strategy\"}},\"constructor\":{\"params\":{\"_delegation\":\"The delegation contract of EigenLayer.\",\"_eigenPodManager\":\"The contract that keeps track of EigenPod stakes for restaking beacon chain ether.\",\"_slasher\":\"The primary slashing contract of EigenLayer.\"}},\"depositIntoStrategy(address,address,uint256)\":{\"details\":\"The `msg.sender` must have previously approved this contract to transfer at least `amount` of `token` on their behalf. WARNING: Depositing tokens that allow reentrancy (eg. ERC-777) into a strategy is not recommended. This can lead to attack vectors where the token balance and corresponding strategy shares are not in sync upon reentrancy.\",\"params\":{\"amount\":\"is the amount of token to be deposited in the strategy by the staker\",\"strategy\":\"is the specified strategy where deposit is to be made,\",\"token\":\"is the denomination in which the deposit is to be made,\"},\"returns\":{\"shares\":\"The amount of new shares in the `strategy` created as part of the action.\"}},\"depositIntoStrategyWithSignature(address,address,uint256,address,uint256,bytes)\":{\"details\":\"The `msg.sender` must have previously approved this contract to transfer at least `amount` of `token` on their behalf.A signature is required for this function to eliminate the possibility of griefing attacks, specifically those targeting stakers who may be attempting to undelegate.Cannot be called if thirdPartyTransfersForbidden is set to true for this strategy WARNING: Depositing tokens that allow reentrancy (eg. ERC-777) into a strategy is not recommended. This can lead to attack vectors where the token balance and corresponding strategy shares are not in sync upon reentrancy\",\"params\":{\"amount\":\"is the amount of token to be deposited in the strategy by the staker\",\"expiry\":\"the timestamp at which the signature expires\",\"signature\":\"is a valid signature from the `staker`. either an ECDSA signature if the `staker` is an EOA, or data to forward following EIP-1271 if the `staker` is a contract\",\"staker\":\"the staker that the deposited assets will be credited to\",\"strategy\":\"is the specified strategy where deposit is to be made,\",\"token\":\"is the denomination in which the deposit is to be made,\"},\"returns\":{\"shares\":\"The amount of new shares in the `strategy` created as part of the action.\"}},\"domainSeparator()\":{\"details\":\"The domain separator will change in the event of a fork that changes the ChainID.\"},\"getDeposits(address)\":{\"params\":{\"staker\":\"The staker of interest, whose deposits this function will fetch\"},\"returns\":{\"_0\":\"(staker's strategies, shares in these strategies)\"}},\"initialize(address,address,address,uint256)\":{\"params\":{\"_pauserRegistry\":\"Used for access control of pausing.\",\"initialOwner\":\"Ownership of this contract is transferred to this address.\",\"initialPausedStatus\":\"The initial value of `_paused` to set.\",\"initialStrategyWhitelister\":\"The initial value of `strategyWhitelister` to set.\"}},\"migrateQueuedWithdrawal((address[],uint256[],address,(address,uint96),uint32,address))\":{\"details\":\"This function is expected to be removed in the next upgrade, after all queued withdrawals have been migrated.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pause(uint256)\":{\"details\":\"This function can only pause functionality, and thus cannot 'unflip' any bit in `_paused` from 1 to 0.\",\"params\":{\"newPausedStatus\":\"represents the new value for `_paused` to take, which means it may flip several bits at once.\"}},\"removeStrategiesFromDepositWhitelist(address[])\":{\"params\":{\"strategiesToRemoveFromWhitelist\":\"Strategies that will be removed to the `strategyIsWhitelistedForDeposit` mapping (if they are in it)\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setStrategyWhitelister(address)\":{\"params\":{\"newStrategyWhitelister\":\"new address for the `strategyWhitelister`.\"}},\"setThirdPartyTransfersForbidden(address,bool)\":{\"params\":{\"strategy\":\"The strategy to set `thirdPartyTransfersForbidden` value to\",\"value\":\"bool value to set `thirdPartyTransfersForbidden` to\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unpause(uint256)\":{\"details\":\"This function can only unpause functionality, and thus cannot 'flip' any bit in `_paused` from 0 to 1.\",\"params\":{\"newPausedStatus\":\"represents the new value for `_paused` to take, which means it may flip several bits at once.\"}}},\"title\":\"The primary entry- and exit-point for funds into and out of EigenLayer.\",\"version\":1},\"userdoc\":{\"events\":{\"Deposit(address,address,address,uint256)\":{\"notice\":\"Emitted when a new deposit occurs on behalf of `staker`.\"},\"Paused(address,uint256)\":{\"notice\":\"Emitted when the pause is triggered by `account`, and changed to `newPausedStatus`.\"},\"PauserRegistrySet(address,address)\":{\"notice\":\"Emitted when the `pauserRegistry` is set to `newPauserRegistry`.\"},\"StrategyAddedToDepositWhitelist(address)\":{\"notice\":\"Emitted when a strategy is added to the approved list of strategies for deposit\"},\"StrategyRemovedFromDepositWhitelist(address)\":{\"notice\":\"Emitted when a strategy is removed from the approved list of strategies for deposit\"},\"StrategyWhitelisterChanged(address,address)\":{\"notice\":\"Emitted when the `strategyWhitelister` is changed\"},\"Unpaused(address,uint256)\":{\"notice\":\"Emitted when the pause is lifted by `account`, and changed to `newPausedStatus`.\"},\"UpdatedThirdPartyTransfersForbidden(address,bool)\":{\"notice\":\"Emitted when `thirdPartyTransfersForbidden` is updated for a strategy and value by the owner\"}},\"kind\":\"user\",\"methods\":{\"DEPOSIT_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the deposit struct used by the contract\"},\"DOMAIN_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the contract's domain\"},\"addShares(address,address,address,uint256)\":{\"notice\":\"Used by the DelegationManager to award a Staker some shares that have passed through the withdrawal queue\"},\"addStrategiesToDepositWhitelist(address[],bool[])\":{\"notice\":\"Owner-only function that adds the provided Strategies to the 'whitelist' of strategies that stakers can deposit into\"},\"calculateWithdrawalRoot((address[],uint256[],address,(address,uint96),uint32,address))\":{\"notice\":\"Returns the keccak256 hash of `queuedWithdrawal`.\"},\"delegation()\":{\"notice\":\"Returns the single, central Delegation contract of EigenLayer\"},\"depositIntoStrategy(address,address,uint256)\":{\"notice\":\"Deposits `amount` of `token` into the specified `strategy`, with the resultant shares credited to `msg.sender`\"},\"depositIntoStrategyWithSignature(address,address,uint256,address,uint256,bytes)\":{\"notice\":\"Used for depositing an asset into the specified strategy with the resultant shares credited to `staker`, who must sign off on the action. Note that the assets are transferred out/from the `msg.sender`, not from the `staker`; this function is explicitly designed purely to help one address deposit 'for' another.\"},\"domainSeparator()\":{\"notice\":\"Getter function for the current EIP-712 domain separator for this contract.\"},\"eigenPodManager()\":{\"notice\":\"Returns the EigenPodManager contract of EigenLayer\"},\"getDeposits(address)\":{\"notice\":\"Get all details on the staker's deposits and corresponding shares\"},\"initialize(address,address,address,uint256)\":{\"notice\":\"Initializes the strategy manager contract. Sets the `pauserRegistry` (currently **not** modifiable after being set), and transfers contract ownership to the specified `initialOwner`.\"},\"migrateQueuedWithdrawal((address[],uint256[],address,(address,uint96),uint32,address))\":{\"notice\":\"Function called by the DelegationManager as part of the process of transferring existing queued withdrawals from this contract to that contract.\"},\"pause(uint256)\":{\"notice\":\"This function is used to pause an EigenLayer contract's functionality. It is permissioned to the `pauser` address, which is expected to be a low threshold multisig.\"},\"pauseAll()\":{\"notice\":\"Alias for `pause(type(uint256).max)`.\"},\"paused()\":{\"notice\":\"Returns the current paused status as a uint256.\"},\"paused(uint8)\":{\"notice\":\"Returns 'true' if the `indexed`th bit of `_paused` is 1, and 'false' otherwise\"},\"pauserRegistry()\":{\"notice\":\"Address of the `PauserRegistry` contract that this contract defers to for determining access control (for pausing).\"},\"removeShares(address,address,uint256)\":{\"notice\":\"Used by the DelegationManager to remove a Staker's shares from a particular strategy when entering the withdrawal queue\"},\"removeStrategiesFromDepositWhitelist(address[])\":{\"notice\":\"Owner-only function that removes the provided Strategies from the 'whitelist' of strategies that stakers can deposit into\"},\"setPauserRegistry(address)\":{\"notice\":\"Allows the unpauser to set a new pauser registry\"},\"setStrategyWhitelister(address)\":{\"notice\":\"Owner-only function to change the `strategyWhitelister` address.\"},\"setThirdPartyTransfersForbidden(address,bool)\":{\"notice\":\"If true for a strategy, a user cannot depositIntoStrategyWithSignature into that strategy for another staker and also when performing DelegationManager.queueWithdrawals, a staker can only withdraw to themselves. Defaulted to false for all existing strategies.\"},\"slasher()\":{\"notice\":\"Returns the single, central Slasher contract of EigenLayer\"},\"stakerStrategyList(address,uint256)\":{\"notice\":\"Mapping: staker => array of strategies in which they have nonzero shares\"},\"stakerStrategyListLength(address)\":{\"notice\":\"Simple getter function that returns `stakerStrategyList[staker].length`.\"},\"stakerStrategyShares(address,address)\":{\"notice\":\"Mapping: staker => Strategy => number of shares which they currently hold\"},\"strategyIsWhitelistedForDeposit(address)\":{\"notice\":\"Mapping: strategy => whether or not stakers are allowed to deposit into it\"},\"strategyWhitelister()\":{\"notice\":\"Permissioned role, which can be changed by the contract owner. Has the ability to edit the strategy whitelist\"},\"thirdPartyTransfersForbidden(address)\":{\"notice\":\"Mapping: strategy => whether or not stakers are allowed to transfer strategy shares to another address if true for a strategy, a user cannot depositIntoStrategyWithSignature into that strategy for another staker and also when performing queueWithdrawals, a staker can only withdraw to themselves\"},\"unpause(uint256)\":{\"notice\":\"This function is used to unpause an EigenLayer contract's functionality. It is permissioned to the `unpauser` address, which is expected to be a high threshold multisig or governance contract.\"},\"withdrawSharesAsTokens(address,address,uint256,address)\":{\"notice\":\"Used by the DelegationManager to convert withdrawn shares to tokens and send them to a recipient\"},\"withdrawalRootPending(bytes32)\":{\"notice\":\"*Deprecated* mapping: hash of withdrawal inputs, aka 'withdrawalRoot' => whether the withdrawal is pending\"}},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-serviceThis contract is for managing deposits in different strategies. The main functionalities are: - adding and removing strategies that any delegator can deposit into - enabling deposit of assets into specified strategy(s)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/eigenlayer-contracts/src/contracts/core/StrategyManager.sol\":\"StrategyManager\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/src/contracts/core/StrategyManager.sol\":{\"keccak256\":\"0x50e8a802c3b7acdd1bd5f027ede747f2c99239819d477396e4103ede1014147e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://072893efd7d13eaec2e1c9b0ba9f44a269c44dffec61348f7016f18263091039\",\"dweb:/ipfs/QmNNZP1MhYCCYsXf1ryeWHWpP4GHMrnXiFnxZxLHUBbSbk\"]},\"lib/eigenlayer-contracts/src/contracts/core/StrategyManagerStorage.sol\":{\"keccak256\":\"0x47fea5e226651802ceda372cf9e01063853bb6cd5e315ab0fa3c349890438bf6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ce7f1ed5cdd9e247d2dec16022ec9ee2c0713110ddfce62824f4d6500f40b44b\",\"dweb:/ipfs/QmfHs4JcnXXmeyAr4RX98dYo6cgzpKpH22tgt4zekpaa2U\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x9906828f285cc76bbbe077f908d87c4bffd0a3bff9394f7a4b60a9d9a2672c1e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4c0f43e14e50ac322685b5cd301459118e2770bdfb053f8f3ded08ee9fbf5bf9\",\"dweb:/ipfs/QmPQtY6KEUCbrKwweu8BvA7YjnXXxkkuZPyLSRGV5EoPTe\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x1f8e17b0f952042132ca64e202022d83783b7f42ec364cd0cad1950ecb95a13d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a2be4c476902f25fb058f779e3d4e5b1182d9dc9fbdec518acbe9544c0d3c141\",\"dweb:/ipfs/QmdgZq6JrCD36Xry2vD8QSeGguGQ9TGWY2CMvKrhR9NQ6u\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x22b7a17d53696412f80645f1fa65274ae89040bdc706262e3b6cc577dbafcaa4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b15002346892a48fd7cf9a8a4cf121e17ba133d21e4822e71fbffac85117d6b2\",\"dweb:/ipfs/QmRBPJUcRQ6uKmSvCYhhtVWcKCAWkQFSVZZwZR7HR42kiz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x33a935182f77cfd508fc57ec8e45afc8dc3748e1e9b764d36bf90ae6466f257b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d3981b5bbf435cda04e2ed2f348f886ebf1500c18dd4bbf67b1f1bc0272e2d3f\",\"dweb:/ipfs/QmYHDzQx29ataM2ejRCXFcPxaPdxWqX8v7uwUAYoG9572w\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xffafae142d5337a5c204519e8f82fe3a5fae137286ebf597fa50699cf12c2474\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b577a12f7788095b230fd069b36ba9b3cdb376a0b7c3d8ae71588e5bf0c2f574\",\"dweb:/ipfs/QmXd1cDzYpxecyFEwowLiBKKjzRHgV8cs1qvLwypdEbVYy\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b\",\"dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x3d9eeecf96bd8d6427445db76b9a73f9861c6c3601001226bed2f7fb81e252e6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c836719a65892c5cffdba9de4e009e5f8a4e49aea9c5f46d57b15660c6c2d07d\",\"dweb:/ipfs/QmWuzNq2HdEH1hsRg8Jc95k1DZdNjXFb5ehkz9iLNNSqhT\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xaeee2ac5cfcc3388b63bef2668fa435c65a4b433b52ce9f5013822c6ec875fa3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://86eb6d3da5b45f7509995ffa170eaaadffbdd6d43e50f0902d421bb93a7dfda6\",\"dweb:/ipfs/QmWaYcgtnaVpcekSP7LyY6AGrE3hRE3kZE4H4EKhsSysDG\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x633b5fb10209891f696a9c8db4d7327ed7f560a2e9710489e38a67daeda59a96\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c8381baaec3afa6b200420c093706974776dfd14f6887abe7457eb867351a068\",\"dweb:/ipfs/QmP9H9ttS1sJ6FrvMEefJhU6B4z1wMCjcYYZqVfsLXagJE\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/EIP1271SignatureUtils.sol\":{\"keccak256\":\"0xe92d584c47c5828e026a8082af3da38a853e3942c4da7deb705d6470a41afab3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1c436c578781fd7d3dffdb24e906819422819f5e9a71d39ee63166a3d5cb3373\",\"dweb:/ipfs/QmP7bJhYqLpwqk2Xq4tqDCUMi2nFAhxxW3Pz36ctE1sbdD\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0x1c5895f913e95682b0c371595cb1fa0d9c34ea921a0fbb5c32201b4315e80a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c470e449a3144fbaaa17b44823ba9cba901f063b04355c800bf62cabdd081cd4\",\"dweb:/ipfs/QmSJ8gaAF4WA1aXGmLesnnRo8fDZNEFnqZSGNkJnXLRM9R\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0xcf8422dfa6ccc393de19417570c6239e0fde54de9433ea258cbeb6937ff7f316\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://328e582c05b7311ad4107c46f554f15b5572b89a4ab6d067c73425b7418d946c\",\"dweb:/ipfs/QmdM81GQY5nok5oCTP8Cc6M8s1UC9f6ZbSWybaUxrZNrmY\"]},\"lib/eigenlayer-contracts/src/contracts/permissions/Pausable.sol\":{\"keccak256\":\"0x53a08f01d778b91604dc1d27d4805fa99b9a2993f26e6079a1d8701699dc9f21\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://8fd5dd22dcb1fb4f803843b920501679f252ccf100a06acbad7a22452cdc1173\",\"dweb:/ipfs/QmeyoJoTN3Gi7Q4Fk4y89UTDDnyPFmSbdu8N7Vyijwjx2s\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xd6b579f342ff00b0b45eb2b97f1fb5274a2c52a8f59f13f174394a26b0c2030e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://55f68d7ea9ac2b0369c77e91b737d0e7991c302bf07b5a5b507147c449bcde20\",\"dweb:/ipfs/QmT8Uv9f7SbxmXsmUgrBpKMYjwv6fD3EFQB22fu51nYGLp\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x1e4597b288e792b4530cbc7e97e28754e8457969e61a86d9e6e3a2857eb8a68f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://41fb94e2f5df15c1d070865db82373dc85e52bc3a2f85e3aa338488f8616532c\",\"dweb:/ipfs/QmeKTieHBEur42JbTkn2JChdGx3GT9YZbVCP7wj2ejQvMj\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x1e5f62292e000eb24ff5a82fbe1310b5a03871d008bcd2e203e08cd044af0466\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d300b99404ad2930649be8508f7b1ed9940bc82facb7291a0540c1ec42badcaa\",\"dweb:/ipfs/QmW2xV7vTvtyJPDb5PwYBRSrs2qGMWV5rT6V9dzjaPUp9q\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e\",\"dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0x5fc40a61a22b8946e0ce31706ead391db6630b86dac67d240b8c2c15332d55e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08683782a30b65820507e570d3c3dbe6b28f227ece38faceba4006f0a5cdcd89\",\"dweb:/ipfs/QmWdZwfH5PqSa3g8xUFvKj9awcYGiX2hpGLy9zmrrRibzq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xb6e80baaeee0bf82ef5ea731e44b655b68c9d552f608f63c20493dba812d03de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a21bc37aeded55861430416fcb820a9529231b079ac97458d51240b83229e25e\",\"dweb:/ipfs/QmVR47X1A7EyMgheAGXjKt6e1gJUhjYq3iVLgS2Y9LQbck\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x78297d2d2e50b4fec6a42ecf5be5c76a6c102810388d11f165a363e0aa8f5034\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09968869e3943f45df330f42bdb49f96c71f55b5a424c73faba95135fafc5c78\",\"dweb:/ipfs/QmTLAoVbabvKZybmaFEHwib1feE2gWwN5yMcQBADVyBM5E\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xf57046ce68c681ede23c9a117b8ed58b7c960dc7f806ab8a4db80a0dac737a88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://beec7753d3491d55fb6f416e28ec8dd79b5f866405025fab32d51e3ae027e865\",\"dweb:/ipfs/QmQdqhSufKYphPsy3PQzjzu3VqbXk5mzuSm2grk345rPCh\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IDelegationManager","name":"_delegation","type":"address"},{"internalType":"contract IEigenPodManager","name":"_eigenPodManager","type":"address"},{"internalType":"contract ISlasher","name":"_slasher","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"staker","type":"address","indexed":false},{"internalType":"contract IERC20","name":"token","type":"address","indexed":false},{"internalType":"contract IStrategy","name":"strategy","type":"address","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"Deposit","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"newPausedStatus","type":"uint256","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"contract IPauserRegistry","name":"pauserRegistry","type":"address","indexed":false},{"internalType":"contract IPauserRegistry","name":"newPauserRegistry","type":"address","indexed":false}],"type":"event","name":"PauserRegistrySet","anonymous":false},{"inputs":[{"internalType":"contract IStrategy","name":"strategy","type":"address","indexed":false}],"type":"event","name":"StrategyAddedToDepositWhitelist","anonymous":false},{"inputs":[{"internalType":"contract IStrategy","name":"strategy","type":"address","indexed":false}],"type":"event","name":"StrategyRemovedFromDepositWhitelist","anonymous":false},{"inputs":[{"internalType":"address","name":"previousAddress","type":"address","indexed":false},{"internalType":"address","name":"newAddress","type":"address","indexed":false}],"type":"event","name":"StrategyWhitelisterChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"newPausedStatus","type":"uint256","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"contract IStrategy","name":"strategy","type":"address","indexed":false},{"internalType":"bool","name":"value","type":"bool","indexed":false}],"type":"event","name":"UpdatedThirdPartyTransfersForbidden","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEPOSIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"addShares"},{"inputs":[{"internalType":"contract IStrategy[]","name":"strategiesToWhitelist","type":"address[]"},{"internalType":"bool[]","name":"thirdPartyTransfersForbiddenValues","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"addStrategiesToDepositWhitelist"},{"inputs":[{"internalType":"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal","name":"queuedWithdrawal","type":"tuple","components":[{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"address","name":"staker","type":"address"},{"internalType":"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce","name":"withdrawerAndNonce","type":"tuple","components":[{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint96","name":"nonce","type":"uint96"}]},{"internalType":"uint32","name":"withdrawalStartBlock","type":"uint32"},{"internalType":"address","name":"delegatedAddress","type":"address"}]}],"stateMutability":"pure","type":"function","name":"calculateWithdrawalRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"delegation","outputs":[{"internalType":"contract IDelegationManager","name":"","type":"address"}]},{"inputs":[{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"depositIntoStrategy","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}]},{"inputs":[{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"staker","type":"address"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"depositIntoStrategyWithSignature","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"domainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eigenPodManager","outputs":[{"internalType":"contract IEigenPodManager","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"stateMutability":"view","type":"function","name":"getDeposits","outputs":[{"internalType":"contract IStrategy[]","name":"","type":"address[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"address","name":"initialStrategyWhitelister","type":"address"},{"internalType":"contract IPauserRegistry","name":"_pauserRegistry","type":"address"},{"internalType":"uint256","name":"initialPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal","name":"queuedWithdrawal","type":"tuple","components":[{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"address","name":"staker","type":"address"},{"internalType":"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce","name":"withdrawerAndNonce","type":"tuple","components":[{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint96","name":"nonce","type":"uint96"}]},{"internalType":"uint32","name":"withdrawalStartBlock","type":"uint32"},{"internalType":"address","name":"delegatedAddress","type":"address"}]}],"stateMutability":"nonpayable","type":"function","name":"migrateQueuedWithdrawal","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"newPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseAll"},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"}],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pauserRegistry","outputs":[{"internalType":"contract IPauserRegistry","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"removeShares"},{"inputs":[{"internalType":"contract IStrategy[]","name":"strategiesToRemoveFromWhitelist","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"removeStrategiesFromDepositWhitelist"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"contract IPauserRegistry","name":"newPauserRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPauserRegistry"},{"inputs":[{"internalType":"address","name":"newStrategyWhitelister","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStrategyWhitelister"},{"inputs":[{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setThirdPartyTransfersForbidden"},{"inputs":[],"stateMutability":"view","type":"function","name":"slasher","outputs":[{"internalType":"contract ISlasher","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"stakerStrategyList","outputs":[{"internalType":"contract IStrategy","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"stateMutability":"view","type":"function","name":"stakerStrategyListLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"contract IStrategy","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"stakerStrategyShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract IStrategy","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"strategyIsWhitelistedForDeposit","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"strategyWhitelister","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"contract IStrategy","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"thirdPartyTransfersForbidden","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"uint256","name":"newPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"contract IERC20","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"withdrawSharesAsTokens"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"withdrawalRootPending","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"addStrategiesToDepositWhitelist(address[],bool[])":{"params":{"strategiesToWhitelist":"Strategies that will be added to the `strategyIsWhitelistedForDeposit` mapping (if they aren't in it already)","thirdPartyTransfersForbiddenValues":"bool values to set `thirdPartyTransfersForbidden` to for each strategy"}},"constructor":{"params":{"_delegation":"The delegation contract of EigenLayer.","_eigenPodManager":"The contract that keeps track of EigenPod stakes for restaking beacon chain ether.","_slasher":"The primary slashing contract of EigenLayer."}},"depositIntoStrategy(address,address,uint256)":{"details":"The `msg.sender` must have previously approved this contract to transfer at least `amount` of `token` on their behalf. WARNING: Depositing tokens that allow reentrancy (eg. ERC-777) into a strategy is not recommended. This can lead to attack vectors where the token balance and corresponding strategy shares are not in sync upon reentrancy.","params":{"amount":"is the amount of token to be deposited in the strategy by the staker","strategy":"is the specified strategy where deposit is to be made,","token":"is the denomination in which the deposit is to be made,"},"returns":{"shares":"The amount of new shares in the `strategy` created as part of the action."}},"depositIntoStrategyWithSignature(address,address,uint256,address,uint256,bytes)":{"details":"The `msg.sender` must have previously approved this contract to transfer at least `amount` of `token` on their behalf.A signature is required for this function to eliminate the possibility of griefing attacks, specifically those targeting stakers who may be attempting to undelegate.Cannot be called if thirdPartyTransfersForbidden is set to true for this strategy WARNING: Depositing tokens that allow reentrancy (eg. ERC-777) into a strategy is not recommended. This can lead to attack vectors where the token balance and corresponding strategy shares are not in sync upon reentrancy","params":{"amount":"is the amount of token to be deposited in the strategy by the staker","expiry":"the timestamp at which the signature expires","signature":"is a valid signature from the `staker`. either an ECDSA signature if the `staker` is an EOA, or data to forward following EIP-1271 if the `staker` is a contract","staker":"the staker that the deposited assets will be credited to","strategy":"is the specified strategy where deposit is to be made,","token":"is the denomination in which the deposit is to be made,"},"returns":{"shares":"The amount of new shares in the `strategy` created as part of the action."}},"domainSeparator()":{"details":"The domain separator will change in the event of a fork that changes the ChainID."},"getDeposits(address)":{"params":{"staker":"The staker of interest, whose deposits this function will fetch"},"returns":{"_0":"(staker's strategies, shares in these strategies)"}},"initialize(address,address,address,uint256)":{"params":{"_pauserRegistry":"Used for access control of pausing.","initialOwner":"Ownership of this contract is transferred to this address.","initialPausedStatus":"The initial value of `_paused` to set.","initialStrategyWhitelister":"The initial value of `strategyWhitelister` to set."}},"migrateQueuedWithdrawal((address[],uint256[],address,(address,uint96),uint32,address))":{"details":"This function is expected to be removed in the next upgrade, after all queued withdrawals have been migrated."},"owner()":{"details":"Returns the address of the current owner."},"pause(uint256)":{"details":"This function can only pause functionality, and thus cannot 'unflip' any bit in `_paused` from 1 to 0.","params":{"newPausedStatus":"represents the new value for `_paused` to take, which means it may flip several bits at once."}},"removeStrategiesFromDepositWhitelist(address[])":{"params":{"strategiesToRemoveFromWhitelist":"Strategies that will be removed to the `strategyIsWhitelistedForDeposit` mapping (if they are in it)"}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"setStrategyWhitelister(address)":{"params":{"newStrategyWhitelister":"new address for the `strategyWhitelister`."}},"setThirdPartyTransfersForbidden(address,bool)":{"params":{"strategy":"The strategy to set `thirdPartyTransfersForbidden` value to","value":"bool value to set `thirdPartyTransfersForbidden` to"}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"unpause(uint256)":{"details":"This function can only unpause functionality, and thus cannot 'flip' any bit in `_paused` from 0 to 1.","params":{"newPausedStatus":"represents the new value for `_paused` to take, which means it may flip several bits at once."}}},"version":1},"userdoc":{"kind":"user","methods":{"DEPOSIT_TYPEHASH()":{"notice":"The EIP-712 typehash for the deposit struct used by the contract"},"DOMAIN_TYPEHASH()":{"notice":"The EIP-712 typehash for the contract's domain"},"addShares(address,address,address,uint256)":{"notice":"Used by the DelegationManager to award a Staker some shares that have passed through the withdrawal queue"},"addStrategiesToDepositWhitelist(address[],bool[])":{"notice":"Owner-only function that adds the provided Strategies to the 'whitelist' of strategies that stakers can deposit into"},"calculateWithdrawalRoot((address[],uint256[],address,(address,uint96),uint32,address))":{"notice":"Returns the keccak256 hash of `queuedWithdrawal`."},"delegation()":{"notice":"Returns the single, central Delegation contract of EigenLayer"},"depositIntoStrategy(address,address,uint256)":{"notice":"Deposits `amount` of `token` into the specified `strategy`, with the resultant shares credited to `msg.sender`"},"depositIntoStrategyWithSignature(address,address,uint256,address,uint256,bytes)":{"notice":"Used for depositing an asset into the specified strategy with the resultant shares credited to `staker`, who must sign off on the action. Note that the assets are transferred out/from the `msg.sender`, not from the `staker`; this function is explicitly designed purely to help one address deposit 'for' another."},"domainSeparator()":{"notice":"Getter function for the current EIP-712 domain separator for this contract."},"eigenPodManager()":{"notice":"Returns the EigenPodManager contract of EigenLayer"},"getDeposits(address)":{"notice":"Get all details on the staker's deposits and corresponding shares"},"initialize(address,address,address,uint256)":{"notice":"Initializes the strategy manager contract. Sets the `pauserRegistry` (currently **not** modifiable after being set), and transfers contract ownership to the specified `initialOwner`."},"migrateQueuedWithdrawal((address[],uint256[],address,(address,uint96),uint32,address))":{"notice":"Function called by the DelegationManager as part of the process of transferring existing queued withdrawals from this contract to that contract."},"pause(uint256)":{"notice":"This function is used to pause an EigenLayer contract's functionality. It is permissioned to the `pauser` address, which is expected to be a low threshold multisig."},"pauseAll()":{"notice":"Alias for `pause(type(uint256).max)`."},"paused()":{"notice":"Returns the current paused status as a uint256."},"paused(uint8)":{"notice":"Returns 'true' if the `indexed`th bit of `_paused` is 1, and 'false' otherwise"},"pauserRegistry()":{"notice":"Address of the `PauserRegistry` contract that this contract defers to for determining access control (for pausing)."},"removeShares(address,address,uint256)":{"notice":"Used by the DelegationManager to remove a Staker's shares from a particular strategy when entering the withdrawal queue"},"removeStrategiesFromDepositWhitelist(address[])":{"notice":"Owner-only function that removes the provided Strategies from the 'whitelist' of strategies that stakers can deposit into"},"setPauserRegistry(address)":{"notice":"Allows the unpauser to set a new pauser registry"},"setStrategyWhitelister(address)":{"notice":"Owner-only function to change the `strategyWhitelister` address."},"setThirdPartyTransfersForbidden(address,bool)":{"notice":"If true for a strategy, a user cannot depositIntoStrategyWithSignature into that strategy for another staker and also when performing DelegationManager.queueWithdrawals, a staker can only withdraw to themselves. Defaulted to false for all existing strategies."},"slasher()":{"notice":"Returns the single, central Slasher contract of EigenLayer"},"stakerStrategyList(address,uint256)":{"notice":"Mapping: staker => array of strategies in which they have nonzero shares"},"stakerStrategyListLength(address)":{"notice":"Simple getter function that returns `stakerStrategyList[staker].length`."},"stakerStrategyShares(address,address)":{"notice":"Mapping: staker => Strategy => number of shares which they currently hold"},"strategyIsWhitelistedForDeposit(address)":{"notice":"Mapping: strategy => whether or not stakers are allowed to deposit into it"},"strategyWhitelister()":{"notice":"Permissioned role, which can be changed by the contract owner. Has the ability to edit the strategy whitelist"},"thirdPartyTransfersForbidden(address)":{"notice":"Mapping: strategy => whether or not stakers are allowed to transfer strategy shares to another address if true for a strategy, a user cannot depositIntoStrategyWithSignature into that strategy for another staker and also when performing queueWithdrawals, a staker can only withdraw to themselves"},"unpause(uint256)":{"notice":"This function is used to unpause an EigenLayer contract's functionality. It is permissioned to the `unpauser` address, which is expected to be a high threshold multisig or governance contract."},"withdrawSharesAsTokens(address,address,uint256,address)":{"notice":"Used by the DelegationManager to convert withdrawn shares to tokens and send them to a recipient"},"withdrawalRootPending(bytes32)":{"notice":"*Deprecated* mapping: hash of withdrawal inputs, aka 'withdrawalRoot' => whether the withdrawal is pending"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable/","@openzeppelin/=lib/openzeppelin-contracts/","ds-test/=lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-contracts/src/contracts/core/StrategyManager.sol":"StrategyManager"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/src/contracts/core/StrategyManager.sol":{"keccak256":"0x50e8a802c3b7acdd1bd5f027ede747f2c99239819d477396e4103ede1014147e","urls":["bzz-raw://072893efd7d13eaec2e1c9b0ba9f44a269c44dffec61348f7016f18263091039","dweb:/ipfs/QmNNZP1MhYCCYsXf1ryeWHWpP4GHMrnXiFnxZxLHUBbSbk"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/core/StrategyManagerStorage.sol":{"keccak256":"0x47fea5e226651802ceda372cf9e01063853bb6cd5e315ab0fa3c349890438bf6","urls":["bzz-raw://ce7f1ed5cdd9e247d2dec16022ec9ee2c0713110ddfce62824f4d6500f40b44b","dweb:/ipfs/QmfHs4JcnXXmeyAr4RX98dYo6cgzpKpH22tgt4zekpaa2U"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x9906828f285cc76bbbe077f908d87c4bffd0a3bff9394f7a4b60a9d9a2672c1e","urls":["bzz-raw://4c0f43e14e50ac322685b5cd301459118e2770bdfb053f8f3ded08ee9fbf5bf9","dweb:/ipfs/QmPQtY6KEUCbrKwweu8BvA7YjnXXxkkuZPyLSRGV5EoPTe"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0x1f8e17b0f952042132ca64e202022d83783b7f42ec364cd0cad1950ecb95a13d","urls":["bzz-raw://a2be4c476902f25fb058f779e3d4e5b1182d9dc9fbdec518acbe9544c0d3c141","dweb:/ipfs/QmdgZq6JrCD36Xry2vD8QSeGguGQ9TGWY2CMvKrhR9NQ6u"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0x22b7a17d53696412f80645f1fa65274ae89040bdc706262e3b6cc577dbafcaa4","urls":["bzz-raw://b15002346892a48fd7cf9a8a4cf121e17ba133d21e4822e71fbffac85117d6b2","dweb:/ipfs/QmRBPJUcRQ6uKmSvCYhhtVWcKCAWkQFSVZZwZR7HR42kiz"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x33a935182f77cfd508fc57ec8e45afc8dc3748e1e9b764d36bf90ae6466f257b","urls":["bzz-raw://d3981b5bbf435cda04e2ed2f348f886ebf1500c18dd4bbf67b1f1bc0272e2d3f","dweb:/ipfs/QmYHDzQx29ataM2ejRCXFcPxaPdxWqX8v7uwUAYoG9572w"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0xffafae142d5337a5c204519e8f82fe3a5fae137286ebf597fa50699cf12c2474","urls":["bzz-raw://b577a12f7788095b230fd069b36ba9b3cdb376a0b7c3d8ae71588e5bf0c2f574","dweb:/ipfs/QmXd1cDzYpxecyFEwowLiBKKjzRHgV8cs1qvLwypdEbVYy"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4","urls":["bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b","dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x3d9eeecf96bd8d6427445db76b9a73f9861c6c3601001226bed2f7fb81e252e6","urls":["bzz-raw://c836719a65892c5cffdba9de4e009e5f8a4e49aea9c5f46d57b15660c6c2d07d","dweb:/ipfs/QmWuzNq2HdEH1hsRg8Jc95k1DZdNjXFb5ehkz9iLNNSqhT"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xaeee2ac5cfcc3388b63bef2668fa435c65a4b433b52ce9f5013822c6ec875fa3","urls":["bzz-raw://86eb6d3da5b45f7509995ffa170eaaadffbdd6d43e50f0902d421bb93a7dfda6","dweb:/ipfs/QmWaYcgtnaVpcekSP7LyY6AGrE3hRE3kZE4H4EKhsSysDG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x633b5fb10209891f696a9c8db4d7327ed7f560a2e9710489e38a67daeda59a96","urls":["bzz-raw://c8381baaec3afa6b200420c093706974776dfd14f6887abe7457eb867351a068","dweb:/ipfs/QmP9H9ttS1sJ6FrvMEefJhU6B4z1wMCjcYYZqVfsLXagJE"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/EIP1271SignatureUtils.sol":{"keccak256":"0xe92d584c47c5828e026a8082af3da38a853e3942c4da7deb705d6470a41afab3","urls":["bzz-raw://1c436c578781fd7d3dffdb24e906819422819f5e9a71d39ee63166a3d5cb3373","dweb:/ipfs/QmP7bJhYqLpwqk2Xq4tqDCUMi2nFAhxxW3Pz36ctE1sbdD"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0x1c5895f913e95682b0c371595cb1fa0d9c34ea921a0fbb5c32201b4315e80a56","urls":["bzz-raw://c470e449a3144fbaaa17b44823ba9cba901f063b04355c800bf62cabdd081cd4","dweb:/ipfs/QmSJ8gaAF4WA1aXGmLesnnRo8fDZNEFnqZSGNkJnXLRM9R"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0xcf8422dfa6ccc393de19417570c6239e0fde54de9433ea258cbeb6937ff7f316","urls":["bzz-raw://328e582c05b7311ad4107c46f554f15b5572b89a4ab6d067c73425b7418d946c","dweb:/ipfs/QmdM81GQY5nok5oCTP8Cc6M8s1UC9f6ZbSWybaUxrZNrmY"],"license":"MIT"},"lib/eigenlayer-contracts/src/contracts/permissions/Pausable.sol":{"keccak256":"0x53a08f01d778b91604dc1d27d4805fa99b9a2993f26e6079a1d8701699dc9f21","urls":["bzz-raw://8fd5dd22dcb1fb4f803843b920501679f252ccf100a06acbad7a22452cdc1173","dweb:/ipfs/QmeyoJoTN3Gi7Q4Fk4y89UTDDnyPFmSbdu8N7Vyijwjx2s"],"license":"BUSL-1.1"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xd6b579f342ff00b0b45eb2b97f1fb5274a2c52a8f59f13f174394a26b0c2030e","urls":["bzz-raw://55f68d7ea9ac2b0369c77e91b737d0e7991c302bf07b5a5b507147c449bcde20","dweb:/ipfs/QmT8Uv9f7SbxmXsmUgrBpKMYjwv6fD3EFQB22fu51nYGLp"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x1e4597b288e792b4530cbc7e97e28754e8457969e61a86d9e6e3a2857eb8a68f","urls":["bzz-raw://41fb94e2f5df15c1d070865db82373dc85e52bc3a2f85e3aa338488f8616532c","dweb:/ipfs/QmeKTieHBEur42JbTkn2JChdGx3GT9YZbVCP7wj2ejQvMj"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x1e5f62292e000eb24ff5a82fbe1310b5a03871d008bcd2e203e08cd044af0466","urls":["bzz-raw://d300b99404ad2930649be8508f7b1ed9940bc82facb7291a0540c1ec42badcaa","dweb:/ipfs/QmW2xV7vTvtyJPDb5PwYBRSrs2qGMWV5rT6V9dzjaPUp9q"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544","urls":["bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e","dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol":{"keccak256":"0x5fc40a61a22b8946e0ce31706ead391db6630b86dac67d240b8c2c15332d55e4","urls":["bzz-raw://08683782a30b65820507e570d3c3dbe6b28f227ece38faceba4006f0a5cdcd89","dweb:/ipfs/QmWdZwfH5PqSa3g8xUFvKj9awcYGiX2hpGLy9zmrrRibzq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xb6e80baaeee0bf82ef5ea731e44b655b68c9d552f608f63c20493dba812d03de","urls":["bzz-raw://a21bc37aeded55861430416fcb820a9529231b079ac97458d51240b83229e25e","dweb:/ipfs/QmVR47X1A7EyMgheAGXjKt6e1gJUhjYq3iVLgS2Y9LQbck"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x78297d2d2e50b4fec6a42ecf5be5c76a6c102810388d11f165a363e0aa8f5034","urls":["bzz-raw://09968869e3943f45df330f42bdb49f96c71f55b5a424c73faba95135fafc5c78","dweb:/ipfs/QmTLAoVbabvKZybmaFEHwib1feE2gWwN5yMcQBADVyBM5E"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3","urls":["bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638","dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xf57046ce68c681ede23c9a117b8ed58b7c960dc7f806ab8a4db80a0dac737a88","urls":["bzz-raw://beec7753d3491d55fb6f416e28ec8dd79b5f866405025fab32d51e3ae027e865","dweb:/ipfs/QmQdqhSufKYphPsy3PQzjzu3VqbXk5mzuSm2grk345rPCh"],"license":"MIT"}},"version":1},"id":6} \ No newline at end of file diff --git a/crates/utils/src/address.rs b/crates/utils/src/address.rs new file mode 100644 index 00000000..b545c367 --- /dev/null +++ b/crates/utils/src/address.rs @@ -0,0 +1,219 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface Address {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod Address { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e007c97e6583d7762f50b4057f1f6ec1f4f767c599ec480095bc4d502af0445a64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xE0\x07\xC9~e\x83\xD7v/P\xB4\x05\x7F\x1Fn\xC1\xF4\xF7g\xC5\x99\xECH\0\x95\xBCMP*\xF0DZdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e007c97e6583d7762f50b4057f1f6ec1f4f767c599ec480095bc4d502af0445a64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xE0\x07\xC9~e\x83\xD7v/P\xB4\x05\x7F\x1Fn\xC1\xF4\xF7g\xC5\x99\xECH\0\x95\xBCMP*\xF0DZdsolcC\0\x08\x0C\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Address`](self) contract instance. + + See the [wrapper's documentation](`AddressInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> AddressInstance { + AddressInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + AddressInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + AddressInstance::::deploy_builder(provider) + } + /**A [`Address`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`Address`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct AddressInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for AddressInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("AddressInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > AddressInstance + { + /**Creates a new wrapper around an on-chain [`Address`](self) contract instance. + + See the [wrapper's documentation](`AddressInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl AddressInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> AddressInstance { + AddressInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > AddressInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > AddressInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/addressupgradeable.rs b/crates/utils/src/addressupgradeable.rs new file mode 100644 index 00000000..df8d6d6f --- /dev/null +++ b/crates/utils/src/addressupgradeable.rs @@ -0,0 +1,221 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface AddressUpgradeable {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod AddressUpgradeable { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202382384818553f39ddee6894afdb124a50f5332f98a500b284cf4b607c9d9fe264736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 #\x828H\x18U?9\xDD\xEEh\x94\xAF\xDB\x12JP\xF53/\x98\xA5\0\xB2\x84\xCFK`|\x9D\x9F\xE2dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202382384818553f39ddee6894afdb124a50f5332f98a500b284cf4b607c9d9fe264736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 #\x828H\x18U?9\xDD\xEEh\x94\xAF\xDB\x12JP\xF53/\x98\xA5\0\xB2\x84\xCFK`|\x9D\x9F\xE2dsolcC\0\x08\x0C\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`AddressUpgradeable`](self) contract instance. + + See the [wrapper's documentation](`AddressUpgradeableInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> AddressUpgradeableInstance { + AddressUpgradeableInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + AddressUpgradeableInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + AddressUpgradeableInstance::::deploy_builder(provider) + } + /**A [`AddressUpgradeable`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`AddressUpgradeable`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct AddressUpgradeableInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for AddressUpgradeableInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("AddressUpgradeableInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > AddressUpgradeableInstance + { + /**Creates a new wrapper around an on-chain [`AddressUpgradeable`](self) contract instance. + + See the [wrapper's documentation](`AddressUpgradeableInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl AddressUpgradeableInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> AddressUpgradeableInstance { + AddressUpgradeableInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > AddressUpgradeableInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > AddressUpgradeableInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/avsdirectory.rs b/crates/utils/src/avsdirectory.rs new file mode 100644 index 00000000..62e9a32d --- /dev/null +++ b/crates/utils/src/avsdirectory.rs @@ -0,0 +1,5653 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library IAVSDirectory { + type OperatorAVSRegistrationStatus is uint8; +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IAVSDirectory { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OperatorAVSRegistrationStatus(u8); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for u8 { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> + { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::Uint<8>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self).0 + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size( + self, + ) + } + } + #[automatically_derived] + impl OperatorAVSRegistrationStatus { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: u8) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> u8 { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OperatorAVSRegistrationStatus { + type RustType = u8; + type Token<'a> = + as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OperatorAVSRegistrationStatus { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic( + rust, + ) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IAVSDirectory`](self) contract instance. + + See the [wrapper's documentation](`IAVSDirectoryInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IAVSDirectoryInstance { + IAVSDirectoryInstance::::new(address, provider) + } + /**A [`IAVSDirectory`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IAVSDirectory`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IAVSDirectoryInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IAVSDirectoryInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IAVSDirectoryInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IAVSDirectoryInstance + { + /**Creates a new wrapper around an on-chain [`IAVSDirectory`](self) contract instance. + + See the [wrapper's documentation](`IAVSDirectoryInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IAVSDirectoryInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IAVSDirectoryInstance { + IAVSDirectoryInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IAVSDirectoryInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IAVSDirectoryInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library ISignatureUtils { + struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ISignatureUtils { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SignatureWithSaltAndExpiry { + pub signature: alloy::sol_types::private::Bytes, + pub salt: alloy::sol_types::private::FixedBytes<32>, + pub expiry: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: SignatureWithSaltAndExpiry) -> Self { + (value.signature, value.salt, value.expiry) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for SignatureWithSaltAndExpiry { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + signature: tuple.0, + salt: tuple.1, + expiry: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for SignatureWithSaltAndExpiry { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for SignatureWithSaltAndExpiry { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.signature, + ), + as alloy_sol_types::SolType>::tokenize(&self.salt), + as alloy_sol_types::SolType>::tokenize(&self.expiry), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for SignatureWithSaltAndExpiry { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for SignatureWithSaltAndExpiry { + const NAME: &'static str = "SignatureWithSaltAndExpiry"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "SignatureWithSaltAndExpiry(bytes signature,bytes32 salt,uint256 expiry)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.signature, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.salt) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.expiry) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for SignatureWithSaltAndExpiry { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.signature, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.salt) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.expiry, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.signature, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.salt, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.expiry, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ISignatureUtilsInstance { + ISignatureUtilsInstance::::new(address, provider) + } + /**A [`ISignatureUtils`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ISignatureUtils`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ISignatureUtilsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ISignatureUtilsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ISignatureUtilsInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ISignatureUtilsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ISignatureUtilsInstance { + ISignatureUtilsInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library IAVSDirectory { + type OperatorAVSRegistrationStatus is uint8; +} + +library ISignatureUtils { + struct SignatureWithSaltAndExpiry { + bytes signature; + bytes32 salt; + uint256 expiry; + } +} + +interface AVSDirectory { + event AVSMetadataURIUpdated(address indexed avs, string metadataURI); + event Initialized(uint8 version); + event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, IAVSDirectory.OperatorAVSRegistrationStatus status); + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + event Paused(address indexed account, uint256 newPausedStatus); + event PauserRegistrySet(address pauserRegistry, address newPauserRegistry); + event Unpaused(address indexed account, uint256 newPausedStatus); + + constructor(address _delegation); + + function DOMAIN_TYPEHASH() external view returns (bytes32); + function OPERATOR_AVS_REGISTRATION_TYPEHASH() external view returns (bytes32); + function avsOperatorStatus(address, address) external view returns (IAVSDirectory.OperatorAVSRegistrationStatus); + function calculateOperatorAVSRegistrationDigestHash(address operator, address avs, bytes32 salt, uint256 expiry) external view returns (bytes32); + function cancelSalt(bytes32 salt) external; + function delegation() external view returns (address); + function deregisterOperatorFromAVS(address operator) external; + function domainSeparator() external view returns (bytes32); + function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus) external; + function operatorSaltIsSpent(address, bytes32) external view returns (bool); + function owner() external view returns (address); + function pause(uint256 newPausedStatus) external; + function pauseAll() external; + function paused(uint8 index) external view returns (bool); + function paused() external view returns (uint256); + function pauserRegistry() external view returns (address); + function registerOperatorToAVS(address operator, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external; + function renounceOwnership() external; + function setPauserRegistry(address newPauserRegistry) external; + function transferOwnership(address newOwner) external; + function unpause(uint256 newPausedStatus) external; + function updateAVSMetadataURI(string memory metadataURI) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_delegation", + "type": "address", + "internalType": "contract IDelegationManager" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "DOMAIN_TYPEHASH", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "OPERATOR_AVS_REGISTRATION_TYPEHASH", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "avsOperatorStatus", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "enum IAVSDirectory.OperatorAVSRegistrationStatus" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "calculateOperatorAVSRegistrationDigestHash", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "avs", + "type": "address", + "internalType": "address" + }, + { + "name": "salt", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "cancelSalt", + "inputs": [ + { + "name": "salt", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "delegation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IDelegationManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "deregisterOperatorFromAVS", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "domainSeparator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "initialOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "_pauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + }, + { + "name": "initialPausedStatus", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "operatorSaltIsSpent", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pause", + "inputs": [ + { + "name": "newPausedStatus", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "pauseAll", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "paused", + "inputs": [ + { + "name": "index", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "paused", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pauserRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registerOperatorToAVS", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "operatorSignature", + "type": "tuple", + "internalType": "struct ISignatureUtils.SignatureWithSaltAndExpiry", + "components": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "salt", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setPauserRegistry", + "inputs": [ + { + "name": "newPauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "unpause", + "inputs": [ + { + "name": "newPausedStatus", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateAVSMetadataURI", + "inputs": [ + { + "name": "metadataURI", + "type": "string", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "AVSMetadataURIUpdated", + "inputs": [ + { + "name": "avs", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "metadataURI", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorAVSRegistrationStatusUpdated", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "avs", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "status", + "type": "uint8", + "indexed": false, + "internalType": "enum IAVSDirectory.OperatorAVSRegistrationStatus" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Paused", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newPausedStatus", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "PauserRegistrySet", + "inputs": [ + { + "name": "pauserRegistry", + "type": "address", + "indexed": false, + "internalType": "contract IPauserRegistry" + }, + { + "name": "newPauserRegistry", + "type": "address", + "indexed": false, + "internalType": "contract IPauserRegistry" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Unpaused", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newPausedStatus", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod AVSDirectory { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60c06040523480156200001157600080fd5b5060405162001f7838038062001f78833981016040819052620000349162000118565b6001600160a01b0381166080526200004b62000056565b504660a0526200014a565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000116576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012b57600080fd5b81516001600160a01b03811681146200014357600080fd5b9392505050565b60805160a051611e01620001776000396000610ea801526000818161032401526109830152611e016000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118ab565b610387565b005b61015a61016a3660046118cf565b610443565b61015a61017d3660046118e8565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611929565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b610228610208366004611955565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b391906119a4565b61015a6106ac565b6101ea61024b3660046119cc565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a5f565b610787565b6101a96102cd366004611b46565b610b1a565b61015a6102e03660046118ab565b610bd3565b61015a6102f3366004611b8c565b610d3c565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103543660046118cf565b610d83565b61015a6103673660046118ab565b610e2e565b6101a9610ea4565b61015a6103823660046118cf565b610ee2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611bfe565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c1b565b60405180910390fd5b6104408161103e565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c65565b6104cb5760405162461bcd60e51b815260040161042e90611c87565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611135565b61065461121f565b609755610660846112b6565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c65565b6107345760405162461bcd60e51b815260040161042e90611c87565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611308565b61078560006112b6565b565b606654600090600190811614156107dc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108445760405162461bcd60e51b815260206004820152603e6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087e5761087e61198e565b14156108e05760405162461bcd60e51b815260206004820152603f6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109645760405162461bcd60e51b81526020600482015260366024820152600080516020611dac8339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190611c65565b610a645760405162461bcd60e51b815260206004820152604d6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a7a843385602001518660400151610b1a565b9050610a8b84828560000151611362565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0c91906119a4565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b90610ea4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460009060019081161415610c285760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c6257610c6261198e565b14610cd55760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d3091906119a4565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d77929190611ccf565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e085760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e36611308565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b6565b60007f0000000000000000000000000000000000000000000000000000000000000000461415610ed5575060975490565b610edd61121f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190611bfe565b6001600160a01b0316336001600160a01b031614610f895760405162461bcd60e51b815260040161042e90611c1b565b6066541981196066541916146110075760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110cc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115657506001600160a01b03821615155b6111d85760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261121b8261103e565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561148157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906113a29086908690600401611cfe565b602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190611d5b565b6001600160e01b0319161461147c5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b03166114958383611521565b6001600160a01b03161461147c5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b60008060006115308585611545565b9150915061153d816115b5565b509392505050565b60008082516041141561157c5760208301516040840151606085015160001a61157087828585611770565b945094505050506115ae565b8251604014156115a6576020830151604084015161159b86838361185d565b9350935050506115ae565b506000905060025b9250929050565b60008160048111156115c9576115c961198e565b14156115d25750565b60018160048111156115e6576115e661198e565b14156116345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b60028160048111156116485761164861198e565b14156116965760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116aa576116aa61198e565b14156117035760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b60048160048111156117175761171761198e565b14156104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156117a75750600090506003611854565b8460ff16601b141580156117bf57508460ff16601c14155b156117d05750600090506004611854565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611824573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661184d57600060019250925050611854565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187a60ff86901c601b611d85565b905061188887828885611770565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118bd57600080fd5b81356118c881611896565b9392505050565b6000602082840312156118e157600080fd5b5035919050565b6000806000606084860312156118fd57600080fd5b833561190881611896565b9250602084013561191881611896565b929592945050506040919091013590565b6000806040838503121561193c57600080fd5b823561194781611896565b946020939093013593505050565b6000806040838503121561196857600080fd5b823561197381611896565b9150602083013561198381611896565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119c657634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119de57600080fd5b813560ff811681146118c857600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a2857611a286119ef565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a5757611a576119ef565b604052919050565b60008060408385031215611a7257600080fd5b8235611a7d81611896565b915060208381013567ffffffffffffffff80821115611a9b57600080fd5b9085019060608288031215611aaf57600080fd5b611ab7611a05565b823582811115611ac657600080fd5b8301601f81018913611ad757600080fd5b803583811115611ae957611ae96119ef565b611afb601f8201601f19168701611a2e565b93508084528986828401011115611b1157600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b60008060008060808587031215611b5c57600080fd5b8435611b6781611896565b93506020850135611b7781611896565b93969395505050506040820135916060013590565b60008060208385031215611b9f57600080fd5b823567ffffffffffffffff80821115611bb757600080fd5b818501915085601f830112611bcb57600080fd5b813581811115611bda57600080fd5b866020828501011115611bec57600080fd5b60209290920196919550909350505050565b600060208284031215611c1057600080fd5b81516118c881611896565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7757600080fd5b815180151581146118c857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b82815260006020604081840152835180604085015260005b81811015611d3257858101830151858201606001528201611d16565b81811115611d44576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215611d6d57600080fd5b81516001600160e01b0319811681146118c857600080fd5b60008219821115611da657634e487b7160e01b600052601160045260246000fd5b50019056fe4156534469726563746f72792e72656769737465724f70657261746f72546f41a2646970667358221220cc67a152cc7c400395ce51d5dfaff570c2a26ca74b9216e02fcc583940ccb22f64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xC0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\x1Fx8\x03\x80b\0\x1Fx\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01\x18V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80Rb\0\0Kb\0\0VV[PF`\xA0Rb\0\x01JV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xC3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FInitializable: contract is initi`D\x82\x01Rfalizing`\xC8\x1B`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[`\0T`\xFF\x90\x81\x16\x10\x15b\0\x01\x16W`\0\x80T`\xFF\x19\x16`\xFF\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[V[`\0` \x82\x84\x03\x12\x15b\0\x01+W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01CW`\0\x80\xFD[\x93\x92PPPV[`\x80Q`\xA0Qa\x1E\x01b\0\x01w`\09`\0a\x0E\xA8\x01R`\0\x81\x81a\x03$\x01Ra\t\x83\x01Ra\x1E\x01`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01BW`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0\xB8W\x80c\xD7\x9A\xCE\xAB\x11a\0|W\x80c\xD7\x9A\xCE\xAB\x14a\x02\xF8W\x80c\xDF\\\xF7#\x14a\x03\x1FW\x80c\xECv\xF4B\x14a\x03FW\x80c\xF2\xFD\xE3\x8B\x14a\x03YW\x80c\xF6\x98\xDA%\x14a\x03lW\x80c\xFA\xBC\x1C\xBC\x14a\x03tW`\0\x80\xFD[\x80c\x8D\xA5\xCB[\x14a\x02\x9BW\x80c\x99&\xEE}\x14a\x02\xACW\x80c\xA1\x06\x0C\x88\x14a\x02\xBFW\x80c\xA3d\xF4\xDA\x14a\x02\xD2W\x80c\xA9\x8F\xB3U\x14a\x02\xE5W`\0\x80\xFD[\x80cI\x07]\xA3\x11a\x01\nW\x80cI\x07]\xA3\x14a\x01\xFAW\x80cY\\jg\x14a\x025W\x80cZ\xC8j\xB7\x14a\x02=W\x80c\\\x97Z\xBB\x14a\x02`W\x80cqP\x18\xA6\x14a\x02hW\x80c\x88o\x11\x95\x14a\x02pW`\0\x80\xFD[\x80c\x10\xD6z/\x14a\x01GW\x80c\x13d9\xDD\x14a\x01\\W\x80c\x17\x94\xBB<\x14a\x01oW\x80c `kp\x14a\x01\x82W\x80c7H#\xB5\x14a\x01\xBCW[`\0\x80\xFD[a\x01Za\x01U6`\x04a\x18\xABV[a\x03\x87V[\0[a\x01Za\x01j6`\x04a\x18\xCFV[a\x04CV[a\x01Za\x01}6`\x04a\x18\xE8V[a\x05\x82V[a\x01\xA9\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\xEAa\x01\xCA6`\x04a\x19)V[`\x99` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x01\xB3V[a\x02(a\x02\x086`\x04a\x19UV[`\x98` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T`\xFF\x16\x81V[`@Qa\x01\xB3\x91\x90a\x19\xA4V[a\x01Za\x06\xACV[a\x01\xEAa\x02K6`\x04a\x19\xCCV[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`fTa\x01\xA9V[a\x01Za\x07sV[`eTa\x02\x83\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xB3V[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\x83V[a\x01Za\x02\xBA6`\x04a\x1A_V[a\x07\x87V[a\x01\xA9a\x02\xCD6`\x04a\x1BFV[a\x0B\x1AV[a\x01Za\x02\xE06`\x04a\x18\xABV[a\x0B\xD3V[a\x01Za\x02\xF36`\x04a\x1B\x8CV[a\r=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\xFE\x91\x90a\x1B\xFEV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x047W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04.\x90a\x1C\x1BV[`@Q\x80\x91\x03\x90\xFD[a\x04@\x81a\x10>V[PV[`eT`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\x8BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xAF\x91\x90a\x1CeV[a\x04\xCBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04.\x90a\x1C\x87V[`fT\x81\x81\x16\x14a\x05DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.pause: invalid attempt `D\x82\x01R\x7Fto unpause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x04.V[`f\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01[`@Q\x80\x91\x03\x90\xA2PV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x05\xA2WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x05\xBCWP0;\x15\x80\x15a\x05\xBCWP`\0T`\xFF\x16`\x01\x14[a\x06\x1FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01a\x04.V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x06BW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x06L\x83\x83a\x115V[a\x06Ta\x12\x1FV[`\x97Ua\x06`\x84a\x12\xB6V[\x80\x15a\x06\xA6W`\0\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPV[`eT`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\xF4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\x18\x91\x90a\x1CeV[a\x074W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04.\x90a\x1C\x87V[`\0\x19`f\x81\x90U`@Q\x90\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2V[a\x07{a\x13\x08V[a\x07\x85`\0a\x12\xB6V[V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a\x07\xDCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01Rx\x14\x18]\\\xD8X\x9B\x19N\x88\x1A[\x99\x19^\x08\x1A\\\xC8\x1C\x18]\\\xD9Y`:\x1B`D\x82\x01R`d\x01a\x04.V[B\x82`@\x01Q\x10\x15a\x08DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R`\0\x80Q` a\x1D\xAC\x839\x81Q\x91R`D\x82\x01R\x7FVS: operator signature expired\0\0`d\x82\x01R`\x84\x01a\x04.V[`\x013`\0\x90\x81R`\x98` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x88\x16\x84R\x90\x91R\x90 T`\xFF\x16`\x01\x81\x11\x15a\x08~Wa\x08~a\x19\x8EV[\x14\x15a\x08\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`?`$\x82\x01R`\0\x80Q` a\x1D\xAC\x839\x81Q\x91R`D\x82\x01R\x7FVS: operator already registered\0`d\x82\x01R`\x84\x01a\x04.V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x99` \x90\x81R`@\x80\x83 \x85\x83\x01Q\x84R\x90\x91R\x90 T`\xFF\x16\x15a\tdW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`6`$\x82\x01R`\0\x80Q` a\x1D\xAC\x839\x81Q\x91R`D\x82\x01Ru\x15\x94\xCE\x88\x1C\xD8[\x1D\x08\x18[\x1C\x99XY\x1EH\x1C\xDC\x19[\x9D`R\x1B`d\x82\x01R`\x84\x01a\x04.V[`@Qc6\xB8{\xD7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cmp\xF7\xAE\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xEE\x91\x90a\x1CeV[a\ndW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`M`$\x82\x01R`\0\x80Q` a\x1D\xAC\x839\x81Q\x91R`D\x82\x01R\x7FVS: operator not registered to E`d\x82\x01Rl\x1AY\xD9[\x93\x18^Y\\\x88\x1EY]`\x9A\x1B`\x84\x82\x01R`\xA4\x01a\x04.V[`\0a\nz\x843\x85` \x01Q\x86`@\x01Qa\x0B\x1AV[\x90Pa\n\x8B\x84\x82\x85`\0\x01Qa\x13bV[3`\0\x81\x81R`\x98` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x89\x16\x80\x85R\x90\x83R\x81\x84 \x80T`\x01`\xFF\x19\x91\x82\x16\x81\x17\x90\x92U`\x99\x85R\x83\x86 \x8A\x86\x01Q\x87R\x90\x94R\x93\x82\x90 \x80T\x90\x93\x16\x84\x17\x90\x92UQ\x90\x91\x7F\xF0\x95+\x1Ce'\x1D\x81\x9D9\x98=*\xBB\x04K\x9C\xAC\xE5\x9B\xCCMM\xD3\x89\xF5\x86\xEB\xDC\xB1[A\x91a\x0B\x0C\x91\x90a\x19\xA4V[`@Q\x80\x91\x03\x90\xA3PPPPV[`@\x80Q\x7F\xDA,\x89\xBA\xFD\xD3Gv\xA2\xB8\xBB\x9C\x83\xC8/A\x9E \xCC\x8Cg \x7Fp\xED\xD5\x82I\xB9&a\xBD` \x80\x83\x01\x91\x90\x91R`\x01`\x01`\xA0\x1B\x03\x87\x81\x16\x83\x85\x01R\x86\x16``\x83\x01R`\x80\x82\x01\x85\x90R`\xA0\x80\x83\x01\x85\x90R\x83Q\x80\x84\x03\x90\x91\x01\x81R`\xC0\x90\x92\x01\x90\x92R\x80Q\x91\x01 `\0\x90\x81a\x0B\x90a\x0E\xA4V[`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x91\x90\x91R`B\x81\x01\x83\x90R`b\x01`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x97\x96PPPPPPPV[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a\x0C(W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01Rx\x14\x18]\\\xD8X\x9B\x19N\x88\x1A[\x99\x19^\x08\x1A\\\xC8\x1C\x18]\\\xD9Y`:\x1B`D\x82\x01R`d\x01a\x04.V[`\x013`\0\x90\x81R`\x98` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x84R\x90\x91R\x90 T`\xFF\x16`\x01\x81\x11\x15a\x0CbWa\x0Cba\x19\x8EV[\x14a\x0C\xD5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`?`$\x82\x01R\x7FAVSDirectory.deregisterOperatorF`D\x82\x01R\x7FromAVS: operator not registered\0`d\x82\x01R`\x84\x01a\x04.V[3`\0\x81\x81R`\x98` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ\x90\x91\x7F\xF0\x95+\x1Ce'\x1D\x81\x9D9\x98=*\xBB\x04K\x9C\xAC\xE5\x9B\xCCMM\xD3\x89\xF5\x86\xEB\xDC\xB1[A\x91a\r0\x91\x90a\x19\xA4V[`@Q\x80\x91\x03\x90\xA3PPV[3`\x01`\x01`\xA0\x1B\x03\x16\x7F\xA8\x9C\x1D\xC2C\xD8\x90\x8A\x96\xDD\x84\x94K\xCC\x97\xD6\xBCj\xC0\r\xD7\x8E b\x15v\xBEj<\x947\x13\x83\x83`@Qa\rw\x92\x91\x90a\x1C\xCFV[`@Q\x80\x91\x03\x90\xA2PPV[3`\0\x90\x81R`\x99` \x90\x81R`@\x80\x83 \x84\x84R\x90\x91R\x90 T`\xFF\x16\x15a\x0E\x08W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`1`$\x82\x01R\x7FAVSDirectory.cancelSalt: cannot `D\x82\x01Rp\x18\xD8[\x98\xD9[\x08\x1C\xDC\x19[\x9D\x08\x1C\xD8[\x1D`z\x1B`d\x82\x01R`\x84\x01a\x04.V[3`\0\x90\x81R`\x99` \x90\x81R`@\x80\x83 \x93\x83R\x92\x90R \x80T`\xFF\x19\x16`\x01\x17\x90UV[a\x0E6a\x13\x08V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x0E\x9BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x04.V[a\x04@\x81a\x12\xB6V[`\0\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0F\x14\x15a\x0E\xD5WP`\x97T\x90V[a\x0E\xDDa\x12\x1FV[\x90P\x90V[`e`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xEA\xB6mz`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0FY\x91\x90a\x1B\xFEV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0F\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04.\x90a\x1C\x1BV[`fT\x19\x81\x19`fT\x19\x16\x14a\x10\x07W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.unpause: invalid attemp`D\x82\x01R\x7Ft to pause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x04.V[`f\x81\x90U`@Q\x81\x81R3\x90\x7F5\x82\xD1\x82\x8E&\xBFV\xBD\x80\x15\x02\xBC\x02\x1A\xC0\xBC\x8A\xFBW\xC8&\xE4\x98kEY<\x8F\xAD8\x9C\x90` \x01a\x05wV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x10\xCCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FPausable._setPauserRegistry: new`D\x82\x01R\x7FPauserRegistry cannot be the zer`d\x82\x01Rho address`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\x04.V[`eT`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7Fn\x9F\xCDS\x98\x96\xFC\xA6\x0E\x8B\x0F\x01\xDDX\x023\xE4\x8Ak\x0F}\xF0\x13\xB8\x9B\xA7\xF5e\x86\x9A\xCD\xB6\x91\x01`@Q\x80\x91\x03\x90\xA1`e\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x11VWP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a\x11\xD8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FPausable._initializePauser: _ini`D\x82\x01R\x7FtializePauser() can only be call`d\x82\x01Rfed once`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x04.V[`f\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2a\x12\x1B\x82a\x10>V[PPV[`@\x80Q\x80\x82\x01\x82R`\n\x81Ri\"\xB4\xB3\xB2\xB7&0\xBC\xB2\xB9`\xB1\x1B` \x91\x82\x01R\x81Q\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x81\x83\x01R\x7Fq\xB6%\xCF\xADD\xBA\xC6;\x13\xDB\xA0\x7F.\x1D`\x84\xEE\x04\xB6\xF8u!\x01\xEC\xE6\x12mXN\xE6\xEA\x81\x84\x01RF``\x82\x01R0`\x80\x80\x83\x01\x91\x90\x91R\x83Q\x80\x83\x03\x90\x91\x01\x81R`\xA0\x90\x91\x01\x90\x92R\x81Q\x91\x01 \x90V[`3\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x07\x85W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x04.V[`\x01`\x01`\xA0\x1B\x03\x83\x16;\x15a\x14\x81W`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90a\x13\xA2\x90\x86\x90\x86\x90`\x04\x01a\x1C\xFEV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x13\xBFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\xE3\x91\x90a\x1D[V[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x14|W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`S`$\x82\x01R\x7FEIP1271SignatureUtils.checkSigna`D\x82\x01R\x7Fture_EIP1271: ERC1271 signature `d\x82\x01Rr\x1D\x99\\\x9AY\x9AX\xD8]\x1A[\xDB\x88\x19\x98Z[\x19Y`j\x1B`\x84\x82\x01R`\xA4\x01a\x04.V[PPPV[\x82`\x01`\x01`\xA0\x1B\x03\x16a\x14\x95\x83\x83a\x15!V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x14|W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FEIP1271SignatureUtils.checkSigna`D\x82\x01R\x7Fture_EIP1271: signature not from`d\x82\x01Rf\x109\xB4\xB3\xB72\xB9`\xC9\x1B`\x84\x82\x01R`\xA4\x01a\x04.V[`\0\x80`\0a\x150\x85\x85a\x15EV[\x91P\x91Pa\x15=\x81a\x15\xB5V[P\x93\x92PPPV[`\0\x80\x82Q`A\x14\x15a\x15|W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1Aa\x15p\x87\x82\x85\x85a\x17pV[\x94P\x94PPPPa\x15\xAEV[\x82Q`@\x14\x15a\x15\xA6W` \x83\x01Q`@\x84\x01Qa\x15\x9B\x86\x83\x83a\x18]V[\x93P\x93PPPa\x15\xAEV[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15a\x15\xC9Wa\x15\xC9a\x19\x8EV[\x14\x15a\x15\xD2WPV[`\x01\x81`\x04\x81\x11\x15a\x15\xE6Wa\x15\xE6a\x19\x8EV[\x14\x15a\x164W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FECDSA: invalid signature\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04.V[`\x02\x81`\x04\x81\x11\x15a\x16HWa\x16Ha\x19\x8EV[\x14\x15a\x16\x96W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x04.V[`\x03\x81`\x04\x81\x11\x15a\x16\xAAWa\x16\xAAa\x19\x8EV[\x14\x15a\x17\x03W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 's' val`D\x82\x01Raue`\xF0\x1B`d\x82\x01R`\x84\x01a\x04.V[`\x04\x81`\x04\x81\x11\x15a\x17\x17Wa\x17\x17a\x19\x8EV[\x14\x15a\x04@W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 'v' val`D\x82\x01Raue`\xF0\x1B`d\x82\x01R`\x84\x01a\x04.V[`\0\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x83\x11\x15a\x17\xA7WP`\0\x90P`\x03a\x18TV[\x84`\xFF\x16`\x1B\x14\x15\x80\x15a\x17\xBFWP\x84`\xFF\x16`\x1C\x14\x15[\x15a\x17\xD0WP`\0\x90P`\x04a\x18TV[`@\x80Q`\0\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x18$W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16a\x18MW`\0`\x01\x92P\x92PPa\x18TV[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81a\x18z`\xFF\x86\x90\x1C`\x1Ba\x1D\x85V[\x90Pa\x18\x88\x87\x82\x88\x85a\x17pV[\x93P\x93PPP\x93P\x93\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04@W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x18\xBDW`\0\x80\xFD[\x815a\x18\xC8\x81a\x18\x96V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x18\xE1W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x18\xFDW`\0\x80\xFD[\x835a\x19\x08\x81a\x18\x96V[\x92P` \x84\x015a\x19\x18\x81a\x18\x96V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x19=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\xFE\x91\x90a\x1B\xFEV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x047W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04.\x90a\x1C\x1BV[`@Q\x80\x91\x03\x90\xFD[a\x04@\x81a\x10>V[PV[`eT`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\x8BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xAF\x91\x90a\x1CeV[a\x04\xCBW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04.\x90a\x1C\x87V[`fT\x81\x81\x16\x14a\x05DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.pause: invalid attempt `D\x82\x01R\x7Fto unpause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x04.V[`f\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01[`@Q\x80\x91\x03\x90\xA2PV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x05\xA2WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x05\xBCWP0;\x15\x80\x15a\x05\xBCWP`\0T`\xFF\x16`\x01\x14[a\x06\x1FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01a\x04.V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x06BW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x06L\x83\x83a\x115V[a\x06Ta\x12\x1FV[`\x97Ua\x06`\x84a\x12\xB6V[\x80\x15a\x06\xA6W`\0\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPV[`eT`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\xF4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\x18\x91\x90a\x1CeV[a\x074W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04.\x90a\x1C\x87V[`\0\x19`f\x81\x90U`@Q\x90\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2V[a\x07{a\x13\x08V[a\x07\x85`\0a\x12\xB6V[V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a\x07\xDCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01Rx\x14\x18]\\\xD8X\x9B\x19N\x88\x1A[\x99\x19^\x08\x1A\\\xC8\x1C\x18]\\\xD9Y`:\x1B`D\x82\x01R`d\x01a\x04.V[B\x82`@\x01Q\x10\x15a\x08DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R`\0\x80Q` a\x1D\xAC\x839\x81Q\x91R`D\x82\x01R\x7FVS: operator signature expired\0\0`d\x82\x01R`\x84\x01a\x04.V[`\x013`\0\x90\x81R`\x98` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x88\x16\x84R\x90\x91R\x90 T`\xFF\x16`\x01\x81\x11\x15a\x08~Wa\x08~a\x19\x8EV[\x14\x15a\x08\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`?`$\x82\x01R`\0\x80Q` a\x1D\xAC\x839\x81Q\x91R`D\x82\x01R\x7FVS: operator already registered\0`d\x82\x01R`\x84\x01a\x04.V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x99` \x90\x81R`@\x80\x83 \x85\x83\x01Q\x84R\x90\x91R\x90 T`\xFF\x16\x15a\tdW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`6`$\x82\x01R`\0\x80Q` a\x1D\xAC\x839\x81Q\x91R`D\x82\x01Ru\x15\x94\xCE\x88\x1C\xD8[\x1D\x08\x18[\x1C\x99XY\x1EH\x1C\xDC\x19[\x9D`R\x1B`d\x82\x01R`\x84\x01a\x04.V[`@Qc6\xB8{\xD7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cmp\xF7\xAE\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xEE\x91\x90a\x1CeV[a\ndW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`M`$\x82\x01R`\0\x80Q` a\x1D\xAC\x839\x81Q\x91R`D\x82\x01R\x7FVS: operator not registered to E`d\x82\x01Rl\x1AY\xD9[\x93\x18^Y\\\x88\x1EY]`\x9A\x1B`\x84\x82\x01R`\xA4\x01a\x04.V[`\0a\nz\x843\x85` \x01Q\x86`@\x01Qa\x0B\x1AV[\x90Pa\n\x8B\x84\x82\x85`\0\x01Qa\x13bV[3`\0\x81\x81R`\x98` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x89\x16\x80\x85R\x90\x83R\x81\x84 \x80T`\x01`\xFF\x19\x91\x82\x16\x81\x17\x90\x92U`\x99\x85R\x83\x86 \x8A\x86\x01Q\x87R\x90\x94R\x93\x82\x90 \x80T\x90\x93\x16\x84\x17\x90\x92UQ\x90\x91\x7F\xF0\x95+\x1Ce'\x1D\x81\x9D9\x98=*\xBB\x04K\x9C\xAC\xE5\x9B\xCCMM\xD3\x89\xF5\x86\xEB\xDC\xB1[A\x91a\x0B\x0C\x91\x90a\x19\xA4V[`@Q\x80\x91\x03\x90\xA3PPPPV[`@\x80Q\x7F\xDA,\x89\xBA\xFD\xD3Gv\xA2\xB8\xBB\x9C\x83\xC8/A\x9E \xCC\x8Cg \x7Fp\xED\xD5\x82I\xB9&a\xBD` \x80\x83\x01\x91\x90\x91R`\x01`\x01`\xA0\x1B\x03\x87\x81\x16\x83\x85\x01R\x86\x16``\x83\x01R`\x80\x82\x01\x85\x90R`\xA0\x80\x83\x01\x85\x90R\x83Q\x80\x84\x03\x90\x91\x01\x81R`\xC0\x90\x92\x01\x90\x92R\x80Q\x91\x01 `\0\x90\x81a\x0B\x90a\x0E\xA4V[`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x91\x90\x91R`B\x81\x01\x83\x90R`b\x01`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x97\x96PPPPPPPV[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a\x0C(W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01Rx\x14\x18]\\\xD8X\x9B\x19N\x88\x1A[\x99\x19^\x08\x1A\\\xC8\x1C\x18]\\\xD9Y`:\x1B`D\x82\x01R`d\x01a\x04.V[`\x013`\0\x90\x81R`\x98` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x84R\x90\x91R\x90 T`\xFF\x16`\x01\x81\x11\x15a\x0CbWa\x0Cba\x19\x8EV[\x14a\x0C\xD5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`?`$\x82\x01R\x7FAVSDirectory.deregisterOperatorF`D\x82\x01R\x7FromAVS: operator not registered\0`d\x82\x01R`\x84\x01a\x04.V[3`\0\x81\x81R`\x98` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ\x90\x91\x7F\xF0\x95+\x1Ce'\x1D\x81\x9D9\x98=*\xBB\x04K\x9C\xAC\xE5\x9B\xCCMM\xD3\x89\xF5\x86\xEB\xDC\xB1[A\x91a\r0\x91\x90a\x19\xA4V[`@Q\x80\x91\x03\x90\xA3PPV[3`\x01`\x01`\xA0\x1B\x03\x16\x7F\xA8\x9C\x1D\xC2C\xD8\x90\x8A\x96\xDD\x84\x94K\xCC\x97\xD6\xBCj\xC0\r\xD7\x8E b\x15v\xBEj<\x947\x13\x83\x83`@Qa\rw\x92\x91\x90a\x1C\xCFV[`@Q\x80\x91\x03\x90\xA2PPV[3`\0\x90\x81R`\x99` \x90\x81R`@\x80\x83 \x84\x84R\x90\x91R\x90 T`\xFF\x16\x15a\x0E\x08W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`1`$\x82\x01R\x7FAVSDirectory.cancelSalt: cannot `D\x82\x01Rp\x18\xD8[\x98\xD9[\x08\x1C\xDC\x19[\x9D\x08\x1C\xD8[\x1D`z\x1B`d\x82\x01R`\x84\x01a\x04.V[3`\0\x90\x81R`\x99` \x90\x81R`@\x80\x83 \x93\x83R\x92\x90R \x80T`\xFF\x19\x16`\x01\x17\x90UV[a\x0E6a\x13\x08V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x0E\x9BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x04.V[a\x04@\x81a\x12\xB6V[`\0\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0F\x14\x15a\x0E\xD5WP`\x97T\x90V[a\x0E\xDDa\x12\x1FV[\x90P\x90V[`e`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xEA\xB6mz`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0FY\x91\x90a\x1B\xFEV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0F\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04.\x90a\x1C\x1BV[`fT\x19\x81\x19`fT\x19\x16\x14a\x10\x07W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.unpause: invalid attemp`D\x82\x01R\x7Ft to pause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x04.V[`f\x81\x90U`@Q\x81\x81R3\x90\x7F5\x82\xD1\x82\x8E&\xBFV\xBD\x80\x15\x02\xBC\x02\x1A\xC0\xBC\x8A\xFBW\xC8&\xE4\x98kEY<\x8F\xAD8\x9C\x90` \x01a\x05wV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x10\xCCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FPausable._setPauserRegistry: new`D\x82\x01R\x7FPauserRegistry cannot be the zer`d\x82\x01Rho address`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\x04.V[`eT`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7Fn\x9F\xCDS\x98\x96\xFC\xA6\x0E\x8B\x0F\x01\xDDX\x023\xE4\x8Ak\x0F}\xF0\x13\xB8\x9B\xA7\xF5e\x86\x9A\xCD\xB6\x91\x01`@Q\x80\x91\x03\x90\xA1`e\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x11VWP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a\x11\xD8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FPausable._initializePauser: _ini`D\x82\x01R\x7FtializePauser() can only be call`d\x82\x01Rfed once`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x04.V[`f\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2a\x12\x1B\x82a\x10>V[PPV[`@\x80Q\x80\x82\x01\x82R`\n\x81Ri\"\xB4\xB3\xB2\xB7&0\xBC\xB2\xB9`\xB1\x1B` \x91\x82\x01R\x81Q\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x81\x83\x01R\x7Fq\xB6%\xCF\xADD\xBA\xC6;\x13\xDB\xA0\x7F.\x1D`\x84\xEE\x04\xB6\xF8u!\x01\xEC\xE6\x12mXN\xE6\xEA\x81\x84\x01RF``\x82\x01R0`\x80\x80\x83\x01\x91\x90\x91R\x83Q\x80\x83\x03\x90\x91\x01\x81R`\xA0\x90\x91\x01\x90\x92R\x81Q\x91\x01 \x90V[`3\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x07\x85W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x04.V[`\x01`\x01`\xA0\x1B\x03\x83\x16;\x15a\x14\x81W`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90a\x13\xA2\x90\x86\x90\x86\x90`\x04\x01a\x1C\xFEV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x13\xBFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\xE3\x91\x90a\x1D[V[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x14|W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`S`$\x82\x01R\x7FEIP1271SignatureUtils.checkSigna`D\x82\x01R\x7Fture_EIP1271: ERC1271 signature `d\x82\x01Rr\x1D\x99\\\x9AY\x9AX\xD8]\x1A[\xDB\x88\x19\x98Z[\x19Y`j\x1B`\x84\x82\x01R`\xA4\x01a\x04.V[PPPV[\x82`\x01`\x01`\xA0\x1B\x03\x16a\x14\x95\x83\x83a\x15!V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x14|W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FEIP1271SignatureUtils.checkSigna`D\x82\x01R\x7Fture_EIP1271: signature not from`d\x82\x01Rf\x109\xB4\xB3\xB72\xB9`\xC9\x1B`\x84\x82\x01R`\xA4\x01a\x04.V[`\0\x80`\0a\x150\x85\x85a\x15EV[\x91P\x91Pa\x15=\x81a\x15\xB5V[P\x93\x92PPPV[`\0\x80\x82Q`A\x14\x15a\x15|W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1Aa\x15p\x87\x82\x85\x85a\x17pV[\x94P\x94PPPPa\x15\xAEV[\x82Q`@\x14\x15a\x15\xA6W` \x83\x01Q`@\x84\x01Qa\x15\x9B\x86\x83\x83a\x18]V[\x93P\x93PPPa\x15\xAEV[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15a\x15\xC9Wa\x15\xC9a\x19\x8EV[\x14\x15a\x15\xD2WPV[`\x01\x81`\x04\x81\x11\x15a\x15\xE6Wa\x15\xE6a\x19\x8EV[\x14\x15a\x164W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FECDSA: invalid signature\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04.V[`\x02\x81`\x04\x81\x11\x15a\x16HWa\x16Ha\x19\x8EV[\x14\x15a\x16\x96W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x04.V[`\x03\x81`\x04\x81\x11\x15a\x16\xAAWa\x16\xAAa\x19\x8EV[\x14\x15a\x17\x03W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 's' val`D\x82\x01Raue`\xF0\x1B`d\x82\x01R`\x84\x01a\x04.V[`\x04\x81`\x04\x81\x11\x15a\x17\x17Wa\x17\x17a\x19\x8EV[\x14\x15a\x04@W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 'v' val`D\x82\x01Raue`\xF0\x1B`d\x82\x01R`\x84\x01a\x04.V[`\0\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x83\x11\x15a\x17\xA7WP`\0\x90P`\x03a\x18TV[\x84`\xFF\x16`\x1B\x14\x15\x80\x15a\x17\xBFWP\x84`\xFF\x16`\x1C\x14\x15[\x15a\x17\xD0WP`\0\x90P`\x04a\x18TV[`@\x80Q`\0\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x18$W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16a\x18MW`\0`\x01\x92P\x92PPa\x18TV[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81a\x18z`\xFF\x86\x90\x1C`\x1Ba\x1D\x85V[\x90Pa\x18\x88\x87\x82\x88\x85a\x17pV[\x93P\x93PPP\x93P\x93\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04@W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x18\xBDW`\0\x80\xFD[\x815a\x18\xC8\x81a\x18\x96V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x18\xE1W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x18\xFDW`\0\x80\xFD[\x835a\x19\x08\x81a\x18\x96V[\x92P` \x84\x015a\x19\x18\x81a\x18\x96V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x19 = (alloy::sol_types::sol_data::String,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "AVSMetadataURIUpdated(address,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 168u8, 156u8, 29u8, 194u8, 67u8, 216u8, 144u8, 138u8, 150u8, 221u8, 132u8, + 148u8, 75u8, 204u8, 151u8, 214u8, 188u8, 106u8, 192u8, 13u8, 215u8, 142u8, + 32u8, 98u8, 21u8, 118u8, 190u8, 106u8, 60u8, 148u8, 55u8, 19u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + avs: topics.1, + metadataURI: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.metadataURI, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.avs.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.avs, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for AVSMetadataURIUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&AVSMetadataURIUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &AVSMetadataURIUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`. + ```solidity + event Initialized(uint8 version); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Initialized { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "Initialized(uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, + 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, + 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { version: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.version, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Initialized { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Initialized> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Initialized) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorAVSRegistrationStatusUpdated(address,address,uint8)` and selector `0xf0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41`. + ```solidity + event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, IAVSDirectory.OperatorAVSRegistrationStatus status); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorAVSRegistrationStatusUpdated { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub avs: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub status: + ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorAVSRegistrationStatusUpdated { + type DataTuple<'a> = (IAVSDirectory::OperatorAVSRegistrationStatus,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = + "OperatorAVSRegistrationStatusUpdated(address,address,uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 240u8, 149u8, 43u8, 28u8, 101u8, 39u8, 29u8, 129u8, 157u8, 57u8, 152u8, 61u8, + 42u8, 187u8, 4u8, 75u8, 156u8, 172u8, 229u8, 155u8, 204u8, 77u8, 77u8, 211u8, + 137u8, 245u8, 134u8, 235u8, 220u8, 177u8, 91u8, 65u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: topics.1, + avs: topics.2, + status: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.status, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.operator.clone(), + self.avs.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + out[2usize] = ::encode_topic( + &self.avs, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorAVSRegistrationStatusUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorAVSRegistrationStatusUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from( + this: &OperatorAVSRegistrationStatusUpdated, + ) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. + ```solidity + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub previousOwner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, + 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, + 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + previousOwner: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.previousOwner.clone(), + self.newOwner.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.previousOwner, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Paused(address,uint256)` and selector `0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d`. + ```solidity + event Paused(address indexed account, uint256 newPausedStatus); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Paused { + #[allow(missing_docs)] + pub account: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Paused { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Paused(address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8, 188u8, + 152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8, 11u8, 182u8, + 224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + account: topics.1, + newPausedStatus: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.account.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.account, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Paused { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Paused> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Paused) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `PauserRegistrySet(address,address)` and selector `0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6`. + ```solidity + event PauserRegistrySet(address pauserRegistry, address newPauserRegistry); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct PauserRegistrySet { + #[allow(missing_docs)] + pub pauserRegistry: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newPauserRegistry: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for PauserRegistrySet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "PauserRegistrySet(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 110u8, 159u8, 205u8, 83u8, 152u8, 150u8, 252u8, 166u8, 14u8, 139u8, 15u8, 1u8, + 221u8, 88u8, 2u8, 51u8, 228u8, 138u8, 107u8, 15u8, 125u8, 240u8, 19u8, 184u8, + 155u8, 167u8, 245u8, 101u8, 134u8, 154u8, 205u8, 182u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + pauserRegistry: data.0, + newPauserRegistry: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.pauserRegistry, + ), + ::tokenize( + &self.newPauserRegistry, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for PauserRegistrySet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&PauserRegistrySet> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &PauserRegistrySet) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Unpaused(address,uint256)` and selector `0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c`. + ```solidity + event Unpaused(address indexed account, uint256 newPausedStatus); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Unpaused { + #[allow(missing_docs)] + pub account: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Unpaused { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Unpaused(address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8, 2u8, + 188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8, 228u8, 152u8, + 107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + account: topics.1, + newPausedStatus: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.account.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.account, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Unpaused { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Unpaused> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Unpaused) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. + ```solidity + constructor(address _delegation); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _delegation: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value._delegation,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _delegation: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._delegation, + ), + ) + } + } + }; + /**Function with signature `DOMAIN_TYPEHASH()` and selector `0x20606b70`. + ```solidity + function DOMAIN_TYPEHASH() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DOMAIN_TYPEHASHCall {} + ///Container type for the return parameters of the [`DOMAIN_TYPEHASH()`](DOMAIN_TYPEHASHCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DOMAIN_TYPEHASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DOMAIN_TYPEHASHCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DOMAIN_TYPEHASHCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DOMAIN_TYPEHASHReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DOMAIN_TYPEHASHReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for DOMAIN_TYPEHASHCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = DOMAIN_TYPEHASHReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "DOMAIN_TYPEHASH()"; + const SELECTOR: [u8; 4] = [32u8, 96u8, 107u8, 112u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `OPERATOR_AVS_REGISTRATION_TYPEHASH()` and selector `0xd79aceab`. + ```solidity + function OPERATOR_AVS_REGISTRATION_TYPEHASH() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OPERATOR_AVS_REGISTRATION_TYPEHASHCall {} + ///Container type for the return parameters of the [`OPERATOR_AVS_REGISTRATION_TYPEHASH()`](OPERATOR_AVS_REGISTRATION_TYPEHASHCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OPERATOR_AVS_REGISTRATION_TYPEHASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OPERATOR_AVS_REGISTRATION_TYPEHASHCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OPERATOR_AVS_REGISTRATION_TYPEHASHCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OPERATOR_AVS_REGISTRATION_TYPEHASHReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OPERATOR_AVS_REGISTRATION_TYPEHASHReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for OPERATOR_AVS_REGISTRATION_TYPEHASHCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = OPERATOR_AVS_REGISTRATION_TYPEHASHReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "OPERATOR_AVS_REGISTRATION_TYPEHASH()"; + const SELECTOR: [u8; 4] = [215u8, 154u8, 206u8, 171u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `avsOperatorStatus(address,address)` and selector `0x49075da3`. + ```solidity + function avsOperatorStatus(address, address) external view returns (IAVSDirectory.OperatorAVSRegistrationStatus); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct avsOperatorStatusCall { + pub _0: alloy::sol_types::private::Address, + pub _1: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`avsOperatorStatus(address,address)`](avsOperatorStatusCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct avsOperatorStatusReturn { + pub _0: + ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: avsOperatorStatusCall) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for avsOperatorStatusCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IAVSDirectory::OperatorAVSRegistrationStatus,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: avsOperatorStatusReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for avsOperatorStatusReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for avsOperatorStatusCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = avsOperatorStatusReturn; + type ReturnTuple<'a> = (IAVSDirectory::OperatorAVSRegistrationStatus,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "avsOperatorStatus(address,address)"; + const SELECTOR: [u8; 4] = [73u8, 7u8, 93u8, 163u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + ::tokenize( + &self._1, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)` and selector `0xa1060c88`. + ```solidity + function calculateOperatorAVSRegistrationDigestHash(address operator, address avs, bytes32 salt, uint256 expiry) external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct calculateOperatorAVSRegistrationDigestHashCall { + pub operator: alloy::sol_types::private::Address, + pub avs: alloy::sol_types::private::Address, + pub salt: alloy::sol_types::private::FixedBytes<32>, + pub expiry: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)`](calculateOperatorAVSRegistrationDigestHashCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct calculateOperatorAVSRegistrationDigestHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: calculateOperatorAVSRegistrationDigestHashCall) -> Self { + (value.operator, value.avs, value.salt, value.expiry) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for calculateOperatorAVSRegistrationDigestHashCall + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + avs: tuple.1, + salt: tuple.2, + expiry: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: calculateOperatorAVSRegistrationDigestHashReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for calculateOperatorAVSRegistrationDigestHashReturn + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for calculateOperatorAVSRegistrationDigestHashCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = calculateOperatorAVSRegistrationDigestHashReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)"; + const SELECTOR: [u8; 4] = [161u8, 6u8, 12u8, 136u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.avs, + ), + as alloy_sol_types::SolType>::tokenize(&self.salt), + as alloy_sol_types::SolType>::tokenize(&self.expiry), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `cancelSalt(bytes32)` and selector `0xec76f442`. + ```solidity + function cancelSalt(bytes32 salt) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct cancelSaltCall { + pub salt: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`cancelSalt(bytes32)`](cancelSaltCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct cancelSaltReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: cancelSaltCall) -> Self { + (value.salt,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for cancelSaltCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { salt: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: cancelSaltReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for cancelSaltReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for cancelSaltCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = cancelSaltReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "cancelSalt(bytes32)"; + const SELECTOR: [u8; 4] = [236u8, 118u8, 244u8, 66u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.salt), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `delegation()` and selector `0xdf5cf723`. + ```solidity + function delegation() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegationCall {} + ///Container type for the return parameters of the [`delegation()`](delegationCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for delegationCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = delegationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "delegation()"; + const SELECTOR: [u8; 4] = [223u8, 92u8, 247u8, 35u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `deregisterOperatorFromAVS(address)` and selector `0xa364f4da`. + ```solidity + function deregisterOperatorFromAVS(address operator) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorFromAVSCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`deregisterOperatorFromAVS(address)`](deregisterOperatorFromAVSCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorFromAVSReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorFromAVSCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorFromAVSCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorFromAVSReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorFromAVSReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for deregisterOperatorFromAVSCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = deregisterOperatorFromAVSReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "deregisterOperatorFromAVS(address)"; + const SELECTOR: [u8; 4] = [163u8, 100u8, 244u8, 218u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `domainSeparator()` and selector `0xf698da25`. + ```solidity + function domainSeparator() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct domainSeparatorCall {} + ///Container type for the return parameters of the [`domainSeparator()`](domainSeparatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct domainSeparatorReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: domainSeparatorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for domainSeparatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: domainSeparatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for domainSeparatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for domainSeparatorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = domainSeparatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "domainSeparator()"; + const SELECTOR: [u8; 4] = [246u8, 152u8, 218u8, 37u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `initialize(address,address,uint256)` and selector `0x1794bb3c`. + ```solidity + function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeCall { + pub initialOwner: alloy::sol_types::private::Address, + pub _pauserRegistry: alloy::sol_types::private::Address, + pub initialPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`initialize(address,address,uint256)`](initializeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeCall) -> Self { + ( + value.initialOwner, + value._pauserRegistry, + value.initialPausedStatus, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + initialOwner: tuple.0, + _pauserRegistry: tuple.1, + initialPausedStatus: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for initializeCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = initializeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "initialize(address,address,uint256)"; + const SELECTOR: [u8; 4] = [23u8, 148u8, 187u8, 60u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.initialOwner, + ), + ::tokenize( + &self._pauserRegistry, + ), + as alloy_sol_types::SolType>::tokenize( + &self.initialPausedStatus, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `operatorSaltIsSpent(address,bytes32)` and selector `0x374823b5`. + ```solidity + function operatorSaltIsSpent(address, bytes32) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorSaltIsSpentCall { + pub _0: alloy::sol_types::private::Address, + pub _1: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`operatorSaltIsSpent(address,bytes32)`](operatorSaltIsSpentCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorSaltIsSpentReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorSaltIsSpentCall) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorSaltIsSpentCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorSaltIsSpentReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorSaltIsSpentReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for operatorSaltIsSpentCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = operatorSaltIsSpentReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "operatorSaltIsSpent(address,bytes32)"; + const SELECTOR: [u8; 4] = [55u8, 72u8, 35u8, 181u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + as alloy_sol_types::SolType>::tokenize(&self._1), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. + ```solidity + function owner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pause(uint256)` and selector `0x136439dd`. + ```solidity + function pause(uint256 newPausedStatus) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseCall { + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`pause(uint256)`](pauseCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseCall) -> Self { + (value.newPausedStatus,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newPausedStatus: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauseCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pauseReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pause(uint256)"; + const SELECTOR: [u8; 4] = [19u8, 100u8, 57u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pauseAll()` and selector `0x595c6a67`. + ```solidity + function pauseAll() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseAllCall {} + ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseAllReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseAllCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseAllCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseAllReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseAllReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauseAllCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pauseAllReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pauseAll()"; + const SELECTOR: [u8; 4] = [89u8, 92u8, 106u8, 103u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `paused(uint8)` and selector `0x5ac86ab7`. + ```solidity + function paused(uint8 index) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_0Call { + pub index: u8, + } + ///Container type for the return parameters of the [`paused(uint8)`](paused_0Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_0Return { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_0Call) -> Self { + (value.index,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_0Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { index: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_0Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_0Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for paused_0Call { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = paused_0Return; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "paused(uint8)"; + const SELECTOR: [u8; 4] = [90u8, 200u8, 106u8, 183u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `paused()` and selector `0x5c975abb`. + ```solidity + function paused() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_1Call {} + ///Container type for the return parameters of the [`paused()`](paused_1Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_1Return { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_1Call) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_1Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for paused_1Call { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = paused_1Return; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "paused()"; + const SELECTOR: [u8; 4] = [92u8, 151u8, 90u8, 187u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pauserRegistry()` and selector `0x886f1195`. + ```solidity + function pauserRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauserRegistryCall {} + ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauserRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauserRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauserRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauserRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauserRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauserRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pauserRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pauserRegistry()"; + const SELECTOR: [u8; 4] = [136u8, 111u8, 17u8, 149u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registerOperatorToAVS(address,(bytes,bytes32,uint256))` and selector `0x9926ee7d`. + ```solidity + function registerOperatorToAVS(address operator, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorToAVSCall { + pub operator: alloy::sol_types::private::Address, + pub operatorSignature: + ::RustType, + } + ///Container type for the return parameters of the [`registerOperatorToAVS(address,(bytes,bytes32,uint256))`](registerOperatorToAVSCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorToAVSReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithSaltAndExpiry, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorToAVSCall) -> Self { + (value.operator, value.operatorSignature) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorToAVSCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + operatorSignature: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorToAVSReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorToAVSReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registerOperatorToAVSCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithSaltAndExpiry, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registerOperatorToAVSReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "registerOperatorToAVS(address,(bytes,bytes32,uint256))"; + const SELECTOR: [u8; 4] = [153u8, 38u8, 238u8, 125u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.operatorSignature, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `renounceOwnership()` and selector `0x715018a6`. + ```solidity + function renounceOwnership() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct renounceOwnershipCall {} + ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct renounceOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for renounceOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for renounceOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for renounceOwnershipCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = renounceOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "renounceOwnership()"; + const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setPauserRegistry(address)` and selector `0x10d67a2f`. + ```solidity + function setPauserRegistry(address newPauserRegistry) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setPauserRegistryCall { + pub newPauserRegistry: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setPauserRegistry(address)`](setPauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setPauserRegistryReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setPauserRegistryCall) -> Self { + (value.newPauserRegistry,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setPauserRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newPauserRegistry: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setPauserRegistryReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setPauserRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setPauserRegistryCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setPauserRegistryReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setPauserRegistry(address)"; + const SELECTOR: [u8; 4] = [16u8, 214u8, 122u8, 47u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newPauserRegistry, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. + ```solidity + function transferOwnership(address newOwner) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `unpause(uint256)` and selector `0xfabc1cbc`. + ```solidity + function unpause(uint256 newPausedStatus) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct unpauseCall { + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`unpause(uint256)`](unpauseCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct unpauseReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: unpauseCall) -> Self { + (value.newPausedStatus,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for unpauseCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newPausedStatus: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: unpauseReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for unpauseReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for unpauseCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = unpauseReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "unpause(uint256)"; + const SELECTOR: [u8; 4] = [250u8, 188u8, 28u8, 188u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateAVSMetadataURI(string)` and selector `0xa98fb355`. + ```solidity + function updateAVSMetadataURI(string memory metadataURI) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateAVSMetadataURICall { + pub metadataURI: alloy::sol_types::private::String, + } + ///Container type for the return parameters of the [`updateAVSMetadataURI(string)`](updateAVSMetadataURICall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateAVSMetadataURIReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateAVSMetadataURICall) -> Self { + (value.metadataURI,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateAVSMetadataURICall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + metadataURI: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateAVSMetadataURIReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateAVSMetadataURIReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateAVSMetadataURICall { + type Parameters<'a> = (alloy::sol_types::sol_data::String,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateAVSMetadataURIReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateAVSMetadataURI(string)"; + const SELECTOR: [u8; 4] = [169u8, 143u8, 179u8, 85u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.metadataURI, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`AVSDirectory`](self) function calls. + pub enum AVSDirectoryCalls { + DOMAIN_TYPEHASH(DOMAIN_TYPEHASHCall), + OPERATOR_AVS_REGISTRATION_TYPEHASH(OPERATOR_AVS_REGISTRATION_TYPEHASHCall), + avsOperatorStatus(avsOperatorStatusCall), + calculateOperatorAVSRegistrationDigestHash(calculateOperatorAVSRegistrationDigestHashCall), + cancelSalt(cancelSaltCall), + delegation(delegationCall), + deregisterOperatorFromAVS(deregisterOperatorFromAVSCall), + domainSeparator(domainSeparatorCall), + initialize(initializeCall), + operatorSaltIsSpent(operatorSaltIsSpentCall), + owner(ownerCall), + pause(pauseCall), + pauseAll(pauseAllCall), + paused_0(paused_0Call), + paused_1(paused_1Call), + pauserRegistry(pauserRegistryCall), + registerOperatorToAVS(registerOperatorToAVSCall), + renounceOwnership(renounceOwnershipCall), + setPauserRegistry(setPauserRegistryCall), + transferOwnership(transferOwnershipCall), + unpause(unpauseCall), + updateAVSMetadataURI(updateAVSMetadataURICall), + } + #[automatically_derived] + impl AVSDirectoryCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [16u8, 214u8, 122u8, 47u8], + [19u8, 100u8, 57u8, 221u8], + [23u8, 148u8, 187u8, 60u8], + [32u8, 96u8, 107u8, 112u8], + [55u8, 72u8, 35u8, 181u8], + [73u8, 7u8, 93u8, 163u8], + [89u8, 92u8, 106u8, 103u8], + [90u8, 200u8, 106u8, 183u8], + [92u8, 151u8, 90u8, 187u8], + [113u8, 80u8, 24u8, 166u8], + [136u8, 111u8, 17u8, 149u8], + [141u8, 165u8, 203u8, 91u8], + [153u8, 38u8, 238u8, 125u8], + [161u8, 6u8, 12u8, 136u8], + [163u8, 100u8, 244u8, 218u8], + [169u8, 143u8, 179u8, 85u8], + [215u8, 154u8, 206u8, 171u8], + [223u8, 92u8, 247u8, 35u8], + [236u8, 118u8, 244u8, 66u8], + [242u8, 253u8, 227u8, 139u8], + [246u8, 152u8, 218u8, 37u8], + [250u8, 188u8, 28u8, 188u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for AVSDirectoryCalls { + const NAME: &'static str = "AVSDirectoryCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 22usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::DOMAIN_TYPEHASH(_) => { + ::SELECTOR + } + Self::OPERATOR_AVS_REGISTRATION_TYPEHASH(_) => { + ::SELECTOR + } + Self::avsOperatorStatus(_) => { + ::SELECTOR + } + Self::calculateOperatorAVSRegistrationDigestHash(_) => { + ::SELECTOR + } + Self::cancelSalt(_) => { + ::SELECTOR + } + Self::delegation(_) => { + ::SELECTOR + } + Self::deregisterOperatorFromAVS(_) => { + ::SELECTOR + } + Self::domainSeparator(_) => { + ::SELECTOR + } + Self::initialize(_) => { + ::SELECTOR + } + Self::operatorSaltIsSpent(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::pause(_) => ::SELECTOR, + Self::pauseAll(_) => ::SELECTOR, + Self::paused_0(_) => ::SELECTOR, + Self::paused_1(_) => ::SELECTOR, + Self::pauserRegistry(_) => { + ::SELECTOR + } + Self::registerOperatorToAVS(_) => { + ::SELECTOR + } + Self::renounceOwnership(_) => { + ::SELECTOR + } + Self::setPauserRegistry(_) => { + ::SELECTOR + } + Self::transferOwnership(_) => { + ::SELECTOR + } + Self::unpause(_) => ::SELECTOR, + Self::updateAVSMetadataURI(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn setPauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(AVSDirectoryCalls::setPauserRegistry) + } + setPauserRegistry + }, + { + fn pause( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(AVSDirectoryCalls::pause) + } + pause + }, + { + fn initialize( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(AVSDirectoryCalls::initialize) + } + initialize + }, + { + fn DOMAIN_TYPEHASH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(AVSDirectoryCalls::DOMAIN_TYPEHASH) + } + DOMAIN_TYPEHASH + }, + { + fn operatorSaltIsSpent( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(AVSDirectoryCalls::operatorSaltIsSpent) + } + operatorSaltIsSpent + }, + { + fn avsOperatorStatus( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(AVSDirectoryCalls::avsOperatorStatus) + } + avsOperatorStatus + }, + { + fn pauseAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(AVSDirectoryCalls::pauseAll) + } + pauseAll + }, + { + fn paused_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(AVSDirectoryCalls::paused_0) + } + paused_0 + }, + { + fn paused_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(AVSDirectoryCalls::paused_1) + } + paused_1 + }, + { + fn renounceOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(AVSDirectoryCalls::renounceOwnership) + } + renounceOwnership + }, + { + fn pauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(AVSDirectoryCalls::pauserRegistry) + } + pauserRegistry + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(AVSDirectoryCalls::owner) + } + owner + }, + { + fn registerOperatorToAVS( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(AVSDirectoryCalls::registerOperatorToAVS) + } + registerOperatorToAVS + }, + { + fn calculateOperatorAVSRegistrationDigestHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + AVSDirectoryCalls::calculateOperatorAVSRegistrationDigestHash, + ) + } + calculateOperatorAVSRegistrationDigestHash + }, + { + fn deregisterOperatorFromAVS( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(AVSDirectoryCalls::deregisterOperatorFromAVS) + } + deregisterOperatorFromAVS + }, + { + fn updateAVSMetadataURI( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(AVSDirectoryCalls::updateAVSMetadataURI) + } + updateAVSMetadataURI + }, + { + fn OPERATOR_AVS_REGISTRATION_TYPEHASH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(AVSDirectoryCalls::OPERATOR_AVS_REGISTRATION_TYPEHASH) + } + OPERATOR_AVS_REGISTRATION_TYPEHASH + }, + { + fn delegation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(AVSDirectoryCalls::delegation) + } + delegation + }, + { + fn cancelSalt( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(AVSDirectoryCalls::cancelSalt) + } + cancelSalt + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(AVSDirectoryCalls::transferOwnership) + } + transferOwnership + }, + { + fn domainSeparator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(AVSDirectoryCalls::domainSeparator) + } + domainSeparator + }, + { + fn unpause( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(AVSDirectoryCalls::unpause) + } + unpause + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::DOMAIN_TYPEHASH(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::OPERATOR_AVS_REGISTRATION_TYPEHASH(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::avsOperatorStatus(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::calculateOperatorAVSRegistrationDigestHash(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::cancelSalt(inner) => { + ::abi_encoded_size(inner) + } + Self::delegation(inner) => { + ::abi_encoded_size(inner) + } + Self::deregisterOperatorFromAVS(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::domainSeparator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::initialize(inner) => { + ::abi_encoded_size(inner) + } + Self::operatorSaltIsSpent(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::pause(inner) => { + ::abi_encoded_size(inner) + } + Self::pauseAll(inner) => { + ::abi_encoded_size(inner) + } + Self::paused_0(inner) => { + ::abi_encoded_size(inner) + } + Self::paused_1(inner) => { + ::abi_encoded_size(inner) + } + Self::pauserRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registerOperatorToAVS(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::renounceOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setPauserRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::unpause(inner) => { + ::abi_encoded_size(inner) + } + Self::updateAVSMetadataURI(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::DOMAIN_TYPEHASH(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::OPERATOR_AVS_REGISTRATION_TYPEHASH(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::avsOperatorStatus(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::calculateOperatorAVSRegistrationDigestHash(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::cancelSalt(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::delegation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::deregisterOperatorFromAVS(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::domainSeparator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::initialize(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::operatorSaltIsSpent(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::pause(inner) => { + ::abi_encode_raw(inner, out) + } + Self::pauseAll(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::paused_0(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::paused_1(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::pauserRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registerOperatorToAVS(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::renounceOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setPauserRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::unpause(inner) => { + ::abi_encode_raw(inner, out) + } + Self::updateAVSMetadataURI(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`AVSDirectory`](self) events. + pub enum AVSDirectoryEvents { + AVSMetadataURIUpdated(AVSMetadataURIUpdated), + Initialized(Initialized), + OperatorAVSRegistrationStatusUpdated(OperatorAVSRegistrationStatusUpdated), + OwnershipTransferred(OwnershipTransferred), + Paused(Paused), + PauserRegistrySet(PauserRegistrySet), + Unpaused(Unpaused), + } + #[automatically_derived] + impl AVSDirectoryEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8, 2u8, + 188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8, 228u8, 152u8, + 107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8, + ], + [ + 110u8, 159u8, 205u8, 83u8, 152u8, 150u8, 252u8, 166u8, 14u8, 139u8, 15u8, 1u8, + 221u8, 88u8, 2u8, 51u8, 228u8, 138u8, 107u8, 15u8, 125u8, 240u8, 19u8, 184u8, + 155u8, 167u8, 245u8, 101u8, 134u8, 154u8, 205u8, 182u8, + ], + [ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, 56u8, + 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, 96u8, + 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ], + [ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, 208u8, + 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, 175u8, 227u8, + 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ], + [ + 168u8, 156u8, 29u8, 194u8, 67u8, 216u8, 144u8, 138u8, 150u8, 221u8, 132u8, 148u8, + 75u8, 204u8, 151u8, 214u8, 188u8, 106u8, 192u8, 13u8, 215u8, 142u8, 32u8, 98u8, + 21u8, 118u8, 190u8, 106u8, 60u8, 148u8, 55u8, 19u8, + ], + [ + 171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8, 188u8, + 152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8, 11u8, 182u8, + 224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8, + ], + [ + 240u8, 149u8, 43u8, 28u8, 101u8, 39u8, 29u8, 129u8, 157u8, 57u8, 152u8, 61u8, 42u8, + 187u8, 4u8, 75u8, 156u8, 172u8, 229u8, 155u8, 204u8, 77u8, 77u8, 211u8, 137u8, + 245u8, 134u8, 235u8, 220u8, 177u8, 91u8, 65u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for AVSDirectoryEvents { + const NAME: &'static str = "AVSDirectoryEvents"; + const COUNT: usize = 7usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::AVSMetadataURIUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Initialized) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::OperatorAVSRegistrationStatusUpdated) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::OwnershipTransferred) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Paused) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::PauserRegistrySet) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Unpaused) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for AVSDirectoryEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::AVSMetadataURIUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorAVSRegistrationStatusUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Paused(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::PauserRegistrySet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Unpaused(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::AVSMetadataURIUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorAVSRegistrationStatusUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Paused(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::PauserRegistrySet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Unpaused(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`AVSDirectory`](self) contract instance. + + See the [wrapper's documentation](`AVSDirectoryInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> AVSDirectoryInstance { + AVSDirectoryInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _delegation: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future>> + { + AVSDirectoryInstance::::deploy(provider, _delegation) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _delegation: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + AVSDirectoryInstance::::deploy_builder(provider, _delegation) + } + /**A [`AVSDirectory`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`AVSDirectory`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct AVSDirectoryInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for AVSDirectoryInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("AVSDirectoryInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > AVSDirectoryInstance + { + /**Creates a new wrapper around an on-chain [`AVSDirectory`](self) contract instance. + + See the [wrapper's documentation](`AVSDirectoryInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _delegation: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, _delegation); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _delegation: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode(&constructorCall { _delegation }) + [..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl AVSDirectoryInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> AVSDirectoryInstance { + AVSDirectoryInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > AVSDirectoryInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`DOMAIN_TYPEHASH`] function. + pub fn DOMAIN_TYPEHASH( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&DOMAIN_TYPEHASHCall {}) + } + ///Creates a new call builder for the [`OPERATOR_AVS_REGISTRATION_TYPEHASH`] function. + pub fn OPERATOR_AVS_REGISTRATION_TYPEHASH( + &self, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&OPERATOR_AVS_REGISTRATION_TYPEHASHCall {}) + } + ///Creates a new call builder for the [`avsOperatorStatus`] function. + pub fn avsOperatorStatus( + &self, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&avsOperatorStatusCall { _0, _1 }) + } + ///Creates a new call builder for the [`calculateOperatorAVSRegistrationDigestHash`] function. + pub fn calculateOperatorAVSRegistrationDigestHash( + &self, + operator: alloy::sol_types::private::Address, + avs: alloy::sol_types::private::Address, + salt: alloy::sol_types::private::FixedBytes<32>, + expiry: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&calculateOperatorAVSRegistrationDigestHashCall { + operator, + avs, + salt, + expiry, + }) + } + ///Creates a new call builder for the [`cancelSalt`] function. + pub fn cancelSalt( + &self, + salt: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&cancelSaltCall { salt }) + } + ///Creates a new call builder for the [`delegation`] function. + pub fn delegation(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&delegationCall {}) + } + ///Creates a new call builder for the [`deregisterOperatorFromAVS`] function. + pub fn deregisterOperatorFromAVS( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&deregisterOperatorFromAVSCall { operator }) + } + ///Creates a new call builder for the [`domainSeparator`] function. + pub fn domainSeparator( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&domainSeparatorCall {}) + } + ///Creates a new call builder for the [`initialize`] function. + pub fn initialize( + &self, + initialOwner: alloy::sol_types::private::Address, + _pauserRegistry: alloy::sol_types::private::Address, + initialPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initializeCall { + initialOwner, + _pauserRegistry, + initialPausedStatus, + }) + } + ///Creates a new call builder for the [`operatorSaltIsSpent`] function. + pub fn operatorSaltIsSpent( + &self, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&operatorSaltIsSpentCall { _0, _1 }) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`pause`] function. + pub fn pause( + &self, + newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&pauseCall { newPausedStatus }) + } + ///Creates a new call builder for the [`pauseAll`] function. + pub fn pauseAll(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&pauseAllCall {}) + } + ///Creates a new call builder for the [`paused_0`] function. + pub fn paused_0( + &self, + index: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&paused_0Call { index }) + } + ///Creates a new call builder for the [`paused_1`] function. + pub fn paused_1(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&paused_1Call {}) + } + ///Creates a new call builder for the [`pauserRegistry`] function. + pub fn pauserRegistry( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&pauserRegistryCall {}) + } + ///Creates a new call builder for the [`registerOperatorToAVS`] function. + pub fn registerOperatorToAVS( + &self, + operator: alloy::sol_types::private::Address, + operatorSignature: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterOperatorToAVSCall { + operator, + operatorSignature, + }) + } + ///Creates a new call builder for the [`renounceOwnership`] function. + pub fn renounceOwnership( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&renounceOwnershipCall {}) + } + ///Creates a new call builder for the [`setPauserRegistry`] function. + pub fn setPauserRegistry( + &self, + newPauserRegistry: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setPauserRegistryCall { newPauserRegistry }) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + ///Creates a new call builder for the [`unpause`] function. + pub fn unpause( + &self, + newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&unpauseCall { newPausedStatus }) + } + ///Creates a new call builder for the [`updateAVSMetadataURI`] function. + pub fn updateAVSMetadataURI( + &self, + metadataURI: alloy::sol_types::private::String, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateAVSMetadataURICall { metadataURI }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > AVSDirectoryInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`AVSMetadataURIUpdated`] event. + pub fn AVSMetadataURIUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Initialized`] event. + pub fn Initialized_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorAVSRegistrationStatusUpdated`] event. + pub fn OperatorAVSRegistrationStatusUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Paused`] event. + pub fn Paused_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`PauserRegistrySet`] event. + pub fn PauserRegistrySet_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Unpaused`] event. + pub fn Unpaused_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/beaconchainproofs.rs b/crates/utils/src/beaconchainproofs.rs new file mode 100644 index 00000000..c7db72ed --- /dev/null +++ b/crates/utils/src/beaconchainproofs.rs @@ -0,0 +1,221 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface BeaconChainProofs {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod BeaconChainProofs { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d1f2903735d092efdfdc6493572b1023dbececa57b01ff35963592dbf55571a164736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xD1\xF2\x9075\xD0\x92\xEF\xDF\xDCd\x93W+\x10#\xDB\xEC\xEC\xA5{\x01\xFF5\x965\x92\xDB\xF5Uq\xA1dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d1f2903735d092efdfdc6493572b1023dbececa57b01ff35963592dbf55571a164736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xD1\xF2\x9075\xD0\x92\xEF\xDF\xDCd\x93W+\x10#\xDB\xEC\xEC\xA5{\x01\xFF5\x965\x92\xDB\xF5Uq\xA1dsolcC\0\x08\x0C\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`BeaconChainProofs`](self) contract instance. + + See the [wrapper's documentation](`BeaconChainProofsInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> BeaconChainProofsInstance { + BeaconChainProofsInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + BeaconChainProofsInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + BeaconChainProofsInstance::::deploy_builder(provider) + } + /**A [`BeaconChainProofs`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`BeaconChainProofs`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct BeaconChainProofsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for BeaconChainProofsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("BeaconChainProofsInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BeaconChainProofsInstance + { + /**Creates a new wrapper around an on-chain [`BeaconChainProofs`](self) contract instance. + + See the [wrapper's documentation](`BeaconChainProofsInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl BeaconChainProofsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> BeaconChainProofsInstance { + BeaconChainProofsInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BeaconChainProofsInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BeaconChainProofsInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/binding.rs b/crates/utils/src/binding.rs deleted file mode 100644 index d8b608f2..00000000 --- a/crates/utils/src/binding.rs +++ /dev/null @@ -1,132 +0,0 @@ -use alloy_sol_types::sol; - -// https://github.com/Layr-Labs/eigenlayer-middleware/blob/m2-mainnet/src/StakeRegistry.sol -sol!( - #[allow(missing_docs)] - #[sol(rpc)] - StakeRegistry, - "json/StakeRegistry.json" -); - -// https://github.com/Layr-Labs/eigenlayer-middleware/blob/m2-mainnet/src/RegistryCoordinator.sol -sol!( - #[allow(clippy::too_many_arguments)] - #[allow(missing_docs)] - #[sol(rpc)] - #[derive(Debug)] - RegistryCoordinator, - "json/RegistryCoordinator.json" -); - -// https://github.com/Layr-Labs/eigenlayer-middleware/blob/m2-mainnet/src/OperatorStateRetriever.sol -sol!( - #[allow(missing_docs)] - #[sol(rpc)] - #[derive(Debug)] - OperatorStateRetriever, - "json/OperatorStateRetriever.json" -); - -// https://github.com/Layr-Labs/eigenlayer-middleware/blob/m2-mainnet/src/BLSApkRegistry.sol -sol!( - #[allow(missing_docs)] - #[derive(Debug)] - #[sol(rpc)] - BLSApkRegistry, - "json/BLSApkRegistry.json" -); - -// https://github.com/Layr-Labs/eigenlayer-middleware/blob/m2-mainnet/src/ServiceManagerBase.sol -sol!( - #[allow(missing_docs)] - #[sol(rpc)] - ServiceManagerBase, - "json/ServiceManagerBase.json" -); - -// https://github.com/Layr-Labs/eigenlayer-contracts/blob/mainnet/src/contracts/core/AVSDirectory.sol -sol!( - #[allow(missing_docs)] - #[sol(rpc)] - AVSDirectory, - "json/AVSDirectory.json" -); - -// https://github.com/Layr-Labs/eigenlayer-contracts/blob/mainnet/src/contracts/core/DelegationManager.sol -sol!( - #[allow(missing_docs)] - #[sol(rpc)] - DelegationManager, - "json/DelegationManager.json" -); - -// https://github.com/Layr-Labs/eigenlayer-contracts/blob/mainnet/src/contracts/interfaces/ISlasher.sol -sol!( - #[allow(missing_docs)] - #[sol(rpc)] - ISlasher, - "json/ISlasher.json" -); - -// https://github.com/Layr-Labs/eigenlayer-contracts/blob/mainnet/src/contracts/interfaces/IStrategy.sol -sol!( - #[allow(missing_docs)] - #[sol(rpc)] - IStrategy, - "json/IStrategy.json" -); - -// standard -sol!( - #[allow(missing_docs)] - #[sol(rpc)] - IERC20, - "json/IERC20.json" -); - -// https://github.com/Layr-Labs/eigenlayer-contracts/blob/mainnet/src/contracts/core/StrategyManager.sol -sol!( - #[allow(missing_docs)] - #[sol(rpc)] - StrategyManager, - "json/StrategyManager.json" -); - -// https://github.com/Layr-Labs/eigenlayer-contracts/blob/mainnet/src/contracts/interfaces/IAVSDirectory.sol -sol!( - #[allow(missing_docs)] - #[sol(rpc)] - IAVSDirectory, - "json/IAVSDirectory.json" -); - -// https://github.com/Layr-Labs/eigenlayer-middleware/blob/mainnet/src/unaudited/ECDSAStakeRegistry.sol -sol!( - #[allow(missing_docs)] - #[sol(rpc)] - ECDSAStakeRegistry, - "json/ECDSAStakeRegistry.json" -); - -sol!( - #[allow(missing_docs)] - #[sol(rpc)] - IBLSSignatureChecker, - "json/IBLSSignatureChecker.json" -); - -// Anvil utilities - -sol!( - #[allow(missing_docs)] - #[sol(rpc)] - ContractsRegistry, - "json/ContractsRegistry.json" -); - -sol!( - #[allow(missing_docs)] - #[sol(rpc)] - mockAvsServiceManager, - "json/MockAvsServiceManager.json" -); diff --git a/crates/utils/src/bitmaputils.rs b/crates/utils/src/bitmaputils.rs new file mode 100644 index 00000000..d2a1c903 --- /dev/null +++ b/crates/utils/src/bitmaputils.rs @@ -0,0 +1,219 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface BitmapUtils {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod BitmapUtils { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220120dc0c9f38680615baacfa26aef773872b06e00c56b044d51beecc0f15da70664736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x12\r\xC0\xC9\xF3\x86\x80a[\xAA\xCF\xA2j\xEFw8r\xB0n\0\xC5k\x04MQ\xBE\xEC\xC0\xF1]\xA7\x06dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220120dc0c9f38680615baacfa26aef773872b06e00c56b044d51beecc0f15da70664736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x12\r\xC0\xC9\xF3\x86\x80a[\xAA\xCF\xA2j\xEFw8r\xB0n\0\xC5k\x04MQ\xBE\xEC\xC0\xF1]\xA7\x06dsolcC\0\x08\x0C\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`BitmapUtils`](self) contract instance. + + See the [wrapper's documentation](`BitmapUtilsInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> BitmapUtilsInstance { + BitmapUtilsInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + BitmapUtilsInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + BitmapUtilsInstance::::deploy_builder(provider) + } + /**A [`BitmapUtils`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`BitmapUtils`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct BitmapUtilsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for BitmapUtilsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("BitmapUtilsInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BitmapUtilsInstance + { + /**Creates a new wrapper around an on-chain [`BitmapUtils`](self) contract instance. + + See the [wrapper's documentation](`BitmapUtilsInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl BitmapUtilsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> BitmapUtilsInstance { + BitmapUtilsInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BitmapUtilsInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BitmapUtilsInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/blsapkregistry.rs b/crates/utils/src/blsapkregistry.rs new file mode 100644 index 00000000..01ce7879 --- /dev/null +++ b/crates/utils/src/blsapkregistry.rs @@ -0,0 +1,5475 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library BN254 { + struct G1Point { uint256 X; uint256 Y; } + struct G2Point { uint256[2] X; uint256[2] Y; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod BN254 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct G1Point { uint256 X; uint256 Y; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct G1Point { + pub X: alloy::sol_types::private::primitives::aliases::U256, + pub Y: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: G1Point) -> Self { + (value.X, value.Y) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for G1Point { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + X: tuple.0, + Y: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for G1Point { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for G1Point { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.X, + ), + as alloy_sol_types::SolType>::tokenize( + &self.Y, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for G1Point { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for G1Point { + const NAME: &'static str = "G1Point"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 X,uint256 Y)") + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word(&self.X) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.Y) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for G1Point { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.X) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.Y) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.X, out); + as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.Y, out); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct G2Point { uint256[2] X; uint256[2] Y; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct G2Point { + pub X: [alloy::sol_types::private::primitives::aliases::U256; 2usize], + pub Y: [alloy::sol_types::private::primitives::aliases::U256; 2usize], + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedArray, 2usize>, + alloy::sol_types::sol_data::FixedArray, 2usize>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + [alloy::sol_types::private::primitives::aliases::U256; 2usize], + [alloy::sol_types::private::primitives::aliases::U256; 2usize], + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: G2Point) -> Self { + (value.X, value.Y) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for G2Point { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + X: tuple.0, + Y: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for G2Point { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for G2Point { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + , + 2usize, + > as alloy_sol_types::SolType>::tokenize(&self.X), + , + 2usize, + > as alloy_sol_types::SolType>::tokenize(&self.Y), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for G2Point { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for G2Point { + const NAME: &'static str = "G2Point"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed("G2Point(uint256[2] X,uint256[2] Y)") + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + , + 2usize, + > as alloy_sol_types::SolType>::eip712_data_word(&self.X) + .0, + , + 2usize, + > as alloy_sol_types::SolType>::eip712_data_word(&self.Y) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for G2Point { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + , + 2usize, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.X + ) + + , + 2usize, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.Y + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + , + 2usize, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.X, out + ); + , + 2usize, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.Y, out + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance. + + See the [wrapper's documentation](`BN254Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> BN254Instance { + BN254Instance::::new(address, provider) + } + /**A [`BN254`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`BN254`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct BN254Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for BN254Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("BN254Instance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BN254Instance + { + /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance. + + See the [wrapper's documentation](`BN254Instance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl BN254Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> BN254Instance { + BN254Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BN254Instance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BN254Instance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library IBLSApkRegistry { + struct ApkUpdate { bytes24 apkHash; uint32 updateBlockNumber; uint32 nextUpdateBlockNumber; } + struct PubkeyRegistrationParams { BN254.G1Point pubkeyRegistrationSignature; BN254.G1Point pubkeyG1; BN254.G2Point pubkeyG2; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IBLSApkRegistry { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct ApkUpdate { bytes24 apkHash; uint32 updateBlockNumber; uint32 nextUpdateBlockNumber; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ApkUpdate { + pub apkHash: alloy::sol_types::private::FixedBytes<24>, + pub updateBlockNumber: u32, + pub nextUpdateBlockNumber: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<24>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<24>, u32, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ApkUpdate) -> Self { + ( + value.apkHash, + value.updateBlockNumber, + value.nextUpdateBlockNumber, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ApkUpdate { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + apkHash: tuple.0, + updateBlockNumber: tuple.1, + nextUpdateBlockNumber: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ApkUpdate { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ApkUpdate { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.apkHash), + as alloy_sol_types::SolType>::tokenize(&self.updateBlockNumber), + as alloy_sol_types::SolType>::tokenize(&self.nextUpdateBlockNumber), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for ApkUpdate { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for ApkUpdate { + const NAME: &'static str = "ApkUpdate"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ApkUpdate(bytes24 apkHash,uint32 updateBlockNumber,uint32 nextUpdateBlockNumber)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word(&self.apkHash) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.updateBlockNumber, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.nextUpdateBlockNumber, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ApkUpdate { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.apkHash, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.updateBlockNumber, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.nextUpdateBlockNumber, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.apkHash, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.updateBlockNumber, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nextUpdateBlockNumber, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct PubkeyRegistrationParams { BN254.G1Point pubkeyRegistrationSignature; BN254.G1Point pubkeyG1; BN254.G2Point pubkeyG2; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct PubkeyRegistrationParams { + pub pubkeyRegistrationSignature: ::RustType, + pub pubkeyG1: ::RustType, + pub pubkeyG2: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (BN254::G1Point, BN254::G1Point, BN254::G2Point); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: PubkeyRegistrationParams) -> Self { + ( + value.pubkeyRegistrationSignature, + value.pubkeyG1, + value.pubkeyG2, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for PubkeyRegistrationParams { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + pubkeyRegistrationSignature: tuple.0, + pubkeyG1: tuple.1, + pubkeyG2: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for PubkeyRegistrationParams { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for PubkeyRegistrationParams { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.pubkeyRegistrationSignature, + ), + ::tokenize(&self.pubkeyG1), + ::tokenize(&self.pubkeyG2), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for PubkeyRegistrationParams { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for PubkeyRegistrationParams { + const NAME: &'static str = "PubkeyRegistrationParams"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "PubkeyRegistrationParams(BN254.G1Point pubkeyRegistrationSignature,BN254.G1Point pubkeyG1,BN254.G2Point pubkeyG2)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + let mut components = alloy_sol_types::private::Vec::with_capacity(3); + components.push(::eip712_root_type()); + components + .extend(::eip712_components()); + components.push(::eip712_root_type()); + components + .extend(::eip712_components()); + components.push(::eip712_root_type()); + components + .extend(::eip712_components()); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.pubkeyRegistrationSignature, + ) + .0, + ::eip712_data_word(&self.pubkeyG1) + .0, + ::eip712_data_word(&self.pubkeyG2) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for PubkeyRegistrationParams { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.pubkeyRegistrationSignature, + ) + + ::topic_preimage_length( + &rust.pubkeyG1, + ) + + ::topic_preimage_length( + &rust.pubkeyG2, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.pubkeyRegistrationSignature, + out, + ); + ::encode_topic_preimage( + &rust.pubkeyG1, + out, + ); + ::encode_topic_preimage( + &rust.pubkeyG2, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IBLSApkRegistry`](self) contract instance. + + See the [wrapper's documentation](`IBLSApkRegistryInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IBLSApkRegistryInstance { + IBLSApkRegistryInstance::::new(address, provider) + } + /**A [`IBLSApkRegistry`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IBLSApkRegistry`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IBLSApkRegistryInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IBLSApkRegistryInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IBLSApkRegistryInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IBLSApkRegistryInstance + { + /**Creates a new wrapper around an on-chain [`IBLSApkRegistry`](self) contract instance. + + See the [wrapper's documentation](`IBLSApkRegistryInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IBLSApkRegistryInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IBLSApkRegistryInstance { + IBLSApkRegistryInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IBLSApkRegistryInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IBLSApkRegistryInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library BN254 { + struct G1Point { + uint256 X; + uint256 Y; + } + struct G2Point { + uint256[2] X; + uint256[2] Y; + } +} + +library IBLSApkRegistry { + struct ApkUpdate { + bytes24 apkHash; + uint32 updateBlockNumber; + uint32 nextUpdateBlockNumber; + } + struct PubkeyRegistrationParams { + BN254.G1Point pubkeyRegistrationSignature; + BN254.G1Point pubkeyG1; + BN254.G2Point pubkeyG2; + } +} + +interface BLSApkRegistry { + event Initialized(uint8 version); + event NewPubkeyRegistration(address indexed operator, BN254.G1Point pubkeyG1, BN254.G2Point pubkeyG2); + event OperatorAddedToQuorums(address operator, bytes32 operatorId, bytes quorumNumbers); + event OperatorRemovedFromQuorums(address operator, bytes32 operatorId, bytes quorumNumbers); + + constructor(address _registryCoordinator); + + function apkHistory(uint8, uint256) external view returns (bytes24 apkHash, uint32 updateBlockNumber, uint32 nextUpdateBlockNumber); + function currentApk(uint8) external view returns (uint256 X, uint256 Y); + function deregisterOperator(address operator, bytes memory quorumNumbers) external; + function getApk(uint8 quorumNumber) external view returns (BN254.G1Point memory); + function getApkHashAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) external view returns (bytes24); + function getApkHistoryLength(uint8 quorumNumber) external view returns (uint32); + function getApkIndicesAtBlockNumber(bytes memory quorumNumbers, uint256 blockNumber) external view returns (uint32[] memory); + function getApkUpdateAtIndex(uint8 quorumNumber, uint256 index) external view returns (IBLSApkRegistry.ApkUpdate memory); + function getOperatorFromPubkeyHash(bytes32 pubkeyHash) external view returns (address); + function getOperatorId(address operator) external view returns (bytes32); + function getRegisteredPubkey(address operator) external view returns (BN254.G1Point memory, bytes32); + function initializeQuorum(uint8 quorumNumber) external; + function operatorToPubkey(address) external view returns (uint256 X, uint256 Y); + function operatorToPubkeyHash(address) external view returns (bytes32); + function pubkeyHashToOperator(bytes32) external view returns (address); + function registerBLSPublicKey(address operator, IBLSApkRegistry.PubkeyRegistrationParams memory params, BN254.G1Point memory pubkeyRegistrationMessageHash) external returns (bytes32 operatorId); + function registerOperator(address operator, bytes memory quorumNumbers) external; + function registryCoordinator() external view returns (address); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_registryCoordinator", + "type": "address", + "internalType": "contract IRegistryCoordinator" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "apkHistory", + "inputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "apkHash", + "type": "bytes24", + "internalType": "bytes24" + }, + { + "name": "updateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "nextUpdateBlockNumber", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "currentApk", + "inputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "deregisterOperator", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getApk", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getApkHashAtBlockNumberAndIndex", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes24", + "internalType": "bytes24" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getApkHistoryLength", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getApkIndicesAtBlockNumber", + "inputs": [ + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "blockNumber", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32[]", + "internalType": "uint32[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getApkUpdateAtIndex", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IBLSApkRegistry.ApkUpdate", + "components": [ + { + "name": "apkHash", + "type": "bytes24", + "internalType": "bytes24" + }, + { + "name": "updateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "nextUpdateBlockNumber", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorFromPubkeyHash", + "inputs": [ + { + "name": "pubkeyHash", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorId", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getRegisteredPubkey", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initializeQuorum", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "operatorToPubkey", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "operatorToPubkeyHash", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pubkeyHashToOperator", + "inputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registerBLSPublicKey", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "params", + "type": "tuple", + "internalType": "struct IBLSApkRegistry.PubkeyRegistrationParams", + "components": [ + { + "name": "pubkeyRegistrationSignature", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "pubkeyG1", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "pubkeyG2", + "type": "tuple", + "internalType": "struct BN254.G2Point", + "components": [ + { + "name": "X", + "type": "uint256[2]", + "internalType": "uint256[2]" + }, + { + "name": "Y", + "type": "uint256[2]", + "internalType": "uint256[2]" + } + ] + } + ] + }, + { + "name": "pubkeyRegistrationMessageHash", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ], + "outputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registerOperator", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registryCoordinator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "NewPubkeyRegistration", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "pubkeyG1", + "type": "tuple", + "indexed": false, + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "pubkeyG2", + "type": "tuple", + "indexed": false, + "internalType": "struct BN254.G2Point", + "components": [ + { + "name": "X", + "type": "uint256[2]", + "internalType": "uint256[2]" + }, + { + "name": "Y", + "type": "uint256[2]", + "internalType": "uint256[2]" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorAddedToQuorums", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "operatorId", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorRemovedFromQuorums", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "operatorId", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod BLSApkRegistry { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60a06040523480156200001157600080fd5b506040516200203538038062002035833981016040819052620000349162000116565b6001600160a01b038116608052806200004c62000054565b505062000148565b600054610100900460ff1615620000c15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000114576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b608051611eca6200016b6000396000818161030f0152610fd60152611eca6000f3fe608060405234801561001057600080fd5b50600436106101155760003560e01c80636d14a987116100a2578063bf79ce5811610071578063bf79ce58146103cc578063d5254a8c146103df578063de29fac0146103ff578063e8bb9ae61461041f578063f4e24fe51461044857600080fd5b80636d14a9871461030a5780637916cea6146103315780637ff81a8714610372578063a3db80e2146103a557600080fd5b80633fb27952116100e95780633fb27952146101df57806347b314e8146101f25780635f61a88414610233578063605747d51461028f57806368bccaac146102dd57600080fd5b8062a1f4cb1461011a57806313542a4e1461015b57806326d941f214610192578063377ed99d146101a7575b600080fd5b6101416101283660046118b7565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b6101846101693660046118b7565b6001600160a01b031660009081526001602052604090205490565b604051908152602001610152565b6101a56101a03660046118ea565b61045b565b005b6101ca6101b53660046118ea565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610152565b6101a56101ed366004611975565b610570565b61021b610200366004611a1b565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b6102826102413660046118ea565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b6040516101529190611a34565b6102a261029d366004611a4b565b6105ee565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610152565b6102f06102eb366004611a75565b610681565b60405167ffffffffffffffff199091168152602001610152565b61021b7f000000000000000000000000000000000000000000000000000000000000000081565b61034461033f366004611a4b565b61081c565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610152565b6103856103803660046118b7565b610867565b604080518351815260209384015193810193909352820152606001610152565b6101416103b33660046118ea565b6005602052600090815260409020805460019091015482565b6101846103da366004611abd565b610934565b6103f26103ed366004611b1a565b610d48565b6040516101529190611b92565b61018461040d3660046118b7565b60016020526000908152604090205481565b61021b61042d366004611a1b565b6002602052600090815260409020546001600160a01b031681565b6101a5610456366004611975565b610f62565b610463610fcb565b60ff8116600090815260046020526040902054156104e75760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b60648201526084015b60405180910390fd5b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b610578610fcb565b600061058383610867565b5090506105908282611082565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e836105d1856001600160a01b031660009081526001602052604090205490565b846040516105e193929190611bdc565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff86168252600490529190912080548390811061062b5761062b611c48565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff831660009081526004602052604081208054829190849081106106a8576106a8611c48565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b90910481169282019290925292508516101561076f5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e74000060648201526084016104de565b604081015163ffffffff1615806107955750806040015163ffffffff168463ffffffff16105b6108135760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a4016104de565b51949350505050565b6004602052816000526040600020818154811061083857600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b03821660008181526003602090815260408083208151808301835281548152600191820154818501529484529091528120549091908061092a5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f742072656769737465726564000060648201526084016104de565b9094909350915050565b600061093e610fcb565b600061096c61095536869003860160408701611c5e565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb58114156109f4576040805162461bcd60e51b8152602060048201526024810191909152600080516020611e7583398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b657960648201526084016104de565b6001600160a01b03851660009081526001602052604090205415610a7e5760405162461bcd60e51b81526020600482015260476024820152600080516020611e7583398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a4016104de565b6000818152600260205260409020546001600160a01b031615610b025760405162461bcd60e51b81526020600482015260426024820152600080516020611e7583398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a4016104de565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610b5b918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611c90565b6040516020818303038152906040528051906020012060001c610b7e9190611cdb565b9050610c18610bb7610ba283610b9c368a90038a0160408b01611c5e565b906112cd565b610bb136899003890189611c5e565b90611364565b610bbf6113f8565b610c01610bf285610b9c604080518082018252600080825260209182015281518083019092526001825260029082015290565b610bb1368a90038a018a611c5e565b610c13368a90038a0160808b01611d4d565b6114b8565b610cb35760405162461bcd60e51b815260206004820152606c6024820152600080516020611e7583398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c4016104de565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610d379160808a0190611daa565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610d6557610d65611905565b604051908082528060200260200182016040528015610d8e578160200160208202803683370190505b50905060005b84811015610f59576000868683818110610db057610db0611c48565b919091013560f81c6000818152600460205260409020549092509050801580610e13575060ff821660009081526004602052604081208054909190610df757610df7611c48565b600091825260209091200154600160c01b900463ffffffff1686105b15610ea05760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a4016104de565b805b8015610f435760ff831660009081526004602052604090208790610ec7600184611df4565b81548110610ed757610ed7611c48565b600091825260209091200154600160c01b900463ffffffff1611610f3157610f00600182611df4565b858581518110610f1257610f12611c48565b602002602001019063ffffffff16908163ffffffff1681525050610f43565b80610f3b81611e0b565b915050610ea2565b5050508080610f5190611e22565b915050610d94565b50949350505050565b610f6a610fcb565b6000610f7583610867565b509050610f8a82610f8583611725565b611082565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e836105d1856001600160a01b031660009081526001602052604090205490565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110805760405162461bcd60e51b815260206004820152604e60248201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460448201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460648201526d393c9031b7b7b93234b730ba37b960911b608482015260a4016104de565b565b604080518082019091526000808252602082015260005b83518110156112c75760008482815181106110b6576110b6611c48565b0160209081015160f81c60008181526004909252604090912054909150806111465760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f7420657869737400000060648201526084016104de565b60ff8216600090815260056020908152604091829020825180840190935280548352600101549082015261117a9086611364565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916111c39085611df4565b815481106111d3576111d3611c48565b600091825260209091200180549091504363ffffffff908116600160c01b9092041614156112145780546001600160c01b031916604083901c1781556112b0565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b5050505080806112bf90611e22565b915050611099565b50505050565b60408051808201909152600080825260208201526112e96117e4565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa905080801561131c5761131e565bfe5b508061135c5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016104de565b505092915050565b6040805180820190915260008082526020820152611380611802565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa905080801561131c57508061135c5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016104de565b611400611820565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820182528581526020808201859052825180840190935285835282018390526000916114e7611845565b60005b60028110156116ac576000611500826006611e3d565b905084826002811061151457611514611c48565b60200201515183611526836000611e5c565b600c811061153657611536611c48565b602002015284826002811061154d5761154d611c48565b602002015160200151838260016115649190611e5c565b600c811061157457611574611c48565b602002015283826002811061158b5761158b611c48565b602002015151518361159e836002611e5c565b600c81106115ae576115ae611c48565b60200201528382600281106115c5576115c5611c48565b60200201515160016020020151836115de836003611e5c565b600c81106115ee576115ee611c48565b602002015283826002811061160557611605611c48565b60200201516020015160006002811061162057611620611c48565b602002015183611631836004611e5c565b600c811061164157611641611c48565b602002015283826002811061165857611658611c48565b60200201516020015160016002811061167357611673611c48565b602002015183611684836005611e5c565b600c811061169457611694611c48565b602002015250806116a481611e22565b9150506114ea565b506116b5611864565b60006020826101808560086107d05a03fa905080801561131c5750806117155760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104de565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561174a57506020820151155b15611768575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117ad9190611cdb565b6117d7907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611df4565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280611833611882565b8152602001611840611882565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b03811681146117df57600080fd5b6000602082840312156118c957600080fd5b6118d2826118a0565b9392505050565b803560ff811681146117df57600080fd5b6000602082840312156118fc57600080fd5b6118d2826118d9565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561193e5761193e611905565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561196d5761196d611905565b604052919050565b6000806040838503121561198857600080fd5b611991836118a0565b915060208084013567ffffffffffffffff808211156119af57600080fd5b818601915086601f8301126119c357600080fd5b8135818111156119d5576119d5611905565b6119e7601f8201601f19168501611944565b915080825287848285010111156119fd57600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a2d57600080fd5b5035919050565b81518152602080830151908201526040810161067b565b60008060408385031215611a5e57600080fd5b611a67836118d9565b946020939093013593505050565b600080600060608486031215611a8a57600080fd5b611a93846118d9565b9250602084013563ffffffff81168114611aac57600080fd5b929592945050506040919091013590565b6000806000838503610160811215611ad457600080fd5b611add856118a0565b9350610100601f1982011215611af257600080fd5b602085019250604061011f1982011215611b0b57600080fd5b50610120840190509250925092565b600080600060408486031215611b2f57600080fd5b833567ffffffffffffffff80821115611b4757600080fd5b818601915086601f830112611b5b57600080fd5b813581811115611b6a57600080fd5b876020828501011115611b7c57600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611bd057835163ffffffff1683529284019291840191600101611bae565b50909695505050505050565b60018060a01b038416815260006020848184015260606040840152835180606085015260005b81811015611c1e57858101830151858201608001528201611c02565b81811115611c30576000608083870101525b50601f01601f19169290920160800195945050505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611c7057600080fd5b611c7861191b565b82358152602083013560208201528091505092915050565b8881528760208201528660408201528560608201526040856080830137600060c082016000815260408682375050610100810192909252610120820152610140019695505050505050565b600082611cf857634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611d0e57600080fd5b611d1661191b565b806040840185811115611d2857600080fd5b845b81811015611d42578035845260209384019301611d2a565b509095945050505050565b600060808284031215611d5f57600080fd5b6040516040810181811067ffffffffffffffff82111715611d8257611d82611905565b604052611d8f8484611cfd565b8152611d9e8460408501611cfd565b60208201529392505050565b823581526020808401359082015260c081016040838184013760808201600081526040808501823750600081529392505050565b634e487b7160e01b600052601160045260246000fd5b600082821015611e0657611e06611dde565b500390565b600081611e1a57611e1a611dde565b506000190190565b6000600019821415611e3657611e36611dde565b5060010190565b6000816000190483118215151615611e5757611e57611dde565b500290565b60008219821115611e6f57611e6f611dde565b50019056fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a2646970667358221220ca1b3198ddd9d622c9fe5e8a42fb3885da9ab1818a063d1bfd99cde5d97a14b564736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0 58\x03\x80b\0 5\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01\x16V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80R\x80b\0\0Lb\0\0TV[PPb\0\x01HV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xC1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FInitializable: contract is initi`D\x82\x01Rfalizing`\xC8\x1B`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[`\0T`\xFF\x90\x81\x16\x10\x15b\0\x01\x14W`\0\x80T`\xFF\x19\x16`\xFF\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[V[`\0` \x82\x84\x03\x12\x15b\0\x01)W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01AW`\0\x80\xFD[\x93\x92PPPV[`\x80Qa\x1E\xCAb\0\x01k`\09`\0\x81\x81a\x03\x0F\x01Ra\x0F\xD6\x01Ra\x1E\xCA`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\x15W`\x005`\xE0\x1C\x80cm\x14\xA9\x87\x11a\0\xA2W\x80c\xBFy\xCEX\x11a\0qW\x80c\xBFy\xCEX\x14a\x03\xCCW\x80c\xD5%J\x8C\x14a\x03\xDFW\x80c\xDE)\xFA\xC0\x14a\x03\xFFW\x80c\xE8\xBB\x9A\xE6\x14a\x04\x1FW\x80c\xF4\xE2O\xE5\x14a\x04HW`\0\x80\xFD[\x80cm\x14\xA9\x87\x14a\x03\nW\x80cy\x16\xCE\xA6\x14a\x031W\x80c\x7F\xF8\x1A\x87\x14a\x03rW\x80c\xA3\xDB\x80\xE2\x14a\x03\xA5W`\0\x80\xFD[\x80c?\xB2yR\x11a\0\xE9W\x80c?\xB2yR\x14a\x01\xDFW\x80cG\xB3\x14\xE8\x14a\x01\xF2W\x80c_a\xA8\x84\x14a\x023W\x80c`WG\xD5\x14a\x02\x8FW\x80ch\xBC\xCA\xAC\x14a\x02\xDDW`\0\x80\xFD[\x80b\xA1\xF4\xCB\x14a\x01\x1AW\x80c\x13T*N\x14a\x01[W\x80c&\xD9A\xF2\x14a\x01\x92W\x80c7~\xD9\x9D\x14a\x01\xA7W[`\0\x80\xFD[a\x01Aa\x01(6`\x04a\x18\xB7V[`\x03` R`\0\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T\x82V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x84a\x01i6`\x04a\x18\xB7V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[`@Q\x90\x81R` \x01a\x01RV[a\x01\xA5a\x01\xA06`\x04a\x18\xEAV[a\x04[V[\0[a\x01\xCAa\x01\xB56`\x04a\x18\xEAV[`\xFF\x16`\0\x90\x81R`\x04` R`@\x90 T\x90V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01RV[a\x01\xA5a\x01\xED6`\x04a\x19uV[a\x05pV[a\x02\x1Ba\x02\x006`\x04a\x1A\x1BV[`\0\x90\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01RV[a\x02\x82a\x02A6`\x04a\x18\xEAV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01RP`\xFF\x16`\0\x90\x81R`\x05` \x90\x81R`@\x91\x82\x90 \x82Q\x80\x84\x01\x90\x93R\x80T\x83R`\x01\x01T\x90\x82\x01R\x90V[`@Qa\x01R\x91\x90a\x1A4V[a\x02\xA2a\x02\x9D6`\x04a\x1AKV[a\x05\xEEV[`@\x80Q\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R` \x80\x84\x01Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x83\x01\x91\x90\x91R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x01RV[a\x02\xF0a\x02\xEB6`\x04a\x1AuV[a\x06\x81V[`@Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x91\x16\x81R` \x01a\x01RV[a\x02\x1B\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x03Da\x03?6`\x04a\x1AKV[a\x08\x1CV[`@\x80Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x94\x16\x84Rc\xFF\xFF\xFF\xFF\x92\x83\x16` \x85\x01R\x91\x16\x90\x82\x01R``\x01a\x01RV[a\x03\x85a\x03\x806`\x04a\x18\xB7V[a\x08gV[`@\x80Q\x83Q\x81R` \x93\x84\x01Q\x93\x81\x01\x93\x90\x93R\x82\x01R``\x01a\x01RV[a\x01Aa\x03\xB36`\x04a\x18\xEAV[`\x05` R`\0\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T\x82V[a\x01\x84a\x03\xDA6`\x04a\x1A\xBDV[a\t4V[a\x03\xF2a\x03\xED6`\x04a\x1B\x1AV[a\rHV[`@Qa\x01R\x91\x90a\x1B\x92V[a\x01\x84a\x04\r6`\x04a\x18\xB7V[`\x01` R`\0\x90\x81R`@\x90 T\x81V[a\x02\x1Ba\x04-6`\x04a\x1A\x1BV[`\x02` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01\xA5a\x04V6`\x04a\x19uV[a\x0FbV[a\x04ca\x0F\xCBV[`\xFF\x81\x16`\0\x90\x81R`\x04` R`@\x90 T\x15a\x04\xE7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`6`$\x82\x01R\x7FBLSApkRegistry.initializeQuorum:`D\x82\x01Ru quorum already exists`P\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\xFF\x16`\0\x90\x81R`\x04` \x90\x81R`@\x80\x83 \x81Q``\x81\x01\x83R\x84\x81Rc\xFF\xFF\xFF\xFFC\x81\x16\x82\x86\x01\x90\x81R\x82\x85\x01\x87\x81R\x84T`\x01\x81\x01\x86U\x94\x88R\x95\x90\x96 \x91Q\x91\x90\x92\x01\x80T\x95Q\x94Q\x83\x16`\x01`\xE0\x1B\x02`\x01`\x01`\xE0\x1B\x03\x95\x90\x93\x16`\x01`\xC0\x1B\x02`\x01`\x01`\xE0\x1B\x03\x19\x90\x96\x16\x91\x90\x93\x1C\x17\x93\x90\x93\x17\x91\x90\x91\x16\x91\x90\x91\x17\x90UV[a\x05xa\x0F\xCBV[`\0a\x05\x83\x83a\x08gV[P\x90Pa\x05\x90\x82\x82a\x10\x82V[\x7Fs\xA2\xB7\xFB\x84G$\xB9q\x80*\xE9\xB1]\xB0\x94\xD4\xB7\x19-\xF9\xD75\x0E\x14\xEBFk\x9B\"\xEBN\x83a\x05\xD1\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[\x84`@Qa\x05\xE1\x93\x92\x91\x90a\x1B\xDCV[`@Q\x80\x91\x03\x90\xA1PPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x82\x84\x01\x82\x90R`\xFF\x86\x16\x82R`\x04\x90R\x91\x90\x91 \x80T\x83\x90\x81\x10a\x06+Wa\x06+a\x1CHV[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x84\x1B\x16\x82Rc\xFF\xFF\xFF\xFF`\x01`\xC0\x1B\x82\x04\x81\x16\x94\x83\x01\x94\x90\x94R`\x01`\xE0\x1B\x90\x04\x90\x92\x16\x90\x82\x01R\x90P[\x92\x91PPV[`\xFF\x83\x16`\0\x90\x81R`\x04` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x06\xA8Wa\x06\xA8a\x1CHV[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x84\x1B\x16\x82Rc\xFF\xFF\xFF\xFF`\x01`\xC0\x1B\x82\x04\x81\x16\x94\x83\x01\x85\x90R`\x01`\xE0\x1B\x90\x91\x04\x81\x16\x92\x82\x01\x92\x90\x92R\x92P\x85\x16\x10\x15a\x07oW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FBLSApkRegistry._validateApkHashA`D\x82\x01R\x7FtBlockNumber: index too recent\0\0`d\x82\x01R`\x84\x01a\x04\xDEV[`@\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\x07\x95WP\x80`@\x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x08\x13W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R\x7FBLSApkRegistry._validateApkHashA`D\x82\x01R\x7FtBlockNumber: not latest apk upd`d\x82\x01Rbate`\xE8\x1B`\x84\x82\x01R`\xA4\x01a\x04\xDEV[Q\x94\x93PPPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x088W`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`@\x81\x90\x1B\x92Pc\xFF\xFF\xFF\xFF`\x01`\xC0\x1B\x82\x04\x81\x16\x92P`\x01`\xE0\x1B\x90\x91\x04\x16\x83V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x81\x81R`\x03` \x90\x81R`@\x80\x83 \x81Q\x80\x83\x01\x83R\x81T\x81R`\x01\x91\x82\x01T\x81\x85\x01R\x94\x84R\x90\x91R\x81 T\x90\x91\x90\x80a\t*W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FBLSApkRegistry.getRegisteredPubk`D\x82\x01R\x7Fey: operator is not registered\0\0`d\x82\x01R`\x84\x01a\x04\xDEV[\x90\x94\x90\x93P\x91PPV[`\0a\t>a\x0F\xCBV[`\0a\tla\tU6\x86\x90\x03\x86\x01`@\x87\x01a\x1C^V[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x90P\x7F\xAD2(\xB6v\xF7\xD3\xCDB\x84\xA5D?\x17\xF1\x96+6\xE4\x91\xB3\n@\xB2@XI\xE5\x97\xBA_\xB5\x81\x14\x15a\t\xF4W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R`\0\x80Q` a\x1Eu\x839\x81Q\x91R`D\x82\x01R\x7FKey: cannot register zero pubkey`d\x82\x01R`\x84\x01a\x04\xDEV[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\n~W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a\x1Eu\x839\x81Q\x91R`D\x82\x01R\x7FKey: operator already registered`d\x82\x01Rf pubkey`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x04\xDEV[`\0\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` a\x1Eu\x839\x81Q\x91R`D\x82\x01R\x7FKey: public key already register`d\x82\x01Ra\x19Y`\xF2\x1B`\x84\x82\x01R`\xA4\x01a\x04\xDEV[`@\x80Q`\0\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x91a\x0B[\x91\x885\x91` \x80\x8B\x015\x92\x8B\x015\x91``\x8C\x015\x91`\x80\x8D\x01\x91`\xC0\x8E\x01\x91\x8D5\x91\x8E\x82\x015\x91\x01a\x1C\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1Ca\x0B~\x91\x90a\x1C\xDBV[\x90Pa\x0C\x18a\x0B\xB7a\x0B\xA2\x83a\x0B\x9C6\x8A\x90\x03\x8A\x01`@\x8B\x01a\x1C^V[\x90a\x12\xCDV[a\x0B\xB16\x89\x90\x03\x89\x01\x89a\x1C^V[\x90a\x13dV[a\x0B\xBFa\x13\xF8V[a\x0C\x01a\x0B\xF2\x85a\x0B\x9C`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[a\x0B\xB16\x8A\x90\x03\x8A\x01\x8Aa\x1C^V[a\x0C\x136\x8A\x90\x03\x8A\x01`\x80\x8B\x01a\x1DMV[a\x14\xB8V[a\x0C\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R`\0\x80Q` a\x1Eu\x839\x81Q\x91R`D\x82\x01R\x7FKey: either the G1 signature is `d\x82\x01R\x7Fwrong, or G1 and G2 private key `\x84\x82\x01Rk\x0C\x8D\xE4\r\xCD\xEE\x84\r\xAC.\x8Cm`\xA3\x1B`\xA4\x82\x01R`\xC4\x01a\x04\xDEV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x81\x81R`\x03` \x90\x81R`@\x80\x83 \x89\x82\x01\x805\x82U``\x8B\x015`\x01\x92\x83\x01U\x90\x83R\x81\x84 \x87\x90U\x86\x84R`\x02\x90\x92R\x91\x82\x90 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x84\x17\x90U\x90Q\x7F\xE3\xFBf\x13\xAF.\x890\xCF\x85\xD4\x7F\xCFm\xB1\x01\x92\"Jd\xC6\xCB\xE8\x02>\x0E\xEE\x1B\xA3\x82\x80A\x91a\r7\x91`\x80\x8A\x01\x90a\x1D\xAAV[`@Q\x80\x91\x03\x90\xA2P\x94\x93PPPPV[```\0\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\reWa\rea\x19\x05V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\r\x8EW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84\x81\x10\x15a\x0FYW`\0\x86\x86\x83\x81\x81\x10a\r\xB0Wa\r\xB0a\x1CHV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x04` R`@\x90 T\x90\x92P\x90P\x80\x15\x80a\x0E\x13WP`\xFF\x82\x16`\0\x90\x81R`\x04` R`@\x81 \x80T\x90\x91\x90a\r\xF7Wa\r\xF7a\x1CHV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x86\x10[\x15a\x0E\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`Q`$\x82\x01R\x7FBLSApkRegistry.getApkIndicesAtBl`D\x82\x01R\x7FockNumber: blockNumber is before`d\x82\x01Rp the first update`x\x1B`\x84\x82\x01R`\xA4\x01a\x04\xDEV[\x80[\x80\x15a\x0FCW`\xFF\x83\x16`\0\x90\x81R`\x04` R`@\x90 \x87\x90a\x0E\xC7`\x01\x84a\x1D\xF4V[\x81T\x81\x10a\x0E\xD7Wa\x0E\xD7a\x1CHV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x11a\x0F1Wa\x0F\0`\x01\x82a\x1D\xF4V[\x85\x85\x81Q\x81\x10a\x0F\x12Wa\x0F\x12a\x1CHV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x0FCV[\x80a\x0F;\x81a\x1E\x0BV[\x91PPa\x0E\xA2V[PPP\x80\x80a\x0FQ\x90a\x1E\"V[\x91PPa\r\x94V[P\x94\x93PPPPV[a\x0Fja\x0F\xCBV[`\0a\x0Fu\x83a\x08gV[P\x90Pa\x0F\x8A\x82a\x0F\x85\x83a\x17%V[a\x10\x82V[\x7F\xF8C\xEC\xD5:V6u\xE6!\x07\xBE\x14\x94\xFD\xDEJ=I\xAE\xED\xAF\x8D\x88\xC6\x16\xD8SF\xE3P\x0E\x83a\x05\xD1\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x10\x80W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`N`$\x82\x01R\x7FBLSApkRegistry.onlyRegistryCoord`D\x82\x01R\x7Finator: caller is not the regist`d\x82\x01Rm9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x91\x1B`\x84\x82\x01R`\xA4\x01a\x04\xDEV[V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0[\x83Q\x81\x10\x15a\x12\xC7W`\0\x84\x82\x81Q\x81\x10a\x10\xB6Wa\x10\xB6a\x1CHV[\x01` \x90\x81\x01Q`\xF8\x1C`\0\x81\x81R`\x04\x90\x92R`@\x90\x91 T\x90\x91P\x80a\x11FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FBLSApkRegistry._processQuorumApk`D\x82\x01R\x7FUpdate: quorum does not exist\0\0\0`d\x82\x01R`\x84\x01a\x04\xDEV[`\xFF\x82\x16`\0\x90\x81R`\x05` \x90\x81R`@\x91\x82\x90 \x82Q\x80\x84\x01\x90\x93R\x80T\x83R`\x01\x01T\x90\x82\x01Ra\x11z\x90\x86a\x13dV[`\xFF\x83\x16`\0\x81\x81R`\x05` \x90\x81R`@\x80\x83 \x85Q\x80\x82U\x86\x84\x01\x80Q`\x01\x93\x84\x01U\x90\x85RQ\x83R\x81\x84 \x94\x84R`\x04\x90\x92R\x82 \x93\x97P\x91\x92\x90\x91a\x11\xC3\x90\x85a\x1D\xF4V[\x81T\x81\x10a\x11\xD3Wa\x11\xD3a\x1CHV[`\0\x91\x82R` \x90\x91 \x01\x80T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16`\x01`\xC0\x1B\x90\x92\x04\x16\x14\x15a\x12\x14W\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`@\x83\x90\x1C\x17\x81Ua\x12\xB0V[\x80Tc\xFF\xFF\xFF\xFFC\x81\x16`\x01`\xE0\x1B\x81\x81\x02`\x01`\x01`\xE0\x1B\x03\x94\x85\x16\x17\x85U`\xFF\x88\x16`\0\x90\x81R`\x04` \x90\x81R`@\x80\x83 \x81Q``\x81\x01\x83Rg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x8B\x16\x81R\x80\x84\x01\x96\x87R\x80\x83\x01\x85\x81R\x82T`\x01\x81\x01\x84U\x92\x86R\x93\x90\x94 \x93Q\x93\x01\x80T\x95Q\x92Q\x87\x16\x90\x94\x02\x91\x90\x95\x16`\x01`\xC0\x1B\x02`\x01`\x01`\xE0\x1B\x03\x19\x94\x90\x94\x16\x91\x90\x94\x1C\x17\x91\x90\x91\x17\x90\x92\x16\x17\x90U[PPPP\x80\x80a\x12\xBF\x90a\x1E\"V[\x91PPa\x10\x99V[PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x12\xE9a\x17\xE4V[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R`\0\x90\x83``\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13\x1CWa\x13\x1EV[\xFE[P\x80a\x13\\W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x04\xDEV[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x13\x80a\x18\x02V[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x80\x84\x01\x91\x90\x91R\x90\x84\x01Q``\x83\x01R`\0\x90\x83`\x80\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13\x1CWP\x80a\x13\\W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCBXY\x19\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x04\xDEV[a\x14\0a\x18 V[P`@\x80Q`\x80\x81\x01\x82R\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81\x83\x01\x90\x81R\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED``\x83\x01R\x81R\x81Q\x80\x83\x01\x90\x92R\x7F']\xC4\xA2\x88\xD1\xAF\xB3\xCB\xB1\xAC\t\x18u$\xC7\xDB69]\xF7\xBE;\x99\xE6s\xB1:\x07Ze\xEC\x82R\x7F\x1D\x9B\xEF\xCD\x05\xA52>m\xA4\xD45\xF3\xB6\x17\xCD\xB3\xAF\x83(\\-\xF7\x11\xEF9\xC0\x15q\x82\x7F\x9D` \x83\x81\x01\x91\x90\x91R\x81\x01\x91\x90\x91R\x90V[`@\x80Q\x80\x82\x01\x82R\x85\x81R` \x80\x82\x01\x85\x90R\x82Q\x80\x84\x01\x90\x93R\x85\x83R\x82\x01\x83\x90R`\0\x91a\x14\xE7a\x18EV[`\0[`\x02\x81\x10\x15a\x16\xACW`\0a\x15\0\x82`\x06a\x1E=V[\x90P\x84\x82`\x02\x81\x10a\x15\x14Wa\x15\x14a\x1CHV[` \x02\x01QQ\x83a\x15&\x83`\0a\x1E\\V[`\x0C\x81\x10a\x156Wa\x156a\x1CHV[` \x02\x01R\x84\x82`\x02\x81\x10a\x15MWa\x15Ma\x1CHV[` \x02\x01Q` \x01Q\x83\x82`\x01a\x15d\x91\x90a\x1E\\V[`\x0C\x81\x10a\x15tWa\x15ta\x1CHV[` \x02\x01R\x83\x82`\x02\x81\x10a\x15\x8BWa\x15\x8Ba\x1CHV[` \x02\x01QQQ\x83a\x15\x9E\x83`\x02a\x1E\\V[`\x0C\x81\x10a\x15\xAEWa\x15\xAEa\x1CHV[` \x02\x01R\x83\x82`\x02\x81\x10a\x15\xC5Wa\x15\xC5a\x1CHV[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x15\xDE\x83`\x03a\x1E\\V[`\x0C\x81\x10a\x15\xEEWa\x15\xEEa\x1CHV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\x05Wa\x16\x05a\x1CHV[` \x02\x01Q` \x01Q`\0`\x02\x81\x10a\x16 Wa\x16 a\x1CHV[` \x02\x01Q\x83a\x161\x83`\x04a\x1E\\V[`\x0C\x81\x10a\x16AWa\x16Aa\x1CHV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16XWa\x16Xa\x1CHV[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x16sWa\x16sa\x1CHV[` \x02\x01Q\x83a\x16\x84\x83`\x05a\x1E\\V[`\x0C\x81\x10a\x16\x94Wa\x16\x94a\x1CHV[` \x02\x01RP\x80a\x16\xA4\x81a\x1E\"V[\x91PPa\x14\xEAV[Pa\x16\xB5a\x18dV[`\0` \x82a\x01\x80\x85`\x08a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13\x1CWP\x80a\x17\x15W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x15`$\x82\x01Rt\x1C\x18Z\\\x9A[\x99\xCB[\xDC\x18\xDB\xD9\x19KY\x98Z[\x19Y`Z\x1B`D\x82\x01R`d\x01a\x04\xDEV[PQ\x15\x15\x98\x97PPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x17JWP` \x82\x01Q\x15[\x15a\x17hWPP`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x90V[`@Q\x80`@\x01`@R\x80\x83`\0\x01Q\x81R` \x01\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\x84` \x01Qa\x17\xAD\x91\x90a\x1C\xDBV[a\x17\xD7\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\x1D\xF4V[\x90R\x92\x91PPV[\x91\x90PV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\x80\x01`@R\x80`\x04\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80a\x183a\x18\x82V[\x81R` \x01a\x18@a\x18\x82V[\x90R\x90V[`@Q\x80a\x01\x80\x01`@R\x80`\x0C\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80` \x01`@R\x80`\x01\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x17\xDFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x18\xC9W`\0\x80\xFD[a\x18\xD2\x82a\x18\xA0V[\x93\x92PPPV[\x805`\xFF\x81\x16\x81\x14a\x17\xDFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x18\xFCW`\0\x80\xFD[a\x18\xD2\x82a\x18\xD9V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x19>Wa\x19>a\x19\x05V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x19mWa\x19ma\x19\x05V[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x19\x88W`\0\x80\xFD[a\x19\x91\x83a\x18\xA0V[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x19\xAFW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x19\xC3W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x19\xD5Wa\x19\xD5a\x19\x05V[a\x19\xE7`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x19DV[\x91P\x80\x82R\x87\x84\x82\x85\x01\x01\x11\x15a\x19\xFDW`\0\x80\xFD[\x80\x84\x84\x01\x85\x84\x017`\0\x84\x82\x84\x01\x01RP\x80\x93PPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x1A-W`\0\x80\xFD[P5\x91\x90PV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x06{V[`\0\x80`@\x83\x85\x03\x12\x15a\x1A^W`\0\x80\xFD[a\x1Ag\x83a\x18\xD9V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x1A\x8AW`\0\x80\xFD[a\x1A\x93\x84a\x18\xD9V[\x92P` \x84\x015c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1A\xACW`\0\x80\xFD[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`\0\x83\x85\x03a\x01`\x81\x12\x15a\x1A\xD4W`\0\x80\xFD[a\x1A\xDD\x85a\x18\xA0V[\x93Pa\x01\0`\x1F\x19\x82\x01\x12\x15a\x1A\xF2W`\0\x80\xFD[` \x85\x01\x92P`@a\x01\x1F\x19\x82\x01\x12\x15a\x1B\x0BW`\0\x80\xFD[Pa\x01 \x84\x01\x90P\x92P\x92P\x92V[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x1B/W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x1BGW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1B[W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1BjW`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x1B|W`\0\x80\xFD[` \x92\x83\x01\x98\x90\x97P\x95\x90\x91\x015\x94\x93PPPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1B\xD0W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1B\xAEV[P\x90\x96\x95PPPPPPV[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R`\0` \x84\x81\x84\x01R```@\x84\x01R\x83Q\x80``\x85\x01R`\0[\x81\x81\x10\x15a\x1C\x1EW\x85\x81\x01\x83\x01Q\x85\x82\x01`\x80\x01R\x82\x01a\x1C\x02V[\x81\x81\x11\x15a\x1C0W`\0`\x80\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`\x80\x01\x95\x94PPPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0`@\x82\x84\x03\x12\x15a\x1CpW`\0\x80\xFD[a\x1Cxa\x19\x1BV[\x825\x81R` \x83\x015` \x82\x01R\x80\x91PP\x92\x91PPV[\x88\x81R\x87` \x82\x01R\x86`@\x82\x01R\x85``\x82\x01R`@\x85`\x80\x83\x017`\0`\xC0\x82\x01`\0\x81R`@\x86\x827PPa\x01\0\x81\x01\x92\x90\x92Ra\x01 \x82\x01Ra\x01@\x01\x96\x95PPPPPPV[`\0\x82a\x1C\xF8WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`\0\x82`\x1F\x83\x01\x12a\x1D\x0EW`\0\x80\xFD[a\x1D\x16a\x19\x1BV[\x80`@\x84\x01\x85\x81\x11\x15a\x1D(W`\0\x80\xFD[\x84[\x81\x81\x10\x15a\x1DBW\x805\x84R` \x93\x84\x01\x93\x01a\x1D*V[P\x90\x95\x94PPPPPV[`\0`\x80\x82\x84\x03\x12\x15a\x1D_W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x1D\x82Wa\x1D\x82a\x19\x05V[`@Ra\x1D\x8F\x84\x84a\x1C\xFDV[\x81Ra\x1D\x9E\x84`@\x85\x01a\x1C\xFDV[` \x82\x01R\x93\x92PPPV[\x825\x81R` \x80\x84\x015\x90\x82\x01R`\xC0\x81\x01`@\x83\x81\x84\x017`\x80\x82\x01`\0\x81R`@\x80\x85\x01\x827P`\0\x81R\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x82\x10\x15a\x1E\x06Wa\x1E\x06a\x1D\xDEV[P\x03\x90V[`\0\x81a\x1E\x1AWa\x1E\x1Aa\x1D\xDEV[P`\0\x19\x01\x90V[`\0`\0\x19\x82\x14\x15a\x1E6Wa\x1E6a\x1D\xDEV[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x1EWWa\x1EWa\x1D\xDEV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a\x1EoWa\x1Eoa\x1D\xDEV[P\x01\x90V\xFEBLSApkRegistry.registerBLSPublic\xA2dipfsX\"\x12 \xCA\x1B1\x98\xDD\xD9\xD6\"\xC9\xFE^\x8AB\xFB8\x85\xDA\x9A\xB1\x81\x8A\x06=\x1B\xFD\x99\xCD\xE5\xD9z\x14\xB5dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106101155760003560e01c80636d14a987116100a2578063bf79ce5811610071578063bf79ce58146103cc578063d5254a8c146103df578063de29fac0146103ff578063e8bb9ae61461041f578063f4e24fe51461044857600080fd5b80636d14a9871461030a5780637916cea6146103315780637ff81a8714610372578063a3db80e2146103a557600080fd5b80633fb27952116100e95780633fb27952146101df57806347b314e8146101f25780635f61a88414610233578063605747d51461028f57806368bccaac146102dd57600080fd5b8062a1f4cb1461011a57806313542a4e1461015b57806326d941f214610192578063377ed99d146101a7575b600080fd5b6101416101283660046118b7565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b6101846101693660046118b7565b6001600160a01b031660009081526001602052604090205490565b604051908152602001610152565b6101a56101a03660046118ea565b61045b565b005b6101ca6101b53660046118ea565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610152565b6101a56101ed366004611975565b610570565b61021b610200366004611a1b565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b6102826102413660046118ea565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b6040516101529190611a34565b6102a261029d366004611a4b565b6105ee565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610152565b6102f06102eb366004611a75565b610681565b60405167ffffffffffffffff199091168152602001610152565b61021b7f000000000000000000000000000000000000000000000000000000000000000081565b61034461033f366004611a4b565b61081c565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610152565b6103856103803660046118b7565b610867565b604080518351815260209384015193810193909352820152606001610152565b6101416103b33660046118ea565b6005602052600090815260409020805460019091015482565b6101846103da366004611abd565b610934565b6103f26103ed366004611b1a565b610d48565b6040516101529190611b92565b61018461040d3660046118b7565b60016020526000908152604090205481565b61021b61042d366004611a1b565b6002602052600090815260409020546001600160a01b031681565b6101a5610456366004611975565b610f62565b610463610fcb565b60ff8116600090815260046020526040902054156104e75760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b60648201526084015b60405180910390fd5b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b610578610fcb565b600061058383610867565b5090506105908282611082565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e836105d1856001600160a01b031660009081526001602052604090205490565b846040516105e193929190611bdc565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff86168252600490529190912080548390811061062b5761062b611c48565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff831660009081526004602052604081208054829190849081106106a8576106a8611c48565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b90910481169282019290925292508516101561076f5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e74000060648201526084016104de565b604081015163ffffffff1615806107955750806040015163ffffffff168463ffffffff16105b6108135760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a4016104de565b51949350505050565b6004602052816000526040600020818154811061083857600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b03821660008181526003602090815260408083208151808301835281548152600191820154818501529484529091528120549091908061092a5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f742072656769737465726564000060648201526084016104de565b9094909350915050565b600061093e610fcb565b600061096c61095536869003860160408701611c5e565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb58114156109f4576040805162461bcd60e51b8152602060048201526024810191909152600080516020611e7583398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b657960648201526084016104de565b6001600160a01b03851660009081526001602052604090205415610a7e5760405162461bcd60e51b81526020600482015260476024820152600080516020611e7583398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a4016104de565b6000818152600260205260409020546001600160a01b031615610b025760405162461bcd60e51b81526020600482015260426024820152600080516020611e7583398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a4016104de565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610b5b918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611c90565b6040516020818303038152906040528051906020012060001c610b7e9190611cdb565b9050610c18610bb7610ba283610b9c368a90038a0160408b01611c5e565b906112cd565b610bb136899003890189611c5e565b90611364565b610bbf6113f8565b610c01610bf285610b9c604080518082018252600080825260209182015281518083019092526001825260029082015290565b610bb1368a90038a018a611c5e565b610c13368a90038a0160808b01611d4d565b6114b8565b610cb35760405162461bcd60e51b815260206004820152606c6024820152600080516020611e7583398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c4016104de565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610d379160808a0190611daa565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610d6557610d65611905565b604051908082528060200260200182016040528015610d8e578160200160208202803683370190505b50905060005b84811015610f59576000868683818110610db057610db0611c48565b919091013560f81c6000818152600460205260409020549092509050801580610e13575060ff821660009081526004602052604081208054909190610df757610df7611c48565b600091825260209091200154600160c01b900463ffffffff1686105b15610ea05760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a4016104de565b805b8015610f435760ff831660009081526004602052604090208790610ec7600184611df4565b81548110610ed757610ed7611c48565b600091825260209091200154600160c01b900463ffffffff1611610f3157610f00600182611df4565b858581518110610f1257610f12611c48565b602002602001019063ffffffff16908163ffffffff1681525050610f43565b80610f3b81611e0b565b915050610ea2565b5050508080610f5190611e22565b915050610d94565b50949350505050565b610f6a610fcb565b6000610f7583610867565b509050610f8a82610f8583611725565b611082565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e836105d1856001600160a01b031660009081526001602052604090205490565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110805760405162461bcd60e51b815260206004820152604e60248201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460448201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460648201526d393c9031b7b7b93234b730ba37b960911b608482015260a4016104de565b565b604080518082019091526000808252602082015260005b83518110156112c75760008482815181106110b6576110b6611c48565b0160209081015160f81c60008181526004909252604090912054909150806111465760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f7420657869737400000060648201526084016104de565b60ff8216600090815260056020908152604091829020825180840190935280548352600101549082015261117a9086611364565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916111c39085611df4565b815481106111d3576111d3611c48565b600091825260209091200180549091504363ffffffff908116600160c01b9092041614156112145780546001600160c01b031916604083901c1781556112b0565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b5050505080806112bf90611e22565b915050611099565b50505050565b60408051808201909152600080825260208201526112e96117e4565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa905080801561131c5761131e565bfe5b508061135c5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016104de565b505092915050565b6040805180820190915260008082526020820152611380611802565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa905080801561131c57508061135c5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016104de565b611400611820565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820182528581526020808201859052825180840190935285835282018390526000916114e7611845565b60005b60028110156116ac576000611500826006611e3d565b905084826002811061151457611514611c48565b60200201515183611526836000611e5c565b600c811061153657611536611c48565b602002015284826002811061154d5761154d611c48565b602002015160200151838260016115649190611e5c565b600c811061157457611574611c48565b602002015283826002811061158b5761158b611c48565b602002015151518361159e836002611e5c565b600c81106115ae576115ae611c48565b60200201528382600281106115c5576115c5611c48565b60200201515160016020020151836115de836003611e5c565b600c81106115ee576115ee611c48565b602002015283826002811061160557611605611c48565b60200201516020015160006002811061162057611620611c48565b602002015183611631836004611e5c565b600c811061164157611641611c48565b602002015283826002811061165857611658611c48565b60200201516020015160016002811061167357611673611c48565b602002015183611684836005611e5c565b600c811061169457611694611c48565b602002015250806116a481611e22565b9150506114ea565b506116b5611864565b60006020826101808560086107d05a03fa905080801561131c5750806117155760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104de565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561174a57506020820151155b15611768575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117ad9190611cdb565b6117d7907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611df4565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280611833611882565b8152602001611840611882565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b03811681146117df57600080fd5b6000602082840312156118c957600080fd5b6118d2826118a0565b9392505050565b803560ff811681146117df57600080fd5b6000602082840312156118fc57600080fd5b6118d2826118d9565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561193e5761193e611905565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561196d5761196d611905565b604052919050565b6000806040838503121561198857600080fd5b611991836118a0565b915060208084013567ffffffffffffffff808211156119af57600080fd5b818601915086601f8301126119c357600080fd5b8135818111156119d5576119d5611905565b6119e7601f8201601f19168501611944565b915080825287848285010111156119fd57600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a2d57600080fd5b5035919050565b81518152602080830151908201526040810161067b565b60008060408385031215611a5e57600080fd5b611a67836118d9565b946020939093013593505050565b600080600060608486031215611a8a57600080fd5b611a93846118d9565b9250602084013563ffffffff81168114611aac57600080fd5b929592945050506040919091013590565b6000806000838503610160811215611ad457600080fd5b611add856118a0565b9350610100601f1982011215611af257600080fd5b602085019250604061011f1982011215611b0b57600080fd5b50610120840190509250925092565b600080600060408486031215611b2f57600080fd5b833567ffffffffffffffff80821115611b4757600080fd5b818601915086601f830112611b5b57600080fd5b813581811115611b6a57600080fd5b876020828501011115611b7c57600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611bd057835163ffffffff1683529284019291840191600101611bae565b50909695505050505050565b60018060a01b038416815260006020848184015260606040840152835180606085015260005b81811015611c1e57858101830151858201608001528201611c02565b81811115611c30576000608083870101525b50601f01601f19169290920160800195945050505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611c7057600080fd5b611c7861191b565b82358152602083013560208201528091505092915050565b8881528760208201528660408201528560608201526040856080830137600060c082016000815260408682375050610100810192909252610120820152610140019695505050505050565b600082611cf857634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611d0e57600080fd5b611d1661191b565b806040840185811115611d2857600080fd5b845b81811015611d42578035845260209384019301611d2a565b509095945050505050565b600060808284031215611d5f57600080fd5b6040516040810181811067ffffffffffffffff82111715611d8257611d82611905565b604052611d8f8484611cfd565b8152611d9e8460408501611cfd565b60208201529392505050565b823581526020808401359082015260c081016040838184013760808201600081526040808501823750600081529392505050565b634e487b7160e01b600052601160045260246000fd5b600082821015611e0657611e06611dde565b500390565b600081611e1a57611e1a611dde565b506000190190565b6000600019821415611e3657611e36611dde565b5060010190565b6000816000190483118215151615611e5757611e57611dde565b500290565b60008219821115611e6f57611e6f611dde565b50019056fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a2646970667358221220ca1b3198ddd9d622c9fe5e8a42fb3885da9ab1818a063d1bfd99cde5d97a14b564736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\x15W`\x005`\xE0\x1C\x80cm\x14\xA9\x87\x11a\0\xA2W\x80c\xBFy\xCEX\x11a\0qW\x80c\xBFy\xCEX\x14a\x03\xCCW\x80c\xD5%J\x8C\x14a\x03\xDFW\x80c\xDE)\xFA\xC0\x14a\x03\xFFW\x80c\xE8\xBB\x9A\xE6\x14a\x04\x1FW\x80c\xF4\xE2O\xE5\x14a\x04HW`\0\x80\xFD[\x80cm\x14\xA9\x87\x14a\x03\nW\x80cy\x16\xCE\xA6\x14a\x031W\x80c\x7F\xF8\x1A\x87\x14a\x03rW\x80c\xA3\xDB\x80\xE2\x14a\x03\xA5W`\0\x80\xFD[\x80c?\xB2yR\x11a\0\xE9W\x80c?\xB2yR\x14a\x01\xDFW\x80cG\xB3\x14\xE8\x14a\x01\xF2W\x80c_a\xA8\x84\x14a\x023W\x80c`WG\xD5\x14a\x02\x8FW\x80ch\xBC\xCA\xAC\x14a\x02\xDDW`\0\x80\xFD[\x80b\xA1\xF4\xCB\x14a\x01\x1AW\x80c\x13T*N\x14a\x01[W\x80c&\xD9A\xF2\x14a\x01\x92W\x80c7~\xD9\x9D\x14a\x01\xA7W[`\0\x80\xFD[a\x01Aa\x01(6`\x04a\x18\xB7V[`\x03` R`\0\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T\x82V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x84a\x01i6`\x04a\x18\xB7V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[`@Q\x90\x81R` \x01a\x01RV[a\x01\xA5a\x01\xA06`\x04a\x18\xEAV[a\x04[V[\0[a\x01\xCAa\x01\xB56`\x04a\x18\xEAV[`\xFF\x16`\0\x90\x81R`\x04` R`@\x90 T\x90V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01RV[a\x01\xA5a\x01\xED6`\x04a\x19uV[a\x05pV[a\x02\x1Ba\x02\x006`\x04a\x1A\x1BV[`\0\x90\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01RV[a\x02\x82a\x02A6`\x04a\x18\xEAV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01RP`\xFF\x16`\0\x90\x81R`\x05` \x90\x81R`@\x91\x82\x90 \x82Q\x80\x84\x01\x90\x93R\x80T\x83R`\x01\x01T\x90\x82\x01R\x90V[`@Qa\x01R\x91\x90a\x1A4V[a\x02\xA2a\x02\x9D6`\x04a\x1AKV[a\x05\xEEV[`@\x80Q\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R` \x80\x84\x01Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x83\x01\x91\x90\x91R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x01RV[a\x02\xF0a\x02\xEB6`\x04a\x1AuV[a\x06\x81V[`@Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x91\x16\x81R` \x01a\x01RV[a\x02\x1B\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x03Da\x03?6`\x04a\x1AKV[a\x08\x1CV[`@\x80Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x94\x16\x84Rc\xFF\xFF\xFF\xFF\x92\x83\x16` \x85\x01R\x91\x16\x90\x82\x01R``\x01a\x01RV[a\x03\x85a\x03\x806`\x04a\x18\xB7V[a\x08gV[`@\x80Q\x83Q\x81R` \x93\x84\x01Q\x93\x81\x01\x93\x90\x93R\x82\x01R``\x01a\x01RV[a\x01Aa\x03\xB36`\x04a\x18\xEAV[`\x05` R`\0\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T\x82V[a\x01\x84a\x03\xDA6`\x04a\x1A\xBDV[a\t4V[a\x03\xF2a\x03\xED6`\x04a\x1B\x1AV[a\rHV[`@Qa\x01R\x91\x90a\x1B\x92V[a\x01\x84a\x04\r6`\x04a\x18\xB7V[`\x01` R`\0\x90\x81R`@\x90 T\x81V[a\x02\x1Ba\x04-6`\x04a\x1A\x1BV[`\x02` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01\xA5a\x04V6`\x04a\x19uV[a\x0FbV[a\x04ca\x0F\xCBV[`\xFF\x81\x16`\0\x90\x81R`\x04` R`@\x90 T\x15a\x04\xE7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`6`$\x82\x01R\x7FBLSApkRegistry.initializeQuorum:`D\x82\x01Ru quorum already exists`P\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\xFF\x16`\0\x90\x81R`\x04` \x90\x81R`@\x80\x83 \x81Q``\x81\x01\x83R\x84\x81Rc\xFF\xFF\xFF\xFFC\x81\x16\x82\x86\x01\x90\x81R\x82\x85\x01\x87\x81R\x84T`\x01\x81\x01\x86U\x94\x88R\x95\x90\x96 \x91Q\x91\x90\x92\x01\x80T\x95Q\x94Q\x83\x16`\x01`\xE0\x1B\x02`\x01`\x01`\xE0\x1B\x03\x95\x90\x93\x16`\x01`\xC0\x1B\x02`\x01`\x01`\xE0\x1B\x03\x19\x90\x96\x16\x91\x90\x93\x1C\x17\x93\x90\x93\x17\x91\x90\x91\x16\x91\x90\x91\x17\x90UV[a\x05xa\x0F\xCBV[`\0a\x05\x83\x83a\x08gV[P\x90Pa\x05\x90\x82\x82a\x10\x82V[\x7Fs\xA2\xB7\xFB\x84G$\xB9q\x80*\xE9\xB1]\xB0\x94\xD4\xB7\x19-\xF9\xD75\x0E\x14\xEBFk\x9B\"\xEBN\x83a\x05\xD1\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[\x84`@Qa\x05\xE1\x93\x92\x91\x90a\x1B\xDCV[`@Q\x80\x91\x03\x90\xA1PPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x82\x84\x01\x82\x90R`\xFF\x86\x16\x82R`\x04\x90R\x91\x90\x91 \x80T\x83\x90\x81\x10a\x06+Wa\x06+a\x1CHV[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x84\x1B\x16\x82Rc\xFF\xFF\xFF\xFF`\x01`\xC0\x1B\x82\x04\x81\x16\x94\x83\x01\x94\x90\x94R`\x01`\xE0\x1B\x90\x04\x90\x92\x16\x90\x82\x01R\x90P[\x92\x91PPV[`\xFF\x83\x16`\0\x90\x81R`\x04` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x06\xA8Wa\x06\xA8a\x1CHV[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x84\x1B\x16\x82Rc\xFF\xFF\xFF\xFF`\x01`\xC0\x1B\x82\x04\x81\x16\x94\x83\x01\x85\x90R`\x01`\xE0\x1B\x90\x91\x04\x81\x16\x92\x82\x01\x92\x90\x92R\x92P\x85\x16\x10\x15a\x07oW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FBLSApkRegistry._validateApkHashA`D\x82\x01R\x7FtBlockNumber: index too recent\0\0`d\x82\x01R`\x84\x01a\x04\xDEV[`@\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\x07\x95WP\x80`@\x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x08\x13W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R\x7FBLSApkRegistry._validateApkHashA`D\x82\x01R\x7FtBlockNumber: not latest apk upd`d\x82\x01Rbate`\xE8\x1B`\x84\x82\x01R`\xA4\x01a\x04\xDEV[Q\x94\x93PPPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x088W`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`@\x81\x90\x1B\x92Pc\xFF\xFF\xFF\xFF`\x01`\xC0\x1B\x82\x04\x81\x16\x92P`\x01`\xE0\x1B\x90\x91\x04\x16\x83V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x81\x81R`\x03` \x90\x81R`@\x80\x83 \x81Q\x80\x83\x01\x83R\x81T\x81R`\x01\x91\x82\x01T\x81\x85\x01R\x94\x84R\x90\x91R\x81 T\x90\x91\x90\x80a\t*W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FBLSApkRegistry.getRegisteredPubk`D\x82\x01R\x7Fey: operator is not registered\0\0`d\x82\x01R`\x84\x01a\x04\xDEV[\x90\x94\x90\x93P\x91PPV[`\0a\t>a\x0F\xCBV[`\0a\tla\tU6\x86\x90\x03\x86\x01`@\x87\x01a\x1C^V[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x90P\x7F\xAD2(\xB6v\xF7\xD3\xCDB\x84\xA5D?\x17\xF1\x96+6\xE4\x91\xB3\n@\xB2@XI\xE5\x97\xBA_\xB5\x81\x14\x15a\t\xF4W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R`\0\x80Q` a\x1Eu\x839\x81Q\x91R`D\x82\x01R\x7FKey: cannot register zero pubkey`d\x82\x01R`\x84\x01a\x04\xDEV[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\n~W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a\x1Eu\x839\x81Q\x91R`D\x82\x01R\x7FKey: operator already registered`d\x82\x01Rf pubkey`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x04\xDEV[`\0\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` a\x1Eu\x839\x81Q\x91R`D\x82\x01R\x7FKey: public key already register`d\x82\x01Ra\x19Y`\xF2\x1B`\x84\x82\x01R`\xA4\x01a\x04\xDEV[`@\x80Q`\0\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x91a\x0B[\x91\x885\x91` \x80\x8B\x015\x92\x8B\x015\x91``\x8C\x015\x91`\x80\x8D\x01\x91`\xC0\x8E\x01\x91\x8D5\x91\x8E\x82\x015\x91\x01a\x1C\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1Ca\x0B~\x91\x90a\x1C\xDBV[\x90Pa\x0C\x18a\x0B\xB7a\x0B\xA2\x83a\x0B\x9C6\x8A\x90\x03\x8A\x01`@\x8B\x01a\x1C^V[\x90a\x12\xCDV[a\x0B\xB16\x89\x90\x03\x89\x01\x89a\x1C^V[\x90a\x13dV[a\x0B\xBFa\x13\xF8V[a\x0C\x01a\x0B\xF2\x85a\x0B\x9C`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[a\x0B\xB16\x8A\x90\x03\x8A\x01\x8Aa\x1C^V[a\x0C\x136\x8A\x90\x03\x8A\x01`\x80\x8B\x01a\x1DMV[a\x14\xB8V[a\x0C\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R`\0\x80Q` a\x1Eu\x839\x81Q\x91R`D\x82\x01R\x7FKey: either the G1 signature is `d\x82\x01R\x7Fwrong, or G1 and G2 private key `\x84\x82\x01Rk\x0C\x8D\xE4\r\xCD\xEE\x84\r\xAC.\x8Cm`\xA3\x1B`\xA4\x82\x01R`\xC4\x01a\x04\xDEV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x81\x81R`\x03` \x90\x81R`@\x80\x83 \x89\x82\x01\x805\x82U``\x8B\x015`\x01\x92\x83\x01U\x90\x83R\x81\x84 \x87\x90U\x86\x84R`\x02\x90\x92R\x91\x82\x90 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x84\x17\x90U\x90Q\x7F\xE3\xFBf\x13\xAF.\x890\xCF\x85\xD4\x7F\xCFm\xB1\x01\x92\"Jd\xC6\xCB\xE8\x02>\x0E\xEE\x1B\xA3\x82\x80A\x91a\r7\x91`\x80\x8A\x01\x90a\x1D\xAAV[`@Q\x80\x91\x03\x90\xA2P\x94\x93PPPPV[```\0\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\reWa\rea\x19\x05V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\r\x8EW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84\x81\x10\x15a\x0FYW`\0\x86\x86\x83\x81\x81\x10a\r\xB0Wa\r\xB0a\x1CHV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x04` R`@\x90 T\x90\x92P\x90P\x80\x15\x80a\x0E\x13WP`\xFF\x82\x16`\0\x90\x81R`\x04` R`@\x81 \x80T\x90\x91\x90a\r\xF7Wa\r\xF7a\x1CHV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x86\x10[\x15a\x0E\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`Q`$\x82\x01R\x7FBLSApkRegistry.getApkIndicesAtBl`D\x82\x01R\x7FockNumber: blockNumber is before`d\x82\x01Rp the first update`x\x1B`\x84\x82\x01R`\xA4\x01a\x04\xDEV[\x80[\x80\x15a\x0FCW`\xFF\x83\x16`\0\x90\x81R`\x04` R`@\x90 \x87\x90a\x0E\xC7`\x01\x84a\x1D\xF4V[\x81T\x81\x10a\x0E\xD7Wa\x0E\xD7a\x1CHV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x11a\x0F1Wa\x0F\0`\x01\x82a\x1D\xF4V[\x85\x85\x81Q\x81\x10a\x0F\x12Wa\x0F\x12a\x1CHV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x0FCV[\x80a\x0F;\x81a\x1E\x0BV[\x91PPa\x0E\xA2V[PPP\x80\x80a\x0FQ\x90a\x1E\"V[\x91PPa\r\x94V[P\x94\x93PPPPV[a\x0Fja\x0F\xCBV[`\0a\x0Fu\x83a\x08gV[P\x90Pa\x0F\x8A\x82a\x0F\x85\x83a\x17%V[a\x10\x82V[\x7F\xF8C\xEC\xD5:V6u\xE6!\x07\xBE\x14\x94\xFD\xDEJ=I\xAE\xED\xAF\x8D\x88\xC6\x16\xD8SF\xE3P\x0E\x83a\x05\xD1\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x10\x80W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`N`$\x82\x01R\x7FBLSApkRegistry.onlyRegistryCoord`D\x82\x01R\x7Finator: caller is not the regist`d\x82\x01Rm9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x91\x1B`\x84\x82\x01R`\xA4\x01a\x04\xDEV[V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0[\x83Q\x81\x10\x15a\x12\xC7W`\0\x84\x82\x81Q\x81\x10a\x10\xB6Wa\x10\xB6a\x1CHV[\x01` \x90\x81\x01Q`\xF8\x1C`\0\x81\x81R`\x04\x90\x92R`@\x90\x91 T\x90\x91P\x80a\x11FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FBLSApkRegistry._processQuorumApk`D\x82\x01R\x7FUpdate: quorum does not exist\0\0\0`d\x82\x01R`\x84\x01a\x04\xDEV[`\xFF\x82\x16`\0\x90\x81R`\x05` \x90\x81R`@\x91\x82\x90 \x82Q\x80\x84\x01\x90\x93R\x80T\x83R`\x01\x01T\x90\x82\x01Ra\x11z\x90\x86a\x13dV[`\xFF\x83\x16`\0\x81\x81R`\x05` \x90\x81R`@\x80\x83 \x85Q\x80\x82U\x86\x84\x01\x80Q`\x01\x93\x84\x01U\x90\x85RQ\x83R\x81\x84 \x94\x84R`\x04\x90\x92R\x82 \x93\x97P\x91\x92\x90\x91a\x11\xC3\x90\x85a\x1D\xF4V[\x81T\x81\x10a\x11\xD3Wa\x11\xD3a\x1CHV[`\0\x91\x82R` \x90\x91 \x01\x80T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16`\x01`\xC0\x1B\x90\x92\x04\x16\x14\x15a\x12\x14W\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`@\x83\x90\x1C\x17\x81Ua\x12\xB0V[\x80Tc\xFF\xFF\xFF\xFFC\x81\x16`\x01`\xE0\x1B\x81\x81\x02`\x01`\x01`\xE0\x1B\x03\x94\x85\x16\x17\x85U`\xFF\x88\x16`\0\x90\x81R`\x04` \x90\x81R`@\x80\x83 \x81Q``\x81\x01\x83Rg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x8B\x16\x81R\x80\x84\x01\x96\x87R\x80\x83\x01\x85\x81R\x82T`\x01\x81\x01\x84U\x92\x86R\x93\x90\x94 \x93Q\x93\x01\x80T\x95Q\x92Q\x87\x16\x90\x94\x02\x91\x90\x95\x16`\x01`\xC0\x1B\x02`\x01`\x01`\xE0\x1B\x03\x19\x94\x90\x94\x16\x91\x90\x94\x1C\x17\x91\x90\x91\x17\x90\x92\x16\x17\x90U[PPPP\x80\x80a\x12\xBF\x90a\x1E\"V[\x91PPa\x10\x99V[PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x12\xE9a\x17\xE4V[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R`\0\x90\x83``\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13\x1CWa\x13\x1EV[\xFE[P\x80a\x13\\W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x04\xDEV[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x13\x80a\x18\x02V[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x80\x84\x01\x91\x90\x91R\x90\x84\x01Q``\x83\x01R`\0\x90\x83`\x80\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13\x1CWP\x80a\x13\\W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCBXY\x19\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x04\xDEV[a\x14\0a\x18 V[P`@\x80Q`\x80\x81\x01\x82R\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81\x83\x01\x90\x81R\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED``\x83\x01R\x81R\x81Q\x80\x83\x01\x90\x92R\x7F']\xC4\xA2\x88\xD1\xAF\xB3\xCB\xB1\xAC\t\x18u$\xC7\xDB69]\xF7\xBE;\x99\xE6s\xB1:\x07Ze\xEC\x82R\x7F\x1D\x9B\xEF\xCD\x05\xA52>m\xA4\xD45\xF3\xB6\x17\xCD\xB3\xAF\x83(\\-\xF7\x11\xEF9\xC0\x15q\x82\x7F\x9D` \x83\x81\x01\x91\x90\x91R\x81\x01\x91\x90\x91R\x90V[`@\x80Q\x80\x82\x01\x82R\x85\x81R` \x80\x82\x01\x85\x90R\x82Q\x80\x84\x01\x90\x93R\x85\x83R\x82\x01\x83\x90R`\0\x91a\x14\xE7a\x18EV[`\0[`\x02\x81\x10\x15a\x16\xACW`\0a\x15\0\x82`\x06a\x1E=V[\x90P\x84\x82`\x02\x81\x10a\x15\x14Wa\x15\x14a\x1CHV[` \x02\x01QQ\x83a\x15&\x83`\0a\x1E\\V[`\x0C\x81\x10a\x156Wa\x156a\x1CHV[` \x02\x01R\x84\x82`\x02\x81\x10a\x15MWa\x15Ma\x1CHV[` \x02\x01Q` \x01Q\x83\x82`\x01a\x15d\x91\x90a\x1E\\V[`\x0C\x81\x10a\x15tWa\x15ta\x1CHV[` \x02\x01R\x83\x82`\x02\x81\x10a\x15\x8BWa\x15\x8Ba\x1CHV[` \x02\x01QQQ\x83a\x15\x9E\x83`\x02a\x1E\\V[`\x0C\x81\x10a\x15\xAEWa\x15\xAEa\x1CHV[` \x02\x01R\x83\x82`\x02\x81\x10a\x15\xC5Wa\x15\xC5a\x1CHV[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x15\xDE\x83`\x03a\x1E\\V[`\x0C\x81\x10a\x15\xEEWa\x15\xEEa\x1CHV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\x05Wa\x16\x05a\x1CHV[` \x02\x01Q` \x01Q`\0`\x02\x81\x10a\x16 Wa\x16 a\x1CHV[` \x02\x01Q\x83a\x161\x83`\x04a\x1E\\V[`\x0C\x81\x10a\x16AWa\x16Aa\x1CHV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16XWa\x16Xa\x1CHV[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x16sWa\x16sa\x1CHV[` \x02\x01Q\x83a\x16\x84\x83`\x05a\x1E\\V[`\x0C\x81\x10a\x16\x94Wa\x16\x94a\x1CHV[` \x02\x01RP\x80a\x16\xA4\x81a\x1E\"V[\x91PPa\x14\xEAV[Pa\x16\xB5a\x18dV[`\0` \x82a\x01\x80\x85`\x08a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13\x1CWP\x80a\x17\x15W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x15`$\x82\x01Rt\x1C\x18Z\\\x9A[\x99\xCB[\xDC\x18\xDB\xD9\x19KY\x98Z[\x19Y`Z\x1B`D\x82\x01R`d\x01a\x04\xDEV[PQ\x15\x15\x98\x97PPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x17JWP` \x82\x01Q\x15[\x15a\x17hWPP`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x90V[`@Q\x80`@\x01`@R\x80\x83`\0\x01Q\x81R` \x01\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\x84` \x01Qa\x17\xAD\x91\x90a\x1C\xDBV[a\x17\xD7\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\x1D\xF4V[\x90R\x92\x91PPV[\x91\x90PV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\x80\x01`@R\x80`\x04\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80a\x183a\x18\x82V[\x81R` \x01a\x18@a\x18\x82V[\x90R\x90V[`@Q\x80a\x01\x80\x01`@R\x80`\x0C\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80` \x01`@R\x80`\x01\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x17\xDFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x18\xC9W`\0\x80\xFD[a\x18\xD2\x82a\x18\xA0V[\x93\x92PPPV[\x805`\xFF\x81\x16\x81\x14a\x17\xDFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x18\xFCW`\0\x80\xFD[a\x18\xD2\x82a\x18\xD9V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x19>Wa\x19>a\x19\x05V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x19mWa\x19ma\x19\x05V[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x19\x88W`\0\x80\xFD[a\x19\x91\x83a\x18\xA0V[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x19\xAFW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x19\xC3W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x19\xD5Wa\x19\xD5a\x19\x05V[a\x19\xE7`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x19DV[\x91P\x80\x82R\x87\x84\x82\x85\x01\x01\x11\x15a\x19\xFDW`\0\x80\xFD[\x80\x84\x84\x01\x85\x84\x017`\0\x84\x82\x84\x01\x01RP\x80\x93PPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x1A-W`\0\x80\xFD[P5\x91\x90PV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x06{V[`\0\x80`@\x83\x85\x03\x12\x15a\x1A^W`\0\x80\xFD[a\x1Ag\x83a\x18\xD9V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x1A\x8AW`\0\x80\xFD[a\x1A\x93\x84a\x18\xD9V[\x92P` \x84\x015c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1A\xACW`\0\x80\xFD[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`\0\x83\x85\x03a\x01`\x81\x12\x15a\x1A\xD4W`\0\x80\xFD[a\x1A\xDD\x85a\x18\xA0V[\x93Pa\x01\0`\x1F\x19\x82\x01\x12\x15a\x1A\xF2W`\0\x80\xFD[` \x85\x01\x92P`@a\x01\x1F\x19\x82\x01\x12\x15a\x1B\x0BW`\0\x80\xFD[Pa\x01 \x84\x01\x90P\x92P\x92P\x92V[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x1B/W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x1BGW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1B[W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1BjW`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x1B|W`\0\x80\xFD[` \x92\x83\x01\x98\x90\x97P\x95\x90\x91\x015\x94\x93PPPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1B\xD0W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1B\xAEV[P\x90\x96\x95PPPPPPV[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R`\0` \x84\x81\x84\x01R```@\x84\x01R\x83Q\x80``\x85\x01R`\0[\x81\x81\x10\x15a\x1C\x1EW\x85\x81\x01\x83\x01Q\x85\x82\x01`\x80\x01R\x82\x01a\x1C\x02V[\x81\x81\x11\x15a\x1C0W`\0`\x80\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`\x80\x01\x95\x94PPPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0`@\x82\x84\x03\x12\x15a\x1CpW`\0\x80\xFD[a\x1Cxa\x19\x1BV[\x825\x81R` \x83\x015` \x82\x01R\x80\x91PP\x92\x91PPV[\x88\x81R\x87` \x82\x01R\x86`@\x82\x01R\x85``\x82\x01R`@\x85`\x80\x83\x017`\0`\xC0\x82\x01`\0\x81R`@\x86\x827PPa\x01\0\x81\x01\x92\x90\x92Ra\x01 \x82\x01Ra\x01@\x01\x96\x95PPPPPPV[`\0\x82a\x1C\xF8WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`\0\x82`\x1F\x83\x01\x12a\x1D\x0EW`\0\x80\xFD[a\x1D\x16a\x19\x1BV[\x80`@\x84\x01\x85\x81\x11\x15a\x1D(W`\0\x80\xFD[\x84[\x81\x81\x10\x15a\x1DBW\x805\x84R` \x93\x84\x01\x93\x01a\x1D*V[P\x90\x95\x94PPPPPV[`\0`\x80\x82\x84\x03\x12\x15a\x1D_W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x1D\x82Wa\x1D\x82a\x19\x05V[`@Ra\x1D\x8F\x84\x84a\x1C\xFDV[\x81Ra\x1D\x9E\x84`@\x85\x01a\x1C\xFDV[` \x82\x01R\x93\x92PPPV[\x825\x81R` \x80\x84\x015\x90\x82\x01R`\xC0\x81\x01`@\x83\x81\x84\x017`\x80\x82\x01`\0\x81R`@\x80\x85\x01\x827P`\0\x81R\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x82\x10\x15a\x1E\x06Wa\x1E\x06a\x1D\xDEV[P\x03\x90V[`\0\x81a\x1E\x1AWa\x1E\x1Aa\x1D\xDEV[P`\0\x19\x01\x90V[`\0`\0\x19\x82\x14\x15a\x1E6Wa\x1E6a\x1D\xDEV[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x1EWWa\x1EWa\x1D\xDEV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a\x1EoWa\x1Eoa\x1D\xDEV[P\x01\x90V\xFEBLSApkRegistry.registerBLSPublic\xA2dipfsX\"\x12 \xCA\x1B1\x98\xDD\xD9\xD6\"\xC9\xFE^\x8AB\xFB8\x85\xDA\x9A\xB1\x81\x8A\x06=\x1B\xFD\x99\xCD\xE5\xD9z\x14\xB5dsolcC\0\x08\x0C\x003", + ); + /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`. + ```solidity + event Initialized(uint8 version); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Initialized { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "Initialized(uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, + 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, + 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { version: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.version, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Initialized { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Initialized> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Initialized) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `NewPubkeyRegistration(address,(uint256,uint256),(uint256[2],uint256[2]))` and selector `0xe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba3828041`. + ```solidity + event NewPubkeyRegistration(address indexed operator, BN254.G1Point pubkeyG1, BN254.G2Point pubkeyG2); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct NewPubkeyRegistration { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub pubkeyG1: ::RustType, + #[allow(missing_docs)] + pub pubkeyG2: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for NewPubkeyRegistration { + type DataTuple<'a> = (BN254::G1Point, BN254::G2Point); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = + "NewPubkeyRegistration(address,(uint256,uint256),(uint256[2],uint256[2]))"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 227u8, 251u8, 102u8, 19u8, 175u8, 46u8, 137u8, 48u8, 207u8, 133u8, 212u8, + 127u8, 207u8, 109u8, 177u8, 1u8, 146u8, 34u8, 74u8, 100u8, 198u8, 203u8, 232u8, + 2u8, 62u8, 14u8, 238u8, 27u8, 163u8, 130u8, 128u8, 65u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: topics.1, + pubkeyG1: data.0, + pubkeyG2: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize(&self.pubkeyG1), + ::tokenize(&self.pubkeyG2), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.operator.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for NewPubkeyRegistration { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&NewPubkeyRegistration> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &NewPubkeyRegistration) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorAddedToQuorums(address,bytes32,bytes)` and selector `0x73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e`. + ```solidity + event OperatorAddedToQuorums(address operator, bytes32 operatorId, bytes quorumNumbers); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorAddedToQuorums { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorAddedToQuorums { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "OperatorAddedToQuorums(address,bytes32,bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 115u8, 162u8, 183u8, 251u8, 132u8, 71u8, 36u8, 185u8, 113u8, 128u8, 42u8, + 233u8, 177u8, 93u8, 176u8, 148u8, 212u8, 183u8, 25u8, 45u8, 249u8, 215u8, 53u8, + 14u8, 20u8, 235u8, 70u8, 107u8, 155u8, 34u8, 235u8, 78u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: data.0, + operatorId: data.1, + quorumNumbers: data.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.operator, + ), + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorAddedToQuorums { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorAddedToQuorums> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorAddedToQuorums) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorRemovedFromQuorums(address,bytes32,bytes)` and selector `0xf843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e`. + ```solidity + event OperatorRemovedFromQuorums(address operator, bytes32 operatorId, bytes quorumNumbers); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorRemovedFromQuorums { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorRemovedFromQuorums { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "OperatorRemovedFromQuorums(address,bytes32,bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 248u8, 67u8, 236u8, 213u8, 58u8, 86u8, 54u8, 117u8, 230u8, 33u8, 7u8, 190u8, + 20u8, 148u8, 253u8, 222u8, 74u8, 61u8, 73u8, 174u8, 237u8, 175u8, 141u8, 136u8, + 198u8, 22u8, 216u8, 83u8, 70u8, 227u8, 80u8, 14u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: data.0, + operatorId: data.1, + quorumNumbers: data.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.operator, + ), + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorRemovedFromQuorums { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorRemovedFromQuorums> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorRemovedFromQuorums) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. + ```solidity + constructor(address _registryCoordinator); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _registryCoordinator: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value._registryCoordinator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _registryCoordinator: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._registryCoordinator, + ), + ) + } + } + }; + /**Function with signature `apkHistory(uint8,uint256)` and selector `0x7916cea6`. + ```solidity + function apkHistory(uint8, uint256) external view returns (bytes24 apkHash, uint32 updateBlockNumber, uint32 nextUpdateBlockNumber); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct apkHistoryCall { + pub _0: u8, + pub _1: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`apkHistory(uint8,uint256)`](apkHistoryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct apkHistoryReturn { + pub apkHash: alloy::sol_types::private::FixedBytes<24>, + pub updateBlockNumber: u32, + pub nextUpdateBlockNumber: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (u8, alloy::sol_types::private::primitives::aliases::U256); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: apkHistoryCall) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for apkHistoryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<24>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<24>, u32, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: apkHistoryReturn) -> Self { + ( + value.apkHash, + value.updateBlockNumber, + value.nextUpdateBlockNumber, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for apkHistoryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + apkHash: tuple.0, + updateBlockNumber: tuple.1, + nextUpdateBlockNumber: tuple.2, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for apkHistoryCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = apkHistoryReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<24>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "apkHistory(uint8,uint256)"; + const SELECTOR: [u8; 4] = [121u8, 22u8, 206u8, 166u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._0, + ), + as alloy_sol_types::SolType>::tokenize( + &self._1, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `currentApk(uint8)` and selector `0xa3db80e2`. + ```solidity + function currentApk(uint8) external view returns (uint256 X, uint256 Y); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct currentApkCall { + pub _0: u8, + } + ///Container type for the return parameters of the [`currentApk(uint8)`](currentApkCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct currentApkReturn { + pub X: alloy::sol_types::private::primitives::aliases::U256, + pub Y: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: currentApkCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for currentApkCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: currentApkReturn) -> Self { + (value.X, value.Y) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for currentApkReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + X: tuple.0, + Y: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for currentApkCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = currentApkReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "currentApk(uint8)"; + const SELECTOR: [u8; 4] = [163u8, 219u8, 128u8, 226u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `deregisterOperator(address,bytes)` and selector `0xf4e24fe5`. + ```solidity + function deregisterOperator(address operator, bytes memory quorumNumbers) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorCall { + pub operator: alloy::sol_types::private::Address, + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`deregisterOperator(address,bytes)`](deregisterOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorCall) -> Self { + (value.operator, value.quorumNumbers) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + quorumNumbers: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for deregisterOperatorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = deregisterOperatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "deregisterOperator(address,bytes)"; + const SELECTOR: [u8; 4] = [244u8, 226u8, 79u8, 229u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getApk(uint8)` and selector `0x5f61a884`. + ```solidity + function getApk(uint8 quorumNumber) external view returns (BN254.G1Point memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApkCall { + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`getApk(uint8)`](getApkCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApkReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApkCall) -> Self { + (value.quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApkCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (BN254::G1Point,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApkReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApkReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getApkCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getApkReturn; + type ReturnTuple<'a> = (BN254::G1Point,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getApk(uint8)"; + const SELECTOR: [u8; 4] = [95u8, 97u8, 168u8, 132u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getApkHashAtBlockNumberAndIndex(uint8,uint32,uint256)` and selector `0x68bccaac`. + ```solidity + function getApkHashAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) external view returns (bytes24); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApkHashAtBlockNumberAndIndexCall { + pub quorumNumber: u8, + pub blockNumber: u32, + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getApkHashAtBlockNumberAndIndex(uint8,uint32,uint256)`](getApkHashAtBlockNumberAndIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApkHashAtBlockNumberAndIndexReturn { + pub _0: alloy::sol_types::private::FixedBytes<24>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u8, + u32, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApkHashAtBlockNumberAndIndexCall) -> Self { + (value.quorumNumber, value.blockNumber, value.index) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApkHashAtBlockNumberAndIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + blockNumber: tuple.1, + index: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<24>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<24>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApkHashAtBlockNumberAndIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApkHashAtBlockNumberAndIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getApkHashAtBlockNumberAndIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getApkHashAtBlockNumberAndIndexReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<24>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getApkHashAtBlockNumberAndIndex(uint8,uint32,uint256)"; + const SELECTOR: [u8; 4] = [104u8, 188u8, 202u8, 172u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.blockNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getApkHistoryLength(uint8)` and selector `0x377ed99d`. + ```solidity + function getApkHistoryLength(uint8 quorumNumber) external view returns (uint32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApkHistoryLengthCall { + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`getApkHistoryLength(uint8)`](getApkHistoryLengthCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApkHistoryLengthReturn { + pub _0: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApkHistoryLengthCall) -> Self { + (value.quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApkHistoryLengthCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApkHistoryLengthReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApkHistoryLengthReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getApkHistoryLengthCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getApkHistoryLengthReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getApkHistoryLength(uint8)"; + const SELECTOR: [u8; 4] = [55u8, 126u8, 217u8, 157u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getApkIndicesAtBlockNumber(bytes,uint256)` and selector `0xd5254a8c`. + ```solidity + function getApkIndicesAtBlockNumber(bytes memory quorumNumbers, uint256 blockNumber) external view returns (uint32[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApkIndicesAtBlockNumberCall { + pub quorumNumbers: alloy::sol_types::private::Bytes, + pub blockNumber: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getApkIndicesAtBlockNumber(bytes,uint256)`](getApkIndicesAtBlockNumberCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApkIndicesAtBlockNumberReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApkIndicesAtBlockNumberCall) -> Self { + (value.quorumNumbers, value.blockNumber) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApkIndicesAtBlockNumberCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumbers: tuple.0, + blockNumber: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApkIndicesAtBlockNumberReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApkIndicesAtBlockNumberReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getApkIndicesAtBlockNumberCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getApkIndicesAtBlockNumberReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getApkIndicesAtBlockNumber(bytes,uint256)"; + const SELECTOR: [u8; 4] = [213u8, 37u8, 74u8, 140u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.quorumNumbers, + ), + as alloy_sol_types::SolType>::tokenize( + &self.blockNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getApkUpdateAtIndex(uint8,uint256)` and selector `0x605747d5`. + ```solidity + function getApkUpdateAtIndex(uint8 quorumNumber, uint256 index) external view returns (IBLSApkRegistry.ApkUpdate memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApkUpdateAtIndexCall { + pub quorumNumber: u8, + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getApkUpdateAtIndex(uint8,uint256)`](getApkUpdateAtIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApkUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (u8, alloy::sol_types::private::primitives::aliases::U256); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApkUpdateAtIndexCall) -> Self { + (value.quorumNumber, value.index) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApkUpdateAtIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + index: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IBLSApkRegistry::ApkUpdate,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApkUpdateAtIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApkUpdateAtIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getApkUpdateAtIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getApkUpdateAtIndexReturn; + type ReturnTuple<'a> = (IBLSApkRegistry::ApkUpdate,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getApkUpdateAtIndex(uint8,uint256)"; + const SELECTOR: [u8; 4] = [96u8, 87u8, 71u8, 213u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorFromPubkeyHash(bytes32)` and selector `0x47b314e8`. + ```solidity + function getOperatorFromPubkeyHash(bytes32 pubkeyHash) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorFromPubkeyHashCall { + pub pubkeyHash: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`getOperatorFromPubkeyHash(bytes32)`](getOperatorFromPubkeyHashCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorFromPubkeyHashReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorFromPubkeyHashCall) -> Self { + (value.pubkeyHash,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorFromPubkeyHashCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + pubkeyHash: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorFromPubkeyHashReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorFromPubkeyHashReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorFromPubkeyHashCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorFromPubkeyHashReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorFromPubkeyHash(bytes32)"; + const SELECTOR: [u8; 4] = [71u8, 179u8, 20u8, 232u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.pubkeyHash), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorId(address)` and selector `0x13542a4e`. + ```solidity + function getOperatorId(address operator) external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorIdCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getOperatorId(address)`](getOperatorIdCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorIdReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorIdCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorIdCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorIdReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorIdReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorIdCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorIdReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorId(address)"; + const SELECTOR: [u8; 4] = [19u8, 84u8, 42u8, 78u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getRegisteredPubkey(address)` and selector `0x7ff81a87`. + ```solidity + function getRegisteredPubkey(address operator) external view returns (BN254.G1Point memory, bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getRegisteredPubkeyCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getRegisteredPubkey(address)`](getRegisteredPubkeyCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getRegisteredPubkeyReturn { + pub _0: ::RustType, + pub _1: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getRegisteredPubkeyCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getRegisteredPubkeyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (BN254::G1Point, alloy::sol_types::sol_data::FixedBytes<32>); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getRegisteredPubkeyReturn) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getRegisteredPubkeyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getRegisteredPubkeyCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getRegisteredPubkeyReturn; + type ReturnTuple<'a> = (BN254::G1Point, alloy::sol_types::sol_data::FixedBytes<32>); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getRegisteredPubkey(address)"; + const SELECTOR: [u8; 4] = [127u8, 248u8, 26u8, 135u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `initializeQuorum(uint8)` and selector `0x26d941f2`. + ```solidity + function initializeQuorum(uint8 quorumNumber) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeQuorumCall { + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`initializeQuorum(uint8)`](initializeQuorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeQuorumReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeQuorumCall) -> Self { + (value.quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeQuorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeQuorumReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeQuorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for initializeQuorumCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = initializeQuorumReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "initializeQuorum(uint8)"; + const SELECTOR: [u8; 4] = [38u8, 217u8, 65u8, 242u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `operatorToPubkey(address)` and selector `0x00a1f4cb`. + ```solidity + function operatorToPubkey(address) external view returns (uint256 X, uint256 Y); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorToPubkeyCall { + pub _0: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`operatorToPubkey(address)`](operatorToPubkeyCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorToPubkeyReturn { + pub X: alloy::sol_types::private::primitives::aliases::U256, + pub Y: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorToPubkeyCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorToPubkeyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorToPubkeyReturn) -> Self { + (value.X, value.Y) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorToPubkeyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + X: tuple.0, + Y: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for operatorToPubkeyCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = operatorToPubkeyReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "operatorToPubkey(address)"; + const SELECTOR: [u8; 4] = [0u8, 161u8, 244u8, 203u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `operatorToPubkeyHash(address)` and selector `0xde29fac0`. + ```solidity + function operatorToPubkeyHash(address) external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorToPubkeyHashCall { + pub _0: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`operatorToPubkeyHash(address)`](operatorToPubkeyHashCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorToPubkeyHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorToPubkeyHashCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorToPubkeyHashCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorToPubkeyHashReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorToPubkeyHashReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for operatorToPubkeyHashCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = operatorToPubkeyHashReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "operatorToPubkeyHash(address)"; + const SELECTOR: [u8; 4] = [222u8, 41u8, 250u8, 192u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pubkeyHashToOperator(bytes32)` and selector `0xe8bb9ae6`. + ```solidity + function pubkeyHashToOperator(bytes32) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pubkeyHashToOperatorCall { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`pubkeyHashToOperator(bytes32)`](pubkeyHashToOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pubkeyHashToOperatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pubkeyHashToOperatorCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pubkeyHashToOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pubkeyHashToOperatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pubkeyHashToOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pubkeyHashToOperatorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pubkeyHashToOperatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pubkeyHashToOperator(bytes32)"; + const SELECTOR: [u8; 4] = [232u8, 187u8, 154u8, 230u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._0), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registerBLSPublicKey(address,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(uint256,uint256))` and selector `0xbf79ce58`. + ```solidity + function registerBLSPublicKey(address operator, IBLSApkRegistry.PubkeyRegistrationParams memory params, BN254.G1Point memory pubkeyRegistrationMessageHash) external returns (bytes32 operatorId); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerBLSPublicKeyCall { + pub operator: alloy::sol_types::private::Address, + pub params: + ::RustType, + pub pubkeyRegistrationMessageHash: ::RustType, + } + ///Container type for the return parameters of the [`registerBLSPublicKey(address,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(uint256,uint256))`](registerBLSPublicKeyCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerBLSPublicKeyReturn { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + IBLSApkRegistry::PubkeyRegistrationParams, + BN254::G1Point, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerBLSPublicKeyCall) -> Self { + ( + value.operator, + value.params, + value.pubkeyRegistrationMessageHash, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerBLSPublicKeyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + params: tuple.1, + pubkeyRegistrationMessageHash: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerBLSPublicKeyReturn) -> Self { + (value.operatorId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerBLSPublicKeyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registerBLSPublicKeyCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + IBLSApkRegistry::PubkeyRegistrationParams, + BN254::G1Point, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registerBLSPublicKeyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registerBLSPublicKey(address,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(uint256,uint256))"; + const SELECTOR: [u8; 4] = [191u8, 121u8, 206u8, 88u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.params, + ), + ::tokenize( + &self.pubkeyRegistrationMessageHash, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registerOperator(address,bytes)` and selector `0x3fb27952`. + ```solidity + function registerOperator(address operator, bytes memory quorumNumbers) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorCall { + pub operator: alloy::sol_types::private::Address, + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`registerOperator(address,bytes)`](registerOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorCall) -> Self { + (value.operator, value.quorumNumbers) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + quorumNumbers: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registerOperatorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registerOperatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registerOperator(address,bytes)"; + const SELECTOR: [u8; 4] = [63u8, 178u8, 121u8, 82u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registryCoordinator()` and selector `0x6d14a987`. + ```solidity + function registryCoordinator() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registryCoordinatorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registryCoordinatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registryCoordinator()"; + const SELECTOR: [u8; 4] = [109u8, 20u8, 169u8, 135u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`BLSApkRegistry`](self) function calls. + pub enum BLSApkRegistryCalls { + apkHistory(apkHistoryCall), + currentApk(currentApkCall), + deregisterOperator(deregisterOperatorCall), + getApk(getApkCall), + getApkHashAtBlockNumberAndIndex(getApkHashAtBlockNumberAndIndexCall), + getApkHistoryLength(getApkHistoryLengthCall), + getApkIndicesAtBlockNumber(getApkIndicesAtBlockNumberCall), + getApkUpdateAtIndex(getApkUpdateAtIndexCall), + getOperatorFromPubkeyHash(getOperatorFromPubkeyHashCall), + getOperatorId(getOperatorIdCall), + getRegisteredPubkey(getRegisteredPubkeyCall), + initializeQuorum(initializeQuorumCall), + operatorToPubkey(operatorToPubkeyCall), + operatorToPubkeyHash(operatorToPubkeyHashCall), + pubkeyHashToOperator(pubkeyHashToOperatorCall), + registerBLSPublicKey(registerBLSPublicKeyCall), + registerOperator(registerOperatorCall), + registryCoordinator(registryCoordinatorCall), + } + #[automatically_derived] + impl BLSApkRegistryCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [0u8, 161u8, 244u8, 203u8], + [19u8, 84u8, 42u8, 78u8], + [38u8, 217u8, 65u8, 242u8], + [55u8, 126u8, 217u8, 157u8], + [63u8, 178u8, 121u8, 82u8], + [71u8, 179u8, 20u8, 232u8], + [95u8, 97u8, 168u8, 132u8], + [96u8, 87u8, 71u8, 213u8], + [104u8, 188u8, 202u8, 172u8], + [109u8, 20u8, 169u8, 135u8], + [121u8, 22u8, 206u8, 166u8], + [127u8, 248u8, 26u8, 135u8], + [163u8, 219u8, 128u8, 226u8], + [191u8, 121u8, 206u8, 88u8], + [213u8, 37u8, 74u8, 140u8], + [222u8, 41u8, 250u8, 192u8], + [232u8, 187u8, 154u8, 230u8], + [244u8, 226u8, 79u8, 229u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for BLSApkRegistryCalls { + const NAME: &'static str = "BLSApkRegistryCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 18usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::apkHistory(_) => ::SELECTOR, + Self::currentApk(_) => ::SELECTOR, + Self::deregisterOperator(_) => { + ::SELECTOR + } + Self::getApk(_) => ::SELECTOR, + Self::getApkHashAtBlockNumberAndIndex(_) => { + ::SELECTOR + } + Self::getApkHistoryLength(_) => { + ::SELECTOR + } + Self::getApkIndicesAtBlockNumber(_) => { + ::SELECTOR + } + Self::getApkUpdateAtIndex(_) => { + ::SELECTOR + } + Self::getOperatorFromPubkeyHash(_) => { + ::SELECTOR + } + Self::getOperatorId(_) => ::SELECTOR, + Self::getRegisteredPubkey(_) => { + ::SELECTOR + } + Self::initializeQuorum(_) => { + ::SELECTOR + } + Self::operatorToPubkey(_) => { + ::SELECTOR + } + Self::operatorToPubkeyHash(_) => { + ::SELECTOR + } + Self::pubkeyHashToOperator(_) => { + ::SELECTOR + } + Self::registerBLSPublicKey(_) => { + ::SELECTOR + } + Self::registerOperator(_) => { + ::SELECTOR + } + Self::registryCoordinator(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn operatorToPubkey( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryCalls::operatorToPubkey) + } + operatorToPubkey + }, + { + fn getOperatorId( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryCalls::getOperatorId) + } + getOperatorId + }, + { + fn initializeQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryCalls::initializeQuorum) + } + initializeQuorum + }, + { + fn getApkHistoryLength( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryCalls::getApkHistoryLength) + } + getApkHistoryLength + }, + { + fn registerOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryCalls::registerOperator) + } + registerOperator + }, + { + fn getOperatorFromPubkeyHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryCalls::getOperatorFromPubkeyHash) + } + getOperatorFromPubkeyHash + }, + { + fn getApk( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(BLSApkRegistryCalls::getApk) + } + getApk + }, + { + fn getApkUpdateAtIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryCalls::getApkUpdateAtIndex) + } + getApkUpdateAtIndex + }, + { + fn getApkHashAtBlockNumberAndIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(BLSApkRegistryCalls::getApkHashAtBlockNumberAndIndex) + } + getApkHashAtBlockNumberAndIndex + }, + { + fn registryCoordinator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryCalls::registryCoordinator) + } + registryCoordinator + }, + { + fn apkHistory( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(BLSApkRegistryCalls::apkHistory) + } + apkHistory + }, + { + fn getRegisteredPubkey( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryCalls::getRegisteredPubkey) + } + getRegisteredPubkey + }, + { + fn currentApk( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(BLSApkRegistryCalls::currentApk) + } + currentApk + }, + { + fn registerBLSPublicKey( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryCalls::registerBLSPublicKey) + } + registerBLSPublicKey + }, + { + fn getApkIndicesAtBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(BLSApkRegistryCalls::getApkIndicesAtBlockNumber) + } + getApkIndicesAtBlockNumber + }, + { + fn operatorToPubkeyHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryCalls::operatorToPubkeyHash) + } + operatorToPubkeyHash + }, + { + fn pubkeyHashToOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryCalls::pubkeyHashToOperator) + } + pubkeyHashToOperator + }, + { + fn deregisterOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryCalls::deregisterOperator) + } + deregisterOperator + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::apkHistory(inner) => { + ::abi_encoded_size(inner) + } + Self::currentApk(inner) => { + ::abi_encoded_size(inner) + } + Self::deregisterOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getApk(inner) => { + ::abi_encoded_size(inner) + } + Self::getApkHashAtBlockNumberAndIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getApkHistoryLength(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getApkIndicesAtBlockNumber(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getApkUpdateAtIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorFromPubkeyHash(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorId(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getRegisteredPubkey(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::initializeQuorum(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::operatorToPubkey(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::operatorToPubkeyHash(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::pubkeyHashToOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registerBLSPublicKey(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registerOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registryCoordinator(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::apkHistory(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::currentApk(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::deregisterOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getApk(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getApkHashAtBlockNumberAndIndex(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getApkHistoryLength(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getApkIndicesAtBlockNumber(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getApkUpdateAtIndex(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperatorFromPubkeyHash(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperatorId(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getRegisteredPubkey(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::initializeQuorum(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::operatorToPubkey(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::operatorToPubkeyHash(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::pubkeyHashToOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registerBLSPublicKey(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registerOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registryCoordinator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`BLSApkRegistry`](self) events. + pub enum BLSApkRegistryEvents { + Initialized(Initialized), + NewPubkeyRegistration(NewPubkeyRegistration), + OperatorAddedToQuorums(OperatorAddedToQuorums), + OperatorRemovedFromQuorums(OperatorRemovedFromQuorums), + } + #[automatically_derived] + impl BLSApkRegistryEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 115u8, 162u8, 183u8, 251u8, 132u8, 71u8, 36u8, 185u8, 113u8, 128u8, 42u8, 233u8, + 177u8, 93u8, 176u8, 148u8, 212u8, 183u8, 25u8, 45u8, 249u8, 215u8, 53u8, 14u8, + 20u8, 235u8, 70u8, 107u8, 155u8, 34u8, 235u8, 78u8, + ], + [ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, 56u8, + 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, 96u8, + 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ], + [ + 227u8, 251u8, 102u8, 19u8, 175u8, 46u8, 137u8, 48u8, 207u8, 133u8, 212u8, 127u8, + 207u8, 109u8, 177u8, 1u8, 146u8, 34u8, 74u8, 100u8, 198u8, 203u8, 232u8, 2u8, 62u8, + 14u8, 238u8, 27u8, 163u8, 130u8, 128u8, 65u8, + ], + [ + 248u8, 67u8, 236u8, 213u8, 58u8, 86u8, 54u8, 117u8, 230u8, 33u8, 7u8, 190u8, 20u8, + 148u8, 253u8, 222u8, 74u8, 61u8, 73u8, 174u8, 237u8, 175u8, 141u8, 136u8, 198u8, + 22u8, 216u8, 83u8, 70u8, 227u8, 80u8, 14u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for BLSApkRegistryEvents { + const NAME: &'static str = "BLSApkRegistryEvents"; + const COUNT: usize = 4usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::Initialized) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::NewPubkeyRegistration) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorAddedToQuorums) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorRemovedFromQuorums) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for BLSApkRegistryEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::NewPubkeyRegistration(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorAddedToQuorums(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorRemovedFromQuorums(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::NewPubkeyRegistration(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorAddedToQuorums(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorRemovedFromQuorums(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`BLSApkRegistry`](self) contract instance. + + See the [wrapper's documentation](`BLSApkRegistryInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> BLSApkRegistryInstance { + BLSApkRegistryInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _registryCoordinator: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future>> + { + BLSApkRegistryInstance::::deploy(provider, _registryCoordinator) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _registryCoordinator: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + BLSApkRegistryInstance::::deploy_builder(provider, _registryCoordinator) + } + /**A [`BLSApkRegistry`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`BLSApkRegistry`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct BLSApkRegistryInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for BLSApkRegistryInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("BLSApkRegistryInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BLSApkRegistryInstance + { + /**Creates a new wrapper around an on-chain [`BLSApkRegistry`](self) contract instance. + + See the [wrapper's documentation](`BLSApkRegistryInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _registryCoordinator: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, _registryCoordinator); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _registryCoordinator: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode(&constructorCall { + _registryCoordinator, + })[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl BLSApkRegistryInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> BLSApkRegistryInstance { + BLSApkRegistryInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BLSApkRegistryInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`apkHistory`] function. + pub fn apkHistory( + &self, + _0: u8, + _1: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&apkHistoryCall { _0, _1 }) + } + ///Creates a new call builder for the [`currentApk`] function. + pub fn currentApk( + &self, + _0: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(¤tApkCall { _0 }) + } + ///Creates a new call builder for the [`deregisterOperator`] function. + pub fn deregisterOperator( + &self, + operator: alloy::sol_types::private::Address, + quorumNumbers: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&deregisterOperatorCall { + operator, + quorumNumbers, + }) + } + ///Creates a new call builder for the [`getApk`] function. + pub fn getApk( + &self, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getApkCall { quorumNumber }) + } + ///Creates a new call builder for the [`getApkHashAtBlockNumberAndIndex`] function. + pub fn getApkHashAtBlockNumberAndIndex( + &self, + quorumNumber: u8, + blockNumber: u32, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getApkHashAtBlockNumberAndIndexCall { + quorumNumber, + blockNumber, + index, + }) + } + ///Creates a new call builder for the [`getApkHistoryLength`] function. + pub fn getApkHistoryLength( + &self, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getApkHistoryLengthCall { quorumNumber }) + } + ///Creates a new call builder for the [`getApkIndicesAtBlockNumber`] function. + pub fn getApkIndicesAtBlockNumber( + &self, + quorumNumbers: alloy::sol_types::private::Bytes, + blockNumber: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getApkIndicesAtBlockNumberCall { + quorumNumbers, + blockNumber, + }) + } + ///Creates a new call builder for the [`getApkUpdateAtIndex`] function. + pub fn getApkUpdateAtIndex( + &self, + quorumNumber: u8, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getApkUpdateAtIndexCall { + quorumNumber, + index, + }) + } + ///Creates a new call builder for the [`getOperatorFromPubkeyHash`] function. + pub fn getOperatorFromPubkeyHash( + &self, + pubkeyHash: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorFromPubkeyHashCall { pubkeyHash }) + } + ///Creates a new call builder for the [`getOperatorId`] function. + pub fn getOperatorId( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorIdCall { operator }) + } + ///Creates a new call builder for the [`getRegisteredPubkey`] function. + pub fn getRegisteredPubkey( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getRegisteredPubkeyCall { operator }) + } + ///Creates a new call builder for the [`initializeQuorum`] function. + pub fn initializeQuorum( + &self, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initializeQuorumCall { quorumNumber }) + } + ///Creates a new call builder for the [`operatorToPubkey`] function. + pub fn operatorToPubkey( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&operatorToPubkeyCall { _0 }) + } + ///Creates a new call builder for the [`operatorToPubkeyHash`] function. + pub fn operatorToPubkeyHash( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&operatorToPubkeyHashCall { _0 }) + } + ///Creates a new call builder for the [`pubkeyHashToOperator`] function. + pub fn pubkeyHashToOperator( + &self, + _0: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&pubkeyHashToOperatorCall { _0 }) + } + ///Creates a new call builder for the [`registerBLSPublicKey`] function. + pub fn registerBLSPublicKey( + &self, + operator: alloy::sol_types::private::Address, + params: ::RustType, + pubkeyRegistrationMessageHash: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterBLSPublicKeyCall { + operator, + params, + pubkeyRegistrationMessageHash, + }) + } + ///Creates a new call builder for the [`registerOperator`] function. + pub fn registerOperator( + &self, + operator: alloy::sol_types::private::Address, + quorumNumbers: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterOperatorCall { + operator, + quorumNumbers, + }) + } + ///Creates a new call builder for the [`registryCoordinator`] function. + pub fn registryCoordinator( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®istryCoordinatorCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BLSApkRegistryInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Initialized`] event. + pub fn Initialized_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`NewPubkeyRegistration`] event. + pub fn NewPubkeyRegistration_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorAddedToQuorums`] event. + pub fn OperatorAddedToQuorums_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorRemovedFromQuorums`] event. + pub fn OperatorRemovedFromQuorums_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/blsapkregistrystorage.rs b/crates/utils/src/blsapkregistrystorage.rs new file mode 100644 index 00000000..c3f7d496 --- /dev/null +++ b/crates/utils/src/blsapkregistrystorage.rs @@ -0,0 +1,5222 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library BN254 { + struct G1Point { uint256 X; uint256 Y; } + struct G2Point { uint256[2] X; uint256[2] Y; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod BN254 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct G1Point { uint256 X; uint256 Y; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct G1Point { + pub X: alloy::sol_types::private::primitives::aliases::U256, + pub Y: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: G1Point) -> Self { + (value.X, value.Y) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for G1Point { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + X: tuple.0, + Y: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for G1Point { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for G1Point { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.X, + ), + as alloy_sol_types::SolType>::tokenize( + &self.Y, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for G1Point { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for G1Point { + const NAME: &'static str = "G1Point"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 X,uint256 Y)") + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word(&self.X) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.Y) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for G1Point { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.X) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.Y) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.X, out); + as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.Y, out); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct G2Point { uint256[2] X; uint256[2] Y; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct G2Point { + pub X: [alloy::sol_types::private::primitives::aliases::U256; 2usize], + pub Y: [alloy::sol_types::private::primitives::aliases::U256; 2usize], + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedArray, 2usize>, + alloy::sol_types::sol_data::FixedArray, 2usize>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + [alloy::sol_types::private::primitives::aliases::U256; 2usize], + [alloy::sol_types::private::primitives::aliases::U256; 2usize], + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: G2Point) -> Self { + (value.X, value.Y) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for G2Point { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + X: tuple.0, + Y: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for G2Point { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for G2Point { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + , + 2usize, + > as alloy_sol_types::SolType>::tokenize(&self.X), + , + 2usize, + > as alloy_sol_types::SolType>::tokenize(&self.Y), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for G2Point { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for G2Point { + const NAME: &'static str = "G2Point"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed("G2Point(uint256[2] X,uint256[2] Y)") + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + , + 2usize, + > as alloy_sol_types::SolType>::eip712_data_word(&self.X) + .0, + , + 2usize, + > as alloy_sol_types::SolType>::eip712_data_word(&self.Y) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for G2Point { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + , + 2usize, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.X + ) + + , + 2usize, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.Y + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + , + 2usize, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.X, out + ); + , + 2usize, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.Y, out + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance. + + See the [wrapper's documentation](`BN254Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> BN254Instance { + BN254Instance::::new(address, provider) + } + /**A [`BN254`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`BN254`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct BN254Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for BN254Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("BN254Instance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BN254Instance + { + /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance. + + See the [wrapper's documentation](`BN254Instance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl BN254Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> BN254Instance { + BN254Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BN254Instance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BN254Instance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library IBLSApkRegistry { + struct ApkUpdate { bytes24 apkHash; uint32 updateBlockNumber; uint32 nextUpdateBlockNumber; } + struct PubkeyRegistrationParams { BN254.G1Point pubkeyRegistrationSignature; BN254.G1Point pubkeyG1; BN254.G2Point pubkeyG2; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IBLSApkRegistry { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct ApkUpdate { bytes24 apkHash; uint32 updateBlockNumber; uint32 nextUpdateBlockNumber; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ApkUpdate { + pub apkHash: alloy::sol_types::private::FixedBytes<24>, + pub updateBlockNumber: u32, + pub nextUpdateBlockNumber: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<24>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<24>, u32, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ApkUpdate) -> Self { + ( + value.apkHash, + value.updateBlockNumber, + value.nextUpdateBlockNumber, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ApkUpdate { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + apkHash: tuple.0, + updateBlockNumber: tuple.1, + nextUpdateBlockNumber: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ApkUpdate { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ApkUpdate { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.apkHash), + as alloy_sol_types::SolType>::tokenize(&self.updateBlockNumber), + as alloy_sol_types::SolType>::tokenize(&self.nextUpdateBlockNumber), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for ApkUpdate { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for ApkUpdate { + const NAME: &'static str = "ApkUpdate"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ApkUpdate(bytes24 apkHash,uint32 updateBlockNumber,uint32 nextUpdateBlockNumber)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word(&self.apkHash) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.updateBlockNumber, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.nextUpdateBlockNumber, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ApkUpdate { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.apkHash, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.updateBlockNumber, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.nextUpdateBlockNumber, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.apkHash, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.updateBlockNumber, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nextUpdateBlockNumber, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct PubkeyRegistrationParams { BN254.G1Point pubkeyRegistrationSignature; BN254.G1Point pubkeyG1; BN254.G2Point pubkeyG2; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct PubkeyRegistrationParams { + pub pubkeyRegistrationSignature: ::RustType, + pub pubkeyG1: ::RustType, + pub pubkeyG2: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (BN254::G1Point, BN254::G1Point, BN254::G2Point); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: PubkeyRegistrationParams) -> Self { + ( + value.pubkeyRegistrationSignature, + value.pubkeyG1, + value.pubkeyG2, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for PubkeyRegistrationParams { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + pubkeyRegistrationSignature: tuple.0, + pubkeyG1: tuple.1, + pubkeyG2: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for PubkeyRegistrationParams { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for PubkeyRegistrationParams { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.pubkeyRegistrationSignature, + ), + ::tokenize(&self.pubkeyG1), + ::tokenize(&self.pubkeyG2), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for PubkeyRegistrationParams { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for PubkeyRegistrationParams { + const NAME: &'static str = "PubkeyRegistrationParams"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "PubkeyRegistrationParams(BN254.G1Point pubkeyRegistrationSignature,BN254.G1Point pubkeyG1,BN254.G2Point pubkeyG2)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + let mut components = alloy_sol_types::private::Vec::with_capacity(3); + components.push(::eip712_root_type()); + components + .extend(::eip712_components()); + components.push(::eip712_root_type()); + components + .extend(::eip712_components()); + components.push(::eip712_root_type()); + components + .extend(::eip712_components()); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.pubkeyRegistrationSignature, + ) + .0, + ::eip712_data_word(&self.pubkeyG1) + .0, + ::eip712_data_word(&self.pubkeyG2) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for PubkeyRegistrationParams { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.pubkeyRegistrationSignature, + ) + + ::topic_preimage_length( + &rust.pubkeyG1, + ) + + ::topic_preimage_length( + &rust.pubkeyG2, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.pubkeyRegistrationSignature, + out, + ); + ::encode_topic_preimage( + &rust.pubkeyG1, + out, + ); + ::encode_topic_preimage( + &rust.pubkeyG2, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IBLSApkRegistry`](self) contract instance. + + See the [wrapper's documentation](`IBLSApkRegistryInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IBLSApkRegistryInstance { + IBLSApkRegistryInstance::::new(address, provider) + } + /**A [`IBLSApkRegistry`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IBLSApkRegistry`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IBLSApkRegistryInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IBLSApkRegistryInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IBLSApkRegistryInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IBLSApkRegistryInstance + { + /**Creates a new wrapper around an on-chain [`IBLSApkRegistry`](self) contract instance. + + See the [wrapper's documentation](`IBLSApkRegistryInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IBLSApkRegistryInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IBLSApkRegistryInstance { + IBLSApkRegistryInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IBLSApkRegistryInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IBLSApkRegistryInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library BN254 { + struct G1Point { + uint256 X; + uint256 Y; + } + struct G2Point { + uint256[2] X; + uint256[2] Y; + } +} + +library IBLSApkRegistry { + struct ApkUpdate { + bytes24 apkHash; + uint32 updateBlockNumber; + uint32 nextUpdateBlockNumber; + } + struct PubkeyRegistrationParams { + BN254.G1Point pubkeyRegistrationSignature; + BN254.G1Point pubkeyG1; + BN254.G2Point pubkeyG2; + } +} + +interface BLSApkRegistryStorage { + event Initialized(uint8 version); + event NewPubkeyRegistration(address indexed operator, BN254.G1Point pubkeyG1, BN254.G2Point pubkeyG2); + event OperatorAddedToQuorums(address operator, bytes32 operatorId, bytes quorumNumbers); + event OperatorRemovedFromQuorums(address operator, bytes32 operatorId, bytes quorumNumbers); + + function apkHistory(uint8, uint256) external view returns (bytes24 apkHash, uint32 updateBlockNumber, uint32 nextUpdateBlockNumber); + function currentApk(uint8) external view returns (uint256 X, uint256 Y); + function deregisterOperator(address operator, bytes memory quorumNumbers) external; + function getApk(uint8 quorumNumber) external view returns (BN254.G1Point memory); + function getApkHashAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) external view returns (bytes24); + function getApkIndicesAtBlockNumber(bytes memory quorumNumbers, uint256 blockNumber) external view returns (uint32[] memory); + function getApkUpdateAtIndex(uint8 quorumNumber, uint256 index) external view returns (IBLSApkRegistry.ApkUpdate memory); + function getOperatorFromPubkeyHash(bytes32 pubkeyHash) external view returns (address); + function getOperatorId(address operator) external view returns (bytes32); + function getRegisteredPubkey(address operator) external view returns (BN254.G1Point memory, bytes32); + function initializeQuorum(uint8 quorumNumber) external; + function operatorToPubkey(address) external view returns (uint256 X, uint256 Y); + function operatorToPubkeyHash(address) external view returns (bytes32); + function pubkeyHashToOperator(bytes32) external view returns (address); + function registerBLSPublicKey(address operator, IBLSApkRegistry.PubkeyRegistrationParams memory params, BN254.G1Point memory pubkeyRegistrationMessageHash) external returns (bytes32 operatorId); + function registerOperator(address operator, bytes memory quorumNumbers) external; + function registryCoordinator() external view returns (address); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "apkHistory", + "inputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "apkHash", + "type": "bytes24", + "internalType": "bytes24" + }, + { + "name": "updateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "nextUpdateBlockNumber", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "currentApk", + "inputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "deregisterOperator", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getApk", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getApkHashAtBlockNumberAndIndex", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes24", + "internalType": "bytes24" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getApkIndicesAtBlockNumber", + "inputs": [ + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "blockNumber", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32[]", + "internalType": "uint32[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getApkUpdateAtIndex", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IBLSApkRegistry.ApkUpdate", + "components": [ + { + "name": "apkHash", + "type": "bytes24", + "internalType": "bytes24" + }, + { + "name": "updateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "nextUpdateBlockNumber", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorFromPubkeyHash", + "inputs": [ + { + "name": "pubkeyHash", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorId", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getRegisteredPubkey", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initializeQuorum", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "operatorToPubkey", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "operatorToPubkeyHash", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pubkeyHashToOperator", + "inputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registerBLSPublicKey", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "params", + "type": "tuple", + "internalType": "struct IBLSApkRegistry.PubkeyRegistrationParams", + "components": [ + { + "name": "pubkeyRegistrationSignature", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "pubkeyG1", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "pubkeyG2", + "type": "tuple", + "internalType": "struct BN254.G2Point", + "components": [ + { + "name": "X", + "type": "uint256[2]", + "internalType": "uint256[2]" + }, + { + "name": "Y", + "type": "uint256[2]", + "internalType": "uint256[2]" + } + ] + } + ] + }, + { + "name": "pubkeyRegistrationMessageHash", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ], + "outputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registerOperator", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registryCoordinator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "NewPubkeyRegistration", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "pubkeyG1", + "type": "tuple", + "indexed": false, + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "pubkeyG2", + "type": "tuple", + "indexed": false, + "internalType": "struct BN254.G2Point", + "components": [ + { + "name": "X", + "type": "uint256[2]", + "internalType": "uint256[2]" + }, + { + "name": "Y", + "type": "uint256[2]", + "internalType": "uint256[2]" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorAddedToQuorums", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "operatorId", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorRemovedFromQuorums", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "operatorId", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod BLSApkRegistryStorage { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`. + ```solidity + event Initialized(uint8 version); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Initialized { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "Initialized(uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, + 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, + 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { version: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.version, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Initialized { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Initialized> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Initialized) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `NewPubkeyRegistration(address,(uint256,uint256),(uint256[2],uint256[2]))` and selector `0xe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba3828041`. + ```solidity + event NewPubkeyRegistration(address indexed operator, BN254.G1Point pubkeyG1, BN254.G2Point pubkeyG2); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct NewPubkeyRegistration { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub pubkeyG1: ::RustType, + #[allow(missing_docs)] + pub pubkeyG2: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for NewPubkeyRegistration { + type DataTuple<'a> = (BN254::G1Point, BN254::G2Point); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = + "NewPubkeyRegistration(address,(uint256,uint256),(uint256[2],uint256[2]))"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 227u8, 251u8, 102u8, 19u8, 175u8, 46u8, 137u8, 48u8, 207u8, 133u8, 212u8, + 127u8, 207u8, 109u8, 177u8, 1u8, 146u8, 34u8, 74u8, 100u8, 198u8, 203u8, 232u8, + 2u8, 62u8, 14u8, 238u8, 27u8, 163u8, 130u8, 128u8, 65u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: topics.1, + pubkeyG1: data.0, + pubkeyG2: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize(&self.pubkeyG1), + ::tokenize(&self.pubkeyG2), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.operator.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for NewPubkeyRegistration { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&NewPubkeyRegistration> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &NewPubkeyRegistration) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorAddedToQuorums(address,bytes32,bytes)` and selector `0x73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e`. + ```solidity + event OperatorAddedToQuorums(address operator, bytes32 operatorId, bytes quorumNumbers); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorAddedToQuorums { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorAddedToQuorums { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "OperatorAddedToQuorums(address,bytes32,bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 115u8, 162u8, 183u8, 251u8, 132u8, 71u8, 36u8, 185u8, 113u8, 128u8, 42u8, + 233u8, 177u8, 93u8, 176u8, 148u8, 212u8, 183u8, 25u8, 45u8, 249u8, 215u8, 53u8, + 14u8, 20u8, 235u8, 70u8, 107u8, 155u8, 34u8, 235u8, 78u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: data.0, + operatorId: data.1, + quorumNumbers: data.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.operator, + ), + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorAddedToQuorums { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorAddedToQuorums> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorAddedToQuorums) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorRemovedFromQuorums(address,bytes32,bytes)` and selector `0xf843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e`. + ```solidity + event OperatorRemovedFromQuorums(address operator, bytes32 operatorId, bytes quorumNumbers); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorRemovedFromQuorums { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorRemovedFromQuorums { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "OperatorRemovedFromQuorums(address,bytes32,bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 248u8, 67u8, 236u8, 213u8, 58u8, 86u8, 54u8, 117u8, 230u8, 33u8, 7u8, 190u8, + 20u8, 148u8, 253u8, 222u8, 74u8, 61u8, 73u8, 174u8, 237u8, 175u8, 141u8, 136u8, + 198u8, 22u8, 216u8, 83u8, 70u8, 227u8, 80u8, 14u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: data.0, + operatorId: data.1, + quorumNumbers: data.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.operator, + ), + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorRemovedFromQuorums { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorRemovedFromQuorums> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorRemovedFromQuorums) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `apkHistory(uint8,uint256)` and selector `0x7916cea6`. + ```solidity + function apkHistory(uint8, uint256) external view returns (bytes24 apkHash, uint32 updateBlockNumber, uint32 nextUpdateBlockNumber); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct apkHistoryCall { + pub _0: u8, + pub _1: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`apkHistory(uint8,uint256)`](apkHistoryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct apkHistoryReturn { + pub apkHash: alloy::sol_types::private::FixedBytes<24>, + pub updateBlockNumber: u32, + pub nextUpdateBlockNumber: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (u8, alloy::sol_types::private::primitives::aliases::U256); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: apkHistoryCall) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for apkHistoryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<24>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<24>, u32, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: apkHistoryReturn) -> Self { + ( + value.apkHash, + value.updateBlockNumber, + value.nextUpdateBlockNumber, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for apkHistoryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + apkHash: tuple.0, + updateBlockNumber: tuple.1, + nextUpdateBlockNumber: tuple.2, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for apkHistoryCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = apkHistoryReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<24>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "apkHistory(uint8,uint256)"; + const SELECTOR: [u8; 4] = [121u8, 22u8, 206u8, 166u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._0, + ), + as alloy_sol_types::SolType>::tokenize( + &self._1, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `currentApk(uint8)` and selector `0xa3db80e2`. + ```solidity + function currentApk(uint8) external view returns (uint256 X, uint256 Y); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct currentApkCall { + pub _0: u8, + } + ///Container type for the return parameters of the [`currentApk(uint8)`](currentApkCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct currentApkReturn { + pub X: alloy::sol_types::private::primitives::aliases::U256, + pub Y: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: currentApkCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for currentApkCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: currentApkReturn) -> Self { + (value.X, value.Y) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for currentApkReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + X: tuple.0, + Y: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for currentApkCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = currentApkReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "currentApk(uint8)"; + const SELECTOR: [u8; 4] = [163u8, 219u8, 128u8, 226u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `deregisterOperator(address,bytes)` and selector `0xf4e24fe5`. + ```solidity + function deregisterOperator(address operator, bytes memory quorumNumbers) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorCall { + pub operator: alloy::sol_types::private::Address, + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`deregisterOperator(address,bytes)`](deregisterOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorCall) -> Self { + (value.operator, value.quorumNumbers) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + quorumNumbers: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for deregisterOperatorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = deregisterOperatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "deregisterOperator(address,bytes)"; + const SELECTOR: [u8; 4] = [244u8, 226u8, 79u8, 229u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getApk(uint8)` and selector `0x5f61a884`. + ```solidity + function getApk(uint8 quorumNumber) external view returns (BN254.G1Point memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApkCall { + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`getApk(uint8)`](getApkCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApkReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApkCall) -> Self { + (value.quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApkCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (BN254::G1Point,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApkReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApkReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getApkCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getApkReturn; + type ReturnTuple<'a> = (BN254::G1Point,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getApk(uint8)"; + const SELECTOR: [u8; 4] = [95u8, 97u8, 168u8, 132u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getApkHashAtBlockNumberAndIndex(uint8,uint32,uint256)` and selector `0x68bccaac`. + ```solidity + function getApkHashAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) external view returns (bytes24); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApkHashAtBlockNumberAndIndexCall { + pub quorumNumber: u8, + pub blockNumber: u32, + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getApkHashAtBlockNumberAndIndex(uint8,uint32,uint256)`](getApkHashAtBlockNumberAndIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApkHashAtBlockNumberAndIndexReturn { + pub _0: alloy::sol_types::private::FixedBytes<24>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u8, + u32, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApkHashAtBlockNumberAndIndexCall) -> Self { + (value.quorumNumber, value.blockNumber, value.index) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApkHashAtBlockNumberAndIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + blockNumber: tuple.1, + index: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<24>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<24>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApkHashAtBlockNumberAndIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApkHashAtBlockNumberAndIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getApkHashAtBlockNumberAndIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getApkHashAtBlockNumberAndIndexReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<24>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getApkHashAtBlockNumberAndIndex(uint8,uint32,uint256)"; + const SELECTOR: [u8; 4] = [104u8, 188u8, 202u8, 172u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.blockNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getApkIndicesAtBlockNumber(bytes,uint256)` and selector `0xd5254a8c`. + ```solidity + function getApkIndicesAtBlockNumber(bytes memory quorumNumbers, uint256 blockNumber) external view returns (uint32[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApkIndicesAtBlockNumberCall { + pub quorumNumbers: alloy::sol_types::private::Bytes, + pub blockNumber: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getApkIndicesAtBlockNumber(bytes,uint256)`](getApkIndicesAtBlockNumberCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApkIndicesAtBlockNumberReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApkIndicesAtBlockNumberCall) -> Self { + (value.quorumNumbers, value.blockNumber) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApkIndicesAtBlockNumberCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumbers: tuple.0, + blockNumber: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApkIndicesAtBlockNumberReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApkIndicesAtBlockNumberReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getApkIndicesAtBlockNumberCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getApkIndicesAtBlockNumberReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getApkIndicesAtBlockNumber(bytes,uint256)"; + const SELECTOR: [u8; 4] = [213u8, 37u8, 74u8, 140u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.quorumNumbers, + ), + as alloy_sol_types::SolType>::tokenize( + &self.blockNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getApkUpdateAtIndex(uint8,uint256)` and selector `0x605747d5`. + ```solidity + function getApkUpdateAtIndex(uint8 quorumNumber, uint256 index) external view returns (IBLSApkRegistry.ApkUpdate memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApkUpdateAtIndexCall { + pub quorumNumber: u8, + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getApkUpdateAtIndex(uint8,uint256)`](getApkUpdateAtIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApkUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (u8, alloy::sol_types::private::primitives::aliases::U256); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApkUpdateAtIndexCall) -> Self { + (value.quorumNumber, value.index) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApkUpdateAtIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + index: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IBLSApkRegistry::ApkUpdate,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApkUpdateAtIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApkUpdateAtIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getApkUpdateAtIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getApkUpdateAtIndexReturn; + type ReturnTuple<'a> = (IBLSApkRegistry::ApkUpdate,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getApkUpdateAtIndex(uint8,uint256)"; + const SELECTOR: [u8; 4] = [96u8, 87u8, 71u8, 213u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorFromPubkeyHash(bytes32)` and selector `0x47b314e8`. + ```solidity + function getOperatorFromPubkeyHash(bytes32 pubkeyHash) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorFromPubkeyHashCall { + pub pubkeyHash: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`getOperatorFromPubkeyHash(bytes32)`](getOperatorFromPubkeyHashCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorFromPubkeyHashReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorFromPubkeyHashCall) -> Self { + (value.pubkeyHash,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorFromPubkeyHashCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + pubkeyHash: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorFromPubkeyHashReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorFromPubkeyHashReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorFromPubkeyHashCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorFromPubkeyHashReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorFromPubkeyHash(bytes32)"; + const SELECTOR: [u8; 4] = [71u8, 179u8, 20u8, 232u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.pubkeyHash), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorId(address)` and selector `0x13542a4e`. + ```solidity + function getOperatorId(address operator) external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorIdCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getOperatorId(address)`](getOperatorIdCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorIdReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorIdCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorIdCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorIdReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorIdReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorIdCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorIdReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorId(address)"; + const SELECTOR: [u8; 4] = [19u8, 84u8, 42u8, 78u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getRegisteredPubkey(address)` and selector `0x7ff81a87`. + ```solidity + function getRegisteredPubkey(address operator) external view returns (BN254.G1Point memory, bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getRegisteredPubkeyCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getRegisteredPubkey(address)`](getRegisteredPubkeyCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getRegisteredPubkeyReturn { + pub _0: ::RustType, + pub _1: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getRegisteredPubkeyCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getRegisteredPubkeyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (BN254::G1Point, alloy::sol_types::sol_data::FixedBytes<32>); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getRegisteredPubkeyReturn) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getRegisteredPubkeyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getRegisteredPubkeyCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getRegisteredPubkeyReturn; + type ReturnTuple<'a> = (BN254::G1Point, alloy::sol_types::sol_data::FixedBytes<32>); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getRegisteredPubkey(address)"; + const SELECTOR: [u8; 4] = [127u8, 248u8, 26u8, 135u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `initializeQuorum(uint8)` and selector `0x26d941f2`. + ```solidity + function initializeQuorum(uint8 quorumNumber) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeQuorumCall { + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`initializeQuorum(uint8)`](initializeQuorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeQuorumReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeQuorumCall) -> Self { + (value.quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeQuorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeQuorumReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeQuorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for initializeQuorumCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = initializeQuorumReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "initializeQuorum(uint8)"; + const SELECTOR: [u8; 4] = [38u8, 217u8, 65u8, 242u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `operatorToPubkey(address)` and selector `0x00a1f4cb`. + ```solidity + function operatorToPubkey(address) external view returns (uint256 X, uint256 Y); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorToPubkeyCall { + pub _0: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`operatorToPubkey(address)`](operatorToPubkeyCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorToPubkeyReturn { + pub X: alloy::sol_types::private::primitives::aliases::U256, + pub Y: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorToPubkeyCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorToPubkeyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorToPubkeyReturn) -> Self { + (value.X, value.Y) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorToPubkeyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + X: tuple.0, + Y: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for operatorToPubkeyCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = operatorToPubkeyReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "operatorToPubkey(address)"; + const SELECTOR: [u8; 4] = [0u8, 161u8, 244u8, 203u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `operatorToPubkeyHash(address)` and selector `0xde29fac0`. + ```solidity + function operatorToPubkeyHash(address) external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorToPubkeyHashCall { + pub _0: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`operatorToPubkeyHash(address)`](operatorToPubkeyHashCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorToPubkeyHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorToPubkeyHashCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorToPubkeyHashCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorToPubkeyHashReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorToPubkeyHashReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for operatorToPubkeyHashCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = operatorToPubkeyHashReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "operatorToPubkeyHash(address)"; + const SELECTOR: [u8; 4] = [222u8, 41u8, 250u8, 192u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pubkeyHashToOperator(bytes32)` and selector `0xe8bb9ae6`. + ```solidity + function pubkeyHashToOperator(bytes32) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pubkeyHashToOperatorCall { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`pubkeyHashToOperator(bytes32)`](pubkeyHashToOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pubkeyHashToOperatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pubkeyHashToOperatorCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pubkeyHashToOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pubkeyHashToOperatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pubkeyHashToOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pubkeyHashToOperatorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pubkeyHashToOperatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pubkeyHashToOperator(bytes32)"; + const SELECTOR: [u8; 4] = [232u8, 187u8, 154u8, 230u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._0), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registerBLSPublicKey(address,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(uint256,uint256))` and selector `0xbf79ce58`. + ```solidity + function registerBLSPublicKey(address operator, IBLSApkRegistry.PubkeyRegistrationParams memory params, BN254.G1Point memory pubkeyRegistrationMessageHash) external returns (bytes32 operatorId); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerBLSPublicKeyCall { + pub operator: alloy::sol_types::private::Address, + pub params: + ::RustType, + pub pubkeyRegistrationMessageHash: ::RustType, + } + ///Container type for the return parameters of the [`registerBLSPublicKey(address,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(uint256,uint256))`](registerBLSPublicKeyCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerBLSPublicKeyReturn { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + IBLSApkRegistry::PubkeyRegistrationParams, + BN254::G1Point, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerBLSPublicKeyCall) -> Self { + ( + value.operator, + value.params, + value.pubkeyRegistrationMessageHash, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerBLSPublicKeyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + params: tuple.1, + pubkeyRegistrationMessageHash: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerBLSPublicKeyReturn) -> Self { + (value.operatorId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerBLSPublicKeyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registerBLSPublicKeyCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + IBLSApkRegistry::PubkeyRegistrationParams, + BN254::G1Point, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registerBLSPublicKeyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registerBLSPublicKey(address,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(uint256,uint256))"; + const SELECTOR: [u8; 4] = [191u8, 121u8, 206u8, 88u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.params, + ), + ::tokenize( + &self.pubkeyRegistrationMessageHash, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registerOperator(address,bytes)` and selector `0x3fb27952`. + ```solidity + function registerOperator(address operator, bytes memory quorumNumbers) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorCall { + pub operator: alloy::sol_types::private::Address, + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`registerOperator(address,bytes)`](registerOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorCall) -> Self { + (value.operator, value.quorumNumbers) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + quorumNumbers: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registerOperatorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registerOperatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registerOperator(address,bytes)"; + const SELECTOR: [u8; 4] = [63u8, 178u8, 121u8, 82u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registryCoordinator()` and selector `0x6d14a987`. + ```solidity + function registryCoordinator() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registryCoordinatorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registryCoordinatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registryCoordinator()"; + const SELECTOR: [u8; 4] = [109u8, 20u8, 169u8, 135u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`BLSApkRegistryStorage`](self) function calls. + pub enum BLSApkRegistryStorageCalls { + apkHistory(apkHistoryCall), + currentApk(currentApkCall), + deregisterOperator(deregisterOperatorCall), + getApk(getApkCall), + getApkHashAtBlockNumberAndIndex(getApkHashAtBlockNumberAndIndexCall), + getApkIndicesAtBlockNumber(getApkIndicesAtBlockNumberCall), + getApkUpdateAtIndex(getApkUpdateAtIndexCall), + getOperatorFromPubkeyHash(getOperatorFromPubkeyHashCall), + getOperatorId(getOperatorIdCall), + getRegisteredPubkey(getRegisteredPubkeyCall), + initializeQuorum(initializeQuorumCall), + operatorToPubkey(operatorToPubkeyCall), + operatorToPubkeyHash(operatorToPubkeyHashCall), + pubkeyHashToOperator(pubkeyHashToOperatorCall), + registerBLSPublicKey(registerBLSPublicKeyCall), + registerOperator(registerOperatorCall), + registryCoordinator(registryCoordinatorCall), + } + #[automatically_derived] + impl BLSApkRegistryStorageCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [0u8, 161u8, 244u8, 203u8], + [19u8, 84u8, 42u8, 78u8], + [38u8, 217u8, 65u8, 242u8], + [63u8, 178u8, 121u8, 82u8], + [71u8, 179u8, 20u8, 232u8], + [95u8, 97u8, 168u8, 132u8], + [96u8, 87u8, 71u8, 213u8], + [104u8, 188u8, 202u8, 172u8], + [109u8, 20u8, 169u8, 135u8], + [121u8, 22u8, 206u8, 166u8], + [127u8, 248u8, 26u8, 135u8], + [163u8, 219u8, 128u8, 226u8], + [191u8, 121u8, 206u8, 88u8], + [213u8, 37u8, 74u8, 140u8], + [222u8, 41u8, 250u8, 192u8], + [232u8, 187u8, 154u8, 230u8], + [244u8, 226u8, 79u8, 229u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for BLSApkRegistryStorageCalls { + const NAME: &'static str = "BLSApkRegistryStorageCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 17usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::apkHistory(_) => ::SELECTOR, + Self::currentApk(_) => ::SELECTOR, + Self::deregisterOperator(_) => { + ::SELECTOR + } + Self::getApk(_) => ::SELECTOR, + Self::getApkHashAtBlockNumberAndIndex(_) => { + ::SELECTOR + } + Self::getApkIndicesAtBlockNumber(_) => { + ::SELECTOR + } + Self::getApkUpdateAtIndex(_) => { + ::SELECTOR + } + Self::getOperatorFromPubkeyHash(_) => { + ::SELECTOR + } + Self::getOperatorId(_) => ::SELECTOR, + Self::getRegisteredPubkey(_) => { + ::SELECTOR + } + Self::initializeQuorum(_) => { + ::SELECTOR + } + Self::operatorToPubkey(_) => { + ::SELECTOR + } + Self::operatorToPubkeyHash(_) => { + ::SELECTOR + } + Self::pubkeyHashToOperator(_) => { + ::SELECTOR + } + Self::registerBLSPublicKey(_) => { + ::SELECTOR + } + Self::registerOperator(_) => { + ::SELECTOR + } + Self::registryCoordinator(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn operatorToPubkey( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryStorageCalls::operatorToPubkey) + } + operatorToPubkey + }, + { + fn getOperatorId( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryStorageCalls::getOperatorId) + } + getOperatorId + }, + { + fn initializeQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryStorageCalls::initializeQuorum) + } + initializeQuorum + }, + { + fn registerOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryStorageCalls::registerOperator) + } + registerOperator + }, + { + fn getOperatorFromPubkeyHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryStorageCalls::getOperatorFromPubkeyHash) + } + getOperatorFromPubkeyHash + }, + { + fn getApk( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(BLSApkRegistryStorageCalls::getApk) + } + getApk + }, + { + fn getApkUpdateAtIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryStorageCalls::getApkUpdateAtIndex) + } + getApkUpdateAtIndex + }, + { + fn getApkHashAtBlockNumberAndIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + BLSApkRegistryStorageCalls::getApkHashAtBlockNumberAndIndex, + ) + } + getApkHashAtBlockNumberAndIndex + }, + { + fn registryCoordinator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryStorageCalls::registryCoordinator) + } + registryCoordinator + }, + { + fn apkHistory( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(BLSApkRegistryStorageCalls::apkHistory) + } + apkHistory + }, + { + fn getRegisteredPubkey( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryStorageCalls::getRegisteredPubkey) + } + getRegisteredPubkey + }, + { + fn currentApk( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(BLSApkRegistryStorageCalls::currentApk) + } + currentApk + }, + { + fn registerBLSPublicKey( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryStorageCalls::registerBLSPublicKey) + } + registerBLSPublicKey + }, + { + fn getApkIndicesAtBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(BLSApkRegistryStorageCalls::getApkIndicesAtBlockNumber) + } + getApkIndicesAtBlockNumber + }, + { + fn operatorToPubkeyHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryStorageCalls::operatorToPubkeyHash) + } + operatorToPubkeyHash + }, + { + fn pubkeyHashToOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryStorageCalls::pubkeyHashToOperator) + } + pubkeyHashToOperator + }, + { + fn deregisterOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSApkRegistryStorageCalls::deregisterOperator) + } + deregisterOperator + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::apkHistory(inner) => { + ::abi_encoded_size(inner) + } + Self::currentApk(inner) => { + ::abi_encoded_size(inner) + } + Self::deregisterOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getApk(inner) => { + ::abi_encoded_size(inner) + } + Self::getApkHashAtBlockNumberAndIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getApkIndicesAtBlockNumber(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getApkUpdateAtIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorFromPubkeyHash(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorId(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getRegisteredPubkey(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::initializeQuorum(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::operatorToPubkey(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::operatorToPubkeyHash(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::pubkeyHashToOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registerBLSPublicKey(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registerOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registryCoordinator(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::apkHistory(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::currentApk(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::deregisterOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getApk(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getApkHashAtBlockNumberAndIndex(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getApkIndicesAtBlockNumber(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getApkUpdateAtIndex(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperatorFromPubkeyHash(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperatorId(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getRegisteredPubkey(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::initializeQuorum(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::operatorToPubkey(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::operatorToPubkeyHash(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::pubkeyHashToOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registerBLSPublicKey(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registerOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registryCoordinator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`BLSApkRegistryStorage`](self) events. + pub enum BLSApkRegistryStorageEvents { + Initialized(Initialized), + NewPubkeyRegistration(NewPubkeyRegistration), + OperatorAddedToQuorums(OperatorAddedToQuorums), + OperatorRemovedFromQuorums(OperatorRemovedFromQuorums), + } + #[automatically_derived] + impl BLSApkRegistryStorageEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 115u8, 162u8, 183u8, 251u8, 132u8, 71u8, 36u8, 185u8, 113u8, 128u8, 42u8, 233u8, + 177u8, 93u8, 176u8, 148u8, 212u8, 183u8, 25u8, 45u8, 249u8, 215u8, 53u8, 14u8, + 20u8, 235u8, 70u8, 107u8, 155u8, 34u8, 235u8, 78u8, + ], + [ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, 56u8, + 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, 96u8, + 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ], + [ + 227u8, 251u8, 102u8, 19u8, 175u8, 46u8, 137u8, 48u8, 207u8, 133u8, 212u8, 127u8, + 207u8, 109u8, 177u8, 1u8, 146u8, 34u8, 74u8, 100u8, 198u8, 203u8, 232u8, 2u8, 62u8, + 14u8, 238u8, 27u8, 163u8, 130u8, 128u8, 65u8, + ], + [ + 248u8, 67u8, 236u8, 213u8, 58u8, 86u8, 54u8, 117u8, 230u8, 33u8, 7u8, 190u8, 20u8, + 148u8, 253u8, 222u8, 74u8, 61u8, 73u8, 174u8, 237u8, 175u8, 141u8, 136u8, 198u8, + 22u8, 216u8, 83u8, 70u8, 227u8, 80u8, 14u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for BLSApkRegistryStorageEvents { + const NAME: &'static str = "BLSApkRegistryStorageEvents"; + const COUNT: usize = 4usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::Initialized) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::NewPubkeyRegistration) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorAddedToQuorums) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorRemovedFromQuorums) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for BLSApkRegistryStorageEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::NewPubkeyRegistration(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorAddedToQuorums(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorRemovedFromQuorums(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::NewPubkeyRegistration(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorAddedToQuorums(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorRemovedFromQuorums(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`BLSApkRegistryStorage`](self) contract instance. + + See the [wrapper's documentation](`BLSApkRegistryStorageInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> BLSApkRegistryStorageInstance { + BLSApkRegistryStorageInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + BLSApkRegistryStorageInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + BLSApkRegistryStorageInstance::::deploy_builder(provider) + } + /**A [`BLSApkRegistryStorage`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`BLSApkRegistryStorage`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct BLSApkRegistryStorageInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for BLSApkRegistryStorageInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("BLSApkRegistryStorageInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BLSApkRegistryStorageInstance + { + /**Creates a new wrapper around an on-chain [`BLSApkRegistryStorage`](self) contract instance. + + See the [wrapper's documentation](`BLSApkRegistryStorageInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl BLSApkRegistryStorageInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> BLSApkRegistryStorageInstance { + BLSApkRegistryStorageInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BLSApkRegistryStorageInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`apkHistory`] function. + pub fn apkHistory( + &self, + _0: u8, + _1: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&apkHistoryCall { _0, _1 }) + } + ///Creates a new call builder for the [`currentApk`] function. + pub fn currentApk( + &self, + _0: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(¤tApkCall { _0 }) + } + ///Creates a new call builder for the [`deregisterOperator`] function. + pub fn deregisterOperator( + &self, + operator: alloy::sol_types::private::Address, + quorumNumbers: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&deregisterOperatorCall { + operator, + quorumNumbers, + }) + } + ///Creates a new call builder for the [`getApk`] function. + pub fn getApk( + &self, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getApkCall { quorumNumber }) + } + ///Creates a new call builder for the [`getApkHashAtBlockNumberAndIndex`] function. + pub fn getApkHashAtBlockNumberAndIndex( + &self, + quorumNumber: u8, + blockNumber: u32, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getApkHashAtBlockNumberAndIndexCall { + quorumNumber, + blockNumber, + index, + }) + } + ///Creates a new call builder for the [`getApkIndicesAtBlockNumber`] function. + pub fn getApkIndicesAtBlockNumber( + &self, + quorumNumbers: alloy::sol_types::private::Bytes, + blockNumber: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getApkIndicesAtBlockNumberCall { + quorumNumbers, + blockNumber, + }) + } + ///Creates a new call builder for the [`getApkUpdateAtIndex`] function. + pub fn getApkUpdateAtIndex( + &self, + quorumNumber: u8, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getApkUpdateAtIndexCall { + quorumNumber, + index, + }) + } + ///Creates a new call builder for the [`getOperatorFromPubkeyHash`] function. + pub fn getOperatorFromPubkeyHash( + &self, + pubkeyHash: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorFromPubkeyHashCall { pubkeyHash }) + } + ///Creates a new call builder for the [`getOperatorId`] function. + pub fn getOperatorId( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorIdCall { operator }) + } + ///Creates a new call builder for the [`getRegisteredPubkey`] function. + pub fn getRegisteredPubkey( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getRegisteredPubkeyCall { operator }) + } + ///Creates a new call builder for the [`initializeQuorum`] function. + pub fn initializeQuorum( + &self, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initializeQuorumCall { quorumNumber }) + } + ///Creates a new call builder for the [`operatorToPubkey`] function. + pub fn operatorToPubkey( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&operatorToPubkeyCall { _0 }) + } + ///Creates a new call builder for the [`operatorToPubkeyHash`] function. + pub fn operatorToPubkeyHash( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&operatorToPubkeyHashCall { _0 }) + } + ///Creates a new call builder for the [`pubkeyHashToOperator`] function. + pub fn pubkeyHashToOperator( + &self, + _0: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&pubkeyHashToOperatorCall { _0 }) + } + ///Creates a new call builder for the [`registerBLSPublicKey`] function. + pub fn registerBLSPublicKey( + &self, + operator: alloy::sol_types::private::Address, + params: ::RustType, + pubkeyRegistrationMessageHash: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterBLSPublicKeyCall { + operator, + params, + pubkeyRegistrationMessageHash, + }) + } + ///Creates a new call builder for the [`registerOperator`] function. + pub fn registerOperator( + &self, + operator: alloy::sol_types::private::Address, + quorumNumbers: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterOperatorCall { + operator, + quorumNumbers, + }) + } + ///Creates a new call builder for the [`registryCoordinator`] function. + pub fn registryCoordinator( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®istryCoordinatorCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BLSApkRegistryStorageInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Initialized`] event. + pub fn Initialized_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`NewPubkeyRegistration`] event. + pub fn NewPubkeyRegistration_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorAddedToQuorums`] event. + pub fn OperatorAddedToQuorums_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorRemovedFromQuorums`] event. + pub fn OperatorRemovedFromQuorums_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/blssignaturechecker.rs b/crates/utils/src/blssignaturechecker.rs new file mode 100644 index 00000000..70181f97 --- /dev/null +++ b/crates/utils/src/blssignaturechecker.rs @@ -0,0 +1,3304 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library BN254 { + struct G1Point { uint256 X; uint256 Y; } + struct G2Point { uint256[2] X; uint256[2] Y; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod BN254 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct G1Point { uint256 X; uint256 Y; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct G1Point { + pub X: alloy::sol_types::private::primitives::aliases::U256, + pub Y: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: G1Point) -> Self { + (value.X, value.Y) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for G1Point { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + X: tuple.0, + Y: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for G1Point { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for G1Point { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.X, + ), + as alloy_sol_types::SolType>::tokenize( + &self.Y, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for G1Point { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for G1Point { + const NAME: &'static str = "G1Point"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 X,uint256 Y)") + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word(&self.X) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.Y) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for G1Point { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.X) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.Y) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.X, out); + as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.Y, out); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct G2Point { uint256[2] X; uint256[2] Y; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct G2Point { + pub X: [alloy::sol_types::private::primitives::aliases::U256; 2usize], + pub Y: [alloy::sol_types::private::primitives::aliases::U256; 2usize], + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedArray, 2usize>, + alloy::sol_types::sol_data::FixedArray, 2usize>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + [alloy::sol_types::private::primitives::aliases::U256; 2usize], + [alloy::sol_types::private::primitives::aliases::U256; 2usize], + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: G2Point) -> Self { + (value.X, value.Y) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for G2Point { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + X: tuple.0, + Y: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for G2Point { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for G2Point { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + , + 2usize, + > as alloy_sol_types::SolType>::tokenize(&self.X), + , + 2usize, + > as alloy_sol_types::SolType>::tokenize(&self.Y), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for G2Point { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for G2Point { + const NAME: &'static str = "G2Point"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed("G2Point(uint256[2] X,uint256[2] Y)") + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + , + 2usize, + > as alloy_sol_types::SolType>::eip712_data_word(&self.X) + .0, + , + 2usize, + > as alloy_sol_types::SolType>::eip712_data_word(&self.Y) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for G2Point { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + , + 2usize, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.X + ) + + , + 2usize, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.Y + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + , + 2usize, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.X, out + ); + , + 2usize, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.Y, out + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance. + + See the [wrapper's documentation](`BN254Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> BN254Instance { + BN254Instance::::new(address, provider) + } + /**A [`BN254`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`BN254`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct BN254Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for BN254Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("BN254Instance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BN254Instance + { + /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance. + + See the [wrapper's documentation](`BN254Instance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl BN254Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> BN254Instance { + BN254Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BN254Instance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BN254Instance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library IBLSSignatureChecker { + struct NonSignerStakesAndSignature { uint32[] nonSignerQuorumBitmapIndices; BN254.G1Point[] nonSignerPubkeys; BN254.G1Point[] quorumApks; BN254.G2Point apkG2; BN254.G1Point sigma; uint32[] quorumApkIndices; uint32[] totalStakeIndices; uint32[][] nonSignerStakeIndices; } + struct QuorumStakeTotals { uint96[] signedStakeForQuorum; uint96[] totalStakeForQuorum; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IBLSSignatureChecker { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct NonSignerStakesAndSignature { uint32[] nonSignerQuorumBitmapIndices; BN254.G1Point[] nonSignerPubkeys; BN254.G1Point[] quorumApks; BN254.G2Point apkG2; BN254.G1Point sigma; uint32[] quorumApkIndices; uint32[] totalStakeIndices; uint32[][] nonSignerStakeIndices; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct NonSignerStakesAndSignature { + pub nonSignerQuorumBitmapIndices: alloy::sol_types::private::Vec, + pub nonSignerPubkeys: + alloy::sol_types::private::Vec<::RustType>, + pub quorumApks: + alloy::sol_types::private::Vec<::RustType>, + pub apkG2: ::RustType, + pub sigma: ::RustType, + pub quorumApkIndices: alloy::sol_types::private::Vec, + pub totalStakeIndices: alloy::sol_types::private::Vec, + pub nonSignerStakeIndices: + alloy::sol_types::private::Vec>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array, + BN254::G2Point, + BN254::G1Point, + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array>, + >, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec<::RustType>, + alloy::sol_types::private::Vec<::RustType>, + ::RustType, + ::RustType, + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: NonSignerStakesAndSignature) -> Self { + ( + value.nonSignerQuorumBitmapIndices, + value.nonSignerPubkeys, + value.quorumApks, + value.apkG2, + value.sigma, + value.quorumApkIndices, + value.totalStakeIndices, + value.nonSignerStakeIndices, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for NonSignerStakesAndSignature { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + nonSignerQuorumBitmapIndices: tuple.0, + nonSignerPubkeys: tuple.1, + quorumApks: tuple.2, + apkG2: tuple.3, + sigma: tuple.4, + quorumApkIndices: tuple.5, + totalStakeIndices: tuple.6, + nonSignerStakeIndices: tuple.7, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for NonSignerStakesAndSignature { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for NonSignerStakesAndSignature { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + , + > as alloy_sol_types::SolType>::tokenize( + &self.nonSignerQuorumBitmapIndices, + ), + as alloy_sol_types::SolType>::tokenize(&self.nonSignerPubkeys), + as alloy_sol_types::SolType>::tokenize(&self.quorumApks), + ::tokenize(&self.apkG2), + ::tokenize(&self.sigma), + , + > as alloy_sol_types::SolType>::tokenize(&self.quorumApkIndices), + , + > as alloy_sol_types::SolType>::tokenize(&self.totalStakeIndices), + , + >, + > as alloy_sol_types::SolType>::tokenize(&self.nonSignerStakeIndices), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for NonSignerStakesAndSignature { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for NonSignerStakesAndSignature { + const NAME: &'static str = "NonSignerStakesAndSignature"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "NonSignerStakesAndSignature(uint32[] nonSignerQuorumBitmapIndices,BN254.G1Point[] nonSignerPubkeys,BN254.G1Point[] quorumApks,BN254.G2Point apkG2,BN254.G1Point sigma,uint32[] quorumApkIndices,uint32[] totalStakeIndices,uint32[][] nonSignerStakeIndices)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + let mut components = alloy_sol_types::private::Vec::with_capacity(4); + components.push(::eip712_root_type()); + components + .extend(::eip712_components()); + components.push(::eip712_root_type()); + components + .extend(::eip712_components()); + components.push(::eip712_root_type()); + components + .extend(::eip712_components()); + components.push(::eip712_root_type()); + components + .extend(::eip712_components()); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + , + > as alloy_sol_types::SolType>::eip712_data_word( + &self.nonSignerQuorumBitmapIndices, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.nonSignerPubkeys, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.quorumApks) + .0, + ::eip712_data_word( + &self.apkG2, + ) + .0, + ::eip712_data_word( + &self.sigma, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word( + &self.quorumApkIndices, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word( + &self.totalStakeIndices, + ) + .0, + , + >, + > as alloy_sol_types::SolType>::eip712_data_word( + &self.nonSignerStakeIndices, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for NonSignerStakesAndSignature { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.nonSignerQuorumBitmapIndices, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.nonSignerPubkeys, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.quorumApks, + ) + + ::topic_preimage_length( + &rust.apkG2, + ) + + ::topic_preimage_length( + &rust.sigma, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.quorumApkIndices, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.totalStakeIndices, + ) + + , + >, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.nonSignerStakeIndices, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonSignerQuorumBitmapIndices, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonSignerPubkeys, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.quorumApks, + out, + ); + ::encode_topic_preimage( + &rust.apkG2, + out, + ); + ::encode_topic_preimage( + &rust.sigma, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.quorumApkIndices, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.totalStakeIndices, + out, + ); + >, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonSignerStakeIndices, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct QuorumStakeTotals { uint96[] signedStakeForQuorum; uint96[] totalStakeForQuorum; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct QuorumStakeTotals { + pub signedStakeForQuorum: + alloy::sol_types::private::Vec, + pub totalStakeForQuorum: + alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: QuorumStakeTotals) -> Self { + (value.signedStakeForQuorum, value.totalStakeForQuorum) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for QuorumStakeTotals { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + signedStakeForQuorum: tuple.0, + totalStakeForQuorum: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for QuorumStakeTotals { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for QuorumStakeTotals { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + , + > as alloy_sol_types::SolType>::tokenize(&self.signedStakeForQuorum), + , + > as alloy_sol_types::SolType>::tokenize(&self.totalStakeForQuorum), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for QuorumStakeTotals { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for QuorumStakeTotals { + const NAME: &'static str = "QuorumStakeTotals"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "QuorumStakeTotals(uint96[] signedStakeForQuorum,uint96[] totalStakeForQuorum)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + , + > as alloy_sol_types::SolType>::eip712_data_word( + &self.signedStakeForQuorum, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word( + &self.totalStakeForQuorum, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for QuorumStakeTotals { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.signedStakeForQuorum, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.totalStakeForQuorum, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.signedStakeForQuorum, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.totalStakeForQuorum, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IBLSSignatureChecker`](self) contract instance. + + See the [wrapper's documentation](`IBLSSignatureCheckerInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IBLSSignatureCheckerInstance { + IBLSSignatureCheckerInstance::::new(address, provider) + } + /**A [`IBLSSignatureChecker`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IBLSSignatureChecker`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IBLSSignatureCheckerInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IBLSSignatureCheckerInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IBLSSignatureCheckerInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IBLSSignatureCheckerInstance + { + /**Creates a new wrapper around an on-chain [`IBLSSignatureChecker`](self) contract instance. + + See the [wrapper's documentation](`IBLSSignatureCheckerInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IBLSSignatureCheckerInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IBLSSignatureCheckerInstance { + IBLSSignatureCheckerInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IBLSSignatureCheckerInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IBLSSignatureCheckerInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library BN254 { + struct G1Point { + uint256 X; + uint256 Y; + } + struct G2Point { + uint256[2] X; + uint256[2] Y; + } +} + +library IBLSSignatureChecker { + struct NonSignerStakesAndSignature { + uint32[] nonSignerQuorumBitmapIndices; + BN254.G1Point[] nonSignerPubkeys; + BN254.G1Point[] quorumApks; + BN254.G2Point apkG2; + BN254.G1Point sigma; + uint32[] quorumApkIndices; + uint32[] totalStakeIndices; + uint32[][] nonSignerStakeIndices; + } + struct QuorumStakeTotals { + uint96[] signedStakeForQuorum; + uint96[] totalStakeForQuorum; + } +} + +interface BLSSignatureChecker { + event StaleStakesForbiddenUpdate(bool value); + + constructor(address _registryCoordinator); + + function blsApkRegistry() external view returns (address); + function checkSignatures(bytes32 msgHash, bytes memory quorumNumbers, uint32 referenceBlockNumber, IBLSSignatureChecker.NonSignerStakesAndSignature memory params) external view returns (IBLSSignatureChecker.QuorumStakeTotals memory, bytes32); + function delegation() external view returns (address); + function registryCoordinator() external view returns (address); + function setStaleStakesForbidden(bool value) external; + function stakeRegistry() external view returns (address); + function staleStakesForbidden() external view returns (bool); + function trySignatureAndApkVerification(bytes32 msgHash, BN254.G1Point memory apk, BN254.G2Point memory apkG2, BN254.G1Point memory sigma) external view returns (bool pairingSuccessful, bool siganatureIsValid); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_registryCoordinator", + "type": "address", + "internalType": "contract IRegistryCoordinator" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "blsApkRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IBLSApkRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "checkSignatures", + "inputs": [ + { + "name": "msgHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "referenceBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "params", + "type": "tuple", + "internalType": "struct IBLSSignatureChecker.NonSignerStakesAndSignature", + "components": [ + { + "name": "nonSignerQuorumBitmapIndices", + "type": "uint32[]", + "internalType": "uint32[]" + }, + { + "name": "nonSignerPubkeys", + "type": "tuple[]", + "internalType": "struct BN254.G1Point[]", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "quorumApks", + "type": "tuple[]", + "internalType": "struct BN254.G1Point[]", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "apkG2", + "type": "tuple", + "internalType": "struct BN254.G2Point", + "components": [ + { + "name": "X", + "type": "uint256[2]", + "internalType": "uint256[2]" + }, + { + "name": "Y", + "type": "uint256[2]", + "internalType": "uint256[2]" + } + ] + }, + { + "name": "sigma", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "quorumApkIndices", + "type": "uint32[]", + "internalType": "uint32[]" + }, + { + "name": "totalStakeIndices", + "type": "uint32[]", + "internalType": "uint32[]" + }, + { + "name": "nonSignerStakeIndices", + "type": "uint32[][]", + "internalType": "uint32[][]" + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IBLSSignatureChecker.QuorumStakeTotals", + "components": [ + { + "name": "signedStakeForQuorum", + "type": "uint96[]", + "internalType": "uint96[]" + }, + { + "name": "totalStakeForQuorum", + "type": "uint96[]", + "internalType": "uint96[]" + } + ] + }, + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "delegation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IDelegationManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registryCoordinator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IRegistryCoordinator" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setStaleStakesForbidden", + "inputs": [ + { + "name": "value", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "stakeRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStakeRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "staleStakesForbidden", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "trySignatureAndApkVerification", + "inputs": [ + { + "name": "msgHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "apk", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "apkG2", + "type": "tuple", + "internalType": "struct BN254.G2Point", + "components": [ + { + "name": "X", + "type": "uint256[2]", + "internalType": "uint256[2]" + }, + { + "name": "Y", + "type": "uint256[2]", + "internalType": "uint256[2]" + } + ] + }, + { + "name": "sigma", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ], + "outputs": [ + { + "name": "pairingSuccessful", + "type": "bool", + "internalType": "bool" + }, + { + "name": "siganatureIsValid", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "StaleStakesForbiddenUpdate", + "inputs": [ + { + "name": "value", + "type": "bool", + "indexed": false, + "internalType": "bool" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod BLSSignatureChecker { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6101006040523480156200001257600080fd5b506040516200292c3803806200292c8339810160408190526200003591620001d0565b6001600160a01b038116608081905260408051636830483560e01b815290516368304835916004808201926020929091908290030181865afa15801562000080573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000a69190620001d0565b6001600160a01b031660a0816001600160a01b031681525050806001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001249190620001d0565b6001600160a01b031660c0816001600160a01b03168152505060a0516001600160a01b031663df5cf7236040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200017e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a49190620001d0565b6001600160a01b031660e05250620001f7565b6001600160a01b0381168114620001cd57600080fd5b50565b600060208284031215620001e357600080fd5b8151620001f081620001b7565b9392505050565b60805160a05160c05160e0516126c462000268600039600081816101a10152610b7601526000818160d60152610d5801526000818161011501528181610f2e01526110f001526000818161013c0152818161034f0152818161083f015281816109d70152610c1301526126c46000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636d14a9871161005b5780636d14a987146101375780636efb46361461015e578063b98d09081461017f578063df5cf7231461019c57600080fd5b8063171f1d5b1461008d578063416c7e5e146100bc5780635df45946146100d15780636830483514610110575b600080fd5b6100a061009b366004611fbe565b6101c3565b6040805192151583529015156020830152015b60405180910390f35b6100cf6100ca36600461200f565b61034d565b005b6100f87f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100b3565b6100f87f000000000000000000000000000000000000000000000000000000000000000081565b6100f87f000000000000000000000000000000000000000000000000000000000000000081565b61017161016c3660046122e7565b61048c565b6040516100b39291906123da565b60005461018c9060ff1681565b60405190151581526020016100b3565b6100f87f000000000000000000000000000000000000000000000000000000000000000081565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018787600001518860200151886000015160006002811061020b5761020b612423565b60200201518951600160200201518a6020015160006002811061023057610230612423565b60200201518b6020015160016002811061024c5761024c612423565b602090810291909101518c518d8301516040516102a99a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c6102cc9190612439565b905061033f6102e56102de88846113a5565b869061143c565b6102ed6114d0565b61033561032685610320604080518082018252600080825260209182015281518083019092526001825260029082015290565b906113a5565b61032f8c611590565b9061143c565b886201d4c0611620565b909890975095505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103cf919061245b565b6001600160a01b0316336001600160a01b0316146104805760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a4015b60405180910390fd5b61048981611844565b50565b60408051808201909152606080825260208201526000846105035760405162461bcd60e51b8152602060048201526037602482015260008051602061266f83398151915260448201527f7265733a20656d7074792071756f72756d20696e7075740000000000000000006064820152608401610477565b6040830151518514801561051b575060a08301515185145b801561052b575060c08301515185145b801561053b575060e08301515185145b6105a55760405162461bcd60e51b8152602060048201526041602482015260008051602061266f83398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610477565b8251516020840151511461061d5760405162461bcd60e51b81526020600482015260446024820181905260008051602061266f833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610477565b4363ffffffff168463ffffffff161061068c5760405162461bcd60e51b815260206004820152603c602482015260008051602061266f83398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610477565b6040805180820182526000808252602080830191909152825180840190935260608084529083015290866001600160401b038111156106cd576106cd611e59565b6040519080825280602002602001820160405280156106f6578160200160208202803683370190505b506020820152866001600160401b0381111561071457610714611e59565b60405190808252806020026020018201604052801561073d578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b0381111561077157610771611e59565b60405190808252806020026020018201604052801561079a578160200160208202803683370190505b5081526020860151516001600160401b038111156107ba576107ba611e59565b6040519080825280602002602001820160405280156107e3578160200160208202803683370190505b50816020018190525060006108b58a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa15801561088c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b09190612484565b61188b565b905060005b876020015151811015610b50576108ff886020015182815181106108e0576108e0612423565b6020026020010151805160009081526020918201519091526040902090565b8360200151828151811061091557610915612423565b602090810291909101015280156109d55760208301516109366001836124bd565b8151811061094657610946612423565b602002602001015160001c8360200151828151811061096757610967612423565b602002602001015160001c116109d5576040805162461bcd60e51b815260206004820152602481019190915260008051602061266f83398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610477565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec635184602001518381518110610a1a57610a1a612423565b60200260200101518b8b600001518581518110610a3957610a39612423565b60200260200101516040518463ffffffff1660e01b8152600401610a769392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab791906124d4565b6001600160c01b031683600001518281518110610ad657610ad6612423565b602002602001018181525050610b3c6102de610b108486600001518581518110610b0257610b02612423565b60200260200101511661191e565b8a602001518481518110610b2657610b26612423565b602002602001015161194990919063ffffffff16565b945080610b48816124fd565b9150506108ba565b5050610b5b83611a2d565b6000805491945060ff9091169081610b74576000610bf6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf69190612518565b905060005b8a811015611274578215610d56578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c428f8f86818110610c5257610c52612423565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa158015610c92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb69190612518565b610cc09190612531565b11610d565760405162461bcd60e51b8152602060048201526066602482015260008051602061266f83398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610477565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8d8d84818110610d9757610d97612423565b9050013560f81c60f81b60f81c8c8c60a001518581518110610dbb57610dbb612423565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015610e17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3b9190612549565b6001600160401b031916610e5e8a6040015183815181106108e0576108e0612423565b67ffffffffffffffff191614610efa5760405162461bcd60e51b8152602060048201526061602482015260008051602061266f83398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610477565b610f2a89604001518281518110610f1357610f13612423565b60200260200101518761143c90919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568d8d84818110610f6d57610f6d612423565b9050013560f81c60f81b60f81c8c8c60c001518581518110610f9157610f91612423565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015610fed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110119190612574565b8560200151828151811061102757611027612423565b6001600160601b0390921660209283029190910182015285015180518290811061105357611053612423565b60200260200101518560000151828151811061107157611071612423565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a602001515181101561125f576110e9866000015182815181106110bb576110bb612423565b60200260200101518f8f868181106110d5576110d5612423565b600192013560f81c9290921c811614919050565b1561124d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8f8f8681811061112f5761112f612423565b9050013560f81c60f81b60f81c8e8960200151858151811061115357611153612423565b60200260200101518f60e00151888151811061117157611171612423565b6020026020010151878151811061118a5761118a612423565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa1580156111ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112129190612574565b875180518590811061122657611226612423565b6020026020010181815161123a919061259d565b6001600160601b03169052506001909101905b80611257816124fd565b915050611095565b5050808061126c906124fd565b915050610bfb565b50505060008061128e8c868a606001518b608001516101c3565b91509150816112ff5760405162461bcd60e51b8152602060048201526043602482015260008051602061266f83398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610477565b806113605760405162461bcd60e51b8152602060048201526039602482015260008051602061266f83398151915260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610477565b5050600087826020015160405160200161137b9291906125c5565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b60408051808201909152600080825260208201526113c1611d7f565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156113f4576113f6565bfe5b50806114345760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610477565b505092915050565b6040805180820190915260008082526020820152611458611d9d565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156113f45750806114345760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610477565b6114d8611dbb565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820190915260008082526020820152600080806115c060008051602061264f83398151915286612439565b90505b6115cc81611ac8565b909350915060008051602061264f833981519152828309831415611606576040805180820190915290815260208101919091529392505050565b60008051602061264f8339815191526001820890506115c3565b604080518082018252868152602080820186905282518084019093528683528201849052600091829190611652611de0565b60005b600281101561181757600061166b82600661260d565b905084826002811061167f5761167f612423565b60200201515183611691836000612531565b600c81106116a1576116a1612423565b60200201528482600281106116b8576116b8612423565b602002015160200151838260016116cf9190612531565b600c81106116df576116df612423565b60200201528382600281106116f6576116f6612423565b6020020151515183611709836002612531565b600c811061171957611719612423565b602002015283826002811061173057611730612423565b6020020151516001602002015183611749836003612531565b600c811061175957611759612423565b602002015283826002811061177057611770612423565b60200201516020015160006002811061178b5761178b612423565b60200201518361179c836004612531565b600c81106117ac576117ac612423565b60200201528382600281106117c3576117c3612423565b6020020151602001516001600281106117de576117de612423565b6020020151836117ef836005612531565b600c81106117ff576117ff612423565b6020020152508061180f816124fd565b915050611655565b50611820611dff565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b6000805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b60008061189784611b4a565b9050808360ff166001901b116119155760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610477565b90505b92915050565b6000805b8215611918576119336001846124bd565b90921691806119418161262c565b915050611922565b60408051808201909152600080825260208201526102008261ffff16106119a55760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610477565b8161ffff16600114156119b9575081611918565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff1610611a2257600161ffff871660ff83161c81161415611a0557611a02848461143c565b93505b611a0f838461143c565b92506201fffe600192831b1691016119d5565b509195945050505050565b60408051808201909152600080825260208201528151158015611a5257506020820151155b15611a70575050604080518082019091526000808252602082015290565b60405180604001604052808360000151815260200160008051602061264f8339815191528460200151611aa39190612439565b611abb9060008051602061264f8339815191526124bd565b905292915050565b919050565b6000808060008051602061264f833981519152600360008051602061264f8339815191528660008051602061264f833981519152888909090890506000611b3e827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260008051602061264f833981519152611cd7565b91959194509092505050565b600061010082511115611bd35760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610477565b8151611be157506000919050565b60008083600081518110611bf757611bf7612423565b0160200151600160f89190911c81901b92505b8451811015611cce57848181518110611c2557611c25612423565b0160200151600160f89190911c1b9150828211611cba5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610477565b91811791611cc7816124fd565b9050611c0a565b50909392505050565b600080611ce2611dff565b611cea611e1d565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280156113f4575082611d745760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610477565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280611dce611e3b565b8152602001611ddb611e3b565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715611e9157611e91611e59565b60405290565b60405161010081016001600160401b0381118282101715611e9157611e91611e59565b604051601f8201601f191681016001600160401b0381118282101715611ee257611ee2611e59565b604052919050565b600060408284031215611efc57600080fd5b611f04611e6f565b9050813581526020820135602082015292915050565b600082601f830112611f2b57600080fd5b604051604081018181106001600160401b0382111715611f4d57611f4d611e59565b8060405250806040840185811115611f6457600080fd5b845b81811015611a22578035835260209283019201611f66565b600060808284031215611f9057600080fd5b611f98611e6f565b9050611fa48383611f1a565b8152611fb38360408401611f1a565b602082015292915050565b6000806000806101208587031215611fd557600080fd5b84359350611fe68660208701611eea565b9250611ff58660608701611f7e565b91506120048660e08701611eea565b905092959194509250565b60006020828403121561202157600080fd5b8135801515811461191557600080fd5b803563ffffffff81168114611ac357600080fd5b60006001600160401b0382111561205e5761205e611e59565b5060051b60200190565b600082601f83011261207957600080fd5b8135602061208e61208983612045565b611eba565b82815260059290921b840181019181810190868411156120ad57600080fd5b8286015b848110156120cf576120c281612031565b83529183019183016120b1565b509695505050505050565b600082601f8301126120eb57600080fd5b813560206120fb61208983612045565b82815260069290921b8401810191818101908684111561211a57600080fd5b8286015b848110156120cf576121308882611eea565b83529183019160400161211e565b600082601f83011261214f57600080fd5b8135602061215f61208983612045565b82815260059290921b8401810191818101908684111561217e57600080fd5b8286015b848110156120cf5780356001600160401b038111156121a15760008081fd5b6121af8986838b0101612068565b845250918301918301612182565b600061018082840312156121d057600080fd5b6121d8611e97565b905081356001600160401b03808211156121f157600080fd5b6121fd85838601612068565b8352602084013591508082111561221357600080fd5b61221f858386016120da565b6020840152604084013591508082111561223857600080fd5b612244858386016120da565b60408401526122568560608601611f7e565b60608401526122688560e08601611eea565b608084015261012084013591508082111561228257600080fd5b61228e85838601612068565b60a08401526101408401359150808211156122a857600080fd5b6122b485838601612068565b60c08401526101608401359150808211156122ce57600080fd5b506122db8482850161213e565b60e08301525092915050565b6000806000806000608086880312156122ff57600080fd5b8535945060208601356001600160401b038082111561231d57600080fd5b818801915088601f83011261233157600080fd5b81358181111561234057600080fd5b89602082850101111561235257600080fd5b602083019650945061236660408901612031565b9350606088013591508082111561237c57600080fd5b50612389888289016121bd565b9150509295509295909350565b600081518084526020808501945080840160005b838110156123cf5781516001600160601b0316875295820195908201906001016123aa565b509495945050505050565b60408152600083516040808401526123f56080840182612396565b90506020850151603f198483030160608501526124128282612396565b925050508260208301529392505050565b634e487b7160e01b600052603260045260246000fd5b60008261245657634e487b7160e01b600052601260045260246000fd5b500690565b60006020828403121561246d57600080fd5b81516001600160a01b038116811461191557600080fd5b60006020828403121561249657600080fd5b815160ff8116811461191557600080fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156124cf576124cf6124a7565b500390565b6000602082840312156124e657600080fd5b81516001600160c01b038116811461191557600080fd5b6000600019821415612511576125116124a7565b5060010190565b60006020828403121561252a57600080fd5b5051919050565b60008219821115612544576125446124a7565b500190565b60006020828403121561255b57600080fd5b815167ffffffffffffffff198116811461191557600080fd5b60006020828403121561258657600080fd5b81516001600160601b038116811461191557600080fd5b60006001600160601b03838116908316818110156125bd576125bd6124a7565b039392505050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b83811015612600578151855293820193908201906001016125e4565b5092979650505050505050565b6000816000190483118215151615612627576126276124a7565b500290565b600061ffff80831681811415612644576126446124a7565b600101939250505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47424c535369676e6174757265436865636b65722e636865636b5369676e617475a2646970667358221220b709889c463ee88b96df1e43223ed847f3b0de8e217c2ef3ed9704dbac87550264736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"a\x01\0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0),8\x03\x80b\0),\x839\x81\x01`@\x81\x90Rb\0\x005\x91b\0\x01\xD0V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80\x81\x90R`@\x80Qch0H5`\xE0\x1B\x81R\x90Qch0H5\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\0\x80W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xA6\x91\x90b\0\x01\xD0V[`\x01`\x01`\xA0\x1B\x03\x16`\xA0\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80`\x01`\x01`\xA0\x1B\x03\x16c]\xF4YF`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\0\xFEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01$\x91\x90b\0\x01\xD0V[`\x01`\x01`\xA0\x1B\x03\x16`\xC0\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP`\xA0Q`\x01`\x01`\xA0\x1B\x03\x16c\xDF\\\xF7#`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x01~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01\xA4\x91\x90b\0\x01\xD0V[`\x01`\x01`\xA0\x1B\x03\x16`\xE0RPb\0\x01\xF7V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01\xCDW`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15b\0\x01\xE3W`\0\x80\xFD[\x81Qb\0\x01\xF0\x81b\0\x01\xB7V[\x93\x92PPPV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa&\xC4b\0\x02h`\09`\0\x81\x81a\x01\xA1\x01Ra\x0Bv\x01R`\0\x81\x81`\xD6\x01Ra\rX\x01R`\0\x81\x81a\x01\x15\x01R\x81\x81a\x0F.\x01Ra\x10\xF0\x01R`\0\x81\x81a\x01<\x01R\x81\x81a\x03O\x01R\x81\x81a\x08?\x01R\x81\x81a\t\xD7\x01Ra\x0C\x13\x01Ra&\xC4`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x88W`\x005`\xE0\x1C\x80cm\x14\xA9\x87\x11a\0[W\x80cm\x14\xA9\x87\x14a\x017W\x80cn\xFBF6\x14a\x01^W\x80c\xB9\x8D\t\x08\x14a\x01\x7FW\x80c\xDF\\\xF7#\x14a\x01\x9CW`\0\x80\xFD[\x80c\x17\x1F\x1D[\x14a\0\x8DW\x80cAl~^\x14a\0\xBCW\x80c]\xF4YF\x14a\0\xD1W\x80ch0H5\x14a\x01\x10W[`\0\x80\xFD[a\0\xA0a\0\x9B6`\x04a\x1F\xBEV[a\x01\xC3V[`@\x80Q\x92\x15\x15\x83R\x90\x15\x15` \x83\x01R\x01[`@Q\x80\x91\x03\x90\xF3[a\0\xCFa\0\xCA6`\x04a \x0FV[a\x03MV[\0[a\0\xF8\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xB3V[a\0\xF8\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\0\xF8\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x01qa\x01l6`\x04a\"\xE7V[a\x04\x8CV[`@Qa\0\xB3\x92\x91\x90a#\xDAV[`\0Ta\x01\x8C\x90`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\xB3V[a\0\xF8\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`\0\x80`\0\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x87\x87`\0\x01Q\x88` \x01Q\x88`\0\x01Q`\0`\x02\x81\x10a\x02\x0BWa\x02\x0Ba$#V[` \x02\x01Q\x89Q`\x01` \x02\x01Q\x8A` \x01Q`\0`\x02\x81\x10a\x020Wa\x020a$#V[` \x02\x01Q\x8B` \x01Q`\x01`\x02\x81\x10a\x02LWa\x02La$#V[` \x90\x81\x02\x91\x90\x91\x01Q\x8CQ\x8D\x83\x01Q`@Qa\x02\xA9\x9A\x99\x98\x97\x96\x95\x94\x01\x98\x89R` \x89\x01\x97\x90\x97R`@\x88\x01\x95\x90\x95R``\x87\x01\x93\x90\x93R`\x80\x86\x01\x91\x90\x91R`\xA0\x85\x01R`\xC0\x84\x01R`\xE0\x83\x01Ra\x01\0\x82\x01Ra\x01 \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1Ca\x02\xCC\x91\x90a$9V[\x90Pa\x03?a\x02\xE5a\x02\xDE\x88\x84a\x13\xA5V[\x86\x90a\x14=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\xCF\x91\x90a$[V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x04\x80W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R\x7FBLSSignatureChecker.onlyCoordina`D\x82\x01R\x7FtorOwner: caller is not the owne`d\x82\x01R\x7Fr of the registryCoordinator\0\0\0\0`\x84\x82\x01R`\xA4\x01[`@Q\x80\x91\x03\x90\xFD[a\x04\x89\x81a\x18DV[PV[`@\x80Q\x80\x82\x01\x90\x91R``\x80\x82R` \x82\x01R`\0\x84a\x05\x03W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R`\0\x80Q` a&o\x839\x81Q\x91R`D\x82\x01R\x7Fres: empty quorum input\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x04wV[`@\x83\x01QQ\x85\x14\x80\x15a\x05\x1BWP`\xA0\x83\x01QQ\x85\x14[\x80\x15a\x05+WP`\xC0\x83\x01QQ\x85\x14[\x80\x15a\x05;WP`\xE0\x83\x01QQ\x85\x14[a\x05\xA5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R`\0\x80Q` a&o\x839\x81Q\x91R`D\x82\x01R\x7Fres: input quorum length mismatc`d\x82\x01R`\r`\xFB\x1B`\x84\x82\x01R`\xA4\x01a\x04wV[\x82QQ` \x84\x01QQ\x14a\x06\x1DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R`\0\x80Q` a&o\x839\x81Q\x91R\x90\x82\x01R\x7Fres: input nonsigner length mism`d\x82\x01Rc\x0C.\x8Cm`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x04wV[Cc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10a\x06\x8CW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R`\0\x80Q` a&o\x839\x81Q\x91R`D\x82\x01R\x7Fres: invalid reference block\0\0\0\0`d\x82\x01R`\x84\x01a\x04wV[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x80\x83\x01\x91\x90\x91R\x82Q\x80\x84\x01\x90\x93R``\x80\x84R\x90\x83\x01R\x90\x86`\x01`\x01`@\x1B\x03\x81\x11\x15a\x06\xCDWa\x06\xCDa\x1EYV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x06\xF6W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P` \x82\x01R\x86`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\x14Wa\x07\x14a\x1EYV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07=W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R`@\x80Q\x80\x82\x01\x90\x91R``\x80\x82R` \x82\x01R\x85` \x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07qWa\x07qa\x1EYV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\x9AW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x86\x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\xBAWa\x07\xBAa\x1EYV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\xE3W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81` \x01\x81\x90RP`\0a\x08\xB5\x8A\x8A\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`@\x80Qc\x9A\xA1e=`\xE0\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x93Pc\x9A\xA1e=\x92P`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x08\x8CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xB0\x91\x90a$\x84V[a\x18\x8BV[\x90P`\0[\x87` \x01QQ\x81\x10\x15a\x0BPWa\x08\xFF\x88` \x01Q\x82\x81Q\x81\x10a\x08\xE0Wa\x08\xE0a$#V[` \x02` \x01\x01Q\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x83` \x01Q\x82\x81Q\x81\x10a\t\x15Wa\t\x15a$#V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80\x15a\t\xD5W` \x83\x01Qa\t6`\x01\x83a$\xBDV[\x81Q\x81\x10a\tFWa\tFa$#V[` \x02` \x01\x01Q`\0\x1C\x83` \x01Q\x82\x81Q\x81\x10a\tgWa\tga$#V[` \x02` \x01\x01Q`\0\x1C\x11a\t\xD5W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R`\0\x80Q` a&o\x839\x81Q\x91R`D\x82\x01R\x7Fres: nonSignerPubkeys not sorted`d\x82\x01R`\x84\x01a\x04wV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x84` \x01Q\x83\x81Q\x81\x10a\n\x1AWa\n\x1Aa$#V[` \x02` \x01\x01Q\x8B\x8B`\0\x01Q\x85\x81Q\x81\x10a\n9Wa\n9a$#V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\nv\x93\x92\x91\x90\x92\x83Rc\xFF\xFF\xFF\xFF\x91\x82\x16` \x84\x01R\x16`@\x82\x01R``\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\x93W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xB7\x91\x90a$\xD4V[`\x01`\x01`\xC0\x1B\x03\x16\x83`\0\x01Q\x82\x81Q\x81\x10a\n\xD6Wa\n\xD6a$#V[` \x02` \x01\x01\x81\x81RPPa\x0B=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\xF6\x91\x90a%\x18V[\x90P`\0[\x8A\x81\x10\x15a\x12tW\x82\x15a\rVW\x89c\xFF\xFF\xFF\xFF\x16\x82\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c$\x9A\x0CB\x8F\x8F\x86\x81\x81\x10a\x0CRWa\x0CRa$#V[`@Q`\xE0\x85\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R\x92\x015`\xF8\x1C`\x04\x83\x01RP`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\x92W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xB6\x91\x90a%\x18V[a\x0C\xC0\x91\x90a%1V[\x11a\rVW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R`\0\x80Q` a&o\x839\x81Q\x91R`D\x82\x01R\x7Fres: StakeRegistry updates must `d\x82\x01R\x7Fbe within withdrawalDelayBlocks `\x84\x82\x01Rewindow`\xD0\x1B`\xA4\x82\x01R`\xC4\x01a\x04wV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16ch\xBC\xCA\xAC\x8D\x8D\x84\x81\x81\x10a\r\x97Wa\r\x97a$#V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xA0\x01Q\x85\x81Q\x81\x10a\r\xBBWa\r\xBBa$#V[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81R`\xFF\x90\x93\x16`\x04\x84\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x84\x01R\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\x17W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E;\x91\x90a%IV[`\x01`\x01`@\x1B\x03\x19\x16a\x0E^\x8A`@\x01Q\x83\x81Q\x81\x10a\x08\xE0Wa\x08\xE0a$#V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x14a\x0E\xFAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`a`$\x82\x01R`\0\x80Q` a&o\x839\x81Q\x91R`D\x82\x01R\x7Fres: quorumApk hash in storage d`d\x82\x01R\x7Foes not match provided quorum ap`\x84\x82\x01R`k`\xF8\x1B`\xA4\x82\x01R`\xC4\x01a\x04wV[a\x0F*\x89`@\x01Q\x82\x81Q\x81\x10a\x0F\x13Wa\x0F\x13a$#V[` \x02` \x01\x01Q\x87a\x14<\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x95P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xC8)LV\x8D\x8D\x84\x81\x81\x10a\x0FmWa\x0Fma$#V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xC0\x01Q\x85\x81Q\x81\x10a\x0F\x91Wa\x0F\x91a$#V[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81R`\xFF\x90\x93\x16`\x04\x84\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x84\x01R\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\x11\x91\x90a%tV[\x85` \x01Q\x82\x81Q\x81\x10a\x10'Wa\x10'a$#V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x82\x01R\x85\x01Q\x80Q\x82\x90\x81\x10a\x10SWa\x10Sa$#V[` \x02` \x01\x01Q\x85`\0\x01Q\x82\x81Q\x81\x10a\x10qWa\x10qa$#V[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPP`\0\x80[\x8A` \x01QQ\x81\x10\x15a\x12_Wa\x10\xE9\x86`\0\x01Q\x82\x81Q\x81\x10a\x10\xBBWa\x10\xBBa$#V[` \x02` \x01\x01Q\x8F\x8F\x86\x81\x81\x10a\x10\xD5Wa\x10\xD5a$#V[`\x01\x92\x015`\xF8\x1C\x92\x90\x92\x1C\x81\x16\x14\x91\x90PV[\x15a\x12MW\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xF2\xBE\x94\xAE\x8F\x8F\x86\x81\x81\x10a\x11/Wa\x11/a$#V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8E\x89` \x01Q\x85\x81Q\x81\x10a\x11SWa\x11Sa$#V[` \x02` \x01\x01Q\x8F`\xE0\x01Q\x88\x81Q\x81\x10a\x11qWa\x11qa$#V[` \x02` \x01\x01Q\x87\x81Q\x81\x10a\x11\x8AWa\x11\x8Aa$#V[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x87\x90\x1B\x16\x81R`\xFF\x90\x94\x16`\x04\x85\x01Rc\xFF\xFF\xFF\xFF\x92\x83\x16`$\x85\x01R`D\x84\x01\x91\x90\x91R\x16`d\x82\x01R`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11\xEEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12\x12\x91\x90a%tV[\x87Q\x80Q\x85\x90\x81\x10a\x12&Wa\x12&a$#V[` \x02` \x01\x01\x81\x81Qa\x12:\x91\x90a%\x9DV[`\x01`\x01``\x1B\x03\x16\x90RP`\x01\x90\x91\x01\x90[\x80a\x12W\x81a$\xFDV[\x91PPa\x10\x95V[PP\x80\x80a\x12l\x90a$\xFDV[\x91PPa\x0B\xFBV[PPP`\0\x80a\x12\x8E\x8C\x86\x8A``\x01Q\x8B`\x80\x01Qa\x01\xC3V[\x91P\x91P\x81a\x12\xFFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` a&o\x839\x81Q\x91R`D\x82\x01R\x7Fres: pairing precompile call fai`d\x82\x01Rb\x1B\x19Y`\xEA\x1B`\x84\x82\x01R`\xA4\x01a\x04wV[\x80a\x13`W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`9`$\x82\x01R`\0\x80Q` a&o\x839\x81Q\x91R`D\x82\x01R\x7Fres: signature is invalid\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x04wV[PP`\0\x87\x82` \x01Q`@Q` \x01a\x13{\x92\x91\x90a%\xC5V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x92\x9B\x92\x9AP\x91\x98PPPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x13\xC1a\x1D\x7FV[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R`\0\x90\x83``\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13\xF4Wa\x13\xF6V[\xFE[P\x80a\x144W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x04wV[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x14Xa\x1D\x9DV[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x80\x84\x01\x91\x90\x91R\x90\x84\x01Q``\x83\x01R`\0\x90\x83`\x80\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13\xF4WP\x80a\x144W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCBXY\x19\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x04wV[a\x14\xD8a\x1D\xBBV[P`@\x80Q`\x80\x81\x01\x82R\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81\x83\x01\x90\x81R\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED``\x83\x01R\x81R\x81Q\x80\x83\x01\x90\x92R\x7F']\xC4\xA2\x88\xD1\xAF\xB3\xCB\xB1\xAC\t\x18u$\xC7\xDB69]\xF7\xBE;\x99\xE6s\xB1:\x07Ze\xEC\x82R\x7F\x1D\x9B\xEF\xCD\x05\xA52>m\xA4\xD45\xF3\xB6\x17\xCD\xB3\xAF\x83(\\-\xF7\x11\xEF9\xC0\x15q\x82\x7F\x9D` \x83\x81\x01\x91\x90\x91R\x81\x01\x91\x90\x91R\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0\x80\x80a\x15\xC0`\0\x80Q` a&O\x839\x81Q\x91R\x86a$9V[\x90P[a\x15\xCC\x81a\x1A\xC8V[\x90\x93P\x91P`\0\x80Q` a&O\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a\x16\x06W`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` a&O\x839\x81Q\x91R`\x01\x82\x08\x90Pa\x15\xC3V[`@\x80Q\x80\x82\x01\x82R\x86\x81R` \x80\x82\x01\x86\x90R\x82Q\x80\x84\x01\x90\x93R\x86\x83R\x82\x01\x84\x90R`\0\x91\x82\x91\x90a\x16Ra\x1D\xE0V[`\0[`\x02\x81\x10\x15a\x18\x17W`\0a\x16k\x82`\x06a&\rV[\x90P\x84\x82`\x02\x81\x10a\x16\x7FWa\x16\x7Fa$#V[` \x02\x01QQ\x83a\x16\x91\x83`\0a%1V[`\x0C\x81\x10a\x16\xA1Wa\x16\xA1a$#V[` \x02\x01R\x84\x82`\x02\x81\x10a\x16\xB8Wa\x16\xB8a$#V[` \x02\x01Q` \x01Q\x83\x82`\x01a\x16\xCF\x91\x90a%1V[`\x0C\x81\x10a\x16\xDFWa\x16\xDFa$#V[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\xF6Wa\x16\xF6a$#V[` \x02\x01QQQ\x83a\x17\t\x83`\x02a%1V[`\x0C\x81\x10a\x17\x19Wa\x17\x19a$#V[` \x02\x01R\x83\x82`\x02\x81\x10a\x170Wa\x170a$#V[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x17I\x83`\x03a%1V[`\x0C\x81\x10a\x17YWa\x17Ya$#V[` \x02\x01R\x83\x82`\x02\x81\x10a\x17pWa\x17pa$#V[` \x02\x01Q` \x01Q`\0`\x02\x81\x10a\x17\x8BWa\x17\x8Ba$#V[` \x02\x01Q\x83a\x17\x9C\x83`\x04a%1V[`\x0C\x81\x10a\x17\xACWa\x17\xACa$#V[` \x02\x01R\x83\x82`\x02\x81\x10a\x17\xC3Wa\x17\xC3a$#V[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x17\xDEWa\x17\xDEa$#V[` \x02\x01Q\x83a\x17\xEF\x83`\x05a%1V[`\x0C\x81\x10a\x17\xFFWa\x17\xFFa$#V[` \x02\x01RP\x80a\x18\x0F\x81a$\xFDV[\x91PPa\x16UV[Pa\x18 a\x1D\xFFV[`\0` \x82a\x01\x80\x85`\x08\x8C\xFA\x91Q\x91\x9C\x91\x15\x15\x9BP\x90\x99PPPPPPPPPPV[`\0\x80T`\xFF\x19\x16\x82\x15\x15\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F@\xE4\xED\x88\n)\xE0\xF6\xDD\xCE0tW\xFBu\xCD\xDFO\xEE\xF7\xD3\xEC\xB00\x1B\xFD\xF4\x97j\x0E-\xFC\x90` \x01`@Q\x80\x91\x03\x90\xA1PV[`\0\x80a\x18\x97\x84a\x1BJV[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a\x19\x15W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`?`$\x82\x01R\x7FBitmapUtils.orderedBytesArrayToB`D\x82\x01R\x7Fitmap: bitmap exceeds max value\0`d\x82\x01R`\x84\x01a\x04wV[\x90P[\x92\x91PPV[`\0\x80[\x82\x15a\x19\x18Wa\x193`\x01\x84a$\xBDV[\x90\x92\x16\x91\x80a\x19A\x81a&,V[\x91PPa\x19\"V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x02\0\x82a\xFF\xFF\x16\x10a\x19\xA5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01Roscalar-too-large`\x80\x1B`D\x82\x01R`d\x01a\x04wV[\x81a\xFF\xFF\x16`\x01\x14\x15a\x19\xB9WP\x81a\x19\x18V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01\x81\x90R\x84\x90`\x01\x90[\x81a\xFF\xFF\x16\x86a\xFF\xFF\x16\x10a\x1A\"W`\x01a\xFF\xFF\x87\x16`\xFF\x83\x16\x1C\x81\x16\x14\x15a\x1A\x05Wa\x1A\x02\x84\x84a\x14\x82\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R`\0\x80Q` a&O\x839\x81Q\x91Ra\x1C\xD7V[\x91\x95\x91\x94P\x90\x92PPPV[`\0a\x01\0\x82Q\x11\x15a\x1B\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FBitmapUtils.orderedBytesArrayToB\x90\x82\x01R\x7Fitmap: orderedBytesArray is too `d\x82\x01Rclong`\xE0\x1B`\x84\x82\x01R`\xA4\x01a\x04wV[\x81Qa\x1B\xE1WP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a\x1B\xF7Wa\x1B\xF7a$#V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a\x1C\xCEW\x84\x81\x81Q\x81\x10a\x1C%Wa\x1C%a$#V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a\x1C\xBAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FBitmapUtils.orderedBytesArrayToB`D\x82\x01R\x7Fitmap: orderedBytesArray is not `d\x82\x01Rf\x1B\xDC\x99\x19\\\x99Y`\xCA\x1B`\x84\x82\x01R`\xA4\x01a\x04wV[\x91\x81\x17\x91a\x1C\xC7\x81a$\xFDV[\x90Pa\x1C\nV[P\x90\x93\x92PPPV[`\0\x80a\x1C\xE2a\x1D\xFFV[a\x1C\xEAa\x1E\x1DV[` \x80\x82R\x81\x81\x01\x81\x90R`@\x82\x01\x81\x90R``\x82\x01\x88\x90R`\x80\x82\x01\x87\x90R`\xA0\x82\x01\x86\x90R\x82`\xC0\x83`\x05a\x07\xD0Z\x03\xFA\x92P\x82\x80\x15a\x13\xF4WP\x82a\x1DtW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7FBN254.expMod: call failure\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04wV[PQ\x95\x94PPPPPV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\x80\x01`@R\x80`\x04\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80a\x1D\xCEa\x1E;V[\x81R` \x01a\x1D\xDBa\x1E;V[\x90R\x90V[`@Q\x80a\x01\x80\x01`@R\x80`\x0C\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80` \x01`@R\x80`\x01\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\xC0\x01`@R\x80`\x06\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1E\x91Wa\x1E\x91a\x1EYV[`@R\x90V[`@Qa\x01\0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1E\x91Wa\x1E\x91a\x1EYV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1E\xE2Wa\x1E\xE2a\x1EYV[`@R\x91\x90PV[`\0`@\x82\x84\x03\x12\x15a\x1E\xFCW`\0\x80\xFD[a\x1F\x04a\x1EoV[\x90P\x815\x81R` \x82\x015` \x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x1F+W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17\x15a\x1FMWa\x1FMa\x1EYV[\x80`@RP\x80`@\x84\x01\x85\x81\x11\x15a\x1FdW`\0\x80\xFD[\x84[\x81\x81\x10\x15a\x1A\"W\x805\x83R` \x92\x83\x01\x92\x01a\x1FfV[`\0`\x80\x82\x84\x03\x12\x15a\x1F\x90W`\0\x80\xFD[a\x1F\x98a\x1EoV[\x90Pa\x1F\xA4\x83\x83a\x1F\x1AV[\x81Ra\x1F\xB3\x83`@\x84\x01a\x1F\x1AV[` \x82\x01R\x92\x91PPV[`\0\x80`\0\x80a\x01 \x85\x87\x03\x12\x15a\x1F\xD5W`\0\x80\xFD[\x845\x93Pa\x1F\xE6\x86` \x87\x01a\x1E\xEAV[\x92Pa\x1F\xF5\x86``\x87\x01a\x1F~V[\x91Pa \x04\x86`\xE0\x87\x01a\x1E\xEAV[\x90P\x92\x95\x91\x94P\x92PV[`\0` \x82\x84\x03\x12\x15a !W`\0\x80\xFD[\x815\x80\x15\x15\x81\x14a\x19\x15W`\0\x80\xFD[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1A\xC3W`\0\x80\xFD[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a ^Wa ^a\x1EYV[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a yW`\0\x80\xFD[\x815` a \x8Ea \x89\x83a EV[a\x1E\xBAV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a \xADW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a \xCFWa \xC2\x81a 1V[\x83R\x91\x83\x01\x91\x83\x01a \xB1V[P\x96\x95PPPPPPV[`\0\x82`\x1F\x83\x01\x12a \xEBW`\0\x80\xFD[\x815` a \xFBa \x89\x83a EV[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a!\x1AW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a \xCFWa!0\x88\x82a\x1E\xEAV[\x83R\x91\x83\x01\x91`@\x01a!\x1EV[`\0\x82`\x1F\x83\x01\x12a!OW`\0\x80\xFD[\x815` a!_a \x89\x83a EV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a!~W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a \xCFW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a!\xA1W`\0\x80\x81\xFD[a!\xAF\x89\x86\x83\x8B\x01\x01a hV[\x84RP\x91\x83\x01\x91\x83\x01a!\x82V[`\0a\x01\x80\x82\x84\x03\x12\x15a!\xD0W`\0\x80\xFD[a!\xD8a\x1E\x97V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a!\xF1W`\0\x80\xFD[a!\xFD\x85\x83\x86\x01a hV[\x83R` \x84\x015\x91P\x80\x82\x11\x15a\"\x13W`\0\x80\xFD[a\"\x1F\x85\x83\x86\x01a \xDAV[` \x84\x01R`@\x84\x015\x91P\x80\x82\x11\x15a\"8W`\0\x80\xFD[a\"D\x85\x83\x86\x01a \xDAV[`@\x84\x01Ra\"V\x85``\x86\x01a\x1F~V[``\x84\x01Ra\"h\x85`\xE0\x86\x01a\x1E\xEAV[`\x80\x84\x01Ra\x01 \x84\x015\x91P\x80\x82\x11\x15a\"\x82W`\0\x80\xFD[a\"\x8E\x85\x83\x86\x01a hV[`\xA0\x84\x01Ra\x01@\x84\x015\x91P\x80\x82\x11\x15a\"\xA8W`\0\x80\xFD[a\"\xB4\x85\x83\x86\x01a hV[`\xC0\x84\x01Ra\x01`\x84\x015\x91P\x80\x82\x11\x15a\"\xCEW`\0\x80\xFD[Pa\"\xDB\x84\x82\x85\x01a!>V[`\xE0\x83\x01RP\x92\x91PPV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a\"\xFFW`\0\x80\xFD[\x855\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a#\x1DW`\0\x80\xFD[\x81\x88\x01\x91P\x88`\x1F\x83\x01\x12a#1W`\0\x80\xFD[\x815\x81\x81\x11\x15a#@W`\0\x80\xFD[\x89` \x82\x85\x01\x01\x11\x15a#RW`\0\x80\xFD[` \x83\x01\x96P\x94Pa#f`@\x89\x01a 1V[\x93P``\x88\x015\x91P\x80\x82\x11\x15a#|W`\0\x80\xFD[Pa#\x89\x88\x82\x89\x01a!\xBDV[\x91PP\x92\x95P\x92\x95\x90\x93PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a#\xCFW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a#\xAAV[P\x94\x95\x94PPPPPV[`@\x81R`\0\x83Q`@\x80\x84\x01Ra#\xF5`\x80\x84\x01\x82a#\x96V[\x90P` \x85\x01Q`?\x19\x84\x83\x03\x01``\x85\x01Ra$\x12\x82\x82a#\x96V[\x92PPP\x82` \x83\x01R\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x82a$VWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`\0` \x82\x84\x03\x12\x15a$mW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x19\x15W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a$\x96W`\0\x80\xFD[\x81Q`\xFF\x81\x16\x81\x14a\x19\x15W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x82\x10\x15a$\xCFWa$\xCFa$\xA7V[P\x03\x90V[`\0` \x82\x84\x03\x12\x15a$\xE6W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x19\x15W`\0\x80\xFD[`\0`\0\x19\x82\x14\x15a%\x11Wa%\x11a$\xA7V[P`\x01\x01\x90V[`\0` \x82\x84\x03\x12\x15a%*W`\0\x80\xFD[PQ\x91\x90PV[`\0\x82\x19\x82\x11\x15a%DWa%Da$\xA7V[P\x01\x90V[`\0` \x82\x84\x03\x12\x15a%[W`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x16\x81\x14a\x19\x15W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a%\x86W`\0\x80\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x19\x15W`\0\x80\xFD[`\0`\x01`\x01``\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15a%\xBDWa%\xBDa$\xA7V[\x03\x93\x92PPPV[c\xFF\xFF\xFF\xFF`\xE0\x1B\x83`\xE0\x1B\x16\x81R`\0`\x04\x82\x01\x83Q` \x80\x86\x01`\0[\x83\x81\x10\x15a&\0W\x81Q\x85R\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a%\xE4V[P\x92\x97\x96PPPPPPPV[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a&'Wa&'a$\xA7V[P\x02\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a&DWa&Da$\xA7V[`\x01\x01\x93\x92PPPV\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGBLSSignatureChecker.checkSignatu\xA2dipfsX\"\x12 \xB7\t\x88\x9CF>\xE8\x8B\x96\xDF\x1EC\">\xD8G\xF3\xB0\xDE\x8E!|.\xF3\xED\x97\x04\xDB\xAC\x87U\x02dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100885760003560e01c80636d14a9871161005b5780636d14a987146101375780636efb46361461015e578063b98d09081461017f578063df5cf7231461019c57600080fd5b8063171f1d5b1461008d578063416c7e5e146100bc5780635df45946146100d15780636830483514610110575b600080fd5b6100a061009b366004611fbe565b6101c3565b6040805192151583529015156020830152015b60405180910390f35b6100cf6100ca36600461200f565b61034d565b005b6100f87f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100b3565b6100f87f000000000000000000000000000000000000000000000000000000000000000081565b6100f87f000000000000000000000000000000000000000000000000000000000000000081565b61017161016c3660046122e7565b61048c565b6040516100b39291906123da565b60005461018c9060ff1681565b60405190151581526020016100b3565b6100f87f000000000000000000000000000000000000000000000000000000000000000081565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018787600001518860200151886000015160006002811061020b5761020b612423565b60200201518951600160200201518a6020015160006002811061023057610230612423565b60200201518b6020015160016002811061024c5761024c612423565b602090810291909101518c518d8301516040516102a99a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c6102cc9190612439565b905061033f6102e56102de88846113a5565b869061143c565b6102ed6114d0565b61033561032685610320604080518082018252600080825260209182015281518083019092526001825260029082015290565b906113a5565b61032f8c611590565b9061143c565b886201d4c0611620565b909890975095505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103cf919061245b565b6001600160a01b0316336001600160a01b0316146104805760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a4015b60405180910390fd5b61048981611844565b50565b60408051808201909152606080825260208201526000846105035760405162461bcd60e51b8152602060048201526037602482015260008051602061266f83398151915260448201527f7265733a20656d7074792071756f72756d20696e7075740000000000000000006064820152608401610477565b6040830151518514801561051b575060a08301515185145b801561052b575060c08301515185145b801561053b575060e08301515185145b6105a55760405162461bcd60e51b8152602060048201526041602482015260008051602061266f83398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610477565b8251516020840151511461061d5760405162461bcd60e51b81526020600482015260446024820181905260008051602061266f833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610477565b4363ffffffff168463ffffffff161061068c5760405162461bcd60e51b815260206004820152603c602482015260008051602061266f83398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610477565b6040805180820182526000808252602080830191909152825180840190935260608084529083015290866001600160401b038111156106cd576106cd611e59565b6040519080825280602002602001820160405280156106f6578160200160208202803683370190505b506020820152866001600160401b0381111561071457610714611e59565b60405190808252806020026020018201604052801561073d578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b0381111561077157610771611e59565b60405190808252806020026020018201604052801561079a578160200160208202803683370190505b5081526020860151516001600160401b038111156107ba576107ba611e59565b6040519080825280602002602001820160405280156107e3578160200160208202803683370190505b50816020018190525060006108b58a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa15801561088c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b09190612484565b61188b565b905060005b876020015151811015610b50576108ff886020015182815181106108e0576108e0612423565b6020026020010151805160009081526020918201519091526040902090565b8360200151828151811061091557610915612423565b602090810291909101015280156109d55760208301516109366001836124bd565b8151811061094657610946612423565b602002602001015160001c8360200151828151811061096757610967612423565b602002602001015160001c116109d5576040805162461bcd60e51b815260206004820152602481019190915260008051602061266f83398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610477565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec635184602001518381518110610a1a57610a1a612423565b60200260200101518b8b600001518581518110610a3957610a39612423565b60200260200101516040518463ffffffff1660e01b8152600401610a769392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab791906124d4565b6001600160c01b031683600001518281518110610ad657610ad6612423565b602002602001018181525050610b3c6102de610b108486600001518581518110610b0257610b02612423565b60200260200101511661191e565b8a602001518481518110610b2657610b26612423565b602002602001015161194990919063ffffffff16565b945080610b48816124fd565b9150506108ba565b5050610b5b83611a2d565b6000805491945060ff9091169081610b74576000610bf6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf69190612518565b905060005b8a811015611274578215610d56578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c428f8f86818110610c5257610c52612423565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa158015610c92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb69190612518565b610cc09190612531565b11610d565760405162461bcd60e51b8152602060048201526066602482015260008051602061266f83398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610477565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8d8d84818110610d9757610d97612423565b9050013560f81c60f81b60f81c8c8c60a001518581518110610dbb57610dbb612423565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015610e17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3b9190612549565b6001600160401b031916610e5e8a6040015183815181106108e0576108e0612423565b67ffffffffffffffff191614610efa5760405162461bcd60e51b8152602060048201526061602482015260008051602061266f83398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610477565b610f2a89604001518281518110610f1357610f13612423565b60200260200101518761143c90919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568d8d84818110610f6d57610f6d612423565b9050013560f81c60f81b60f81c8c8c60c001518581518110610f9157610f91612423565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015610fed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110119190612574565b8560200151828151811061102757611027612423565b6001600160601b0390921660209283029190910182015285015180518290811061105357611053612423565b60200260200101518560000151828151811061107157611071612423565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a602001515181101561125f576110e9866000015182815181106110bb576110bb612423565b60200260200101518f8f868181106110d5576110d5612423565b600192013560f81c9290921c811614919050565b1561124d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8f8f8681811061112f5761112f612423565b9050013560f81c60f81b60f81c8e8960200151858151811061115357611153612423565b60200260200101518f60e00151888151811061117157611171612423565b6020026020010151878151811061118a5761118a612423565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa1580156111ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112129190612574565b875180518590811061122657611226612423565b6020026020010181815161123a919061259d565b6001600160601b03169052506001909101905b80611257816124fd565b915050611095565b5050808061126c906124fd565b915050610bfb565b50505060008061128e8c868a606001518b608001516101c3565b91509150816112ff5760405162461bcd60e51b8152602060048201526043602482015260008051602061266f83398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610477565b806113605760405162461bcd60e51b8152602060048201526039602482015260008051602061266f83398151915260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610477565b5050600087826020015160405160200161137b9291906125c5565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b60408051808201909152600080825260208201526113c1611d7f565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156113f4576113f6565bfe5b50806114345760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610477565b505092915050565b6040805180820190915260008082526020820152611458611d9d565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156113f45750806114345760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610477565b6114d8611dbb565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820190915260008082526020820152600080806115c060008051602061264f83398151915286612439565b90505b6115cc81611ac8565b909350915060008051602061264f833981519152828309831415611606576040805180820190915290815260208101919091529392505050565b60008051602061264f8339815191526001820890506115c3565b604080518082018252868152602080820186905282518084019093528683528201849052600091829190611652611de0565b60005b600281101561181757600061166b82600661260d565b905084826002811061167f5761167f612423565b60200201515183611691836000612531565b600c81106116a1576116a1612423565b60200201528482600281106116b8576116b8612423565b602002015160200151838260016116cf9190612531565b600c81106116df576116df612423565b60200201528382600281106116f6576116f6612423565b6020020151515183611709836002612531565b600c811061171957611719612423565b602002015283826002811061173057611730612423565b6020020151516001602002015183611749836003612531565b600c811061175957611759612423565b602002015283826002811061177057611770612423565b60200201516020015160006002811061178b5761178b612423565b60200201518361179c836004612531565b600c81106117ac576117ac612423565b60200201528382600281106117c3576117c3612423565b6020020151602001516001600281106117de576117de612423565b6020020151836117ef836005612531565b600c81106117ff576117ff612423565b6020020152508061180f816124fd565b915050611655565b50611820611dff565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b6000805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b60008061189784611b4a565b9050808360ff166001901b116119155760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610477565b90505b92915050565b6000805b8215611918576119336001846124bd565b90921691806119418161262c565b915050611922565b60408051808201909152600080825260208201526102008261ffff16106119a55760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610477565b8161ffff16600114156119b9575081611918565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff1610611a2257600161ffff871660ff83161c81161415611a0557611a02848461143c565b93505b611a0f838461143c565b92506201fffe600192831b1691016119d5565b509195945050505050565b60408051808201909152600080825260208201528151158015611a5257506020820151155b15611a70575050604080518082019091526000808252602082015290565b60405180604001604052808360000151815260200160008051602061264f8339815191528460200151611aa39190612439565b611abb9060008051602061264f8339815191526124bd565b905292915050565b919050565b6000808060008051602061264f833981519152600360008051602061264f8339815191528660008051602061264f833981519152888909090890506000611b3e827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260008051602061264f833981519152611cd7565b91959194509092505050565b600061010082511115611bd35760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610477565b8151611be157506000919050565b60008083600081518110611bf757611bf7612423565b0160200151600160f89190911c81901b92505b8451811015611cce57848181518110611c2557611c25612423565b0160200151600160f89190911c1b9150828211611cba5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610477565b91811791611cc7816124fd565b9050611c0a565b50909392505050565b600080611ce2611dff565b611cea611e1d565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280156113f4575082611d745760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610477565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280611dce611e3b565b8152602001611ddb611e3b565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715611e9157611e91611e59565b60405290565b60405161010081016001600160401b0381118282101715611e9157611e91611e59565b604051601f8201601f191681016001600160401b0381118282101715611ee257611ee2611e59565b604052919050565b600060408284031215611efc57600080fd5b611f04611e6f565b9050813581526020820135602082015292915050565b600082601f830112611f2b57600080fd5b604051604081018181106001600160401b0382111715611f4d57611f4d611e59565b8060405250806040840185811115611f6457600080fd5b845b81811015611a22578035835260209283019201611f66565b600060808284031215611f9057600080fd5b611f98611e6f565b9050611fa48383611f1a565b8152611fb38360408401611f1a565b602082015292915050565b6000806000806101208587031215611fd557600080fd5b84359350611fe68660208701611eea565b9250611ff58660608701611f7e565b91506120048660e08701611eea565b905092959194509250565b60006020828403121561202157600080fd5b8135801515811461191557600080fd5b803563ffffffff81168114611ac357600080fd5b60006001600160401b0382111561205e5761205e611e59565b5060051b60200190565b600082601f83011261207957600080fd5b8135602061208e61208983612045565b611eba565b82815260059290921b840181019181810190868411156120ad57600080fd5b8286015b848110156120cf576120c281612031565b83529183019183016120b1565b509695505050505050565b600082601f8301126120eb57600080fd5b813560206120fb61208983612045565b82815260069290921b8401810191818101908684111561211a57600080fd5b8286015b848110156120cf576121308882611eea565b83529183019160400161211e565b600082601f83011261214f57600080fd5b8135602061215f61208983612045565b82815260059290921b8401810191818101908684111561217e57600080fd5b8286015b848110156120cf5780356001600160401b038111156121a15760008081fd5b6121af8986838b0101612068565b845250918301918301612182565b600061018082840312156121d057600080fd5b6121d8611e97565b905081356001600160401b03808211156121f157600080fd5b6121fd85838601612068565b8352602084013591508082111561221357600080fd5b61221f858386016120da565b6020840152604084013591508082111561223857600080fd5b612244858386016120da565b60408401526122568560608601611f7e565b60608401526122688560e08601611eea565b608084015261012084013591508082111561228257600080fd5b61228e85838601612068565b60a08401526101408401359150808211156122a857600080fd5b6122b485838601612068565b60c08401526101608401359150808211156122ce57600080fd5b506122db8482850161213e565b60e08301525092915050565b6000806000806000608086880312156122ff57600080fd5b8535945060208601356001600160401b038082111561231d57600080fd5b818801915088601f83011261233157600080fd5b81358181111561234057600080fd5b89602082850101111561235257600080fd5b602083019650945061236660408901612031565b9350606088013591508082111561237c57600080fd5b50612389888289016121bd565b9150509295509295909350565b600081518084526020808501945080840160005b838110156123cf5781516001600160601b0316875295820195908201906001016123aa565b509495945050505050565b60408152600083516040808401526123f56080840182612396565b90506020850151603f198483030160608501526124128282612396565b925050508260208301529392505050565b634e487b7160e01b600052603260045260246000fd5b60008261245657634e487b7160e01b600052601260045260246000fd5b500690565b60006020828403121561246d57600080fd5b81516001600160a01b038116811461191557600080fd5b60006020828403121561249657600080fd5b815160ff8116811461191557600080fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156124cf576124cf6124a7565b500390565b6000602082840312156124e657600080fd5b81516001600160c01b038116811461191557600080fd5b6000600019821415612511576125116124a7565b5060010190565b60006020828403121561252a57600080fd5b5051919050565b60008219821115612544576125446124a7565b500190565b60006020828403121561255b57600080fd5b815167ffffffffffffffff198116811461191557600080fd5b60006020828403121561258657600080fd5b81516001600160601b038116811461191557600080fd5b60006001600160601b03838116908316818110156125bd576125bd6124a7565b039392505050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b83811015612600578151855293820193908201906001016125e4565b5092979650505050505050565b6000816000190483118215151615612627576126276124a7565b500290565b600061ffff80831681811415612644576126446124a7565b600101939250505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47424c535369676e6174757265436865636b65722e636865636b5369676e617475a2646970667358221220b709889c463ee88b96df1e43223ed847f3b0de8e217c2ef3ed9704dbac87550264736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x88W`\x005`\xE0\x1C\x80cm\x14\xA9\x87\x11a\0[W\x80cm\x14\xA9\x87\x14a\x017W\x80cn\xFBF6\x14a\x01^W\x80c\xB9\x8D\t\x08\x14a\x01\x7FW\x80c\xDF\\\xF7#\x14a\x01\x9CW`\0\x80\xFD[\x80c\x17\x1F\x1D[\x14a\0\x8DW\x80cAl~^\x14a\0\xBCW\x80c]\xF4YF\x14a\0\xD1W\x80ch0H5\x14a\x01\x10W[`\0\x80\xFD[a\0\xA0a\0\x9B6`\x04a\x1F\xBEV[a\x01\xC3V[`@\x80Q\x92\x15\x15\x83R\x90\x15\x15` \x83\x01R\x01[`@Q\x80\x91\x03\x90\xF3[a\0\xCFa\0\xCA6`\x04a \x0FV[a\x03MV[\0[a\0\xF8\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xB3V[a\0\xF8\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\0\xF8\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x01qa\x01l6`\x04a\"\xE7V[a\x04\x8CV[`@Qa\0\xB3\x92\x91\x90a#\xDAV[`\0Ta\x01\x8C\x90`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\xB3V[a\0\xF8\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`\0\x80`\0\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x87\x87`\0\x01Q\x88` \x01Q\x88`\0\x01Q`\0`\x02\x81\x10a\x02\x0BWa\x02\x0Ba$#V[` \x02\x01Q\x89Q`\x01` \x02\x01Q\x8A` \x01Q`\0`\x02\x81\x10a\x020Wa\x020a$#V[` \x02\x01Q\x8B` \x01Q`\x01`\x02\x81\x10a\x02LWa\x02La$#V[` \x90\x81\x02\x91\x90\x91\x01Q\x8CQ\x8D\x83\x01Q`@Qa\x02\xA9\x9A\x99\x98\x97\x96\x95\x94\x01\x98\x89R` \x89\x01\x97\x90\x97R`@\x88\x01\x95\x90\x95R``\x87\x01\x93\x90\x93R`\x80\x86\x01\x91\x90\x91R`\xA0\x85\x01R`\xC0\x84\x01R`\xE0\x83\x01Ra\x01\0\x82\x01Ra\x01 \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1Ca\x02\xCC\x91\x90a$9V[\x90Pa\x03?a\x02\xE5a\x02\xDE\x88\x84a\x13\xA5V[\x86\x90a\x14=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\xCF\x91\x90a$[V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x04\x80W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R\x7FBLSSignatureChecker.onlyCoordina`D\x82\x01R\x7FtorOwner: caller is not the owne`d\x82\x01R\x7Fr of the registryCoordinator\0\0\0\0`\x84\x82\x01R`\xA4\x01[`@Q\x80\x91\x03\x90\xFD[a\x04\x89\x81a\x18DV[PV[`@\x80Q\x80\x82\x01\x90\x91R``\x80\x82R` \x82\x01R`\0\x84a\x05\x03W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R`\0\x80Q` a&o\x839\x81Q\x91R`D\x82\x01R\x7Fres: empty quorum input\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x04wV[`@\x83\x01QQ\x85\x14\x80\x15a\x05\x1BWP`\xA0\x83\x01QQ\x85\x14[\x80\x15a\x05+WP`\xC0\x83\x01QQ\x85\x14[\x80\x15a\x05;WP`\xE0\x83\x01QQ\x85\x14[a\x05\xA5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R`\0\x80Q` a&o\x839\x81Q\x91R`D\x82\x01R\x7Fres: input quorum length mismatc`d\x82\x01R`\r`\xFB\x1B`\x84\x82\x01R`\xA4\x01a\x04wV[\x82QQ` \x84\x01QQ\x14a\x06\x1DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R`\0\x80Q` a&o\x839\x81Q\x91R\x90\x82\x01R\x7Fres: input nonsigner length mism`d\x82\x01Rc\x0C.\x8Cm`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x04wV[Cc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10a\x06\x8CW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R`\0\x80Q` a&o\x839\x81Q\x91R`D\x82\x01R\x7Fres: invalid reference block\0\0\0\0`d\x82\x01R`\x84\x01a\x04wV[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x80\x83\x01\x91\x90\x91R\x82Q\x80\x84\x01\x90\x93R``\x80\x84R\x90\x83\x01R\x90\x86`\x01`\x01`@\x1B\x03\x81\x11\x15a\x06\xCDWa\x06\xCDa\x1EYV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x06\xF6W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P` \x82\x01R\x86`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\x14Wa\x07\x14a\x1EYV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07=W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R`@\x80Q\x80\x82\x01\x90\x91R``\x80\x82R` \x82\x01R\x85` \x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07qWa\x07qa\x1EYV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\x9AW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x86\x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\xBAWa\x07\xBAa\x1EYV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\xE3W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81` \x01\x81\x90RP`\0a\x08\xB5\x8A\x8A\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`@\x80Qc\x9A\xA1e=`\xE0\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x93Pc\x9A\xA1e=\x92P`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x08\x8CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xB0\x91\x90a$\x84V[a\x18\x8BV[\x90P`\0[\x87` \x01QQ\x81\x10\x15a\x0BPWa\x08\xFF\x88` \x01Q\x82\x81Q\x81\x10a\x08\xE0Wa\x08\xE0a$#V[` \x02` \x01\x01Q\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x83` \x01Q\x82\x81Q\x81\x10a\t\x15Wa\t\x15a$#V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80\x15a\t\xD5W` \x83\x01Qa\t6`\x01\x83a$\xBDV[\x81Q\x81\x10a\tFWa\tFa$#V[` \x02` \x01\x01Q`\0\x1C\x83` \x01Q\x82\x81Q\x81\x10a\tgWa\tga$#V[` \x02` \x01\x01Q`\0\x1C\x11a\t\xD5W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R`\0\x80Q` a&o\x839\x81Q\x91R`D\x82\x01R\x7Fres: nonSignerPubkeys not sorted`d\x82\x01R`\x84\x01a\x04wV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x84` \x01Q\x83\x81Q\x81\x10a\n\x1AWa\n\x1Aa$#V[` \x02` \x01\x01Q\x8B\x8B`\0\x01Q\x85\x81Q\x81\x10a\n9Wa\n9a$#V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\nv\x93\x92\x91\x90\x92\x83Rc\xFF\xFF\xFF\xFF\x91\x82\x16` \x84\x01R\x16`@\x82\x01R``\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\x93W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xB7\x91\x90a$\xD4V[`\x01`\x01`\xC0\x1B\x03\x16\x83`\0\x01Q\x82\x81Q\x81\x10a\n\xD6Wa\n\xD6a$#V[` \x02` \x01\x01\x81\x81RPPa\x0B=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\xF6\x91\x90a%\x18V[\x90P`\0[\x8A\x81\x10\x15a\x12tW\x82\x15a\rVW\x89c\xFF\xFF\xFF\xFF\x16\x82\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c$\x9A\x0CB\x8F\x8F\x86\x81\x81\x10a\x0CRWa\x0CRa$#V[`@Q`\xE0\x85\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R\x92\x015`\xF8\x1C`\x04\x83\x01RP`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\x92W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xB6\x91\x90a%\x18V[a\x0C\xC0\x91\x90a%1V[\x11a\rVW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R`\0\x80Q` a&o\x839\x81Q\x91R`D\x82\x01R\x7Fres: StakeRegistry updates must `d\x82\x01R\x7Fbe within withdrawalDelayBlocks `\x84\x82\x01Rewindow`\xD0\x1B`\xA4\x82\x01R`\xC4\x01a\x04wV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16ch\xBC\xCA\xAC\x8D\x8D\x84\x81\x81\x10a\r\x97Wa\r\x97a$#V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xA0\x01Q\x85\x81Q\x81\x10a\r\xBBWa\r\xBBa$#V[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81R`\xFF\x90\x93\x16`\x04\x84\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x84\x01R\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\x17W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E;\x91\x90a%IV[`\x01`\x01`@\x1B\x03\x19\x16a\x0E^\x8A`@\x01Q\x83\x81Q\x81\x10a\x08\xE0Wa\x08\xE0a$#V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x14a\x0E\xFAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`a`$\x82\x01R`\0\x80Q` a&o\x839\x81Q\x91R`D\x82\x01R\x7Fres: quorumApk hash in storage d`d\x82\x01R\x7Foes not match provided quorum ap`\x84\x82\x01R`k`\xF8\x1B`\xA4\x82\x01R`\xC4\x01a\x04wV[a\x0F*\x89`@\x01Q\x82\x81Q\x81\x10a\x0F\x13Wa\x0F\x13a$#V[` \x02` \x01\x01Q\x87a\x14<\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x95P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xC8)LV\x8D\x8D\x84\x81\x81\x10a\x0FmWa\x0Fma$#V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xC0\x01Q\x85\x81Q\x81\x10a\x0F\x91Wa\x0F\x91a$#V[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81R`\xFF\x90\x93\x16`\x04\x84\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x84\x01R\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\x11\x91\x90a%tV[\x85` \x01Q\x82\x81Q\x81\x10a\x10'Wa\x10'a$#V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x82\x01R\x85\x01Q\x80Q\x82\x90\x81\x10a\x10SWa\x10Sa$#V[` \x02` \x01\x01Q\x85`\0\x01Q\x82\x81Q\x81\x10a\x10qWa\x10qa$#V[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPP`\0\x80[\x8A` \x01QQ\x81\x10\x15a\x12_Wa\x10\xE9\x86`\0\x01Q\x82\x81Q\x81\x10a\x10\xBBWa\x10\xBBa$#V[` \x02` \x01\x01Q\x8F\x8F\x86\x81\x81\x10a\x10\xD5Wa\x10\xD5a$#V[`\x01\x92\x015`\xF8\x1C\x92\x90\x92\x1C\x81\x16\x14\x91\x90PV[\x15a\x12MW\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xF2\xBE\x94\xAE\x8F\x8F\x86\x81\x81\x10a\x11/Wa\x11/a$#V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8E\x89` \x01Q\x85\x81Q\x81\x10a\x11SWa\x11Sa$#V[` \x02` \x01\x01Q\x8F`\xE0\x01Q\x88\x81Q\x81\x10a\x11qWa\x11qa$#V[` \x02` \x01\x01Q\x87\x81Q\x81\x10a\x11\x8AWa\x11\x8Aa$#V[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x87\x90\x1B\x16\x81R`\xFF\x90\x94\x16`\x04\x85\x01Rc\xFF\xFF\xFF\xFF\x92\x83\x16`$\x85\x01R`D\x84\x01\x91\x90\x91R\x16`d\x82\x01R`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11\xEEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12\x12\x91\x90a%tV[\x87Q\x80Q\x85\x90\x81\x10a\x12&Wa\x12&a$#V[` \x02` \x01\x01\x81\x81Qa\x12:\x91\x90a%\x9DV[`\x01`\x01``\x1B\x03\x16\x90RP`\x01\x90\x91\x01\x90[\x80a\x12W\x81a$\xFDV[\x91PPa\x10\x95V[PP\x80\x80a\x12l\x90a$\xFDV[\x91PPa\x0B\xFBV[PPP`\0\x80a\x12\x8E\x8C\x86\x8A``\x01Q\x8B`\x80\x01Qa\x01\xC3V[\x91P\x91P\x81a\x12\xFFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` a&o\x839\x81Q\x91R`D\x82\x01R\x7Fres: pairing precompile call fai`d\x82\x01Rb\x1B\x19Y`\xEA\x1B`\x84\x82\x01R`\xA4\x01a\x04wV[\x80a\x13`W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`9`$\x82\x01R`\0\x80Q` a&o\x839\x81Q\x91R`D\x82\x01R\x7Fres: signature is invalid\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x04wV[PP`\0\x87\x82` \x01Q`@Q` \x01a\x13{\x92\x91\x90a%\xC5V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x92\x9B\x92\x9AP\x91\x98PPPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x13\xC1a\x1D\x7FV[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R`\0\x90\x83``\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13\xF4Wa\x13\xF6V[\xFE[P\x80a\x144W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x04wV[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x14Xa\x1D\x9DV[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x80\x84\x01\x91\x90\x91R\x90\x84\x01Q``\x83\x01R`\0\x90\x83`\x80\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13\xF4WP\x80a\x144W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCBXY\x19\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x04wV[a\x14\xD8a\x1D\xBBV[P`@\x80Q`\x80\x81\x01\x82R\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81\x83\x01\x90\x81R\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED``\x83\x01R\x81R\x81Q\x80\x83\x01\x90\x92R\x7F']\xC4\xA2\x88\xD1\xAF\xB3\xCB\xB1\xAC\t\x18u$\xC7\xDB69]\xF7\xBE;\x99\xE6s\xB1:\x07Ze\xEC\x82R\x7F\x1D\x9B\xEF\xCD\x05\xA52>m\xA4\xD45\xF3\xB6\x17\xCD\xB3\xAF\x83(\\-\xF7\x11\xEF9\xC0\x15q\x82\x7F\x9D` \x83\x81\x01\x91\x90\x91R\x81\x01\x91\x90\x91R\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0\x80\x80a\x15\xC0`\0\x80Q` a&O\x839\x81Q\x91R\x86a$9V[\x90P[a\x15\xCC\x81a\x1A\xC8V[\x90\x93P\x91P`\0\x80Q` a&O\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a\x16\x06W`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` a&O\x839\x81Q\x91R`\x01\x82\x08\x90Pa\x15\xC3V[`@\x80Q\x80\x82\x01\x82R\x86\x81R` \x80\x82\x01\x86\x90R\x82Q\x80\x84\x01\x90\x93R\x86\x83R\x82\x01\x84\x90R`\0\x91\x82\x91\x90a\x16Ra\x1D\xE0V[`\0[`\x02\x81\x10\x15a\x18\x17W`\0a\x16k\x82`\x06a&\rV[\x90P\x84\x82`\x02\x81\x10a\x16\x7FWa\x16\x7Fa$#V[` \x02\x01QQ\x83a\x16\x91\x83`\0a%1V[`\x0C\x81\x10a\x16\xA1Wa\x16\xA1a$#V[` \x02\x01R\x84\x82`\x02\x81\x10a\x16\xB8Wa\x16\xB8a$#V[` \x02\x01Q` \x01Q\x83\x82`\x01a\x16\xCF\x91\x90a%1V[`\x0C\x81\x10a\x16\xDFWa\x16\xDFa$#V[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\xF6Wa\x16\xF6a$#V[` \x02\x01QQQ\x83a\x17\t\x83`\x02a%1V[`\x0C\x81\x10a\x17\x19Wa\x17\x19a$#V[` \x02\x01R\x83\x82`\x02\x81\x10a\x170Wa\x170a$#V[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x17I\x83`\x03a%1V[`\x0C\x81\x10a\x17YWa\x17Ya$#V[` \x02\x01R\x83\x82`\x02\x81\x10a\x17pWa\x17pa$#V[` \x02\x01Q` \x01Q`\0`\x02\x81\x10a\x17\x8BWa\x17\x8Ba$#V[` \x02\x01Q\x83a\x17\x9C\x83`\x04a%1V[`\x0C\x81\x10a\x17\xACWa\x17\xACa$#V[` \x02\x01R\x83\x82`\x02\x81\x10a\x17\xC3Wa\x17\xC3a$#V[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x17\xDEWa\x17\xDEa$#V[` \x02\x01Q\x83a\x17\xEF\x83`\x05a%1V[`\x0C\x81\x10a\x17\xFFWa\x17\xFFa$#V[` \x02\x01RP\x80a\x18\x0F\x81a$\xFDV[\x91PPa\x16UV[Pa\x18 a\x1D\xFFV[`\0` \x82a\x01\x80\x85`\x08\x8C\xFA\x91Q\x91\x9C\x91\x15\x15\x9BP\x90\x99PPPPPPPPPPV[`\0\x80T`\xFF\x19\x16\x82\x15\x15\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F@\xE4\xED\x88\n)\xE0\xF6\xDD\xCE0tW\xFBu\xCD\xDFO\xEE\xF7\xD3\xEC\xB00\x1B\xFD\xF4\x97j\x0E-\xFC\x90` \x01`@Q\x80\x91\x03\x90\xA1PV[`\0\x80a\x18\x97\x84a\x1BJV[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a\x19\x15W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`?`$\x82\x01R\x7FBitmapUtils.orderedBytesArrayToB`D\x82\x01R\x7Fitmap: bitmap exceeds max value\0`d\x82\x01R`\x84\x01a\x04wV[\x90P[\x92\x91PPV[`\0\x80[\x82\x15a\x19\x18Wa\x193`\x01\x84a$\xBDV[\x90\x92\x16\x91\x80a\x19A\x81a&,V[\x91PPa\x19\"V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x02\0\x82a\xFF\xFF\x16\x10a\x19\xA5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01Roscalar-too-large`\x80\x1B`D\x82\x01R`d\x01a\x04wV[\x81a\xFF\xFF\x16`\x01\x14\x15a\x19\xB9WP\x81a\x19\x18V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01\x81\x90R\x84\x90`\x01\x90[\x81a\xFF\xFF\x16\x86a\xFF\xFF\x16\x10a\x1A\"W`\x01a\xFF\xFF\x87\x16`\xFF\x83\x16\x1C\x81\x16\x14\x15a\x1A\x05Wa\x1A\x02\x84\x84a\x14\x82\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R`\0\x80Q` a&O\x839\x81Q\x91Ra\x1C\xD7V[\x91\x95\x91\x94P\x90\x92PPPV[`\0a\x01\0\x82Q\x11\x15a\x1B\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FBitmapUtils.orderedBytesArrayToB\x90\x82\x01R\x7Fitmap: orderedBytesArray is too `d\x82\x01Rclong`\xE0\x1B`\x84\x82\x01R`\xA4\x01a\x04wV[\x81Qa\x1B\xE1WP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a\x1B\xF7Wa\x1B\xF7a$#V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a\x1C\xCEW\x84\x81\x81Q\x81\x10a\x1C%Wa\x1C%a$#V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a\x1C\xBAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FBitmapUtils.orderedBytesArrayToB`D\x82\x01R\x7Fitmap: orderedBytesArray is not `d\x82\x01Rf\x1B\xDC\x99\x19\\\x99Y`\xCA\x1B`\x84\x82\x01R`\xA4\x01a\x04wV[\x91\x81\x17\x91a\x1C\xC7\x81a$\xFDV[\x90Pa\x1C\nV[P\x90\x93\x92PPPV[`\0\x80a\x1C\xE2a\x1D\xFFV[a\x1C\xEAa\x1E\x1DV[` \x80\x82R\x81\x81\x01\x81\x90R`@\x82\x01\x81\x90R``\x82\x01\x88\x90R`\x80\x82\x01\x87\x90R`\xA0\x82\x01\x86\x90R\x82`\xC0\x83`\x05a\x07\xD0Z\x03\xFA\x92P\x82\x80\x15a\x13\xF4WP\x82a\x1DtW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7FBN254.expMod: call failure\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04wV[PQ\x95\x94PPPPPV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\x80\x01`@R\x80`\x04\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80a\x1D\xCEa\x1E;V[\x81R` \x01a\x1D\xDBa\x1E;V[\x90R\x90V[`@Q\x80a\x01\x80\x01`@R\x80`\x0C\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80` \x01`@R\x80`\x01\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\xC0\x01`@R\x80`\x06\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1E\x91Wa\x1E\x91a\x1EYV[`@R\x90V[`@Qa\x01\0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1E\x91Wa\x1E\x91a\x1EYV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1E\xE2Wa\x1E\xE2a\x1EYV[`@R\x91\x90PV[`\0`@\x82\x84\x03\x12\x15a\x1E\xFCW`\0\x80\xFD[a\x1F\x04a\x1EoV[\x90P\x815\x81R` \x82\x015` \x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x1F+W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17\x15a\x1FMWa\x1FMa\x1EYV[\x80`@RP\x80`@\x84\x01\x85\x81\x11\x15a\x1FdW`\0\x80\xFD[\x84[\x81\x81\x10\x15a\x1A\"W\x805\x83R` \x92\x83\x01\x92\x01a\x1FfV[`\0`\x80\x82\x84\x03\x12\x15a\x1F\x90W`\0\x80\xFD[a\x1F\x98a\x1EoV[\x90Pa\x1F\xA4\x83\x83a\x1F\x1AV[\x81Ra\x1F\xB3\x83`@\x84\x01a\x1F\x1AV[` \x82\x01R\x92\x91PPV[`\0\x80`\0\x80a\x01 \x85\x87\x03\x12\x15a\x1F\xD5W`\0\x80\xFD[\x845\x93Pa\x1F\xE6\x86` \x87\x01a\x1E\xEAV[\x92Pa\x1F\xF5\x86``\x87\x01a\x1F~V[\x91Pa \x04\x86`\xE0\x87\x01a\x1E\xEAV[\x90P\x92\x95\x91\x94P\x92PV[`\0` \x82\x84\x03\x12\x15a !W`\0\x80\xFD[\x815\x80\x15\x15\x81\x14a\x19\x15W`\0\x80\xFD[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1A\xC3W`\0\x80\xFD[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a ^Wa ^a\x1EYV[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a yW`\0\x80\xFD[\x815` a \x8Ea \x89\x83a EV[a\x1E\xBAV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a \xADW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a \xCFWa \xC2\x81a 1V[\x83R\x91\x83\x01\x91\x83\x01a \xB1V[P\x96\x95PPPPPPV[`\0\x82`\x1F\x83\x01\x12a \xEBW`\0\x80\xFD[\x815` a \xFBa \x89\x83a EV[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a!\x1AW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a \xCFWa!0\x88\x82a\x1E\xEAV[\x83R\x91\x83\x01\x91`@\x01a!\x1EV[`\0\x82`\x1F\x83\x01\x12a!OW`\0\x80\xFD[\x815` a!_a \x89\x83a EV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a!~W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a \xCFW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a!\xA1W`\0\x80\x81\xFD[a!\xAF\x89\x86\x83\x8B\x01\x01a hV[\x84RP\x91\x83\x01\x91\x83\x01a!\x82V[`\0a\x01\x80\x82\x84\x03\x12\x15a!\xD0W`\0\x80\xFD[a!\xD8a\x1E\x97V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a!\xF1W`\0\x80\xFD[a!\xFD\x85\x83\x86\x01a hV[\x83R` \x84\x015\x91P\x80\x82\x11\x15a\"\x13W`\0\x80\xFD[a\"\x1F\x85\x83\x86\x01a \xDAV[` \x84\x01R`@\x84\x015\x91P\x80\x82\x11\x15a\"8W`\0\x80\xFD[a\"D\x85\x83\x86\x01a \xDAV[`@\x84\x01Ra\"V\x85``\x86\x01a\x1F~V[``\x84\x01Ra\"h\x85`\xE0\x86\x01a\x1E\xEAV[`\x80\x84\x01Ra\x01 \x84\x015\x91P\x80\x82\x11\x15a\"\x82W`\0\x80\xFD[a\"\x8E\x85\x83\x86\x01a hV[`\xA0\x84\x01Ra\x01@\x84\x015\x91P\x80\x82\x11\x15a\"\xA8W`\0\x80\xFD[a\"\xB4\x85\x83\x86\x01a hV[`\xC0\x84\x01Ra\x01`\x84\x015\x91P\x80\x82\x11\x15a\"\xCEW`\0\x80\xFD[Pa\"\xDB\x84\x82\x85\x01a!>V[`\xE0\x83\x01RP\x92\x91PPV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a\"\xFFW`\0\x80\xFD[\x855\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a#\x1DW`\0\x80\xFD[\x81\x88\x01\x91P\x88`\x1F\x83\x01\x12a#1W`\0\x80\xFD[\x815\x81\x81\x11\x15a#@W`\0\x80\xFD[\x89` \x82\x85\x01\x01\x11\x15a#RW`\0\x80\xFD[` \x83\x01\x96P\x94Pa#f`@\x89\x01a 1V[\x93P``\x88\x015\x91P\x80\x82\x11\x15a#|W`\0\x80\xFD[Pa#\x89\x88\x82\x89\x01a!\xBDV[\x91PP\x92\x95P\x92\x95\x90\x93PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a#\xCFW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a#\xAAV[P\x94\x95\x94PPPPPV[`@\x81R`\0\x83Q`@\x80\x84\x01Ra#\xF5`\x80\x84\x01\x82a#\x96V[\x90P` \x85\x01Q`?\x19\x84\x83\x03\x01``\x85\x01Ra$\x12\x82\x82a#\x96V[\x92PPP\x82` \x83\x01R\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x82a$VWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`\0` \x82\x84\x03\x12\x15a$mW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x19\x15W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a$\x96W`\0\x80\xFD[\x81Q`\xFF\x81\x16\x81\x14a\x19\x15W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x82\x10\x15a$\xCFWa$\xCFa$\xA7V[P\x03\x90V[`\0` \x82\x84\x03\x12\x15a$\xE6W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x19\x15W`\0\x80\xFD[`\0`\0\x19\x82\x14\x15a%\x11Wa%\x11a$\xA7V[P`\x01\x01\x90V[`\0` \x82\x84\x03\x12\x15a%*W`\0\x80\xFD[PQ\x91\x90PV[`\0\x82\x19\x82\x11\x15a%DWa%Da$\xA7V[P\x01\x90V[`\0` \x82\x84\x03\x12\x15a%[W`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x16\x81\x14a\x19\x15W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a%\x86W`\0\x80\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x19\x15W`\0\x80\xFD[`\0`\x01`\x01``\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15a%\xBDWa%\xBDa$\xA7V[\x03\x93\x92PPPV[c\xFF\xFF\xFF\xFF`\xE0\x1B\x83`\xE0\x1B\x16\x81R`\0`\x04\x82\x01\x83Q` \x80\x86\x01`\0[\x83\x81\x10\x15a&\0W\x81Q\x85R\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a%\xE4V[P\x92\x97\x96PPPPPPPV[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a&'Wa&'a$\xA7V[P\x02\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a&DWa&Da$\xA7V[`\x01\x01\x93\x92PPPV\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGBLSSignatureChecker.checkSignatu\xA2dipfsX\"\x12 \xB7\t\x88\x9CF>\xE8\x8B\x96\xDF\x1EC\">\xD8G\xF3\xB0\xDE\x8E!|.\xF3\xED\x97\x04\xDB\xAC\x87U\x02dsolcC\0\x08\x0C\x003", + ); + /**Event with signature `StaleStakesForbiddenUpdate(bool)` and selector `0x40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc`. + ```solidity + event StaleStakesForbiddenUpdate(bool value); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct StaleStakesForbiddenUpdate { + #[allow(missing_docs)] + pub value: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for StaleStakesForbiddenUpdate { + type DataTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "StaleStakesForbiddenUpdate(bool)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 64u8, 228u8, 237u8, 136u8, 10u8, 41u8, 224u8, 246u8, 221u8, 206u8, 48u8, 116u8, + 87u8, 251u8, 117u8, 205u8, 223u8, 79u8, 238u8, 247u8, 211u8, 236u8, 176u8, + 48u8, 27u8, 253u8, 244u8, 151u8, 106u8, 14u8, 45u8, 252u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { value: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.value, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for StaleStakesForbiddenUpdate { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&StaleStakesForbiddenUpdate> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &StaleStakesForbiddenUpdate) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. + ```solidity + constructor(address _registryCoordinator); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _registryCoordinator: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value._registryCoordinator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _registryCoordinator: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._registryCoordinator, + ), + ) + } + } + }; + /**Function with signature `blsApkRegistry()` and selector `0x5df45946`. + ```solidity + function blsApkRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct blsApkRegistryCall {} + ///Container type for the return parameters of the [`blsApkRegistry()`](blsApkRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct blsApkRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: blsApkRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for blsApkRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: blsApkRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for blsApkRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for blsApkRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = blsApkRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "blsApkRegistry()"; + const SELECTOR: [u8; 4] = [93u8, 244u8, 89u8, 70u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))` and selector `0x6efb4636`. + ```solidity + function checkSignatures(bytes32 msgHash, bytes memory quorumNumbers, uint32 referenceBlockNumber, IBLSSignatureChecker.NonSignerStakesAndSignature memory params) external view returns (IBLSSignatureChecker.QuorumStakeTotals memory, bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct checkSignaturesCall { + pub msgHash: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumbers: alloy::sol_types::private::Bytes, + pub referenceBlockNumber: u32, + pub params: ::RustType, + } + ///Container type for the return parameters of the [`checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))`](checkSignaturesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct checkSignaturesReturn { + pub _0: ::RustType, + pub _1: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Uint<32>, + IBLSSignatureChecker::NonSignerStakesAndSignature, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::Bytes, + u32, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: checkSignaturesCall) -> Self { + ( + value.msgHash, + value.quorumNumbers, + value.referenceBlockNumber, + value.params, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for checkSignaturesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + msgHash: tuple.0, + quorumNumbers: tuple.1, + referenceBlockNumber: tuple.2, + params: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + IBLSSignatureChecker::QuorumStakeTotals, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: checkSignaturesReturn) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for checkSignaturesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for checkSignaturesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Uint<32>, + IBLSSignatureChecker::NonSignerStakesAndSignature, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = checkSignaturesReturn; + type ReturnTuple<'a> = ( + IBLSSignatureChecker::QuorumStakeTotals, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))"; + const SELECTOR: [u8; 4] = [110u8, 251u8, 70u8, 54u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.msgHash), + ::tokenize( + &self.quorumNumbers, + ), + as alloy_sol_types::SolType>::tokenize(&self.referenceBlockNumber), + ::tokenize( + &self.params, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `delegation()` and selector `0xdf5cf723`. + ```solidity + function delegation() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegationCall {} + ///Container type for the return parameters of the [`delegation()`](delegationCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for delegationCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = delegationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "delegation()"; + const SELECTOR: [u8; 4] = [223u8, 92u8, 247u8, 35u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registryCoordinator()` and selector `0x6d14a987`. + ```solidity + function registryCoordinator() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registryCoordinatorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registryCoordinatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registryCoordinator()"; + const SELECTOR: [u8; 4] = [109u8, 20u8, 169u8, 135u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setStaleStakesForbidden(bool)` and selector `0x416c7e5e`. + ```solidity + function setStaleStakesForbidden(bool value) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setStaleStakesForbiddenCall { + pub value: bool, + } + ///Container type for the return parameters of the [`setStaleStakesForbidden(bool)`](setStaleStakesForbiddenCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setStaleStakesForbiddenReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setStaleStakesForbiddenCall) -> Self { + (value.value,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setStaleStakesForbiddenCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { value: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setStaleStakesForbiddenReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setStaleStakesForbiddenReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setStaleStakesForbiddenCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Bool,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setStaleStakesForbiddenReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setStaleStakesForbidden(bool)"; + const SELECTOR: [u8; 4] = [65u8, 108u8, 126u8, 94u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.value, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `stakeRegistry()` and selector `0x68304835`. + ```solidity + function stakeRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakeRegistryCall {} + ///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakeRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakeRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakeRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakeRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakeRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for stakeRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = stakeRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "stakeRegistry()"; + const SELECTOR: [u8; 4] = [104u8, 48u8, 72u8, 53u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `staleStakesForbidden()` and selector `0xb98d0908`. + ```solidity + function staleStakesForbidden() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct staleStakesForbiddenCall {} + ///Container type for the return parameters of the [`staleStakesForbidden()`](staleStakesForbiddenCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct staleStakesForbiddenReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: staleStakesForbiddenCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for staleStakesForbiddenCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: staleStakesForbiddenReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for staleStakesForbiddenReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for staleStakesForbiddenCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = staleStakesForbiddenReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "staleStakesForbidden()"; + const SELECTOR: [u8; 4] = [185u8, 141u8, 9u8, 8u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `trySignatureAndApkVerification(bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256))` and selector `0x171f1d5b`. + ```solidity + function trySignatureAndApkVerification(bytes32 msgHash, BN254.G1Point memory apk, BN254.G2Point memory apkG2, BN254.G1Point memory sigma) external view returns (bool pairingSuccessful, bool siganatureIsValid); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct trySignatureAndApkVerificationCall { + pub msgHash: alloy::sol_types::private::FixedBytes<32>, + pub apk: ::RustType, + pub apkG2: ::RustType, + pub sigma: ::RustType, + } + ///Container type for the return parameters of the [`trySignatureAndApkVerification(bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256))`](trySignatureAndApkVerificationCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct trySignatureAndApkVerificationReturn { + pub pairingSuccessful: bool, + pub siganatureIsValid: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + BN254::G1Point, + BN254::G2Point, + BN254::G1Point, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + ::RustType, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: trySignatureAndApkVerificationCall) -> Self { + (value.msgHash, value.apk, value.apkG2, value.sigma) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for trySignatureAndApkVerificationCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + msgHash: tuple.0, + apk: tuple.1, + apkG2: tuple.2, + sigma: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bool, + alloy::sol_types::sol_data::Bool, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool, bool); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: trySignatureAndApkVerificationReturn) -> Self { + (value.pairingSuccessful, value.siganatureIsValid) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for trySignatureAndApkVerificationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + pairingSuccessful: tuple.0, + siganatureIsValid: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for trySignatureAndApkVerificationCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + BN254::G1Point, + BN254::G2Point, + BN254::G1Point, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = trySignatureAndApkVerificationReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Bool, + alloy::sol_types::sol_data::Bool, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "trySignatureAndApkVerification(bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256))"; + const SELECTOR: [u8; 4] = [23u8, 31u8, 29u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.msgHash), + ::tokenize(&self.apk), + ::tokenize(&self.apkG2), + ::tokenize(&self.sigma), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`BLSSignatureChecker`](self) function calls. + pub enum BLSSignatureCheckerCalls { + blsApkRegistry(blsApkRegistryCall), + checkSignatures(checkSignaturesCall), + delegation(delegationCall), + registryCoordinator(registryCoordinatorCall), + setStaleStakesForbidden(setStaleStakesForbiddenCall), + stakeRegistry(stakeRegistryCall), + staleStakesForbidden(staleStakesForbiddenCall), + trySignatureAndApkVerification(trySignatureAndApkVerificationCall), + } + #[automatically_derived] + impl BLSSignatureCheckerCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [23u8, 31u8, 29u8, 91u8], + [65u8, 108u8, 126u8, 94u8], + [93u8, 244u8, 89u8, 70u8], + [104u8, 48u8, 72u8, 53u8], + [109u8, 20u8, 169u8, 135u8], + [110u8, 251u8, 70u8, 54u8], + [185u8, 141u8, 9u8, 8u8], + [223u8, 92u8, 247u8, 35u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for BLSSignatureCheckerCalls { + const NAME: &'static str = "BLSSignatureCheckerCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 8usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::blsApkRegistry(_) => { + ::SELECTOR + } + Self::checkSignatures(_) => { + ::SELECTOR + } + Self::delegation(_) => ::SELECTOR, + Self::registryCoordinator(_) => { + ::SELECTOR + } + Self::setStaleStakesForbidden(_) => { + ::SELECTOR + } + Self::stakeRegistry(_) => ::SELECTOR, + Self::staleStakesForbidden(_) => { + ::SELECTOR + } + Self::trySignatureAndApkVerification(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn trySignatureAndApkVerification( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + BLSSignatureCheckerCalls::trySignatureAndApkVerification, + ) + } + trySignatureAndApkVerification + }, + { + fn setStaleStakesForbidden( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSSignatureCheckerCalls::setStaleStakesForbidden) + } + setStaleStakesForbidden + }, + { + fn blsApkRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSSignatureCheckerCalls::blsApkRegistry) + } + blsApkRegistry + }, + { + fn stakeRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSSignatureCheckerCalls::stakeRegistry) + } + stakeRegistry + }, + { + fn registryCoordinator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSSignatureCheckerCalls::registryCoordinator) + } + registryCoordinator + }, + { + fn checkSignatures( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSSignatureCheckerCalls::checkSignatures) + } + checkSignatures + }, + { + fn staleStakesForbidden( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(BLSSignatureCheckerCalls::staleStakesForbidden) + } + staleStakesForbidden + }, + { + fn delegation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(BLSSignatureCheckerCalls::delegation) + } + delegation + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::blsApkRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::checkSignatures(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::delegation(inner) => { + ::abi_encoded_size(inner) + } + Self::registryCoordinator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setStaleStakesForbidden(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::stakeRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::staleStakesForbidden(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::trySignatureAndApkVerification(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::blsApkRegistry(inner) => { + ::abi_encode_raw(inner, out) + } + Self::checkSignatures(inner) => { + ::abi_encode_raw(inner, out) + } + Self::delegation(inner) => { + ::abi_encode_raw(inner, out) + } + Self::registryCoordinator(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::setStaleStakesForbidden(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::stakeRegistry(inner) => { + ::abi_encode_raw(inner, out) + } + Self::staleStakesForbidden(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::trySignatureAndApkVerification(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + } + } + } + ///Container for all the [`BLSSignatureChecker`](self) events. + pub enum BLSSignatureCheckerEvents { + StaleStakesForbiddenUpdate(StaleStakesForbiddenUpdate), + } + #[automatically_derived] + impl BLSSignatureCheckerEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[[ + 64u8, 228u8, 237u8, 136u8, 10u8, 41u8, 224u8, 246u8, 221u8, 206u8, 48u8, 116u8, 87u8, + 251u8, 117u8, 205u8, 223u8, 79u8, 238u8, 247u8, 211u8, 236u8, 176u8, 48u8, 27u8, 253u8, + 244u8, 151u8, 106u8, 14u8, 45u8, 252u8, + ]]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for BLSSignatureCheckerEvents { + const NAME: &'static str = "BLSSignatureCheckerEvents"; + const COUNT: usize = 1usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::StaleStakesForbiddenUpdate) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for BLSSignatureCheckerEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::StaleStakesForbiddenUpdate(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::StaleStakesForbiddenUpdate(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`BLSSignatureChecker`](self) contract instance. + + See the [wrapper's documentation](`BLSSignatureCheckerInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> BLSSignatureCheckerInstance { + BLSSignatureCheckerInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _registryCoordinator: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future>> + { + BLSSignatureCheckerInstance::::deploy(provider, _registryCoordinator) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _registryCoordinator: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + BLSSignatureCheckerInstance::::deploy_builder(provider, _registryCoordinator) + } + /**A [`BLSSignatureChecker`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`BLSSignatureChecker`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct BLSSignatureCheckerInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for BLSSignatureCheckerInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("BLSSignatureCheckerInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BLSSignatureCheckerInstance + { + /**Creates a new wrapper around an on-chain [`BLSSignatureChecker`](self) contract instance. + + See the [wrapper's documentation](`BLSSignatureCheckerInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _registryCoordinator: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, _registryCoordinator); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _registryCoordinator: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode(&constructorCall { + _registryCoordinator, + })[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl BLSSignatureCheckerInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> BLSSignatureCheckerInstance { + BLSSignatureCheckerInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BLSSignatureCheckerInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`blsApkRegistry`] function. + pub fn blsApkRegistry( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&blsApkRegistryCall {}) + } + ///Creates a new call builder for the [`checkSignatures`] function. + pub fn checkSignatures( + &self, + msgHash: alloy::sol_types::private::FixedBytes<32>, + quorumNumbers: alloy::sol_types::private::Bytes, + referenceBlockNumber: u32, + params: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&checkSignaturesCall { + msgHash, + quorumNumbers, + referenceBlockNumber, + params, + }) + } + ///Creates a new call builder for the [`delegation`] function. + pub fn delegation(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&delegationCall {}) + } + ///Creates a new call builder for the [`registryCoordinator`] function. + pub fn registryCoordinator( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®istryCoordinatorCall {}) + } + ///Creates a new call builder for the [`setStaleStakesForbidden`] function. + pub fn setStaleStakesForbidden( + &self, + value: bool, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setStaleStakesForbiddenCall { value }) + } + ///Creates a new call builder for the [`stakeRegistry`] function. + pub fn stakeRegistry(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&stakeRegistryCall {}) + } + ///Creates a new call builder for the [`staleStakesForbidden`] function. + pub fn staleStakesForbidden( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&staleStakesForbiddenCall {}) + } + ///Creates a new call builder for the [`trySignatureAndApkVerification`] function. + pub fn trySignatureAndApkVerification( + &self, + msgHash: alloy::sol_types::private::FixedBytes<32>, + apk: ::RustType, + apkG2: ::RustType, + sigma: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&trySignatureAndApkVerificationCall { + msgHash, + apk, + apkG2, + sigma, + }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BLSSignatureCheckerInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`StaleStakesForbiddenUpdate`] event. + pub fn StaleStakesForbiddenUpdate_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/bn254.rs b/crates/utils/src/bn254.rs new file mode 100644 index 00000000..ad254164 --- /dev/null +++ b/crates/utils/src/bn254.rs @@ -0,0 +1,216 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface BN254 {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod BN254 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122059517be07911a7d36769780693acca5a35b51f47c849b3781223d4fb19eccf2f64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 YQ{\xE0y\x11\xA7\xD3gix\x06\x93\xAC\xCAZ5\xB5\x1FG\xC8I\xB3x\x12#\xD4\xFB\x19\xEC\xCF/dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122059517be07911a7d36769780693acca5a35b51f47c849b3781223d4fb19eccf2f64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 YQ{\xE0y\x11\xA7\xD3gix\x06\x93\xAC\xCAZ5\xB5\x1FG\xC8I\xB3x\x12#\xD4\xFB\x19\xEC\xCF/dsolcC\0\x08\x0C\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance. + + See the [wrapper's documentation](`BN254Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> BN254Instance { + BN254Instance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> { + BN254Instance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + BN254Instance::::deploy_builder(provider) + } + /**A [`BN254`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`BN254`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct BN254Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for BN254Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("BN254Instance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BN254Instance + { + /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance. + + See the [wrapper's documentation](`BN254Instance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl BN254Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> BN254Instance { + BN254Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BN254Instance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BN254Instance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/checkpointsupgradeable.rs b/crates/utils/src/checkpointsupgradeable.rs new file mode 100644 index 00000000..ace6eed1 --- /dev/null +++ b/crates/utils/src/checkpointsupgradeable.rs @@ -0,0 +1,222 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface CheckpointsUpgradeable {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod CheckpointsUpgradeable { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f5a7542902fe498ba3876024fc428c47ca46aa619453e1349eddcb270c9e8e7164736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xF5\xA7T)\x02\xFEI\x8B\xA3\x87`$\xFCB\x8CG\xCAF\xAAa\x94S\xE14\x9E\xDD\xCB'\x0C\x9E\x8EqdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f5a7542902fe498ba3876024fc428c47ca46aa619453e1349eddcb270c9e8e7164736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xF5\xA7T)\x02\xFEI\x8B\xA3\x87`$\xFCB\x8CG\xCAF\xAAa\x94S\xE14\x9E\xDD\xCB'\x0C\x9E\x8EqdsolcC\0\x08\x0C\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`CheckpointsUpgradeable`](self) contract instance. + + See the [wrapper's documentation](`CheckpointsUpgradeableInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> CheckpointsUpgradeableInstance { + CheckpointsUpgradeableInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + CheckpointsUpgradeableInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + CheckpointsUpgradeableInstance::::deploy_builder(provider) + } + /**A [`CheckpointsUpgradeable`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`CheckpointsUpgradeable`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct CheckpointsUpgradeableInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for CheckpointsUpgradeableInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("CheckpointsUpgradeableInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > CheckpointsUpgradeableInstance + { + /**Creates a new wrapper around an on-chain [`CheckpointsUpgradeable`](self) contract instance. + + See the [wrapper's documentation](`CheckpointsUpgradeableInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl CheckpointsUpgradeableInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> CheckpointsUpgradeableInstance { + CheckpointsUpgradeableInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > CheckpointsUpgradeableInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > CheckpointsUpgradeableInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/configsreadwriter.rs b/crates/utils/src/configsreadwriter.rs new file mode 100644 index 00000000..98492f29 --- /dev/null +++ b/crates/utils/src/configsreadwriter.rs @@ -0,0 +1,425 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ConfigsReadWriter { + function IS_SCRIPT() external view returns (bool); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_SCRIPT", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ConfigsReadWriter { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052600c805462ff00ff191662010001179055348015602057600080fd5b5060898061002f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063f8ccbf4714602d575b600080fd5b600c54603f9062010000900460ff1681565b604051901515815260200160405180910390f3fea2646970667358221220d5ec627cde6fce34f1f50fa9e130a252a6a025566cbacf476ab94f15e00d123c64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15` W`\0\x80\xFD[P`\x89\x80a\0/`\09`\0\xF3\xFE`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`(W`\x005`\xE0\x1C\x80c\xF8\xCC\xBFG\x14`-W[`\0\x80\xFD[`\x0CT`?\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3\xFE\xA2dipfsX\"\x12 \xD5\xECb|\xDEo\xCE4\xF1\xF5\x0F\xA9\xE10\xA2R\xA6\xA0%Vl\xBA\xCFGj\xB9O\x15\xE0\r\x12 = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_SCRIPTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_SCRIPTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_SCRIPT()"; + const SELECTOR: [u8; 4] = [248u8, 204u8, 191u8, 71u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`ConfigsReadWriter`](self) function calls. + pub enum ConfigsReadWriterCalls { + IS_SCRIPT(IS_SCRIPTCall), + } + #[automatically_derived] + impl ConfigsReadWriterCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[248u8, 204u8, 191u8, 71u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ConfigsReadWriterCalls { + const NAME: &'static str = "ConfigsReadWriterCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_SCRIPT(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[{ + fn IS_SCRIPT( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ConfigsReadWriterCalls::IS_SCRIPT) + } + IS_SCRIPT + }]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ConfigsReadWriter`](self) contract instance. + + See the [wrapper's documentation](`ConfigsReadWriterInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ConfigsReadWriterInstance { + ConfigsReadWriterInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + ConfigsReadWriterInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + ConfigsReadWriterInstance::::deploy_builder(provider) + } + /**A [`ConfigsReadWriter`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ConfigsReadWriter`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ConfigsReadWriterInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ConfigsReadWriterInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ConfigsReadWriterInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ConfigsReadWriterInstance + { + /**Creates a new wrapper around an on-chain [`ConfigsReadWriter`](self) contract instance. + + See the [wrapper's documentation](`ConfigsReadWriterInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ConfigsReadWriterInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ConfigsReadWriterInstance { + ConfigsReadWriterInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ConfigsReadWriterInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`IS_SCRIPT`] function. + pub fn IS_SCRIPT(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_SCRIPTCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ConfigsReadWriterInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/context.rs b/crates/utils/src/context.rs new file mode 100644 index 00000000..1079b6dc --- /dev/null +++ b/crates/utils/src/context.rs @@ -0,0 +1,219 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface Context {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod Context { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Context`](self) contract instance. + + See the [wrapper's documentation](`ContextInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ContextInstance { + ContextInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + ContextInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + ContextInstance::::deploy_builder(provider) + } + /**A [`Context`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`Context`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ContextInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ContextInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ContextInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ContextInstance + { + /**Creates a new wrapper around an on-chain [`Context`](self) contract instance. + + See the [wrapper's documentation](`ContextInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ContextInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ContextInstance { + ContextInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ContextInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ContextInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/contextupgradeable.rs b/crates/utils/src/contextupgradeable.rs new file mode 100644 index 00000000..8e3ee5f9 --- /dev/null +++ b/crates/utils/src/contextupgradeable.rs @@ -0,0 +1,392 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ContextUpgradeable { + event Initialized(uint8 version); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ContextUpgradeable { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`. + ```solidity + event Initialized(uint8 version); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Initialized { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "Initialized(uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, + 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, + 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { version: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.version, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Initialized { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Initialized> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Initialized) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + ///Container for all the [`ContextUpgradeable`](self) events. + pub enum ContextUpgradeableEvents { + Initialized(Initialized), + } + #[automatically_derived] + impl ContextUpgradeableEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[[ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, 56u8, + 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, 96u8, 206u8, + 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ]]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for ContextUpgradeableEvents { + const NAME: &'static str = "ContextUpgradeableEvents"; + const COUNT: usize = 1usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::Initialized) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ContextUpgradeableEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ContextUpgradeable`](self) contract instance. + + See the [wrapper's documentation](`ContextUpgradeableInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ContextUpgradeableInstance { + ContextUpgradeableInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + ContextUpgradeableInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + ContextUpgradeableInstance::::deploy_builder(provider) + } + /**A [`ContextUpgradeable`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ContextUpgradeable`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ContextUpgradeableInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ContextUpgradeableInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ContextUpgradeableInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ContextUpgradeableInstance + { + /**Creates a new wrapper around an on-chain [`ContextUpgradeable`](self) contract instance. + + See the [wrapper's documentation](`ContextUpgradeableInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ContextUpgradeableInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ContextUpgradeableInstance { + ContextUpgradeableInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ContextUpgradeableInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ContextUpgradeableInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Initialized`] event. + pub fn Initialized_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/contractsregistry.rs b/crates/utils/src/contractsregistry.rs new file mode 100644 index 00000000..36b05d1f --- /dev/null +++ b/crates/utils/src/contractsregistry.rs @@ -0,0 +1,1527 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ContractsRegistry { + function anvil_test(bytes32) external view returns (uint256 timestamp, uint256 block_number, int256 index); + function contractCount() external view returns (uint256); + function contractNames(uint256) external view returns (string memory); + function contracts(string memory) external view returns (address); + function get_test_values(string memory test_name, int256 index) external view returns (uint256, uint256, int256); + function registerContract(string memory name, address _contract) external; + function store_test(string memory test_name, int256 index, uint256 timestamp, uint256 block_number) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "anvil_test", + "inputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "timestamp", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "block_number", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "index", + "type": "int256", + "internalType": "int256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "contractCount", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "contractNames", + "inputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "contracts", + "inputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "get_test_values", + "inputs": [ + { + "name": "test_name", + "type": "string", + "internalType": "string" + }, + { + "name": "index", + "type": "int256", + "internalType": "int256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "", + "type": "int256", + "internalType": "int256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registerContract", + "inputs": [ + { + "name": "name", + "type": "string", + "internalType": "string" + }, + { + "name": "_contract", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "store_test", + "inputs": [ + { + "name": "test_name", + "type": "string", + "internalType": "string" + }, + { + "name": "index", + "type": "int256", + "internalType": "int256" + }, + { + "name": "timestamp", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "block_number", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ContractsRegistry { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50610822806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80637fafbbdd1161005b5780637fafbbdd146100ee5780638736381a1461011d5780638c5b838514610134578063acd5baa21461018057600080fd5b80633ca6bb92146100825780636842109e146100ab5780637f3c2c28146100d9575b600080fd5b6100956100903660046104f7565b610193565b6040516100a29190610540565b60405180910390f35b6100be6100b9366004610616565b61022d565b604080519384526020840192909252908201526060016100a2565b6100ec6100e736600461065b565b6102a2565b005b6100be6100fc3660046104f7565b60036020526000908152604090208054600182015460029092015490919083565b61012660025481565b6040519081526020016100a2565b6101686101423660046106b9565b80516020818301810180516000825292820191909301209152546001600160a01b031681565b6040516001600160a01b0390911681526020016100a2565b6100ec61018e3660046106f6565b6103a0565b600160205260009081526040902080546101ac9061074a565b80601f01602080910402602001604051908101604052809291908181526020018280546101d89061074a565b80156102255780601f106101fa57610100808354040283529160200191610225565b820191906000526020600020905b81548152906001019060200180831161020857829003601f168201915b505050505081565b60008060008060036000878760405160200161024a929190610785565b60408051601f1981840301815291815281516020928301208352828201939093529082016000208251606081018452815480825260018301549382018490526002909201549301839052955093509150509250925092565b60006001600160a01b03166000836040516102bd91906107a7565b908152604051908190036020019020546001600160a01b0316146103275760405162461bcd60e51b815260206004820152601b60248201527f636f6e747261637420616c726561647920726567697374657265640000000000604482015260640160405180910390fd5b8060008360405161033891906107a7565b908152604080516020928190038301902080546001600160a01b0319166001600160a01b0394909416939093179092556002546000908152600182529190912083516103869285019061045e565b5060028054906000610397836107c3565b91905055505050565b6003600085856040516020016103b7929190610785565b604051602081830303815290604052805190602001208152602001908152602001600020600001546000146103eb57600080fd5b604051806060016040528083815260200182815260200184815250600360008660405160200161041b91906107a7565b60408051601f1981840301815291815281516020928301208352828201939093529082016000208351815590830151600182015591015160029091015550505050565b82805461046a9061074a565b90600052602060002090601f01602090048101928261048c57600085556104d2565b82601f106104a557805160ff19168380011785556104d2565b828001600101855582156104d2579182015b828111156104d25782518255916020019190600101906104b7565b506104de9291506104e2565b5090565b5b808211156104de57600081556001016104e3565b60006020828403121561050957600080fd5b5035919050565b60005b8381101561052b578181015183820152602001610513565b8381111561053a576000848401525b50505050565b602081526000825180602084015261055f816040850160208701610510565b601f01601f19169190910160400192915050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261059a57600080fd5b813567ffffffffffffffff808211156105b5576105b5610573565b604051601f8301601f19908116603f011681019082821181831017156105dd576105dd610573565b816040528381528660208588010111156105f657600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561062957600080fd5b823567ffffffffffffffff81111561064057600080fd5b61064c85828601610589565b95602094909401359450505050565b6000806040838503121561066e57600080fd5b823567ffffffffffffffff81111561068557600080fd5b61069185828601610589565b92505060208301356001600160a01b03811681146106ae57600080fd5b809150509250929050565b6000602082840312156106cb57600080fd5b813567ffffffffffffffff8111156106e257600080fd5b6106ee84828501610589565b949350505050565b6000806000806080858703121561070c57600080fd5b843567ffffffffffffffff81111561072357600080fd5b61072f87828801610589565b97602087013597506040870135966060013595509350505050565b600181811c9082168061075e57607f821691505b6020821081141561077f57634e487b7160e01b600052602260045260246000fd5b50919050565b60008351610797818460208801610510565b9190910191825250602001919050565b600082516107b9818460208701610510565b9190910192915050565b60006000198214156107e557634e487b7160e01b600052601160045260246000fd5b506001019056fea264697066735822122089157e890af6e8b77edbdff673557bf07f0d01ea7e96dfd51b2d23aa3a6cc6d864736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x08\"\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0}W`\x005`\xE0\x1C\x80c\x7F\xAF\xBB\xDD\x11a\0[W\x80c\x7F\xAF\xBB\xDD\x14a\0\xEEW\x80c\x8768\x1A\x14a\x01\x1DW\x80c\x8C[\x83\x85\x14a\x014W\x80c\xAC\xD5\xBA\xA2\x14a\x01\x80W`\0\x80\xFD[\x80c<\xA6\xBB\x92\x14a\0\x82W\x80chB\x10\x9E\x14a\0\xABW\x80c\x7F<,(\x14a\0\xD9W[`\0\x80\xFD[a\0\x95a\0\x906`\x04a\x04\xF7V[a\x01\x93V[`@Qa\0\xA2\x91\x90a\x05@V[`@Q\x80\x91\x03\x90\xF3[a\0\xBEa\0\xB96`\x04a\x06\x16V[a\x02-V[`@\x80Q\x93\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R``\x01a\0\xA2V[a\0\xECa\0\xE76`\x04a\x06[V[a\x02\xA2V[\0[a\0\xBEa\0\xFC6`\x04a\x04\xF7V[`\x03` R`\0\x90\x81R`@\x90 \x80T`\x01\x82\x01T`\x02\x90\x92\x01T\x90\x91\x90\x83V[a\x01&`\x02T\x81V[`@Q\x90\x81R` \x01a\0\xA2V[a\x01ha\x01B6`\x04a\x06\xB9V[\x80Q` \x81\x83\x01\x81\x01\x80Q`\0\x82R\x92\x82\x01\x91\x90\x93\x01 \x91RT`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xA2V[a\0\xECa\x01\x8E6`\x04a\x06\xF6V[a\x03\xA0V[`\x01` R`\0\x90\x81R`@\x90 \x80Ta\x01\xAC\x90a\x07JV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01\xD8\x90a\x07JV[\x80\x15a\x02%W\x80`\x1F\x10a\x01\xFAWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02%V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\x08W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[`\0\x80`\0\x80`\x03`\0\x87\x87`@Q` \x01a\x02J\x92\x91\x90a\x07\x85V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 \x83R\x82\x82\x01\x93\x90\x93R\x90\x82\x01`\0 \x82Q``\x81\x01\x84R\x81T\x80\x82R`\x01\x83\x01T\x93\x82\x01\x84\x90R`\x02\x90\x92\x01T\x93\x01\x83\x90R\x95P\x93P\x91PP\x92P\x92P\x92V[`\0`\x01`\x01`\xA0\x1B\x03\x16`\0\x83`@Qa\x02\xBD\x91\x90a\x07\xA7V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x14a\x03'W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7Fcontract already registered\0\0\0\0\0`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[\x80`\0\x83`@Qa\x038\x91\x90a\x07\xA7V[\x90\x81R`@\x80Q` \x92\x81\x90\x03\x83\x01\x90 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x94\x90\x94\x16\x93\x90\x93\x17\x90\x92U`\x02T`\0\x90\x81R`\x01\x82R\x91\x90\x91 \x83Qa\x03\x86\x92\x85\x01\x90a\x04^V[P`\x02\x80T\x90`\0a\x03\x97\x83a\x07\xC3V[\x91\x90PUPPPV[`\x03`\0\x85\x85`@Q` \x01a\x03\xB7\x92\x91\x90a\x07\x85V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 `\0\x01T`\0\x14a\x03\xEBW`\0\x80\xFD[`@Q\x80``\x01`@R\x80\x83\x81R` \x01\x82\x81R` \x01\x84\x81RP`\x03`\0\x86`@Q` \x01a\x04\x1B\x91\x90a\x07\xA7V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 \x83R\x82\x82\x01\x93\x90\x93R\x90\x82\x01`\0 \x83Q\x81U\x90\x83\x01Q`\x01\x82\x01U\x91\x01Q`\x02\x90\x91\x01UPPPPV[\x82\x80Ta\x04j\x90a\x07JV[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82a\x04\x8CW`\0\x85Ua\x04\xD2V[\x82`\x1F\x10a\x04\xA5W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ua\x04\xD2V[\x82\x80\x01`\x01\x01\x85U\x82\x15a\x04\xD2W\x91\x82\x01[\x82\x81\x11\x15a\x04\xD2W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90a\x04\xB7V[Pa\x04\xDE\x92\x91Pa\x04\xE2V[P\x90V[[\x80\x82\x11\x15a\x04\xDEW`\0\x81U`\x01\x01a\x04\xE3V[`\0` \x82\x84\x03\x12\x15a\x05\tW`\0\x80\xFD[P5\x91\x90PV[`\0[\x83\x81\x10\x15a\x05+W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\x13V[\x83\x81\x11\x15a\x05:W`\0\x84\x84\x01R[PPPPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x05_\x81`@\x85\x01` \x87\x01a\x05\x10V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12a\x05\x9AW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x05\xB5Wa\x05\xB5a\x05sV[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x05\xDDWa\x05\xDDa\x05sV[\x81`@R\x83\x81R\x86` \x85\x88\x01\x01\x11\x15a\x05\xF6W`\0\x80\xFD[\x83` \x87\x01` \x83\x017`\0` \x85\x83\x01\x01R\x80\x94PPPPP\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a\x06)W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06@W`\0\x80\xFD[a\x06L\x85\x82\x86\x01a\x05\x89V[\x95` \x94\x90\x94\x015\x94PPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x06nW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\x85W`\0\x80\xFD[a\x06\x91\x85\x82\x86\x01a\x05\x89V[\x92PP` \x83\x015`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x06\xAEW`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x06\xCBW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\xE2W`\0\x80\xFD[a\x06\xEE\x84\x82\x85\x01a\x05\x89V[\x94\x93PPPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x07\x0CW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07#W`\0\x80\xFD[a\x07/\x87\x82\x88\x01a\x05\x89V[\x97` \x87\x015\x97P`@\x87\x015\x96``\x015\x95P\x93PPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x07^W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x07\x7FWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0\x83Qa\x07\x97\x81\x84` \x88\x01a\x05\x10V[\x91\x90\x91\x01\x91\x82RP` \x01\x91\x90PV[`\0\x82Qa\x07\xB9\x81\x84` \x87\x01a\x05\x10V[\x91\x90\x91\x01\x92\x91PPV[`\0`\0\x19\x82\x14\x15a\x07\xE5WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \x89\x15~\x89\n\xF6\xE8\xB7~\xDB\xDF\xF6sU{\xF0\x7F\r\x01\xEA~\x96\xDF\xD5\x1B-#\xAA:l\xC6\xD8dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80637fafbbdd1161005b5780637fafbbdd146100ee5780638736381a1461011d5780638c5b838514610134578063acd5baa21461018057600080fd5b80633ca6bb92146100825780636842109e146100ab5780637f3c2c28146100d9575b600080fd5b6100956100903660046104f7565b610193565b6040516100a29190610540565b60405180910390f35b6100be6100b9366004610616565b61022d565b604080519384526020840192909252908201526060016100a2565b6100ec6100e736600461065b565b6102a2565b005b6100be6100fc3660046104f7565b60036020526000908152604090208054600182015460029092015490919083565b61012660025481565b6040519081526020016100a2565b6101686101423660046106b9565b80516020818301810180516000825292820191909301209152546001600160a01b031681565b6040516001600160a01b0390911681526020016100a2565b6100ec61018e3660046106f6565b6103a0565b600160205260009081526040902080546101ac9061074a565b80601f01602080910402602001604051908101604052809291908181526020018280546101d89061074a565b80156102255780601f106101fa57610100808354040283529160200191610225565b820191906000526020600020905b81548152906001019060200180831161020857829003601f168201915b505050505081565b60008060008060036000878760405160200161024a929190610785565b60408051601f1981840301815291815281516020928301208352828201939093529082016000208251606081018452815480825260018301549382018490526002909201549301839052955093509150509250925092565b60006001600160a01b03166000836040516102bd91906107a7565b908152604051908190036020019020546001600160a01b0316146103275760405162461bcd60e51b815260206004820152601b60248201527f636f6e747261637420616c726561647920726567697374657265640000000000604482015260640160405180910390fd5b8060008360405161033891906107a7565b908152604080516020928190038301902080546001600160a01b0319166001600160a01b0394909416939093179092556002546000908152600182529190912083516103869285019061045e565b5060028054906000610397836107c3565b91905055505050565b6003600085856040516020016103b7929190610785565b604051602081830303815290604052805190602001208152602001908152602001600020600001546000146103eb57600080fd5b604051806060016040528083815260200182815260200184815250600360008660405160200161041b91906107a7565b60408051601f1981840301815291815281516020928301208352828201939093529082016000208351815590830151600182015591015160029091015550505050565b82805461046a9061074a565b90600052602060002090601f01602090048101928261048c57600085556104d2565b82601f106104a557805160ff19168380011785556104d2565b828001600101855582156104d2579182015b828111156104d25782518255916020019190600101906104b7565b506104de9291506104e2565b5090565b5b808211156104de57600081556001016104e3565b60006020828403121561050957600080fd5b5035919050565b60005b8381101561052b578181015183820152602001610513565b8381111561053a576000848401525b50505050565b602081526000825180602084015261055f816040850160208701610510565b601f01601f19169190910160400192915050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261059a57600080fd5b813567ffffffffffffffff808211156105b5576105b5610573565b604051601f8301601f19908116603f011681019082821181831017156105dd576105dd610573565b816040528381528660208588010111156105f657600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561062957600080fd5b823567ffffffffffffffff81111561064057600080fd5b61064c85828601610589565b95602094909401359450505050565b6000806040838503121561066e57600080fd5b823567ffffffffffffffff81111561068557600080fd5b61069185828601610589565b92505060208301356001600160a01b03811681146106ae57600080fd5b809150509250929050565b6000602082840312156106cb57600080fd5b813567ffffffffffffffff8111156106e257600080fd5b6106ee84828501610589565b949350505050565b6000806000806080858703121561070c57600080fd5b843567ffffffffffffffff81111561072357600080fd5b61072f87828801610589565b97602087013597506040870135966060013595509350505050565b600181811c9082168061075e57607f821691505b6020821081141561077f57634e487b7160e01b600052602260045260246000fd5b50919050565b60008351610797818460208801610510565b9190910191825250602001919050565b600082516107b9818460208701610510565b9190910192915050565b60006000198214156107e557634e487b7160e01b600052601160045260246000fd5b506001019056fea264697066735822122089157e890af6e8b77edbdff673557bf07f0d01ea7e96dfd51b2d23aa3a6cc6d864736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0}W`\x005`\xE0\x1C\x80c\x7F\xAF\xBB\xDD\x11a\0[W\x80c\x7F\xAF\xBB\xDD\x14a\0\xEEW\x80c\x8768\x1A\x14a\x01\x1DW\x80c\x8C[\x83\x85\x14a\x014W\x80c\xAC\xD5\xBA\xA2\x14a\x01\x80W`\0\x80\xFD[\x80c<\xA6\xBB\x92\x14a\0\x82W\x80chB\x10\x9E\x14a\0\xABW\x80c\x7F<,(\x14a\0\xD9W[`\0\x80\xFD[a\0\x95a\0\x906`\x04a\x04\xF7V[a\x01\x93V[`@Qa\0\xA2\x91\x90a\x05@V[`@Q\x80\x91\x03\x90\xF3[a\0\xBEa\0\xB96`\x04a\x06\x16V[a\x02-V[`@\x80Q\x93\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R``\x01a\0\xA2V[a\0\xECa\0\xE76`\x04a\x06[V[a\x02\xA2V[\0[a\0\xBEa\0\xFC6`\x04a\x04\xF7V[`\x03` R`\0\x90\x81R`@\x90 \x80T`\x01\x82\x01T`\x02\x90\x92\x01T\x90\x91\x90\x83V[a\x01&`\x02T\x81V[`@Q\x90\x81R` \x01a\0\xA2V[a\x01ha\x01B6`\x04a\x06\xB9V[\x80Q` \x81\x83\x01\x81\x01\x80Q`\0\x82R\x92\x82\x01\x91\x90\x93\x01 \x91RT`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xA2V[a\0\xECa\x01\x8E6`\x04a\x06\xF6V[a\x03\xA0V[`\x01` R`\0\x90\x81R`@\x90 \x80Ta\x01\xAC\x90a\x07JV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01\xD8\x90a\x07JV[\x80\x15a\x02%W\x80`\x1F\x10a\x01\xFAWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02%V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\x08W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[`\0\x80`\0\x80`\x03`\0\x87\x87`@Q` \x01a\x02J\x92\x91\x90a\x07\x85V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 \x83R\x82\x82\x01\x93\x90\x93R\x90\x82\x01`\0 \x82Q``\x81\x01\x84R\x81T\x80\x82R`\x01\x83\x01T\x93\x82\x01\x84\x90R`\x02\x90\x92\x01T\x93\x01\x83\x90R\x95P\x93P\x91PP\x92P\x92P\x92V[`\0`\x01`\x01`\xA0\x1B\x03\x16`\0\x83`@Qa\x02\xBD\x91\x90a\x07\xA7V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x14a\x03'W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7Fcontract already registered\0\0\0\0\0`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[\x80`\0\x83`@Qa\x038\x91\x90a\x07\xA7V[\x90\x81R`@\x80Q` \x92\x81\x90\x03\x83\x01\x90 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x94\x90\x94\x16\x93\x90\x93\x17\x90\x92U`\x02T`\0\x90\x81R`\x01\x82R\x91\x90\x91 \x83Qa\x03\x86\x92\x85\x01\x90a\x04^V[P`\x02\x80T\x90`\0a\x03\x97\x83a\x07\xC3V[\x91\x90PUPPPV[`\x03`\0\x85\x85`@Q` \x01a\x03\xB7\x92\x91\x90a\x07\x85V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x81R` \x01\x90\x81R` \x01`\0 `\0\x01T`\0\x14a\x03\xEBW`\0\x80\xFD[`@Q\x80``\x01`@R\x80\x83\x81R` \x01\x82\x81R` \x01\x84\x81RP`\x03`\0\x86`@Q` \x01a\x04\x1B\x91\x90a\x07\xA7V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 \x83R\x82\x82\x01\x93\x90\x93R\x90\x82\x01`\0 \x83Q\x81U\x90\x83\x01Q`\x01\x82\x01U\x91\x01Q`\x02\x90\x91\x01UPPPPV[\x82\x80Ta\x04j\x90a\x07JV[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82a\x04\x8CW`\0\x85Ua\x04\xD2V[\x82`\x1F\x10a\x04\xA5W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ua\x04\xD2V[\x82\x80\x01`\x01\x01\x85U\x82\x15a\x04\xD2W\x91\x82\x01[\x82\x81\x11\x15a\x04\xD2W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90a\x04\xB7V[Pa\x04\xDE\x92\x91Pa\x04\xE2V[P\x90V[[\x80\x82\x11\x15a\x04\xDEW`\0\x81U`\x01\x01a\x04\xE3V[`\0` \x82\x84\x03\x12\x15a\x05\tW`\0\x80\xFD[P5\x91\x90PV[`\0[\x83\x81\x10\x15a\x05+W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\x13V[\x83\x81\x11\x15a\x05:W`\0\x84\x84\x01R[PPPPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x05_\x81`@\x85\x01` \x87\x01a\x05\x10V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12a\x05\x9AW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x05\xB5Wa\x05\xB5a\x05sV[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x05\xDDWa\x05\xDDa\x05sV[\x81`@R\x83\x81R\x86` \x85\x88\x01\x01\x11\x15a\x05\xF6W`\0\x80\xFD[\x83` \x87\x01` \x83\x017`\0` \x85\x83\x01\x01R\x80\x94PPPPP\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a\x06)W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06@W`\0\x80\xFD[a\x06L\x85\x82\x86\x01a\x05\x89V[\x95` \x94\x90\x94\x015\x94PPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x06nW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\x85W`\0\x80\xFD[a\x06\x91\x85\x82\x86\x01a\x05\x89V[\x92PP` \x83\x015`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x06\xAEW`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x06\xCBW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\xE2W`\0\x80\xFD[a\x06\xEE\x84\x82\x85\x01a\x05\x89V[\x94\x93PPPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x07\x0CW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07#W`\0\x80\xFD[a\x07/\x87\x82\x88\x01a\x05\x89V[\x97` \x87\x015\x97P`@\x87\x015\x96``\x015\x95P\x93PPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x07^W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x07\x7FWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0\x83Qa\x07\x97\x81\x84` \x88\x01a\x05\x10V[\x91\x90\x91\x01\x91\x82RP` \x01\x91\x90PV[`\0\x82Qa\x07\xB9\x81\x84` \x87\x01a\x05\x10V[\x91\x90\x91\x01\x92\x91PPV[`\0`\0\x19\x82\x14\x15a\x07\xE5WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \x89\x15~\x89\n\xF6\xE8\xB7~\xDB\xDF\xF6sU{\xF0\x7F\r\x01\xEA~\x96\xDF\xD5\x1B-#\xAA:l\xC6\xD8dsolcC\0\x08\x0C\x003", + ); + /**Function with signature `anvil_test(bytes32)` and selector `0x7fafbbdd`. + ```solidity + function anvil_test(bytes32) external view returns (uint256 timestamp, uint256 block_number, int256 index); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct anvil_testCall { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`anvil_test(bytes32)`](anvil_testCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct anvil_testReturn { + pub timestamp: alloy::sol_types::private::primitives::aliases::U256, + pub block_number: alloy::sol_types::private::primitives::aliases::U256, + pub index: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: anvil_testCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for anvil_testCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Int<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::I256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: anvil_testReturn) -> Self { + (value.timestamp, value.block_number, value.index) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for anvil_testReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + timestamp: tuple.0, + block_number: tuple.1, + index: tuple.2, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for anvil_testCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = anvil_testReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Int<256>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "anvil_test(bytes32)"; + const SELECTOR: [u8; 4] = [127u8, 175u8, 187u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._0), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `contractCount()` and selector `0x8736381a`. + ```solidity + function contractCount() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct contractCountCall {} + ///Container type for the return parameters of the [`contractCount()`](contractCountCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct contractCountReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: contractCountCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for contractCountCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: contractCountReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for contractCountReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for contractCountCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = contractCountReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "contractCount()"; + const SELECTOR: [u8; 4] = [135u8, 54u8, 56u8, 26u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `contractNames(uint256)` and selector `0x3ca6bb92`. + ```solidity + function contractNames(uint256) external view returns (string memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct contractNamesCall { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`contractNames(uint256)`](contractNamesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct contractNamesReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: contractNamesCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for contractNamesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: contractNamesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for contractNamesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for contractNamesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = contractNamesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "contractNames(uint256)"; + const SELECTOR: [u8; 4] = [60u8, 166u8, 187u8, 146u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `contracts(string)` and selector `0x8c5b8385`. + ```solidity + function contracts(string memory) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct contractsCall { + pub _0: alloy::sol_types::private::String, + } + ///Container type for the return parameters of the [`contracts(string)`](contractsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct contractsReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: contractsCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for contractsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: contractsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for contractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for contractsCall { + type Parameters<'a> = (alloy::sol_types::sol_data::String,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = contractsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "contracts(string)"; + const SELECTOR: [u8; 4] = [140u8, 91u8, 131u8, 133u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `get_test_values(string,int256)` and selector `0x6842109e`. + ```solidity + function get_test_values(string memory test_name, int256 index) external view returns (uint256, uint256, int256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct get_test_valuesCall { + pub test_name: alloy::sol_types::private::String, + pub index: alloy::sol_types::private::primitives::aliases::I256, + } + ///Container type for the return parameters of the [`get_test_values(string,int256)`](get_test_valuesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct get_test_valuesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + pub _1: alloy::sol_types::private::primitives::aliases::U256, + pub _2: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Int<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::String, + alloy::sol_types::private::primitives::aliases::I256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: get_test_valuesCall) -> Self { + (value.test_name, value.index) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for get_test_valuesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + test_name: tuple.0, + index: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Int<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::I256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: get_test_valuesReturn) -> Self { + (value._0, value._1, value._2) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for get_test_valuesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + _2: tuple.2, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for get_test_valuesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Int<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = get_test_valuesReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Int<256>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "get_test_values(string,int256)"; + const SELECTOR: [u8; 4] = [104u8, 66u8, 16u8, 158u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.test_name, + ), + as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registerContract(string,address)` and selector `0x7f3c2c28`. + ```solidity + function registerContract(string memory name, address _contract) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerContractCall { + pub name: alloy::sol_types::private::String, + pub _contract: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`registerContract(string,address)`](registerContractCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerContractReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::String, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerContractCall) -> Self { + (value.name, value._contract) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerContractCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + name: tuple.0, + _contract: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerContractReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerContractReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registerContractCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registerContractReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registerContract(string,address)"; + const SELECTOR: [u8; 4] = [127u8, 60u8, 44u8, 40u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.name, + ), + ::tokenize( + &self._contract, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `store_test(string,int256,uint256,uint256)` and selector `0xacd5baa2`. + ```solidity + function store_test(string memory test_name, int256 index, uint256 timestamp, uint256 block_number) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct store_testCall { + pub test_name: alloy::sol_types::private::String, + pub index: alloy::sol_types::private::primitives::aliases::I256, + pub timestamp: alloy::sol_types::private::primitives::aliases::U256, + pub block_number: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`store_test(string,int256,uint256,uint256)`](store_testCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct store_testReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Int<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::String, + alloy::sol_types::private::primitives::aliases::I256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: store_testCall) -> Self { + ( + value.test_name, + value.index, + value.timestamp, + value.block_number, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for store_testCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + test_name: tuple.0, + index: tuple.1, + timestamp: tuple.2, + block_number: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: store_testReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for store_testReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for store_testCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Int<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = store_testReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "store_test(string,int256,uint256,uint256)"; + const SELECTOR: [u8; 4] = [172u8, 213u8, 186u8, 162u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.test_name, + ), + as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + as alloy_sol_types::SolType>::tokenize( + &self.timestamp, + ), + as alloy_sol_types::SolType>::tokenize( + &self.block_number, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`ContractsRegistry`](self) function calls. + pub enum ContractsRegistryCalls { + anvil_test(anvil_testCall), + contractCount(contractCountCall), + contractNames(contractNamesCall), + contracts(contractsCall), + get_test_values(get_test_valuesCall), + registerContract(registerContractCall), + store_test(store_testCall), + } + #[automatically_derived] + impl ContractsRegistryCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [60u8, 166u8, 187u8, 146u8], + [104u8, 66u8, 16u8, 158u8], + [127u8, 60u8, 44u8, 40u8], + [127u8, 175u8, 187u8, 221u8], + [135u8, 54u8, 56u8, 26u8], + [140u8, 91u8, 131u8, 133u8], + [172u8, 213u8, 186u8, 162u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ContractsRegistryCalls { + const NAME: &'static str = "ContractsRegistryCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 7usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::anvil_test(_) => ::SELECTOR, + Self::contractCount(_) => ::SELECTOR, + Self::contractNames(_) => ::SELECTOR, + Self::contracts(_) => ::SELECTOR, + Self::get_test_values(_) => { + ::SELECTOR + } + Self::registerContract(_) => { + ::SELECTOR + } + Self::store_test(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn contractNames( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ContractsRegistryCalls::contractNames) + } + contractNames + }, + { + fn get_test_values( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ContractsRegistryCalls::get_test_values) + } + get_test_values + }, + { + fn registerContract( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ContractsRegistryCalls::registerContract) + } + registerContract + }, + { + fn anvil_test( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ContractsRegistryCalls::anvil_test) + } + anvil_test + }, + { + fn contractCount( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ContractsRegistryCalls::contractCount) + } + contractCount + }, + { + fn contracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ContractsRegistryCalls::contracts) + } + contracts + }, + { + fn store_test( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ContractsRegistryCalls::store_test) + } + store_test + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::anvil_test(inner) => { + ::abi_encoded_size(inner) + } + Self::contractCount(inner) => { + ::abi_encoded_size(inner) + } + Self::contractNames(inner) => { + ::abi_encoded_size(inner) + } + Self::contracts(inner) => { + ::abi_encoded_size(inner) + } + Self::get_test_values(inner) => { + ::abi_encoded_size(inner) + } + Self::registerContract(inner) => { + ::abi_encoded_size(inner) + } + Self::store_test(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::anvil_test(inner) => { + ::abi_encode_raw(inner, out) + } + Self::contractCount(inner) => { + ::abi_encode_raw(inner, out) + } + Self::contractNames(inner) => { + ::abi_encode_raw(inner, out) + } + Self::contracts(inner) => { + ::abi_encode_raw(inner, out) + } + Self::get_test_values(inner) => { + ::abi_encode_raw(inner, out) + } + Self::registerContract(inner) => { + ::abi_encode_raw(inner, out) + } + Self::store_test(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ContractsRegistry`](self) contract instance. + + See the [wrapper's documentation](`ContractsRegistryInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ContractsRegistryInstance { + ContractsRegistryInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + ContractsRegistryInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + ContractsRegistryInstance::::deploy_builder(provider) + } + /**A [`ContractsRegistry`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ContractsRegistry`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ContractsRegistryInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ContractsRegistryInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ContractsRegistryInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ContractsRegistryInstance + { + /**Creates a new wrapper around an on-chain [`ContractsRegistry`](self) contract instance. + + See the [wrapper's documentation](`ContractsRegistryInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ContractsRegistryInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ContractsRegistryInstance { + ContractsRegistryInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ContractsRegistryInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`anvil_test`] function. + pub fn anvil_test( + &self, + _0: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&anvil_testCall { _0 }) + } + ///Creates a new call builder for the [`contractCount`] function. + pub fn contractCount(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&contractCountCall {}) + } + ///Creates a new call builder for the [`contractNames`] function. + pub fn contractNames( + &self, + _0: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&contractNamesCall { _0 }) + } + ///Creates a new call builder for the [`contracts`] function. + pub fn contracts( + &self, + _0: alloy::sol_types::private::String, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&contractsCall { _0 }) + } + ///Creates a new call builder for the [`get_test_values`] function. + pub fn get_test_values( + &self, + test_name: alloy::sol_types::private::String, + index: alloy::sol_types::private::primitives::aliases::I256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&get_test_valuesCall { test_name, index }) + } + ///Creates a new call builder for the [`registerContract`] function. + pub fn registerContract( + &self, + name: alloy::sol_types::private::String, + _contract: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterContractCall { name, _contract }) + } + ///Creates a new call builder for the [`store_test`] function. + pub fn store_test( + &self, + test_name: alloy::sol_types::private::String, + index: alloy::sol_types::private::primitives::aliases::I256, + timestamp: alloy::sol_types::private::primitives::aliases::U256, + block_number: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&store_testCall { + test_name, + index, + timestamp, + block_number, + }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ContractsRegistryInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/delegationmanager.rs b/crates/utils/src/delegationmanager.rs new file mode 100644 index 00000000..f697072b --- /dev/null +++ b/crates/utils/src/delegationmanager.rs @@ -0,0 +1,13873 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library IDelegationManager { + struct OperatorDetails { address __deprecated_earningsReceiver; address delegationApprover; uint32 stakerOptOutWindowBlocks; } + struct QueuedWithdrawalParams { address[] strategies; uint256[] shares; address withdrawer; } + struct Withdrawal { address staker; address delegatedTo; address withdrawer; uint256 nonce; uint32 startBlock; address[] strategies; uint256[] shares; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IDelegationManager { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct OperatorDetails { address __deprecated_earningsReceiver; address delegationApprover; uint32 stakerOptOutWindowBlocks; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OperatorDetails { + pub __deprecated_earningsReceiver: alloy::sol_types::private::Address, + pub delegationApprover: alloy::sol_types::private::Address, + pub stakerOptOutWindowBlocks: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + u32, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OperatorDetails) -> Self { + ( + value.__deprecated_earningsReceiver, + value.delegationApprover, + value.stakerOptOutWindowBlocks, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OperatorDetails { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + __deprecated_earningsReceiver: tuple.0, + delegationApprover: tuple.1, + stakerOptOutWindowBlocks: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OperatorDetails { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OperatorDetails { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.__deprecated_earningsReceiver, + ), + ::tokenize( + &self.delegationApprover, + ), + as alloy_sol_types::SolType>::tokenize( + &self.stakerOptOutWindowBlocks, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OperatorDetails { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OperatorDetails { + const NAME: &'static str = "OperatorDetails"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OperatorDetails(address __deprecated_earningsReceiver,address delegationApprover,uint32 stakerOptOutWindowBlocks)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.__deprecated_earningsReceiver, + ) + .0, + ::eip712_data_word( + &self.delegationApprover, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.stakerOptOutWindowBlocks, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OperatorDetails { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.__deprecated_earningsReceiver, + ) + + ::topic_preimage_length( + &rust.delegationApprover, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.stakerOptOutWindowBlocks, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.__deprecated_earningsReceiver, + out, + ); + ::encode_topic_preimage( + &rust.delegationApprover, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.stakerOptOutWindowBlocks, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct QueuedWithdrawalParams { address[] strategies; uint256[] shares; address withdrawer; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct QueuedWithdrawalParams { + pub strategies: alloy::sol_types::private::Vec, + pub shares: + alloy::sol_types::private::Vec, + pub withdrawer: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: QueuedWithdrawalParams) -> Self { + (value.strategies, value.shares, value.withdrawer) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for QueuedWithdrawalParams { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategies: tuple.0, + shares: tuple.1, + withdrawer: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for QueuedWithdrawalParams { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for QueuedWithdrawalParams { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.strategies), + , + > as alloy_sol_types::SolType>::tokenize(&self.shares), + ::tokenize( + &self.withdrawer, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for QueuedWithdrawalParams { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for QueuedWithdrawalParams { + const NAME: &'static str = "QueuedWithdrawalParams"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "QueuedWithdrawalParams(address[] strategies,uint256[] shares,address withdrawer)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word(&self.strategies) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word(&self.shares) + .0, + ::eip712_data_word( + &self.withdrawer, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for QueuedWithdrawalParams { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.strategies, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.shares, + ) + + ::topic_preimage_length( + &rust.withdrawer, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.strategies, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.shares, + out, + ); + ::encode_topic_preimage( + &rust.withdrawer, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct Withdrawal { address staker; address delegatedTo; address withdrawer; uint256 nonce; uint32 startBlock; address[] strategies; uint256[] shares; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct Withdrawal { + pub staker: alloy::sol_types::private::Address, + pub delegatedTo: alloy::sol_types::private::Address, + pub withdrawer: alloy::sol_types::private::Address, + pub nonce: alloy::sol_types::private::primitives::aliases::U256, + pub startBlock: u32, + pub strategies: alloy::sol_types::private::Vec, + pub shares: + alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + u32, + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: Withdrawal) -> Self { + ( + value.staker, + value.delegatedTo, + value.withdrawer, + value.nonce, + value.startBlock, + value.strategies, + value.shares, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for Withdrawal { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + staker: tuple.0, + delegatedTo: tuple.1, + withdrawer: tuple.2, + nonce: tuple.3, + startBlock: tuple.4, + strategies: tuple.5, + shares: tuple.6, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for Withdrawal { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for Withdrawal { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.staker, + ), + ::tokenize( + &self.delegatedTo, + ), + ::tokenize( + &self.withdrawer, + ), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + as alloy_sol_types::SolType>::tokenize(&self.startBlock), + as alloy_sol_types::SolType>::tokenize(&self.strategies), + , + > as alloy_sol_types::SolType>::tokenize(&self.shares), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Withdrawal { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for Withdrawal { + const NAME: &'static str = "Withdrawal"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "Withdrawal(address staker,address delegatedTo,address withdrawer,uint256 nonce,uint32 startBlock,address[] strategies,uint256[] shares)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.staker, + ) + .0, + ::eip712_data_word( + &self.delegatedTo, + ) + .0, + ::eip712_data_word( + &self.withdrawer, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.startBlock) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.strategies) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word(&self.shares) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Withdrawal { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.staker, + ) + + ::topic_preimage_length( + &rust.delegatedTo, + ) + + ::topic_preimage_length( + &rust.withdrawer, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.startBlock, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.strategies, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.shares, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.staker, + out, + ); + ::encode_topic_preimage( + &rust.delegatedTo, + out, + ); + ::encode_topic_preimage( + &rust.withdrawer, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonce, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.startBlock, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.strategies, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.shares, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IDelegationManager`](self) contract instance. + + See the [wrapper's documentation](`IDelegationManagerInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IDelegationManagerInstance { + IDelegationManagerInstance::::new(address, provider) + } + /**A [`IDelegationManager`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IDelegationManager`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IDelegationManagerInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IDelegationManagerInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IDelegationManagerInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IDelegationManagerInstance + { + /**Creates a new wrapper around an on-chain [`IDelegationManager`](self) contract instance. + + See the [wrapper's documentation](`IDelegationManagerInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IDelegationManagerInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IDelegationManagerInstance { + IDelegationManagerInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IDelegationManagerInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IDelegationManagerInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library ISignatureUtils { + struct SignatureWithExpiry { bytes signature; uint256 expiry; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ISignatureUtils { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct SignatureWithExpiry { bytes signature; uint256 expiry; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SignatureWithExpiry { + pub signature: alloy::sol_types::private::Bytes, + pub expiry: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: SignatureWithExpiry) -> Self { + (value.signature, value.expiry) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for SignatureWithExpiry { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + signature: tuple.0, + expiry: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for SignatureWithExpiry { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for SignatureWithExpiry { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.signature, + ), + as alloy_sol_types::SolType>::tokenize( + &self.expiry, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for SignatureWithExpiry { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for SignatureWithExpiry { + const NAME: &'static str = "SignatureWithExpiry"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "SignatureWithExpiry(bytes signature,uint256 expiry)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.signature, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.expiry) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for SignatureWithExpiry { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.signature, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.expiry, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.signature, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.expiry, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ISignatureUtilsInstance { + ISignatureUtilsInstance::::new(address, provider) + } + /**A [`ISignatureUtils`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ISignatureUtils`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ISignatureUtilsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ISignatureUtilsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ISignatureUtilsInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ISignatureUtilsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ISignatureUtilsInstance { + ISignatureUtilsInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library IDelegationManager { + struct OperatorDetails { + address __deprecated_earningsReceiver; + address delegationApprover; + uint32 stakerOptOutWindowBlocks; + } + struct QueuedWithdrawalParams { + address[] strategies; + uint256[] shares; + address withdrawer; + } + struct Withdrawal { + address staker; + address delegatedTo; + address withdrawer; + uint256 nonce; + uint32 startBlock; + address[] strategies; + uint256[] shares; + } +} + +library ISignatureUtils { + struct SignatureWithExpiry { + bytes signature; + uint256 expiry; + } +} + +interface DelegationManager { + event Initialized(uint8 version); + event MinWithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue); + event OperatorDetailsModified(address indexed operator, IDelegationManager.OperatorDetails newOperatorDetails); + event OperatorMetadataURIUpdated(address indexed operator, string metadataURI); + event OperatorRegistered(address indexed operator, IDelegationManager.OperatorDetails operatorDetails); + event OperatorSharesDecreased(address indexed operator, address staker, address strategy, uint256 shares); + event OperatorSharesIncreased(address indexed operator, address staker, address strategy, uint256 shares); + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + event Paused(address indexed account, uint256 newPausedStatus); + event PauserRegistrySet(address pauserRegistry, address newPauserRegistry); + event StakerDelegated(address indexed staker, address indexed operator); + event StakerForceUndelegated(address indexed staker, address indexed operator); + event StakerUndelegated(address indexed staker, address indexed operator); + event StrategyWithdrawalDelayBlocksSet(address strategy, uint256 previousValue, uint256 newValue); + event Unpaused(address indexed account, uint256 newPausedStatus); + event WithdrawalCompleted(bytes32 withdrawalRoot); + event WithdrawalQueued(bytes32 withdrawalRoot, IDelegationManager.Withdrawal withdrawal); + + constructor(address _strategyManager, address _slasher, address _eigenPodManager); + + function DELEGATION_APPROVAL_TYPEHASH() external view returns (bytes32); + function DOMAIN_TYPEHASH() external view returns (bytes32); + function MAX_STAKER_OPT_OUT_WINDOW_BLOCKS() external view returns (uint256); + function MAX_WITHDRAWAL_DELAY_BLOCKS() external view returns (uint256); + function STAKER_DELEGATION_TYPEHASH() external view returns (bytes32); + function beaconChainETHStrategy() external view returns (address); + function calculateCurrentStakerDelegationDigestHash(address staker, address operator, uint256 expiry) external view returns (bytes32); + function calculateDelegationApprovalDigestHash(address staker, address operator, address _delegationApprover, bytes32 approverSalt, uint256 expiry) external view returns (bytes32); + function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) external view returns (bytes32); + function calculateWithdrawalRoot(IDelegationManager.Withdrawal memory withdrawal) external pure returns (bytes32); + function completeQueuedWithdrawal(IDelegationManager.Withdrawal memory withdrawal, address[] memory tokens, uint256 middlewareTimesIndex, bool receiveAsTokens) external; + function completeQueuedWithdrawals(IDelegationManager.Withdrawal[] memory withdrawals, address[][] memory tokens, uint256[] memory middlewareTimesIndexes, bool[] memory receiveAsTokens) external; + function cumulativeWithdrawalsQueued(address) external view returns (uint256); + function decreaseDelegatedShares(address staker, address strategy, uint256 shares) external; + function delegateTo(address operator, ISignatureUtils.SignatureWithExpiry memory approverSignatureAndExpiry, bytes32 approverSalt) external; + function delegateToBySignature(address staker, address operator, ISignatureUtils.SignatureWithExpiry memory stakerSignatureAndExpiry, ISignatureUtils.SignatureWithExpiry memory approverSignatureAndExpiry, bytes32 approverSalt) external; + function delegatedTo(address) external view returns (address); + function delegationApprover(address operator) external view returns (address); + function delegationApproverSaltIsSpent(address, bytes32) external view returns (bool); + function domainSeparator() external view returns (bytes32); + function eigenPodManager() external view returns (address); + function getDelegatableShares(address staker) external view returns (address[] memory, uint256[] memory); + function getOperatorShares(address operator, address[] memory strategies) external view returns (uint256[] memory); + function getWithdrawalDelay(address[] memory strategies) external view returns (uint256); + function increaseDelegatedShares(address staker, address strategy, uint256 shares) external; + function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus, uint256 _minWithdrawalDelayBlocks, address[] memory _strategies, uint256[] memory _withdrawalDelayBlocks) external; + function isDelegated(address staker) external view returns (bool); + function isOperator(address operator) external view returns (bool); + function minWithdrawalDelayBlocks() external view returns (uint256); + function modifyOperatorDetails(IDelegationManager.OperatorDetails memory newOperatorDetails) external; + function operatorDetails(address operator) external view returns (IDelegationManager.OperatorDetails memory); + function operatorShares(address, address) external view returns (uint256); + function owner() external view returns (address); + function pause(uint256 newPausedStatus) external; + function pauseAll() external; + function paused(uint8 index) external view returns (bool); + function paused() external view returns (uint256); + function pauserRegistry() external view returns (address); + function pendingWithdrawals(bytes32) external view returns (bool); + function queueWithdrawals(IDelegationManager.QueuedWithdrawalParams[] memory queuedWithdrawalParams) external returns (bytes32[] memory); + function registerAsOperator(IDelegationManager.OperatorDetails memory registeringOperatorDetails, string memory metadataURI) external; + function renounceOwnership() external; + function setMinWithdrawalDelayBlocks(uint256 newMinWithdrawalDelayBlocks) external; + function setPauserRegistry(address newPauserRegistry) external; + function setStrategyWithdrawalDelayBlocks(address[] memory strategies, uint256[] memory withdrawalDelayBlocks) external; + function slasher() external view returns (address); + function stakerNonce(address) external view returns (uint256); + function stakerOptOutWindowBlocks(address operator) external view returns (uint256); + function strategyManager() external view returns (address); + function strategyWithdrawalDelayBlocks(address) external view returns (uint256); + function transferOwnership(address newOwner) external; + function undelegate(address staker) external returns (bytes32[] memory withdrawalRoots); + function unpause(uint256 newPausedStatus) external; + function updateOperatorMetadataURI(string memory metadataURI) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_strategyManager", + "type": "address", + "internalType": "contract IStrategyManager" + }, + { + "name": "_slasher", + "type": "address", + "internalType": "contract ISlasher" + }, + { + "name": "_eigenPodManager", + "type": "address", + "internalType": "contract IEigenPodManager" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "DELEGATION_APPROVAL_TYPEHASH", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "DOMAIN_TYPEHASH", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "MAX_STAKER_OPT_OUT_WINDOW_BLOCKS", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "MAX_WITHDRAWAL_DELAY_BLOCKS", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "STAKER_DELEGATION_TYPEHASH", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "beaconChainETHStrategy", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStrategy" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "calculateCurrentStakerDelegationDigestHash", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "calculateDelegationApprovalDigestHash", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "_delegationApprover", + "type": "address", + "internalType": "address" + }, + { + "name": "approverSalt", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "calculateStakerDelegationDigestHash", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "_stakerNonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "calculateWithdrawalRoot", + "inputs": [ + { + "name": "withdrawal", + "type": "tuple", + "internalType": "struct IDelegationManager.Withdrawal", + "components": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "delegatedTo", + "type": "address", + "internalType": "address" + }, + { + "name": "withdrawer", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "startBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "completeQueuedWithdrawal", + "inputs": [ + { + "name": "withdrawal", + "type": "tuple", + "internalType": "struct IDelegationManager.Withdrawal", + "components": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "delegatedTo", + "type": "address", + "internalType": "address" + }, + { + "name": "withdrawer", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "startBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + } + ] + }, + { + "name": "tokens", + "type": "address[]", + "internalType": "contract IERC20[]" + }, + { + "name": "middlewareTimesIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "receiveAsTokens", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "completeQueuedWithdrawals", + "inputs": [ + { + "name": "withdrawals", + "type": "tuple[]", + "internalType": "struct IDelegationManager.Withdrawal[]", + "components": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "delegatedTo", + "type": "address", + "internalType": "address" + }, + { + "name": "withdrawer", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "startBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + } + ] + }, + { + "name": "tokens", + "type": "address[][]", + "internalType": "contract IERC20[][]" + }, + { + "name": "middlewareTimesIndexes", + "type": "uint256[]", + "internalType": "uint256[]" + }, + { + "name": "receiveAsTokens", + "type": "bool[]", + "internalType": "bool[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "cumulativeWithdrawalsQueued", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "decreaseDelegatedShares", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "delegateTo", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "approverSignatureAndExpiry", + "type": "tuple", + "internalType": "struct ISignatureUtils.SignatureWithExpiry", + "components": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "approverSalt", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "delegateToBySignature", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "stakerSignatureAndExpiry", + "type": "tuple", + "internalType": "struct ISignatureUtils.SignatureWithExpiry", + "components": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "approverSignatureAndExpiry", + "type": "tuple", + "internalType": "struct ISignatureUtils.SignatureWithExpiry", + "components": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "approverSalt", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "delegatedTo", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "delegationApprover", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "delegationApproverSaltIsSpent", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "domainSeparator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "eigenPodManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IEigenPodManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getDelegatableShares", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorShares", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getWithdrawalDelay", + "inputs": [ + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "increaseDelegatedShares", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "initialOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "_pauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + }, + { + "name": "initialPausedStatus", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_minWithdrawalDelayBlocks", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "_withdrawalDelayBlocks", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "isDelegated", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isOperator", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "minWithdrawalDelayBlocks", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "modifyOperatorDetails", + "inputs": [ + { + "name": "newOperatorDetails", + "type": "tuple", + "internalType": "struct IDelegationManager.OperatorDetails", + "components": [ + { + "name": "__deprecated_earningsReceiver", + "type": "address", + "internalType": "address" + }, + { + "name": "delegationApprover", + "type": "address", + "internalType": "address" + }, + { + "name": "stakerOptOutWindowBlocks", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "operatorDetails", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IDelegationManager.OperatorDetails", + "components": [ + { + "name": "__deprecated_earningsReceiver", + "type": "address", + "internalType": "address" + }, + { + "name": "delegationApprover", + "type": "address", + "internalType": "address" + }, + { + "name": "stakerOptOutWindowBlocks", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "operatorShares", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "address", + "internalType": "contract IStrategy" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pause", + "inputs": [ + { + "name": "newPausedStatus", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "pauseAll", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "paused", + "inputs": [ + { + "name": "index", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "paused", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pauserRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pendingWithdrawals", + "inputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "queueWithdrawals", + "inputs": [ + { + "name": "queuedWithdrawalParams", + "type": "tuple[]", + "internalType": "struct IDelegationManager.QueuedWithdrawalParams[]", + "components": [ + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + }, + { + "name": "withdrawer", + "type": "address", + "internalType": "address" + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32[]", + "internalType": "bytes32[]" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registerAsOperator", + "inputs": [ + { + "name": "registeringOperatorDetails", + "type": "tuple", + "internalType": "struct IDelegationManager.OperatorDetails", + "components": [ + { + "name": "__deprecated_earningsReceiver", + "type": "address", + "internalType": "address" + }, + { + "name": "delegationApprover", + "type": "address", + "internalType": "address" + }, + { + "name": "stakerOptOutWindowBlocks", + "type": "uint32", + "internalType": "uint32" + } + ] + }, + { + "name": "metadataURI", + "type": "string", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setMinWithdrawalDelayBlocks", + "inputs": [ + { + "name": "newMinWithdrawalDelayBlocks", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setPauserRegistry", + "inputs": [ + { + "name": "newPauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setStrategyWithdrawalDelayBlocks", + "inputs": [ + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "withdrawalDelayBlocks", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "slasher", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ISlasher" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "stakerNonce", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "stakerOptOutWindowBlocks", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "strategyManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStrategyManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "strategyWithdrawalDelayBlocks", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStrategy" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "undelegate", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "withdrawalRoots", + "type": "bytes32[]", + "internalType": "bytes32[]" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "unpause", + "inputs": [ + { + "name": "newPausedStatus", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateOperatorMetadataURI", + "inputs": [ + { + "name": "metadataURI", + "type": "string", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "MinWithdrawalDelayBlocksSet", + "inputs": [ + { + "name": "previousValue", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "newValue", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorDetailsModified", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOperatorDetails", + "type": "tuple", + "indexed": false, + "internalType": "struct IDelegationManager.OperatorDetails", + "components": [ + { + "name": "__deprecated_earningsReceiver", + "type": "address", + "internalType": "address" + }, + { + "name": "delegationApprover", + "type": "address", + "internalType": "address" + }, + { + "name": "stakerOptOutWindowBlocks", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorMetadataURIUpdated", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "metadataURI", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorRegistered", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "operatorDetails", + "type": "tuple", + "indexed": false, + "internalType": "struct IDelegationManager.OperatorDetails", + "components": [ + { + "name": "__deprecated_earningsReceiver", + "type": "address", + "internalType": "address" + }, + { + "name": "delegationApprover", + "type": "address", + "internalType": "address" + }, + { + "name": "stakerOptOutWindowBlocks", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorSharesDecreased", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "staker", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + }, + { + "name": "shares", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorSharesIncreased", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "staker", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + }, + { + "name": "shares", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Paused", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newPausedStatus", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "PauserRegistrySet", + "inputs": [ + { + "name": "pauserRegistry", + "type": "address", + "indexed": false, + "internalType": "contract IPauserRegistry" + }, + { + "name": "newPauserRegistry", + "type": "address", + "indexed": false, + "internalType": "contract IPauserRegistry" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StakerDelegated", + "inputs": [ + { + "name": "staker", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StakerForceUndelegated", + "inputs": [ + { + "name": "staker", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StakerUndelegated", + "inputs": [ + { + "name": "staker", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StrategyWithdrawalDelayBlocksSet", + "inputs": [ + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + }, + { + "name": "previousValue", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "newValue", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Unpaused", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newPausedStatus", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "WithdrawalCompleted", + "inputs": [ + { + "name": "withdrawalRoot", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "WithdrawalQueued", + "inputs": [ + { + "name": "withdrawalRoot", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "withdrawal", + "type": "tuple", + "indexed": false, + "internalType": "struct IDelegationManager.Withdrawal", + "components": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "delegatedTo", + "type": "address", + "internalType": "address" + }, + { + "name": "withdrawer", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "startBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + } + ] + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod DelegationManager { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6101006040523480156200001257600080fd5b5060405162005c3338038062005c33833981016040819052620000359162000140565b6001600160a01b0380841660805280821660c052821660a0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e051615a0a6200022960003960006126870152600081816105b10152818161102e015281816113aa01528181611c0a015281816129e001528181613e93015261437f015260006107620152600081816104f901528181610ffc0152818161137801528181611c9e01528181612aad01528181612c3001528181613fb901526144250152615a0a6000f3fe608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a610355366004614835565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a236600461489b565b6109ce565b6103ba6103b5366004614835565b610a90565b60405161036491906148f6565b6103da6103d5366004614993565b610df9565b005b6103da6103ea3660046149e6565b610f3e565b6103da6103fd366004614a0a565b610ff1565b6103da610410366004614a4b565b6110a8565b6103da610423366004614a64565b6111e7565b61035a6104363660046149e6565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f366004614a0a565b6111fb565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614acf565b611229565b6103da6104bc366004614a0a565b61136d565b61035a6104cf3660046149e6565b609b6020526000908152604090205481565b6103da6104ef366004614b76565b61141d565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610364565b61051b6105413660046149e6565b6001600160a01b039081166000908152609960205260409020600101541690565b6105756105703660046149e6565b61155a565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b61035a6213c68081565b6103da61157a565b61035a6105f3366004614e73565b611641565b610575610606366004614eaf565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614ee0565b611671565b6103da610644366004614a4b565b61170c565b61051b6106573660046149e6565b609a602052600090815260409020546001600160a01b031681565b6105756106803660046149e6565b61171d565b6103da61173e565b61035a61069b366004614f6f565b609860209081526000928352604080842090915290825290205481565b6103da6106c6366004615050565b611752565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150e0565b61197e565b604051610364919061516a565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da61073836600461517d565b611a58565b61035a61074b3660046149e6565b609f6020526000908152604090205481565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b610575610792366004614a4b565b609e6020526000908152604090205460ff1681565b6105756107b53660046151b2565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec3660046149e6565b60a16020526000908152604090205481565b61086e61080c3660046149e6565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151de565b611b2a565b61035a62034bc081565b6108d46108cf3660046149e6565b611be3565b60405161036492919061525f565b6103ba6108f03660046149e6565b611f9b565b6103da610903366004615284565b61245f565b6103da6109163660046152dc565b61257c565b6103da6109293660046149e6565b61260d565b61035a612683565b6103da610944366004614a4b565b6126c1565b609d54600090815b838110156109c657600060a16000878785818110610971576109716152f8565b905060200201602081019061098691906149e6565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b506109bf81615324565b9050610951565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a4c612683565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610ac55760405162461bcd60e51b8152600401610abc9061533f565b60405180910390fd5b6000836001600160401b03811115610adf57610adf614c18565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610dee57868682818110610b4357610b436152f8565b9050602002810190610b559190615376565b610b63906020810190615396565b9050878783818110610b7757610b776152f8565b9050602002810190610b899190615376565b610b939080615396565b905014610c085760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610abc565b33878783818110610c1b57610c1b6152f8565b9050602002810190610c2d9190615376565b610c3e9060608101906040016149e6565b6001600160a01b031614610cba5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610abc565b610dbf3383898985818110610cd157610cd16152f8565b9050602002810190610ce39190615376565b610cf49060608101906040016149e6565b8a8a86818110610d0657610d066152f8565b9050602002810190610d189190615376565b610d229080615396565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6857610d686152f8565b9050602002810190610d7a9190615376565b610d88906020810190615396565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061281d92505050565b838281518110610dd157610dd16152f8565b602090810291909101015280610de681615324565b915050610b29565b509095945050505050565b610e023361155a565b15610e885760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610abc565b610e923384612ddd565b604080518082019091526060815260006020820152610eb43380836000612fd0565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610eed91906153df565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f30929190615431565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb59190615460565b6001600160a01b0316336001600160a01b031614610fe55760405162461bcd60e51b8152600401610abc9061547d565b610fee81613266565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110505750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61106c5760405162461bcd60e51b8152600401610abc906154c7565b6110758361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a18185858561335d565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111149190615524565b6111305760405162461bcd60e51b8152600401610abc90615541565b606654818116146111a95760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111ef6133d8565b6110a184848484613432565b6001600160a01b0383166000908152609b602052604081205461122085828686611b2a565b95945050505050565b600054610100900460ff16158080156112495750600054600160ff909116105b806112635750303b158015611263575060005460ff166001145b6112c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610abc565b6000805460ff1916600117905580156112e9576000805461ff0019166101001790555b6112f38888613658565b6112fb613742565b609755611307896137d9565b6113108661382b565b61131c85858585613432565b8015611362576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113cc5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6113e85760405162461bcd60e51b8152600401610abc906154c7565b6113f18361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a181858585613925565b606654600290600490811614156114465760405162461bcd60e51b8152600401610abc9061533f565b600260c95414156114995760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c95560005b88811015611549576115398a8a838181106114be576114be6152f8565b90506020028101906114d09190615589565b8989848181106114e2576114e26152f8565b90506020028101906114f49190615396565b898986818110611506576115066152f8565b9050602002013588888781811061151f5761151f6152f8565b9050602002016020810190611534919061559f565b6139a0565b61154281615324565b90506114a1565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e69190615524565b6116025760405162461bcd60e51b8152600401610abc90615541565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000816040516020016116549190615630565b604051602081830303815290604052805190602001209050919050565b6066546002906004908116141561169a5760405162461bcd60e51b8152600401610abc9061533f565b600260c95414156116ed5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c9556116ff86868686866139a0565b5050600160c95550505050565b6117146133d8565b610fee8161382b565b6001600160a01b039081166000818152609a60205260409020549091161490565b6117466133d8565b61175060006137d9565b565b42836020015110156117d65760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610abc565b6117df8561155a565b156118685760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610abc565b6118718461171d565b6118fd5760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610abc565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119398783888860200151611b2a565b6001600160a01b0388166000908152609b602052604090206001840190558551909150611969908890839061418a565b61197587878686612fd0565b50505050505050565b6060600082516001600160401b0381111561199b5761199b614c18565b6040519080825280602002602001820160405280156119c4578160200160208202803683370190505b50905060005b83518110156109c6576001600160a01b03851660009081526098602052604081208551909190869084908110611a0257611a026152f8565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a3d57611a3d6152f8565b6020908102919091010152611a5181615324565b90506119ca565b611a613361171d565b611ae35760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610abc565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611b1e929190615431565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611ba0612683565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611c53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c779190615643565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611ce7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d0f91908101906156b7565b9150915060008313611d2657909590945092505050565b606080835160001415611de0576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611d9b57611d9b6152f8565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611dcf57611dcf6152f8565b602002602001018181525050611f8e565b8351611ded906001615771565b6001600160401b03811115611e0457611e04614c18565b604051908082528060200260200182016040528015611e2d578160200160208202803683370190505b50915081516001600160401b03811115611e4957611e49614c18565b604051908082528060200260200182016040528015611e72578160200160208202803683370190505b50905060005b8451811015611f0c57848181518110611e9357611e936152f8565b6020026020010151838281518110611ead57611ead6152f8565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611edf57611edf6152f8565b6020026020010151828281518110611ef957611ef96152f8565b6020908102919091010152600101611e78565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f319190615789565b81518110611f4157611f416152f8565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f719190615789565b81518110611f8157611f816152f8565b6020026020010181815250505b9097909650945050505050565b60665460609060019060029081161415611fc75760405162461bcd60e51b8152600401610abc9061533f565b611fd08361155a565b6120505760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610abc565b6120598361171d565b156120cc5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610abc565b6001600160a01b0383166121485760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610abc565b6001600160a01b038084166000818152609a60205260409020549091169033148061217b5750336001600160a01b038216145b806121a257506001600160a01b038181166000908152609960205260409020600101541633145b6122145760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610abc565b60008061222086611be3565b9092509050336001600160a01b0387161461227657826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b031916905581516122f8576040805160008152602081019091529450612456565b81516001600160401b0381111561231157612311614c18565b60405190808252806020026020018201604052801561233a578160200160208202803683370190505b50945060005b8251811015612454576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106123a0576123a06152f8565b6020026020010151826000815181106123bb576123bb6152f8565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106123ed576123ed6152f8565b602002602001015181600081518110612408576124086152f8565b60200260200101818152505061242189878b858561281d565b888481518110612433576124336152f8565b6020026020010181815250505050808061244c90615324565b915050612340565b505b50505050919050565b6124683361155a565b156124e65760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610abc565b6124ef8361171d565b6125705760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610abc565b6110a333848484612fd0565b6125853361171d565b6126035760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610abc565b610fee3382612ddd565b6126156133d8565b6001600160a01b03811661267a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abc565b610fee816137d9565b60007f00000000000000000000000000000000000000000000000000000000000000004614156126b4575060975490565b6126bc613742565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612714573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127389190615460565b6001600160a01b0316336001600160a01b0316146127685760405162461bcd60e51b8152600401610abc9061547d565b6066541981196066541916146127e65760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111dc565b60006001600160a01b0386166128b45760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610abc565b825161293e5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610abc565b60005b8351811015612ceb576001600160a01b03861615612997576129978688868481518110612970576129706152f8565b602002602001015186858151811061298a5761298a6152f8565b602002602001015161335d565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b03168482815181106129c7576129c76152f8565b60200260200101516001600160a01b03161415612a90577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612a2057612a206152f8565b60200260200101516040518363ffffffff1660e01b8152600401612a599291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a7357600080fd5b505af1158015612a87573d6000803e3d6000fd5b50505050612ce3565b846001600160a01b0316876001600160a01b03161480612b6257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612aec57612aec6152f8565b60200260200101516040518263ffffffff1660e01b8152600401612b1f91906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b609190615524565b155b612c2e5760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610abc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612c7057612c706152f8565b6020026020010151868581518110612c8a57612c8a6152f8565b60200260200101516040518463ffffffff1660e01b8152600401612cb0939291906157a0565b600060405180830381600087803b158015612cca57600080fd5b505af1158015612cde573d6000803e3d6000fd5b505050505b600101612941565b506001600160a01b0386166000908152609f60205260408120805491829190612d1383615324565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d7b82611641565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612dc990839085906157c4565b60405180910390a198975050505050505050565b6213c680612df160608301604084016157dd565b63ffffffff161115612ea65760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610abc565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612ee290606084019084016157dd565b63ffffffff161015612f785760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610abc565b6001600160a01b03821660009081526099602052604090208190612f9c828261581a565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611b1e9084906153df565b60665460009060019081161415612ff95760405162461bcd60e51b8152600401610abc9061533f565b6001600160a01b0380851660009081526099602052604090206001015416801580159061302f5750336001600160a01b03821614155b80156130445750336001600160a01b03861614155b156131b15742846020015110156130c35760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff161561315d5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff1916600117905585015161319e9088908890859088906109ce565b90506131af8282876000015161418a565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061321088611be3565b9150915060005b82518110156113625761325e888a858481518110613237576132376152f8565b6020026020010151858581518110613251576132516152f8565b6020026020010151613925565b600101613217565b6001600160a01b0381166132f45760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610abc565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613394908490615789565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f30939291906157a0565b6033546001600160a01b031633146117505760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610abc565b8281146134ba5760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610abc565b8260005b818110156136505760008686838181106134da576134da6152f8565b90506020020160208101906134ef91906149e6565b6001600160a01b038116600090815260a1602052604081205491925086868581811061351d5761351d6152f8565b90506020020135905062034bc08111156135e15760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610abc565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a15050508061364990615324565b90506134be565b505050505050565b6065546001600160a01b031615801561367957506001600160a01b03821615155b6136fb5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261373e82613266565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138e45760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610abc565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061395c908490615771565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f30939291906157a0565b60006139ae6105f38761587d565b6000818152609e602052604090205490915060ff16613a2f5760405162461bcd60e51b815260206004820152604360248201526000805160206159b583398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610abc565b609d544390613a4460a0890160808a016157dd565b63ffffffff16613a549190615771565b1115613adc5760405162461bcd60e51b815260206004820152605f60248201526000805160206159b583398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610abc565b613aec60608701604088016149e6565b6001600160a01b0316336001600160a01b031614613b795760405162461bcd60e51b815260206004820152605060248201526000805160206159b583398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610abc565b8115613bfb57613b8c60a0870187615396565b85149050613bfb5760405162461bcd60e51b815260206004820152604260248201526000805160206159b583398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610abc565b6000818152609e60205260409020805460ff191690558115613d605760005b613c2760a0880188615396565b9050811015613d5a574360a16000613c4260a08b018b615396565b85818110613c5257613c526152f8565b9050602002016020810190613c6791906149e6565b6001600160a01b03168152602081019190915260400160002054613c9160a08a0160808b016157dd565b63ffffffff16613ca19190615771565b1115613cbf5760405162461bcd60e51b8152600401610abc9061588f565b613d52613ccf60208901896149e6565b33613cdd60a08b018b615396565b85818110613ced57613ced6152f8565b9050602002016020810190613d0291906149e6565b613d0f60c08c018c615396565b86818110613d1f57613d1f6152f8565b905060200201358a8a87818110613d3857613d386152f8565b9050602002016020810190613d4d91906149e6565b614344565b600101613c1a565b5061414f565b336000908152609a60205260408120546001600160a01b0316905b613d8860a0890189615396565b905081101561414c574360a16000613da360a08c018c615396565b85818110613db357613db36152f8565b9050602002016020810190613dc891906149e6565b6001600160a01b03168152602081019190915260400160002054613df260a08b0160808c016157dd565b63ffffffff16613e029190615771565b1115613e205760405162461bcd60e51b8152600401610abc9061588f565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e4260a08a018a615396565b83818110613e5257613e526152f8565b9050602002016020810190613e6791906149e6565b6001600160a01b03161415613fb7576000613e8560208a018a6149e6565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613ec660c08e018e615396565b87818110613ed657613ed66152f8565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613f2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f4e9190615643565b6001600160a01b038084166000908152609a6020526040902054919250168015613faf57613faf8184613f8460a08f018f615396565b88818110613f9457613f946152f8565b9050602002016020810190613fa991906149e6565b85613925565b505050614144565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea133898985818110613ff957613ff96152f8565b905060200201602081019061400e91906149e6565b61401b60a08d018d615396565b8681811061402b5761402b6152f8565b905060200201602081019061404091906149e6565b61404d60c08e018e615396565b8781811061405d5761405d6152f8565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b1580156140bd57600080fd5b505af11580156140d1573d6000803e3d6000fd5b505050506001600160a01b038216156141445761414482336140f660a08c018c615396565b85818110614106576141066152f8565b905060200201602081019061411b91906149e6565b61412860c08d018d615396565b86818110614138576141386152f8565b90506020020135613925565b600101613d7b565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b156142a457604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141ca9086908690600401615917565b602060405180830381865afa1580156141e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061420b9190615974565b6001600160e01b031916146110a35760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610abc565b826001600160a01b03166142b88383614484565b6001600160a01b0316146110a35760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610abc565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156143ef5760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b1300906143b8908890889087906004016157a0565b600060405180830381600087803b1580156143d257600080fd5b505af11580156143e6573d6000803e3d6000fd5b5050505061447d565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561446957600080fd5b505af1158015611362573d6000803e3d6000fd5b5050505050565b600080600061449385856144a0565b915091506109c681614510565b6000808251604114156144d75760208301516040840151606085015160001a6144cb878285856146cb565b94509450505050614509565b82516040141561450157602083015160408401516144f68683836147b8565b935093505050614509565b506000905060025b9250929050565b60008160048111156145245761452461599e565b141561452d5750565b60018160048111156145415761454161599e565b141561458f5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610abc565b60028160048111156145a3576145a361599e565b14156145f15760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610abc565b60038160048111156146055761460561599e565b141561465e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610abc565b60048160048111156146725761467261599e565b1415610fee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610abc565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561470257506000905060036147af565b8460ff16601b1415801561471a57508460ff16601c14155b1561472b57506000905060046147af565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561477f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147a8576000600192509250506147af565b9150600090505b94509492505050565b6000806001600160ff1b038316816147d560ff86901c601b615771565b90506147e3878288856146cb565b935093505050935093915050565b60008083601f84011261480357600080fd5b5081356001600160401b0381111561481a57600080fd5b6020830191508360208260051b850101111561450957600080fd5b6000806020838503121561484857600080fd5b82356001600160401b0381111561485e57600080fd5b61486a858286016147f1565b90969095509350505050565b6001600160a01b0381168114610fee57600080fd5b803561489681614876565b919050565b600080600080600060a086880312156148b357600080fd5b85356148be81614876565b945060208601356148ce81614876565b935060408601356148de81614876565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b8181101561492e57835183529284019291840191600101614912565b50909695505050505050565b60006060828403121561494c57600080fd5b50919050565b60008083601f84011261496457600080fd5b5081356001600160401b0381111561497b57600080fd5b60208301915083602082850101111561450957600080fd5b6000806000608084860312156149a857600080fd5b6149b2858561493a565b925060608401356001600160401b038111156149cd57600080fd5b6149d986828701614952565b9497909650939450505050565b6000602082840312156149f857600080fd5b8135614a0381614876565b9392505050565b600080600060608486031215614a1f57600080fd5b8335614a2a81614876565b92506020840135614a3a81614876565b929592945050506040919091013590565b600060208284031215614a5d57600080fd5b5035919050565b60008060008060408587031215614a7a57600080fd5b84356001600160401b0380821115614a9157600080fd5b614a9d888389016147f1565b90965094506020870135915080821115614ab657600080fd5b50614ac3878288016147f1565b95989497509550505050565b60008060008060008060008060c0898b031215614aeb57600080fd5b8835614af681614876565b97506020890135614b0681614876565b9650604089013595506060890135945060808901356001600160401b0380821115614b3057600080fd5b614b3c8c838d016147f1565b909650945060a08b0135915080821115614b5557600080fd5b50614b628b828c016147f1565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614b9257600080fd5b88356001600160401b0380821115614ba957600080fd5b614bb58c838d016147f1565b909a50985060208b0135915080821115614bce57600080fd5b614bda8c838d016147f1565b909850965060408b0135915080821115614bf357600080fd5b614bff8c838d016147f1565b909650945060608b0135915080821115614b5557600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c5057614c50614c18565b60405290565b604080519081016001600160401b0381118282101715614c5057614c50614c18565b604051601f8201601f191681016001600160401b0381118282101715614ca057614ca0614c18565b604052919050565b63ffffffff81168114610fee57600080fd5b803561489681614ca8565b60006001600160401b03821115614cde57614cde614c18565b5060051b60200190565b600082601f830112614cf957600080fd5b81356020614d0e614d0983614cc5565b614c78565b82815260059290921b84018101918181019086841115614d2d57600080fd5b8286015b84811015614d51578035614d4481614876565b8352918301918301614d31565b509695505050505050565b600082601f830112614d6d57600080fd5b81356020614d7d614d0983614cc5565b82815260059290921b84018101918181019086841115614d9c57600080fd5b8286015b84811015614d515780358352918301918301614da0565b600060e08284031215614dc957600080fd5b614dd1614c2e565b9050614ddc8261488b565b8152614dea6020830161488b565b6020820152614dfb6040830161488b565b604082015260608201356060820152614e1660808301614cba565b608082015260a08201356001600160401b0380821115614e3557600080fd5b614e4185838601614ce8565b60a084015260c0840135915080821115614e5a57600080fd5b50614e6784828501614d5c565b60c08301525092915050565b600060208284031215614e8557600080fd5b81356001600160401b03811115614e9b57600080fd5b614ea784828501614db7565b949350505050565b600060208284031215614ec157600080fd5b813560ff81168114614a0357600080fd5b8015158114610fee57600080fd5b600080600080600060808688031215614ef857600080fd5b85356001600160401b0380821115614f0f57600080fd5b9087019060e0828a031215614f2357600080fd5b90955060208701359080821115614f3957600080fd5b50614f46888289016147f1565b909550935050604086013591506060860135614f6181614ed2565b809150509295509295909350565b60008060408385031215614f8257600080fd5b8235614f8d81614876565b91506020830135614f9d81614876565b809150509250929050565b600060408284031215614fba57600080fd5b614fc2614c56565b905081356001600160401b0380821115614fdb57600080fd5b818401915084601f830112614fef57600080fd5b813560208282111561500357615003614c18565b615015601f8301601f19168201614c78565b9250818352868183860101111561502b57600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a0868803121561506857600080fd5b853561507381614876565b9450602086013561508381614876565b935060408601356001600160401b038082111561509f57600080fd5b6150ab89838a01614fa8565b945060608801359150808211156150c157600080fd5b506150ce88828901614fa8565b95989497509295608001359392505050565b600080604083850312156150f357600080fd5b82356150fe81614876565b915060208301356001600160401b0381111561511957600080fd5b61512585828601614ce8565b9150509250929050565b600081518084526020808501945080840160005b8381101561515f57815187529582019590820190600101615143565b509495945050505050565b602081526000614a03602083018461512f565b6000806020838503121561519057600080fd5b82356001600160401b038111156151a657600080fd5b61486a85828601614952565b600080604083850312156151c557600080fd5b82356151d081614876565b946020939093013593505050565b600080600080608085870312156151f457600080fd5b84356151ff81614876565b935060208501359250604085013561521681614876565b9396929550929360600135925050565b600081518084526020808501945080840160005b8381101561515f5781516001600160a01b03168752958201959082019060010161523a565b6040815260006152726040830185615226565b8281036020840152611220818561512f565b60008060006060848603121561529957600080fd5b83356152a481614876565b925060208401356001600160401b038111156152bf57600080fd5b6152cb86828701614fa8565b925050604084013590509250925092565b6000606082840312156152ee57600080fd5b614a03838361493a565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156153385761533861530e565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e1983360301811261538c57600080fd5b9190910192915050565b6000808335601e198436030181126153ad57600080fd5b8301803591506001600160401b038211156153c757600080fd5b6020019150600581901b360382131561450957600080fd5b6060810182356153ee81614876565b6001600160a01b03908116835260208401359061540a82614876565b166020830152604083013561541e81614ca8565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561547257600080fd5b8151614a0381614876565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561553657600080fd5b8151614a0381614ed2565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de1983360301811261538c57600080fd5b6000602082840312156155b157600080fd5b8135614a0381614ed2565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261561760e0850182615226565b905060c083015184820360c0860152611220828261512f565b602081526000614a0360208301846155bc565b60006020828403121561565557600080fd5b5051919050565b600082601f83011261566d57600080fd5b8151602061567d614d0983614cc5565b82815260059290921b8401810191818101908684111561569c57600080fd5b8286015b84811015614d5157805183529183019183016156a0565b600080604083850312156156ca57600080fd5b82516001600160401b03808211156156e157600080fd5b818501915085601f8301126156f557600080fd5b81516020615705614d0983614cc5565b82815260059290921b8401810191818101908984111561572457600080fd5b948201945b8386101561574b57855161573c81614876565b82529482019490820190615729565b9188015191965090935050508082111561576457600080fd5b506151258582860161565c565b600082198211156157845761578461530e565b500190565b60008282101561579b5761579b61530e565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b828152604060208201526000614ea760408301846155bc565b6000602082840312156157ef57600080fd5b8135614a0381614ca8565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561582581614876565b61582f81836157fa565b5060018101602083013561584281614876565b61584c81836157fa565b50604083013561585b81614ca8565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006158893683614db7565b92915050565b6020808252606e908201526000805160206159b583398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b8181101561594b5785810183015185820160600152820161592f565b8181111561595d576000606083870101525b50601f01601f191692909201606001949350505050565b60006020828403121561598657600080fd5b81516001600160e01b031981168114614a0357600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a2646970667358221220e279121a4b2ff4cfcda4e7d1b51e40a577f27af7f3e36e9eba326fad5075fde864736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"a\x01\0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0\\38\x03\x80b\0\\3\x839\x81\x01`@\x81\x90Rb\0\x005\x91b\0\x01@V[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\x80R\x80\x82\x16`\xC0R\x82\x16`\xA0Rb\0\0Xb\0\0eV[PPF`\xE0RPb\0\x01\x94V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xD2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FInitializable: contract is initi`D\x82\x01Rfalizing`\xC8\x1B`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[`\0T`\xFF\x90\x81\x16\x10\x15b\0\x01%W`\0\x80T`\xFF\x19\x16`\xFF\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01=W`\0\x80\xFD[PV[`\0\x80`\0``\x84\x86\x03\x12\x15b\0\x01VW`\0\x80\xFD[\x83Qb\0\x01c\x81b\0\x01'V[` \x85\x01Q\x90\x93Pb\0\x01v\x81b\0\x01'V[`@\x85\x01Q\x90\x92Pb\0\x01\x89\x81b\0\x01'V[\x80\x91PP\x92P\x92P\x92V[`\x80Q`\xA0Q`\xC0Q`\xE0QaZ\nb\0\x02)`\09`\0a&\x87\x01R`\0\x81\x81a\x05\xB1\x01R\x81\x81a\x10.\x01R\x81\x81a\x13\xAA\x01R\x81\x81a\x1C\n\x01R\x81\x81a)\xE0\x01R\x81\x81a>\x93\x01RaC\x7F\x01R`\0a\x07b\x01R`\0\x81\x81a\x04\xF9\x01R\x81\x81a\x0F\xFC\x01R\x81\x81a\x13x\x01R\x81\x81a\x1C\x9E\x01R\x81\x81a*\xAD\x01R\x81\x81a,0\x01R\x81\x81a?\xB9\x01RaD%\x01RaZ\n`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x03BW`\x005`\xE0\x1C\x80cc[\xBD\x10\x11a\x01\xB8W\x80c\xB7\xF0n\xBE\x11a\x01\x04W\x80c\xCF\x80\x87>\x11a\0\xA2W\x80c\xF1ar\xB0\x11a\0|W\x80c\xF1ar\xB0\x14a\t\x08W\x80c\xF2\xFD\xE3\x8B\x14a\t\x1BW\x80c\xF6\x98\xDA%\x14a\t.W\x80c\xFA\xBC\x1C\xBC\x14a\t6W`\0\x80\xFD[\x80c\xCF\x80\x87>\x14a\x08\xC1W\x80c\xDA\x8B\xE8d\x14a\x08\xE2W\x80c\xEE\xA9\x06K\x14a\x08\xF5W`\0\x80\xFD[\x80c\xC4\x887Z\x11a\0\xDEW\x80c\xC4\x887Z\x14a\x07\xDEW\x80c\xC5\xE4\x80\xDB\x14a\x07\xFEW\x80c\xC9KQ\x11\x14a\x08\xA4W\x80c\xCAf\x1C\x04\x14a\x08\xB7W`\0\x80\xFD[\x80c\xB7\xF0n\xBE\x14a\x07\x84W\x80c\xBBE\xFE\xF2\x14a\x07\xA7W\x80c\xC4H\xFE\xB8\x14a\x07\xD5W`\0\x80\xFD[\x80c\x88o\x11\x95\x11a\x01qW\x80c\x91\x04\xC3\x19\x11a\x01KW\x80c\x91\x04\xC3\x19\x14a\x07\x0FW\x80c\x99\xBE\x81\xC8\x14a\x07*W\x80c\xA1x\x84\x84\x14a\x07=W\x80c\xB14Bq\x14a\x07]W`\0\x80\xFD[\x80c\x88o\x11\x95\x14a\x06\xCBW\x80c\x8D\xA5\xCB[\x14a\x06\xDEW\x80c\x90\x04\x13G\x14a\x06\xEFW`\0\x80\xFD[\x80cc[\xBD\x10\x14a\x066W\x80ce\xDA\x12d\x14a\x06IW\x80cmp\xF7\xAE\x14a\x06rW\x80cqP\x18\xA6\x14a\x06\x85W\x80cw\x8EU\xF3\x14a\x06\x8DW\x80c\x7FT\x80q\x14a\x06\xB8W`\0\x80\xFD[\x80c(\xA5s\xAE\x11a\x02\x92W\x80cFe\xBC\xDA\x11a\x020W\x80cY{6\xDA\x11a\x02\nW\x80cY{6\xDA\x14a\x05\xE5W\x80cZ\xC8j\xB7\x14a\x05\xF8W\x80c\\\x97Z\xBB\x14a\x06\x1BW\x80c`\xD7\xFA\xED\x14a\x06#W`\0\x80\xFD[\x80cFe\xBC\xDA\x14a\x05\xACW\x80cO\xC4\x0Ba\x14a\x05\xD3W\x80cY\\jg\x14a\x05\xDDW`\0\x80\xFD[\x80c9\xB7\x0E8\x11a\x02lW\x80c9\xB7\x0E8\x14a\x04\xF4W\x80c<\xDE\xB5\xE0\x14a\x053W\x80c>(9\x1D\x14a\x05bW\x80cC7s\x82\x14a\x05\x85W`\0\x80\xFD[\x80c(\xA5s\xAE\x14a\x04\xAEW\x80c)\xC7}O\x14a\x04\xC1W\x80c3@C\x96\x14a\x04\xE1W`\0\x80\xFD[\x80c\x13-Ig\x11a\x02\xFFW\x80c\x16\x92\x83e\x11a\x02\xD9W\x80c\x16\x92\x83e\x14a\x04(W\x80c\x1B\xBC\xE0\x91\x14a\x04aW\x80c `kp\x14a\x04tW\x80c\"\xBF@\xE4\x14a\x04\x9BW`\0\x80\xFD[\x80c\x13-Ig\x14a\x03\xEFW\x80c\x13d9\xDD\x14a\x04\x02W\x80c\x15\"\xBF\x02\x14a\x04\x15W`\0\x80\xFD[\x80c\x04I\xCA9\x14a\x03GW\x80c\x04\xA4\xF9y\x14a\x03mW\x80c\x0B\x9FHz\x14a\x03\x94W\x80c\r\xD8\xDD\x02\x14a\x03\xA7W\x80c\x0FX\x9EY\x14a\x03\xC7W\x80c\x10\xD6z/\x14a\x03\xDCW[`\0\x80\xFD[a\x03Za\x03U6`\x04aH5V[a\tIV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x03Z\x7F\x14\xBD\xE6t\xC9\xF6K*\xD0\x0E\xAA\xEEJ\x8B\xED\x1F\xAB\xEF5\xC7P~<[\x9C\xFC\x946\x90\x9A-\xAD\x81V[a\x03Za\x03\xA26`\x04aH\x9BV[a\t\xCEV[a\x03\xBAa\x03\xB56`\x04aH5V[a\n\x90V[`@Qa\x03d\x91\x90aH\xF6V[a\x03\xDAa\x03\xD56`\x04aI\x93V[a\r\xF9V[\0[a\x03\xDAa\x03\xEA6`\x04aI\xE6V[a\x0F>V[a\x03\xDAa\x03\xFD6`\x04aJ\nV[a\x0F\xF1V[a\x03\xDAa\x04\x106`\x04aJKV[a\x10\xA8V[a\x03\xDAa\x04#6`\x04aJdV[a\x11\xE7V[a\x03Za\x0466`\x04aI\xE6V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x90V[a\x03Za\x04o6`\x04aJ\nV[a\x11\xFBV[a\x03Z\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x81V[a\x03\xDAa\x04\xA96`\x04aJ\xCFV[a\x12)V[a\x03\xDAa\x04\xBC6`\x04aJ\nV[a\x13mV[a\x03Za\x04\xCF6`\x04aI\xE6V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[a\x03\xDAa\x04\xEF6`\x04aKvV[a\x14\x1DV[a\x05\x1B\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x03dV[a\x05\x1Ba\x05A6`\x04aI\xE6V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x90V[a\x05ua\x05p6`\x04aI\xE6V[a\x15ZV[`@Q\x90\x15\x15\x81R` \x01a\x03dV[a\x03Z\x7F9\x11\x1B\xC4\xA4\xD6\x88\xE1\xF6\x85\x12=t\x97\xD4aSp\x15*\x8E\xE4\xA0Y>d{\xD0j\xD8\xBB\x0B\x81V[a\x05\x1B\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x03Zb\x13\xC6\x80\x81V[a\x03\xDAa\x15zV[a\x03Za\x05\xF36`\x04aNsV[a\x16AV[a\x05ua\x06\x066`\x04aN\xAFV[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`fTa\x03ZV[a\x03\xDAa\x0616`\x04aN\xE0V[a\x16qV[a\x03\xDAa\x06D6`\x04aJKV[a\x17\x0CV[a\x05\x1Ba\x06W6`\x04aI\xE6V[`\x9A` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05ua\x06\x806`\x04aI\xE6V[a\x17\x1DV[a\x03\xDAa\x17>V[a\x03Za\x06\x9B6`\x04aOoV[`\x98` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x03\xDAa\x06\xC66`\x04aPPV[a\x17RV[`eTa\x05\x1B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x05\x1BV[a\x07\x02a\x06\xFD6`\x04aP\xE0V[a\x19~V[`@Qa\x03d\x91\x90aQjV[a\x05\x1Bs\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x81V[a\x03\xDAa\x0786`\x04aQ}V[a\x1AXV[a\x03Za\x07K6`\x04aI\xE6V[`\x9F` R`\0\x90\x81R`@\x90 T\x81V[a\x05\x1B\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x05ua\x07\x926`\x04aJKV[`\x9E` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x05ua\x07\xB56`\x04aQ\xB2V[`\x9C` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T`\xFF\x16\x81V[a\x03Z`\x9DT\x81V[a\x03Za\x07\xEC6`\x04aI\xE6V[`\xA1` R`\0\x90\x81R`@\x90 T\x81V[a\x08na\x08\x0C6`\x04aI\xE6V[`@\x80Q``\x80\x82\x01\x83R`\0\x80\x83R` \x80\x84\x01\x82\x90R\x92\x84\x01\x81\x90R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16\x81R`\x99\x83R\x83\x90 \x83Q\x91\x82\x01\x84R\x80T\x85\x16\x82R`\x01\x01T\x93\x84\x16\x91\x81\x01\x91\x90\x91R`\x01`\xA0\x1B\x90\x92\x04c\xFF\xFF\xFF\xFF\x16\x90\x82\x01R\x90V[`@\x80Q\x82Q`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x82R` \x80\x85\x01Q\x90\x91\x16\x90\x82\x01R\x91\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x90\x82\x01R``\x01a\x03dV[a\x03Za\x08\xB26`\x04aQ\xDEV[a\x1B*V[a\x03Zb\x03K\xC0\x81V[a\x08\xD4a\x08\xCF6`\x04aI\xE6V[a\x1B\xE3V[`@Qa\x03d\x92\x91\x90aR_V[a\x03\xBAa\x08\xF06`\x04aI\xE6V[a\x1F\x9BV[a\x03\xDAa\t\x036`\x04aR\x84V[a$_V[a\x03\xDAa\t\x166`\x04aR\xDCV[a%|V[a\x03\xDAa\t)6`\x04aI\xE6V[a&\rV[a\x03Za&\x83V[a\x03\xDAa\tD6`\x04aJKV[a&\xC1V[`\x9DT`\0\x90\x81[\x83\x81\x10\x15a\t\xC6W`\0`\xA1`\0\x87\x87\x85\x81\x81\x10a\tqWa\tqaR\xF8V[\x90P` \x02\x01` \x81\x01\x90a\t\x86\x91\x90aI\xE6V[`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01`\0 T\x90P\x82\x81\x11\x15a\t\xB5W\x80\x92P[Pa\t\xBF\x81aS$V[\x90Pa\tQV[P\x93\x92PPPV[`@\x80Q\x7F\x14\xBD\xE6t\xC9\xF6K*\xD0\x0E\xAA\xEEJ\x8B\xED\x1F\xAB\xEF5\xC7P~<[\x9C\xFC\x946\x90\x9A-\xAD` \x80\x83\x01\x91\x90\x91R`\x01`\x01`\xA0\x1B\x03\x86\x81\x16\x83\x85\x01R\x88\x81\x16``\x84\x01R\x87\x16`\x80\x83\x01R`\xA0\x82\x01\x85\x90R`\xC0\x80\x83\x01\x85\x90R\x83Q\x80\x84\x03\x90\x91\x01\x81R`\xE0\x90\x92\x01\x90\x92R\x80Q\x91\x01 `\0\x90\x81a\nLa&\x83V[`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x91\x90\x91R`B\x81\x01\x83\x90R`b\x01`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x98\x97PPPPPPPPV[`fT``\x90`\x01\x90`\x02\x90\x81\x16\x14\x15a\n\xC5W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aS?V[`@Q\x80\x91\x03\x90\xFD[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xDFWa\n\xDFaL\x18V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0B\x08W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P3`\0\x90\x81R`\x9A` R`@\x81 T\x91\x92P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90[\x85\x81\x10\x15a\r\xEEW\x86\x86\x82\x81\x81\x10a\x0BCWa\x0BCaR\xF8V[\x90P` \x02\x81\x01\x90a\x0BU\x91\x90aSvV[a\x0Bc\x90` \x81\x01\x90aS\x96V[\x90P\x87\x87\x83\x81\x81\x10a\x0BwWa\x0BwaR\xF8V[\x90P` \x02\x81\x01\x90a\x0B\x89\x91\x90aSvV[a\x0B\x93\x90\x80aS\x96V[\x90P\x14a\x0C\x08W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FDelegationManager.queueWithdrawa`D\x82\x01R\x7Fl: input length mismatch\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[3\x87\x87\x83\x81\x81\x10a\x0C\x1BWa\x0C\x1BaR\xF8V[\x90P` \x02\x81\x01\x90a\x0C-\x91\x90aSvV[a\x0C>\x90``\x81\x01\x90`@\x01aI\xE6V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0C\xBAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FDelegationManager.queueWithdrawa`D\x82\x01R\x7Fl: withdrawer must be staker\0\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[a\r\xBF3\x83\x89\x89\x85\x81\x81\x10a\x0C\xD1Wa\x0C\xD1aR\xF8V[\x90P` \x02\x81\x01\x90a\x0C\xE3\x91\x90aSvV[a\x0C\xF4\x90``\x81\x01\x90`@\x01aI\xE6V[\x8A\x8A\x86\x81\x81\x10a\r\x06Wa\r\x06aR\xF8V[\x90P` \x02\x81\x01\x90a\r\x18\x91\x90aSvV[a\r\"\x90\x80aS\x96V[\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847`\0\x92\x01\x91\x90\x91RP\x8E\x92P\x8D\x91P\x88\x90P\x81\x81\x10a\rhWa\rhaR\xF8V[\x90P` \x02\x81\x01\x90a\rz\x91\x90aSvV[a\r\x88\x90` \x81\x01\x90aS\x96V[\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa(\x1D\x92PPPV[\x83\x82\x81Q\x81\x10a\r\xD1Wa\r\xD1aR\xF8V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a\r\xE6\x81aS$V[\x91PPa\x0B)V[P\x90\x95\x94PPPPPV[a\x0E\x023a\x15ZV[\x15a\x0E\x88W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R\x7FDelegationManager.registerAsOper`D\x82\x01R\x7Fator: caller is already actively`d\x82\x01Ri\x08\x19\x19[\x19Y\xD8]\x19Y`\xB2\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[a\x0E\x923\x84a-\xDDV[`@\x80Q\x80\x82\x01\x90\x91R``\x81R`\0` \x82\x01Ra\x0E\xB43\x80\x83`\0a/\xD0V[3`\x01`\x01`\xA0\x1B\x03\x16\x7F\x8E\x84\x85X:#\x10\xD4\x1F|\x82\xB9B}\x0B\xD4\x9B\xADt\xBB\x9C\xFF\x9D4\x02\xA2\x9D\x8F\x9B(\xA0\xE2\x85`@Qa\x0E\xED\x91\x90aS\xDFV[`@Q\x80\x91\x03\x90\xA23`\x01`\x01`\xA0\x1B\x03\x16\x7F\x02\xA9\x19\xED\x0E*\xCA\xD1\xDD\x90\xF1~\xF2\xFAJ\xE5F.\xE13\x91p\x03J\x851\xCC\xA4\xB6p\x80\x90\x84\x84`@Qa\x0F0\x92\x91\x90aT1V[`@Q\x80\x91\x03\x90\xA2PPPPV[`e`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xEA\xB6mz`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\x91W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xB5\x91\x90aT`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0F\xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aT}V[a\x0F\xEE\x81a2fV[PV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x10PWP3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14[a\x10lW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aT\xC7V[a\x10u\x83a\x15ZV[\x15a\x10\xA3W`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x90\x81R`\x9A` R`@\x90 T\x16a\x10\xA1\x81\x85\x85\x85a3]V[P[PPPV[`eT`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x14\x91\x90aU$V[a\x110W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aUAV[`fT\x81\x81\x16\x14a\x11\xA9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.pause: invalid attempt `D\x82\x01R\x7Fto unpause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[`f\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01[`@Q\x80\x91\x03\x90\xA2PV[a\x11\xEFa3\xD8V[a\x10\xA1\x84\x84\x84\x84a42V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x12 \x85\x82\x86\x86a\x1B*V[\x95\x94PPPPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x12IWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x12cWP0;\x15\x80\x15a\x12cWP`\0T`\xFF\x16`\x01\x14[a\x12\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01a\n\xBCV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x12\xE9W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x12\xF3\x88\x88a6XV[a\x12\xFBa7BV[`\x97Ua\x13\x07\x89a7\xD9V[a\x13\x10\x86a8+V[a\x13\x1C\x85\x85\x85\x85a42V[\x80\x15a\x13bW`\0\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x13\xCCWP3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14[a\x13\xE8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aT\xC7V[a\x13\xF1\x83a\x15ZV[\x15a\x10\xA3W`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x90\x81R`\x9A` R`@\x90 T\x16a\x10\xA1\x81\x85\x85\x85a9%V[`fT`\x02\x90`\x04\x90\x81\x16\x14\x15a\x14FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aS?V[`\x02`\xC9T\x14\x15a\x14\x99W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\n\xBCV[`\x02`\xC9U`\0[\x88\x81\x10\x15a\x15IWa\x159\x8A\x8A\x83\x81\x81\x10a\x14\xBEWa\x14\xBEaR\xF8V[\x90P` \x02\x81\x01\x90a\x14\xD0\x91\x90aU\x89V[\x89\x89\x84\x81\x81\x10a\x14\xE2Wa\x14\xE2aR\xF8V[\x90P` \x02\x81\x01\x90a\x14\xF4\x91\x90aS\x96V[\x89\x89\x86\x81\x81\x10a\x15\x06Wa\x15\x06aR\xF8V[\x90P` \x02\x015\x88\x88\x87\x81\x81\x10a\x15\x1FWa\x15\x1FaR\xF8V[\x90P` \x02\x01` \x81\x01\x90a\x154\x91\x90aU\x9FV[a9\xA0V[a\x15B\x81aS$V[\x90Pa\x14\xA1V[PP`\x01`\xC9UPPPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x9A` R`@\x90 T\x16\x15\x15\x90V[`eT`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15\xC2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\xE6\x91\x90aU$V[a\x16\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aUAV[`\0\x19`f\x81\x90U`@Q\x90\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2V[`\0\x81`@Q` \x01a\x16T\x91\x90aV0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`fT`\x02\x90`\x04\x90\x81\x16\x14\x15a\x16\x9AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aS?V[`\x02`\xC9T\x14\x15a\x16\xEDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\n\xBCV[`\x02`\xC9Ua\x16\xFF\x86\x86\x86\x86\x86a9\xA0V[PP`\x01`\xC9UPPPPV[a\x17\x14a3\xD8V[a\x0F\xEE\x81a8+V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x81\x81R`\x9A` R`@\x90 T\x90\x91\x16\x14\x90V[a\x17Fa3\xD8V[a\x17P`\0a7\xD9V[V[B\x83` \x01Q\x10\x15a\x17\xD6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R\x7FDelegationManager.delegateToBySi`D\x82\x01R\x7Fgnature: staker signature expire`d\x82\x01R`\x19`\xFA\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[a\x17\xDF\x85a\x15ZV[\x15a\x18hW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`M`$\x82\x01R\x7FDelegationManager.delegateToBySi`D\x82\x01R\x7Fgnature: staker is already activ`d\x82\x01Rl\x19[\x1EH\x19\x19[\x19Y\xD8]\x19Y`\x9A\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[a\x18q\x84a\x17\x1DV[a\x18\xFDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`Q`$\x82\x01R\x7FDelegationManager.delegateToBySi`D\x82\x01R\x7Fgnature: operator is not registe`d\x82\x01Rp92\xB2\x104\xB7\x10\"\xB4\xB3\xB2\xB7&0\xBC\xB2\xB9`y\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`\0`\x9B`\0\x87`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01`\0 T\x90P`\0a\x199\x87\x83\x88\x88` \x01Qa\x1B*V[`\x01`\x01`\xA0\x1B\x03\x88\x16`\0\x90\x81R`\x9B` R`@\x90 `\x01\x84\x01\x90U\x85Q\x90\x91Pa\x19i\x90\x88\x90\x83\x90aA\x8AV[a\x19u\x87\x87\x86\x86a/\xD0V[PPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\x9BWa\x19\x9BaL\x18V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x19\xC4W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\t\xC6W`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x98` R`@\x81 \x85Q\x90\x91\x90\x86\x90\x84\x90\x81\x10a\x1A\x02Wa\x1A\x02aR\xF8V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01`\0 T\x82\x82\x81Q\x81\x10a\x1A=Wa\x1A=aR\xF8V[` \x90\x81\x02\x91\x90\x91\x01\x01Ra\x1AQ\x81aS$V[\x90Pa\x19\xCAV[a\x1Aa3a\x17\x1DV[a\x1A\xE3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FDelegationManager.updateOperator`D\x82\x01R\x7FMetadataURI: caller must be an o`d\x82\x01Rf82\xB90\xBA7\xB9`\xC9\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[3`\x01`\x01`\xA0\x1B\x03\x16\x7F\x02\xA9\x19\xED\x0E*\xCA\xD1\xDD\x90\xF1~\xF2\xFAJ\xE5F.\xE13\x91p\x03J\x851\xCC\xA4\xB6p\x80\x90\x83\x83`@Qa\x1B\x1E\x92\x91\x90aT1V[`@Q\x80\x91\x03\x90\xA2PPV[`@\x80Q\x7F9\x11\x1B\xC4\xA4\xD6\x88\xE1\xF6\x85\x12=t\x97\xD4aSp\x15*\x8E\xE4\xA0Y>d{\xD0j\xD8\xBB\x0B` \x80\x83\x01\x91\x90\x91R`\x01`\x01`\xA0\x1B\x03\x87\x81\x16\x83\x85\x01R\x85\x16``\x83\x01R`\x80\x82\x01\x86\x90R`\xA0\x80\x83\x01\x85\x90R\x83Q\x80\x84\x03\x90\x91\x01\x81R`\xC0\x90\x92\x01\x90\x92R\x80Q\x91\x01 `\0\x90\x81a\x1B\xA0a&\x83V[`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x91\x90\x91R`B\x81\x01\x83\x90R`b\x01`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x97\x96PPPPPPPV[`@Qc`\xF4\x06+`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R``\x91\x82\x91`\0\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90c`\xF4\x06+\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1CSW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Cw\x91\x90aVCV[`@Qc\x94\xF6I\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x81\x16`\x04\x83\x01R\x91\x92P`\0\x91\x82\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90c\x94\xF6I\xDD\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1C\xE7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1D\x0F\x91\x90\x81\x01\x90aV\xB7V[\x91P\x91P`\0\x83\x13a\x1D&W\x90\x95\x90\x94P\x92PPPV[``\x80\x83Q`\0\x14\x15a\x1D\xE0W`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x90` \x80\x83\x01\x90\x806\x837PP`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x94P\x90P` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90Ps\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x82`\0\x81Q\x81\x10a\x1D\x9BWa\x1D\x9BaR\xF8V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x84\x81`\0\x81Q\x81\x10a\x1D\xCFWa\x1D\xCFaR\xF8V[` \x02` \x01\x01\x81\x81RPPa\x1F\x8EV[\x83Qa\x1D\xED\x90`\x01aWqV[`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\x04Wa\x1E\x04aL\x18V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1E-W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x91P\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1EIWa\x1EIaL\x18V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1ErW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84Q\x81\x10\x15a\x1F\x0CW\x84\x81\x81Q\x81\x10a\x1E\x93Wa\x1E\x93aR\xF8V[` \x02` \x01\x01Q\x83\x82\x81Q\x81\x10a\x1E\xADWa\x1E\xADaR\xF8V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x83\x81\x81Q\x81\x10a\x1E\xDFWa\x1E\xDFaR\xF8V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x1E\xF9Wa\x1E\xF9aR\xF8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x1ExV[Ps\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x82`\x01\x84Qa\x1F1\x91\x90aW\x89V[\x81Q\x81\x10a\x1FAWa\x1FAaR\xF8V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x84\x81`\x01\x84Qa\x1Fq\x91\x90aW\x89V[\x81Q\x81\x10a\x1F\x81Wa\x1F\x81aR\xF8V[` \x02` \x01\x01\x81\x81RPP[\x90\x97\x90\x96P\x94PPPPPV[`fT``\x90`\x01\x90`\x02\x90\x81\x16\x14\x15a\x1F\xC7W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aS?V[a\x1F\xD0\x83a\x15ZV[a PW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FDelegationManager.undelegate: st\x90\x82\x01R\x7Faker must be delegated to undele`d\x82\x01Rcgate`\xE0\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[a Y\x83a\x17\x1DV[\x15a \xCCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FDelegationManager.undelegate: op`D\x82\x01R\x7Ferators cannot be undelegated\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x83\x16a!HW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FDelegationManager.undelegate: ca`D\x82\x01R\x7Fnnot undelegate zero address\0\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x81\x81R`\x9A` R`@\x90 T\x90\x91\x16\x903\x14\x80a!{WP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14[\x80a!\xA2WP`\x01`\x01`\xA0\x1B\x03\x81\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x163\x14[a\"\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FDelegationManager.undelegate: ca`D\x82\x01R\x7Fller cannot undelegate staker\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[`\0\x80a\" \x86a\x1B\xE3V[\x90\x92P\x90P3`\x01`\x01`\xA0\x1B\x03\x87\x16\x14a\"vW\x82`\x01`\x01`\xA0\x1B\x03\x16\x86`\x01`\x01`\xA0\x1B\x03\x16\x7F\xF0\xED\xDF\x07\xE6\xEA\x14\xF3\x88\xB4~\x1E\x94\xA0\xF4d\xEC\xBD\x9E\xEDAq\x13\x0E\x0F\xC0\xE9\x9F\xB4\x03\n\x8A`@Q`@Q\x80\x91\x03\x90\xA3[\x82`\x01`\x01`\xA0\x1B\x03\x16\x86`\x01`\x01`\xA0\x1B\x03\x16\x7F\xFE\xE3\tf\xA2V\xB7\x1E\x14\xBC\x0E\xBF\xC9C\x15\xE2\x8E\xF4\xA9zq1\xA9\xE2\xB7\xA3\x10\xA7:\xF4Fv`@Q`@Q\x80\x91\x03\x90\xA3`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9A` R`@\x90 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x81Qa\"\xF8W`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x94Pa$VV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a#\x11Wa#\x11aL\x18V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a#:W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x94P`\0[\x82Q\x81\x10\x15a$TW`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91` \x80\x83\x01\x90\x806\x837PP`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x93P`\0\x92\x91P` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P\x84\x83\x81Q\x81\x10a#\xA0Wa#\xA0aR\xF8V[` \x02` \x01\x01Q\x82`\0\x81Q\x81\x10a#\xBBWa#\xBBaR\xF8V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x83\x83\x81Q\x81\x10a#\xEDWa#\xEDaR\xF8V[` \x02` \x01\x01Q\x81`\0\x81Q\x81\x10a$\x08Wa$\x08aR\xF8V[` \x02` \x01\x01\x81\x81RPPa$!\x89\x87\x8B\x85\x85a(\x1DV[\x88\x84\x81Q\x81\x10a$3Wa$3aR\xF8V[` \x02` \x01\x01\x81\x81RPPPP\x80\x80a$L\x90aS$V[\x91PPa#@V[P[PPPP\x91\x90PV[a$h3a\x15ZV[\x15a$\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R\x7FDelegationManager.delegateTo: st`D\x82\x01R\x7Faker is already actively delegat`d\x82\x01Ra\x19Y`\xF2\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[a$\xEF\x83a\x17\x1DV[a%pW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R\x7FDelegationManager.delegateTo: op`D\x82\x01R\x7Ferator is not registered in Eige`d\x82\x01Re7&0\xBC\xB2\xB9`\xD1\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[a\x10\xA33\x84\x84\x84a/\xD0V[a%\x853a\x17\x1DV[a&\x03W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R\x7FDelegationManager.modifyOperator`D\x82\x01R\x7FDetails: caller must be an opera`d\x82\x01Rb:7\xB9`\xE9\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[a\x0F\xEE3\x82a-\xDDV[a&\x15a3\xD8V[`\x01`\x01`\xA0\x1B\x03\x81\x16a&zW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\n\xBCV[a\x0F\xEE\x81a7\xD9V[`\0\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0F\x14\x15a&\xB4WP`\x97T\x90V[a&\xBCa7BV[\x90P\x90V[`e`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xEA\xB6mz`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a'\x14W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'8\x91\x90aT`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a'hW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aT}V[`fT\x19\x81\x19`fT\x19\x16\x14a'\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.unpause: invalid attemp`D\x82\x01R\x7Ft to pause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[`f\x81\x90U`@Q\x81\x81R3\x90\x7F5\x82\xD1\x82\x8E&\xBFV\xBD\x80\x15\x02\xBC\x02\x1A\xC0\xBC\x8A\xFBW\xC8&\xE4\x98kEY<\x8F\xAD8\x9C\x90` \x01a\x11\xDCV[`\0`\x01`\x01`\xA0\x1B\x03\x86\x16a(\xB4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`P`$\x82\x01R\x7FDelegationManager._removeSharesA`D\x82\x01R\x7FndQueueWithdrawal: staker cannot`d\x82\x01Ro be zero address`\x80\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[\x82Qa)>W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`M`$\x82\x01R\x7FDelegationManager._removeSharesA`D\x82\x01R\x7FndQueueWithdrawal: strategies ca`d\x82\x01Rlnnot be empty`\x98\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`\0[\x83Q\x81\x10\x15a,\xEBW`\x01`\x01`\xA0\x1B\x03\x86\x16\x15a)\x97Wa)\x97\x86\x88\x86\x84\x81Q\x81\x10a)pWa)paR\xF8V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a)\x8AWa)\x8AaR\xF8V[` \x02` \x01\x01Qa3]V[s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0`\x01`\x01`\xA0\x1B\x03\x16\x84\x82\x81Q\x81\x10a)\xC7Wa)\xC7aR\xF8V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a*\x90W\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xBE\xFF\xBB\x89\x88\x85\x84\x81Q\x81\x10a* Wa* aR\xF8V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a*Y\x92\x91\x90`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x82R` \x82\x01R`@\x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a*sW`\0\x80\xFD[PZ\xF1\x15\x80\x15a*\x87W=`\0\x80>=`\0\xFD[PPPPa,\xE3V[\x84`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14\x80a+bWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x9BM\xA0=\x85\x83\x81Q\x81\x10a*\xECWa*\xECaR\xF8V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a+\x1F\x91\x90`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a+=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a+`\x91\x90aU$V[\x15[a,.W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x84`$\x82\x01\x81\x90R\x7FDelegationManager._removeSharesA`D\x83\x01R\x7FndQueueWithdrawal: withdrawer mu`d\x83\x01R\x7Fst be same address as staker if \x90\x82\x01R\x7FthirdPartyTransfersForbidden are`\xA4\x82\x01Rc\x08\x1C\xD9]`\xE2\x1B`\xC4\x82\x01R`\xE4\x01a\n\xBCV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x8C\x80\xD4\xE5\x88\x86\x84\x81Q\x81\x10a,pWa,paR\xF8V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a,\x8AWa,\x8AaR\xF8V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a,\xB0\x93\x92\x91\x90aW\xA0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xCAW`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xDEW=`\0\x80>=`\0\xFD[PPPP[`\x01\x01a)AV[P`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9F` R`@\x81 \x80T\x91\x82\x91\x90a-\x13\x83aS$V[\x91\x90PUP`\0`@Q\x80`\xE0\x01`@R\x80\x89`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x88`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x87`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x81R` \x01Cc\xFF\xFF\xFF\xFF\x16\x81R` \x01\x86\x81R` \x01\x85\x81RP\x90P`\0a-{\x82a\x16AV[`\0\x81\x81R`\x9E` R`@\x90\x81\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UQ\x90\x91P\x7F\x90\t\xAB\x15>\x80\x14\xFB\xFB\x02\xF2!\x7F\\\xDEz\xA7\xF9\xADsJ\xE8\\\xA3\xEE?L\xA2\xFD\xD4\x99\xF9\x90a-\xC9\x90\x83\x90\x85\x90aW\xC4V[`@Q\x80\x91\x03\x90\xA1\x98\x97PPPPPPPPV[b\x13\xC6\x80a-\xF1``\x83\x01`@\x84\x01aW\xDDV[c\xFF\xFF\xFF\xFF\x16\x11\x15a.\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R\x7FDelegationManager._setOperatorDe`D\x82\x01R\x7Ftails: stakerOptOutWindowBlocks `d\x82\x01R\x7Fcannot be > MAX_STAKER_OPT_OUT_W`\x84\x82\x01RkINDOW_BLOCKS`\xA0\x1B`\xA4\x82\x01R`\xC4\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` R`@\x90\x81\x90 `\x01\x01T`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x90a.\xE2\x90``\x84\x01\x90\x84\x01aW\xDDV[c\xFF\xFF\xFF\xFF\x16\x10\x15a/xW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`S`$\x82\x01R\x7FDelegationManager._setOperatorDe`D\x82\x01R\x7Ftails: stakerOptOutWindowBlocks `d\x82\x01Rr\x18\xD8[\x9B\x9B\xDD\x08\x18\x99H\x19\x19X\xDC\x99X\\\xD9Y`j\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` R`@\x90 \x81\x90a/\x9C\x82\x82aX\x1AV[PP`@Q3\x90\x7F\xFE\xBE\\\xD2K,\xBC{\x06[\x9D\x0F\xDE\xB9\x04F\x1EJ\xFC\xFFW\xDDW\xAC\xDA\x1Ex2\x03\x1B\xA7\xAC\x90a\x1B\x1E\x90\x84\x90aS\xDFV[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a/\xF9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aS?V[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x80\x15\x80\x15\x90a0/WP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14\x15[\x80\x15a0DWP3`\x01`\x01`\xA0\x1B\x03\x86\x16\x14\x15[\x15a1\xB1WB\x84` \x01Q\x10\x15a0\xC3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FDelegationManager._delegate: app`D\x82\x01R\x7Frover signature expired\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\x9C` \x90\x81R`@\x80\x83 \x86\x84R\x90\x91R\x90 T`\xFF\x16\x15a1]W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FDelegationManager._delegate: app`D\x82\x01R\x7FroverSalt already spent\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\x9C` \x90\x81R`@\x80\x83 \x86\x84R\x82R\x82 \x80T`\xFF\x19\x16`\x01\x17\x90U\x85\x01Qa1\x9E\x90\x88\x90\x88\x90\x85\x90\x88\x90a\t\xCEV[\x90Pa1\xAF\x82\x82\x87`\0\x01QaA\x8AV[P[`\x01`\x01`\xA0\x1B\x03\x86\x81\x16`\0\x81\x81R`\x9A` R`@\x80\x82 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x94\x8A\x16\x94\x85\x17\x90UQ\x7F\xC3\xEE\x9F._\xDA\x98\xE8\x06j\x1Ft[-\xF9(_Ao\xE9\x8C\xF2U\x9C\xD2\x14\x84\xB3\xD8t3\x04\x91\x90\xA3`\0\x80a2\x10\x88a\x1B\xE3V[\x91P\x91P`\0[\x82Q\x81\x10\x15a\x13bWa2^\x88\x8A\x85\x84\x81Q\x81\x10a27Wa27aR\xF8V[` \x02` \x01\x01Q\x85\x85\x81Q\x81\x10a2QWa2QaR\xF8V[` \x02` \x01\x01Qa9%V[`\x01\x01a2\x17V[`\x01`\x01`\xA0\x1B\x03\x81\x16a2\xF4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FPausable._setPauserRegistry: new`D\x82\x01R\x7FPauserRegistry cannot be the zer`d\x82\x01Rho address`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`eT`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7Fn\x9F\xCDS\x98\x96\xFC\xA6\x0E\x8B\x0F\x01\xDDX\x023\xE4\x8Ak\x0F}\xF0\x13\xB8\x9B\xA7\xF5e\x86\x9A\xCD\xB6\x91\x01`@Q\x80\x91\x03\x90\xA1`e\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\x98` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 \x80T\x83\x92\x90a3\x94\x90\x84\x90aW\x89V[\x92PP\x81\x90UP\x83`\x01`\x01`\xA0\x1B\x03\x16\x7Fi\t`\x007\xB7]{G3\xAE\xDD\x81TB\xB5\xEC\x01\x8A\x82wQ\xC82\xAA\xFFd\xEB\xA5\xD6\xD2\xDD\x84\x84\x84`@Qa\x0F0\x93\x92\x91\x90aW\xA0V[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17PW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\n\xBCV[\x82\x81\x14a4\xBAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R\x7FDelegationManager._setStrategyWi`D\x82\x01R\x7FthdrawalDelayBlocks: input lengt`d\x82\x01Ri\r\x04\r\xAD.m\xAC.\x8Cm`\xB3\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[\x82`\0[\x81\x81\x10\x15a6PW`\0\x86\x86\x83\x81\x81\x10a4\xDAWa4\xDAaR\xF8V[\x90P` \x02\x01` \x81\x01\x90a4\xEF\x91\x90aI\xE6V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\xA1` R`@\x81 T\x91\x92P\x86\x86\x85\x81\x81\x10a5\x1DWa5\x1DaR\xF8V[\x90P` \x02\x015\x90Pb\x03K\xC0\x81\x11\x15a5\xE1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`s`$\x82\x01R\x7FDelegationManager._setStrategyWi`D\x82\x01R\x7FthdrawalDelayBlocks: _withdrawal`d\x82\x01R\x7FDelayBlocks cannot be > MAX_WITH`\x84\x82\x01RrDRAWAL_DELAY_BLOCKS`h\x1B`\xA4\x82\x01R`\xC4\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x81\x81R`\xA1` \x90\x81R`@\x91\x82\x90 \x84\x90U\x81Q\x92\x83R\x82\x01\x84\x90R\x81\x01\x82\x90R\x7F\x0E~\xFAs\x8E\x8B\x0C\xE67j\x0C\x1A\xF4qeU@\xD2\xE9\xA8\x16G\xD7\xB0\x9E\xD8#\x01\x84&Wm\x90``\x01`@Q\x80\x91\x03\x90\xA1PPP\x80a6I\x90aS$V[\x90Pa4\xBEV[PPPPPPV[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a6yWP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a6\xFBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FPausable._initializePauser: _ini`D\x82\x01R\x7FtializePauser() can only be call`d\x82\x01Rfed once`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`f\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2a7>\x82a2fV[PPV[`@\x80Q\x80\x82\x01\x82R`\n\x81Ri\"\xB4\xB3\xB2\xB7&0\xBC\xB2\xB9`\xB1\x1B` \x91\x82\x01R\x81Q\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x81\x83\x01R\x7Fq\xB6%\xCF\xADD\xBA\xC6;\x13\xDB\xA0\x7F.\x1D`\x84\xEE\x04\xB6\xF8u!\x01\xEC\xE6\x12mXN\xE6\xEA\x81\x84\x01RF``\x82\x01R0`\x80\x80\x83\x01\x91\x90\x91R\x83Q\x80\x83\x03\x90\x91\x01\x81R`\xA0\x90\x91\x01\x90\x92R\x81Q\x91\x01 \x90V[`3\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[b\x03K\xC0\x81\x11\x15a8\xE4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`q`$\x82\x01R\x7FDelegationManager._setMinWithdra`D\x82\x01R\x7FwalDelayBlocks: _minWithdrawalDe`d\x82\x01R\x7FlayBlocks cannot be > MAX_WITHDR`\x84\x82\x01RpAWAL_DELAY_BLOCKS`x\x1B`\xA4\x82\x01R`\xC4\x01a\n\xBCV[`\x9DT`@\x80Q\x91\x82R` \x82\x01\x83\x90R\x7F\xAF\xA0\x03\xCDv\xF8\x7F\xF9\xD6+5\xBE\xEA\x88\x99 \xF3<\x0CB\xB8\xD4[t\x95Ma\xD5\x0FKki\x91\x01`@Q\x80\x91\x03\x90\xA1`\x9DUV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\x98` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 \x80T\x83\x92\x90a9\\\x90\x84\x90aWqV[\x92PP\x81\x90UP\x83`\x01`\x01`\xA0\x1B\x03\x16\x7F\x1E\xC0B\xC9e\xE2\xED\xD7\x10{Q\x18\x8E\xE0\xF3\x83\xE2.v\x17\x90A\xAB:\x9D\x18\xFF\x15\x14\x05\x16l\x84\x84\x84`@Qa\x0F0\x93\x92\x91\x90aW\xA0V[`\0a9\xAEa\x05\xF3\x87aX}V[`\0\x81\x81R`\x9E` R`@\x90 T\x90\x91P`\xFF\x16a:/W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` aY\xB5\x839\x81Q\x91R`D\x82\x01R\x7FdWithdrawal: action is not in qu`d\x82\x01Rbeue`\xE8\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`\x9DTC\x90a:D`\xA0\x89\x01`\x80\x8A\x01aW\xDDV[c\xFF\xFF\xFF\xFF\x16a:T\x91\x90aWqV[\x11\x15a:\xDCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`_`$\x82\x01R`\0\x80Q` aY\xB5\x839\x81Q\x91R`D\x82\x01R\x7FdWithdrawal: minWithdrawalDelayB`d\x82\x01R\x7Flocks period has not yet passed\0`\x84\x82\x01R`\xA4\x01a\n\xBCV[a:\xEC``\x87\x01`@\x88\x01aI\xE6V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a;yW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`P`$\x82\x01R`\0\x80Q` aY\xB5\x839\x81Q\x91R`D\x82\x01R\x7FdWithdrawal: only withdrawer can`d\x82\x01Ro\x101\xB7\xB6\xB862\xBA2\x900\xB1\xBA4\xB7\xB7`\x81\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[\x81\x15a;\xFBWa;\x8C`\xA0\x87\x01\x87aS\x96V[\x85\x14\x90Pa;\xFBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` aY\xB5\x839\x81Q\x91R`D\x82\x01R\x7FdWithdrawal: input length mismat`d\x82\x01Ra\x0Cm`\xF3\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`\0\x81\x81R`\x9E` R`@\x90 \x80T`\xFF\x19\x16\x90U\x81\x15a=`W`\0[a<'`\xA0\x88\x01\x88aS\x96V[\x90P\x81\x10\x15a=ZWC`\xA1`\0a\x02\x91\x90aWqV[\x11\x15a> W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aX\x8FV[s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a>B`\xA0\x8A\x01\x8AaS\x96V[\x83\x81\x81\x10a>RWa>RaR\xF8V[\x90P` \x02\x01` \x81\x01\x90a>g\x91\x90aI\xE6V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a?\xB7W`\0a>\x85` \x8A\x01\x8AaI\xE6V[\x90P`\0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16c\x0E\x81\x07<\x83a>\xC6`\xC0\x8E\x01\x8EaS\x96V[\x87\x81\x81\x10a>\xD6Wa>\xD6aR\xF8V[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x87\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x90\x94\x16`\x04\x85\x01R` \x02\x91\x90\x91\x015`$\x83\x01RP`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a?*W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a?N\x91\x90aVCV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x90\x81R`\x9A` R`@\x90 T\x91\x92P\x16\x80\x15a?\xAFWa?\xAF\x81\x84a?\x84`\xA0\x8F\x01\x8FaS\x96V[\x88\x81\x81\x10a?\x94Wa?\x94aR\xF8V[\x90P` \x02\x01` \x81\x01\x90a?\xA9\x91\x90aI\xE6V[\x85a9%V[PPPaADV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xC4b>\xA13\x89\x89\x85\x81\x81\x10a?\xF9Wa?\xF9aR\xF8V[\x90P` \x02\x01` \x81\x01\x90a@\x0E\x91\x90aI\xE6V[a@\x1B`\xA0\x8D\x01\x8DaS\x96V[\x86\x81\x81\x10a@+Wa@+aR\xF8V[\x90P` \x02\x01` \x81\x01\x90a@@\x91\x90aI\xE6V[a@M`\xC0\x8E\x01\x8EaS\x96V[\x87\x81\x81\x10a@]Wa@]aR\xF8V[`@Q`\xE0\x88\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R`\x01`\x01`\xA0\x1B\x03\x96\x87\x16`\x04\x82\x01R\x94\x86\x16`$\x86\x01R\x92\x90\x94\x16`D\x84\x01R` \x90\x91\x02\x015`d\x82\x01R`\x84\x01\x90P`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a@\xBDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a@\xD1W=`\0\x80>=`\0\xFD[PPPP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15aADWaAD\x823a@\xF6`\xA0\x8C\x01\x8CaS\x96V[\x85\x81\x81\x10aA\x06WaA\x06aR\xF8V[\x90P` \x02\x01` \x81\x01\x90aA\x1B\x91\x90aI\xE6V[aA(`\xC0\x8D\x01\x8DaS\x96V[\x86\x81\x81\x10aA8WaA8aR\xF8V[\x90P` \x02\x015a9%V[`\x01\x01a={V[PP[`@Q\x81\x81R\x7F\xC9p\x98\xC2\xF6X\x80\x0BM\xF2\x90\x01R\x7Fs$\xBC\xDF\xFC\xF6\xE8u\x1Ai\x9A\xB9 \xA1\xEC\xED[\x1D\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16;\x15aB\xA4W`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aA\xCA\x90\x86\x90\x86\x90`\x04\x01aY\x17V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aA\xE7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB\x0B\x91\x90aYtV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x10\xA3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`S`$\x82\x01R\x7FEIP1271SignatureUtils.checkSigna`D\x82\x01R\x7Fture_EIP1271: ERC1271 signature `d\x82\x01Rr\x1D\x99\\\x9AY\x9AX\xD8]\x1A[\xDB\x88\x19\x98Z[\x19Y`j\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[\x82`\x01`\x01`\xA0\x1B\x03\x16aB\xB8\x83\x83aD\x84V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x10\xA3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FEIP1271SignatureUtils.checkSigna`D\x82\x01R\x7Fture_EIP1271: signature not from`d\x82\x01Rf\x109\xB4\xB3\xB72\xB9`\xC9\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x83\x16s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x14\x15aC\xEFW`@Qb8{\x13`\xE8\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c8{\x13\0\x90aC\xB8\x90\x88\x90\x88\x90\x87\x90`\x04\x01aW\xA0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15aC\xD2W`\0\x80\xFD[PZ\xF1\x15\x80\x15aC\xE6W=`\0\x80>=`\0\xFD[PPPPaD}V[`@Qc\xC6\x08\xC7\xF3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R\x84\x81\x16`$\x83\x01R`D\x82\x01\x84\x90R\x82\x81\x16`d\x83\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xC6\x08\xC7\xF3\x90`\x84\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15aDiW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13bW=`\0\x80>=`\0\xFD[PPPPPV[`\0\x80`\0aD\x93\x85\x85aD\xA0V[\x91P\x91Pa\t\xC6\x81aE\x10V[`\0\x80\x82Q`A\x14\x15aD\xD7W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaD\xCB\x87\x82\x85\x85aF\xCBV[\x94P\x94PPPPaE\tV[\x82Q`@\x14\x15aE\x01W` \x83\x01Q`@\x84\x01QaD\xF6\x86\x83\x83aG\xB8V[\x93P\x93PPPaE\tV[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aE$WaE$aY\x9EV[\x14\x15aE-WPV[`\x01\x81`\x04\x81\x11\x15aEAWaEAaY\x9EV[\x14\x15aE\x8FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FECDSA: invalid signature\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\n\xBCV[`\x02\x81`\x04\x81\x11\x15aE\xA3WaE\xA3aY\x9EV[\x14\x15aE\xF1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\n\xBCV[`\x03\x81`\x04\x81\x11\x15aF\x05WaF\x05aY\x9EV[\x14\x15aF^W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 's' val`D\x82\x01Raue`\xF0\x1B`d\x82\x01R`\x84\x01a\n\xBCV[`\x04\x81`\x04\x81\x11\x15aFrWaFraY\x9EV[\x14\x15a\x0F\xEEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 'v' val`D\x82\x01Raue`\xF0\x1B`d\x82\x01R`\x84\x01a\n\xBCV[`\0\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x83\x11\x15aG\x02WP`\0\x90P`\x03aG\xAFV[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG\x1AWP\x84`\xFF\x16`\x1C\x14\x15[\x15aG+WP`\0\x90P`\x04aG\xAFV[`@\x80Q`\0\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15aG\x7FW=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xA8W`\0`\x01\x92P\x92PPaG\xAFV[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aG\xD5`\xFF\x86\x90\x1C`\x1BaWqV[\x90PaG\xE3\x87\x82\x88\x85aF\xCBV[\x93P\x93PPP\x93P\x93\x91PPV[`\0\x80\x83`\x1F\x84\x01\x12aH\x03W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH\x1AW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aE\tW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aHHW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aH^W`\0\x80\xFD[aHj\x85\x82\x86\x01aG\xF1V[\x90\x96\x90\x95P\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\x96\x81aHvV[\x91\x90PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aH\xB3W`\0\x80\xFD[\x855aH\xBE\x81aHvV[\x94P` \x86\x015aH\xCE\x81aHvV[\x93P`@\x86\x015aH\xDE\x81aHvV[\x94\x97\x93\x96P\x93\x94``\x81\x015\x94P`\x80\x015\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15aI.W\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aI\x12V[P\x90\x96\x95PPPPPPV[`\0``\x82\x84\x03\x12\x15aILW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aIdW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aI{W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aE\tW`\0\x80\xFD[`\0\x80`\0`\x80\x84\x86\x03\x12\x15aI\xA8W`\0\x80\xFD[aI\xB2\x85\x85aI:V[\x92P``\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aI\xCDW`\0\x80\xFD[aI\xD9\x86\x82\x87\x01aIRV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aI\xF8W`\0\x80\xFD[\x815aJ\x03\x81aHvV[\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15aJ\x1FW`\0\x80\xFD[\x835aJ*\x81aHvV[\x92P` \x84\x015aJ:\x81aHvV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15aJ]W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aJzW`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aJ\x91W`\0\x80\xFD[aJ\x9D\x88\x83\x89\x01aG\xF1V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aJ\xB6W`\0\x80\xFD[PaJ\xC3\x87\x82\x88\x01aG\xF1V[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0\x80`\0\x80`\0\x80`\xC0\x89\x8B\x03\x12\x15aJ\xEBW`\0\x80\xFD[\x885aJ\xF6\x81aHvV[\x97P` \x89\x015aK\x06\x81aHvV[\x96P`@\x89\x015\x95P``\x89\x015\x94P`\x80\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK0W`\0\x80\xFD[aK<\x8C\x83\x8D\x01aG\xF1V[\x90\x96P\x94P`\xA0\x8B\x015\x91P\x80\x82\x11\x15aKUW`\0\x80\xFD[PaKb\x8B\x82\x8C\x01aG\xF1V[\x99\x9C\x98\x9BP\x96\x99P\x94\x97\x93\x96\x92\x95\x94PPPV[`\0\x80`\0\x80`\0\x80`\0\x80`\x80\x89\x8B\x03\x12\x15aK\x92W`\0\x80\xFD[\x885`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xA9W`\0\x80\xFD[aK\xB5\x8C\x83\x8D\x01aG\xF1V[\x90\x9AP\x98P` \x8B\x015\x91P\x80\x82\x11\x15aK\xCEW`\0\x80\xFD[aK\xDA\x8C\x83\x8D\x01aG\xF1V[\x90\x98P\x96P`@\x8B\x015\x91P\x80\x82\x11\x15aK\xF3W`\0\x80\xFD[aK\xFF\x8C\x83\x8D\x01aG\xF1V[\x90\x96P\x94P``\x8B\x015\x91P\x80\x82\x11\x15aKUW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aLPWaLPaL\x18V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aLPWaLPaL\x18V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aL\xA0WaL\xA0aL\x18V[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\x96\x81aL\xA8V[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aL\xDEWaL\xDEaL\x18V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12aL\xF9W`\0\x80\xFD[\x815` aM\x0EaM\t\x83aL\xC5V[aLxV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aM-W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMQW\x805aMD\x81aHvV[\x83R\x91\x83\x01\x91\x83\x01aM1V[P\x96\x95PPPPPPV[`\0\x82`\x1F\x83\x01\x12aMmW`\0\x80\xFD[\x815` aM}aM\t\x83aL\xC5V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aM\x9CW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMQW\x805\x83R\x91\x83\x01\x91\x83\x01aM\xA0V[`\0`\xE0\x82\x84\x03\x12\x15aM\xC9W`\0\x80\xFD[aM\xD1aL.V[\x90PaM\xDC\x82aH\x8BV[\x81RaM\xEA` \x83\x01aH\x8BV[` \x82\x01RaM\xFB`@\x83\x01aH\x8BV[`@\x82\x01R``\x82\x015``\x82\x01RaN\x16`\x80\x83\x01aL\xBAV[`\x80\x82\x01R`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aN5W`\0\x80\xFD[aNA\x85\x83\x86\x01aL\xE8V[`\xA0\x84\x01R`\xC0\x84\x015\x91P\x80\x82\x11\x15aNZW`\0\x80\xFD[PaNg\x84\x82\x85\x01aM\\V[`\xC0\x83\x01RP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aN\x85W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\x9BW`\0\x80\xFD[aN\xA7\x84\x82\x85\x01aM\xB7V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aN\xC1W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14aJ\x03W`\0\x80\xFD[\x80\x15\x15\x81\x14a\x0F\xEEW`\0\x80\xFD[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15aN\xF8W`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aO\x0FW`\0\x80\xFD[\x90\x87\x01\x90`\xE0\x82\x8A\x03\x12\x15aO#W`\0\x80\xFD[\x90\x95P` \x87\x015\x90\x80\x82\x11\x15aO9W`\0\x80\xFD[PaOF\x88\x82\x89\x01aG\xF1V[\x90\x95P\x93PP`@\x86\x015\x91P``\x86\x015aOa\x81aN\xD2V[\x80\x91PP\x92\x95P\x92\x95\x90\x93PV[`\0\x80`@\x83\x85\x03\x12\x15aO\x82W`\0\x80\xFD[\x825aO\x8D\x81aHvV[\x91P` \x83\x015aO\x9D\x81aHvV[\x80\x91PP\x92P\x92\x90PV[`\0`@\x82\x84\x03\x12\x15aO\xBAW`\0\x80\xFD[aO\xC2aLVV[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aO\xDBW`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12aO\xEFW`\0\x80\xFD[\x815` \x82\x82\x11\x15aP\x03WaP\x03aL\x18V[aP\x15`\x1F\x83\x01`\x1F\x19\x16\x82\x01aLxV[\x92P\x81\x83R\x86\x81\x83\x86\x01\x01\x11\x15aP+W`\0\x80\xFD[\x81\x81\x85\x01\x82\x85\x017`\0\x81\x83\x85\x01\x01R\x82\x85R\x80\x86\x015\x81\x86\x01RPPPP\x92\x91PPV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aPhW`\0\x80\xFD[\x855aPs\x81aHvV[\x94P` \x86\x015aP\x83\x81aHvV[\x93P`@\x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aP\x9FW`\0\x80\xFD[aP\xAB\x89\x83\x8A\x01aO\xA8V[\x94P``\x88\x015\x91P\x80\x82\x11\x15aP\xC1W`\0\x80\xFD[PaP\xCE\x88\x82\x89\x01aO\xA8V[\x95\x98\x94\x97P\x92\x95`\x80\x015\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15aP\xF3W`\0\x80\xFD[\x825aP\xFE\x81aHvV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\x19W`\0\x80\xFD[aQ%\x85\x82\x86\x01aL\xE8V[\x91PP\x92P\x92\x90PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQ_W\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aQCV[P\x94\x95\x94PPPPPV[` \x81R`\0aJ\x03` \x83\x01\x84aQ/V[`\0\x80` \x83\x85\x03\x12\x15aQ\x90W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xA6W`\0\x80\xFD[aHj\x85\x82\x86\x01aIRV[`\0\x80`@\x83\x85\x03\x12\x15aQ\xC5W`\0\x80\xFD[\x825aQ\xD0\x81aHvV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15aQ\xF4W`\0\x80\xFD[\x845aQ\xFF\x81aHvV[\x93P` \x85\x015\x92P`@\x85\x015aR\x16\x81aHvV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQ_W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aR:V[`@\x81R`\0aRr`@\x83\x01\x85aR&V[\x82\x81\x03` \x84\x01Ra\x12 \x81\x85aQ/V[`\0\x80`\0``\x84\x86\x03\x12\x15aR\x99W`\0\x80\xFD[\x835aR\xA4\x81aHvV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xBFW`\0\x80\xFD[aR\xCB\x86\x82\x87\x01aO\xA8V[\x92PP`@\x84\x015\x90P\x92P\x92P\x92V[`\0``\x82\x84\x03\x12\x15aR\xEEW`\0\x80\xFD[aJ\x03\x83\x83aI:V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15aS8WaS8aS\x0EV[P`\x01\x01\x90V[` \x80\x82R`\x19\x90\x82\x01R\x7FPausable: index is paused\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`\0\x825`^\x19\x836\x03\x01\x81\x12aS\x8CW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aS\xADW`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aS\xC7W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aE\tW`\0\x80\xFD[``\x81\x01\x825aS\xEE\x81aHvV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x83R` \x84\x015\x90aT\n\x82aHvV[\x16` \x83\x01R`@\x83\x015aT\x1E\x81aL\xA8V[c\xFF\xFF\xFF\xFF\x81\x16`@\x84\x01RP\x92\x91PPV[` \x81R\x81` \x82\x01R\x81\x83`@\x83\x017`\0\x81\x83\x01`@\x90\x81\x01\x91\x90\x91R`\x1F\x90\x92\x01`\x1F\x19\x16\x01\x01\x91\x90PV[`\0` \x82\x84\x03\x12\x15aTrW`\0\x80\xFD[\x81QaJ\x03\x81aHvV[` \x80\x82R`*\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Ri9\x90:\xB780\xBA\xB9\xB2\xB9`\xB1\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`7\x90\x82\x01R\x7FDelegationManager: onlyStrategyM`@\x82\x01R\x7FanagerOrEigenPodManager\0\0\0\0\0\0\0\0\0``\x82\x01R`\x80\x01\x90V[`\0` \x82\x84\x03\x12\x15aU6W`\0\x80\xFD[\x81QaJ\x03\x81aN\xD2V[` \x80\x82R`(\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Rg9\x9080\xBA\xB9\xB2\xB9`\xC1\x1B``\x82\x01R`\x80\x01\x90V[`\0\x825`\xDE\x19\x836\x03\x01\x81\x12aS\x8CW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aU\xB1W`\0\x80\xFD[\x815aJ\x03\x81aN\xD2V[`\0`\x01\x80`\xA0\x1B\x03\x80\x83Q\x16\x84R\x80` \x84\x01Q\x16` \x85\x01R\x80`@\x84\x01Q\x16`@\x85\x01RP``\x82\x01Q``\x84\x01Rc\xFF\xFF\xFF\xFF`\x80\x83\x01Q\x16`\x80\x84\x01R`\xA0\x82\x01Q`\xE0`\xA0\x85\x01RaV\x17`\xE0\x85\x01\x82aR&V[\x90P`\xC0\x83\x01Q\x84\x82\x03`\xC0\x86\x01Ra\x12 \x82\x82aQ/V[` \x81R`\0aJ\x03` \x83\x01\x84aU\xBCV[`\0` \x82\x84\x03\x12\x15aVUW`\0\x80\xFD[PQ\x91\x90PV[`\0\x82`\x1F\x83\x01\x12aVmW`\0\x80\xFD[\x81Q` aV}aM\t\x83aL\xC5V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aV\x9CW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMQW\x80Q\x83R\x91\x83\x01\x91\x83\x01aV\xA0V[`\0\x80`@\x83\x85\x03\x12\x15aV\xCAW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aV\xE1W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12aV\xF5W`\0\x80\xFD[\x81Q` aW\x05aM\t\x83aL\xC5V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15aW$W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15aWKW\x85QaW<\x81aHvV[\x82R\x94\x82\x01\x94\x90\x82\x01\x90aW)V[\x91\x88\x01Q\x91\x96P\x90\x93PPP\x80\x82\x11\x15aWdW`\0\x80\xFD[PaQ%\x85\x82\x86\x01aV\\V[`\0\x82\x19\x82\x11\x15aW\x84WaW\x84aS\x0EV[P\x01\x90V[`\0\x82\x82\x10\x15aW\x9BWaW\x9BaS\x0EV[P\x03\x90V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[\x82\x81R`@` \x82\x01R`\0aN\xA7`@\x83\x01\x84aU\xBCV[`\0` \x82\x84\x03\x12\x15aW\xEFW`\0\x80\xFD[\x815aJ\x03\x81aL\xA8V[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\x815aX%\x81aHvV[aX/\x81\x83aW\xFAV[P`\x01\x81\x01` \x83\x015aXB\x81aHvV[aXL\x81\x83aW\xFAV[P`@\x83\x015aX[\x81aL\xA8V[\x81Tc\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x16`\xA0\x91\x90\x91\x1Bc\xFF\xFF\xFF\xFF`\xA0\x1B\x16\x17\x90UPPV[`\0aX\x896\x83aM\xB7V[\x92\x91PPV[` \x80\x82R`n\x90\x82\x01R`\0\x80Q` aY\xB5\x839\x81Q\x91R`@\x82\x01R\x7FdWithdrawal: withdrawalDelayBloc``\x82\x01R\x7Fks period has not yet passed for`\x80\x82\x01Rm this strategy`\x90\x1B`\xA0\x82\x01R`\xC0\x01\x90V[\x82\x81R`\0` `@\x81\x84\x01R\x83Q\x80`@\x85\x01R`\0[\x81\x81\x10\x15aYKW\x85\x81\x01\x83\x01Q\x85\x82\x01``\x01R\x82\x01aY/V[\x81\x81\x11\x15aY]W`\0``\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01``\x01\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aY\x86W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14aJ\x03W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD\xFEDelegationManager._completeQueue\xA2dipfsX\"\x12 \xE2y\x12\x1AK/\xF4\xCF\xCD\xA4\xE7\xD1\xB5\x1E@\xA5w\xF2z\xF7\xF3\xE3n\x9E\xBA2o\xADPu\xFD\xE8dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a610355366004614835565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a236600461489b565b6109ce565b6103ba6103b5366004614835565b610a90565b60405161036491906148f6565b6103da6103d5366004614993565b610df9565b005b6103da6103ea3660046149e6565b610f3e565b6103da6103fd366004614a0a565b610ff1565b6103da610410366004614a4b565b6110a8565b6103da610423366004614a64565b6111e7565b61035a6104363660046149e6565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f366004614a0a565b6111fb565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614acf565b611229565b6103da6104bc366004614a0a565b61136d565b61035a6104cf3660046149e6565b609b6020526000908152604090205481565b6103da6104ef366004614b76565b61141d565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610364565b61051b6105413660046149e6565b6001600160a01b039081166000908152609960205260409020600101541690565b6105756105703660046149e6565b61155a565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b61035a6213c68081565b6103da61157a565b61035a6105f3366004614e73565b611641565b610575610606366004614eaf565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614ee0565b611671565b6103da610644366004614a4b565b61170c565b61051b6106573660046149e6565b609a602052600090815260409020546001600160a01b031681565b6105756106803660046149e6565b61171d565b6103da61173e565b61035a61069b366004614f6f565b609860209081526000928352604080842090915290825290205481565b6103da6106c6366004615050565b611752565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150e0565b61197e565b604051610364919061516a565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da61073836600461517d565b611a58565b61035a61074b3660046149e6565b609f6020526000908152604090205481565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b610575610792366004614a4b565b609e6020526000908152604090205460ff1681565b6105756107b53660046151b2565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec3660046149e6565b60a16020526000908152604090205481565b61086e61080c3660046149e6565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151de565b611b2a565b61035a62034bc081565b6108d46108cf3660046149e6565b611be3565b60405161036492919061525f565b6103ba6108f03660046149e6565b611f9b565b6103da610903366004615284565b61245f565b6103da6109163660046152dc565b61257c565b6103da6109293660046149e6565b61260d565b61035a612683565b6103da610944366004614a4b565b6126c1565b609d54600090815b838110156109c657600060a16000878785818110610971576109716152f8565b905060200201602081019061098691906149e6565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b506109bf81615324565b9050610951565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a4c612683565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610ac55760405162461bcd60e51b8152600401610abc9061533f565b60405180910390fd5b6000836001600160401b03811115610adf57610adf614c18565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610dee57868682818110610b4357610b436152f8565b9050602002810190610b559190615376565b610b63906020810190615396565b9050878783818110610b7757610b776152f8565b9050602002810190610b899190615376565b610b939080615396565b905014610c085760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610abc565b33878783818110610c1b57610c1b6152f8565b9050602002810190610c2d9190615376565b610c3e9060608101906040016149e6565b6001600160a01b031614610cba5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610abc565b610dbf3383898985818110610cd157610cd16152f8565b9050602002810190610ce39190615376565b610cf49060608101906040016149e6565b8a8a86818110610d0657610d066152f8565b9050602002810190610d189190615376565b610d229080615396565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6857610d686152f8565b9050602002810190610d7a9190615376565b610d88906020810190615396565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061281d92505050565b838281518110610dd157610dd16152f8565b602090810291909101015280610de681615324565b915050610b29565b509095945050505050565b610e023361155a565b15610e885760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610abc565b610e923384612ddd565b604080518082019091526060815260006020820152610eb43380836000612fd0565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610eed91906153df565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f30929190615431565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb59190615460565b6001600160a01b0316336001600160a01b031614610fe55760405162461bcd60e51b8152600401610abc9061547d565b610fee81613266565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110505750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61106c5760405162461bcd60e51b8152600401610abc906154c7565b6110758361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a18185858561335d565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111149190615524565b6111305760405162461bcd60e51b8152600401610abc90615541565b606654818116146111a95760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111ef6133d8565b6110a184848484613432565b6001600160a01b0383166000908152609b602052604081205461122085828686611b2a565b95945050505050565b600054610100900460ff16158080156112495750600054600160ff909116105b806112635750303b158015611263575060005460ff166001145b6112c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610abc565b6000805460ff1916600117905580156112e9576000805461ff0019166101001790555b6112f38888613658565b6112fb613742565b609755611307896137d9565b6113108661382b565b61131c85858585613432565b8015611362576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113cc5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6113e85760405162461bcd60e51b8152600401610abc906154c7565b6113f18361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a181858585613925565b606654600290600490811614156114465760405162461bcd60e51b8152600401610abc9061533f565b600260c95414156114995760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c95560005b88811015611549576115398a8a838181106114be576114be6152f8565b90506020028101906114d09190615589565b8989848181106114e2576114e26152f8565b90506020028101906114f49190615396565b898986818110611506576115066152f8565b9050602002013588888781811061151f5761151f6152f8565b9050602002016020810190611534919061559f565b6139a0565b61154281615324565b90506114a1565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e69190615524565b6116025760405162461bcd60e51b8152600401610abc90615541565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000816040516020016116549190615630565b604051602081830303815290604052805190602001209050919050565b6066546002906004908116141561169a5760405162461bcd60e51b8152600401610abc9061533f565b600260c95414156116ed5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c9556116ff86868686866139a0565b5050600160c95550505050565b6117146133d8565b610fee8161382b565b6001600160a01b039081166000818152609a60205260409020549091161490565b6117466133d8565b61175060006137d9565b565b42836020015110156117d65760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610abc565b6117df8561155a565b156118685760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610abc565b6118718461171d565b6118fd5760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610abc565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119398783888860200151611b2a565b6001600160a01b0388166000908152609b602052604090206001840190558551909150611969908890839061418a565b61197587878686612fd0565b50505050505050565b6060600082516001600160401b0381111561199b5761199b614c18565b6040519080825280602002602001820160405280156119c4578160200160208202803683370190505b50905060005b83518110156109c6576001600160a01b03851660009081526098602052604081208551909190869084908110611a0257611a026152f8565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a3d57611a3d6152f8565b6020908102919091010152611a5181615324565b90506119ca565b611a613361171d565b611ae35760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610abc565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611b1e929190615431565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611ba0612683565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611c53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c779190615643565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611ce7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d0f91908101906156b7565b9150915060008313611d2657909590945092505050565b606080835160001415611de0576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611d9b57611d9b6152f8565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611dcf57611dcf6152f8565b602002602001018181525050611f8e565b8351611ded906001615771565b6001600160401b03811115611e0457611e04614c18565b604051908082528060200260200182016040528015611e2d578160200160208202803683370190505b50915081516001600160401b03811115611e4957611e49614c18565b604051908082528060200260200182016040528015611e72578160200160208202803683370190505b50905060005b8451811015611f0c57848181518110611e9357611e936152f8565b6020026020010151838281518110611ead57611ead6152f8565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611edf57611edf6152f8565b6020026020010151828281518110611ef957611ef96152f8565b6020908102919091010152600101611e78565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f319190615789565b81518110611f4157611f416152f8565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f719190615789565b81518110611f8157611f816152f8565b6020026020010181815250505b9097909650945050505050565b60665460609060019060029081161415611fc75760405162461bcd60e51b8152600401610abc9061533f565b611fd08361155a565b6120505760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610abc565b6120598361171d565b156120cc5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610abc565b6001600160a01b0383166121485760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610abc565b6001600160a01b038084166000818152609a60205260409020549091169033148061217b5750336001600160a01b038216145b806121a257506001600160a01b038181166000908152609960205260409020600101541633145b6122145760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610abc565b60008061222086611be3565b9092509050336001600160a01b0387161461227657826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b031916905581516122f8576040805160008152602081019091529450612456565b81516001600160401b0381111561231157612311614c18565b60405190808252806020026020018201604052801561233a578160200160208202803683370190505b50945060005b8251811015612454576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106123a0576123a06152f8565b6020026020010151826000815181106123bb576123bb6152f8565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106123ed576123ed6152f8565b602002602001015181600081518110612408576124086152f8565b60200260200101818152505061242189878b858561281d565b888481518110612433576124336152f8565b6020026020010181815250505050808061244c90615324565b915050612340565b505b50505050919050565b6124683361155a565b156124e65760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610abc565b6124ef8361171d565b6125705760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610abc565b6110a333848484612fd0565b6125853361171d565b6126035760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610abc565b610fee3382612ddd565b6126156133d8565b6001600160a01b03811661267a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abc565b610fee816137d9565b60007f00000000000000000000000000000000000000000000000000000000000000004614156126b4575060975490565b6126bc613742565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612714573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127389190615460565b6001600160a01b0316336001600160a01b0316146127685760405162461bcd60e51b8152600401610abc9061547d565b6066541981196066541916146127e65760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111dc565b60006001600160a01b0386166128b45760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610abc565b825161293e5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610abc565b60005b8351811015612ceb576001600160a01b03861615612997576129978688868481518110612970576129706152f8565b602002602001015186858151811061298a5761298a6152f8565b602002602001015161335d565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b03168482815181106129c7576129c76152f8565b60200260200101516001600160a01b03161415612a90577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612a2057612a206152f8565b60200260200101516040518363ffffffff1660e01b8152600401612a599291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a7357600080fd5b505af1158015612a87573d6000803e3d6000fd5b50505050612ce3565b846001600160a01b0316876001600160a01b03161480612b6257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612aec57612aec6152f8565b60200260200101516040518263ffffffff1660e01b8152600401612b1f91906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b609190615524565b155b612c2e5760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610abc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612c7057612c706152f8565b6020026020010151868581518110612c8a57612c8a6152f8565b60200260200101516040518463ffffffff1660e01b8152600401612cb0939291906157a0565b600060405180830381600087803b158015612cca57600080fd5b505af1158015612cde573d6000803e3d6000fd5b505050505b600101612941565b506001600160a01b0386166000908152609f60205260408120805491829190612d1383615324565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d7b82611641565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612dc990839085906157c4565b60405180910390a198975050505050505050565b6213c680612df160608301604084016157dd565b63ffffffff161115612ea65760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610abc565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612ee290606084019084016157dd565b63ffffffff161015612f785760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610abc565b6001600160a01b03821660009081526099602052604090208190612f9c828261581a565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611b1e9084906153df565b60665460009060019081161415612ff95760405162461bcd60e51b8152600401610abc9061533f565b6001600160a01b0380851660009081526099602052604090206001015416801580159061302f5750336001600160a01b03821614155b80156130445750336001600160a01b03861614155b156131b15742846020015110156130c35760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff161561315d5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff1916600117905585015161319e9088908890859088906109ce565b90506131af8282876000015161418a565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061321088611be3565b9150915060005b82518110156113625761325e888a858481518110613237576132376152f8565b6020026020010151858581518110613251576132516152f8565b6020026020010151613925565b600101613217565b6001600160a01b0381166132f45760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610abc565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613394908490615789565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f30939291906157a0565b6033546001600160a01b031633146117505760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610abc565b8281146134ba5760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610abc565b8260005b818110156136505760008686838181106134da576134da6152f8565b90506020020160208101906134ef91906149e6565b6001600160a01b038116600090815260a1602052604081205491925086868581811061351d5761351d6152f8565b90506020020135905062034bc08111156135e15760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610abc565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a15050508061364990615324565b90506134be565b505050505050565b6065546001600160a01b031615801561367957506001600160a01b03821615155b6136fb5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261373e82613266565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138e45760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610abc565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061395c908490615771565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f30939291906157a0565b60006139ae6105f38761587d565b6000818152609e602052604090205490915060ff16613a2f5760405162461bcd60e51b815260206004820152604360248201526000805160206159b583398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610abc565b609d544390613a4460a0890160808a016157dd565b63ffffffff16613a549190615771565b1115613adc5760405162461bcd60e51b815260206004820152605f60248201526000805160206159b583398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610abc565b613aec60608701604088016149e6565b6001600160a01b0316336001600160a01b031614613b795760405162461bcd60e51b815260206004820152605060248201526000805160206159b583398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610abc565b8115613bfb57613b8c60a0870187615396565b85149050613bfb5760405162461bcd60e51b815260206004820152604260248201526000805160206159b583398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610abc565b6000818152609e60205260409020805460ff191690558115613d605760005b613c2760a0880188615396565b9050811015613d5a574360a16000613c4260a08b018b615396565b85818110613c5257613c526152f8565b9050602002016020810190613c6791906149e6565b6001600160a01b03168152602081019190915260400160002054613c9160a08a0160808b016157dd565b63ffffffff16613ca19190615771565b1115613cbf5760405162461bcd60e51b8152600401610abc9061588f565b613d52613ccf60208901896149e6565b33613cdd60a08b018b615396565b85818110613ced57613ced6152f8565b9050602002016020810190613d0291906149e6565b613d0f60c08c018c615396565b86818110613d1f57613d1f6152f8565b905060200201358a8a87818110613d3857613d386152f8565b9050602002016020810190613d4d91906149e6565b614344565b600101613c1a565b5061414f565b336000908152609a60205260408120546001600160a01b0316905b613d8860a0890189615396565b905081101561414c574360a16000613da360a08c018c615396565b85818110613db357613db36152f8565b9050602002016020810190613dc891906149e6565b6001600160a01b03168152602081019190915260400160002054613df260a08b0160808c016157dd565b63ffffffff16613e029190615771565b1115613e205760405162461bcd60e51b8152600401610abc9061588f565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e4260a08a018a615396565b83818110613e5257613e526152f8565b9050602002016020810190613e6791906149e6565b6001600160a01b03161415613fb7576000613e8560208a018a6149e6565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613ec660c08e018e615396565b87818110613ed657613ed66152f8565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613f2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f4e9190615643565b6001600160a01b038084166000908152609a6020526040902054919250168015613faf57613faf8184613f8460a08f018f615396565b88818110613f9457613f946152f8565b9050602002016020810190613fa991906149e6565b85613925565b505050614144565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea133898985818110613ff957613ff96152f8565b905060200201602081019061400e91906149e6565b61401b60a08d018d615396565b8681811061402b5761402b6152f8565b905060200201602081019061404091906149e6565b61404d60c08e018e615396565b8781811061405d5761405d6152f8565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b1580156140bd57600080fd5b505af11580156140d1573d6000803e3d6000fd5b505050506001600160a01b038216156141445761414482336140f660a08c018c615396565b85818110614106576141066152f8565b905060200201602081019061411b91906149e6565b61412860c08d018d615396565b86818110614138576141386152f8565b90506020020135613925565b600101613d7b565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b156142a457604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141ca9086908690600401615917565b602060405180830381865afa1580156141e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061420b9190615974565b6001600160e01b031916146110a35760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610abc565b826001600160a01b03166142b88383614484565b6001600160a01b0316146110a35760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610abc565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156143ef5760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b1300906143b8908890889087906004016157a0565b600060405180830381600087803b1580156143d257600080fd5b505af11580156143e6573d6000803e3d6000fd5b5050505061447d565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561446957600080fd5b505af1158015611362573d6000803e3d6000fd5b5050505050565b600080600061449385856144a0565b915091506109c681614510565b6000808251604114156144d75760208301516040840151606085015160001a6144cb878285856146cb565b94509450505050614509565b82516040141561450157602083015160408401516144f68683836147b8565b935093505050614509565b506000905060025b9250929050565b60008160048111156145245761452461599e565b141561452d5750565b60018160048111156145415761454161599e565b141561458f5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610abc565b60028160048111156145a3576145a361599e565b14156145f15760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610abc565b60038160048111156146055761460561599e565b141561465e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610abc565b60048160048111156146725761467261599e565b1415610fee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610abc565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561470257506000905060036147af565b8460ff16601b1415801561471a57508460ff16601c14155b1561472b57506000905060046147af565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561477f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147a8576000600192509250506147af565b9150600090505b94509492505050565b6000806001600160ff1b038316816147d560ff86901c601b615771565b90506147e3878288856146cb565b935093505050935093915050565b60008083601f84011261480357600080fd5b5081356001600160401b0381111561481a57600080fd5b6020830191508360208260051b850101111561450957600080fd5b6000806020838503121561484857600080fd5b82356001600160401b0381111561485e57600080fd5b61486a858286016147f1565b90969095509350505050565b6001600160a01b0381168114610fee57600080fd5b803561489681614876565b919050565b600080600080600060a086880312156148b357600080fd5b85356148be81614876565b945060208601356148ce81614876565b935060408601356148de81614876565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b8181101561492e57835183529284019291840191600101614912565b50909695505050505050565b60006060828403121561494c57600080fd5b50919050565b60008083601f84011261496457600080fd5b5081356001600160401b0381111561497b57600080fd5b60208301915083602082850101111561450957600080fd5b6000806000608084860312156149a857600080fd5b6149b2858561493a565b925060608401356001600160401b038111156149cd57600080fd5b6149d986828701614952565b9497909650939450505050565b6000602082840312156149f857600080fd5b8135614a0381614876565b9392505050565b600080600060608486031215614a1f57600080fd5b8335614a2a81614876565b92506020840135614a3a81614876565b929592945050506040919091013590565b600060208284031215614a5d57600080fd5b5035919050565b60008060008060408587031215614a7a57600080fd5b84356001600160401b0380821115614a9157600080fd5b614a9d888389016147f1565b90965094506020870135915080821115614ab657600080fd5b50614ac3878288016147f1565b95989497509550505050565b60008060008060008060008060c0898b031215614aeb57600080fd5b8835614af681614876565b97506020890135614b0681614876565b9650604089013595506060890135945060808901356001600160401b0380821115614b3057600080fd5b614b3c8c838d016147f1565b909650945060a08b0135915080821115614b5557600080fd5b50614b628b828c016147f1565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614b9257600080fd5b88356001600160401b0380821115614ba957600080fd5b614bb58c838d016147f1565b909a50985060208b0135915080821115614bce57600080fd5b614bda8c838d016147f1565b909850965060408b0135915080821115614bf357600080fd5b614bff8c838d016147f1565b909650945060608b0135915080821115614b5557600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c5057614c50614c18565b60405290565b604080519081016001600160401b0381118282101715614c5057614c50614c18565b604051601f8201601f191681016001600160401b0381118282101715614ca057614ca0614c18565b604052919050565b63ffffffff81168114610fee57600080fd5b803561489681614ca8565b60006001600160401b03821115614cde57614cde614c18565b5060051b60200190565b600082601f830112614cf957600080fd5b81356020614d0e614d0983614cc5565b614c78565b82815260059290921b84018101918181019086841115614d2d57600080fd5b8286015b84811015614d51578035614d4481614876565b8352918301918301614d31565b509695505050505050565b600082601f830112614d6d57600080fd5b81356020614d7d614d0983614cc5565b82815260059290921b84018101918181019086841115614d9c57600080fd5b8286015b84811015614d515780358352918301918301614da0565b600060e08284031215614dc957600080fd5b614dd1614c2e565b9050614ddc8261488b565b8152614dea6020830161488b565b6020820152614dfb6040830161488b565b604082015260608201356060820152614e1660808301614cba565b608082015260a08201356001600160401b0380821115614e3557600080fd5b614e4185838601614ce8565b60a084015260c0840135915080821115614e5a57600080fd5b50614e6784828501614d5c565b60c08301525092915050565b600060208284031215614e8557600080fd5b81356001600160401b03811115614e9b57600080fd5b614ea784828501614db7565b949350505050565b600060208284031215614ec157600080fd5b813560ff81168114614a0357600080fd5b8015158114610fee57600080fd5b600080600080600060808688031215614ef857600080fd5b85356001600160401b0380821115614f0f57600080fd5b9087019060e0828a031215614f2357600080fd5b90955060208701359080821115614f3957600080fd5b50614f46888289016147f1565b909550935050604086013591506060860135614f6181614ed2565b809150509295509295909350565b60008060408385031215614f8257600080fd5b8235614f8d81614876565b91506020830135614f9d81614876565b809150509250929050565b600060408284031215614fba57600080fd5b614fc2614c56565b905081356001600160401b0380821115614fdb57600080fd5b818401915084601f830112614fef57600080fd5b813560208282111561500357615003614c18565b615015601f8301601f19168201614c78565b9250818352868183860101111561502b57600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a0868803121561506857600080fd5b853561507381614876565b9450602086013561508381614876565b935060408601356001600160401b038082111561509f57600080fd5b6150ab89838a01614fa8565b945060608801359150808211156150c157600080fd5b506150ce88828901614fa8565b95989497509295608001359392505050565b600080604083850312156150f357600080fd5b82356150fe81614876565b915060208301356001600160401b0381111561511957600080fd5b61512585828601614ce8565b9150509250929050565b600081518084526020808501945080840160005b8381101561515f57815187529582019590820190600101615143565b509495945050505050565b602081526000614a03602083018461512f565b6000806020838503121561519057600080fd5b82356001600160401b038111156151a657600080fd5b61486a85828601614952565b600080604083850312156151c557600080fd5b82356151d081614876565b946020939093013593505050565b600080600080608085870312156151f457600080fd5b84356151ff81614876565b935060208501359250604085013561521681614876565b9396929550929360600135925050565b600081518084526020808501945080840160005b8381101561515f5781516001600160a01b03168752958201959082019060010161523a565b6040815260006152726040830185615226565b8281036020840152611220818561512f565b60008060006060848603121561529957600080fd5b83356152a481614876565b925060208401356001600160401b038111156152bf57600080fd5b6152cb86828701614fa8565b925050604084013590509250925092565b6000606082840312156152ee57600080fd5b614a03838361493a565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156153385761533861530e565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e1983360301811261538c57600080fd5b9190910192915050565b6000808335601e198436030181126153ad57600080fd5b8301803591506001600160401b038211156153c757600080fd5b6020019150600581901b360382131561450957600080fd5b6060810182356153ee81614876565b6001600160a01b03908116835260208401359061540a82614876565b166020830152604083013561541e81614ca8565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561547257600080fd5b8151614a0381614876565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561553657600080fd5b8151614a0381614ed2565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de1983360301811261538c57600080fd5b6000602082840312156155b157600080fd5b8135614a0381614ed2565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261561760e0850182615226565b905060c083015184820360c0860152611220828261512f565b602081526000614a0360208301846155bc565b60006020828403121561565557600080fd5b5051919050565b600082601f83011261566d57600080fd5b8151602061567d614d0983614cc5565b82815260059290921b8401810191818101908684111561569c57600080fd5b8286015b84811015614d5157805183529183019183016156a0565b600080604083850312156156ca57600080fd5b82516001600160401b03808211156156e157600080fd5b818501915085601f8301126156f557600080fd5b81516020615705614d0983614cc5565b82815260059290921b8401810191818101908984111561572457600080fd5b948201945b8386101561574b57855161573c81614876565b82529482019490820190615729565b9188015191965090935050508082111561576457600080fd5b506151258582860161565c565b600082198211156157845761578461530e565b500190565b60008282101561579b5761579b61530e565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b828152604060208201526000614ea760408301846155bc565b6000602082840312156157ef57600080fd5b8135614a0381614ca8565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561582581614876565b61582f81836157fa565b5060018101602083013561584281614876565b61584c81836157fa565b50604083013561585b81614ca8565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006158893683614db7565b92915050565b6020808252606e908201526000805160206159b583398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b8181101561594b5785810183015185820160600152820161592f565b8181111561595d576000606083870101525b50601f01601f191692909201606001949350505050565b60006020828403121561598657600080fd5b81516001600160e01b031981168114614a0357600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a2646970667358221220e279121a4b2ff4cfcda4e7d1b51e40a577f27af7f3e36e9eba326fad5075fde864736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x03BW`\x005`\xE0\x1C\x80cc[\xBD\x10\x11a\x01\xB8W\x80c\xB7\xF0n\xBE\x11a\x01\x04W\x80c\xCF\x80\x87>\x11a\0\xA2W\x80c\xF1ar\xB0\x11a\0|W\x80c\xF1ar\xB0\x14a\t\x08W\x80c\xF2\xFD\xE3\x8B\x14a\t\x1BW\x80c\xF6\x98\xDA%\x14a\t.W\x80c\xFA\xBC\x1C\xBC\x14a\t6W`\0\x80\xFD[\x80c\xCF\x80\x87>\x14a\x08\xC1W\x80c\xDA\x8B\xE8d\x14a\x08\xE2W\x80c\xEE\xA9\x06K\x14a\x08\xF5W`\0\x80\xFD[\x80c\xC4\x887Z\x11a\0\xDEW\x80c\xC4\x887Z\x14a\x07\xDEW\x80c\xC5\xE4\x80\xDB\x14a\x07\xFEW\x80c\xC9KQ\x11\x14a\x08\xA4W\x80c\xCAf\x1C\x04\x14a\x08\xB7W`\0\x80\xFD[\x80c\xB7\xF0n\xBE\x14a\x07\x84W\x80c\xBBE\xFE\xF2\x14a\x07\xA7W\x80c\xC4H\xFE\xB8\x14a\x07\xD5W`\0\x80\xFD[\x80c\x88o\x11\x95\x11a\x01qW\x80c\x91\x04\xC3\x19\x11a\x01KW\x80c\x91\x04\xC3\x19\x14a\x07\x0FW\x80c\x99\xBE\x81\xC8\x14a\x07*W\x80c\xA1x\x84\x84\x14a\x07=W\x80c\xB14Bq\x14a\x07]W`\0\x80\xFD[\x80c\x88o\x11\x95\x14a\x06\xCBW\x80c\x8D\xA5\xCB[\x14a\x06\xDEW\x80c\x90\x04\x13G\x14a\x06\xEFW`\0\x80\xFD[\x80cc[\xBD\x10\x14a\x066W\x80ce\xDA\x12d\x14a\x06IW\x80cmp\xF7\xAE\x14a\x06rW\x80cqP\x18\xA6\x14a\x06\x85W\x80cw\x8EU\xF3\x14a\x06\x8DW\x80c\x7FT\x80q\x14a\x06\xB8W`\0\x80\xFD[\x80c(\xA5s\xAE\x11a\x02\x92W\x80cFe\xBC\xDA\x11a\x020W\x80cY{6\xDA\x11a\x02\nW\x80cY{6\xDA\x14a\x05\xE5W\x80cZ\xC8j\xB7\x14a\x05\xF8W\x80c\\\x97Z\xBB\x14a\x06\x1BW\x80c`\xD7\xFA\xED\x14a\x06#W`\0\x80\xFD[\x80cFe\xBC\xDA\x14a\x05\xACW\x80cO\xC4\x0Ba\x14a\x05\xD3W\x80cY\\jg\x14a\x05\xDDW`\0\x80\xFD[\x80c9\xB7\x0E8\x11a\x02lW\x80c9\xB7\x0E8\x14a\x04\xF4W\x80c<\xDE\xB5\xE0\x14a\x053W\x80c>(9\x1D\x14a\x05bW\x80cC7s\x82\x14a\x05\x85W`\0\x80\xFD[\x80c(\xA5s\xAE\x14a\x04\xAEW\x80c)\xC7}O\x14a\x04\xC1W\x80c3@C\x96\x14a\x04\xE1W`\0\x80\xFD[\x80c\x13-Ig\x11a\x02\xFFW\x80c\x16\x92\x83e\x11a\x02\xD9W\x80c\x16\x92\x83e\x14a\x04(W\x80c\x1B\xBC\xE0\x91\x14a\x04aW\x80c `kp\x14a\x04tW\x80c\"\xBF@\xE4\x14a\x04\x9BW`\0\x80\xFD[\x80c\x13-Ig\x14a\x03\xEFW\x80c\x13d9\xDD\x14a\x04\x02W\x80c\x15\"\xBF\x02\x14a\x04\x15W`\0\x80\xFD[\x80c\x04I\xCA9\x14a\x03GW\x80c\x04\xA4\xF9y\x14a\x03mW\x80c\x0B\x9FHz\x14a\x03\x94W\x80c\r\xD8\xDD\x02\x14a\x03\xA7W\x80c\x0FX\x9EY\x14a\x03\xC7W\x80c\x10\xD6z/\x14a\x03\xDCW[`\0\x80\xFD[a\x03Za\x03U6`\x04aH5V[a\tIV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x03Z\x7F\x14\xBD\xE6t\xC9\xF6K*\xD0\x0E\xAA\xEEJ\x8B\xED\x1F\xAB\xEF5\xC7P~<[\x9C\xFC\x946\x90\x9A-\xAD\x81V[a\x03Za\x03\xA26`\x04aH\x9BV[a\t\xCEV[a\x03\xBAa\x03\xB56`\x04aH5V[a\n\x90V[`@Qa\x03d\x91\x90aH\xF6V[a\x03\xDAa\x03\xD56`\x04aI\x93V[a\r\xF9V[\0[a\x03\xDAa\x03\xEA6`\x04aI\xE6V[a\x0F>V[a\x03\xDAa\x03\xFD6`\x04aJ\nV[a\x0F\xF1V[a\x03\xDAa\x04\x106`\x04aJKV[a\x10\xA8V[a\x03\xDAa\x04#6`\x04aJdV[a\x11\xE7V[a\x03Za\x0466`\x04aI\xE6V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x90V[a\x03Za\x04o6`\x04aJ\nV[a\x11\xFBV[a\x03Z\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x81V[a\x03\xDAa\x04\xA96`\x04aJ\xCFV[a\x12)V[a\x03\xDAa\x04\xBC6`\x04aJ\nV[a\x13mV[a\x03Za\x04\xCF6`\x04aI\xE6V[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[a\x03\xDAa\x04\xEF6`\x04aKvV[a\x14\x1DV[a\x05\x1B\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x03dV[a\x05\x1Ba\x05A6`\x04aI\xE6V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x90V[a\x05ua\x05p6`\x04aI\xE6V[a\x15ZV[`@Q\x90\x15\x15\x81R` \x01a\x03dV[a\x03Z\x7F9\x11\x1B\xC4\xA4\xD6\x88\xE1\xF6\x85\x12=t\x97\xD4aSp\x15*\x8E\xE4\xA0Y>d{\xD0j\xD8\xBB\x0B\x81V[a\x05\x1B\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x03Zb\x13\xC6\x80\x81V[a\x03\xDAa\x15zV[a\x03Za\x05\xF36`\x04aNsV[a\x16AV[a\x05ua\x06\x066`\x04aN\xAFV[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`fTa\x03ZV[a\x03\xDAa\x0616`\x04aN\xE0V[a\x16qV[a\x03\xDAa\x06D6`\x04aJKV[a\x17\x0CV[a\x05\x1Ba\x06W6`\x04aI\xE6V[`\x9A` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05ua\x06\x806`\x04aI\xE6V[a\x17\x1DV[a\x03\xDAa\x17>V[a\x03Za\x06\x9B6`\x04aOoV[`\x98` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x03\xDAa\x06\xC66`\x04aPPV[a\x17RV[`eTa\x05\x1B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x05\x1BV[a\x07\x02a\x06\xFD6`\x04aP\xE0V[a\x19~V[`@Qa\x03d\x91\x90aQjV[a\x05\x1Bs\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x81V[a\x03\xDAa\x0786`\x04aQ}V[a\x1AXV[a\x03Za\x07K6`\x04aI\xE6V[`\x9F` R`\0\x90\x81R`@\x90 T\x81V[a\x05\x1B\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x05ua\x07\x926`\x04aJKV[`\x9E` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x05ua\x07\xB56`\x04aQ\xB2V[`\x9C` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T`\xFF\x16\x81V[a\x03Z`\x9DT\x81V[a\x03Za\x07\xEC6`\x04aI\xE6V[`\xA1` R`\0\x90\x81R`@\x90 T\x81V[a\x08na\x08\x0C6`\x04aI\xE6V[`@\x80Q``\x80\x82\x01\x83R`\0\x80\x83R` \x80\x84\x01\x82\x90R\x92\x84\x01\x81\x90R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16\x81R`\x99\x83R\x83\x90 \x83Q\x91\x82\x01\x84R\x80T\x85\x16\x82R`\x01\x01T\x93\x84\x16\x91\x81\x01\x91\x90\x91R`\x01`\xA0\x1B\x90\x92\x04c\xFF\xFF\xFF\xFF\x16\x90\x82\x01R\x90V[`@\x80Q\x82Q`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x82R` \x80\x85\x01Q\x90\x91\x16\x90\x82\x01R\x91\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x90\x82\x01R``\x01a\x03dV[a\x03Za\x08\xB26`\x04aQ\xDEV[a\x1B*V[a\x03Zb\x03K\xC0\x81V[a\x08\xD4a\x08\xCF6`\x04aI\xE6V[a\x1B\xE3V[`@Qa\x03d\x92\x91\x90aR_V[a\x03\xBAa\x08\xF06`\x04aI\xE6V[a\x1F\x9BV[a\x03\xDAa\t\x036`\x04aR\x84V[a$_V[a\x03\xDAa\t\x166`\x04aR\xDCV[a%|V[a\x03\xDAa\t)6`\x04aI\xE6V[a&\rV[a\x03Za&\x83V[a\x03\xDAa\tD6`\x04aJKV[a&\xC1V[`\x9DT`\0\x90\x81[\x83\x81\x10\x15a\t\xC6W`\0`\xA1`\0\x87\x87\x85\x81\x81\x10a\tqWa\tqaR\xF8V[\x90P` \x02\x01` \x81\x01\x90a\t\x86\x91\x90aI\xE6V[`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01`\0 T\x90P\x82\x81\x11\x15a\t\xB5W\x80\x92P[Pa\t\xBF\x81aS$V[\x90Pa\tQV[P\x93\x92PPPV[`@\x80Q\x7F\x14\xBD\xE6t\xC9\xF6K*\xD0\x0E\xAA\xEEJ\x8B\xED\x1F\xAB\xEF5\xC7P~<[\x9C\xFC\x946\x90\x9A-\xAD` \x80\x83\x01\x91\x90\x91R`\x01`\x01`\xA0\x1B\x03\x86\x81\x16\x83\x85\x01R\x88\x81\x16``\x84\x01R\x87\x16`\x80\x83\x01R`\xA0\x82\x01\x85\x90R`\xC0\x80\x83\x01\x85\x90R\x83Q\x80\x84\x03\x90\x91\x01\x81R`\xE0\x90\x92\x01\x90\x92R\x80Q\x91\x01 `\0\x90\x81a\nLa&\x83V[`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x91\x90\x91R`B\x81\x01\x83\x90R`b\x01`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x98\x97PPPPPPPPV[`fT``\x90`\x01\x90`\x02\x90\x81\x16\x14\x15a\n\xC5W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aS?V[`@Q\x80\x91\x03\x90\xFD[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xDFWa\n\xDFaL\x18V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0B\x08W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P3`\0\x90\x81R`\x9A` R`@\x81 T\x91\x92P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90[\x85\x81\x10\x15a\r\xEEW\x86\x86\x82\x81\x81\x10a\x0BCWa\x0BCaR\xF8V[\x90P` \x02\x81\x01\x90a\x0BU\x91\x90aSvV[a\x0Bc\x90` \x81\x01\x90aS\x96V[\x90P\x87\x87\x83\x81\x81\x10a\x0BwWa\x0BwaR\xF8V[\x90P` \x02\x81\x01\x90a\x0B\x89\x91\x90aSvV[a\x0B\x93\x90\x80aS\x96V[\x90P\x14a\x0C\x08W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FDelegationManager.queueWithdrawa`D\x82\x01R\x7Fl: input length mismatch\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[3\x87\x87\x83\x81\x81\x10a\x0C\x1BWa\x0C\x1BaR\xF8V[\x90P` \x02\x81\x01\x90a\x0C-\x91\x90aSvV[a\x0C>\x90``\x81\x01\x90`@\x01aI\xE6V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0C\xBAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FDelegationManager.queueWithdrawa`D\x82\x01R\x7Fl: withdrawer must be staker\0\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[a\r\xBF3\x83\x89\x89\x85\x81\x81\x10a\x0C\xD1Wa\x0C\xD1aR\xF8V[\x90P` \x02\x81\x01\x90a\x0C\xE3\x91\x90aSvV[a\x0C\xF4\x90``\x81\x01\x90`@\x01aI\xE6V[\x8A\x8A\x86\x81\x81\x10a\r\x06Wa\r\x06aR\xF8V[\x90P` \x02\x81\x01\x90a\r\x18\x91\x90aSvV[a\r\"\x90\x80aS\x96V[\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847`\0\x92\x01\x91\x90\x91RP\x8E\x92P\x8D\x91P\x88\x90P\x81\x81\x10a\rhWa\rhaR\xF8V[\x90P` \x02\x81\x01\x90a\rz\x91\x90aSvV[a\r\x88\x90` \x81\x01\x90aS\x96V[\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa(\x1D\x92PPPV[\x83\x82\x81Q\x81\x10a\r\xD1Wa\r\xD1aR\xF8V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a\r\xE6\x81aS$V[\x91PPa\x0B)V[P\x90\x95\x94PPPPPV[a\x0E\x023a\x15ZV[\x15a\x0E\x88W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R\x7FDelegationManager.registerAsOper`D\x82\x01R\x7Fator: caller is already actively`d\x82\x01Ri\x08\x19\x19[\x19Y\xD8]\x19Y`\xB2\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[a\x0E\x923\x84a-\xDDV[`@\x80Q\x80\x82\x01\x90\x91R``\x81R`\0` \x82\x01Ra\x0E\xB43\x80\x83`\0a/\xD0V[3`\x01`\x01`\xA0\x1B\x03\x16\x7F\x8E\x84\x85X:#\x10\xD4\x1F|\x82\xB9B}\x0B\xD4\x9B\xADt\xBB\x9C\xFF\x9D4\x02\xA2\x9D\x8F\x9B(\xA0\xE2\x85`@Qa\x0E\xED\x91\x90aS\xDFV[`@Q\x80\x91\x03\x90\xA23`\x01`\x01`\xA0\x1B\x03\x16\x7F\x02\xA9\x19\xED\x0E*\xCA\xD1\xDD\x90\xF1~\xF2\xFAJ\xE5F.\xE13\x91p\x03J\x851\xCC\xA4\xB6p\x80\x90\x84\x84`@Qa\x0F0\x92\x91\x90aT1V[`@Q\x80\x91\x03\x90\xA2PPPPV[`e`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xEA\xB6mz`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\x91W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xB5\x91\x90aT`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0F\xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aT}V[a\x0F\xEE\x81a2fV[PV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x10PWP3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14[a\x10lW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aT\xC7V[a\x10u\x83a\x15ZV[\x15a\x10\xA3W`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x90\x81R`\x9A` R`@\x90 T\x16a\x10\xA1\x81\x85\x85\x85a3]V[P[PPPV[`eT`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x14\x91\x90aU$V[a\x110W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aUAV[`fT\x81\x81\x16\x14a\x11\xA9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.pause: invalid attempt `D\x82\x01R\x7Fto unpause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[`f\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01[`@Q\x80\x91\x03\x90\xA2PV[a\x11\xEFa3\xD8V[a\x10\xA1\x84\x84\x84\x84a42V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x12 \x85\x82\x86\x86a\x1B*V[\x95\x94PPPPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x12IWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x12cWP0;\x15\x80\x15a\x12cWP`\0T`\xFF\x16`\x01\x14[a\x12\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01a\n\xBCV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x12\xE9W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x12\xF3\x88\x88a6XV[a\x12\xFBa7BV[`\x97Ua\x13\x07\x89a7\xD9V[a\x13\x10\x86a8+V[a\x13\x1C\x85\x85\x85\x85a42V[\x80\x15a\x13bW`\0\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x13\xCCWP3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14[a\x13\xE8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aT\xC7V[a\x13\xF1\x83a\x15ZV[\x15a\x10\xA3W`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x90\x81R`\x9A` R`@\x90 T\x16a\x10\xA1\x81\x85\x85\x85a9%V[`fT`\x02\x90`\x04\x90\x81\x16\x14\x15a\x14FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aS?V[`\x02`\xC9T\x14\x15a\x14\x99W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\n\xBCV[`\x02`\xC9U`\0[\x88\x81\x10\x15a\x15IWa\x159\x8A\x8A\x83\x81\x81\x10a\x14\xBEWa\x14\xBEaR\xF8V[\x90P` \x02\x81\x01\x90a\x14\xD0\x91\x90aU\x89V[\x89\x89\x84\x81\x81\x10a\x14\xE2Wa\x14\xE2aR\xF8V[\x90P` \x02\x81\x01\x90a\x14\xF4\x91\x90aS\x96V[\x89\x89\x86\x81\x81\x10a\x15\x06Wa\x15\x06aR\xF8V[\x90P` \x02\x015\x88\x88\x87\x81\x81\x10a\x15\x1FWa\x15\x1FaR\xF8V[\x90P` \x02\x01` \x81\x01\x90a\x154\x91\x90aU\x9FV[a9\xA0V[a\x15B\x81aS$V[\x90Pa\x14\xA1V[PP`\x01`\xC9UPPPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x9A` R`@\x90 T\x16\x15\x15\x90V[`eT`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15\xC2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\xE6\x91\x90aU$V[a\x16\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aUAV[`\0\x19`f\x81\x90U`@Q\x90\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2V[`\0\x81`@Q` \x01a\x16T\x91\x90aV0V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`fT`\x02\x90`\x04\x90\x81\x16\x14\x15a\x16\x9AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aS?V[`\x02`\xC9T\x14\x15a\x16\xEDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\n\xBCV[`\x02`\xC9Ua\x16\xFF\x86\x86\x86\x86\x86a9\xA0V[PP`\x01`\xC9UPPPPV[a\x17\x14a3\xD8V[a\x0F\xEE\x81a8+V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x81\x81R`\x9A` R`@\x90 T\x90\x91\x16\x14\x90V[a\x17Fa3\xD8V[a\x17P`\0a7\xD9V[V[B\x83` \x01Q\x10\x15a\x17\xD6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R\x7FDelegationManager.delegateToBySi`D\x82\x01R\x7Fgnature: staker signature expire`d\x82\x01R`\x19`\xFA\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[a\x17\xDF\x85a\x15ZV[\x15a\x18hW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`M`$\x82\x01R\x7FDelegationManager.delegateToBySi`D\x82\x01R\x7Fgnature: staker is already activ`d\x82\x01Rl\x19[\x1EH\x19\x19[\x19Y\xD8]\x19Y`\x9A\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[a\x18q\x84a\x17\x1DV[a\x18\xFDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`Q`$\x82\x01R\x7FDelegationManager.delegateToBySi`D\x82\x01R\x7Fgnature: operator is not registe`d\x82\x01Rp92\xB2\x104\xB7\x10\"\xB4\xB3\xB2\xB7&0\xBC\xB2\xB9`y\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`\0`\x9B`\0\x87`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01`\0 T\x90P`\0a\x199\x87\x83\x88\x88` \x01Qa\x1B*V[`\x01`\x01`\xA0\x1B\x03\x88\x16`\0\x90\x81R`\x9B` R`@\x90 `\x01\x84\x01\x90U\x85Q\x90\x91Pa\x19i\x90\x88\x90\x83\x90aA\x8AV[a\x19u\x87\x87\x86\x86a/\xD0V[PPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\x9BWa\x19\x9BaL\x18V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x19\xC4W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\t\xC6W`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x98` R`@\x81 \x85Q\x90\x91\x90\x86\x90\x84\x90\x81\x10a\x1A\x02Wa\x1A\x02aR\xF8V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01`\0 T\x82\x82\x81Q\x81\x10a\x1A=Wa\x1A=aR\xF8V[` \x90\x81\x02\x91\x90\x91\x01\x01Ra\x1AQ\x81aS$V[\x90Pa\x19\xCAV[a\x1Aa3a\x17\x1DV[a\x1A\xE3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FDelegationManager.updateOperator`D\x82\x01R\x7FMetadataURI: caller must be an o`d\x82\x01Rf82\xB90\xBA7\xB9`\xC9\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[3`\x01`\x01`\xA0\x1B\x03\x16\x7F\x02\xA9\x19\xED\x0E*\xCA\xD1\xDD\x90\xF1~\xF2\xFAJ\xE5F.\xE13\x91p\x03J\x851\xCC\xA4\xB6p\x80\x90\x83\x83`@Qa\x1B\x1E\x92\x91\x90aT1V[`@Q\x80\x91\x03\x90\xA2PPV[`@\x80Q\x7F9\x11\x1B\xC4\xA4\xD6\x88\xE1\xF6\x85\x12=t\x97\xD4aSp\x15*\x8E\xE4\xA0Y>d{\xD0j\xD8\xBB\x0B` \x80\x83\x01\x91\x90\x91R`\x01`\x01`\xA0\x1B\x03\x87\x81\x16\x83\x85\x01R\x85\x16``\x83\x01R`\x80\x82\x01\x86\x90R`\xA0\x80\x83\x01\x85\x90R\x83Q\x80\x84\x03\x90\x91\x01\x81R`\xC0\x90\x92\x01\x90\x92R\x80Q\x91\x01 `\0\x90\x81a\x1B\xA0a&\x83V[`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x91\x90\x91R`B\x81\x01\x83\x90R`b\x01`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x97\x96PPPPPPPV[`@Qc`\xF4\x06+`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R``\x91\x82\x91`\0\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90c`\xF4\x06+\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1CSW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Cw\x91\x90aVCV[`@Qc\x94\xF6I\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x81\x16`\x04\x83\x01R\x91\x92P`\0\x91\x82\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90c\x94\xF6I\xDD\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1C\xE7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1D\x0F\x91\x90\x81\x01\x90aV\xB7V[\x91P\x91P`\0\x83\x13a\x1D&W\x90\x95\x90\x94P\x92PPPV[``\x80\x83Q`\0\x14\x15a\x1D\xE0W`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x90` \x80\x83\x01\x90\x806\x837PP`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x94P\x90P` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90Ps\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x82`\0\x81Q\x81\x10a\x1D\x9BWa\x1D\x9BaR\xF8V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x84\x81`\0\x81Q\x81\x10a\x1D\xCFWa\x1D\xCFaR\xF8V[` \x02` \x01\x01\x81\x81RPPa\x1F\x8EV[\x83Qa\x1D\xED\x90`\x01aWqV[`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\x04Wa\x1E\x04aL\x18V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1E-W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x91P\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1EIWa\x1EIaL\x18V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1ErW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84Q\x81\x10\x15a\x1F\x0CW\x84\x81\x81Q\x81\x10a\x1E\x93Wa\x1E\x93aR\xF8V[` \x02` \x01\x01Q\x83\x82\x81Q\x81\x10a\x1E\xADWa\x1E\xADaR\xF8V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x83\x81\x81Q\x81\x10a\x1E\xDFWa\x1E\xDFaR\xF8V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x1E\xF9Wa\x1E\xF9aR\xF8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x1ExV[Ps\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x82`\x01\x84Qa\x1F1\x91\x90aW\x89V[\x81Q\x81\x10a\x1FAWa\x1FAaR\xF8V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x84\x81`\x01\x84Qa\x1Fq\x91\x90aW\x89V[\x81Q\x81\x10a\x1F\x81Wa\x1F\x81aR\xF8V[` \x02` \x01\x01\x81\x81RPP[\x90\x97\x90\x96P\x94PPPPPV[`fT``\x90`\x01\x90`\x02\x90\x81\x16\x14\x15a\x1F\xC7W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aS?V[a\x1F\xD0\x83a\x15ZV[a PW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FDelegationManager.undelegate: st\x90\x82\x01R\x7Faker must be delegated to undele`d\x82\x01Rcgate`\xE0\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[a Y\x83a\x17\x1DV[\x15a \xCCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FDelegationManager.undelegate: op`D\x82\x01R\x7Ferators cannot be undelegated\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x83\x16a!HW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FDelegationManager.undelegate: ca`D\x82\x01R\x7Fnnot undelegate zero address\0\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x81\x81R`\x9A` R`@\x90 T\x90\x91\x16\x903\x14\x80a!{WP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14[\x80a!\xA2WP`\x01`\x01`\xA0\x1B\x03\x81\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x163\x14[a\"\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FDelegationManager.undelegate: ca`D\x82\x01R\x7Fller cannot undelegate staker\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[`\0\x80a\" \x86a\x1B\xE3V[\x90\x92P\x90P3`\x01`\x01`\xA0\x1B\x03\x87\x16\x14a\"vW\x82`\x01`\x01`\xA0\x1B\x03\x16\x86`\x01`\x01`\xA0\x1B\x03\x16\x7F\xF0\xED\xDF\x07\xE6\xEA\x14\xF3\x88\xB4~\x1E\x94\xA0\xF4d\xEC\xBD\x9E\xEDAq\x13\x0E\x0F\xC0\xE9\x9F\xB4\x03\n\x8A`@Q`@Q\x80\x91\x03\x90\xA3[\x82`\x01`\x01`\xA0\x1B\x03\x16\x86`\x01`\x01`\xA0\x1B\x03\x16\x7F\xFE\xE3\tf\xA2V\xB7\x1E\x14\xBC\x0E\xBF\xC9C\x15\xE2\x8E\xF4\xA9zq1\xA9\xE2\xB7\xA3\x10\xA7:\xF4Fv`@Q`@Q\x80\x91\x03\x90\xA3`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9A` R`@\x90 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x81Qa\"\xF8W`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x94Pa$VV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a#\x11Wa#\x11aL\x18V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a#:W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x94P`\0[\x82Q\x81\x10\x15a$TW`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91` \x80\x83\x01\x90\x806\x837PP`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x93P`\0\x92\x91P` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P\x84\x83\x81Q\x81\x10a#\xA0Wa#\xA0aR\xF8V[` \x02` \x01\x01Q\x82`\0\x81Q\x81\x10a#\xBBWa#\xBBaR\xF8V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x83\x83\x81Q\x81\x10a#\xEDWa#\xEDaR\xF8V[` \x02` \x01\x01Q\x81`\0\x81Q\x81\x10a$\x08Wa$\x08aR\xF8V[` \x02` \x01\x01\x81\x81RPPa$!\x89\x87\x8B\x85\x85a(\x1DV[\x88\x84\x81Q\x81\x10a$3Wa$3aR\xF8V[` \x02` \x01\x01\x81\x81RPPPP\x80\x80a$L\x90aS$V[\x91PPa#@V[P[PPPP\x91\x90PV[a$h3a\x15ZV[\x15a$\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R\x7FDelegationManager.delegateTo: st`D\x82\x01R\x7Faker is already actively delegat`d\x82\x01Ra\x19Y`\xF2\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[a$\xEF\x83a\x17\x1DV[a%pW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R\x7FDelegationManager.delegateTo: op`D\x82\x01R\x7Ferator is not registered in Eige`d\x82\x01Re7&0\xBC\xB2\xB9`\xD1\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[a\x10\xA33\x84\x84\x84a/\xD0V[a%\x853a\x17\x1DV[a&\x03W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R\x7FDelegationManager.modifyOperator`D\x82\x01R\x7FDetails: caller must be an opera`d\x82\x01Rb:7\xB9`\xE9\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[a\x0F\xEE3\x82a-\xDDV[a&\x15a3\xD8V[`\x01`\x01`\xA0\x1B\x03\x81\x16a&zW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\n\xBCV[a\x0F\xEE\x81a7\xD9V[`\0\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0F\x14\x15a&\xB4WP`\x97T\x90V[a&\xBCa7BV[\x90P\x90V[`e`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xEA\xB6mz`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a'\x14W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'8\x91\x90aT`V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a'hW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aT}V[`fT\x19\x81\x19`fT\x19\x16\x14a'\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.unpause: invalid attemp`D\x82\x01R\x7Ft to pause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[`f\x81\x90U`@Q\x81\x81R3\x90\x7F5\x82\xD1\x82\x8E&\xBFV\xBD\x80\x15\x02\xBC\x02\x1A\xC0\xBC\x8A\xFBW\xC8&\xE4\x98kEY<\x8F\xAD8\x9C\x90` \x01a\x11\xDCV[`\0`\x01`\x01`\xA0\x1B\x03\x86\x16a(\xB4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`P`$\x82\x01R\x7FDelegationManager._removeSharesA`D\x82\x01R\x7FndQueueWithdrawal: staker cannot`d\x82\x01Ro be zero address`\x80\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[\x82Qa)>W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`M`$\x82\x01R\x7FDelegationManager._removeSharesA`D\x82\x01R\x7FndQueueWithdrawal: strategies ca`d\x82\x01Rlnnot be empty`\x98\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`\0[\x83Q\x81\x10\x15a,\xEBW`\x01`\x01`\xA0\x1B\x03\x86\x16\x15a)\x97Wa)\x97\x86\x88\x86\x84\x81Q\x81\x10a)pWa)paR\xF8V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a)\x8AWa)\x8AaR\xF8V[` \x02` \x01\x01Qa3]V[s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0`\x01`\x01`\xA0\x1B\x03\x16\x84\x82\x81Q\x81\x10a)\xC7Wa)\xC7aR\xF8V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a*\x90W\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xBE\xFF\xBB\x89\x88\x85\x84\x81Q\x81\x10a* Wa* aR\xF8V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a*Y\x92\x91\x90`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x82R` \x82\x01R`@\x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a*sW`\0\x80\xFD[PZ\xF1\x15\x80\x15a*\x87W=`\0\x80>=`\0\xFD[PPPPa,\xE3V[\x84`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14\x80a+bWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x9BM\xA0=\x85\x83\x81Q\x81\x10a*\xECWa*\xECaR\xF8V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a+\x1F\x91\x90`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a+=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a+`\x91\x90aU$V[\x15[a,.W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x84`$\x82\x01\x81\x90R\x7FDelegationManager._removeSharesA`D\x83\x01R\x7FndQueueWithdrawal: withdrawer mu`d\x83\x01R\x7Fst be same address as staker if \x90\x82\x01R\x7FthirdPartyTransfersForbidden are`\xA4\x82\x01Rc\x08\x1C\xD9]`\xE2\x1B`\xC4\x82\x01R`\xE4\x01a\n\xBCV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x8C\x80\xD4\xE5\x88\x86\x84\x81Q\x81\x10a,pWa,paR\xF8V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a,\x8AWa,\x8AaR\xF8V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a,\xB0\x93\x92\x91\x90aW\xA0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xCAW`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xDEW=`\0\x80>=`\0\xFD[PPPP[`\x01\x01a)AV[P`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9F` R`@\x81 \x80T\x91\x82\x91\x90a-\x13\x83aS$V[\x91\x90PUP`\0`@Q\x80`\xE0\x01`@R\x80\x89`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x88`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x87`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x81R` \x01Cc\xFF\xFF\xFF\xFF\x16\x81R` \x01\x86\x81R` \x01\x85\x81RP\x90P`\0a-{\x82a\x16AV[`\0\x81\x81R`\x9E` R`@\x90\x81\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UQ\x90\x91P\x7F\x90\t\xAB\x15>\x80\x14\xFB\xFB\x02\xF2!\x7F\\\xDEz\xA7\xF9\xADsJ\xE8\\\xA3\xEE?L\xA2\xFD\xD4\x99\xF9\x90a-\xC9\x90\x83\x90\x85\x90aW\xC4V[`@Q\x80\x91\x03\x90\xA1\x98\x97PPPPPPPPV[b\x13\xC6\x80a-\xF1``\x83\x01`@\x84\x01aW\xDDV[c\xFF\xFF\xFF\xFF\x16\x11\x15a.\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R\x7FDelegationManager._setOperatorDe`D\x82\x01R\x7Ftails: stakerOptOutWindowBlocks `d\x82\x01R\x7Fcannot be > MAX_STAKER_OPT_OUT_W`\x84\x82\x01RkINDOW_BLOCKS`\xA0\x1B`\xA4\x82\x01R`\xC4\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` R`@\x90\x81\x90 `\x01\x01T`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x90a.\xE2\x90``\x84\x01\x90\x84\x01aW\xDDV[c\xFF\xFF\xFF\xFF\x16\x10\x15a/xW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`S`$\x82\x01R\x7FDelegationManager._setOperatorDe`D\x82\x01R\x7Ftails: stakerOptOutWindowBlocks `d\x82\x01Rr\x18\xD8[\x9B\x9B\xDD\x08\x18\x99H\x19\x19X\xDC\x99X\\\xD9Y`j\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` R`@\x90 \x81\x90a/\x9C\x82\x82aX\x1AV[PP`@Q3\x90\x7F\xFE\xBE\\\xD2K,\xBC{\x06[\x9D\x0F\xDE\xB9\x04F\x1EJ\xFC\xFFW\xDDW\xAC\xDA\x1Ex2\x03\x1B\xA7\xAC\x90a\x1B\x1E\x90\x84\x90aS\xDFV[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a/\xF9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aS?V[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x80\x15\x80\x15\x90a0/WP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14\x15[\x80\x15a0DWP3`\x01`\x01`\xA0\x1B\x03\x86\x16\x14\x15[\x15a1\xB1WB\x84` \x01Q\x10\x15a0\xC3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FDelegationManager._delegate: app`D\x82\x01R\x7Frover signature expired\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\x9C` \x90\x81R`@\x80\x83 \x86\x84R\x90\x91R\x90 T`\xFF\x16\x15a1]W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FDelegationManager._delegate: app`D\x82\x01R\x7FroverSalt already spent\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\x9C` \x90\x81R`@\x80\x83 \x86\x84R\x82R\x82 \x80T`\xFF\x19\x16`\x01\x17\x90U\x85\x01Qa1\x9E\x90\x88\x90\x88\x90\x85\x90\x88\x90a\t\xCEV[\x90Pa1\xAF\x82\x82\x87`\0\x01QaA\x8AV[P[`\x01`\x01`\xA0\x1B\x03\x86\x81\x16`\0\x81\x81R`\x9A` R`@\x80\x82 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x94\x8A\x16\x94\x85\x17\x90UQ\x7F\xC3\xEE\x9F._\xDA\x98\xE8\x06j\x1Ft[-\xF9(_Ao\xE9\x8C\xF2U\x9C\xD2\x14\x84\xB3\xD8t3\x04\x91\x90\xA3`\0\x80a2\x10\x88a\x1B\xE3V[\x91P\x91P`\0[\x82Q\x81\x10\x15a\x13bWa2^\x88\x8A\x85\x84\x81Q\x81\x10a27Wa27aR\xF8V[` \x02` \x01\x01Q\x85\x85\x81Q\x81\x10a2QWa2QaR\xF8V[` \x02` \x01\x01Qa9%V[`\x01\x01a2\x17V[`\x01`\x01`\xA0\x1B\x03\x81\x16a2\xF4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FPausable._setPauserRegistry: new`D\x82\x01R\x7FPauserRegistry cannot be the zer`d\x82\x01Rho address`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`eT`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7Fn\x9F\xCDS\x98\x96\xFC\xA6\x0E\x8B\x0F\x01\xDDX\x023\xE4\x8Ak\x0F}\xF0\x13\xB8\x9B\xA7\xF5e\x86\x9A\xCD\xB6\x91\x01`@Q\x80\x91\x03\x90\xA1`e\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\x98` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 \x80T\x83\x92\x90a3\x94\x90\x84\x90aW\x89V[\x92PP\x81\x90UP\x83`\x01`\x01`\xA0\x1B\x03\x16\x7Fi\t`\x007\xB7]{G3\xAE\xDD\x81TB\xB5\xEC\x01\x8A\x82wQ\xC82\xAA\xFFd\xEB\xA5\xD6\xD2\xDD\x84\x84\x84`@Qa\x0F0\x93\x92\x91\x90aW\xA0V[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17PW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\n\xBCV[\x82\x81\x14a4\xBAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R\x7FDelegationManager._setStrategyWi`D\x82\x01R\x7FthdrawalDelayBlocks: input lengt`d\x82\x01Ri\r\x04\r\xAD.m\xAC.\x8Cm`\xB3\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[\x82`\0[\x81\x81\x10\x15a6PW`\0\x86\x86\x83\x81\x81\x10a4\xDAWa4\xDAaR\xF8V[\x90P` \x02\x01` \x81\x01\x90a4\xEF\x91\x90aI\xE6V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\xA1` R`@\x81 T\x91\x92P\x86\x86\x85\x81\x81\x10a5\x1DWa5\x1DaR\xF8V[\x90P` \x02\x015\x90Pb\x03K\xC0\x81\x11\x15a5\xE1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`s`$\x82\x01R\x7FDelegationManager._setStrategyWi`D\x82\x01R\x7FthdrawalDelayBlocks: _withdrawal`d\x82\x01R\x7FDelayBlocks cannot be > MAX_WITH`\x84\x82\x01RrDRAWAL_DELAY_BLOCKS`h\x1B`\xA4\x82\x01R`\xC4\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x81\x81R`\xA1` \x90\x81R`@\x91\x82\x90 \x84\x90U\x81Q\x92\x83R\x82\x01\x84\x90R\x81\x01\x82\x90R\x7F\x0E~\xFAs\x8E\x8B\x0C\xE67j\x0C\x1A\xF4qeU@\xD2\xE9\xA8\x16G\xD7\xB0\x9E\xD8#\x01\x84&Wm\x90``\x01`@Q\x80\x91\x03\x90\xA1PPP\x80a6I\x90aS$V[\x90Pa4\xBEV[PPPPPPV[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a6yWP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a6\xFBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FPausable._initializePauser: _ini`D\x82\x01R\x7FtializePauser() can only be call`d\x82\x01Rfed once`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`f\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2a7>\x82a2fV[PPV[`@\x80Q\x80\x82\x01\x82R`\n\x81Ri\"\xB4\xB3\xB2\xB7&0\xBC\xB2\xB9`\xB1\x1B` \x91\x82\x01R\x81Q\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x81\x83\x01R\x7Fq\xB6%\xCF\xADD\xBA\xC6;\x13\xDB\xA0\x7F.\x1D`\x84\xEE\x04\xB6\xF8u!\x01\xEC\xE6\x12mXN\xE6\xEA\x81\x84\x01RF``\x82\x01R0`\x80\x80\x83\x01\x91\x90\x91R\x83Q\x80\x83\x03\x90\x91\x01\x81R`\xA0\x90\x91\x01\x90\x92R\x81Q\x91\x01 \x90V[`3\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[b\x03K\xC0\x81\x11\x15a8\xE4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`q`$\x82\x01R\x7FDelegationManager._setMinWithdra`D\x82\x01R\x7FwalDelayBlocks: _minWithdrawalDe`d\x82\x01R\x7FlayBlocks cannot be > MAX_WITHDR`\x84\x82\x01RpAWAL_DELAY_BLOCKS`x\x1B`\xA4\x82\x01R`\xC4\x01a\n\xBCV[`\x9DT`@\x80Q\x91\x82R` \x82\x01\x83\x90R\x7F\xAF\xA0\x03\xCDv\xF8\x7F\xF9\xD6+5\xBE\xEA\x88\x99 \xF3<\x0CB\xB8\xD4[t\x95Ma\xD5\x0FKki\x91\x01`@Q\x80\x91\x03\x90\xA1`\x9DUV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\x98` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 \x80T\x83\x92\x90a9\\\x90\x84\x90aWqV[\x92PP\x81\x90UP\x83`\x01`\x01`\xA0\x1B\x03\x16\x7F\x1E\xC0B\xC9e\xE2\xED\xD7\x10{Q\x18\x8E\xE0\xF3\x83\xE2.v\x17\x90A\xAB:\x9D\x18\xFF\x15\x14\x05\x16l\x84\x84\x84`@Qa\x0F0\x93\x92\x91\x90aW\xA0V[`\0a9\xAEa\x05\xF3\x87aX}V[`\0\x81\x81R`\x9E` R`@\x90 T\x90\x91P`\xFF\x16a:/W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` aY\xB5\x839\x81Q\x91R`D\x82\x01R\x7FdWithdrawal: action is not in qu`d\x82\x01Rbeue`\xE8\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`\x9DTC\x90a:D`\xA0\x89\x01`\x80\x8A\x01aW\xDDV[c\xFF\xFF\xFF\xFF\x16a:T\x91\x90aWqV[\x11\x15a:\xDCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`_`$\x82\x01R`\0\x80Q` aY\xB5\x839\x81Q\x91R`D\x82\x01R\x7FdWithdrawal: minWithdrawalDelayB`d\x82\x01R\x7Flocks period has not yet passed\0`\x84\x82\x01R`\xA4\x01a\n\xBCV[a:\xEC``\x87\x01`@\x88\x01aI\xE6V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a;yW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`P`$\x82\x01R`\0\x80Q` aY\xB5\x839\x81Q\x91R`D\x82\x01R\x7FdWithdrawal: only withdrawer can`d\x82\x01Ro\x101\xB7\xB6\xB862\xBA2\x900\xB1\xBA4\xB7\xB7`\x81\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[\x81\x15a;\xFBWa;\x8C`\xA0\x87\x01\x87aS\x96V[\x85\x14\x90Pa;\xFBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` aY\xB5\x839\x81Q\x91R`D\x82\x01R\x7FdWithdrawal: input length mismat`d\x82\x01Ra\x0Cm`\xF3\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`\0\x81\x81R`\x9E` R`@\x90 \x80T`\xFF\x19\x16\x90U\x81\x15a=`W`\0[a<'`\xA0\x88\x01\x88aS\x96V[\x90P\x81\x10\x15a=ZWC`\xA1`\0a\x02\x91\x90aWqV[\x11\x15a> W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aX\x8FV[s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a>B`\xA0\x8A\x01\x8AaS\x96V[\x83\x81\x81\x10a>RWa>RaR\xF8V[\x90P` \x02\x01` \x81\x01\x90a>g\x91\x90aI\xE6V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a?\xB7W`\0a>\x85` \x8A\x01\x8AaI\xE6V[\x90P`\0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16c\x0E\x81\x07<\x83a>\xC6`\xC0\x8E\x01\x8EaS\x96V[\x87\x81\x81\x10a>\xD6Wa>\xD6aR\xF8V[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x87\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x90\x94\x16`\x04\x85\x01R` \x02\x91\x90\x91\x015`$\x83\x01RP`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a?*W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a?N\x91\x90aVCV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x90\x81R`\x9A` R`@\x90 T\x91\x92P\x16\x80\x15a?\xAFWa?\xAF\x81\x84a?\x84`\xA0\x8F\x01\x8FaS\x96V[\x88\x81\x81\x10a?\x94Wa?\x94aR\xF8V[\x90P` \x02\x01` \x81\x01\x90a?\xA9\x91\x90aI\xE6V[\x85a9%V[PPPaADV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xC4b>\xA13\x89\x89\x85\x81\x81\x10a?\xF9Wa?\xF9aR\xF8V[\x90P` \x02\x01` \x81\x01\x90a@\x0E\x91\x90aI\xE6V[a@\x1B`\xA0\x8D\x01\x8DaS\x96V[\x86\x81\x81\x10a@+Wa@+aR\xF8V[\x90P` \x02\x01` \x81\x01\x90a@@\x91\x90aI\xE6V[a@M`\xC0\x8E\x01\x8EaS\x96V[\x87\x81\x81\x10a@]Wa@]aR\xF8V[`@Q`\xE0\x88\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R`\x01`\x01`\xA0\x1B\x03\x96\x87\x16`\x04\x82\x01R\x94\x86\x16`$\x86\x01R\x92\x90\x94\x16`D\x84\x01R` \x90\x91\x02\x015`d\x82\x01R`\x84\x01\x90P`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a@\xBDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a@\xD1W=`\0\x80>=`\0\xFD[PPPP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15aADWaAD\x823a@\xF6`\xA0\x8C\x01\x8CaS\x96V[\x85\x81\x81\x10aA\x06WaA\x06aR\xF8V[\x90P` \x02\x01` \x81\x01\x90aA\x1B\x91\x90aI\xE6V[aA(`\xC0\x8D\x01\x8DaS\x96V[\x86\x81\x81\x10aA8WaA8aR\xF8V[\x90P` \x02\x015a9%V[`\x01\x01a={V[PP[`@Q\x81\x81R\x7F\xC9p\x98\xC2\xF6X\x80\x0BM\xF2\x90\x01R\x7Fs$\xBC\xDF\xFC\xF6\xE8u\x1Ai\x9A\xB9 \xA1\xEC\xED[\x1D\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16;\x15aB\xA4W`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aA\xCA\x90\x86\x90\x86\x90`\x04\x01aY\x17V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aA\xE7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB\x0B\x91\x90aYtV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x10\xA3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`S`$\x82\x01R\x7FEIP1271SignatureUtils.checkSigna`D\x82\x01R\x7Fture_EIP1271: ERC1271 signature `d\x82\x01Rr\x1D\x99\\\x9AY\x9AX\xD8]\x1A[\xDB\x88\x19\x98Z[\x19Y`j\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[\x82`\x01`\x01`\xA0\x1B\x03\x16aB\xB8\x83\x83aD\x84V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x10\xA3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FEIP1271SignatureUtils.checkSigna`D\x82\x01R\x7Fture_EIP1271: signature not from`d\x82\x01Rf\x109\xB4\xB3\xB72\xB9`\xC9\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x83\x16s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x14\x15aC\xEFW`@Qb8{\x13`\xE8\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c8{\x13\0\x90aC\xB8\x90\x88\x90\x88\x90\x87\x90`\x04\x01aW\xA0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15aC\xD2W`\0\x80\xFD[PZ\xF1\x15\x80\x15aC\xE6W=`\0\x80>=`\0\xFD[PPPPaD}V[`@Qc\xC6\x08\xC7\xF3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R\x84\x81\x16`$\x83\x01R`D\x82\x01\x84\x90R\x82\x81\x16`d\x83\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xC6\x08\xC7\xF3\x90`\x84\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15aDiW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13bW=`\0\x80>=`\0\xFD[PPPPPV[`\0\x80`\0aD\x93\x85\x85aD\xA0V[\x91P\x91Pa\t\xC6\x81aE\x10V[`\0\x80\x82Q`A\x14\x15aD\xD7W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaD\xCB\x87\x82\x85\x85aF\xCBV[\x94P\x94PPPPaE\tV[\x82Q`@\x14\x15aE\x01W` \x83\x01Q`@\x84\x01QaD\xF6\x86\x83\x83aG\xB8V[\x93P\x93PPPaE\tV[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aE$WaE$aY\x9EV[\x14\x15aE-WPV[`\x01\x81`\x04\x81\x11\x15aEAWaEAaY\x9EV[\x14\x15aE\x8FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FECDSA: invalid signature\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\n\xBCV[`\x02\x81`\x04\x81\x11\x15aE\xA3WaE\xA3aY\x9EV[\x14\x15aE\xF1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\n\xBCV[`\x03\x81`\x04\x81\x11\x15aF\x05WaF\x05aY\x9EV[\x14\x15aF^W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 's' val`D\x82\x01Raue`\xF0\x1B`d\x82\x01R`\x84\x01a\n\xBCV[`\x04\x81`\x04\x81\x11\x15aFrWaFraY\x9EV[\x14\x15a\x0F\xEEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 'v' val`D\x82\x01Raue`\xF0\x1B`d\x82\x01R`\x84\x01a\n\xBCV[`\0\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x83\x11\x15aG\x02WP`\0\x90P`\x03aG\xAFV[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG\x1AWP\x84`\xFF\x16`\x1C\x14\x15[\x15aG+WP`\0\x90P`\x04aG\xAFV[`@\x80Q`\0\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15aG\x7FW=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xA8W`\0`\x01\x92P\x92PPaG\xAFV[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aG\xD5`\xFF\x86\x90\x1C`\x1BaWqV[\x90PaG\xE3\x87\x82\x88\x85aF\xCBV[\x93P\x93PPP\x93P\x93\x91PPV[`\0\x80\x83`\x1F\x84\x01\x12aH\x03W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH\x1AW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aE\tW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aHHW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aH^W`\0\x80\xFD[aHj\x85\x82\x86\x01aG\xF1V[\x90\x96\x90\x95P\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\x96\x81aHvV[\x91\x90PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aH\xB3W`\0\x80\xFD[\x855aH\xBE\x81aHvV[\x94P` \x86\x015aH\xCE\x81aHvV[\x93P`@\x86\x015aH\xDE\x81aHvV[\x94\x97\x93\x96P\x93\x94``\x81\x015\x94P`\x80\x015\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15aI.W\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aI\x12V[P\x90\x96\x95PPPPPPV[`\0``\x82\x84\x03\x12\x15aILW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aIdW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aI{W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aE\tW`\0\x80\xFD[`\0\x80`\0`\x80\x84\x86\x03\x12\x15aI\xA8W`\0\x80\xFD[aI\xB2\x85\x85aI:V[\x92P``\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aI\xCDW`\0\x80\xFD[aI\xD9\x86\x82\x87\x01aIRV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aI\xF8W`\0\x80\xFD[\x815aJ\x03\x81aHvV[\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15aJ\x1FW`\0\x80\xFD[\x835aJ*\x81aHvV[\x92P` \x84\x015aJ:\x81aHvV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15aJ]W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aJzW`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aJ\x91W`\0\x80\xFD[aJ\x9D\x88\x83\x89\x01aG\xF1V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aJ\xB6W`\0\x80\xFD[PaJ\xC3\x87\x82\x88\x01aG\xF1V[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0\x80`\0\x80`\0\x80`\xC0\x89\x8B\x03\x12\x15aJ\xEBW`\0\x80\xFD[\x885aJ\xF6\x81aHvV[\x97P` \x89\x015aK\x06\x81aHvV[\x96P`@\x89\x015\x95P``\x89\x015\x94P`\x80\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK0W`\0\x80\xFD[aK<\x8C\x83\x8D\x01aG\xF1V[\x90\x96P\x94P`\xA0\x8B\x015\x91P\x80\x82\x11\x15aKUW`\0\x80\xFD[PaKb\x8B\x82\x8C\x01aG\xF1V[\x99\x9C\x98\x9BP\x96\x99P\x94\x97\x93\x96\x92\x95\x94PPPV[`\0\x80`\0\x80`\0\x80`\0\x80`\x80\x89\x8B\x03\x12\x15aK\x92W`\0\x80\xFD[\x885`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xA9W`\0\x80\xFD[aK\xB5\x8C\x83\x8D\x01aG\xF1V[\x90\x9AP\x98P` \x8B\x015\x91P\x80\x82\x11\x15aK\xCEW`\0\x80\xFD[aK\xDA\x8C\x83\x8D\x01aG\xF1V[\x90\x98P\x96P`@\x8B\x015\x91P\x80\x82\x11\x15aK\xF3W`\0\x80\xFD[aK\xFF\x8C\x83\x8D\x01aG\xF1V[\x90\x96P\x94P``\x8B\x015\x91P\x80\x82\x11\x15aKUW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aLPWaLPaL\x18V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aLPWaLPaL\x18V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aL\xA0WaL\xA0aL\x18V[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\x96\x81aL\xA8V[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aL\xDEWaL\xDEaL\x18V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12aL\xF9W`\0\x80\xFD[\x815` aM\x0EaM\t\x83aL\xC5V[aLxV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aM-W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMQW\x805aMD\x81aHvV[\x83R\x91\x83\x01\x91\x83\x01aM1V[P\x96\x95PPPPPPV[`\0\x82`\x1F\x83\x01\x12aMmW`\0\x80\xFD[\x815` aM}aM\t\x83aL\xC5V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aM\x9CW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMQW\x805\x83R\x91\x83\x01\x91\x83\x01aM\xA0V[`\0`\xE0\x82\x84\x03\x12\x15aM\xC9W`\0\x80\xFD[aM\xD1aL.V[\x90PaM\xDC\x82aH\x8BV[\x81RaM\xEA` \x83\x01aH\x8BV[` \x82\x01RaM\xFB`@\x83\x01aH\x8BV[`@\x82\x01R``\x82\x015``\x82\x01RaN\x16`\x80\x83\x01aL\xBAV[`\x80\x82\x01R`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aN5W`\0\x80\xFD[aNA\x85\x83\x86\x01aL\xE8V[`\xA0\x84\x01R`\xC0\x84\x015\x91P\x80\x82\x11\x15aNZW`\0\x80\xFD[PaNg\x84\x82\x85\x01aM\\V[`\xC0\x83\x01RP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aN\x85W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\x9BW`\0\x80\xFD[aN\xA7\x84\x82\x85\x01aM\xB7V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aN\xC1W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14aJ\x03W`\0\x80\xFD[\x80\x15\x15\x81\x14a\x0F\xEEW`\0\x80\xFD[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15aN\xF8W`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aO\x0FW`\0\x80\xFD[\x90\x87\x01\x90`\xE0\x82\x8A\x03\x12\x15aO#W`\0\x80\xFD[\x90\x95P` \x87\x015\x90\x80\x82\x11\x15aO9W`\0\x80\xFD[PaOF\x88\x82\x89\x01aG\xF1V[\x90\x95P\x93PP`@\x86\x015\x91P``\x86\x015aOa\x81aN\xD2V[\x80\x91PP\x92\x95P\x92\x95\x90\x93PV[`\0\x80`@\x83\x85\x03\x12\x15aO\x82W`\0\x80\xFD[\x825aO\x8D\x81aHvV[\x91P` \x83\x015aO\x9D\x81aHvV[\x80\x91PP\x92P\x92\x90PV[`\0`@\x82\x84\x03\x12\x15aO\xBAW`\0\x80\xFD[aO\xC2aLVV[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aO\xDBW`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12aO\xEFW`\0\x80\xFD[\x815` \x82\x82\x11\x15aP\x03WaP\x03aL\x18V[aP\x15`\x1F\x83\x01`\x1F\x19\x16\x82\x01aLxV[\x92P\x81\x83R\x86\x81\x83\x86\x01\x01\x11\x15aP+W`\0\x80\xFD[\x81\x81\x85\x01\x82\x85\x017`\0\x81\x83\x85\x01\x01R\x82\x85R\x80\x86\x015\x81\x86\x01RPPPP\x92\x91PPV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aPhW`\0\x80\xFD[\x855aPs\x81aHvV[\x94P` \x86\x015aP\x83\x81aHvV[\x93P`@\x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aP\x9FW`\0\x80\xFD[aP\xAB\x89\x83\x8A\x01aO\xA8V[\x94P``\x88\x015\x91P\x80\x82\x11\x15aP\xC1W`\0\x80\xFD[PaP\xCE\x88\x82\x89\x01aO\xA8V[\x95\x98\x94\x97P\x92\x95`\x80\x015\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15aP\xF3W`\0\x80\xFD[\x825aP\xFE\x81aHvV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\x19W`\0\x80\xFD[aQ%\x85\x82\x86\x01aL\xE8V[\x91PP\x92P\x92\x90PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQ_W\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aQCV[P\x94\x95\x94PPPPPV[` \x81R`\0aJ\x03` \x83\x01\x84aQ/V[`\0\x80` \x83\x85\x03\x12\x15aQ\x90W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xA6W`\0\x80\xFD[aHj\x85\x82\x86\x01aIRV[`\0\x80`@\x83\x85\x03\x12\x15aQ\xC5W`\0\x80\xFD[\x825aQ\xD0\x81aHvV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15aQ\xF4W`\0\x80\xFD[\x845aQ\xFF\x81aHvV[\x93P` \x85\x015\x92P`@\x85\x015aR\x16\x81aHvV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQ_W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aR:V[`@\x81R`\0aRr`@\x83\x01\x85aR&V[\x82\x81\x03` \x84\x01Ra\x12 \x81\x85aQ/V[`\0\x80`\0``\x84\x86\x03\x12\x15aR\x99W`\0\x80\xFD[\x835aR\xA4\x81aHvV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xBFW`\0\x80\xFD[aR\xCB\x86\x82\x87\x01aO\xA8V[\x92PP`@\x84\x015\x90P\x92P\x92P\x92V[`\0``\x82\x84\x03\x12\x15aR\xEEW`\0\x80\xFD[aJ\x03\x83\x83aI:V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15aS8WaS8aS\x0EV[P`\x01\x01\x90V[` \x80\x82R`\x19\x90\x82\x01R\x7FPausable: index is paused\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`\0\x825`^\x19\x836\x03\x01\x81\x12aS\x8CW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aS\xADW`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aS\xC7W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aE\tW`\0\x80\xFD[``\x81\x01\x825aS\xEE\x81aHvV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x83R` \x84\x015\x90aT\n\x82aHvV[\x16` \x83\x01R`@\x83\x015aT\x1E\x81aL\xA8V[c\xFF\xFF\xFF\xFF\x81\x16`@\x84\x01RP\x92\x91PPV[` \x81R\x81` \x82\x01R\x81\x83`@\x83\x017`\0\x81\x83\x01`@\x90\x81\x01\x91\x90\x91R`\x1F\x90\x92\x01`\x1F\x19\x16\x01\x01\x91\x90PV[`\0` \x82\x84\x03\x12\x15aTrW`\0\x80\xFD[\x81QaJ\x03\x81aHvV[` \x80\x82R`*\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Ri9\x90:\xB780\xBA\xB9\xB2\xB9`\xB1\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`7\x90\x82\x01R\x7FDelegationManager: onlyStrategyM`@\x82\x01R\x7FanagerOrEigenPodManager\0\0\0\0\0\0\0\0\0``\x82\x01R`\x80\x01\x90V[`\0` \x82\x84\x03\x12\x15aU6W`\0\x80\xFD[\x81QaJ\x03\x81aN\xD2V[` \x80\x82R`(\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Rg9\x9080\xBA\xB9\xB2\xB9`\xC1\x1B``\x82\x01R`\x80\x01\x90V[`\0\x825`\xDE\x19\x836\x03\x01\x81\x12aS\x8CW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aU\xB1W`\0\x80\xFD[\x815aJ\x03\x81aN\xD2V[`\0`\x01\x80`\xA0\x1B\x03\x80\x83Q\x16\x84R\x80` \x84\x01Q\x16` \x85\x01R\x80`@\x84\x01Q\x16`@\x85\x01RP``\x82\x01Q``\x84\x01Rc\xFF\xFF\xFF\xFF`\x80\x83\x01Q\x16`\x80\x84\x01R`\xA0\x82\x01Q`\xE0`\xA0\x85\x01RaV\x17`\xE0\x85\x01\x82aR&V[\x90P`\xC0\x83\x01Q\x84\x82\x03`\xC0\x86\x01Ra\x12 \x82\x82aQ/V[` \x81R`\0aJ\x03` \x83\x01\x84aU\xBCV[`\0` \x82\x84\x03\x12\x15aVUW`\0\x80\xFD[PQ\x91\x90PV[`\0\x82`\x1F\x83\x01\x12aVmW`\0\x80\xFD[\x81Q` aV}aM\t\x83aL\xC5V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aV\x9CW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMQW\x80Q\x83R\x91\x83\x01\x91\x83\x01aV\xA0V[`\0\x80`@\x83\x85\x03\x12\x15aV\xCAW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aV\xE1W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12aV\xF5W`\0\x80\xFD[\x81Q` aW\x05aM\t\x83aL\xC5V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15aW$W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15aWKW\x85QaW<\x81aHvV[\x82R\x94\x82\x01\x94\x90\x82\x01\x90aW)V[\x91\x88\x01Q\x91\x96P\x90\x93PPP\x80\x82\x11\x15aWdW`\0\x80\xFD[PaQ%\x85\x82\x86\x01aV\\V[`\0\x82\x19\x82\x11\x15aW\x84WaW\x84aS\x0EV[P\x01\x90V[`\0\x82\x82\x10\x15aW\x9BWaW\x9BaS\x0EV[P\x03\x90V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[\x82\x81R`@` \x82\x01R`\0aN\xA7`@\x83\x01\x84aU\xBCV[`\0` \x82\x84\x03\x12\x15aW\xEFW`\0\x80\xFD[\x815aJ\x03\x81aL\xA8V[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\x815aX%\x81aHvV[aX/\x81\x83aW\xFAV[P`\x01\x81\x01` \x83\x015aXB\x81aHvV[aXL\x81\x83aW\xFAV[P`@\x83\x015aX[\x81aL\xA8V[\x81Tc\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x16`\xA0\x91\x90\x91\x1Bc\xFF\xFF\xFF\xFF`\xA0\x1B\x16\x17\x90UPPV[`\0aX\x896\x83aM\xB7V[\x92\x91PPV[` \x80\x82R`n\x90\x82\x01R`\0\x80Q` aY\xB5\x839\x81Q\x91R`@\x82\x01R\x7FdWithdrawal: withdrawalDelayBloc``\x82\x01R\x7Fks period has not yet passed for`\x80\x82\x01Rm this strategy`\x90\x1B`\xA0\x82\x01R`\xC0\x01\x90V[\x82\x81R`\0` `@\x81\x84\x01R\x83Q\x80`@\x85\x01R`\0[\x81\x81\x10\x15aYKW\x85\x81\x01\x83\x01Q\x85\x82\x01``\x01R\x82\x01aY/V[\x81\x81\x11\x15aY]W`\0``\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01``\x01\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aY\x86W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14aJ\x03W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD\xFEDelegationManager._completeQueue\xA2dipfsX\"\x12 \xE2y\x12\x1AK/\xF4\xCF\xCD\xA4\xE7\xD1\xB5\x1E@\xA5w\xF2z\xF7\xF3\xE3n\x9E\xBA2o\xADPu\xFD\xE8dsolcC\0\x08\x0C\x003", + ); + /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`. + ```solidity + event Initialized(uint8 version); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Initialized { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "Initialized(uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, + 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, + 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { version: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.version, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Initialized { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Initialized> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Initialized) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `MinWithdrawalDelayBlocksSet(uint256,uint256)` and selector `0xafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69`. + ```solidity + event MinWithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct MinWithdrawalDelayBlocksSet { + #[allow(missing_docs)] + pub previousValue: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub newValue: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for MinWithdrawalDelayBlocksSet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "MinWithdrawalDelayBlocksSet(uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 175u8, 160u8, 3u8, 205u8, 118u8, 248u8, 127u8, 249u8, 214u8, 43u8, 53u8, 190u8, + 234u8, 136u8, 153u8, 32u8, 243u8, 60u8, 12u8, 66u8, 184u8, 212u8, 91u8, 116u8, + 149u8, 77u8, 97u8, 213u8, 15u8, 75u8, 107u8, 105u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + previousValue: data.0, + newValue: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.previousValue, + ), + as alloy_sol_types::SolType>::tokenize( + &self.newValue, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for MinWithdrawalDelayBlocksSet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&MinWithdrawalDelayBlocksSet> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &MinWithdrawalDelayBlocksSet) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorDetailsModified(address,(address,address,uint32))` and selector `0xfebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac`. + ```solidity + event OperatorDetailsModified(address indexed operator, IDelegationManager.OperatorDetails newOperatorDetails); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorDetailsModified { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOperatorDetails: + ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorDetailsModified { + type DataTuple<'a> = (IDelegationManager::OperatorDetails,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = + "OperatorDetailsModified(address,(address,address,uint32))"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 254u8, 190u8, 92u8, 210u8, 75u8, 44u8, 188u8, 123u8, 6u8, 91u8, 157u8, 15u8, + 222u8, 185u8, 4u8, 70u8, 30u8, 74u8, 252u8, 255u8, 87u8, 221u8, 87u8, 172u8, + 218u8, 30u8, 120u8, 50u8, 3u8, 27u8, 167u8, 172u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: topics.1, + newOperatorDetails: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.newOperatorDetails, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.operator.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorDetailsModified { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorDetailsModified> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorDetailsModified) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorMetadataURIUpdated(address,string)` and selector `0x02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b6708090`. + ```solidity + event OperatorMetadataURIUpdated(address indexed operator, string metadataURI); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorMetadataURIUpdated { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub metadataURI: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorMetadataURIUpdated { + type DataTuple<'a> = (alloy::sol_types::sol_data::String,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OperatorMetadataURIUpdated(address,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 2u8, 169u8, 25u8, 237u8, 14u8, 42u8, 202u8, 209u8, 221u8, 144u8, 241u8, 126u8, + 242u8, 250u8, 74u8, 229u8, 70u8, 46u8, 225u8, 51u8, 145u8, 112u8, 3u8, 74u8, + 133u8, 49u8, 204u8, 164u8, 182u8, 112u8, 128u8, 144u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: topics.1, + metadataURI: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.metadataURI, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.operator.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorMetadataURIUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorMetadataURIUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorMetadataURIUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorRegistered(address,(address,address,uint32))` and selector `0x8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e2`. + ```solidity + event OperatorRegistered(address indexed operator, IDelegationManager.OperatorDetails operatorDetails); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorRegistered { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub operatorDetails: + ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorRegistered { + type DataTuple<'a> = (IDelegationManager::OperatorDetails,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OperatorRegistered(address,(address,address,uint32))"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 142u8, 132u8, 133u8, 88u8, 58u8, 35u8, 16u8, 212u8, 31u8, 124u8, 130u8, 185u8, + 66u8, 125u8, 11u8, 212u8, 155u8, 173u8, 116u8, 187u8, 156u8, 255u8, 157u8, + 52u8, 2u8, 162u8, 157u8, 143u8, 155u8, 40u8, 160u8, 226u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: topics.1, + operatorDetails: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.operatorDetails, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.operator.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorRegistered { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorRegistered> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorRegistered) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorSharesDecreased(address,address,address,uint256)` and selector `0x6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd`. + ```solidity + event OperatorSharesDecreased(address indexed operator, address staker, address strategy, uint256 shares); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorSharesDecreased { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub staker: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub strategy: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub shares: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorSharesDecreased { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = + "OperatorSharesDecreased(address,address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 105u8, 9u8, 96u8, 0u8, 55u8, 183u8, 93u8, 123u8, 71u8, 51u8, 174u8, 221u8, + 129u8, 84u8, 66u8, 181u8, 236u8, 1u8, 138u8, 130u8, 119u8, 81u8, 200u8, 50u8, + 170u8, 255u8, 100u8, 235u8, 165u8, 214u8, 210u8, 221u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: topics.1, + staker: data.0, + strategy: data.1, + shares: data.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.staker, + ), + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.shares, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.operator.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorSharesDecreased { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorSharesDecreased> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorSharesDecreased) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorSharesIncreased(address,address,address,uint256)` and selector `0x1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c`. + ```solidity + event OperatorSharesIncreased(address indexed operator, address staker, address strategy, uint256 shares); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorSharesIncreased { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub staker: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub strategy: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub shares: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorSharesIncreased { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = + "OperatorSharesIncreased(address,address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 30u8, 192u8, 66u8, 201u8, 101u8, 226u8, 237u8, 215u8, 16u8, 123u8, 81u8, 24u8, + 142u8, 224u8, 243u8, 131u8, 226u8, 46u8, 118u8, 23u8, 144u8, 65u8, 171u8, 58u8, + 157u8, 24u8, 255u8, 21u8, 20u8, 5u8, 22u8, 108u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: topics.1, + staker: data.0, + strategy: data.1, + shares: data.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.staker, + ), + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.shares, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.operator.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorSharesIncreased { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorSharesIncreased> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorSharesIncreased) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. + ```solidity + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub previousOwner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, + 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, + 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + previousOwner: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.previousOwner.clone(), + self.newOwner.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.previousOwner, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Paused(address,uint256)` and selector `0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d`. + ```solidity + event Paused(address indexed account, uint256 newPausedStatus); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Paused { + #[allow(missing_docs)] + pub account: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Paused { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Paused(address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8, 188u8, + 152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8, 11u8, 182u8, + 224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + account: topics.1, + newPausedStatus: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.account.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.account, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Paused { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Paused> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Paused) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `PauserRegistrySet(address,address)` and selector `0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6`. + ```solidity + event PauserRegistrySet(address pauserRegistry, address newPauserRegistry); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct PauserRegistrySet { + #[allow(missing_docs)] + pub pauserRegistry: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newPauserRegistry: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for PauserRegistrySet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "PauserRegistrySet(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 110u8, 159u8, 205u8, 83u8, 152u8, 150u8, 252u8, 166u8, 14u8, 139u8, 15u8, 1u8, + 221u8, 88u8, 2u8, 51u8, 228u8, 138u8, 107u8, 15u8, 125u8, 240u8, 19u8, 184u8, + 155u8, 167u8, 245u8, 101u8, 134u8, 154u8, 205u8, 182u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + pauserRegistry: data.0, + newPauserRegistry: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.pauserRegistry, + ), + ::tokenize( + &self.newPauserRegistry, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for PauserRegistrySet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&PauserRegistrySet> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &PauserRegistrySet) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `StakerDelegated(address,address)` and selector `0xc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d8743304`. + ```solidity + event StakerDelegated(address indexed staker, address indexed operator); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct StakerDelegated { + #[allow(missing_docs)] + pub staker: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for StakerDelegated { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "StakerDelegated(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 195u8, 238u8, 159u8, 46u8, 95u8, 218u8, 152u8, 232u8, 6u8, 106u8, 31u8, 116u8, + 91u8, 45u8, 249u8, 40u8, 95u8, 65u8, 111u8, 233u8, 140u8, 242u8, 85u8, 156u8, + 210u8, 20u8, 132u8, 179u8, 216u8, 116u8, 51u8, 4u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + staker: topics.1, + operator: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.staker.clone(), + self.operator.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.staker, + ); + out[2usize] = ::encode_topic( + &self.operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for StakerDelegated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&StakerDelegated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &StakerDelegated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `StakerForceUndelegated(address,address)` and selector `0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a`. + ```solidity + event StakerForceUndelegated(address indexed staker, address indexed operator); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct StakerForceUndelegated { + #[allow(missing_docs)] + pub staker: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for StakerForceUndelegated { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "StakerForceUndelegated(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 240u8, 237u8, 223u8, 7u8, 230u8, 234u8, 20u8, 243u8, 136u8, 180u8, 126u8, 30u8, + 148u8, 160u8, 244u8, 100u8, 236u8, 189u8, 158u8, 237u8, 65u8, 113u8, 19u8, + 14u8, 15u8, 192u8, 233u8, 159u8, 180u8, 3u8, 10u8, 138u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + staker: topics.1, + operator: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.staker.clone(), + self.operator.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.staker, + ); + out[2usize] = ::encode_topic( + &self.operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for StakerForceUndelegated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&StakerForceUndelegated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &StakerForceUndelegated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `StakerUndelegated(address,address)` and selector `0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676`. + ```solidity + event StakerUndelegated(address indexed staker, address indexed operator); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct StakerUndelegated { + #[allow(missing_docs)] + pub staker: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for StakerUndelegated { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "StakerUndelegated(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 254u8, 227u8, 9u8, 102u8, 162u8, 86u8, 183u8, 30u8, 20u8, 188u8, 14u8, 191u8, + 201u8, 67u8, 21u8, 226u8, 142u8, 244u8, 169u8, 122u8, 113u8, 49u8, 169u8, + 226u8, 183u8, 163u8, 16u8, 167u8, 58u8, 244u8, 70u8, 118u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + staker: topics.1, + operator: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.staker.clone(), + self.operator.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.staker, + ); + out[2usize] = ::encode_topic( + &self.operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for StakerUndelegated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&StakerUndelegated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &StakerUndelegated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `StrategyWithdrawalDelayBlocksSet(address,uint256,uint256)` and selector `0x0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d`. + ```solidity + event StrategyWithdrawalDelayBlocksSet(address strategy, uint256 previousValue, uint256 newValue); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct StrategyWithdrawalDelayBlocksSet { + #[allow(missing_docs)] + pub strategy: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub previousValue: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub newValue: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for StrategyWithdrawalDelayBlocksSet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = + "StrategyWithdrawalDelayBlocksSet(address,uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 14u8, 126u8, 250u8, 115u8, 142u8, 139u8, 12u8, 230u8, 55u8, 106u8, 12u8, 26u8, + 244u8, 113u8, 101u8, 85u8, 64u8, 210u8, 233u8, 168u8, 22u8, 71u8, 215u8, 176u8, + 158u8, 216u8, 35u8, 1u8, 132u8, 38u8, 87u8, 109u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + strategy: data.0, + previousValue: data.1, + newValue: data.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.previousValue, + ), + as alloy_sol_types::SolType>::tokenize( + &self.newValue, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for StrategyWithdrawalDelayBlocksSet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&StrategyWithdrawalDelayBlocksSet> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &StrategyWithdrawalDelayBlocksSet) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Unpaused(address,uint256)` and selector `0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c`. + ```solidity + event Unpaused(address indexed account, uint256 newPausedStatus); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Unpaused { + #[allow(missing_docs)] + pub account: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Unpaused { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Unpaused(address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8, 2u8, + 188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8, 228u8, 152u8, + 107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + account: topics.1, + newPausedStatus: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.account.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.account, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Unpaused { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Unpaused> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Unpaused) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `WithdrawalCompleted(bytes32)` and selector `0xc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d`. + ```solidity + event WithdrawalCompleted(bytes32 withdrawalRoot); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct WithdrawalCompleted { + #[allow(missing_docs)] + pub withdrawalRoot: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for WithdrawalCompleted { + type DataTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "WithdrawalCompleted(bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 201u8, 112u8, 152u8, 194u8, 246u8, 88u8, 128u8, 11u8, 77u8, 242u8, 144u8, 1u8, + 82u8, 127u8, 115u8, 36u8, 188u8, 223u8, 252u8, 246u8, 232u8, 117u8, 26u8, + 105u8, 154u8, 185u8, 32u8, 161u8, 236u8, 237u8, 91u8, 29u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + withdrawalRoot: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.withdrawalRoot), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for WithdrawalCompleted { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&WithdrawalCompleted> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &WithdrawalCompleted) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `WithdrawalQueued(bytes32,(address,address,address,uint256,uint32,address[],uint256[]))` and selector `0x9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f9`. + ```solidity + event WithdrawalQueued(bytes32 withdrawalRoot, IDelegationManager.Withdrawal withdrawal); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct WithdrawalQueued { + #[allow(missing_docs)] + pub withdrawalRoot: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub withdrawal: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for WithdrawalQueued { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + IDelegationManager::Withdrawal, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "WithdrawalQueued(bytes32,(address,address,address,uint256,uint32,address[],uint256[]))"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 144u8, 9u8, 171u8, 21u8, 62u8, 128u8, 20u8, 251u8, 251u8, 2u8, 242u8, 33u8, + 127u8, 92u8, 222u8, 122u8, 167u8, 249u8, 173u8, 115u8, 74u8, 232u8, 92u8, + 163u8, 238u8, 63u8, 76u8, 162u8, 253u8, 212u8, 153u8, 249u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + withdrawalRoot: data.0, + withdrawal: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.withdrawalRoot), + ::tokenize( + &self.withdrawal, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for WithdrawalQueued { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&WithdrawalQueued> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &WithdrawalQueued) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. + ```solidity + constructor(address _strategyManager, address _slasher, address _eigenPodManager); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _strategyManager: alloy::sol_types::private::Address, + pub _slasher: alloy::sol_types::private::Address, + pub _eigenPodManager: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + ( + value._strategyManager, + value._slasher, + value._eigenPodManager, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _strategyManager: tuple.0, + _slasher: tuple.1, + _eigenPodManager: tuple.2, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._strategyManager, + ), + ::tokenize( + &self._slasher, + ), + ::tokenize( + &self._eigenPodManager, + ), + ) + } + } + }; + /**Function with signature `DELEGATION_APPROVAL_TYPEHASH()` and selector `0x04a4f979`. + ```solidity + function DELEGATION_APPROVAL_TYPEHASH() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DELEGATION_APPROVAL_TYPEHASHCall {} + ///Container type for the return parameters of the [`DELEGATION_APPROVAL_TYPEHASH()`](DELEGATION_APPROVAL_TYPEHASHCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DELEGATION_APPROVAL_TYPEHASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DELEGATION_APPROVAL_TYPEHASHCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DELEGATION_APPROVAL_TYPEHASHCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DELEGATION_APPROVAL_TYPEHASHReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DELEGATION_APPROVAL_TYPEHASHReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for DELEGATION_APPROVAL_TYPEHASHCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = DELEGATION_APPROVAL_TYPEHASHReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "DELEGATION_APPROVAL_TYPEHASH()"; + const SELECTOR: [u8; 4] = [4u8, 164u8, 249u8, 121u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `DOMAIN_TYPEHASH()` and selector `0x20606b70`. + ```solidity + function DOMAIN_TYPEHASH() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DOMAIN_TYPEHASHCall {} + ///Container type for the return parameters of the [`DOMAIN_TYPEHASH()`](DOMAIN_TYPEHASHCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DOMAIN_TYPEHASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DOMAIN_TYPEHASHCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DOMAIN_TYPEHASHCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DOMAIN_TYPEHASHReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DOMAIN_TYPEHASHReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for DOMAIN_TYPEHASHCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = DOMAIN_TYPEHASHReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "DOMAIN_TYPEHASH()"; + const SELECTOR: [u8; 4] = [32u8, 96u8, 107u8, 112u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `MAX_STAKER_OPT_OUT_WINDOW_BLOCKS()` and selector `0x4fc40b61`. + ```solidity + function MAX_STAKER_OPT_OUT_WINDOW_BLOCKS() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct MAX_STAKER_OPT_OUT_WINDOW_BLOCKSCall {} + ///Container type for the return parameters of the [`MAX_STAKER_OPT_OUT_WINDOW_BLOCKS()`](MAX_STAKER_OPT_OUT_WINDOW_BLOCKSCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct MAX_STAKER_OPT_OUT_WINDOW_BLOCKSReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: MAX_STAKER_OPT_OUT_WINDOW_BLOCKSCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for MAX_STAKER_OPT_OUT_WINDOW_BLOCKSCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: MAX_STAKER_OPT_OUT_WINDOW_BLOCKSReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for MAX_STAKER_OPT_OUT_WINDOW_BLOCKSReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for MAX_STAKER_OPT_OUT_WINDOW_BLOCKSCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = MAX_STAKER_OPT_OUT_WINDOW_BLOCKSReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "MAX_STAKER_OPT_OUT_WINDOW_BLOCKS()"; + const SELECTOR: [u8; 4] = [79u8, 196u8, 11u8, 97u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `MAX_WITHDRAWAL_DELAY_BLOCKS()` and selector `0xca661c04`. + ```solidity + function MAX_WITHDRAWAL_DELAY_BLOCKS() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct MAX_WITHDRAWAL_DELAY_BLOCKSCall {} + ///Container type for the return parameters of the [`MAX_WITHDRAWAL_DELAY_BLOCKS()`](MAX_WITHDRAWAL_DELAY_BLOCKSCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct MAX_WITHDRAWAL_DELAY_BLOCKSReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: MAX_WITHDRAWAL_DELAY_BLOCKSCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for MAX_WITHDRAWAL_DELAY_BLOCKSCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: MAX_WITHDRAWAL_DELAY_BLOCKSReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for MAX_WITHDRAWAL_DELAY_BLOCKSReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for MAX_WITHDRAWAL_DELAY_BLOCKSCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = MAX_WITHDRAWAL_DELAY_BLOCKSReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "MAX_WITHDRAWAL_DELAY_BLOCKS()"; + const SELECTOR: [u8; 4] = [202u8, 102u8, 28u8, 4u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `STAKER_DELEGATION_TYPEHASH()` and selector `0x43377382`. + ```solidity + function STAKER_DELEGATION_TYPEHASH() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct STAKER_DELEGATION_TYPEHASHCall {} + ///Container type for the return parameters of the [`STAKER_DELEGATION_TYPEHASH()`](STAKER_DELEGATION_TYPEHASHCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct STAKER_DELEGATION_TYPEHASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: STAKER_DELEGATION_TYPEHASHCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for STAKER_DELEGATION_TYPEHASHCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: STAKER_DELEGATION_TYPEHASHReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for STAKER_DELEGATION_TYPEHASHReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for STAKER_DELEGATION_TYPEHASHCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = STAKER_DELEGATION_TYPEHASHReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "STAKER_DELEGATION_TYPEHASH()"; + const SELECTOR: [u8; 4] = [67u8, 55u8, 115u8, 130u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `beaconChainETHStrategy()` and selector `0x9104c319`. + ```solidity + function beaconChainETHStrategy() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct beaconChainETHStrategyCall {} + ///Container type for the return parameters of the [`beaconChainETHStrategy()`](beaconChainETHStrategyCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct beaconChainETHStrategyReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: beaconChainETHStrategyCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for beaconChainETHStrategyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: beaconChainETHStrategyReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for beaconChainETHStrategyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for beaconChainETHStrategyCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = beaconChainETHStrategyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "beaconChainETHStrategy()"; + const SELECTOR: [u8; 4] = [145u8, 4u8, 195u8, 25u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `calculateCurrentStakerDelegationDigestHash(address,address,uint256)` and selector `0x1bbce091`. + ```solidity + function calculateCurrentStakerDelegationDigestHash(address staker, address operator, uint256 expiry) external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct calculateCurrentStakerDelegationDigestHashCall { + pub staker: alloy::sol_types::private::Address, + pub operator: alloy::sol_types::private::Address, + pub expiry: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`calculateCurrentStakerDelegationDigestHash(address,address,uint256)`](calculateCurrentStakerDelegationDigestHashCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct calculateCurrentStakerDelegationDigestHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: calculateCurrentStakerDelegationDigestHashCall) -> Self { + (value.staker, value.operator, value.expiry) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for calculateCurrentStakerDelegationDigestHashCall + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + staker: tuple.0, + operator: tuple.1, + expiry: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: calculateCurrentStakerDelegationDigestHashReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for calculateCurrentStakerDelegationDigestHashReturn + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for calculateCurrentStakerDelegationDigestHashCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = calculateCurrentStakerDelegationDigestHashReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "calculateCurrentStakerDelegationDigestHash(address,address,uint256)"; + const SELECTOR: [u8; 4] = [27u8, 188u8, 224u8, 145u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.staker, + ), + ::tokenize( + &self.operator, + ), + as alloy_sol_types::SolType>::tokenize( + &self.expiry, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)` and selector `0x0b9f487a`. + ```solidity + function calculateDelegationApprovalDigestHash(address staker, address operator, address _delegationApprover, bytes32 approverSalt, uint256 expiry) external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct calculateDelegationApprovalDigestHashCall { + pub staker: alloy::sol_types::private::Address, + pub operator: alloy::sol_types::private::Address, + pub _delegationApprover: alloy::sol_types::private::Address, + pub approverSalt: alloy::sol_types::private::FixedBytes<32>, + pub expiry: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)`](calculateDelegationApprovalDigestHashCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct calculateDelegationApprovalDigestHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: calculateDelegationApprovalDigestHashCall) -> Self { + ( + value.staker, + value.operator, + value._delegationApprover, + value.approverSalt, + value.expiry, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for calculateDelegationApprovalDigestHashCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + staker: tuple.0, + operator: tuple.1, + _delegationApprover: tuple.2, + approverSalt: tuple.3, + expiry: tuple.4, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: calculateDelegationApprovalDigestHashReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for calculateDelegationApprovalDigestHashReturn + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for calculateDelegationApprovalDigestHashCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = calculateDelegationApprovalDigestHashReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)"; + const SELECTOR: [u8; 4] = [11u8, 159u8, 72u8, 122u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.staker, + ), + ::tokenize( + &self.operator, + ), + ::tokenize( + &self._delegationApprover, + ), + as alloy_sol_types::SolType>::tokenize(&self.approverSalt), + as alloy_sol_types::SolType>::tokenize(&self.expiry), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `calculateStakerDelegationDigestHash(address,uint256,address,uint256)` and selector `0xc94b5111`. + ```solidity + function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct calculateStakerDelegationDigestHashCall { + pub staker: alloy::sol_types::private::Address, + pub _stakerNonce: alloy::sol_types::private::primitives::aliases::U256, + pub operator: alloy::sol_types::private::Address, + pub expiry: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`calculateStakerDelegationDigestHash(address,uint256,address,uint256)`](calculateStakerDelegationDigestHashCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct calculateStakerDelegationDigestHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: calculateStakerDelegationDigestHashCall) -> Self { + ( + value.staker, + value._stakerNonce, + value.operator, + value.expiry, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for calculateStakerDelegationDigestHashCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + staker: tuple.0, + _stakerNonce: tuple.1, + operator: tuple.2, + expiry: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: calculateStakerDelegationDigestHashReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for calculateStakerDelegationDigestHashReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for calculateStakerDelegationDigestHashCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = calculateStakerDelegationDigestHashReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "calculateStakerDelegationDigestHash(address,uint256,address,uint256)"; + const SELECTOR: [u8; 4] = [201u8, 75u8, 81u8, 17u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.staker, + ), + as alloy_sol_types::SolType>::tokenize( + &self._stakerNonce, + ), + ::tokenize( + &self.operator, + ), + as alloy_sol_types::SolType>::tokenize( + &self.expiry, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))` and selector `0x597b36da`. + ```solidity + function calculateWithdrawalRoot(IDelegationManager.Withdrawal memory withdrawal) external pure returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct calculateWithdrawalRootCall { + pub withdrawal: ::RustType, + } + ///Container type for the return parameters of the [`calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))`](calculateWithdrawalRootCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct calculateWithdrawalRootReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IDelegationManager::Withdrawal,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: calculateWithdrawalRootCall) -> Self { + (value.withdrawal,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for calculateWithdrawalRootCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + withdrawal: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: calculateWithdrawalRootReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for calculateWithdrawalRootReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for calculateWithdrawalRootCall { + type Parameters<'a> = (IDelegationManager::Withdrawal,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = calculateWithdrawalRootReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))"; + const SELECTOR: [u8; 4] = [89u8, 123u8, 54u8, 218u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.withdrawal, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)` and selector `0x60d7faed`. + ```solidity + function completeQueuedWithdrawal(IDelegationManager.Withdrawal memory withdrawal, address[] memory tokens, uint256 middlewareTimesIndex, bool receiveAsTokens) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct completeQueuedWithdrawalCall { + pub withdrawal: ::RustType, + pub tokens: alloy::sol_types::private::Vec, + pub middlewareTimesIndex: alloy::sol_types::private::primitives::aliases::U256, + pub receiveAsTokens: bool, + } + ///Container type for the return parameters of the [`completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)`](completeQueuedWithdrawalCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct completeQueuedWithdrawalReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + IDelegationManager::Withdrawal, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bool, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Vec, + alloy::sol_types::private::primitives::aliases::U256, + bool, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: completeQueuedWithdrawalCall) -> Self { + ( + value.withdrawal, + value.tokens, + value.middlewareTimesIndex, + value.receiveAsTokens, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for completeQueuedWithdrawalCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + withdrawal: tuple.0, + tokens: tuple.1, + middlewareTimesIndex: tuple.2, + receiveAsTokens: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: completeQueuedWithdrawalReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for completeQueuedWithdrawalReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for completeQueuedWithdrawalCall { + type Parameters<'a> = ( + IDelegationManager::Withdrawal, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bool, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = completeQueuedWithdrawalReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)"; + const SELECTOR: [u8; 4] = [96u8, 215u8, 250u8, 237u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.withdrawal, + ), + as alloy_sol_types::SolType>::tokenize(&self.tokens), + as alloy_sol_types::SolType>::tokenize(&self.middlewareTimesIndex), + ::tokenize( + &self.receiveAsTokens, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])` and selector `0x33404396`. + ```solidity + function completeQueuedWithdrawals(IDelegationManager.Withdrawal[] memory withdrawals, address[][] memory tokens, uint256[] memory middlewareTimesIndexes, bool[] memory receiveAsTokens) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct completeQueuedWithdrawalsCall { + pub withdrawals: alloy::sol_types::private::Vec< + ::RustType, + >, + pub tokens: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec, + >, + pub middlewareTimesIndexes: + alloy::sol_types::private::Vec, + pub receiveAsTokens: alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])`](completeQueuedWithdrawalsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct completeQueuedWithdrawalsReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array, + >, + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec, + >, + alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: completeQueuedWithdrawalsCall) -> Self { + ( + value.withdrawals, + value.tokens, + value.middlewareTimesIndexes, + value.receiveAsTokens, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for completeQueuedWithdrawalsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + withdrawals: tuple.0, + tokens: tuple.1, + middlewareTimesIndexes: tuple.2, + receiveAsTokens: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: completeQueuedWithdrawalsReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for completeQueuedWithdrawalsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for completeQueuedWithdrawalsCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array, + >, + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = completeQueuedWithdrawalsReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])"; + const SELECTOR: [u8; 4] = [51u8, 64u8, 67u8, 150u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.withdrawals), + , + > as alloy_sol_types::SolType>::tokenize(&self.tokens), + , + > as alloy_sol_types::SolType>::tokenize( + &self.middlewareTimesIndexes, + ), + as alloy_sol_types::SolType>::tokenize(&self.receiveAsTokens), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `cumulativeWithdrawalsQueued(address)` and selector `0xa1788484`. + ```solidity + function cumulativeWithdrawalsQueued(address) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct cumulativeWithdrawalsQueuedCall { + pub _0: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`cumulativeWithdrawalsQueued(address)`](cumulativeWithdrawalsQueuedCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct cumulativeWithdrawalsQueuedReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: cumulativeWithdrawalsQueuedCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for cumulativeWithdrawalsQueuedCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: cumulativeWithdrawalsQueuedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for cumulativeWithdrawalsQueuedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for cumulativeWithdrawalsQueuedCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = cumulativeWithdrawalsQueuedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "cumulativeWithdrawalsQueued(address)"; + const SELECTOR: [u8; 4] = [161u8, 120u8, 132u8, 132u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `decreaseDelegatedShares(address,address,uint256)` and selector `0x132d4967`. + ```solidity + function decreaseDelegatedShares(address staker, address strategy, uint256 shares) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct decreaseDelegatedSharesCall { + pub staker: alloy::sol_types::private::Address, + pub strategy: alloy::sol_types::private::Address, + pub shares: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`decreaseDelegatedShares(address,address,uint256)`](decreaseDelegatedSharesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct decreaseDelegatedSharesReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: decreaseDelegatedSharesCall) -> Self { + (value.staker, value.strategy, value.shares) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for decreaseDelegatedSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + staker: tuple.0, + strategy: tuple.1, + shares: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: decreaseDelegatedSharesReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for decreaseDelegatedSharesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for decreaseDelegatedSharesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = decreaseDelegatedSharesReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "decreaseDelegatedShares(address,address,uint256)"; + const SELECTOR: [u8; 4] = [19u8, 45u8, 73u8, 103u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.staker, + ), + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.shares, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `delegateTo(address,(bytes,uint256),bytes32)` and selector `0xeea9064b`. + ```solidity + function delegateTo(address operator, ISignatureUtils.SignatureWithExpiry memory approverSignatureAndExpiry, bytes32 approverSalt) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegateToCall { + pub operator: alloy::sol_types::private::Address, + pub approverSignatureAndExpiry: + ::RustType, + pub approverSalt: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`delegateTo(address,(bytes,uint256),bytes32)`](delegateToCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegateToReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithExpiry, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + ::RustType, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegateToCall) -> Self { + ( + value.operator, + value.approverSignatureAndExpiry, + value.approverSalt, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegateToCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + approverSignatureAndExpiry: tuple.1, + approverSalt: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegateToReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegateToReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for delegateToCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithExpiry, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = delegateToReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "delegateTo(address,(bytes,uint256),bytes32)"; + const SELECTOR: [u8; 4] = [238u8, 169u8, 6u8, 75u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.approverSignatureAndExpiry, + ), + as alloy_sol_types::SolType>::tokenize(&self.approverSalt), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)` and selector `0x7f548071`. + ```solidity + function delegateToBySignature(address staker, address operator, ISignatureUtils.SignatureWithExpiry memory stakerSignatureAndExpiry, ISignatureUtils.SignatureWithExpiry memory approverSignatureAndExpiry, bytes32 approverSalt) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegateToBySignatureCall { + pub staker: alloy::sol_types::private::Address, + pub operator: alloy::sol_types::private::Address, + pub stakerSignatureAndExpiry: + ::RustType, + pub approverSignatureAndExpiry: + ::RustType, + pub approverSalt: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)`](delegateToBySignatureCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegateToBySignatureReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithExpiry, + ISignatureUtils::SignatureWithExpiry, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ::RustType, + ::RustType, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegateToBySignatureCall) -> Self { + ( + value.staker, + value.operator, + value.stakerSignatureAndExpiry, + value.approverSignatureAndExpiry, + value.approverSalt, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegateToBySignatureCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + staker: tuple.0, + operator: tuple.1, + stakerSignatureAndExpiry: tuple.2, + approverSignatureAndExpiry: tuple.3, + approverSalt: tuple.4, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegateToBySignatureReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegateToBySignatureReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for delegateToBySignatureCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithExpiry, + ISignatureUtils::SignatureWithExpiry, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = delegateToBySignatureReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)"; + const SELECTOR: [u8; 4] = [127u8, 84u8, 128u8, 113u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.staker, + ), + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.stakerSignatureAndExpiry, + ), + ::tokenize( + &self.approverSignatureAndExpiry, + ), + as alloy_sol_types::SolType>::tokenize(&self.approverSalt), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `delegatedTo(address)` and selector `0x65da1264`. + ```solidity + function delegatedTo(address) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegatedToCall { + pub _0: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`delegatedTo(address)`](delegatedToCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegatedToReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegatedToCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegatedToCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegatedToReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegatedToReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for delegatedToCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = delegatedToReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "delegatedTo(address)"; + const SELECTOR: [u8; 4] = [101u8, 218u8, 18u8, 100u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `delegationApprover(address)` and selector `0x3cdeb5e0`. + ```solidity + function delegationApprover(address operator) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegationApproverCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`delegationApprover(address)`](delegationApproverCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegationApproverReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationApproverCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationApproverCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationApproverReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationApproverReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for delegationApproverCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = delegationApproverReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "delegationApprover(address)"; + const SELECTOR: [u8; 4] = [60u8, 222u8, 181u8, 224u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `delegationApproverSaltIsSpent(address,bytes32)` and selector `0xbb45fef2`. + ```solidity + function delegationApproverSaltIsSpent(address, bytes32) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegationApproverSaltIsSpentCall { + pub _0: alloy::sol_types::private::Address, + pub _1: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`delegationApproverSaltIsSpent(address,bytes32)`](delegationApproverSaltIsSpentCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegationApproverSaltIsSpentReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationApproverSaltIsSpentCall) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationApproverSaltIsSpentCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationApproverSaltIsSpentReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationApproverSaltIsSpentReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for delegationApproverSaltIsSpentCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = delegationApproverSaltIsSpentReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "delegationApproverSaltIsSpent(address,bytes32)"; + const SELECTOR: [u8; 4] = [187u8, 69u8, 254u8, 242u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + as alloy_sol_types::SolType>::tokenize(&self._1), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `domainSeparator()` and selector `0xf698da25`. + ```solidity + function domainSeparator() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct domainSeparatorCall {} + ///Container type for the return parameters of the [`domainSeparator()`](domainSeparatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct domainSeparatorReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: domainSeparatorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for domainSeparatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: domainSeparatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for domainSeparatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for domainSeparatorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = domainSeparatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "domainSeparator()"; + const SELECTOR: [u8; 4] = [246u8, 152u8, 218u8, 37u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `eigenPodManager()` and selector `0x4665bcda`. + ```solidity + function eigenPodManager() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct eigenPodManagerCall {} + ///Container type for the return parameters of the [`eigenPodManager()`](eigenPodManagerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct eigenPodManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: eigenPodManagerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for eigenPodManagerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: eigenPodManagerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for eigenPodManagerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for eigenPodManagerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = eigenPodManagerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "eigenPodManager()"; + const SELECTOR: [u8; 4] = [70u8, 101u8, 188u8, 218u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getDelegatableShares(address)` and selector `0xcf80873e`. + ```solidity + function getDelegatableShares(address staker) external view returns (address[] memory, uint256[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getDelegatableSharesCall { + pub staker: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getDelegatableShares(address)`](getDelegatableSharesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getDelegatableSharesReturn { + pub _0: alloy::sol_types::private::Vec, + pub _1: + alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getDelegatableSharesCall) -> Self { + (value.staker,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getDelegatableSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { staker: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getDelegatableSharesReturn) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getDelegatableSharesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getDelegatableSharesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getDelegatableSharesReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getDelegatableShares(address)"; + const SELECTOR: [u8; 4] = [207u8, 128u8, 135u8, 62u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.staker, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorShares(address,address[])` and selector `0x90041347`. + ```solidity + function getOperatorShares(address operator, address[] memory strategies) external view returns (uint256[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorSharesCall { + pub operator: alloy::sol_types::private::Address, + pub strategies: alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`getOperatorShares(address,address[])`](getOperatorSharesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorSharesReturn { + pub _0: + alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorSharesCall) -> Self { + (value.operator, value.strategies) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + strategies: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorSharesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorSharesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorSharesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Array, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorSharesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorShares(address,address[])"; + const SELECTOR: [u8; 4] = [144u8, 4u8, 19u8, 71u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + as alloy_sol_types::SolType>::tokenize(&self.strategies), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getWithdrawalDelay(address[])` and selector `0x0449ca39`. + ```solidity + function getWithdrawalDelay(address[] memory strategies) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getWithdrawalDelayCall { + pub strategies: alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`getWithdrawalDelay(address[])`](getWithdrawalDelayCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getWithdrawalDelayReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getWithdrawalDelayCall) -> Self { + (value.strategies,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getWithdrawalDelayCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategies: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getWithdrawalDelayReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getWithdrawalDelayReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getWithdrawalDelayCall { + type Parameters<'a> = + (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getWithdrawalDelayReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getWithdrawalDelay(address[])"; + const SELECTOR: [u8; 4] = [4u8, 73u8, 202u8, 57u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( as alloy_sol_types::SolType>::tokenize( + &self.strategies + ),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `increaseDelegatedShares(address,address,uint256)` and selector `0x28a573ae`. + ```solidity + function increaseDelegatedShares(address staker, address strategy, uint256 shares) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct increaseDelegatedSharesCall { + pub staker: alloy::sol_types::private::Address, + pub strategy: alloy::sol_types::private::Address, + pub shares: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`increaseDelegatedShares(address,address,uint256)`](increaseDelegatedSharesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct increaseDelegatedSharesReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: increaseDelegatedSharesCall) -> Self { + (value.staker, value.strategy, value.shares) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for increaseDelegatedSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + staker: tuple.0, + strategy: tuple.1, + shares: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: increaseDelegatedSharesReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for increaseDelegatedSharesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for increaseDelegatedSharesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = increaseDelegatedSharesReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "increaseDelegatedShares(address,address,uint256)"; + const SELECTOR: [u8; 4] = [40u8, 165u8, 115u8, 174u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.staker, + ), + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.shares, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `initialize(address,address,uint256,uint256,address[],uint256[])` and selector `0x22bf40e4`. + ```solidity + function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus, uint256 _minWithdrawalDelayBlocks, address[] memory _strategies, uint256[] memory _withdrawalDelayBlocks) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeCall { + pub initialOwner: alloy::sol_types::private::Address, + pub _pauserRegistry: alloy::sol_types::private::Address, + pub initialPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + pub _minWithdrawalDelayBlocks: alloy::sol_types::private::primitives::aliases::U256, + pub _strategies: alloy::sol_types::private::Vec, + pub _withdrawalDelayBlocks: + alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`initialize(address,address,uint256,uint256,address[],uint256[])`](initializeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeCall) -> Self { + ( + value.initialOwner, + value._pauserRegistry, + value.initialPausedStatus, + value._minWithdrawalDelayBlocks, + value._strategies, + value._withdrawalDelayBlocks, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + initialOwner: tuple.0, + _pauserRegistry: tuple.1, + initialPausedStatus: tuple.2, + _minWithdrawalDelayBlocks: tuple.3, + _strategies: tuple.4, + _withdrawalDelayBlocks: tuple.5, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for initializeCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = initializeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "initialize(address,address,uint256,uint256,address[],uint256[])"; + const SELECTOR: [u8; 4] = [34u8, 191u8, 64u8, 228u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.initialOwner, + ), + ::tokenize( + &self._pauserRegistry, + ), + as alloy_sol_types::SolType>::tokenize(&self.initialPausedStatus), + as alloy_sol_types::SolType>::tokenize( + &self._minWithdrawalDelayBlocks, + ), + as alloy_sol_types::SolType>::tokenize(&self._strategies), + , + > as alloy_sol_types::SolType>::tokenize( + &self._withdrawalDelayBlocks, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `isDelegated(address)` and selector `0x3e28391d`. + ```solidity + function isDelegated(address staker) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isDelegatedCall { + pub staker: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`isDelegated(address)`](isDelegatedCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isDelegatedReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isDelegatedCall) -> Self { + (value.staker,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isDelegatedCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { staker: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isDelegatedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isDelegatedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for isDelegatedCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = isDelegatedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "isDelegated(address)"; + const SELECTOR: [u8; 4] = [62u8, 40u8, 57u8, 29u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.staker, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `isOperator(address)` and selector `0x6d70f7ae`. + ```solidity + function isOperator(address operator) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isOperatorCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`isOperator(address)`](isOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isOperatorReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isOperatorCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isOperatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for isOperatorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = isOperatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "isOperator(address)"; + const SELECTOR: [u8; 4] = [109u8, 112u8, 247u8, 174u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `minWithdrawalDelayBlocks()` and selector `0xc448feb8`. + ```solidity + function minWithdrawalDelayBlocks() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct minWithdrawalDelayBlocksCall {} + ///Container type for the return parameters of the [`minWithdrawalDelayBlocks()`](minWithdrawalDelayBlocksCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct minWithdrawalDelayBlocksReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: minWithdrawalDelayBlocksCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for minWithdrawalDelayBlocksCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: minWithdrawalDelayBlocksReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for minWithdrawalDelayBlocksReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for minWithdrawalDelayBlocksCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = minWithdrawalDelayBlocksReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "minWithdrawalDelayBlocks()"; + const SELECTOR: [u8; 4] = [196u8, 72u8, 254u8, 184u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `modifyOperatorDetails((address,address,uint32))` and selector `0xf16172b0`. + ```solidity + function modifyOperatorDetails(IDelegationManager.OperatorDetails memory newOperatorDetails) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct modifyOperatorDetailsCall { + pub newOperatorDetails: + ::RustType, + } + ///Container type for the return parameters of the [`modifyOperatorDetails((address,address,uint32))`](modifyOperatorDetailsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct modifyOperatorDetailsReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IDelegationManager::OperatorDetails,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: modifyOperatorDetailsCall) -> Self { + (value.newOperatorDetails,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for modifyOperatorDetailsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newOperatorDetails: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: modifyOperatorDetailsReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for modifyOperatorDetailsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for modifyOperatorDetailsCall { + type Parameters<'a> = (IDelegationManager::OperatorDetails,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = modifyOperatorDetailsReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "modifyOperatorDetails((address,address,uint32))"; + const SELECTOR: [u8; 4] = [241u8, 97u8, 114u8, 176u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOperatorDetails, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `operatorDetails(address)` and selector `0xc5e480db`. + ```solidity + function operatorDetails(address operator) external view returns (IDelegationManager.OperatorDetails memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorDetailsCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`operatorDetails(address)`](operatorDetailsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorDetailsReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorDetailsCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorDetailsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IDelegationManager::OperatorDetails,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorDetailsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorDetailsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for operatorDetailsCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = operatorDetailsReturn; + type ReturnTuple<'a> = (IDelegationManager::OperatorDetails,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "operatorDetails(address)"; + const SELECTOR: [u8; 4] = [197u8, 228u8, 128u8, 219u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `operatorShares(address,address)` and selector `0x778e55f3`. + ```solidity + function operatorShares(address, address) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorSharesCall { + pub _0: alloy::sol_types::private::Address, + pub _1: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`operatorShares(address,address)`](operatorSharesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorSharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorSharesCall) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorSharesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorSharesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for operatorSharesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = operatorSharesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "operatorShares(address,address)"; + const SELECTOR: [u8; 4] = [119u8, 142u8, 85u8, 243u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + ::tokenize( + &self._1, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. + ```solidity + function owner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pause(uint256)` and selector `0x136439dd`. + ```solidity + function pause(uint256 newPausedStatus) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseCall { + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`pause(uint256)`](pauseCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseCall) -> Self { + (value.newPausedStatus,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newPausedStatus: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauseCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pauseReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pause(uint256)"; + const SELECTOR: [u8; 4] = [19u8, 100u8, 57u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pauseAll()` and selector `0x595c6a67`. + ```solidity + function pauseAll() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseAllCall {} + ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseAllReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseAllCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseAllCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseAllReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseAllReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauseAllCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pauseAllReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pauseAll()"; + const SELECTOR: [u8; 4] = [89u8, 92u8, 106u8, 103u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `paused(uint8)` and selector `0x5ac86ab7`. + ```solidity + function paused(uint8 index) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_0Call { + pub index: u8, + } + ///Container type for the return parameters of the [`paused(uint8)`](paused_0Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_0Return { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_0Call) -> Self { + (value.index,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_0Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { index: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_0Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_0Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for paused_0Call { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = paused_0Return; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "paused(uint8)"; + const SELECTOR: [u8; 4] = [90u8, 200u8, 106u8, 183u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `paused()` and selector `0x5c975abb`. + ```solidity + function paused() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_1Call {} + ///Container type for the return parameters of the [`paused()`](paused_1Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_1Return { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_1Call) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_1Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for paused_1Call { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = paused_1Return; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "paused()"; + const SELECTOR: [u8; 4] = [92u8, 151u8, 90u8, 187u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pauserRegistry()` and selector `0x886f1195`. + ```solidity + function pauserRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauserRegistryCall {} + ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauserRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauserRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauserRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauserRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauserRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauserRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pauserRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pauserRegistry()"; + const SELECTOR: [u8; 4] = [136u8, 111u8, 17u8, 149u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pendingWithdrawals(bytes32)` and selector `0xb7f06ebe`. + ```solidity + function pendingWithdrawals(bytes32) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pendingWithdrawalsCall { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`pendingWithdrawals(bytes32)`](pendingWithdrawalsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pendingWithdrawalsReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pendingWithdrawalsCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pendingWithdrawalsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pendingWithdrawalsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pendingWithdrawalsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pendingWithdrawalsCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pendingWithdrawalsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pendingWithdrawals(bytes32)"; + const SELECTOR: [u8; 4] = [183u8, 240u8, 110u8, 190u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._0), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `queueWithdrawals((address[],uint256[],address)[])` and selector `0x0dd8dd02`. + ```solidity + function queueWithdrawals(IDelegationManager.QueuedWithdrawalParams[] memory queuedWithdrawalParams) external returns (bytes32[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct queueWithdrawalsCall { + pub queuedWithdrawalParams: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`queueWithdrawals((address[],uint256[],address)[])`](queueWithdrawalsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct queueWithdrawalsReturn { + pub _0: alloy::sol_types::private::Vec>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: queueWithdrawalsCall) -> Self { + (value.queuedWithdrawalParams,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for queueWithdrawalsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + queuedWithdrawalParams: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: queueWithdrawalsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for queueWithdrawalsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for queueWithdrawalsCall { + type Parameters<'a> = + (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = queueWithdrawalsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "queueWithdrawals((address[],uint256[],address)[])"; + const SELECTOR: [u8; 4] = [13u8, 216u8, 221u8, 2u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( as alloy_sol_types::SolType>::tokenize( + &self.queuedWithdrawalParams, + ),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registerAsOperator((address,address,uint32),string)` and selector `0x0f589e59`. + ```solidity + function registerAsOperator(IDelegationManager.OperatorDetails memory registeringOperatorDetails, string memory metadataURI) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerAsOperatorCall { + pub registeringOperatorDetails: + ::RustType, + pub metadataURI: alloy::sol_types::private::String, + } + ///Container type for the return parameters of the [`registerAsOperator((address,address,uint32),string)`](registerAsOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerAsOperatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + IDelegationManager::OperatorDetails, + alloy::sol_types::sol_data::String, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::String, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerAsOperatorCall) -> Self { + (value.registeringOperatorDetails, value.metadataURI) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerAsOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + registeringOperatorDetails: tuple.0, + metadataURI: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerAsOperatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerAsOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registerAsOperatorCall { + type Parameters<'a> = ( + IDelegationManager::OperatorDetails, + alloy::sol_types::sol_data::String, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registerAsOperatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registerAsOperator((address,address,uint32),string)"; + const SELECTOR: [u8; 4] = [15u8, 88u8, 158u8, 89u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.registeringOperatorDetails, + ), + ::tokenize( + &self.metadataURI, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `renounceOwnership()` and selector `0x715018a6`. + ```solidity + function renounceOwnership() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct renounceOwnershipCall {} + ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct renounceOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for renounceOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for renounceOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for renounceOwnershipCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = renounceOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "renounceOwnership()"; + const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setMinWithdrawalDelayBlocks(uint256)` and selector `0x635bbd10`. + ```solidity + function setMinWithdrawalDelayBlocks(uint256 newMinWithdrawalDelayBlocks) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setMinWithdrawalDelayBlocksCall { + pub newMinWithdrawalDelayBlocks: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`setMinWithdrawalDelayBlocks(uint256)`](setMinWithdrawalDelayBlocksCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setMinWithdrawalDelayBlocksReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setMinWithdrawalDelayBlocksCall) -> Self { + (value.newMinWithdrawalDelayBlocks,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setMinWithdrawalDelayBlocksCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newMinWithdrawalDelayBlocks: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setMinWithdrawalDelayBlocksReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setMinWithdrawalDelayBlocksReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setMinWithdrawalDelayBlocksCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setMinWithdrawalDelayBlocksReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setMinWithdrawalDelayBlocks(uint256)"; + const SELECTOR: [u8; 4] = [99u8, 91u8, 189u8, 16u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newMinWithdrawalDelayBlocks, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setPauserRegistry(address)` and selector `0x10d67a2f`. + ```solidity + function setPauserRegistry(address newPauserRegistry) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setPauserRegistryCall { + pub newPauserRegistry: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setPauserRegistry(address)`](setPauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setPauserRegistryReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setPauserRegistryCall) -> Self { + (value.newPauserRegistry,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setPauserRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newPauserRegistry: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setPauserRegistryReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setPauserRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setPauserRegistryCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setPauserRegistryReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setPauserRegistry(address)"; + const SELECTOR: [u8; 4] = [16u8, 214u8, 122u8, 47u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newPauserRegistry, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setStrategyWithdrawalDelayBlocks(address[],uint256[])` and selector `0x1522bf02`. + ```solidity + function setStrategyWithdrawalDelayBlocks(address[] memory strategies, uint256[] memory withdrawalDelayBlocks) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setStrategyWithdrawalDelayBlocksCall { + pub strategies: alloy::sol_types::private::Vec, + pub withdrawalDelayBlocks: + alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`setStrategyWithdrawalDelayBlocks(address[],uint256[])`](setStrategyWithdrawalDelayBlocksCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setStrategyWithdrawalDelayBlocksReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setStrategyWithdrawalDelayBlocksCall) -> Self { + (value.strategies, value.withdrawalDelayBlocks) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setStrategyWithdrawalDelayBlocksCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategies: tuple.0, + withdrawalDelayBlocks: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setStrategyWithdrawalDelayBlocksReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setStrategyWithdrawalDelayBlocksReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setStrategyWithdrawalDelayBlocksCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setStrategyWithdrawalDelayBlocksReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setStrategyWithdrawalDelayBlocks(address[],uint256[])"; + const SELECTOR: [u8; 4] = [21u8, 34u8, 191u8, 2u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.strategies), + , + > as alloy_sol_types::SolType>::tokenize(&self.withdrawalDelayBlocks), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `slasher()` and selector `0xb1344271`. + ```solidity + function slasher() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct slasherCall {} + ///Container type for the return parameters of the [`slasher()`](slasherCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct slasherReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: slasherCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for slasherCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: slasherReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for slasherReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for slasherCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = slasherReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "slasher()"; + const SELECTOR: [u8; 4] = [177u8, 52u8, 66u8, 113u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `stakerNonce(address)` and selector `0x29c77d4f`. + ```solidity + function stakerNonce(address) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakerNonceCall { + pub _0: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`stakerNonce(address)`](stakerNonceCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakerNonceReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakerNonceCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakerNonceCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakerNonceReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakerNonceReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for stakerNonceCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = stakerNonceReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "stakerNonce(address)"; + const SELECTOR: [u8; 4] = [41u8, 199u8, 125u8, 79u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `stakerOptOutWindowBlocks(address)` and selector `0x16928365`. + ```solidity + function stakerOptOutWindowBlocks(address operator) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakerOptOutWindowBlocksCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`stakerOptOutWindowBlocks(address)`](stakerOptOutWindowBlocksCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakerOptOutWindowBlocksReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakerOptOutWindowBlocksCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakerOptOutWindowBlocksCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakerOptOutWindowBlocksReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakerOptOutWindowBlocksReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for stakerOptOutWindowBlocksCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = stakerOptOutWindowBlocksReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "stakerOptOutWindowBlocks(address)"; + const SELECTOR: [u8; 4] = [22u8, 146u8, 131u8, 101u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `strategyManager()` and selector `0x39b70e38`. + ```solidity + function strategyManager() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyManagerCall {} + ///Container type for the return parameters of the [`strategyManager()`](strategyManagerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyManagerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyManagerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyManagerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyManagerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for strategyManagerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = strategyManagerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "strategyManager()"; + const SELECTOR: [u8; 4] = [57u8, 183u8, 14u8, 56u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `strategyWithdrawalDelayBlocks(address)` and selector `0xc488375a`. + ```solidity + function strategyWithdrawalDelayBlocks(address) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyWithdrawalDelayBlocksCall { + pub _0: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`strategyWithdrawalDelayBlocks(address)`](strategyWithdrawalDelayBlocksCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyWithdrawalDelayBlocksReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyWithdrawalDelayBlocksCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyWithdrawalDelayBlocksCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyWithdrawalDelayBlocksReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyWithdrawalDelayBlocksReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for strategyWithdrawalDelayBlocksCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = strategyWithdrawalDelayBlocksReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "strategyWithdrawalDelayBlocks(address)"; + const SELECTOR: [u8; 4] = [196u8, 136u8, 55u8, 90u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. + ```solidity + function transferOwnership(address newOwner) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `undelegate(address)` and selector `0xda8be864`. + ```solidity + function undelegate(address staker) external returns (bytes32[] memory withdrawalRoots); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct undelegateCall { + pub staker: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`undelegate(address)`](undelegateCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct undelegateReturn { + pub withdrawalRoots: + alloy::sol_types::private::Vec>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: undelegateCall) -> Self { + (value.staker,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for undelegateCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { staker: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: undelegateReturn) -> Self { + (value.withdrawalRoots,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for undelegateReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + withdrawalRoots: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for undelegateCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = undelegateReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "undelegate(address)"; + const SELECTOR: [u8; 4] = [218u8, 139u8, 232u8, 100u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.staker, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `unpause(uint256)` and selector `0xfabc1cbc`. + ```solidity + function unpause(uint256 newPausedStatus) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct unpauseCall { + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`unpause(uint256)`](unpauseCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct unpauseReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: unpauseCall) -> Self { + (value.newPausedStatus,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for unpauseCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newPausedStatus: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: unpauseReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for unpauseReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for unpauseCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = unpauseReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "unpause(uint256)"; + const SELECTOR: [u8; 4] = [250u8, 188u8, 28u8, 188u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateOperatorMetadataURI(string)` and selector `0x99be81c8`. + ```solidity + function updateOperatorMetadataURI(string memory metadataURI) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorMetadataURICall { + pub metadataURI: alloy::sol_types::private::String, + } + ///Container type for the return parameters of the [`updateOperatorMetadataURI(string)`](updateOperatorMetadataURICall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorMetadataURIReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorMetadataURICall) -> Self { + (value.metadataURI,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorMetadataURICall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + metadataURI: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorMetadataURIReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorMetadataURIReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateOperatorMetadataURICall { + type Parameters<'a> = (alloy::sol_types::sol_data::String,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateOperatorMetadataURIReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateOperatorMetadataURI(string)"; + const SELECTOR: [u8; 4] = [153u8, 190u8, 129u8, 200u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.metadataURI, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`DelegationManager`](self) function calls. + pub enum DelegationManagerCalls { + DELEGATION_APPROVAL_TYPEHASH(DELEGATION_APPROVAL_TYPEHASHCall), + DOMAIN_TYPEHASH(DOMAIN_TYPEHASHCall), + MAX_STAKER_OPT_OUT_WINDOW_BLOCKS(MAX_STAKER_OPT_OUT_WINDOW_BLOCKSCall), + MAX_WITHDRAWAL_DELAY_BLOCKS(MAX_WITHDRAWAL_DELAY_BLOCKSCall), + STAKER_DELEGATION_TYPEHASH(STAKER_DELEGATION_TYPEHASHCall), + beaconChainETHStrategy(beaconChainETHStrategyCall), + calculateCurrentStakerDelegationDigestHash(calculateCurrentStakerDelegationDigestHashCall), + calculateDelegationApprovalDigestHash(calculateDelegationApprovalDigestHashCall), + calculateStakerDelegationDigestHash(calculateStakerDelegationDigestHashCall), + calculateWithdrawalRoot(calculateWithdrawalRootCall), + completeQueuedWithdrawal(completeQueuedWithdrawalCall), + completeQueuedWithdrawals(completeQueuedWithdrawalsCall), + cumulativeWithdrawalsQueued(cumulativeWithdrawalsQueuedCall), + decreaseDelegatedShares(decreaseDelegatedSharesCall), + delegateTo(delegateToCall), + delegateToBySignature(delegateToBySignatureCall), + delegatedTo(delegatedToCall), + delegationApprover(delegationApproverCall), + delegationApproverSaltIsSpent(delegationApproverSaltIsSpentCall), + domainSeparator(domainSeparatorCall), + eigenPodManager(eigenPodManagerCall), + getDelegatableShares(getDelegatableSharesCall), + getOperatorShares(getOperatorSharesCall), + getWithdrawalDelay(getWithdrawalDelayCall), + increaseDelegatedShares(increaseDelegatedSharesCall), + initialize(initializeCall), + isDelegated(isDelegatedCall), + isOperator(isOperatorCall), + minWithdrawalDelayBlocks(minWithdrawalDelayBlocksCall), + modifyOperatorDetails(modifyOperatorDetailsCall), + operatorDetails(operatorDetailsCall), + operatorShares(operatorSharesCall), + owner(ownerCall), + pause(pauseCall), + pauseAll(pauseAllCall), + paused_0(paused_0Call), + paused_1(paused_1Call), + pauserRegistry(pauserRegistryCall), + pendingWithdrawals(pendingWithdrawalsCall), + queueWithdrawals(queueWithdrawalsCall), + registerAsOperator(registerAsOperatorCall), + renounceOwnership(renounceOwnershipCall), + setMinWithdrawalDelayBlocks(setMinWithdrawalDelayBlocksCall), + setPauserRegistry(setPauserRegistryCall), + setStrategyWithdrawalDelayBlocks(setStrategyWithdrawalDelayBlocksCall), + slasher(slasherCall), + stakerNonce(stakerNonceCall), + stakerOptOutWindowBlocks(stakerOptOutWindowBlocksCall), + strategyManager(strategyManagerCall), + strategyWithdrawalDelayBlocks(strategyWithdrawalDelayBlocksCall), + transferOwnership(transferOwnershipCall), + undelegate(undelegateCall), + unpause(unpauseCall), + updateOperatorMetadataURI(updateOperatorMetadataURICall), + } + #[automatically_derived] + impl DelegationManagerCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [4u8, 73u8, 202u8, 57u8], + [4u8, 164u8, 249u8, 121u8], + [11u8, 159u8, 72u8, 122u8], + [13u8, 216u8, 221u8, 2u8], + [15u8, 88u8, 158u8, 89u8], + [16u8, 214u8, 122u8, 47u8], + [19u8, 45u8, 73u8, 103u8], + [19u8, 100u8, 57u8, 221u8], + [21u8, 34u8, 191u8, 2u8], + [22u8, 146u8, 131u8, 101u8], + [27u8, 188u8, 224u8, 145u8], + [32u8, 96u8, 107u8, 112u8], + [34u8, 191u8, 64u8, 228u8], + [40u8, 165u8, 115u8, 174u8], + [41u8, 199u8, 125u8, 79u8], + [51u8, 64u8, 67u8, 150u8], + [57u8, 183u8, 14u8, 56u8], + [60u8, 222u8, 181u8, 224u8], + [62u8, 40u8, 57u8, 29u8], + [67u8, 55u8, 115u8, 130u8], + [70u8, 101u8, 188u8, 218u8], + [79u8, 196u8, 11u8, 97u8], + [89u8, 92u8, 106u8, 103u8], + [89u8, 123u8, 54u8, 218u8], + [90u8, 200u8, 106u8, 183u8], + [92u8, 151u8, 90u8, 187u8], + [96u8, 215u8, 250u8, 237u8], + [99u8, 91u8, 189u8, 16u8], + [101u8, 218u8, 18u8, 100u8], + [109u8, 112u8, 247u8, 174u8], + [113u8, 80u8, 24u8, 166u8], + [119u8, 142u8, 85u8, 243u8], + [127u8, 84u8, 128u8, 113u8], + [136u8, 111u8, 17u8, 149u8], + [141u8, 165u8, 203u8, 91u8], + [144u8, 4u8, 19u8, 71u8], + [145u8, 4u8, 195u8, 25u8], + [153u8, 190u8, 129u8, 200u8], + [161u8, 120u8, 132u8, 132u8], + [177u8, 52u8, 66u8, 113u8], + [183u8, 240u8, 110u8, 190u8], + [187u8, 69u8, 254u8, 242u8], + [196u8, 72u8, 254u8, 184u8], + [196u8, 136u8, 55u8, 90u8], + [197u8, 228u8, 128u8, 219u8], + [201u8, 75u8, 81u8, 17u8], + [202u8, 102u8, 28u8, 4u8], + [207u8, 128u8, 135u8, 62u8], + [218u8, 139u8, 232u8, 100u8], + [238u8, 169u8, 6u8, 75u8], + [241u8, 97u8, 114u8, 176u8], + [242u8, 253u8, 227u8, 139u8], + [246u8, 152u8, 218u8, 37u8], + [250u8, 188u8, 28u8, 188u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for DelegationManagerCalls { + const NAME: &'static str = "DelegationManagerCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 54usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::DELEGATION_APPROVAL_TYPEHASH(_) => { + ::SELECTOR + } + Self::DOMAIN_TYPEHASH(_) => { + ::SELECTOR + } + Self::MAX_STAKER_OPT_OUT_WINDOW_BLOCKS(_) => { + ::SELECTOR + } + Self::MAX_WITHDRAWAL_DELAY_BLOCKS(_) => { + ::SELECTOR + } + Self::STAKER_DELEGATION_TYPEHASH(_) => { + ::SELECTOR + } + Self::beaconChainETHStrategy(_) => { + ::SELECTOR + } + Self::calculateCurrentStakerDelegationDigestHash(_) => { + ::SELECTOR + } + Self::calculateDelegationApprovalDigestHash(_) => { + ::SELECTOR + } + Self::calculateStakerDelegationDigestHash(_) => { + ::SELECTOR + } + Self::calculateWithdrawalRoot(_) => { + ::SELECTOR + } + Self::completeQueuedWithdrawal(_) => { + ::SELECTOR + } + Self::completeQueuedWithdrawals(_) => { + ::SELECTOR + } + Self::cumulativeWithdrawalsQueued(_) => { + ::SELECTOR + } + Self::decreaseDelegatedShares(_) => { + ::SELECTOR + } + Self::delegateTo(_) => { + ::SELECTOR + } + Self::delegateToBySignature(_) => { + ::SELECTOR + } + Self::delegatedTo(_) => { + ::SELECTOR + } + Self::delegationApprover(_) => { + ::SELECTOR + } + Self::delegationApproverSaltIsSpent(_) => { + ::SELECTOR + } + Self::domainSeparator(_) => { + ::SELECTOR + } + Self::eigenPodManager(_) => { + ::SELECTOR + } + Self::getDelegatableShares(_) => { + ::SELECTOR + } + Self::getOperatorShares(_) => { + ::SELECTOR + } + Self::getWithdrawalDelay(_) => { + ::SELECTOR + } + Self::increaseDelegatedShares(_) => { + ::SELECTOR + } + Self::initialize(_) => { + ::SELECTOR + } + Self::isDelegated(_) => { + ::SELECTOR + } + Self::isOperator(_) => { + ::SELECTOR + } + Self::minWithdrawalDelayBlocks(_) => { + ::SELECTOR + } + Self::modifyOperatorDetails(_) => { + ::SELECTOR + } + Self::operatorDetails(_) => { + ::SELECTOR + } + Self::operatorShares(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::pause(_) => ::SELECTOR, + Self::pauseAll(_) => ::SELECTOR, + Self::paused_0(_) => ::SELECTOR, + Self::paused_1(_) => ::SELECTOR, + Self::pauserRegistry(_) => { + ::SELECTOR + } + Self::pendingWithdrawals(_) => { + ::SELECTOR + } + Self::queueWithdrawals(_) => { + ::SELECTOR + } + Self::registerAsOperator(_) => { + ::SELECTOR + } + Self::renounceOwnership(_) => { + ::SELECTOR + } + Self::setMinWithdrawalDelayBlocks(_) => { + ::SELECTOR + } + Self::setPauserRegistry(_) => { + ::SELECTOR + } + Self::setStrategyWithdrawalDelayBlocks(_) => { + ::SELECTOR + } + Self::slasher(_) => ::SELECTOR, + Self::stakerNonce(_) => { + ::SELECTOR + } + Self::stakerOptOutWindowBlocks(_) => { + ::SELECTOR + } + Self::strategyManager(_) => { + ::SELECTOR + } + Self::strategyWithdrawalDelayBlocks(_) => { + ::SELECTOR + } + Self::transferOwnership(_) => { + ::SELECTOR + } + Self::undelegate(_) => { + ::SELECTOR + } + Self::unpause(_) => ::SELECTOR, + Self::updateOperatorMetadataURI(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn getWithdrawalDelay( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerCalls::getWithdrawalDelay) + } + getWithdrawalDelay + }, + { + fn DELEGATION_APPROVAL_TYPEHASH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DelegationManagerCalls::DELEGATION_APPROVAL_TYPEHASH) + } + DELEGATION_APPROVAL_TYPEHASH + }, + { + fn calculateDelegationApprovalDigestHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + DelegationManagerCalls::calculateDelegationApprovalDigestHash, + ) + } + calculateDelegationApprovalDigestHash + }, + { + fn queueWithdrawals( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerCalls::queueWithdrawals) + } + queueWithdrawals + }, + { + fn registerAsOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerCalls::registerAsOperator) + } + registerAsOperator + }, + { + fn setPauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerCalls::setPauserRegistry) + } + setPauserRegistry + }, + { + fn decreaseDelegatedShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerCalls::decreaseDelegatedShares) + } + decreaseDelegatedShares + }, + { + fn pause( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(DelegationManagerCalls::pause) + } + pause + }, + { + fn setStrategyWithdrawalDelayBlocks( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + DelegationManagerCalls::setStrategyWithdrawalDelayBlocks, + ) + } + setStrategyWithdrawalDelayBlocks + }, + { + fn stakerOptOutWindowBlocks( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerCalls::stakerOptOutWindowBlocks) + } + stakerOptOutWindowBlocks + }, + { + fn calculateCurrentStakerDelegationDigestHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + DelegationManagerCalls::calculateCurrentStakerDelegationDigestHash, + ) + } + calculateCurrentStakerDelegationDigestHash + }, + { + fn DOMAIN_TYPEHASH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerCalls::DOMAIN_TYPEHASH) + } + DOMAIN_TYPEHASH + }, + { + fn initialize( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(DelegationManagerCalls::initialize) + } + initialize + }, + { + fn increaseDelegatedShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerCalls::increaseDelegatedShares) + } + increaseDelegatedShares + }, + { + fn stakerNonce( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerCalls::stakerNonce) + } + stakerNonce + }, + { + fn completeQueuedWithdrawals( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerCalls::completeQueuedWithdrawals) + } + completeQueuedWithdrawals + }, + { + fn strategyManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerCalls::strategyManager) + } + strategyManager + }, + { + fn delegationApprover( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerCalls::delegationApprover) + } + delegationApprover + }, + { + fn isDelegated( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerCalls::isDelegated) + } + isDelegated + }, + { + fn STAKER_DELEGATION_TYPEHASH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DelegationManagerCalls::STAKER_DELEGATION_TYPEHASH) + } + STAKER_DELEGATION_TYPEHASH + }, + { + fn eigenPodManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerCalls::eigenPodManager) + } + eigenPodManager + }, + { + fn MAX_STAKER_OPT_OUT_WINDOW_BLOCKS( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + DelegationManagerCalls::MAX_STAKER_OPT_OUT_WINDOW_BLOCKS, + ) + } + MAX_STAKER_OPT_OUT_WINDOW_BLOCKS + }, + { + fn pauseAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(DelegationManagerCalls::pauseAll) + } + pauseAll + }, + { + fn calculateWithdrawalRoot( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerCalls::calculateWithdrawalRoot) + } + calculateWithdrawalRoot + }, + { + fn paused_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(DelegationManagerCalls::paused_0) + } + paused_0 + }, + { + fn paused_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(DelegationManagerCalls::paused_1) + } + paused_1 + }, + { + fn completeQueuedWithdrawal( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerCalls::completeQueuedWithdrawal) + } + completeQueuedWithdrawal + }, + { + fn setMinWithdrawalDelayBlocks( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DelegationManagerCalls::setMinWithdrawalDelayBlocks) + } + setMinWithdrawalDelayBlocks + }, + { + fn delegatedTo( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerCalls::delegatedTo) + } + delegatedTo + }, + { + fn isOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(DelegationManagerCalls::isOperator) + } + isOperator + }, + { + fn renounceOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerCalls::renounceOwnership) + } + renounceOwnership + }, + { + fn operatorShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerCalls::operatorShares) + } + operatorShares + }, + { + fn delegateToBySignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerCalls::delegateToBySignature) + } + delegateToBySignature + }, + { + fn pauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerCalls::pauserRegistry) + } + pauserRegistry + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(DelegationManagerCalls::owner) + } + owner + }, + { + fn getOperatorShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerCalls::getOperatorShares) + } + getOperatorShares + }, + { + fn beaconChainETHStrategy( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerCalls::beaconChainETHStrategy) + } + beaconChainETHStrategy + }, + { + fn updateOperatorMetadataURI( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerCalls::updateOperatorMetadataURI) + } + updateOperatorMetadataURI + }, + { + fn cumulativeWithdrawalsQueued( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DelegationManagerCalls::cumulativeWithdrawalsQueued) + } + cumulativeWithdrawalsQueued + }, + { + fn slasher( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(DelegationManagerCalls::slasher) + } + slasher + }, + { + fn pendingWithdrawals( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerCalls::pendingWithdrawals) + } + pendingWithdrawals + }, + { + fn delegationApproverSaltIsSpent( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DelegationManagerCalls::delegationApproverSaltIsSpent) + } + delegationApproverSaltIsSpent + }, + { + fn minWithdrawalDelayBlocks( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerCalls::minWithdrawalDelayBlocks) + } + minWithdrawalDelayBlocks + }, + { + fn strategyWithdrawalDelayBlocks( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DelegationManagerCalls::strategyWithdrawalDelayBlocks) + } + strategyWithdrawalDelayBlocks + }, + { + fn operatorDetails( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerCalls::operatorDetails) + } + operatorDetails + }, + { + fn calculateStakerDelegationDigestHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + DelegationManagerCalls::calculateStakerDelegationDigestHash, + ) + } + calculateStakerDelegationDigestHash + }, + { + fn MAX_WITHDRAWAL_DELAY_BLOCKS( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DelegationManagerCalls::MAX_WITHDRAWAL_DELAY_BLOCKS) + } + MAX_WITHDRAWAL_DELAY_BLOCKS + }, + { + fn getDelegatableShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerCalls::getDelegatableShares) + } + getDelegatableShares + }, + { + fn undelegate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(DelegationManagerCalls::undelegate) + } + undelegate + }, + { + fn delegateTo( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(DelegationManagerCalls::delegateTo) + } + delegateTo + }, + { + fn modifyOperatorDetails( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerCalls::modifyOperatorDetails) + } + modifyOperatorDetails + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerCalls::transferOwnership) + } + transferOwnership + }, + { + fn domainSeparator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DelegationManagerCalls::domainSeparator) + } + domainSeparator + }, + { + fn unpause( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(DelegationManagerCalls::unpause) + } + unpause + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::DELEGATION_APPROVAL_TYPEHASH(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::DOMAIN_TYPEHASH(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::MAX_STAKER_OPT_OUT_WINDOW_BLOCKS(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::MAX_WITHDRAWAL_DELAY_BLOCKS(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::STAKER_DELEGATION_TYPEHASH(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::beaconChainETHStrategy(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::calculateCurrentStakerDelegationDigestHash(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::calculateDelegationApprovalDigestHash(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::calculateStakerDelegationDigestHash(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::calculateWithdrawalRoot(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::completeQueuedWithdrawal(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::completeQueuedWithdrawals(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::cumulativeWithdrawalsQueued(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::decreaseDelegatedShares(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::delegateTo(inner) => { + ::abi_encoded_size(inner) + } + Self::delegateToBySignature(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::delegatedTo(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::delegationApprover(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::delegationApproverSaltIsSpent(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::domainSeparator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::eigenPodManager(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getDelegatableShares(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorShares(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getWithdrawalDelay(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::increaseDelegatedShares(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::initialize(inner) => { + ::abi_encoded_size(inner) + } + Self::isDelegated(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::isOperator(inner) => { + ::abi_encoded_size(inner) + } + Self::minWithdrawalDelayBlocks(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::modifyOperatorDetails(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::operatorDetails(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::operatorShares(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::pause(inner) => { + ::abi_encoded_size(inner) + } + Self::pauseAll(inner) => { + ::abi_encoded_size(inner) + } + Self::paused_0(inner) => { + ::abi_encoded_size(inner) + } + Self::paused_1(inner) => { + ::abi_encoded_size(inner) + } + Self::pauserRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::pendingWithdrawals(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::queueWithdrawals(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registerAsOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::renounceOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setMinWithdrawalDelayBlocks(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setPauserRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setStrategyWithdrawalDelayBlocks(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::slasher(inner) => { + ::abi_encoded_size(inner) + } + Self::stakerNonce(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::stakerOptOutWindowBlocks(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::strategyManager(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::strategyWithdrawalDelayBlocks(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::undelegate(inner) => { + ::abi_encoded_size(inner) + } + Self::unpause(inner) => { + ::abi_encoded_size(inner) + } + Self::updateOperatorMetadataURI(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::DELEGATION_APPROVAL_TYPEHASH(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::DOMAIN_TYPEHASH(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::MAX_STAKER_OPT_OUT_WINDOW_BLOCKS(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::MAX_WITHDRAWAL_DELAY_BLOCKS(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::STAKER_DELEGATION_TYPEHASH(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::beaconChainETHStrategy(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::calculateCurrentStakerDelegationDigestHash(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::calculateDelegationApprovalDigestHash(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::calculateStakerDelegationDigestHash(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::calculateWithdrawalRoot(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::completeQueuedWithdrawal(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::completeQueuedWithdrawals(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::cumulativeWithdrawalsQueued(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::decreaseDelegatedShares(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::delegateTo(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::delegateToBySignature(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::delegatedTo(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::delegationApprover(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::delegationApproverSaltIsSpent(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::domainSeparator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::eigenPodManager(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getDelegatableShares(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperatorShares(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getWithdrawalDelay(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::increaseDelegatedShares(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::initialize(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::isDelegated(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::isOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::minWithdrawalDelayBlocks(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::modifyOperatorDetails(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::operatorDetails(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::operatorShares(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::pause(inner) => { + ::abi_encode_raw(inner, out) + } + Self::pauseAll(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::paused_0(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::paused_1(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::pauserRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::pendingWithdrawals(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::queueWithdrawals(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registerAsOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::renounceOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setMinWithdrawalDelayBlocks(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setPauserRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setStrategyWithdrawalDelayBlocks(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::slasher(inner) => { + ::abi_encode_raw(inner, out) + } + Self::stakerNonce(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::stakerOptOutWindowBlocks(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::strategyManager(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::strategyWithdrawalDelayBlocks(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::undelegate(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::unpause(inner) => { + ::abi_encode_raw(inner, out) + } + Self::updateOperatorMetadataURI(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`DelegationManager`](self) events. + pub enum DelegationManagerEvents { + Initialized(Initialized), + MinWithdrawalDelayBlocksSet(MinWithdrawalDelayBlocksSet), + OperatorDetailsModified(OperatorDetailsModified), + OperatorMetadataURIUpdated(OperatorMetadataURIUpdated), + OperatorRegistered(OperatorRegistered), + OperatorSharesDecreased(OperatorSharesDecreased), + OperatorSharesIncreased(OperatorSharesIncreased), + OwnershipTransferred(OwnershipTransferred), + Paused(Paused), + PauserRegistrySet(PauserRegistrySet), + StakerDelegated(StakerDelegated), + StakerForceUndelegated(StakerForceUndelegated), + StakerUndelegated(StakerUndelegated), + StrategyWithdrawalDelayBlocksSet(StrategyWithdrawalDelayBlocksSet), + Unpaused(Unpaused), + WithdrawalCompleted(WithdrawalCompleted), + WithdrawalQueued(WithdrawalQueued), + } + #[automatically_derived] + impl DelegationManagerEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 2u8, 169u8, 25u8, 237u8, 14u8, 42u8, 202u8, 209u8, 221u8, 144u8, 241u8, 126u8, + 242u8, 250u8, 74u8, 229u8, 70u8, 46u8, 225u8, 51u8, 145u8, 112u8, 3u8, 74u8, 133u8, + 49u8, 204u8, 164u8, 182u8, 112u8, 128u8, 144u8, + ], + [ + 14u8, 126u8, 250u8, 115u8, 142u8, 139u8, 12u8, 230u8, 55u8, 106u8, 12u8, 26u8, + 244u8, 113u8, 101u8, 85u8, 64u8, 210u8, 233u8, 168u8, 22u8, 71u8, 215u8, 176u8, + 158u8, 216u8, 35u8, 1u8, 132u8, 38u8, 87u8, 109u8, + ], + [ + 30u8, 192u8, 66u8, 201u8, 101u8, 226u8, 237u8, 215u8, 16u8, 123u8, 81u8, 24u8, + 142u8, 224u8, 243u8, 131u8, 226u8, 46u8, 118u8, 23u8, 144u8, 65u8, 171u8, 58u8, + 157u8, 24u8, 255u8, 21u8, 20u8, 5u8, 22u8, 108u8, + ], + [ + 53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8, 2u8, + 188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8, 228u8, 152u8, + 107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8, + ], + [ + 105u8, 9u8, 96u8, 0u8, 55u8, 183u8, 93u8, 123u8, 71u8, 51u8, 174u8, 221u8, 129u8, + 84u8, 66u8, 181u8, 236u8, 1u8, 138u8, 130u8, 119u8, 81u8, 200u8, 50u8, 170u8, + 255u8, 100u8, 235u8, 165u8, 214u8, 210u8, 221u8, + ], + [ + 110u8, 159u8, 205u8, 83u8, 152u8, 150u8, 252u8, 166u8, 14u8, 139u8, 15u8, 1u8, + 221u8, 88u8, 2u8, 51u8, 228u8, 138u8, 107u8, 15u8, 125u8, 240u8, 19u8, 184u8, + 155u8, 167u8, 245u8, 101u8, 134u8, 154u8, 205u8, 182u8, + ], + [ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, 56u8, + 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, 96u8, + 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ], + [ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, 208u8, + 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, 175u8, 227u8, + 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ], + [ + 142u8, 132u8, 133u8, 88u8, 58u8, 35u8, 16u8, 212u8, 31u8, 124u8, 130u8, 185u8, + 66u8, 125u8, 11u8, 212u8, 155u8, 173u8, 116u8, 187u8, 156u8, 255u8, 157u8, 52u8, + 2u8, 162u8, 157u8, 143u8, 155u8, 40u8, 160u8, 226u8, + ], + [ + 144u8, 9u8, 171u8, 21u8, 62u8, 128u8, 20u8, 251u8, 251u8, 2u8, 242u8, 33u8, 127u8, + 92u8, 222u8, 122u8, 167u8, 249u8, 173u8, 115u8, 74u8, 232u8, 92u8, 163u8, 238u8, + 63u8, 76u8, 162u8, 253u8, 212u8, 153u8, 249u8, + ], + [ + 171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8, 188u8, + 152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8, 11u8, 182u8, + 224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8, + ], + [ + 175u8, 160u8, 3u8, 205u8, 118u8, 248u8, 127u8, 249u8, 214u8, 43u8, 53u8, 190u8, + 234u8, 136u8, 153u8, 32u8, 243u8, 60u8, 12u8, 66u8, 184u8, 212u8, 91u8, 116u8, + 149u8, 77u8, 97u8, 213u8, 15u8, 75u8, 107u8, 105u8, + ], + [ + 195u8, 238u8, 159u8, 46u8, 95u8, 218u8, 152u8, 232u8, 6u8, 106u8, 31u8, 116u8, + 91u8, 45u8, 249u8, 40u8, 95u8, 65u8, 111u8, 233u8, 140u8, 242u8, 85u8, 156u8, + 210u8, 20u8, 132u8, 179u8, 216u8, 116u8, 51u8, 4u8, + ], + [ + 201u8, 112u8, 152u8, 194u8, 246u8, 88u8, 128u8, 11u8, 77u8, 242u8, 144u8, 1u8, + 82u8, 127u8, 115u8, 36u8, 188u8, 223u8, 252u8, 246u8, 232u8, 117u8, 26u8, 105u8, + 154u8, 185u8, 32u8, 161u8, 236u8, 237u8, 91u8, 29u8, + ], + [ + 240u8, 237u8, 223u8, 7u8, 230u8, 234u8, 20u8, 243u8, 136u8, 180u8, 126u8, 30u8, + 148u8, 160u8, 244u8, 100u8, 236u8, 189u8, 158u8, 237u8, 65u8, 113u8, 19u8, 14u8, + 15u8, 192u8, 233u8, 159u8, 180u8, 3u8, 10u8, 138u8, + ], + [ + 254u8, 190u8, 92u8, 210u8, 75u8, 44u8, 188u8, 123u8, 6u8, 91u8, 157u8, 15u8, 222u8, + 185u8, 4u8, 70u8, 30u8, 74u8, 252u8, 255u8, 87u8, 221u8, 87u8, 172u8, 218u8, 30u8, + 120u8, 50u8, 3u8, 27u8, 167u8, 172u8, + ], + [ + 254u8, 227u8, 9u8, 102u8, 162u8, 86u8, 183u8, 30u8, 20u8, 188u8, 14u8, 191u8, + 201u8, 67u8, 21u8, 226u8, 142u8, 244u8, 169u8, 122u8, 113u8, 49u8, 169u8, 226u8, + 183u8, 163u8, 16u8, 167u8, 58u8, 244u8, 70u8, 118u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for DelegationManagerEvents { + const NAME: &'static str = "DelegationManagerEvents"; + const COUNT: usize = 17usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::Initialized) + } + Some( + ::SIGNATURE_HASH, + ) => ::decode_raw_log( + topics, data, validate, + ) + .map(Self::MinWithdrawalDelayBlocksSet), + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorDetailsModified) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorMetadataURIUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorRegistered) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorSharesDecreased) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorSharesIncreased) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OwnershipTransferred) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::Paused) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::PauserRegistrySet) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::StakerDelegated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::StakerForceUndelegated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::StakerUndelegated) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::StrategyWithdrawalDelayBlocksSet) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::Unpaused) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::WithdrawalCompleted) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::WithdrawalQueued) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for DelegationManagerEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::MinWithdrawalDelayBlocksSet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorDetailsModified(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorMetadataURIUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorRegistered(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorSharesDecreased(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorSharesIncreased(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Paused(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::PauserRegistrySet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::StakerDelegated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::StakerForceUndelegated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::StakerUndelegated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::StrategyWithdrawalDelayBlocksSet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Unpaused(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::WithdrawalCompleted(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::WithdrawalQueued(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::MinWithdrawalDelayBlocksSet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorDetailsModified(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorMetadataURIUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorRegistered(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorSharesDecreased(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorSharesIncreased(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Paused(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::PauserRegistrySet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::StakerDelegated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::StakerForceUndelegated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::StakerUndelegated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::StrategyWithdrawalDelayBlocksSet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Unpaused(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::WithdrawalCompleted(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::WithdrawalQueued(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`DelegationManager`](self) contract instance. + + See the [wrapper's documentation](`DelegationManagerInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> DelegationManagerInstance { + DelegationManagerInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _strategyManager: alloy::sol_types::private::Address, + _slasher: alloy::sol_types::private::Address, + _eigenPodManager: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future>> + { + DelegationManagerInstance::::deploy( + provider, + _strategyManager, + _slasher, + _eigenPodManager, + ) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _strategyManager: alloy::sol_types::private::Address, + _slasher: alloy::sol_types::private::Address, + _eigenPodManager: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + DelegationManagerInstance::::deploy_builder( + provider, + _strategyManager, + _slasher, + _eigenPodManager, + ) + } + /**A [`DelegationManager`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`DelegationManager`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct DelegationManagerInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for DelegationManagerInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("DelegationManagerInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DelegationManagerInstance + { + /**Creates a new wrapper around an on-chain [`DelegationManager`](self) contract instance. + + See the [wrapper's documentation](`DelegationManagerInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _strategyManager: alloy::sol_types::private::Address, + _slasher: alloy::sol_types::private::Address, + _eigenPodManager: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = + Self::deploy_builder(provider, _strategyManager, _slasher, _eigenPodManager); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _strategyManager: alloy::sol_types::private::Address, + _slasher: alloy::sol_types::private::Address, + _eigenPodManager: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode(&constructorCall { + _strategyManager, + _slasher, + _eigenPodManager, + })[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl DelegationManagerInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> DelegationManagerInstance { + DelegationManagerInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DelegationManagerInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`DELEGATION_APPROVAL_TYPEHASH`] function. + pub fn DELEGATION_APPROVAL_TYPEHASH( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&DELEGATION_APPROVAL_TYPEHASHCall {}) + } + ///Creates a new call builder for the [`DOMAIN_TYPEHASH`] function. + pub fn DOMAIN_TYPEHASH( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&DOMAIN_TYPEHASHCall {}) + } + ///Creates a new call builder for the [`MAX_STAKER_OPT_OUT_WINDOW_BLOCKS`] function. + pub fn MAX_STAKER_OPT_OUT_WINDOW_BLOCKS( + &self, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&MAX_STAKER_OPT_OUT_WINDOW_BLOCKSCall {}) + } + ///Creates a new call builder for the [`MAX_WITHDRAWAL_DELAY_BLOCKS`] function. + pub fn MAX_WITHDRAWAL_DELAY_BLOCKS( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&MAX_WITHDRAWAL_DELAY_BLOCKSCall {}) + } + ///Creates a new call builder for the [`STAKER_DELEGATION_TYPEHASH`] function. + pub fn STAKER_DELEGATION_TYPEHASH( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&STAKER_DELEGATION_TYPEHASHCall {}) + } + ///Creates a new call builder for the [`beaconChainETHStrategy`] function. + pub fn beaconChainETHStrategy( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&beaconChainETHStrategyCall {}) + } + ///Creates a new call builder for the [`calculateCurrentStakerDelegationDigestHash`] function. + pub fn calculateCurrentStakerDelegationDigestHash( + &self, + staker: alloy::sol_types::private::Address, + operator: alloy::sol_types::private::Address, + expiry: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&calculateCurrentStakerDelegationDigestHashCall { + staker, + operator, + expiry, + }) + } + ///Creates a new call builder for the [`calculateDelegationApprovalDigestHash`] function. + pub fn calculateDelegationApprovalDigestHash( + &self, + staker: alloy::sol_types::private::Address, + operator: alloy::sol_types::private::Address, + _delegationApprover: alloy::sol_types::private::Address, + approverSalt: alloy::sol_types::private::FixedBytes<32>, + expiry: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&calculateDelegationApprovalDigestHashCall { + staker, + operator, + _delegationApprover, + approverSalt, + expiry, + }) + } + ///Creates a new call builder for the [`calculateStakerDelegationDigestHash`] function. + pub fn calculateStakerDelegationDigestHash( + &self, + staker: alloy::sol_types::private::Address, + _stakerNonce: alloy::sol_types::private::primitives::aliases::U256, + operator: alloy::sol_types::private::Address, + expiry: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&calculateStakerDelegationDigestHashCall { + staker, + _stakerNonce, + operator, + expiry, + }) + } + ///Creates a new call builder for the [`calculateWithdrawalRoot`] function. + pub fn calculateWithdrawalRoot( + &self, + withdrawal: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&calculateWithdrawalRootCall { withdrawal }) + } + ///Creates a new call builder for the [`completeQueuedWithdrawal`] function. + pub fn completeQueuedWithdrawal( + &self, + withdrawal: ::RustType, + tokens: alloy::sol_types::private::Vec, + middlewareTimesIndex: alloy::sol_types::private::primitives::aliases::U256, + receiveAsTokens: bool, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&completeQueuedWithdrawalCall { + withdrawal, + tokens, + middlewareTimesIndex, + receiveAsTokens, + }) + } + ///Creates a new call builder for the [`completeQueuedWithdrawals`] function. + pub fn completeQueuedWithdrawals( + &self, + withdrawals: alloy::sol_types::private::Vec< + ::RustType, + >, + tokens: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec, + >, + middlewareTimesIndexes: alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + receiveAsTokens: alloy::sol_types::private::Vec, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&completeQueuedWithdrawalsCall { + withdrawals, + tokens, + middlewareTimesIndexes, + receiveAsTokens, + }) + } + ///Creates a new call builder for the [`cumulativeWithdrawalsQueued`] function. + pub fn cumulativeWithdrawalsQueued( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&cumulativeWithdrawalsQueuedCall { _0 }) + } + ///Creates a new call builder for the [`decreaseDelegatedShares`] function. + pub fn decreaseDelegatedShares( + &self, + staker: alloy::sol_types::private::Address, + strategy: alloy::sol_types::private::Address, + shares: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&decreaseDelegatedSharesCall { + staker, + strategy, + shares, + }) + } + ///Creates a new call builder for the [`delegateTo`] function. + pub fn delegateTo( + &self, + operator: alloy::sol_types::private::Address, + approverSignatureAndExpiry: ::RustType, + approverSalt: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&delegateToCall { + operator, + approverSignatureAndExpiry, + approverSalt, + }) + } + ///Creates a new call builder for the [`delegateToBySignature`] function. + pub fn delegateToBySignature( + &self, + staker: alloy::sol_types::private::Address, + operator: alloy::sol_types::private::Address, + stakerSignatureAndExpiry: ::RustType, + approverSignatureAndExpiry: ::RustType, + approverSalt: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&delegateToBySignatureCall { + staker, + operator, + stakerSignatureAndExpiry, + approverSignatureAndExpiry, + approverSalt, + }) + } + ///Creates a new call builder for the [`delegatedTo`] function. + pub fn delegatedTo( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&delegatedToCall { _0 }) + } + ///Creates a new call builder for the [`delegationApprover`] function. + pub fn delegationApprover( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&delegationApproverCall { operator }) + } + ///Creates a new call builder for the [`delegationApproverSaltIsSpent`] function. + pub fn delegationApproverSaltIsSpent( + &self, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&delegationApproverSaltIsSpentCall { _0, _1 }) + } + ///Creates a new call builder for the [`domainSeparator`] function. + pub fn domainSeparator( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&domainSeparatorCall {}) + } + ///Creates a new call builder for the [`eigenPodManager`] function. + pub fn eigenPodManager( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&eigenPodManagerCall {}) + } + ///Creates a new call builder for the [`getDelegatableShares`] function. + pub fn getDelegatableShares( + &self, + staker: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getDelegatableSharesCall { staker }) + } + ///Creates a new call builder for the [`getOperatorShares`] function. + pub fn getOperatorShares( + &self, + operator: alloy::sol_types::private::Address, + strategies: alloy::sol_types::private::Vec, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorSharesCall { + operator, + strategies, + }) + } + ///Creates a new call builder for the [`getWithdrawalDelay`] function. + pub fn getWithdrawalDelay( + &self, + strategies: alloy::sol_types::private::Vec, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getWithdrawalDelayCall { strategies }) + } + ///Creates a new call builder for the [`increaseDelegatedShares`] function. + pub fn increaseDelegatedShares( + &self, + staker: alloy::sol_types::private::Address, + strategy: alloy::sol_types::private::Address, + shares: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&increaseDelegatedSharesCall { + staker, + strategy, + shares, + }) + } + ///Creates a new call builder for the [`initialize`] function. + pub fn initialize( + &self, + initialOwner: alloy::sol_types::private::Address, + _pauserRegistry: alloy::sol_types::private::Address, + initialPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + _minWithdrawalDelayBlocks: alloy::sol_types::private::primitives::aliases::U256, + _strategies: alloy::sol_types::private::Vec, + _withdrawalDelayBlocks: alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initializeCall { + initialOwner, + _pauserRegistry, + initialPausedStatus, + _minWithdrawalDelayBlocks, + _strategies, + _withdrawalDelayBlocks, + }) + } + ///Creates a new call builder for the [`isDelegated`] function. + pub fn isDelegated( + &self, + staker: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&isDelegatedCall { staker }) + } + ///Creates a new call builder for the [`isOperator`] function. + pub fn isOperator( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&isOperatorCall { operator }) + } + ///Creates a new call builder for the [`minWithdrawalDelayBlocks`] function. + pub fn minWithdrawalDelayBlocks( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&minWithdrawalDelayBlocksCall {}) + } + ///Creates a new call builder for the [`modifyOperatorDetails`] function. + pub fn modifyOperatorDetails( + &self, + newOperatorDetails: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&modifyOperatorDetailsCall { newOperatorDetails }) + } + ///Creates a new call builder for the [`operatorDetails`] function. + pub fn operatorDetails( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&operatorDetailsCall { operator }) + } + ///Creates a new call builder for the [`operatorShares`] function. + pub fn operatorShares( + &self, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&operatorSharesCall { _0, _1 }) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`pause`] function. + pub fn pause( + &self, + newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&pauseCall { newPausedStatus }) + } + ///Creates a new call builder for the [`pauseAll`] function. + pub fn pauseAll(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&pauseAllCall {}) + } + ///Creates a new call builder for the [`paused_0`] function. + pub fn paused_0( + &self, + index: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&paused_0Call { index }) + } + ///Creates a new call builder for the [`paused_1`] function. + pub fn paused_1(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&paused_1Call {}) + } + ///Creates a new call builder for the [`pauserRegistry`] function. + pub fn pauserRegistry( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&pauserRegistryCall {}) + } + ///Creates a new call builder for the [`pendingWithdrawals`] function. + pub fn pendingWithdrawals( + &self, + _0: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&pendingWithdrawalsCall { _0 }) + } + ///Creates a new call builder for the [`queueWithdrawals`] function. + pub fn queueWithdrawals( + &self, + queuedWithdrawalParams: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&queueWithdrawalsCall { + queuedWithdrawalParams, + }) + } + ///Creates a new call builder for the [`registerAsOperator`] function. + pub fn registerAsOperator( + &self, + registeringOperatorDetails: ::RustType, + metadataURI: alloy::sol_types::private::String, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterAsOperatorCall { + registeringOperatorDetails, + metadataURI, + }) + } + ///Creates a new call builder for the [`renounceOwnership`] function. + pub fn renounceOwnership( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&renounceOwnershipCall {}) + } + ///Creates a new call builder for the [`setMinWithdrawalDelayBlocks`] function. + pub fn setMinWithdrawalDelayBlocks( + &self, + newMinWithdrawalDelayBlocks: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setMinWithdrawalDelayBlocksCall { + newMinWithdrawalDelayBlocks, + }) + } + ///Creates a new call builder for the [`setPauserRegistry`] function. + pub fn setPauserRegistry( + &self, + newPauserRegistry: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setPauserRegistryCall { newPauserRegistry }) + } + ///Creates a new call builder for the [`setStrategyWithdrawalDelayBlocks`] function. + pub fn setStrategyWithdrawalDelayBlocks( + &self, + strategies: alloy::sol_types::private::Vec, + withdrawalDelayBlocks: alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&setStrategyWithdrawalDelayBlocksCall { + strategies, + withdrawalDelayBlocks, + }) + } + ///Creates a new call builder for the [`slasher`] function. + pub fn slasher(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&slasherCall {}) + } + ///Creates a new call builder for the [`stakerNonce`] function. + pub fn stakerNonce( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&stakerNonceCall { _0 }) + } + ///Creates a new call builder for the [`stakerOptOutWindowBlocks`] function. + pub fn stakerOptOutWindowBlocks( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&stakerOptOutWindowBlocksCall { operator }) + } + ///Creates a new call builder for the [`strategyManager`] function. + pub fn strategyManager( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&strategyManagerCall {}) + } + ///Creates a new call builder for the [`strategyWithdrawalDelayBlocks`] function. + pub fn strategyWithdrawalDelayBlocks( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&strategyWithdrawalDelayBlocksCall { _0 }) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + ///Creates a new call builder for the [`undelegate`] function. + pub fn undelegate( + &self, + staker: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&undelegateCall { staker }) + } + ///Creates a new call builder for the [`unpause`] function. + pub fn unpause( + &self, + newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&unpauseCall { newPausedStatus }) + } + ///Creates a new call builder for the [`updateOperatorMetadataURI`] function. + pub fn updateOperatorMetadataURI( + &self, + metadataURI: alloy::sol_types::private::String, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateOperatorMetadataURICall { metadataURI }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DelegationManagerInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Initialized`] event. + pub fn Initialized_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`MinWithdrawalDelayBlocksSet`] event. + pub fn MinWithdrawalDelayBlocksSet_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorDetailsModified`] event. + pub fn OperatorDetailsModified_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorMetadataURIUpdated`] event. + pub fn OperatorMetadataURIUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorRegistered`] event. + pub fn OperatorRegistered_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorSharesDecreased`] event. + pub fn OperatorSharesDecreased_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorSharesIncreased`] event. + pub fn OperatorSharesIncreased_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Paused`] event. + pub fn Paused_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`PauserRegistrySet`] event. + pub fn PauserRegistrySet_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`StakerDelegated`] event. + pub fn StakerDelegated_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`StakerForceUndelegated`] event. + pub fn StakerForceUndelegated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`StakerUndelegated`] event. + pub fn StakerUndelegated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`StrategyWithdrawalDelayBlocksSet`] event. + pub fn StrategyWithdrawalDelayBlocksSet_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Unpaused`] event. + pub fn Unpaused_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`WithdrawalCompleted`] event. + pub fn WithdrawalCompleted_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`WithdrawalQueued`] event. + pub fn WithdrawalQueued_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/deploymockavs.rs b/crates/utils/src/deploymockavs.rs new file mode 100644 index 00000000..ee4168d5 --- /dev/null +++ b/crates/utils/src/deploymockavs.rs @@ -0,0 +1,2701 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface DeployMockAvs { + function IS_SCRIPT() external view returns (bool); + function blsApkRegistry() external view returns (address); + function blsApkRegistryImplementation() external view returns (address); + function emptyContract() external view returns (address); + function indexRegistry() external view returns (address); + function indexRegistryImplementation() external view returns (address); + function mockAvsPauserReg() external view returns (address); + function mockAvsProxyAdmin() external view returns (address); + function mockAvsServiceManager() external view returns (address); + function mockAvsServiceManagerImplementation() external view returns (address); + function operatorStateRetriever() external view returns (address); + function registryCoordinator() external view returns (address); + function registryCoordinatorImplementation() external view returns (address); + function run() external; + function stakeRegistry() external view returns (address); + function stakeRegistryImplementation() external view returns (address); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_SCRIPT", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "blsApkRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IBLSApkRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "blsApkRegistryImplementation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IBLSApkRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "emptyContract", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract EmptyContract" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "indexRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IIndexRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "indexRegistryImplementation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IIndexRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "mockAvsPauserReg", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract PauserRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "mockAvsProxyAdmin", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ProxyAdmin" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "mockAvsServiceManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract MockAvsServiceManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "mockAvsServiceManagerImplementation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract MockAvsServiceManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "operatorStateRetriever", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract OperatorStateRetriever" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registryCoordinator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract RegistryCoordinator" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registryCoordinatorImplementation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IRegistryCoordinator" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "run", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "stakeRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStakeRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "stakeRegistryImplementation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStakeRegistry" + } + ], + "stateMutability": "view" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod DeployMockAvs { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052600c805462ff00ff19166201000117905534801561002157600080fd5b50620177e880620000336000396000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c80638b2c69eb11620000a3578063c0406226116200006e578063c0406226146200022e578063e18272c2146200023a578063e3a8b345146200024e578063f8ccbf47146200026257600080fd5b80638b2c69eb14620001de5780638c4f9b5014620001f25780639e3ba43714620002065780639e9923c2146200021a57600080fd5b80635df4594611620000e45780635df45946146200018e5780636830483514620001a25780636d14a98714620001b657806380e064d414620001ca57600080fd5b80630331ed2a146200011a57806334667564146200015257806339a5fcfa14620001665780634ca22c3f146200017a575b600080fd5b600c546200013590630100000090046001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b60195462000135906001600160a01b031681565b600f5462000135906001600160a01b031681565b60165462000135906001600160a01b031681565b60105462000135906001600160a01b031681565b60145462000135906001600160a01b031681565b600e5462000135906001600160a01b031681565b600d5462000135906001600160a01b031681565b60135462000135906001600160a01b031681565b60185462000135906001600160a01b031681565b60115462000135906001600160a01b031681565b60125462000135906001600160a01b031681565b6200023862000287565b005b60155462000135906001600160a01b031681565b60175462000135906001600160a01b031681565b600c54620002769062010000900460ff1681565b604051901515815260200162000149565b735fbdb2315678afecb367f032d93f642f64180aa36000620002a862000894565b90506000620002dc6040518060400160405280600d81526020016c6f70735f61646472657373657360981b81525062000b22565b90506000805160206201779383398151915260001c6001600160a01b0316637fb5297f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200032c57600080fd5b505af115801562000341573d6000803e3d6000fd5b505050506040516200035390620022ab565b604051809103906000f08015801562000370573d6000803e3d6000fd5b50601780546001600160a01b0319166001600160a01b03929092169190911790556040516200039f90620022b8565b604051809103906000f080158015620003bc573d6000803e3d6000fd5b50600c80546301000000600160b81b03191663010000006001600160a01b0393841681029190911791829055601754604051908416939190920416906200040390620022c6565b6200041092919062002336565b604051809103906000f0801580156200042d573d6000803e3d6000fd5b50601880546001600160a01b0319166001600160a01b039283169081179091556019546000926200046392869286921662000c84565b9050600e60009054906101000a90046001600160a01b03168360a001518460c001516040516200049390620022d4565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620004d0573d6000803e3d6000fd5b50601980546001600160a01b039283166001600160a01b03199091168117909155600c5460185485516040805191861660248084019190915281518084039091018152604490920181526020820180516001600160e01b031663189acdbd60e31b17905251639623609d60e01b81526301000000909304851694639623609d9462000566949390911692909190600401620023c0565b600060405180830381600087803b1580156200058157600080fd5b505af115801562000596573d6000803e3d6000fd5b505060185460408051638da5cb5b60e01b81529051600094506001600160a01b039092169250638da5cb5b9160048083019260209291908290030181865afa158015620005e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200060d9190620023ee565b6001600160a01b03161415620006605760405162461bcd60e51b815260206004820152601360248201527213dddb995c881d5b9a5b9a5d1a585b1a5e9959606a1b60448201526064015b60405180910390fd5b46617a69148062000672575046610539145b156200082757600c5460408051630fe7858560e31b81526004810191909152600a604482015269283937bc3ca0b236b4b760b11b606482015263010000009091046001600160a01b039081166024830152851690637f3c2c2890608401600060405180830381600087803b158015620006ea57600080fd5b505af1158015620006ff573d6000803e3d6000fd5b5050505060a083015160408051630fe7858560e31b81526004810191909152600c60448201526b4176734469726563746f727960a01b60648201526001600160a01b03918216602482015290851690637f3c2c2890608401600060405180830381600087803b1580156200077257600080fd5b505af115801562000787573d6000803e3d6000fd5b50505050602083015160408051630fe7858560e31b815260048101919091526013604482015272656967656e6c6179657250617573657252656760681b60648201526001600160a01b03918216602482015290851690637f3c2c2890608401600060405180830381600087803b1580156200080157600080fd5b505af115801562000816573d6000803e3d6000fd5b505050506200082784848362001a66565b6000805160206201779383398151915260001c6001600160a01b03166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200087557600080fd5b505af11580156200088a573d6000803e3d6000fd5b5050505050505050565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091526000620009176040518060400160405280601c81526020017f656967656e6c617965725f6465706c6f796d656e745f6f75747075740000000081525062001d9c565b905060006200095c826040518060400160405280601f81526020017f2e6164647265737365732e656967656e4c6179657250726f787941646d696e0081525062001fb3565b90506000620009a1836040518060400160405280601e81526020017f2e6164647265737365732e656967656e4c61796572506175736572526567000081525062001fb3565b90506000620009e6846040518060400160405280601a81526020017f2e6164647265737365732e73747261746567794d616e6167657200000000000081525062001fb3565b9050600062000a2385604051806040016040528060158152602001741730b2323932b9b9b2b9973232b632b3b0ba34b7b760591b81525062001fb3565b9050600062000a68866040518060400160405280601781526020017f2e6164647265737365732e6176734469726563746f727900000000000000000081525062001fb3565b9050600062000aa287604051806040016040528060128152602001711730b2323932b9b9b2b99739b630b9b432b960711b81525062001fb3565b9050600062000acb886040518060600160405280602581526020016201776e6025913962001fb3565b60408051610100810182526001600160a01b03998a1681529789166020890152958816958701959095525091851660608501529084166080840152831660a0830152600060c083015290911660e082015292915050565b60408051608081018252600080825260208201819052918101829052606081018290529062000b51836200203c565b905062000b7e60408051608081018252600080825260208201819052918101829052606081019190915290565b62000bb482604051806040016040528060128152602001712e636f6d6d756e6974794d756c746973696760701b81525062001fb3565b6001600160a01b03168152604080518082019091526007815266173830bab9b2b960c91b602082015262000bea90839062001fb3565b81602001906001600160a01b031690816001600160a01b03168152505062000c3382604051806040016040528060088152602001671731b43ab93732b960c11b81525062001fb3565b6001600160a01b0316604080830191909152805180820190915260088152671732b532b1ba37b960c11b602082015262000c6f90839062001fb3565b6001600160a01b031660608201529392505050565b60408051606080820183526000808352602083018190528284018190528351600280825292810190945291929081602001602082028036833701905050905084602001518160008151811062000cde5762000cde6200242f565b60200260200101906001600160a01b031690816001600160a01b03168152505084600001518160018151811062000d195762000d196200242f565b60200260200101906001600160a01b031690816001600160a01b03168152505080856000015160405162000d4d90620022e2565b62000d5a92919062002445565b604051809103906000f08015801562000d77573d6000803e3d6000fd5b50600d80546001600160a01b0319166001600160a01b03928316179055601754600c546040519183169350630100000090049091169062000db890620022c6565b62000dc592919062002336565b604051809103906000f08015801562000de2573d6000803e3d6000fd5b50600e80546001600160a01b0319166001600160a01b03928316179055601754600c54604051918316926301000000909104169062000e2190620022c6565b62000e2e92919062002336565b604051809103906000f08015801562000e4b573d6000803e3d6000fd5b50601080546001600160a01b0319166001600160a01b03928316179055601754600c54604051918316926301000000909104169062000e8a90620022c6565b62000e9792919062002336565b604051809103906000f08015801562000eb4573d6000803e3d6000fd5b50601280546001600160a01b0319166001600160a01b03928316179055601754600c54604051918316926301000000909104169062000ef390620022c6565b62000f0092919062002336565b604051809103906000f08015801562000f1d573d6000803e3d6000fd5b50601480546001600160a01b0319166001600160a01b039290921691909117905560405162000f4c90620022f0565b604051809103906000f08015801562000f69573d6000803e3d6000fd5b50601680546001600160a01b0319166001600160a01b03928316179055600e5460405191169062000f9a90620022fe565b6001600160a01b039091168152602001604051809103906000f08015801562000fc7573d6000803e3d6000fd5b50601180546001600160a01b0319166001600160a01b03928316908117909155600c5460105460405163266a23b160e21b81529084166004820152602481019290925263010000009004909116906399a88ec490604401600060405180830381600087803b1580156200103957600080fd5b505af11580156200104e573d6000803e3d6000fd5b5050600e546040516001600160a01b0390911692506200106f91506200230c565b6001600160a01b039091168152602001604051809103906000f0801580156200109c573d6000803e3d6000fd5b50601380546001600160a01b0319166001600160a01b03928316908117909155600c5460125460405163266a23b160e21b81529084166004820152602481019290925263010000009004909116906399a88ec490604401600060405180830381600087803b1580156200110e57600080fd5b505af115801562001123573d6000803e3d6000fd5b5050600e5460608801516040516001600160a01b03909216935091506200114a906200231a565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156200117e573d6000803e3d6000fd5b50601580546001600160a01b0319166001600160a01b03928316908117909155600c5460145460405163266a23b160e21b81529084166004820152602481019290925263010000009004909116906399a88ec490604401600060405180830381600087803b158015620011f057600080fd5b505af115801562001205573d6000803e3d6000fd5b50506014546010546012546040518895506001600160a01b039384169450918316921690620012349062002328565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562001279573d6000803e3d6000fd5b50600f80546001600160a01b0319166001600160a01b039290921691909117905560408051600080825260208201909252819081620012e1565b6040805160608101825260008082526020808301829052928201528252600019909201910181620012b35790505b50905060005b828110156200134857604080516060810182526127108152613a98602082015260649181019190915282518390839081106200132757620013276200242f565b602002602001018190525080806200133f90620024a4565b915050620012e7565b5060008267ffffffffffffffff81111562001367576200136762002419565b60405190808252806020026020018201604052801562001391578160200160208202803683370190505b50905060008367ffffffffffffffff811115620013b257620013b262002419565b604051908082528060200260200182016040528015620013e757816020015b6060815260200190600190039081620013d15790505b509050600c60039054906101000a90046001600160a01b03166001600160a01b0316639623609d600e60009054906101000a90046001600160a01b0316600f60009054906101000a90046001600160a01b031663dd8283f360e01b8c600001518d604001518e606001518f6020015160008c8c8c60405160240162001474989796959493929190620025be565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e086901b9092168252620014bd939291600401620023c0565b600060405180830381600087803b158015620014d857600080fd5b505af1158015620014ed573d6000803e3d6000fd5b5050600e5460408051638da5cb5b60e01b81529051600098506001600160a01b039092169650638da5cb5b955060048082019550602094509192508290030181865afa15801562001542573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015689190620023ee565b6001600160a01b03161415620015b75760405162461bcd60e51b815260206004820152601360248201527213dddb995c881d5b9a5b9a5d1a585b1a5e9959606a1b604482015260640162000657565b604080518082018252600d81526c1c185c995b9d081bd89a9958dd609a1b60208083019190915282518084018452600981526861646472657373657360b81b91810191909152600c549251634b96303160e11b815291929091737109709ecfa91a80626ff3989d68f67f5b1dd12d9163972c6062916200164e91859163010000009091046001600160a01b03169060040162002691565b6000604051808303816000875af11580156200166e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620016989190810190620026e1565b50604051634b96303160e11b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063972c606290620016d490849089906004016200279a565b6000604051808303816000875af1158015620016f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200171e9190810190620026e1565b50604051634b96303160e11b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063972c6062906200175a9084908890600401620027fc565b6000604051808303816000875af11580156200177a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620017a49190810190620026e1565b50600e54604051634b96303160e11b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9163972c606291620017ed9185916001600160a01b03909116906004016200286b565b6000604051808303816000875af11580156200180d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620018379190810190620026e1565b50600f54604051634b96303160e11b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9163972c606291620018809185916001600160a01b0390911690600401620028c4565b6000604051808303816000875af1158015620018a0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620018ca9190810190620026e1565b50601654604051634b96303160e11b8152600091737109709ecfa91a80626ff3989d68f67f5b1dd12d9163972c606291620019149186916001600160a01b03169060040162002931565b6000604051808303816000875af115801562001934573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200195e9190810190620026e1565b6040516388da6d3560e01b8152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d906388da6d3590620019a1908790879087906004016200298d565b6000604051808303816000875af1158015620019c1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620019eb9190810190620026e1565b905062001a2e816040518060400160405280601981526020017f6d6f636b6176735f6465706c6f796d656e745f6f757470757400000000000000815250620020cd565b5050604080516060810182526001600160a01b039687168152600e548716602082015260165490961690860152509295945050505050565b8051604051630fe7858560e31b81526001600160a01b03851691637f3c2c289162001a959190600401620029d6565b600060405180830381600087803b15801562001ab057600080fd5b505af115801562001ac5573d6000803e3d6000fd5b50505050602081015160408051630fe7858560e31b81526004810191909152601a60448201527f6d6f636b4176735265676973747279436f6f7264696e61746f7200000000000060648201526001600160a01b03918216602482015290841690637f3c2c2890608401600060405180830381600087803b15801562001b4957600080fd5b505af115801562001b5e573d6000803e3d6000fd5b505050506040818101518151630fe7858560e31b81526004810192909252601d60448301527f6d6f636b4176734f70657261746f72537461746552657472696576657200000060648301526001600160a01b039081166024830152841690637f3c2c2890608401600060405180830381600087803b15801562001be057600080fd5b505af115801562001bf5573d6000803e3d6000fd5b50505050606082015160408051630fe7858560e31b8152600481019190915260116044820152703232b632b3b0ba34b7b726b0b730b3b2b960791b60648201526001600160a01b03918216602482015290841690637f3c2c2890608401600060405180830381600087803b15801562001c6d57600080fd5b505af115801562001c82573d6000803e3d6000fd5b505050506040828101518151630fe7858560e31b81526004810192909252600f60448301526e39ba3930ba32b3bca6b0b730b3b2b960891b60648301526001600160a01b039081166024830152841690637f3c2c2890608401600060405180830381600087803b15801562001cf657600080fd5b505af115801562001d0b573d6000803e3d6000fd5b5050505060a082015160408051630fe7858560e31b81526004810191909152600c60448201526b6176734469726563746f727960a01b60648201526001600160a01b03918216602482015290841690637f3c2c2890608401600060405180830381600087803b15801562001d7e57600080fd5b505af115801562001d93573d6000803e3d6000fd5b50505050505050565b606060006000805160206201779383398151915260001c6001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001df1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001e1b9190810190620026e1565b60405160200162001e2d919062002a26565b60408051808303601f190181529082905263348051d760e11b82524660048301529150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801562001e90573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001eba9190810190620026e1565b60405160200162001ecc919062002a5b565b604051602081830303815290604052905060008460405160200162001ef2919062002a82565b60408051601f19818403018152908290529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906360f9bb119062001f359086908690869060200162002aad565b6040516020818303038152906040526040518263ffffffff1660e01b815260040162001f62919062002af6565b600060405180830381865afa15801562001f80573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001faa9190810190620026e1565b95945050505050565b604051631e19e65760e01b8152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90631e19e6579062001ff1908690869060040162002b0b565b602060405180830381865afa1580156200200f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020359190620023ee565b9392505050565b606060006000805160206201779383398151915260001c6001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa15801562002091573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620020bb9190810190620026e1565b60405160200162001e2d919062002b34565b60006000805160206201779383398151915260001c6001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa15801562002120573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200214a9190810190620026e1565b6040516020016200215c919062002a26565b60408051808303601f190181529082905263348051d760e11b82524660048301529150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015620021bf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620021e99190810190620026e1565b604051602001620021fb919062002a5b565b60405160208183030381529060405290506000828285604051602001620022259392919062002b68565b60408051601f198184030181529082905263e23cd19f60e01b82529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e23cd19f9062002270908890859060040162002b0b565b600060405180830381600087803b1580156200228b57600080fd5b505af1158015620022a0573d6000803e3d6000fd5b505050505050505050565b60948062002bc283390190565b6107188062002c5683390190565b610e81806200336e83390190565b6144ed80620041ef83390190565b61077880620086dc83390190565b611e238062008e5483390190565b612035806200ac7783390190565b611361806200ccac83390190565b6133c8806200e00d83390190565b61639980620113d583390190565b6001600160a01b0392831681529116602082015260606040820181905260009082015260800190565b60005b838110156200237c57818101518382015260200162002362565b838111156200238c576000848401525b50505050565b60008151808452620023ac8160208601602086016200235f565b601f01601f19169290920160200192915050565b6001600160a01b0384811682528316602082015260606040820181905260009062001faa9083018462002392565b6000602082840312156200240157600080fd5b81516001600160a01b03811681146200203557600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b82811015620024895781516001600160a01b03168452928401929084019060010162002462565b5050506001600160a01b039490941692019190915250919050565b6000600019821415620024c757634e487b7160e01b600052601160045260246000fd5b5060010190565b600081518084526020808501945080840160005b838110156200250e5781516bffffffffffffffffffffffff1687529582019590820190600101620024e2565b509495945050505050565b600082825180855260208086019550808260051b8401018186016000805b85811015620025b057868403601f19018a52825180518086529086019086860190845b818110156200259a57835180516001600160a01b031684528901516bffffffffffffffffffffffff1689840152928801926040909201916001016200255a565b50509a86019a9450509184019160010162002537565b509198975050505050505050565b600061010080830160018060a01b03808d1685526020818d16818701526040828d16818801526060838d168189015260ff8c1660808901528560a08901528495508a51935083855261012088019550828b01945060005b8481101562002652578551805163ffffffff1688528481015161ffff908116868a0152908401511683880152958101959483019460010162002615565b50505050505082810360c08401526200266c8186620024ce565b905082810360e084015262002682818562002519565b9b9a5050505050505050505050565b606081526000620026a6606083018562002392565b828103602080850191909152600a825269383937bc3ca0b236b4b760b11b908201526001600160a01b03939093166040928301525001919050565b600060208284031215620026f457600080fd5b815167ffffffffffffffff808211156200270d57600080fd5b818401915084601f8301126200272257600080fd5b81518181111562002737576200273762002419565b604051601f8201601f19908116603f0116810190838211818310171562002762576200276262002419565b816040528281528760208487010111156200277c57600080fd5b6200278f8360208301602088016200235f565b979650505050505050565b606081526000620027af606083018562002392565b8281036020840152620027e481601581527436b7b1b5a0bb39a9b2b93b34b1b2a6b0b730b3b2b960591b602082015260400190565b91505060018060a01b03831660408301529392505050565b60608152600062002811606083018562002392565b8281036020840152602381527f6d6f636b417673536572766963654d616e61676572496d706c656d656e74617460208201526234b7b760e91b60408201526060810191505060018060a01b03831660408301529392505050565b60608152600062002880606083018562002392565b82810360208085019190915260138252723932b3b4b9ba393ca1b7b7b93234b730ba37b960691b908201526001600160a01b03939093166040928301525001919050565b606081526000620028d9606083018562002392565b8281036020840152602181527f7265676973747279436f6f7264696e61746f72496d706c656d656e746174696f6020820152603760f91b60408201526060810191505060018060a01b03831660408301529392505050565b60608152600062002946606083018562002392565b828103602080850191909152601682527537b832b930ba37b929ba30ba32a932ba3934b2bb32b960511b908201526001600160a01b03939093166040928301525001919050565b606081526000620029a2606083018662002392565b8281036020840152620029b6818662002392565b90508281036040840152620029cc818562002392565b9695505050505050565b60408152600062002a0c60408301601581527436b7b1b5a0bb39a9b2b93b34b1b2a6b0b730b3b2b960591b602082015260400190565b6001600160a01b0393909316602092909201919091525090565b6000825162002a3a8184602087016200235f565b6e2f7363726970742f6f75747075742f60881b920191825250600f01919050565b6000825162002a6f8184602087016200235f565b602f60f81b920191825250600101919050565b6000825162002a968184602087016200235f565b64173539b7b760d91b920191825250600501919050565b6000845162002ac18184602089016200235f565b84519083019062002ad78183602089016200235f565b845191019062002aec8183602088016200235f565b0195945050505050565b60208152600062002035602083018462002392565b60408152600062002b20604083018562002392565b828103602084015262001faa818562002392565b6000825162002b488184602087016200235f565b6d2f7363726970742f696e7075742f60901b920191825250600e01919050565b6000845162002b7c8184602089016200235f565b84519083019062002b928183602089016200235f565b845191019062002ba78183602088016200235f565b64173539b7b760d91b91019081526005019594505050505056fe6080604052348015600f57600080fd5b50607780601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea264697066735822122007c80e3ab75b64ab2851d22a863601e8064735da0ba4040cde0990cb0528b7c064736f6c634300080c0033608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea2646970667358221220d2defa3201be949322800c3098b574d26d9d6a6cbac4560c147ae4c675a9d47a64736f6c634300080c0033608060405260405162000e8138038062000e81833981016040819052620000269162000490565b828162000036828260006200004d565b50620000449050826200008a565b505050620005c3565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e5a60279139620002f8565b9392505050565b60006200018060008051602062000e3a83398151915260001b620003de60201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e3a83398151915260001b620003de60201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200028c1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620002081760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000570565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f191906200058e565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b83811115620000835750506000910152565b600080600060608486031215620004a657600080fd5b620004b1846200042e565b9250620004c1602085016200042e565b60408501519092506001600160401b0380821115620004df57600080fd5b818601915086601f830112620004f457600080fd5b8151818111156200050957620005096200044b565b604051601f8201601f19908116603f011681019083821181831017156200053457620005346200044b565b816040528281528960208487010111156200054e57600080fd5b6200056183602083016020880162000461565b80955050505050509250925092565b600082516200058481846020870162000461565b9190910192915050565b6020815260008251806020840152620005af81604085016020870162000461565b601f01601f19169190910160400192915050565b61086780620005d36000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212207420b9d3a17a9b4b1279482aea62855b38b1f3c36865e13712f5632f3a487f3764736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65646101806040523480156200001257600080fd5b50604051620044ed380380620044ed83398101604081905262000035916200033f565b82828285866001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000078573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009e919062000393565b6001600160a01b0380851660805280841660a05280831660c052811660e052620000c762000264565b50505050806001600160a01b0316610100816001600160a01b031681525050806001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000125573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014b919062000393565b6001600160a01b0316610120816001600160a01b031681525050806001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ca919062000393565b6001600160a01b0316610140816001600160a01b031681525050610120516001600160a01b031663df5cf7236040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000226573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024c919062000393565b6001600160a01b03166101605250620003ba92505050565b600054610100900460ff1615620002d15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000324576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200033c57600080fd5b50565b6000806000606084860312156200035557600080fd5b8351620003628162000326565b6020850151909350620003758162000326565b6040850151909250620003888162000326565b809150509250925092565b600060208284031215620003a657600080fd5b8151620003b38162000326565b9392505050565b60805160a05160c05160e05161010051610120516101405161016051614025620004c86000396000818161030e01526112020152600081816101b801526113e40152600081816101f7015281816115ba015261177c015260008181610244015281816109e001528181610ecd01528181611065015261129f0152600081816106f501528181610850015281816108e701528181611e0801528181611f8b015261202a015260008181610520015281816105af0152818161062f01528181611a5001528181611b1c01528181611d460152611ee60152600081816122cb01528181612387015261247301526000818161021b01528181611aa401528181611b780152611bf701526140256000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80638da5cb5b116100b8578063c4d66de81161007c578063c4d66de8146102f6578063df5cf72314610309578063e481af9d14610330578063f2fde38b14610338578063fc299dee1461034b578063fce36c7d1461035e57600080fd5b80638da5cb5b1461028f5780639926ee7d146102a0578063a364f4da146102b3578063a98fb355146102c6578063b98d0908146102d957600080fd5b806368304835116100ff57806368304835146101f25780636b3aa72e146102195780636d14a9871461023f5780636efb463614610266578063715018a61461028757600080fd5b8063171f1d5b1461013c57806333cfb7b71461016b5780633bc28c8c1461018b578063416c7e5e146101a05780635df45946146101b3575b600080fd5b61014f61014a3660046133ba565b610371565b6040805192151583529015156020830152015b60405180910390f35b61017e610179366004613420565b6104fb565b604051610162919061343d565b61019e610199366004613420565b6109ca565b005b61019e6101ae366004613498565b6109de565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610162565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b7f00000000000000000000000000000000000000000000000000000000000000006101da565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b61027961027436600461376b565b610b1a565b60405161016292919061385e565b61019e611a31565b6033546001600160a01b03166101da565b61019e6102ae3660046138fe565b611a45565b61019e6102c1366004613420565b611b11565b61019e6102d43660046139a8565b611bd8565b6097546102e69060ff1681565b6040519015158152602001610162565b61019e610304366004613420565b611c2c565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b61017e611d40565b61019e610346366004613420565b612109565b6065546101da906001600160a01b031681565b61019e61036c3660046139f8565b61217f565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001878760000151886020015188600001516000600281106103b9576103b9613a6c565b60200201518951600160200201518a602001516000600281106103de576103de613a6c565b60200201518b602001516001600281106103fa576103fa613a6c565b602090810291909101518c518d8301516040516104579a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c61047a9190613a82565b90506104ed61049361048c88846124aa565b8690612541565b61049b6125d5565b6104e36104d4856104ce604080518082018252600080825260209182015281518083019092526001825260029082015290565b906124aa565b6104dd8c612695565b90612541565b886201d4c0612725565b909890975095505050505050565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa158015610567573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058b9190613aa4565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa1580156105f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061a9190613abd565b90506001600160c01b03811615806106b457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106af9190613ae6565b60ff16155b156106d057505060408051600081526020810190915292915050565b60006106e4826001600160c01b0316612949565b90506000805b82518110156107ba577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f584838151811061073457610734613a6c565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610778573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079c9190613aa4565b6107a69083613b1f565b9150806107b281613b37565b9150506106ea565b506000816001600160401b038111156107d5576107d5613247565b6040519080825280602002602001820160405280156107fe578160200160208202803683370190505b5090506000805b84518110156109bd57600085828151811061082257610822613a6c565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610897573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108bb9190613aa4565b905060005b818110156109a7576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015610935573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109599190613b67565b6000015186868151811061096f5761096f613a6c565b6001600160a01b03909216602092830291909101909101528461099181613b37565b955050808061099f90613b37565b9150506108c0565b50505080806109b590613b37565b915050610805565b5090979650505050505050565b6109d2612a0b565b6109db81612a65565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a609190613ba8565b6001600160a01b0316336001600160a01b031614610b115760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a4015b60405180910390fd5b6109db81612ace565b6040805180820190915260608082526020820152600084610b915760405162461bcd60e51b81526020600482015260376024820152600080516020613fd083398151915260448201527f7265733a20656d7074792071756f72756d20696e7075740000000000000000006064820152608401610b08565b60408301515185148015610ba9575060a08301515185145b8015610bb9575060c08301515185145b8015610bc9575060e08301515185145b610c335760405162461bcd60e51b81526020600482015260416024820152600080516020613fd083398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610b08565b82515160208401515114610cab5760405162461bcd60e51b815260206004820152604460248201819052600080516020613fd0833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610b08565b4363ffffffff168463ffffffff1610610d1a5760405162461bcd60e51b815260206004820152603c6024820152600080516020613fd083398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610b08565b6040805180820182526000808252602080830191909152825180840190935260608084529083015290866001600160401b03811115610d5b57610d5b613247565b604051908082528060200260200182016040528015610d84578160200160208202803683370190505b506020820152866001600160401b03811115610da257610da2613247565b604051908082528060200260200182016040528015610dcb578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b03811115610dff57610dff613247565b604051908082528060200260200182016040528015610e28578160200160208202803683370190505b5081526020860151516001600160401b03811115610e4857610e48613247565b604051908082528060200260200182016040528015610e71578160200160208202803683370190505b5081602001819052506000610f438a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e9190613ae6565b612b15565b905060005b8760200151518110156111de57610f8d88602001518281518110610f6e57610f6e613a6c565b6020026020010151805160009081526020918201519091526040902090565b83602001518281518110610fa357610fa3613a6c565b60209081029190910101528015611063576020830151610fc4600183613bc5565b81518110610fd457610fd4613a6c565b602002602001015160001c83602001518281518110610ff557610ff5613a6c565b602002602001015160001c11611063576040805162461bcd60e51b8152602060048201526024810191909152600080516020613fd083398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610b08565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec6351846020015183815181106110a8576110a8613a6c565b60200260200101518b8b6000015185815181106110c7576110c7613a6c565b60200260200101516040518463ffffffff1660e01b81526004016111049392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015611121573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111459190613abd565b6001600160c01b03168360000151828151811061116457611164613a6c565b6020026020010181815250506111ca61048c61119e848660000151858151811061119057611190613a6c565b602002602001015116612ba8565b8a6020015184815181106111b4576111b4613a6c565b6020026020010151612bd390919063ffffffff16565b9450806111d681613b37565b915050610f48565b50506111e983612cb7565b60975490935060ff16600081611200576000611282565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561125e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112829190613aa4565b905060005b8a8110156119005782156113e2578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c428f8f868181106112de576112de613a6c565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa15801561131e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113429190613aa4565b61134c9190613b1f565b116113e25760405162461bcd60e51b81526020600482015260666024820152600080516020613fd083398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610b08565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8d8d8481811061142357611423613a6c565b9050013560f81c60f81b60f81c8c8c60a00151858151811061144757611447613a6c565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa1580156114a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c79190613bdc565b6001600160401b0319166114ea8a604001518381518110610f6e57610f6e613a6c565b67ffffffffffffffff1916146115865760405162461bcd60e51b81526020600482015260616024820152600080516020613fd083398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610b08565b6115b68960400151828151811061159f5761159f613a6c565b60200260200101518761254190919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568d8d848181106115f9576115f9613a6c565b9050013560f81c60f81b60f81c8c8c60c00151858151811061161d5761161d613a6c565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015611679573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169d9190613c07565b856020015182815181106116b3576116b3613a6c565b6001600160601b039092166020928302919091018201528501518051829081106116df576116df613a6c565b6020026020010151856000015182815181106116fd576116fd613a6c565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a60200151518110156118eb576117758660000151828151811061174757611747613a6c565b60200260200101518f8f8681811061176157611761613a6c565b600192013560f81c9290921c811614919050565b156118d9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8f8f868181106117bb576117bb613a6c565b9050013560f81c60f81b60f81c8e896020015185815181106117df576117df613a6c565b60200260200101518f60e0015188815181106117fd576117fd613a6c565b6020026020010151878151811061181657611816613a6c565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa15801561187a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189e9190613c07565b87518051859081106118b2576118b2613a6c565b602002602001018181516118c69190613c24565b6001600160601b03169052506001909101905b806118e381613b37565b915050611721565b505080806118f890613b37565b915050611287565b50505060008061191a8c868a606001518b60800151610371565b915091508161198b5760405162461bcd60e51b81526020600482015260436024820152600080516020613fd083398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610b08565b806119ec5760405162461bcd60e51b81526020600482015260396024820152600080516020613fd083398151915260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610b08565b50506000878260200151604051602001611a07929190613c4c565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b611a39612a0b565b611a436000612d52565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611a8d5760405162461bcd60e51b8152600401610b0890613c94565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d90611adb9085908590600401613d59565b600060405180830381600087803b158015611af557600080fd5b505af1158015611b09573d6000803e3d6000fd5b505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b595760405162461bcd60e51b8152600401610b0890613c94565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b158015611bbd57600080fd5b505af1158015611bd1573d6000803e3d6000fd5b5050505050565b611be0612a0b565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb35590611ba3908490600401613da4565b600054610100900460ff1615808015611c4c5750600054600160ff909116105b80611c665750303b158015611c66575060005460ff166001145b611cc95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b08565b6000805460ff191660011790558015611cec576000805461ff0019166101001790555b611cf68283612da4565b8015611d3c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611da2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc69190613ae6565b60ff16905080611de457505060408051600081526020810190915290565b6000805b82811015611e9957604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015611e57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7b9190613aa4565b611e859083613b1f565b915080611e9181613b37565b915050611de8565b506000816001600160401b03811115611eb457611eb4613247565b604051908082528060200260200182016040528015611edd578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f669190613ae6565b60ff168110156120ff57604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015611fda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ffe9190613aa4565b905060005b818110156120ea576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015612078573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209c9190613b67565b600001518585815181106120b2576120b2613a6c565b6001600160a01b0390921660209283029190910190910152836120d481613b37565b94505080806120e290613b37565b915050612003565b505080806120f790613b37565b915050611ee4565b5090949350505050565b612111612a0b565b6001600160a01b0381166121765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b08565b6109db81612d52565b612187612e21565b60005b8181101561245b578282828181106121a4576121a4613a6c565b90506020028101906121b69190613dbe565b6121c7906040810190602001613420565b6001600160a01b03166323b872dd33308686868181106121e9576121e9613a6c565b90506020028101906121fb9190613dbe565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152013560448201526064016020604051808303816000875af1158015612252573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122769190613de9565b50600083838381811061228b5761228b613a6c565b905060200281019061229d9190613dbe565b6122ae906040810190602001613420565b604051636eb1769f60e11b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063dd62ed3e90604401602060405180830381865afa15801561231c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123409190613aa4565b905083838381811061235457612354613a6c565b90506020028101906123669190613dbe565b612377906040810190602001613420565b6001600160a01b031663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000838787878181106123b9576123b9613a6c565b90506020028101906123cb9190613dbe565b604001356123d99190613b1f565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612424573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124489190613de9565b50508061245490613b37565b905061218a565b5060405163fce36c7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fce36c7d90611adb9085908590600401613e61565b60408051808201909152600080825260208201526124c661316d565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156124f9576124fb565bfe5b50806125395760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610b08565b505092915050565b604080518082019091526000808252602082015261255d61318b565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156124f95750806125395760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610b08565b6125dd6131a9565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820190915260008082526020820152600080806126c5600080516020613fb083398151915286613a82565b90505b6126d181612eb6565b9093509150600080516020613fb083398151915282830983141561270b576040805180820190915290815260208101919091529392505050565b600080516020613fb08339815191526001820890506126c8565b6040805180820182528681526020808201869052825180840190935286835282018490526000918291906127576131ce565b60005b600281101561291c576000612770826006613f6e565b905084826002811061278457612784613a6c565b60200201515183612796836000613b1f565b600c81106127a6576127a6613a6c565b60200201528482600281106127bd576127bd613a6c565b602002015160200151838260016127d49190613b1f565b600c81106127e4576127e4613a6c565b60200201528382600281106127fb576127fb613a6c565b602002015151518361280e836002613b1f565b600c811061281e5761281e613a6c565b602002015283826002811061283557612835613a6c565b602002015151600160200201518361284e836003613b1f565b600c811061285e5761285e613a6c565b602002015283826002811061287557612875613a6c565b60200201516020015160006002811061289057612890613a6c565b6020020151836128a1836004613b1f565b600c81106128b1576128b1613a6c565b60200201528382600281106128c8576128c8613a6c565b6020020151602001516001600281106128e3576128e3613a6c565b6020020151836128f4836005613b1f565b600c811061290457612904613a6c565b6020020152508061291481613b37565b91505061275a565b506129256131ed565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b606060008061295784612ba8565b61ffff166001600160401b0381111561297257612972613247565b6040519080825280601f01601f19166020018201604052801561299c576020820181803683370190505b5090506000805b8251821080156129b4575061010081105b156120ff576001811b9350858416156129fb578060f81b8383815181106129dd576129dd613a6c565b60200101906001600160f81b031916908160001a9053508160010191505b612a0481613b37565b90506129a3565b6033546001600160a01b03163314611a435760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b08565b606554604080516001600160a01b03928316815291831660208301527fe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6097805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b600080612b2184612f38565b9050808360ff166001901b11612b9f5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610b08565b90505b92915050565b6000805b8215612ba257612bbd600184613bc5565b9092169180612bcb81613f8d565b915050612bac565b60408051808201909152600080825260208201526102008261ffff1610612c2f5760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610b08565b8161ffff1660011415612c43575081612ba2565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff1610612cac57600161ffff871660ff83161c81161415612c8f57612c8c8484612541565b93505b612c998384612541565b92506201fffe600192831b169101612c5f565b509195945050505050565b60408051808201909152600080825260208201528151158015612cdc57506020820151155b15612cfa575050604080518082019091526000808252602082015290565b604051806040016040528083600001518152602001600080516020613fb08339815191528460200151612d2d9190613a82565b612d4590600080516020613fb0833981519152613bc5565b905292915050565b919050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16612e0f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610b08565b612e1882612d52565b611d3c81612a65565b6065546001600160a01b03163314611a435760405162461bcd60e51b815260206004820152604c60248201527f536572766963654d616e61676572426173652e6f6e6c7952657761726473496e60448201527f69746961746f723a2063616c6c6572206973206e6f742074686520726577617260648201526b32399034b734ba34b0ba37b960a11b608482015260a401610b08565b60008080600080516020613fb08339815191526003600080516020613fb083398151915286600080516020613fb0833981519152888909090890506000612f2c827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020613fb08339815191526130c5565b91959194509092505050565b600061010082511115612fc15760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610b08565b8151612fcf57506000919050565b60008083600081518110612fe557612fe5613a6c565b0160200151600160f89190911c81901b92505b84518110156130bc5784818151811061301357613013613a6c565b0160200151600160f89190911c1b91508282116130a85760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610b08565b918117916130b581613b37565b9050612ff8565b50909392505050565b6000806130d06131ed565b6130d861320b565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280156124f95750826131625760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610b08565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806131bc613229565b81526020016131c9613229565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561327f5761327f613247565b60405290565b60405161010081016001600160401b038111828210171561327f5761327f613247565b604051606081016001600160401b038111828210171561327f5761327f613247565b604051601f8201601f191681016001600160401b03811182821017156132f2576132f2613247565b604052919050565b60006040828403121561330c57600080fd5b61331461325d565b9050813581526020820135602082015292915050565b600082601f83011261333b57600080fd5b61334361325d565b80604084018581111561335557600080fd5b845b8181101561336f578035845260209384019301613357565b509095945050505050565b60006080828403121561338c57600080fd5b61339461325d565b90506133a0838361332a565b81526133af836040840161332a565b602082015292915050565b60008060008061012085870312156133d157600080fd5b843593506133e286602087016132fa565b92506133f1866060870161337a565b91506134008660e087016132fa565b905092959194509250565b6001600160a01b03811681146109db57600080fd5b60006020828403121561343257600080fd5b8135612b9f8161340b565b6020808252825182820181905260009190848201906040850190845b8181101561347e5783516001600160a01b031683529284019291840191600101613459565b50909695505050505050565b80151581146109db57600080fd5b6000602082840312156134aa57600080fd5b8135612b9f8161348a565b803563ffffffff81168114612d4d57600080fd5b60006001600160401b038211156134e2576134e2613247565b5060051b60200190565b600082601f8301126134fd57600080fd5b8135602061351261350d836134c9565b6132ca565b82815260059290921b8401810191818101908684111561353157600080fd5b8286015b8481101561355357613546816134b5565b8352918301918301613535565b509695505050505050565b600082601f83011261356f57600080fd5b8135602061357f61350d836134c9565b82815260069290921b8401810191818101908684111561359e57600080fd5b8286015b84811015613553576135b488826132fa565b8352918301916040016135a2565b600082601f8301126135d357600080fd5b813560206135e361350d836134c9565b82815260059290921b8401810191818101908684111561360257600080fd5b8286015b848110156135535780356001600160401b038111156136255760008081fd5b6136338986838b01016134ec565b845250918301918301613606565b6000610180828403121561365457600080fd5b61365c613285565b905081356001600160401b038082111561367557600080fd5b613681858386016134ec565b8352602084013591508082111561369757600080fd5b6136a38583860161355e565b602084015260408401359150808211156136bc57600080fd5b6136c88583860161355e565b60408401526136da856060860161337a565b60608401526136ec8560e086016132fa565b608084015261012084013591508082111561370657600080fd5b613712858386016134ec565b60a084015261014084013591508082111561372c57600080fd5b613738858386016134ec565b60c084015261016084013591508082111561375257600080fd5b5061375f848285016135c2565b60e08301525092915050565b60008060008060006080868803121561378357600080fd5b8535945060208601356001600160401b03808211156137a157600080fd5b818801915088601f8301126137b557600080fd5b8135818111156137c457600080fd5b8960208285010111156137d657600080fd5b60208301965094506137ea604089016134b5565b9350606088013591508082111561380057600080fd5b5061380d88828901613641565b9150509295509295909350565b600081518084526020808501945080840160005b838110156138535781516001600160601b03168752958201959082019060010161382e565b509495945050505050565b6040815260008351604080840152613879608084018261381a565b90506020850151603f19848303016060850152613896828261381a565b925050508260208301529392505050565b60006001600160401b038311156138c0576138c0613247565b6138d3601f8401601f19166020016132ca565b90508281528383830111156138e757600080fd5b828260208301376000602084830101529392505050565b6000806040838503121561391157600080fd5b823561391c8161340b565b915060208301356001600160401b038082111561393857600080fd5b908401906060828703121561394c57600080fd5b6139546132a8565b82358281111561396357600080fd5b83019150601f8201871361397657600080fd5b613985878335602085016138a7565b815260208301356020820152604083013560408201528093505050509250929050565b6000602082840312156139ba57600080fd5b81356001600160401b038111156139d057600080fd5b8201601f810184136139e157600080fd5b6139f0848235602084016138a7565b949350505050565b60008060208385031215613a0b57600080fd5b82356001600160401b0380821115613a2257600080fd5b818501915085601f830112613a3657600080fd5b813581811115613a4557600080fd5b8660208260051b8501011115613a5a57600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052603260045260246000fd5b600082613a9f57634e487b7160e01b600052601260045260246000fd5b500690565b600060208284031215613ab657600080fd5b5051919050565b600060208284031215613acf57600080fd5b81516001600160c01b0381168114612b9f57600080fd5b600060208284031215613af857600080fd5b815160ff81168114612b9f57600080fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115613b3257613b32613b09565b500190565b6000600019821415613b4b57613b4b613b09565b5060010190565b6001600160601b03811681146109db57600080fd5b600060408284031215613b7957600080fd5b613b8161325d565b8251613b8c8161340b565b81526020830151613b9c81613b52565b60208201529392505050565b600060208284031215613bba57600080fd5b8151612b9f8161340b565b600082821015613bd757613bd7613b09565b500390565b600060208284031215613bee57600080fd5b815167ffffffffffffffff1981168114612b9f57600080fd5b600060208284031215613c1957600080fd5b8151612b9f81613b52565b60006001600160601b0383811690831681811015613c4457613c44613b09565b039392505050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b83811015613c8757815185529382019390820190600101613c6b565b5092979650505050505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b81811015613d3257602081850181015186830182015201613d16565b81811115613d44576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b0383168152604060208201526000825160606040840152613d8360a0840182613d0c565b90506020840151606084015260408401516080840152809150509392505050565b602081526000613db76020830184613d0c565b9392505050565b60008235609e19833603018112613dd457600080fd5b9190910192915050565b8035612d4d8161340b565b600060208284031215613dfb57600080fd5b8151612b9f8161348a565b8183526000602080850194508260005b85811015613853578135613e298161340b565b6001600160a01b0316875281830135613e4181613b52565b6001600160601b0316878401526040968701969190910190600101613e16565b60208082528181018390526000906040808401600586901b8501820187855b88811015613f6057878303603f190184528135368b9003609e19018112613ea657600080fd5b8a0160a0813536839003601e19018112613ebf57600080fd5b820180356001600160401b03811115613ed757600080fd5b8060061b3603841315613ee957600080fd5b828752613efb838801828c8501613e06565b92505050613f0a888301613dde565b6001600160a01b03168886015281870135878601526060613f2c8184016134b5565b63ffffffff16908601526080613f438382016134b5565b63ffffffff16950194909452509285019290850190600101613e80565b509098975050505050505050565b6000816000190483118215151615613f8857613f88613b09565b500290565b600061ffff80831681811415613fa557613fa5613b09565b600101939250505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47424c535369676e6174757265436865636b65722e636865636b5369676e617475a264697066735822122004d14b0c67491c6f81fc686090c2b801587e5f7717760407a276dc8b517e6fc064736f6c634300080c0033608060405234801561001057600080fd5b5060405161077838038061077883398101604081905261002f91610263565b60005b82518110156100775761006583828151811061005057610050610339565b6020026020010151600161008860201b60201c565b8061006f8161034f565b915050610032565b506100818161015a565b5050610378565b6001600160a01b0382166100f95760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b60648201526084015b60405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101c85760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b60648201526084016100f0565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461025e57600080fd5b919050565b6000806040838503121561027657600080fd5b82516001600160401b038082111561028d57600080fd5b818501915085601f8301126102a157600080fd5b81516020828211156102b5576102b5610231565b8160051b604051601f19603f830116810181811086821117156102da576102da610231565b6040529283528183019350848101820192898411156102f857600080fd5b948201945b8386101561031d5761030e86610247565b855294820194938201936102fd565b965061032c9050878201610247565b9450505050509250929050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561037157634e487b7160e01b600052601160045260246000fd5b5060010190565b6103f1806103876000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea264697066735822122027e896eed5afe944d6cc172aef72e26108db4cb82871c29ee297686046c2ee4d64736f6c634300080c0033608060405234801561001057600080fd5b50611e03806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806331b36bd9146100675780633563b0d1146100905780634d2b57fe146100b05780634f739f74146100d05780635c155662146100f0578063cefdc1d414610110575b600080fd5b61007a6100753660046113fa565b610131565b60405161008791906114e8565b60405180910390f35b6100a361009e366004611524565b61024d565b604051610087919061167f565b6100c36100be3660046116f8565b6106e3565b6040516100879190611747565b6100e36100de3660046117df565b6107f8565b60405161008791906118d7565b6101036100fe366004611992565b610f22565b60405161008791906119f5565b61012361011e366004611a2d565b6110ea565b604051610087929190611a64565b606081516001600160401b0381111561014c5761014c611391565b604051908082528060200260200182016040528015610175578160200160208202803683370190505b50905060005b825181101561024657836001600160a01b03166313542a4e8483815181106101a5576101a5611a85565b60200260200101516040518263ffffffff1660e01b81526004016101d891906001600160a01b0391909116815260200190565b602060405180830381865afa1580156101f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102199190611a9b565b82828151811061022b5761022b611a85565b602090810291909101015261023f81611aca565b905061017b565b5092915050565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561028f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b39190611ae5565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103199190611ae5565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa15801561035b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037f9190611ae5565b9050600086516001600160401b0381111561039c5761039c611391565b6040519080825280602002602001820160405280156103cf57816020015b60608152602001906001900390816103ba5790505b50905060005b87518110156106d75760008882815181106103f2576103f2611a85565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa158015610453573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261047b9190810190611b02565b905080516001600160401b0381111561049657610496611391565b6040519080825280602002602001820160405280156104e157816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816104b45790505b508484815181106104f4576104f4611a85565b602002602001018190525060005b81518110156106c1576040518060600160405280876001600160a01b03166347b314e885858151811061053757610537611a85565b60200260200101516040518263ffffffff1660e01b815260040161055d91815260200190565b602060405180830381865afa15801561057a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059e9190611ae5565b6001600160a01b031681526020018383815181106105be576105be611a85565b60200260200101518152602001896001600160a01b031663fa28c6278585815181106105ec576105ec611a85565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa158015610648573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066c9190611b92565b6001600160601b031681525085858151811061068a5761068a611a85565b602002602001015182815181106106a3576106a3611a85565b602002602001018190525080806106b990611aca565b915050610502565b50505080806106cf90611aca565b9150506103d5565b50979650505050505050565b606081516001600160401b038111156106fe576106fe611391565b604051908082528060200260200182016040528015610727578160200160208202803683370190505b50905060005b825181101561024657836001600160a01b031663296bb06484838151811061075757610757611a85565b60200260200101516040518263ffffffff1660e01b815260040161077d91815260200190565b602060405180830381865afa15801561079a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107be9190611ae5565b8282815181106107d0576107d0611a85565b6001600160a01b03909216602092830291909101909101526107f181611aca565b905061072d565b6108236040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610863573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108879190611ae5565b90506108b46040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e906108e4908b9089908990600401611bbb565b600060405180830381865afa158015610901573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109299190810190611c05565b81526040516340e03a8160e11b81526001600160a01b038316906381c075029061095b908b908b908b90600401611cbc565b600060405180830381865afa158015610978573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109a09190810190611c05565b6040820152856001600160401b038111156109bd576109bd611391565b6040519080825280602002602001820160405280156109f057816020015b60608152602001906001900390816109db5790505b50606082015260005b60ff8116871115610e33576000856001600160401b03811115610a1e57610a1e611391565b604051908082528060200260200182016040528015610a47578160200160208202803683370190505b5083606001518360ff1681518110610a6157610a61611a85565b602002602001018190525060005b86811015610d335760008c6001600160a01b03166304ec63518a8a85818110610a9a57610a9a611a85565b905060200201358e88600001518681518110610ab857610ab8611a85565b60200260200101516040518463ffffffff1660e01b8152600401610af59392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610b12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b369190611ce5565b90506001600160c01b038116610bde5760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff16818110610bf357610bf3611a85565b6001600160c01b03841692013560f81c9190911c600190811614159050610d2057856001600160a01b031663dd9846b98a8a85818110610c3557610c35611a85565b905060200201358d8d8860ff16818110610c5157610c51611a85565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015610ca7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccb9190611d0e565b85606001518560ff1681518110610ce457610ce4611a85565b60200260200101518481518110610cfd57610cfd611a85565b63ffffffff9092166020928302919091019091015282610d1c81611aca565b9350505b5080610d2b81611aca565b915050610a6f565b506000816001600160401b03811115610d4e57610d4e611391565b604051908082528060200260200182016040528015610d77578160200160208202803683370190505b50905060005b82811015610df85784606001518460ff1681518110610d9e57610d9e611a85565b60200260200101518181518110610db757610db7611a85565b6020026020010151828281518110610dd157610dd1611a85565b63ffffffff9092166020928302919091019091015280610df081611aca565b915050610d7d565b508084606001518460ff1681518110610e1357610e13611a85565b602002602001018190525050508080610e2b90611d2b565b9150506109f9565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e989190611ae5565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610ecb908b908b908e90600401611d4b565b600060405180830381865afa158015610ee8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f109190810190611c05565b60208301525098975050505050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610f54929190611d75565b600060405180830381865afa158015610f71573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f999190810190611c05565b9050600084516001600160401b03811115610fb657610fb6611391565b604051908082528060200260200182016040528015610fdf578160200160208202803683370190505b50905060005b85518110156110e057866001600160a01b03166304ec635187838151811061100f5761100f611a85565b60200260200101518786858151811061102a5761102a611a85565b60200260200101516040518463ffffffff1660e01b81526004016110679392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015611084573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a89190611ce5565b6001600160c01b03168282815181106110c3576110c3611a85565b6020908102919091010152806110d881611aca565b915050610fe5565b5095945050505050565b604080516001808252818301909252600091606091839160208083019080368337019050509050848160008151811061112557611125611a85565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e906111619088908690600401611d75565b600060405180830381865afa15801561117e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111a69190810190611c05565b6000815181106111b8576111b8611a85565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa158015611224573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112489190611ce5565b6001600160c01b03169050600061125e8261127c565b90508161126c8a838a61024d565b9550955050505050935093915050565b606060008061128a84611348565b61ffff166001600160401b038111156112a5576112a5611391565b6040519080825280601f01601f1916602001820160405280156112cf576020820181803683370190505b5090506000805b8251821080156112e7575061010081105b1561133e576001811b93508584161561132e578060f81b83838151811061131057611310611a85565b60200101906001600160f81b031916908160001a9053508160010191505b61133781611aca565b90506112d6565b5090949350505050565b6000805b82156113735761135d600184611d94565b909216918061136b81611dab565b91505061134c565b92915050565b6001600160a01b038116811461138e57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156113cf576113cf611391565b604052919050565b60006001600160401b038211156113f0576113f0611391565b5060051b60200190565b6000806040838503121561140d57600080fd5b823561141881611379565b91506020838101356001600160401b0381111561143457600080fd5b8401601f8101861361144557600080fd5b8035611458611453826113d7565b6113a7565b81815260059190911b8201830190838101908883111561147757600080fd5b928401925b8284101561149e57833561148f81611379565b8252928401929084019061147c565b80955050505050509250929050565b600081518084526020808501945080840160005b838110156114dd578151875295820195908201906001016114c1565b509495945050505050565b6020815260006114fb60208301846114ad565b9392505050565b63ffffffff8116811461138e57600080fd5b803561151f81611502565b919050565b60008060006060848603121561153957600080fd5b833561154481611379565b92506020848101356001600160401b038082111561156157600080fd5b818701915087601f83011261157557600080fd5b81358181111561158757611587611391565b611599601f8201601f191685016113a7565b915080825288848285010111156115af57600080fd5b80848401858401376000848284010152508094505050506115d260408501611514565b90509250925092565b600081518084526020808501808196508360051b810191508286016000805b86811015611671578385038a52825180518087529087019087870190845b8181101561165c57835180516001600160a01b031684528a8101518b8501526040908101516001600160601b03169084015292890192606090920191600101611618565b50509a87019a955050918501916001016115fa565b509298975050505050505050565b6020815260006114fb60208301846115db565b600082601f8301126116a357600080fd5b813560206116b3611453836113d7565b82815260059290921b840181019181810190868411156116d257600080fd5b8286015b848110156116ed57803583529183019183016116d6565b509695505050505050565b6000806040838503121561170b57600080fd5b823561171681611379565b915060208301356001600160401b0381111561173157600080fd5b61173d85828601611692565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b818110156117885783516001600160a01b031683529284019291840191600101611763565b50909695505050505050565b60008083601f8401126117a657600080fd5b5081356001600160401b038111156117bd57600080fd5b6020830191508360208260051b85010111156117d857600080fd5b9250929050565b600080600080600080608087890312156117f857600080fd5b863561180381611379565b9550602087013561181381611502565b945060408701356001600160401b038082111561182f57600080fd5b818901915089601f83011261184357600080fd5b81358181111561185257600080fd5b8a602082850101111561186457600080fd5b60208301965080955050606089013591508082111561188257600080fd5b5061188f89828a01611794565b979a9699509497509295939492505050565b600081518084526020808501945080840160005b838110156114dd57815163ffffffff16875295820195908201906001016118b5565b6000602080835283516080828501526118f360a08501826118a1565b905081850151601f198086840301604087015261191083836118a1565b9250604087015191508086840301606087015261192d83836118a1565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b8281101561198457848783030184526119728287516118a1565b95880195938801939150600101611958565b509998505050505050505050565b6000806000606084860312156119a757600080fd5b83356119b281611379565b925060208401356001600160401b038111156119cd57600080fd5b6119d986828701611692565b92505060408401356119ea81611502565b809150509250925092565b6020808252825182820181905260009190848201906040850190845b8181101561178857835183529284019291840191600101611a11565b600080600060608486031215611a4257600080fd5b8335611a4d81611379565b92506020840135915060408401356119ea81611502565b828152604060208201526000611a7d60408301846115db565b949350505050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611aad57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000600019821415611ade57611ade611ab4565b5060010190565b600060208284031215611af757600080fd5b81516114fb81611379565b60006020808385031215611b1557600080fd5b82516001600160401b03811115611b2b57600080fd5b8301601f81018513611b3c57600080fd5b8051611b4a611453826113d7565b81815260059190911b82018301908381019087831115611b6957600080fd5b928401925b82841015611b8757835182529284019290840190611b6e565b979650505050505050565b600060208284031215611ba457600080fd5b81516001600160601b03811681146114fb57600080fd5b63ffffffff84168152604060208201819052810182905260006001600160fb1b03831115611be857600080fd5b8260051b8085606085013760009201606001918252509392505050565b60006020808385031215611c1857600080fd5b82516001600160401b03811115611c2e57600080fd5b8301601f81018513611c3f57600080fd5b8051611c4d611453826113d7565b81815260059190911b82018301908381019087831115611c6c57600080fd5b928401925b82841015611b87578351611c8481611502565b82529284019290840190611c71565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff84168152604060208201526000611cdc604083018486611c93565b95945050505050565b600060208284031215611cf757600080fd5b81516001600160c01b03811681146114fb57600080fd5b600060208284031215611d2057600080fd5b81516114fb81611502565b600060ff821660ff811415611d4257611d42611ab4565b60010192915050565b604081526000611d5f604083018587611c93565b905063ffffffff83166020830152949350505050565b63ffffffff83168152604060208201526000611a7d60408301846114ad565b600082821015611da657611da6611ab4565b500390565b600061ffff80831681811415611dc357611dc3611ab4565b600101939250505056fea2646970667358221220f5eda3f040e501199d72cb503d0f2436742d1a0c7e5bffadd7a834d6274bf34b64736f6c634300080c003360a06040523480156200001157600080fd5b506040516200203538038062002035833981016040819052620000349162000116565b6001600160a01b038116608052806200004c62000054565b505062000148565b600054610100900460ff1615620000c15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000114576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b608051611eca6200016b6000396000818161030f0152610fd60152611eca6000f3fe608060405234801561001057600080fd5b50600436106101155760003560e01c80636d14a987116100a2578063bf79ce5811610071578063bf79ce58146103cc578063d5254a8c146103df578063de29fac0146103ff578063e8bb9ae61461041f578063f4e24fe51461044857600080fd5b80636d14a9871461030a5780637916cea6146103315780637ff81a8714610372578063a3db80e2146103a557600080fd5b80633fb27952116100e95780633fb27952146101df57806347b314e8146101f25780635f61a88414610233578063605747d51461028f57806368bccaac146102dd57600080fd5b8062a1f4cb1461011a57806313542a4e1461015b57806326d941f214610192578063377ed99d146101a7575b600080fd5b6101416101283660046118b7565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b6101846101693660046118b7565b6001600160a01b031660009081526001602052604090205490565b604051908152602001610152565b6101a56101a03660046118ea565b61045b565b005b6101ca6101b53660046118ea565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610152565b6101a56101ed366004611975565b610570565b61021b610200366004611a1b565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b6102826102413660046118ea565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b6040516101529190611a34565b6102a261029d366004611a4b565b6105ee565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610152565b6102f06102eb366004611a75565b610681565b60405167ffffffffffffffff199091168152602001610152565b61021b7f000000000000000000000000000000000000000000000000000000000000000081565b61034461033f366004611a4b565b61081c565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610152565b6103856103803660046118b7565b610867565b604080518351815260209384015193810193909352820152606001610152565b6101416103b33660046118ea565b6005602052600090815260409020805460019091015482565b6101846103da366004611abd565b610934565b6103f26103ed366004611b1a565b610d48565b6040516101529190611b92565b61018461040d3660046118b7565b60016020526000908152604090205481565b61021b61042d366004611a1b565b6002602052600090815260409020546001600160a01b031681565b6101a5610456366004611975565b610f62565b610463610fcb565b60ff8116600090815260046020526040902054156104e75760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b60648201526084015b60405180910390fd5b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b610578610fcb565b600061058383610867565b5090506105908282611082565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e836105d1856001600160a01b031660009081526001602052604090205490565b846040516105e193929190611bdc565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff86168252600490529190912080548390811061062b5761062b611c48565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff831660009081526004602052604081208054829190849081106106a8576106a8611c48565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b90910481169282019290925292508516101561076f5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e74000060648201526084016104de565b604081015163ffffffff1615806107955750806040015163ffffffff168463ffffffff16105b6108135760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a4016104de565b51949350505050565b6004602052816000526040600020818154811061083857600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b03821660008181526003602090815260408083208151808301835281548152600191820154818501529484529091528120549091908061092a5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f742072656769737465726564000060648201526084016104de565b9094909350915050565b600061093e610fcb565b600061096c61095536869003860160408701611c5e565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb58114156109f4576040805162461bcd60e51b8152602060048201526024810191909152600080516020611e7583398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b657960648201526084016104de565b6001600160a01b03851660009081526001602052604090205415610a7e5760405162461bcd60e51b81526020600482015260476024820152600080516020611e7583398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a4016104de565b6000818152600260205260409020546001600160a01b031615610b025760405162461bcd60e51b81526020600482015260426024820152600080516020611e7583398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a4016104de565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610b5b918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611c90565b6040516020818303038152906040528051906020012060001c610b7e9190611cdb565b9050610c18610bb7610ba283610b9c368a90038a0160408b01611c5e565b906112cd565b610bb136899003890189611c5e565b90611364565b610bbf6113f8565b610c01610bf285610b9c604080518082018252600080825260209182015281518083019092526001825260029082015290565b610bb1368a90038a018a611c5e565b610c13368a90038a0160808b01611d4d565b6114b8565b610cb35760405162461bcd60e51b815260206004820152606c6024820152600080516020611e7583398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c4016104de565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610d379160808a0190611daa565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610d6557610d65611905565b604051908082528060200260200182016040528015610d8e578160200160208202803683370190505b50905060005b84811015610f59576000868683818110610db057610db0611c48565b919091013560f81c6000818152600460205260409020549092509050801580610e13575060ff821660009081526004602052604081208054909190610df757610df7611c48565b600091825260209091200154600160c01b900463ffffffff1686105b15610ea05760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a4016104de565b805b8015610f435760ff831660009081526004602052604090208790610ec7600184611df4565b81548110610ed757610ed7611c48565b600091825260209091200154600160c01b900463ffffffff1611610f3157610f00600182611df4565b858581518110610f1257610f12611c48565b602002602001019063ffffffff16908163ffffffff1681525050610f43565b80610f3b81611e0b565b915050610ea2565b5050508080610f5190611e22565b915050610d94565b50949350505050565b610f6a610fcb565b6000610f7583610867565b509050610f8a82610f8583611725565b611082565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e836105d1856001600160a01b031660009081526001602052604090205490565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110805760405162461bcd60e51b815260206004820152604e60248201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460448201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460648201526d393c9031b7b7b93234b730ba37b960911b608482015260a4016104de565b565b604080518082019091526000808252602082015260005b83518110156112c75760008482815181106110b6576110b6611c48565b0160209081015160f81c60008181526004909252604090912054909150806111465760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f7420657869737400000060648201526084016104de565b60ff8216600090815260056020908152604091829020825180840190935280548352600101549082015261117a9086611364565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916111c39085611df4565b815481106111d3576111d3611c48565b600091825260209091200180549091504363ffffffff908116600160c01b9092041614156112145780546001600160c01b031916604083901c1781556112b0565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b5050505080806112bf90611e22565b915050611099565b50505050565b60408051808201909152600080825260208201526112e96117e4565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa905080801561131c5761131e565bfe5b508061135c5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016104de565b505092915050565b6040805180820190915260008082526020820152611380611802565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa905080801561131c57508061135c5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016104de565b611400611820565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820182528581526020808201859052825180840190935285835282018390526000916114e7611845565b60005b60028110156116ac576000611500826006611e3d565b905084826002811061151457611514611c48565b60200201515183611526836000611e5c565b600c811061153657611536611c48565b602002015284826002811061154d5761154d611c48565b602002015160200151838260016115649190611e5c565b600c811061157457611574611c48565b602002015283826002811061158b5761158b611c48565b602002015151518361159e836002611e5c565b600c81106115ae576115ae611c48565b60200201528382600281106115c5576115c5611c48565b60200201515160016020020151836115de836003611e5c565b600c81106115ee576115ee611c48565b602002015283826002811061160557611605611c48565b60200201516020015160006002811061162057611620611c48565b602002015183611631836004611e5c565b600c811061164157611641611c48565b602002015283826002811061165857611658611c48565b60200201516020015160016002811061167357611673611c48565b602002015183611684836005611e5c565b600c811061169457611694611c48565b602002015250806116a481611e22565b9150506114ea565b506116b5611864565b60006020826101808560086107d05a03fa905080801561131c5750806117155760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104de565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561174a57506020820151155b15611768575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117ad9190611cdb565b6117d7907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611df4565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280611833611882565b8152602001611840611882565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b03811681146117df57600080fd5b6000602082840312156118c957600080fd5b6118d2826118a0565b9392505050565b803560ff811681146117df57600080fd5b6000602082840312156118fc57600080fd5b6118d2826118d9565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561193e5761193e611905565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561196d5761196d611905565b604052919050565b6000806040838503121561198857600080fd5b611991836118a0565b915060208084013567ffffffffffffffff808211156119af57600080fd5b818601915086601f8301126119c357600080fd5b8135818111156119d5576119d5611905565b6119e7601f8201601f19168501611944565b915080825287848285010111156119fd57600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a2d57600080fd5b5035919050565b81518152602080830151908201526040810161067b565b60008060408385031215611a5e57600080fd5b611a67836118d9565b946020939093013593505050565b600080600060608486031215611a8a57600080fd5b611a93846118d9565b9250602084013563ffffffff81168114611aac57600080fd5b929592945050506040919091013590565b6000806000838503610160811215611ad457600080fd5b611add856118a0565b9350610100601f1982011215611af257600080fd5b602085019250604061011f1982011215611b0b57600080fd5b50610120840190509250925092565b600080600060408486031215611b2f57600080fd5b833567ffffffffffffffff80821115611b4757600080fd5b818601915086601f830112611b5b57600080fd5b813581811115611b6a57600080fd5b876020828501011115611b7c57600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611bd057835163ffffffff1683529284019291840191600101611bae565b50909695505050505050565b60018060a01b038416815260006020848184015260606040840152835180606085015260005b81811015611c1e57858101830151858201608001528201611c02565b81811115611c30576000608083870101525b50601f01601f19169290920160800195945050505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611c7057600080fd5b611c7861191b565b82358152602083013560208201528091505092915050565b8881528760208201528660408201528560608201526040856080830137600060c082016000815260408682375050610100810192909252610120820152610140019695505050505050565b600082611cf857634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611d0e57600080fd5b611d1661191b565b806040840185811115611d2857600080fd5b845b81811015611d42578035845260209384019301611d2a565b509095945050505050565b600060808284031215611d5f57600080fd5b6040516040810181811067ffffffffffffffff82111715611d8257611d82611905565b604052611d8f8484611cfd565b8152611d9e8460408501611cfd565b60208201529392505050565b823581526020808401359082015260c081016040838184013760808201600081526040808501823750600081529392505050565b634e487b7160e01b600052601160045260246000fd5b600082821015611e0657611e06611dde565b500390565b600081611e1a57611e1a611dde565b506000190190565b6000600019821415611e3657611e36611dde565b5060010190565b6000816000190483118215151615611e5757611e57611dde565b500290565b60008219821115611e6f57611e6f611dde565b50019056fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a2646970667358221220ca1b3198ddd9d622c9fe5e8a42fb3885da9ab1818a063d1bfd99cde5d97a14b564736f6c634300080c003360a060405234801561001057600080fd5b5060405161136138038061136183398101604081905261002f9161010c565b6001600160a01b0381166080528061004561004c565b505061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b60805161120361015e60003960008181610142015261085a01526112036000f3fe608060405234801561001057600080fd5b50600436106100b35760003560e01c8063890262451161007157806389026245146101b3578063a48bb0ac146101d3578063bd29b8cd146101e6578063caa3cd76146101f9578063e2e685801461020f578063f34109221461025557600080fd5b8062bff04d146100b857806312d1d74d146100e157806326d941f2146101155780632ed583e51461012a5780636d14a9871461013d5780638121906f1461017c575b600080fd5b6100cb6100c6366004610ebd565b610268565b6040516100d89190610f39565b60405180910390f35b6100f46100ef366004610fad565b61038a565b60408051825163ffffffff16815260209283015192810192909252016100d8565b610128610123366004610fe0565b6103d0565b005b6100f4610138366004610ffb565b6104b4565b6101647f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100d8565b61018f61018a366004610fe0565b61053a565b60408051825163ffffffff90811682526020938401511692810192909252016100d8565b6101c66101c1366004610fad565b610581565b6040516100d8919061103e565b61018f6101e1366004610fad565b6106eb565b6101286101f4366004610ebd565b610762565b610201600081565b6040519081526020016100d8565b61024061021d366004611076565b600160209081526000928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d8565b610240610263366004610fe0565b610830565b606061027261084f565b60008267ffffffffffffffff81111561028d5761028d6110a0565b6040519080825280602002602001820160405280156102b6578160200160208202803683370190505b50905060005b8381101561037f5760008585838181106102d8576102d86110b6565b919091013560f81c60008181526003602052604090205490925090508061031a5760405162461bcd60e51b8152600401610311906110cc565b60405180910390fd5b600061032583610905565b905061033c8984610337600185611137565b6109fe565b8085858151811061034f5761034f6110b6565b602002602001019063ffffffff16908163ffffffff168152505050505080806103779061115c565b9150506102bc565b5090505b9392505050565b60408051808201909152600080825260208201526103a88383610a88565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b6103d861084f565b60ff8116600090815260036020526040902054156104525760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b6064820152608401610311565b60ff166000908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091526000808252602082015260ff8416600090815260026020908152604080832063ffffffff80881685529252909120805490918416908110610501576105016110b6565b600091825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b604080518082019091526000808252602082015261055782610ae0565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b6060600061058f8484610b22565b905060008163ffffffff1667ffffffffffffffff8111156105b2576105b26110a0565b6040519080825280602002602001820160405280156105db578160200160208202803683370190505b50905060005b8263ffffffff168110156106e2576105fa868287610c57565b82828151811061060c5761060c6110b6565b6020026020010181815250506000801b82828151811061062e5761062e6110b6565b602002602001015114156106d05760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a401610311565b806106da8161115c565b9150506105e1565b50949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805463ffffffff8416908110610729576107296110b6565b60009182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b61076a61084f565b60005b8181101561082a576000838383818110610789576107896110b6565b919091013560f81c6000818152600360205260409020549092509050806107c25760405162461bcd60e51b8152600401610311906110cc565b60ff8216600090815260016020908152604080832089845290915281205463ffffffff16906107f084610d2e565b905060006107fe8583610d68565b9050808914610812576108128186856109fe565b505050505080806108229061115c565b91505061076d565b50505050565b600061083b82610ae0565b54600160201b900463ffffffff1692915050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109035760405162461bcd60e51b815260206004820152604d60248201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960448201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260648201526c3c9031b7b7b93234b730ba37b960991b608482015260a401610311565b565b60008061091183610ae0565b805490915060009061093190600160201b900463ffffffff166001611177565b905061093e848383610d92565b60ff841660009081526002602052604081209061095c600184611137565b63ffffffff1681526020810191909152604001600020546103835760ff8416600090815260026020526040812090610995600184611137565b63ffffffff908116825260208083019390935260409182016000908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b6000610a0a8383610a88565b9050610a1883838387610e32565b60ff83166000818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff8216600090815260026020908152604080832063ffffffff851684529091528120805490610ab960018361119f565b81548110610ac957610ac96110b6565b906000526020600020906002020191505092915050565b60ff81166000908152600360205260408120805490610b0060018361119f565b81548110610b1057610b106110b6565b90600052602060002001915050919050565b60ff8216600090815260036020526040812054805b8015610bca5760ff85166000908152600360205260408120610b5a60018461119f565b81548110610b6a57610b6a6110b6565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610bb7576020015192506103ca915050565b5080610bc2816111b6565b915050610b37565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a401610311565b60ff8316600090815260026020908152604080832063ffffffff86168452909152812054805b8015610d225760ff8616600090815260026020908152604080832063ffffffff891684529091528120610cb160018461119f565b81548110610cc157610cc16110b6565b600091825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610d0f57602001519250610383915050565b5080610d1a816111b6565b915050610c7d565b50600095945050505050565b600080610d3a83610ae0565b8054909150600090610d5b90600190600160201b900463ffffffff16611137565b9050610383848383610d92565b600080610d758484610a88565b6001810154909150610d8a8585846000610e32565b949350505050565b81544363ffffffff90811691161415610dc957815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83166000908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b81544363ffffffff90811691161415610e51576001820181905561082a565b60ff93909316600090815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b600080600060408486031215610ed257600080fd5b83359250602084013567ffffffffffffffff80821115610ef157600080fd5b818601915086601f830112610f0557600080fd5b813581811115610f1457600080fd5b876020828501011115610f2657600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f7757835163ffffffff1683529284019291840191600101610f55565b50909695505050505050565b803560ff81168114610f9457600080fd5b919050565b803563ffffffff81168114610f9457600080fd5b60008060408385031215610fc057600080fd5b610fc983610f83565b9150610fd760208401610f99565b90509250929050565b600060208284031215610ff257600080fd5b61038382610f83565b60008060006060848603121561101057600080fd5b61101984610f83565b925061102760208501610f99565b915061103560408501610f99565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f775783518352928401929184019160010161105a565b6000806040838503121561108957600080fd5b61109283610f83565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff8381169083168181101561115457611154611121565b039392505050565b600060001982141561117057611170611121565b5060010190565b600063ffffffff80831681851680830382111561119657611196611121565b01949350505050565b6000828210156111b1576111b1611121565b500390565b6000816111c5576111c5611121565b50600019019056fea26469706673582212200dd424985d748126cfecb042df9778973b6cadcf9f9b71b13b2ee065b53d26c464736f6c634300080c003360c06040523480156200001157600080fd5b50604051620033c8380380620033c8833981016040819052620000349162000065565b6001600160a01b0391821660a05216608052620000a4565b6001600160a01b03811681146200006257600080fd5b50565b600080604083850312156200007957600080fd5b825162000086816200004c565b602084015190925062000099816200004c565b809150509250929050565b60805160a0516132e9620000df6000396000818161037a01528181611a470152611b7901526000818161052901526118a801526132e96000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612803565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e36600461281e565b610597565b604051610217929190612848565b61025461024f36600461287f565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a3660046128fa565b610602565b005b61029461028f3660046129bb565b610860565b604051610217929190612a5a565b6102b56102b0366004612a7f565b610a78565b6040516102179190612aab565b61020d6102d0366004612803565b60ff1660009081526003602052604090205490565b61020d6102f3366004612a7f565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612a7f565b610b17565b61020d670de0b6b3a764000081565b61027f610345366004612bb4565b610b30565b61035d6103583660046129bb565b610e78565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc366004612c70565b610f17565b6040516102179190612cc2565b61039c6103fc36600461281e565b611157565b61041461040f366004612d00565b61118f565b6040516102179190612d33565b61043461042f36600461281e565b611227565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f36600461281e565b6112a1565b61027f610482366004612d7f565b611330565b61027f610495366004612da9565b611351565b6102546104a8366004612803565b6000602081905290815260409020546001600160601b031681565b61027f6104d1366004612e75565b6113c3565b6102546104e4366004612ec2565b6113df565b6102546104f7366004612803565b61145d565b61050f61050a366004612efe565b6114b0565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b610254610559366004612f3a565b6114c5565b61041461056c366004612a7f565b61155a565b61025461057f366004612efe565b61163f565b61027f610592366004612f7c565b6116a0565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b6000826105ec816117cb565b60006105f88585611847565b5095945050505050565b61060a611a45565b84610614816117cb565b838061068f576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f766964656460648201526084015b60405180910390fd5b8281146107045760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610686565b60ff87166000908152600360205260408120905b828110156108555785858281811061073257610732612fd9565b90506020020160208101906107479190612fef565b8289898481811061075a5761075a612fd9565b905060200201358154811061077157610771612fd9565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106107da576107da612fd9565b90506020020135815481106107f1576107f1612fd9565b6000918252602090912001546001600160a01b031688888581811061081857610818612fd9565b905060200201602081019061082d9190612fef565b60405161083b929190612848565b60405180910390a28061084d81613020565b915050610718565b505050505050505050565b60608061086b611b6e565b6000836001600160401b0381111561088557610885612b23565b6040519080825280602002602001820160405280156108ae578160200160208202803683370190505b5090506000846001600160401b038111156108cb576108cb612b23565b6040519080825280602002602001820160405280156108f4578160200160208202803683370190505b50905060005b85811015610a6a57600087878381811061091657610916612fd9565b919091013560f81c915061092b9050816117cb565b600080610938838d611847565b91509150806109d55760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610686565b60006109e28c8585611c21565b9050828786815181106109f7576109f7612fd9565b60200260200101906001600160601b031690816001600160601b031681525050610a218482611ea1565b868681518110610a3357610a33612fd9565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610a6290613020565b9150506108fa565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610b0a576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610ab1565b5050505090505b92915050565b600080610b24848461155a565b60400151949350505050565b610b38611a45565b81610b42816117cb565b815180610bb75760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610686565b60ff841660009081526003602090815260408083206004909252822090915b83811015610e6f578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610c1657610c16612fd9565b602002602001015181548110610c2e57610c2e612fd9565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610c8c57610c8c612fd9565b602002602001015181548110610ca457610ca4612fd9565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610ce49060019061303b565b81548110610cf457610cf4612fd9565b9060005260206000200183878381518110610d1157610d11612fd9565b602002602001015181548110610d2957610d29612fd9565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080610d7c57610d7c613052565b60008281526020812082016000199081019190915501905581548290610da49060019061303b565b81548110610db457610db4612fd9565b9060005260206000200160009054906101000a90046001600160a01b031682878381518110610de557610de5612fd9565b602002602001015181548110610dfd57610dfd612fd9565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081805480610e3b57610e3b613052565b600082815260209020810160001990810180546001600160a01b031916905501905580610e6781613020565b915050610bd6565b50505050505050565b6000610e82611b6e565b6000805b838110156105f8576000858583818110610ea257610ea2612fd9565b919091013560f81c9150610eb79050816117cb565b600080610ec4838b611847565b9150915080610ee65760009150600160ff84161b6001600160c01b0386161794505b6000610ef38a8585611c21565b9050610eff8482611ea1565b50505050508080610f0f90613020565b915050610e86565b60606000826001600160401b03811115610f3357610f33612b23565b604051908082528060200260200182016040528015610f5c578160200160208202803683370190505b50905060005b8381101561114c576000858583818110610f7e57610f7e612fd9565b919091013560f81c9150610f939050816117cb565b60ff81166000908152600160205260408120805463ffffffff8a169290610fbc57610fbc612fd9565b60009182526020909120015463ffffffff1611156110685760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610686565b60ff8116600090815260016020526040812054905b818110156111365760ff8316600090815260016020819052604090912063ffffffff8b16916110ac848661303b565b6110b6919061303b565b815481106110c6576110c6612fd9565b60009182526020909120015463ffffffff16116111245760016110e9828461303b565b6110f3919061303b565b85858151811061110557611105612fd9565b602002602001019063ffffffff16908163ffffffff1681525050611136565b8061112e81613020565b91505061107d565b505050808061114490613020565b915050610f62565b5090505b9392505050565b6004602052816000526040600020818154811061117357600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106111d4576111d4612fd9565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff8316600090815260036020526040902080548390811061125f5761125f612fd9565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260019052919091208054839081106112de576112de612fd9565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b611338611a45565b81611342816117cb565b61134c838361201b565b505050565b611359611b6e565b60005b818110156113bd57600083838381811061137857611378612fd9565b919091013560f81c915061138d9050816117cb565b600061139b86836000611c21565b90506113a78282611ea1565b50505080806113b590613020565b91505061135c565b50505050565b6113cb611a45565b816113d5816117cb565b61134c8383612084565b60ff8316600090815260016020526040812080548291908490811061140657611406612fd9565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610b2481856124c7565b60ff8116600090815260016020819052604082208054909161147e9161303b565b8154811061148e5761148e612fd9565b600091825260209091200154600160401b90046001600160601b031692915050565b60006114bd848484612641565b949350505050565b600082815260026020908152604080832060ff8816845290915281208054829190849081106114f6576114f6612fd9565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b9093049290921690820152905061154d81866124c7565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff871683528152848220548551938401865282845290830182905293820152909190816115b3579150610b119050565b600085815260026020908152604080832060ff8816845290915290206115da60018461303b565b815481106115ea576115ea612fd9565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610b11915050565b600083815260026020908152604080832060ff861684529091528120611666858585612641565b63ffffffff168154811061167c5761167c612fd9565b600091825260209091200154600160401b90046001600160601b0316949350505050565b6116a8611b6e565b60ff8316600090815260016020526040902054156117265760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610686565b6117308382612084565b61173a838361201b565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b60ff81166000908152600160205260409020546118445760405162461bcd60e51b815260206004820152603160248201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726044820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b6064820152608401610686565b50565b6000806000806118668660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016926390041347926118db928c9201613068565b600060405180830381865afa1580156118f8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261192091908101906130c7565b905060005b83811015611a115760ff8916600090815260036020526040902080548290811061195157611951612fd9565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b031690820152835190945083908390811061199f5761199f612fd9565b602002602001015111156119ff57670de0b6b3a764000083602001516001600160601b03168383815181106119d6576119d6612fd9565b60200260200101516119e89190613157565b6119f29190613176565b6119fc9086613198565b94505b80611a0981613020565b915050611925565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac791906131c3565b6001600160a01b0316336001600160a01b031614611b6c5760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60448201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746064820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608482015260a401610686565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b6c5760405162461bcd60e51b815260206004820152604c60248201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960448201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260648201526b3ca1b7b7b93234b730ba37b960a11b608482015260a401610686565b600083815260026020908152604080832060ff86168452909152812054819080611ce557600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055611e47565b600086815260026020908152604080832060ff891684529091528120611d0c60018461303b565b81548110611d1c57611d1c612fd9565b600091825260209091200180546001600160601b03600160401b909104811694509091508516831415611d555760009350505050611150565b80544363ffffffff90811691161415611d8f578054600160401b600160a01b031916600160401b6001600160601b03871602178155611e45565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a2611e9782856127a7565b9695505050505050565b60ff821660009081526001602081905260408220805491839190611ec5908461303b565b81548110611ed557611ed5612fd9565b9060005260206000200190508360001415611f045754600160401b90046001600160601b03169150610b119050565b8054600090611f2390600160401b90046001600160601b0316866127bf565b82549091504363ffffffff90811691161415611f60578154600160401b600160a01b031916600160401b6001600160601b03831602178255612012565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b60008151116120e95760405162461bcd60e51b8152602060048201526038602482015260008051602061329483398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610686565b805160ff83166000908152600360209081526040909120549061210c83836131e0565b111561217c5760405162461bcd60e51b8152602060048201526045602482015260008051602061329483398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610686565b60005b828110156124c05760005b61219482846131e0565b811015612275578482815181106121ad576121ad612fd9565b6020026020010151600001516001600160a01b0316600360008860ff1660ff16815260200190815260200160002082815481106121ec576121ec612fd9565b6000918252602090912001546001600160a01b031614156122635760405162461bcd60e51b815260206004820152603d602482015260008051602061329483398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610686565b8061226d81613020565b91505061218a565b50600084828151811061228a5761228a612fd9565b6020026020010151602001516001600160601b03161161230f5760405162461bcd60e51b8152602060048201526046602482015260008051602061329483398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610686565b60ff85166000908152600360205260409020845185908390811061233557612335612fd9565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff871682526004905260409020845185908390811061239a5761239a612fd9565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f54049086908490811061241157612411612fd9565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7585838151811061246e5761246e612fd9565b60200260200101516000015186848151811061248c5761248c612fd9565b6020026020010151602001516040516124a6929190612848565b60405180910390a2806124b881613020565b91505061217f565b5050505050565b816000015163ffffffff168163ffffffff16101561256c5760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610686565b602082015163ffffffff1615806125925750816020015163ffffffff168163ffffffff16105b61263d5760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610686565b5050565b600083815260026020908152604080832060ff86168452909152812054805b80156126e257600086815260026020908152604080832060ff89168452909152902063ffffffff85169061269560018461303b565b815481106126a5576126a5612fd9565b60009182526020909120015463ffffffff16116126d0576126c760018261303b565b92505050611150565b806126da816131f8565b915050612660565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610686565b60006111506001600160601b0380851690841661320f565b6000808212156127e3576127d28261324e565b6127dc908461326b565b9050610b11565b6127dc8284613198565b803560ff811681146127fe57600080fd5b919050565b60006020828403121561281557600080fd5b611150826127ed565b6000806040838503121561283157600080fd5b61283a836127ed565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b038116811461184457600080fd5b6000806040838503121561289257600080fd5b61289b836127ed565b915060208301356128ab8161286a565b809150509250929050565b60008083601f8401126128c857600080fd5b5081356001600160401b038111156128df57600080fd5b6020830191508360208260051b8501011115611a3e57600080fd5b60008060008060006060868803121561291257600080fd5b61291b866127ed565b945060208601356001600160401b038082111561293757600080fd5b61294389838a016128b6565b9096509450604088013591508082111561295c57600080fd5b50612969888289016128b6565b969995985093965092949392505050565b60008083601f84011261298c57600080fd5b5081356001600160401b038111156129a357600080fd5b602083019150836020828501011115611a3e57600080fd5b600080600080606085870312156129d157600080fd5b84356129dc8161286a565b93506020850135925060408501356001600160401b038111156129fe57600080fd5b612a0a8782880161297a565b95989497509550505050565b600081518084526020808501945080840160005b83811015612a4f5781516001600160601b031687529582019590820190600101612a2a565b509495945050505050565b604081526000612a6d6040830185612a16565b82810360208401526120128185612a16565b60008060408385031215612a9257600080fd5b82359150612aa2602084016127ed565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612b1757612b0483855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612ac7565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612b5b57612b5b612b23565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612b8957612b89612b23565b604052919050565b60006001600160401b03821115612baa57612baa612b23565b5060051b60200190565b60008060408385031215612bc757600080fd5b612bd0836127ed565b91506020808401356001600160401b03811115612bec57600080fd5b8401601f81018613612bfd57600080fd5b8035612c10612c0b82612b91565b612b61565b81815260059190911b82018301908381019088831115612c2f57600080fd5b928401925b82841015612c4d57833582529284019290840190612c34565b80955050505050509250929050565b803563ffffffff811681146127fe57600080fd5b600080600060408486031215612c8557600080fd5b612c8e84612c5c565b925060208401356001600160401b03811115612ca957600080fd5b612cb58682870161297a565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612b1757835163ffffffff1683529284019291840191600101612cde565b600080600060608486031215612d1557600080fd5b612d1e846127ed565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610b11565b80356001600160601b03811681146127fe57600080fd5b60008060408385031215612d9257600080fd5b612d9b836127ed565b9150612aa260208401612d68565b600080600060408486031215612dbe57600080fd5b8335925060208401356001600160401b03811115612ca957600080fd5b600082601f830112612dec57600080fd5b81356020612dfc612c0b83612b91565b82815260069290921b84018101918181019086841115612e1b57600080fd5b8286015b84811015612e6a5760408189031215612e385760008081fd5b612e40612b39565b8135612e4b8161286a565b8152612e58828601612d68565b81860152835291830191604001612e1f565b509695505050505050565b60008060408385031215612e8857600080fd5b612e91836127ed565b915060208301356001600160401b03811115612eac57600080fd5b612eb885828601612ddb565b9150509250929050565b600080600060608486031215612ed757600080fd5b612ee0846127ed565b9250612eee60208501612c5c565b9150604084013590509250925092565b600080600060608486031215612f1357600080fd5b83359250612f23602085016127ed565b9150612f3160408501612c5c565b90509250925092565b60008060008060808587031215612f5057600080fd5b612f59856127ed565b9350612f6760208601612c5c565b93969395505050506040820135916060013590565b600080600060608486031215612f9157600080fd5b612f9a846127ed565b9250612fa860208501612d68565b915060408401356001600160401b03811115612fc357600080fd5b612fcf86828701612ddb565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561300157600080fd5b61115082612d68565b634e487b7160e01b600052601160045260246000fd5b60006000198214156130345761303461300a565b5060010190565b60008282101561304d5761304d61300a565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b818110156130b957855485168352600195860195928401920161309b565b509098975050505050505050565b600060208083850312156130da57600080fd5b82516001600160401b038111156130f057600080fd5b8301601f8101851361310157600080fd5b805161310f612c0b82612b91565b81815260059190911b8201830190838101908783111561312e57600080fd5b928401925b8284101561314c57835182529284019290840190613133565b979650505050505050565b60008160001904831182151516156131715761317161300a565b500290565b60008261319357634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b038083168185168083038211156131ba576131ba61300a565b01949350505050565b6000602082840312156131d557600080fd5b81516111508161286a565b600082198211156131f3576131f361300a565b500190565b6000816132075761320761300a565b506000190190565b60008083128015600160ff1b85018412161561322d5761322d61300a565b6001600160ff1b03840183138116156132485761324861300a565b50500390565b6000600160ff1b8214156132645761326461300a565b5060000390565b60006001600160601b038381169083168181101561328b5761328b61300a565b03939250505056fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a264697066735822122055bf78a9addcfc53e668f5d4aa34693b1a33cd55facc1b2c53fbb2b06fa027ba64736f6c634300080c00336101c06040523480156200001257600080fd5b506040516200639938038062006399833981016040819052620000359162000254565b604080518082018252601681527f4156535265676973747279436f6f7264696e61746f720000000000000000000060208083019182528351808501909452600684526576302e302e3160d01b908401528151902060e08190527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a996101008190524660a05287938793879387939192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620001358184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c05261012052505050506001600160a01b039384166101405291831661018052821661016052166101a0526200016f62000179565b50505050620002bc565b600054610100900460ff1615620001e65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000239576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200025157600080fd5b50565b600080600080608085870312156200026b57600080fd5b845162000278816200023b565b60208601519094506200028b816200023b565b60408601519093506200029e816200023b565b6060860151909250620002b1816200023b565b939692955090935050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615fd5620003c4600039600081816106ab0152818161119d0152818161208501528181612eb50152818161376c0152613d440152600081816105f001528181612010015281816124b801528181612e35015281816136c3015281816139190152613cc30152600081816105b601528181610f380152818161204e01528181612db701528181612f9d01528181613013015281816136430152613dc00152600081816104fa01528181612d0d015261358b01526000613fc70152600061401601526000613ff101526000613f4a01526000613f7401526000613f9e0152615fd56000f3fe608060405234801561001057600080fd5b50600436106102d55760003560e01c80635df45946116101825780639feab859116100e9578063d72d8dd6116100a2578063e65797ad1161007c578063e65797ad14610798578063f2fde38b1461083b578063fabc1cbc1461084e578063fd39105a1461086157600080fd5b8063d72d8dd61461076a578063d75b4c8814610772578063dd8283f31461078557600080fd5b80639feab859146106cd578063a50857bf146106f4578063a96f783e14610707578063c391425e14610710578063ca0de88214610730578063ca4f2d971461075757600080fd5b8063871ef0491161013b578063871ef04914610640578063886f1195146106535780638da5cb5b1461066c5780639aa1653d146106745780639b5d177b146106935780639e9923c2146106a657600080fd5b80635df45946146105b15780636347c900146105d857806368304835146105eb5780636e3b17db14610612578063715018a61461062557806384ca52131461062d57600080fd5b8063249a0c42116102415780633c2a7f4c116101fa578063595c6a67116101d4578063595c6a671461056f5780635ac86ab7146105775780635b0b829f146105965780635c975abb146105a957600080fd5b80633c2a7f4c1461051c5780635140a5481461053c5780635865c60c1461054f57600080fd5b8063249a0c421461048957806328f61b31146104a9578063296bb064146104bc57806329d1e0c3146104cf5780632cdd1e86146104e25780633998fdd3146104f557600080fd5b806310d67a2f1161029357806310d67a2f1461039e578063125e0584146103b157806313542a4e146103d1578063136439dd146103fa5780631478851f1461040d5780631eb812da1461044057600080fd5b8062cf2ab5146102da57806303fd3492146102ef57806304ec635114610322578063054310e61461034d5780630cf4b767146103785780630d3f21341461038b575b600080fd5b6102ed6102e8366004614ac7565b61089d565b005b61030f6102fd366004614b08565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b610335610330366004614b33565b6109b3565b6040516001600160c01b039091168152602001610319565b609d54610360906001600160a01b031681565b6040516001600160a01b039091168152602001610319565b6102ed610386366004614c52565b610ba9565b6102ed610399366004614b08565b610c91565b6102ed6103ac366004614cc7565b610c9e565b61030f6103bf366004614cc7565b609f6020526000908152604090205481565b61030f6103df366004614cc7565b6001600160a01b031660009081526099602052604090205490565b6102ed610408366004614b08565b610d51565b61043061041b366004614b08565b609a6020526000908152604090205460ff1681565b6040519015158152602001610319565b61045361044e366004614ce4565b610e8e565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b031690820152606001610319565b61030f610497366004614d17565b609b6020526000908152604090205481565b609e54610360906001600160a01b031681565b6103606104ca366004614b08565b610f1f565b6102ed6104dd366004614cc7565b610fab565b6102ed6104f0366004614cc7565b610fbc565b6103607f000000000000000000000000000000000000000000000000000000000000000081565b61052f61052a366004614cc7565b610fcd565b6040516103199190614d32565b6102ed61054a366004614d8a565b61104c565b61056261055d366004614cc7565b61155d565b6040516103199190614e2d565b6102ed6115d1565b610430610585366004614d17565b6001805460ff9092161b9081161490565b6102ed6105a4366004614eb2565b61169d565b60015461030f565b6103607f000000000000000000000000000000000000000000000000000000000000000081565b6103606105e6366004614b08565b6116be565b6103607f000000000000000000000000000000000000000000000000000000000000000081565b6102ed610620366004614ee6565b6116e8565b6102ed6117fe565b61030f61063b366004614f9d565b611812565b61033561064e366004614b08565b61185c565b600054610360906201000090046001600160a01b031681565b610360611867565b6096546106819060ff1681565b60405160ff9091168152602001610319565b6102ed6106a1366004615136565b611880565b6103607f000000000000000000000000000000000000000000000000000000000000000081565b61030f7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6102ed61070236600461522f565b611bb8565b61030f60a05481565b61072361071e3660046152d7565b611d3c565b604051610319919061537c565b61030f7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6102ed6107653660046153c6565b611df5565b609c5461030f565b6102ed6107803660046154ac565b611e5c565b6102ed61079336600461565f565b611e6f565b6108076107a6366004614d17565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff908116918301919091529282015190921690820152606001610319565b6102ed610849366004614cc7565b612173565b6102ed61085c366004614b08565b6121e9565b61089061086f366004614cc7565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516103199190615733565b600154600290600490811614156108cf5760405162461bcd60e51b81526004016108c690615741565b60405180910390fd5b60005b828110156109ad5760008484838181106108ee576108ee615778565b90506020020160208101906109039190614cc7565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff16600281111561094e5761094e614df5565b600281111561095f5761095f614df5565b9052508051909150600061097282612345565b90506000610988826001600160c01b03166123ae565b905061099585858361247a565b505050505080806109a5906157a4565b9150506108d2565b50505050565b60008381526098602052604081208054829190849081106109d6576109d6615778565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610ad05760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c4016108c6565b602081015163ffffffff161580610af65750806020015163ffffffff168463ffffffff16105b610b9d5760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c4016108c6565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610bd257610bd2614df5565b14610c455760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f7420726567697374657265640000000060648201526084016108c6565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610c8690849061580c565b60405180910390a250565b610c99612567565b60a055565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d15919061581f565b6001600160a01b0316336001600160a01b031614610d455760405162461bcd60e51b81526004016108c69061583c565b610d4e816125c6565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc29190615886565b610dde5760405162461bcd60e51b81526004016108c6906158a8565b60015481811614610e575760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016108c6565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610c86565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610ecb57610ecb615778565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f19919061581f565b610fb3612567565b610d4e816126cb565b610fc4612567565b610d4e81612734565b6040805180820190915260008082526020820152610f196110477f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de68460405160200161102c9291909182526001600160a01b0316602082015260400190565b6040516020818303038152906040528051906020012061279d565b6127eb565b600154600290600490811614156110755760405162461bcd60e51b81526004016108c690615741565b60006110bd84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff16915061287b9050565b905084831461112e5760405162461bcd60e51b81526020600482015260436024820152600080516020615f4083398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a4016108c6565b60005b8381101561155457600085858381811061114d5761114d615778565b919091013560f81c9150369050600089898581811061116e5761116e615778565b905060200281019061118091906158f0565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa1580156111ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112109190615939565b63ffffffff1681146112ac5760405162461bcd60e51b81526020600482015260656024820152600080516020615f4083398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c4016108c6565b6000805b828110156114f35760008484838181106112cc576112cc615778565b90506020020160208101906112e19190614cc7565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff16600281111561132c5761132c614df5565b600281111561133d5761133d614df5565b9052508051909150600061135082612345565b905060016001600160c01b03821660ff8b161c8116146113d45760405162461bcd60e51b815260206004820152604460248201819052600080516020615f40833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a4016108c6565b856001600160a01b0316846001600160a01b03161161147f5760405162461bcd60e51b81526020600482015260676024820152600080516020615f4083398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c4016108c6565b506114dd83838f8f8d908e60016114969190615956565b926114a39392919061596e565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061247a92505050565b509092506114ec9050816157a4565b90506112b0565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a2505050508061154d906157a4565b9050611131565b50505050505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff1660028111156115b7576115b7614df5565b60028111156115c8576115c8614df5565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561161e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116429190615886565b61165e5760405162461bcd60e51b81526004016108c6906158a8565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6116a5612567565b816116af8161290c565b6116b9838361298a565b505050565b609c81815481106116ce57600080fd5b6000918252602090912001546001600160a01b0316905081565b6116f0612a37565b6001600160a01b0383166000908152609f602090815260408083204290556099825280832080548251601f870185900485028101850190935285835290939092909161175d9187908790819084018382808284376000920191909152505060965460ff16915061287b9050565b9050600061176a83612345565b905060018085015460ff16600281111561178657611786614df5565b14801561179b57506001600160c01b03821615155b80156117b957506117b96001600160c01b0383811690831681161490565b15611554576115548787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ab792505050565b611806612567565b6118106000612f29565b565b60006118527f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a878787878760405160200161102c96959493929190615998565b9695505050505050565b6000610f1982612345565b600061187b6064546001600160a01b031690565b905090565b6001805460009190811614156118a85760405162461bcd60e51b81526004016108c690615741565b83891461192b5760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a4016108c6565b60006119373388612f7b565b905061199733828888808060200260200160405190810160405280939291908181526020016000905b8282101561198c5761197d60408302860136819003810190615a1d565b81526020019060010190611960565b5050505050876130ac565b60006119de33838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613239915050565b905060005b8b811015611ba9576000609760008f8f85818110611a0357611a03615778565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b90910490931691810191909152845180519193509084908110611a7057611a70615778565b602002602001015163ffffffff161115611b9657611b118e8e84818110611a9957611a99615778565b9050013560f81c60f81b60f81c84604001518481518110611abc57611abc615778565b60200260200101513386602001518681518110611adb57611adb615778565b60200260200101518d8d88818110611af557611af5615778565b905060400201803603810190611b0b9190615a1d565b866137fa565b611b96898984818110611b2657611b26615778565b9050604002016020016020810190611b3e9190614cc7565b8f8f8590866001611b4f9190615956565b92611b5c9392919061596e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ab792505050565b5080611ba1816157a4565b9150506119e3565b50505050505050505050505050565b600180546000919081161415611be05760405162461bcd60e51b81526004016108c690615741565b6000611bec3385612f7b565b90506000611c3533838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613239915050565b51905060005b88811015611d305760008a8a83818110611c5757611c57615778565b919091013560f81c600081815260976020526040902054855191935063ffffffff169150849084908110611c8d57611c8d615778565b602002602001015163ffffffff161115611d1d5760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a4016108c6565b5080611d28816157a4565b915050611c3b565b50505050505050505050565b6060600082516001600160401b03811115611d5957611d59614b6b565b604051908082528060200260200182016040528015611d82578160200160208202803683370190505b50905060005b8351811015611ded57611db485858381518110611da757611da7615778565b6020026020010151613acf565b828281518110611dc657611dc6615778565b63ffffffff9092166020928302919091019091015280611de5816157a4565b915050611d88565b509392505050565b6001805460029081161415611e1c5760405162461bcd60e51b81526004016108c690615741565b6116b93384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ab792505050565b611e64612567565b6116b9838383613c0b565b600054610100900460ff1615808015611e8f5750600054600160ff909116105b80611ea95750303b158015611ea9575060005460ff166001145b611f0c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108c6565b6000805460ff191660011790558015611f2f576000805461ff0019166101001790555b82518451148015611f41575081518351145b611fab5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b60648201526084016108c6565b611fb489612f29565b611fbe8686613e22565b611fc7886126cb565b611fd087612734565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b84518110156121215761210f8582815181106120ce576120ce615778565b60200260200101518583815181106120e8576120e8615778565b602002602001015185848151811061210257612102615778565b6020026020010151613c0b565b80612119816157a4565b9150506120b0565b508015612168576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b61217b612567565b6001600160a01b0381166121e05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108c6565b610d4e81612f29565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561223c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612260919061581f565b6001600160a01b0316336001600160a01b0316146122905760405162461bcd60e51b81526004016108c69061583c565b60015419811960015419161461230e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016108c6565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610c86565b600081815260986020526040812054806123625750600092915050565b600083815260986020526040902061237b600183615a39565b8154811061238b5761238b615778565b600091825260209091200154600160401b90046001600160c01b03169392505050565b60606000806123bc84613f12565b61ffff166001600160401b038111156123d7576123d7614b6b565b6040519080825280601f01601f191660200182016040528015612401576020820181803683370190505b5090506000805b825182108015612419575061010081105b15612470576001811b935085841615612460578060f81b83838151811061244257612442615778565b60200101906001600160f81b031916908160001a9053508160010191505b612469816157a4565b9050612408565b5090949350505050565b60018260200151600281111561249257612492614df5565b1461249c57505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe906124f190889086908890600401615a50565b6020604051808303816000875af1158015612510573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125349190615a80565b90506001600160c01b03811615612560576125608561255b836001600160c01b03166123ae565b612ab7565b5050505050565b33612570611867565b6001600160a01b0316146118105760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b6001600160a01b0381166126545760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016108c6565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610f196127aa613f3d565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60408051808201909152600080825260208201526000808061281b600080516020615f8083398151915286615abf565b90505b61282781614064565b9093509150600080516020615f80833981519152828309831415612861576040805180820190915290815260208101919091529392505050565b600080516020615f8083398151915260018208905061281e565b600080612887846140e6565b9050808360ff166001901b116129055760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c75650060648201526084016108c6565b9392505050565b60965460ff90811690821610610d4e5760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f7420657869737400000000000000000060648201526084016108c6565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b609e546001600160a01b031633146118105760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f7200000000000060648201526084016108c6565b6001600160a01b0382166000908152609960205260409020805460018083015460ff166002811115612aeb57612aeb614df5565b14612b6a5760405162461bcd60e51b815260206004820152604360248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a4016108c6565b609654600090612b7e90859060ff1661287b565b90506000612b8b83612345565b90506001600160c01b038216612c095760405162461bcd60e51b815260206004820152603b60248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206269746d61702063616e6e6f742062652030000000000060648201526084016108c6565b612c206001600160c01b0383811690831681161490565b612cb85760405162461bcd60e51b815260206004820152605960248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a4016108c6565b6001600160c01b0382811619821616612cd18482614273565b6001600160c01b038116612da05760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015612d5157600080fd5b505af1158015612d65573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590612dee908a908a90600401615ad3565b600060405180830381600087803b158015612e0857600080fd5b505af1158015612e1c573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612e6e9087908a90600401615af7565b600060405180830381600087803b158015612e8857600080fd5b505af1158015612e9c573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612eee9087908a90600401615af7565b600060405180830381600087803b158015612f0857600080fd5b505af1158015612f1c573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015612fe6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300a9190615b10565b905080610f19577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce58848461304b87610fcd565b6040518463ffffffff1660e01b815260040161306993929190615b29565b6020604051808303816000875af1158015613088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129059190615b10565b6020808201516000908152609a909152604090205460ff16156131525760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a4016108c6565b42816040015110156131e75760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a4016108c6565b602080820180516000908152609a909252604091829020805460ff19166001179055609d549051918301516109ad926001600160a01b03909216916132329188918891889190611812565b8351614433565b61325d60405180606001604052806060815260200160608152602001606081525090565b60006132a586868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff16915061287b9050565b905060006132b288612345565b90506001600160c01b0382166133305760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f7420626520300000000000000060648201526084016108c6565b8082166001600160c01b0316156133e65760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c4016108c6565b60a0546001600160a01b038a166000908152609f60205260409020546001600160c01b038381169085161791429161341e9190615956565b1061349f5760405162461bcd60e51b815260206004820152604560248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f722063616e6e6f74207265726567697374656064820152641c881e595d60da1b608482015260a4016108c6565b6134a98982614273565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516134d9919061580c565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561351357613513614df5565b1461362c576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff19169083600281111561356e5761356e614df5565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d906135c3908d908990600401615ba8565b600060405180830381600087803b1580156135dd57600080fd5b505af11580156135f1573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb279529061367c908d908c908c90600401615c1c565b600060405180830381600087803b15801561369657600080fd5b505af11580156136aa573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063255047779150613700908d908d908d908d90600401615c41565b6000604051808303816000875af115801561371f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137479190810190615ccd565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d906137a4908c908c908c90600401615d30565b6000604051808303816000875af11580156137c3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137eb9190810190615d4a565b84525050509695505050505050565b6020808301516001600160a01b03808216600081815260999094526040909320549192908716141561387a5760405162461bcd60e51b81526020600482015260356024820152600080516020615f6083398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b60648201526084016108c6565b8760ff16846000015160ff16146138f75760405162461bcd60e51b81526020600482015260476024820152600080516020615f6083398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a4016108c6565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015613968573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061398c9190615de3565b905061399881856145ed565b6001600160601b0316866001600160601b031611613a2b5760405162461bcd60e51b81526020600482015260566024820152600080516020615f6083398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a4016108c6565b613a358885614611565b6001600160601b0316816001600160601b0316106121685760405162461bcd60e51b815260206004820152605c6024820152600080516020615f6083398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a4016108c6565b600081815260986020526040812054815b81811015613b61576001613af48284615a39565b613afe9190615a39565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff1681548110613b3157613b31615778565b60009182526020909120015463ffffffff1611613b4f575050610f19565b80613b59816157a4565b915050613ae0565b5060405162461bcd60e51b815260206004820152606c60248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c4016108c6565b60965460ff1660c08110613c7f5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b60648201526084016108c6565b613c8a816001615e00565b6096805460ff191660ff9290921691909117905580613ca9818661298a565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a7790613cfc90849088908890600401615e25565b600060405180830381600087803b158015613d1657600080fd5b505af1158015613d2a573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613d9257600080fd5b505af1158015613da6573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613e0e57600080fd5b505af1158015612168573d6000803e3d6000fd5b6000546201000090046001600160a01b0316158015613e4957506001600160a01b03821615155b613ecb5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016108c6565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2613f0e826125c6565b5050565b6000805b8215610f1957613f27600184615a39565b9092169180613f3581615e9e565b915050613f16565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015613f9657507f000000000000000000000000000000000000000000000000000000000000000046145b15613fc057507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615f808339815191526003600080516020615f8083398151915286600080516020615f808339815191528889090908905060006140da827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615f8083398151915261462b565b91959194509092505050565b60006101008251111561416f5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016108c6565b815161417d57506000919050565b6000808360008151811061419357614193615778565b0160200151600160f89190911c81901b92505b845181101561426a578481815181106141c1576141c1615778565b0160200151600160f89190911c1b91508282116142565760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016108c6565b91811791614263816157a4565b90506141a6565b50909392505050565b60008281526098602052604090205480614318576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b6000838152609860205260408120614331600184615a39565b8154811061434157614341615778565b600091825260209091200180549091504363ffffffff908116911614156143855780546001600160401b0316600160401b6001600160c01b038516021781556109ad565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b1561454d57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906144739086908690600401615af7565b602060405180830381865afa158015614490573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144b49190615ec0565b6001600160e01b031916146116b95760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a4016108c6565b826001600160a01b031661456183836146da565b6001600160a01b0316146116b95760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a4016108c6565b6020810151600090612710906146079061ffff1685615eea565b6129059190615f19565b6040810151600090612710906146079061ffff1685615eea565b600080614636614a47565b61463e614a65565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561467f57614681565bfe5b50826146cf5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c75726500000000000060448201526064016108c6565b505195945050505050565b60008060006146e985856146f6565b91509150611ded81614766565b60008082516041141561472d5760208301516040840151606085015160001a61472187828585614921565b9450945050505061475f565b825160401415614757576020830151604084015161474c868383614a0e565b93509350505061475f565b506000905060025b9250929050565b600081600481111561477a5761477a614df5565b14156147835750565b600181600481111561479757614797614df5565b14156147e55760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016108c6565b60028160048111156147f9576147f9614df5565b14156148475760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016108c6565b600381600481111561485b5761485b614df5565b14156148b45760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016108c6565b60048160048111156148c8576148c8614df5565b1415610d4e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016108c6565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156149585750600090506003614a05565b8460ff16601b1415801561497057508460ff16601c14155b156149815750600090506004614a05565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156149d5573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166149fe57600060019250925050614a05565b9150600090505b94509492505050565b6000806001600160ff1b03831681614a2b60ff86901c601b615956565b9050614a3987828885614921565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f840112614a9557600080fd5b5081356001600160401b03811115614aac57600080fd5b6020830191508360208260051b850101111561475f57600080fd5b60008060208385031215614ada57600080fd5b82356001600160401b03811115614af057600080fd5b614afc85828601614a83565b90969095509350505050565b600060208284031215614b1a57600080fd5b5035919050565b63ffffffff81168114610d4e57600080fd5b600080600060608486031215614b4857600080fd5b833592506020840135614b5a81614b21565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614ba357614ba3614b6b565b60405290565b604080519081016001600160401b0381118282101715614ba357614ba3614b6b565b604051601f8201601f191681016001600160401b0381118282101715614bf357614bf3614b6b565b604052919050565b60006001600160401b03831115614c1457614c14614b6b565b614c27601f8401601f1916602001614bcb565b9050828152838383011115614c3b57600080fd5b828260208301376000602084830101529392505050565b600060208284031215614c6457600080fd5b81356001600160401b03811115614c7a57600080fd5b8201601f81018413614c8b57600080fd5b614c9a84823560208401614bfb565b949350505050565b6001600160a01b0381168114610d4e57600080fd5b8035614cc281614ca2565b919050565b600060208284031215614cd957600080fd5b813561290581614ca2565b60008060408385031215614cf757600080fd5b50508035926020909101359150565b803560ff81168114614cc257600080fd5b600060208284031215614d2957600080fd5b61290582614d06565b815181526020808301519082015260408101610f19565b60008083601f840112614d5b57600080fd5b5081356001600160401b03811115614d7257600080fd5b60208301915083602082850101111561475f57600080fd5b60008060008060408587031215614da057600080fd5b84356001600160401b0380821115614db757600080fd5b614dc388838901614a83565b90965094506020870135915080821115614ddc57600080fd5b50614de987828801614d49565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110614e2957634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614e4890840182614e0b565b5092915050565b803561ffff81168114614cc257600080fd5b600060608284031215614e7357600080fd5b614e7b614b81565b90508135614e8881614b21565b8152614e9660208301614e4f565b6020820152614ea760408301614e4f565b604082015292915050565b60008060808385031215614ec557600080fd5b614ece83614d06565b9150614edd8460208501614e61565b90509250929050565b600080600060408486031215614efb57600080fd5b8335614f0681614ca2565b925060208401356001600160401b03811115614f2157600080fd5b614f2d86828701614d49565b9497909650939450505050565b60006001600160401b03821115614f5357614f53614b6b565b5060051b60200190565b600060408284031215614f6f57600080fd5b614f77614ba9565b9050614f8282614d06565b81526020820135614f9281614ca2565b602082015292915050565b600080600080600060a08688031215614fb557600080fd5b8535614fc081614ca2565b945060208681013594506040808801356001600160401b03811115614fe457600080fd5b8801601f81018a13614ff557600080fd5b803561500861500382614f3a565b614bcb565b81815260069190911b8201840190848101908c83111561502757600080fd5b928501925b8284101561504d5761503e8d85614f5d565b8252928401929085019061502c565b999c989b5098996060810135995060800135979650505050505050565b6000610100828403121561507d57600080fd5b50919050565b60008083601f84011261509557600080fd5b5081356001600160401b038111156150ac57600080fd5b6020830191508360208260061b850101111561475f57600080fd5b6000606082840312156150d957600080fd5b6150e1614b81565b905081356001600160401b038111156150f957600080fd5b8201601f8101841361510a57600080fd5b61511984823560208401614bfb565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c03121561515557600080fd5b89356001600160401b038082111561516c57600080fd5b6151788d838e01614d49565b909b50995060208c013591508082111561519157600080fd5b61519d8d838e01614d49565b90995097508791506151b28d60408e0161506a565b96506101408c01359150808211156151c957600080fd5b6151d58d838e01615083565b90965094506101608c01359150808211156151ef57600080fd5b6151fb8d838e016150c7565b93506101808c013591508082111561521257600080fd5b5061521f8c828d016150c7565b9150509295985092959850929598565b600080600080600080610160878903121561524957600080fd5b86356001600160401b038082111561526057600080fd5b61526c8a838b01614d49565b9098509650602089013591508082111561528557600080fd5b6152918a838b01614d49565b90965094508491506152a68a60408b0161506a565b93506101408901359150808211156152bd57600080fd5b506152ca89828a016150c7565b9150509295509295509295565b600080604083850312156152ea57600080fd5b82356152f581614b21565b91506020838101356001600160401b0381111561531157600080fd5b8401601f8101861361532257600080fd5b803561533061500382614f3a565b81815260059190911b8201830190838101908883111561534f57600080fd5b928401925b8284101561536d57833582529284019290840190615354565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156153ba57835163ffffffff1683529284019291840191600101615398565b50909695505050505050565b600080602083850312156153d957600080fd5b82356001600160401b038111156153ef57600080fd5b614afc85828601614d49565b6001600160601b0381168114610d4e57600080fd5b600082601f83011261542157600080fd5b8135602061543161500383614f3a565b82815260069290921b8401810191818101908684111561545057600080fd5b8286015b848110156154a1576040818903121561546d5760008081fd5b615475614ba9565b813561548081614ca2565b81528185013561548f816153fb565b81860152835291830191604001615454565b509695505050505050565b600080600060a084860312156154c157600080fd5b6154cb8585614e61565b925060608401356154db816153fb565b915060808401356001600160401b038111156154f657600080fd5b61550286828701615410565b9150509250925092565b600082601f83011261551d57600080fd5b8135602061552d61500383614f3a565b8281526060928302850182019282820191908785111561554c57600080fd5b8387015b8581101561556f576155628982614e61565b8452928401928101615550565b5090979650505050505050565b600082601f83011261558d57600080fd5b8135602061559d61500383614f3a565b82815260059290921b840181019181810190868411156155bc57600080fd5b8286015b848110156154a15780356155d3816153fb565b83529183019183016155c0565b600082601f8301126155f157600080fd5b8135602061560161500383614f3a565b82815260059290921b8401810191818101908684111561562057600080fd5b8286015b848110156154a15780356001600160401b038111156156435760008081fd5b6156518986838b0101615410565b845250918301918301615624565b600080600080600080600080610100898b03121561567c57600080fd5b61568589614cb7565b975061569360208a01614cb7565b96506156a160408a01614cb7565b95506156af60608a01614cb7565b94506080890135935060a08901356001600160401b03808211156156d257600080fd5b6156de8c838d0161550c565b945060c08b01359150808211156156f457600080fd5b6157008c838d0161557c565b935060e08b013591508082111561571657600080fd5b506157238b828c016155e0565b9150509295985092959890939650565b60208101610f198284614e0b565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156157b8576157b861578e565b5060010190565b6000815180845260005b818110156157e5576020818501810151868301820152016157c9565b818111156157f7576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061290560208301846157bf565b60006020828403121561583157600080fd5b815161290581614ca2565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561589857600080fd5b8151801515811461290557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000808335601e1984360301811261590757600080fd5b8301803591506001600160401b0382111561592157600080fd5b6020019150600581901b360382131561475f57600080fd5b60006020828403121561594b57600080fd5b815161290581614b21565b600082198211156159695761596961578e565b500190565b6000808585111561597e57600080fd5b8386111561598b57600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a16828601526040898187015260c0606087015283895180865260e088019150848b01955060005b818110156159fd578651805160ff16845286015185168684015295850195918301916001016159d3565b505060808701989098525050505060a09091019190915250949350505050565b600060408284031215615a2f57600080fd5b6129058383614f5d565b600082821015615a4b57615a4b61578e565b500390565b60018060a01b0384168152826020820152606060408201526000615a7760608301846157bf565b95945050505050565b600060208284031215615a9257600080fd5b81516001600160c01b038116811461290557600080fd5b634e487b7160e01b600052601260045260246000fd5b600082615ace57615ace615aa9565b500690565b6001600160a01b0383168152604060208201819052600090614c9a908301846157bf565b828152604060208201526000614c9a60408301846157bf565b600060208284031215615b2257600080fd5b5051919050565b6001600160a01b03841681526101608101615b51602083018580358252602090810135910152565b615b6b606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b60018060a01b0383168152604060208201526000825160606040840152615bd260a08401826157bf565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b0384168152604060208201819052600090615a779083018486615bf3565b60018060a01b0385168152836020820152606060408201526000611852606083018486615bf3565b600082601f830112615c7a57600080fd5b81516020615c8a61500383614f3a565b82815260059290921b84018101918181019086841115615ca957600080fd5b8286015b848110156154a1578051615cc0816153fb565b8352918301918301615cad565b60008060408385031215615ce057600080fd5b82516001600160401b0380821115615cf757600080fd5b615d0386838701615c69565b93506020850151915080821115615d1957600080fd5b50615d2685828601615c69565b9150509250929050565b838152604060208201526000615a77604083018486615bf3565b60006020808385031215615d5d57600080fd5b82516001600160401b03811115615d7357600080fd5b8301601f81018513615d8457600080fd5b8051615d9261500382614f3a565b81815260059190911b82018301908381019087831115615db157600080fd5b928401925b82841015615dd8578351615dc981614b21565b82529284019290840190615db6565b979650505050505050565b600060208284031215615df557600080fd5b8151612905816153fb565b600060ff821660ff84168060ff03821115615e1d57615e1d61578e565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015615e8e57865180516001600160a01b031684528601518516868401529585019591830191600101615e5e565b50909a9950505050505050505050565b600061ffff80831681811415615eb657615eb661578e565b6001019392505050565b600060208284031215615ed257600080fd5b81516001600160e01b03198116811461290557600080fd5b60006001600160601b0380831681851681830481118215151615615f1057615f1061578e565b02949350505050565b60006001600160601b0380841680615f3357615f33615aa9565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212207491ac76a1cd7fce1d2d0cd906754d5efdf6335a0dcbfeda2692424d777b4a4a64736f6c634300080c00332e6164647265737365732e626173655374726174656779496d706c656d656e746174696f6e885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12da2646970667358221220a57d39ba2313767cd39b39f099bb23db3547f09143b057e8b978695d1b409b4d64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0!W`\0\x80\xFD[Pb\x01w\xE8\x80b\0\x003`\09`\0\xF3\xFE`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`\x046\x10b\0\x01\x15W`\x005`\xE0\x1C\x80c\x8B,i\xEB\x11b\0\0\xA3W\x80c\xC0@b&\x11b\0\0nW\x80c\xC0@b&\x14b\0\x02.W\x80c\xE1\x82r\xC2\x14b\0\x02:W\x80c\xE3\xA8\xB3E\x14b\0\x02NW\x80c\xF8\xCC\xBFG\x14b\0\x02bW`\0\x80\xFD[\x80c\x8B,i\xEB\x14b\0\x01\xDEW\x80c\x8CO\x9BP\x14b\0\x01\xF2W\x80c\x9E;\xA47\x14b\0\x02\x06W\x80c\x9E\x99#\xC2\x14b\0\x02\x1AW`\0\x80\xFD[\x80c]\xF4YF\x11b\0\0\xE4W\x80c]\xF4YF\x14b\0\x01\x8EW\x80ch0H5\x14b\0\x01\xA2W\x80cm\x14\xA9\x87\x14b\0\x01\xB6W\x80c\x80\xE0d\xD4\x14b\0\x01\xCAW`\0\x80\xFD[\x80c\x031\xED*\x14b\0\x01\x1AW\x80c4fud\x14b\0\x01RW\x80c9\xA5\xFC\xFA\x14b\0\x01fW\x80cL\xA2,?\x14b\0\x01zW[`\0\x80\xFD[`\x0CTb\0\x015\x90c\x01\0\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\x19Tb\0\x015\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x0FTb\0\x015\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x16Tb\0\x015\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x10Tb\0\x015\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x14Tb\0\x015\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x0ETb\0\x015\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\rTb\0\x015\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x13Tb\0\x015\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x18Tb\0\x015\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x11Tb\0\x015\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x12Tb\0\x015\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x028b\0\x02\x87V[\0[`\x15Tb\0\x015\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x17Tb\0\x015\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x0CTb\0\x02v\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01b\0\x01IV[s_\xBD\xB21Vx\xAF\xEC\xB3g\xF02\xD9?d/d\x18\n\xA3`\0b\0\x02\xA8b\0\x08\x94V[\x90P`\0b\0\x02\xDC`@Q\x80`@\x01`@R\x80`\r\x81R` \x01lops_addresses`\x98\x1B\x81RPb\0\x0B\"V[\x90P`\0\x80Q` b\x01w\x93\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x03,W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x03AW=`\0\x80>=`\0\xFD[PPPP`@Qb\0\x03S\x90b\0\"\xABV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x03pW=`\0\x80>=`\0\xFD[P`\x17\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Qb\0\x03\x9F\x90b\0\"\xB8V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x03\xBCW=`\0\x80>=`\0\xFD[P`\x0C\x80Tc\x01\0\0\0`\x01`\xB8\x1B\x03\x19\x16c\x01\0\0\0`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81\x02\x91\x90\x91\x17\x91\x82\x90U`\x17T`@Q\x90\x84\x16\x93\x91\x90\x92\x04\x16\x90b\0\x04\x03\x90b\0\"\xC6V[b\0\x04\x10\x92\x91\x90b\0#6V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04-W=`\0\x80>=`\0\xFD[P`\x18\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x90\x81\x17\x90\x91U`\x19T`\0\x92b\0\x04c\x92\x86\x92\x86\x92\x16b\0\x0C\x84V[\x90P`\x0E`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x83`\xA0\x01Q\x84`\xC0\x01Q`@Qb\0\x04\x93\x90b\0\"\xD4V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x83\x16` \x83\x01R\x90\x91\x16`@\x82\x01R``\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04\xD0W=`\0\x80>=`\0\xFD[P`\x19\x80T`\x01`\x01`\xA0\x1B\x03\x92\x83\x16`\x01`\x01`\xA0\x1B\x03\x19\x90\x91\x16\x81\x17\x90\x91U`\x0CT`\x18T\x85Q`@\x80Q\x91\x86\x16`$\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`D\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x18\x9A\xCD\xBD`\xE3\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81Rc\x01\0\0\0\x90\x93\x04\x85\x16\x94c\x96#`\x9D\x94b\0\x05f\x94\x93\x90\x91\x16\x92\x90\x91\x90`\x04\x01b\0#\xC0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x05\x81W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x05\x96W=`\0\x80>=`\0\xFD[PP`\x18T`@\x80Qc\x8D\xA5\xCB[`\xE0\x1B\x81R\x90Q`\0\x94P`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x92Pc\x8D\xA5\xCB[\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x05\xE7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06\r\x91\x90b\0#\xEEV[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15b\0\x06`W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x13\xDD\xDB\x99\\\x88\x1D[\x9A[\x9A]\x1AX[\x1A^\x99Y`j\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[Fazi\x14\x80b\0\x06rWPFa\x059\x14[\x15b\0\x08'W`\x0CT`@\x80Qc\x0F\xE7\x85\x85`\xE3\x1B\x81R`\x04\x81\x01\x91\x90\x91R`\n`D\x82\x01Ri(97\xBC<\xA0\xB26\xB4\xB7`\xB1\x1B`d\x82\x01Rc\x01\0\0\0\x90\x91\x04`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`$\x83\x01R\x85\x16\x90c\x7F<,(\x90`\x84\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x06\xEAW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x06\xFFW=`\0\x80>=`\0\xFD[PPPP`\xA0\x83\x01Q`@\x80Qc\x0F\xE7\x85\x85`\xE3\x1B\x81R`\x04\x81\x01\x91\x90\x91R`\x0C`D\x82\x01RkAvsDirectory`\xA0\x1B`d\x82\x01R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`$\x82\x01R\x90\x85\x16\x90c\x7F<,(\x90`\x84\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x07rW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x07\x87W=`\0\x80>=`\0\xFD[PPPP` \x83\x01Q`@\x80Qc\x0F\xE7\x85\x85`\xE3\x1B\x81R`\x04\x81\x01\x91\x90\x91R`\x13`D\x82\x01RreigenlayerPauserReg`h\x1B`d\x82\x01R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`$\x82\x01R\x90\x85\x16\x90c\x7F<,(\x90`\x84\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x08\x01W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x08\x16W=`\0\x80>=`\0\xFD[PPPPb\0\x08'\x84\x84\x83b\0\x1AfV[`\0\x80Q` b\x01w\x93\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x08uW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x08\x8AW=`\0\x80>=`\0\xFD[PPPPPPPPV[`@\x80Qa\x01\0\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x82\x90R`\x80\x81\x01\x82\x90R`\xA0\x81\x01\x82\x90R`\xC0\x81\x01\x82\x90R`\xE0\x81\x01\x91\x90\x91R`\0b\0\t\x17`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7Feigenlayer_deployment_output\0\0\0\0\x81RPb\0\x1D\x9CV[\x90P`\0b\0\t\\\x82`@Q\x80`@\x01`@R\x80`\x1F\x81R` \x01\x7F.addresses.eigenLayerProxyAdmin\0\x81RPb\0\x1F\xB3V[\x90P`\0b\0\t\xA1\x83`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7F.addresses.eigenLayerPauserReg\0\0\x81RPb\0\x1F\xB3V[\x90P`\0b\0\t\xE6\x84`@Q\x80`@\x01`@R\x80`\x1A\x81R` \x01\x7F.addresses.strategyManager\0\0\0\0\0\0\x81RPb\0\x1F\xB3V[\x90P`\0b\0\n#\x85`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01t\x170\xB2292\xB9\xB9\xB2\xB9\x9722\xB62\xB3\xB0\xBA4\xB7\xB7`Y\x1B\x81RPb\0\x1F\xB3V[\x90P`\0b\0\nh\x86`@Q\x80`@\x01`@R\x80`\x17\x81R` \x01\x7F.addresses.avsDirectory\0\0\0\0\0\0\0\0\0\x81RPb\0\x1F\xB3V[\x90P`\0b\0\n\xA2\x87`@Q\x80`@\x01`@R\x80`\x12\x81R` \x01q\x170\xB2292\xB9\xB9\xB2\xB9\x979\xB60\xB9\xB42\xB9`q\x1B\x81RPb\0\x1F\xB3V[\x90P`\0b\0\n\xCB\x88`@Q\x80``\x01`@R\x80`%\x81R` \x01b\x01wn`%\x919b\0\x1F\xB3V[`@\x80Qa\x01\0\x81\x01\x82R`\x01`\x01`\xA0\x1B\x03\x99\x8A\x16\x81R\x97\x89\x16` \x89\x01R\x95\x88\x16\x95\x87\x01\x95\x90\x95RP\x91\x85\x16``\x85\x01R\x90\x84\x16`\x80\x84\x01R\x83\x16`\xA0\x83\x01R`\0`\xC0\x83\x01R\x90\x91\x16`\xE0\x82\x01R\x92\x91PPV[`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x82\x90R\x90b\0\x0BQ\x83b\0 =`\0\xFD[P`\r\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x17T`\x0CT`@Q\x91\x83\x16\x93Pc\x01\0\0\0\x90\x04\x90\x91\x16\x90b\0\r\xB8\x90b\0\"\xC6V[b\0\r\xC5\x92\x91\x90b\0#6V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\r\xE2W=`\0\x80>=`\0\xFD[P`\x0E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x17T`\x0CT`@Q\x91\x83\x16\x92c\x01\0\0\0\x90\x91\x04\x16\x90b\0\x0E!\x90b\0\"\xC6V[b\0\x0E.\x92\x91\x90b\0#6V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0EKW=`\0\x80>=`\0\xFD[P`\x10\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x17T`\x0CT`@Q\x91\x83\x16\x92c\x01\0\0\0\x90\x91\x04\x16\x90b\0\x0E\x8A\x90b\0\"\xC6V[b\0\x0E\x97\x92\x91\x90b\0#6V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0E\xB4W=`\0\x80>=`\0\xFD[P`\x12\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x17T`\x0CT`@Q\x91\x83\x16\x92c\x01\0\0\0\x90\x91\x04\x16\x90b\0\x0E\xF3\x90b\0\"\xC6V[b\0\x0F\0\x92\x91\x90b\0#6V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0F\x1DW=`\0\x80>=`\0\xFD[P`\x14\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Qb\0\x0FL\x90b\0\"\xF0V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0FiW=`\0\x80>=`\0\xFD[P`\x16\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x0ET`@Q\x91\x16\x90b\0\x0F\x9A\x90b\0\"\xFEV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0F\xC7W=`\0\x80>=`\0\xFD[P`\x11\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x90\x81\x17\x90\x91U`\x0CT`\x10T`@Qc&j#\xB1`\xE2\x1B\x81R\x90\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92Rc\x01\0\0\0\x90\x04\x90\x91\x16\x90c\x99\xA8\x8E\xC4\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x109W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x10NW=`\0\x80>=`\0\xFD[PP`\x0ET`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pb\0\x10o\x91Pb\0#\x0CV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x10\x9CW=`\0\x80>=`\0\xFD[P`\x13\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x90\x81\x17\x90\x91U`\x0CT`\x12T`@Qc&j#\xB1`\xE2\x1B\x81R\x90\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92Rc\x01\0\0\0\x90\x04\x90\x91\x16\x90c\x99\xA8\x8E\xC4\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x11\x0EW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x11#W=`\0\x80>=`\0\xFD[PP`\x0ET``\x88\x01Q`@Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x93P\x91Pb\0\x11J\x90b\0#\x1AV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x11~W=`\0\x80>=`\0\xFD[P`\x15\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x90\x81\x17\x90\x91U`\x0CT`\x14T`@Qc&j#\xB1`\xE2\x1B\x81R\x90\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92Rc\x01\0\0\0\x90\x04\x90\x91\x16\x90c\x99\xA8\x8E\xC4\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x11\xF0W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x12\x05W=`\0\x80>=`\0\xFD[PP`\x14T`\x10T`\x12T`@Q\x88\x95P`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x94P\x91\x83\x16\x92\x16\x90b\0\x124\x90b\0#(V[`\x01`\x01`\xA0\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x90\x83\x16`@\x83\x01R\x90\x91\x16``\x82\x01R`\x80\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x12yW=`\0\x80>=`\0\xFD[P`\x0F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@\x80Q`\0\x80\x82R` \x82\x01\x90\x92R\x81\x90\x81b\0\x12\xE1V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R`\0\x19\x90\x92\x01\x91\x01\x81b\0\x12\xB3W\x90P[P\x90P`\0[\x82\x81\x10\x15b\0\x13HW`@\x80Q``\x81\x01\x82Ra'\x10\x81Ra:\x98` \x82\x01R`d\x91\x81\x01\x91\x90\x91R\x82Q\x83\x90\x83\x90\x81\x10b\0\x13'Wb\0\x13'b\0$/V[` \x02` \x01\x01\x81\x90RP\x80\x80b\0\x13?\x90b\0$\xA4V[\x91PPb\0\x12\xE7V[P`\0\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15b\0\x13gWb\0\x13gb\0$\x19V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x13\x91W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15b\0\x13\xB2Wb\0\x13\xB2b\0$\x19V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x13\xE7W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x13\xD1W\x90P[P\x90P`\x0C`\x03\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x96#`\x9D`\x0E`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x0F`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16c\xDD\x82\x83\xF3`\xE0\x1B\x8C`\0\x01Q\x8D`@\x01Q\x8E``\x01Q\x8F` \x01Q`\0\x8C\x8C\x8C`@Q`$\x01b\0\x14t\x98\x97\x96\x95\x94\x93\x92\x91\x90b\0%\xBEV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16`\x01`\x01`\xE0\x1B\x03\x19\x94\x85\x16\x17\x90RQ`\xE0\x86\x90\x1B\x90\x92\x16\x82Rb\0\x14\xBD\x93\x92\x91`\x04\x01b\0#\xC0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x14\xD8W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x14\xEDW=`\0\x80>=`\0\xFD[PP`\x0ET`@\x80Qc\x8D\xA5\xCB[`\xE0\x1B\x81R\x90Q`\0\x98P`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x96Pc\x8D\xA5\xCB[\x95P`\x04\x80\x82\x01\x95P` \x94P\x91\x92P\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x15BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x15h\x91\x90b\0#\xEEV[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15b\0\x15\xB7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x13\xDD\xDB\x99\\\x88\x1D[\x9A[\x9A]\x1AX[\x1A^\x99Y`j\x1B`D\x82\x01R`d\x01b\0\x06WV[`@\x80Q\x80\x82\x01\x82R`\r\x81Rl\x1C\x18\\\x99[\x9D\x08\x1B\xD8\x9A\x99X\xDD`\x9A\x1B` \x80\x83\x01\x91\x90\x91R\x82Q\x80\x84\x01\x84R`\t\x81Rhaddresses`\xB8\x1B\x91\x81\x01\x91\x90\x91R`\x0CT\x92QcK\x9601`\xE1\x1B\x81R\x91\x92\x90\x91sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x91c\x97,`b\x91b\0\x16N\x91\x85\x91c\x01\0\0\0\x90\x91\x04`\x01`\x01`\xA0\x1B\x03\x16\x90`\x04\x01b\0&\x91V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x16nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x16\x98\x91\x90\x81\x01\x90b\0&\xE1V[P`@QcK\x9601`\xE1\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x97,`b\x90b\0\x16\xD4\x90\x84\x90\x89\x90`\x04\x01b\0'\x9AV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x16\xF4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x17\x1E\x91\x90\x81\x01\x90b\0&\xE1V[P`@QcK\x9601`\xE1\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x97,`b\x90b\0\x17Z\x90\x84\x90\x88\x90`\x04\x01b\0'\xFCV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x17zW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x17\xA4\x91\x90\x81\x01\x90b\0&\xE1V[P`\x0ET`@QcK\x9601`\xE1\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x91c\x97,`b\x91b\0\x17\xED\x91\x85\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90`\x04\x01b\0(kV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x18\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x187\x91\x90\x81\x01\x90b\0&\xE1V[P`\x0FT`@QcK\x9601`\xE1\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x91c\x97,`b\x91b\0\x18\x80\x91\x85\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90`\x04\x01b\0(\xC4V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x18\xA0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x18\xCA\x91\x90\x81\x01\x90b\0&\xE1V[P`\x16T`@QcK\x9601`\xE1\x1B\x81R`\0\x91sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x91c\x97,`b\x91b\0\x19\x14\x91\x86\x91`\x01`\x01`\xA0\x1B\x03\x16\x90`\x04\x01b\0)1V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x194W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x19^\x91\x90\x81\x01\x90b\0&\xE1V[`@Qc\x88\xDAm5`\xE0\x1B\x81R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x88\xDAm5\x90b\0\x19\xA1\x90\x87\x90\x87\x90\x87\x90`\x04\x01b\0)\x8DV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x19\xC1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x19\xEB\x91\x90\x81\x01\x90b\0&\xE1V[\x90Pb\0\x1A.\x81`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7Fmockavs_deployment_output\0\0\0\0\0\0\0\x81RPb\0 \xCDV[PP`@\x80Q``\x81\x01\x82R`\x01`\x01`\xA0\x1B\x03\x96\x87\x16\x81R`\x0ET\x87\x16` \x82\x01R`\x16T\x90\x96\x16\x90\x86\x01RP\x92\x95\x94PPPPPV[\x80Q`@Qc\x0F\xE7\x85\x85`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16\x91c\x7F<,(\x91b\0\x1A\x95\x91\x90`\x04\x01b\0)\xD6V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x1A\xB0W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x1A\xC5W=`\0\x80>=`\0\xFD[PPPP` \x81\x01Q`@\x80Qc\x0F\xE7\x85\x85`\xE3\x1B\x81R`\x04\x81\x01\x91\x90\x91R`\x1A`D\x82\x01R\x7FmockAvsRegistryCoordinator\0\0\0\0\0\0`d\x82\x01R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`$\x82\x01R\x90\x84\x16\x90c\x7F<,(\x90`\x84\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x1BIW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x1B^W=`\0\x80>=`\0\xFD[PPPP`@\x81\x81\x01Q\x81Qc\x0F\xE7\x85\x85`\xE3\x1B\x81R`\x04\x81\x01\x92\x90\x92R`\x1D`D\x83\x01R\x7FmockAvsOperatorStateRetriever\0\0\0`d\x83\x01R`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`$\x83\x01R\x84\x16\x90c\x7F<,(\x90`\x84\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x1B\xE0W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x1B\xF5W=`\0\x80>=`\0\xFD[PPPP``\x82\x01Q`@\x80Qc\x0F\xE7\x85\x85`\xE3\x1B\x81R`\x04\x81\x01\x91\x90\x91R`\x11`D\x82\x01Rp22\xB62\xB3\xB0\xBA4\xB7\xB7&\xB0\xB70\xB3\xB2\xB9`y\x1B`d\x82\x01R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`$\x82\x01R\x90\x84\x16\x90c\x7F<,(\x90`\x84\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x1CmW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x1C\x82W=`\0\x80>=`\0\xFD[PPPP`@\x82\x81\x01Q\x81Qc\x0F\xE7\x85\x85`\xE3\x1B\x81R`\x04\x81\x01\x92\x90\x92R`\x0F`D\x83\x01Rn9\xBA90\xBA2\xB3\xBC\xA6\xB0\xB70\xB3\xB2\xB9`\x89\x1B`d\x83\x01R`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`$\x83\x01R\x84\x16\x90c\x7F<,(\x90`\x84\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x1C\xF6W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x1D\x0BW=`\0\x80>=`\0\xFD[PPPP`\xA0\x82\x01Q`@\x80Qc\x0F\xE7\x85\x85`\xE3\x1B\x81R`\x04\x81\x01\x91\x90\x91R`\x0C`D\x82\x01RkavsDirectory`\xA0\x1B`d\x82\x01R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`$\x82\x01R\x90\x84\x16\x90c\x7F<,(\x90`\x84\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x1D~W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x1D\x93W=`\0\x80>=`\0\xFD[PPPPPPPV[```\0`\0\x80Q` b\x01w\x93\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16c\xD90\xA0\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x1D\xF1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1E\x1B\x91\x90\x81\x01\x90b\0&\xE1V[`@Q` \x01b\0\x1E-\x91\x90b\0*&V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x90\x82\x90Rc4\x80Q\xD7`\xE1\x1B\x82RF`\x04\x83\x01R\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x1E\x90W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1E\xBA\x91\x90\x81\x01\x90b\0&\xE1V[`@Q` \x01b\0\x1E\xCC\x91\x90b\0*[V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x84`@Q` \x01b\0\x1E\xF2\x91\x90b\0*\x82V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c`\xF9\xBB\x11\x90b\0\x1F5\x90\x86\x90\x86\x90\x86\x90` \x01b\0*\xADV[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0\x1Fb\x91\x90b\0*\xF6V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x1F\x80W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1F\xAA\x91\x90\x81\x01\x90b\0&\xE1V[\x95\x94PPPPPV[`@Qc\x1E\x19\xE6W`\xE0\x1B\x81R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x1E\x19\xE6W\x90b\0\x1F\xF1\x90\x86\x90\x86\x90`\x04\x01b\0+\x0BV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0 \x0FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0 5\x91\x90b\0#\xEEV[\x93\x92PPPV[```\0`\0\x80Q` b\x01w\x93\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16c\xD90\xA0\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0 \x91W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0 \xBB\x91\x90\x81\x01\x90b\0&\xE1V[`@Q` \x01b\0\x1E-\x91\x90b\0+4V[`\0`\0\x80Q` b\x01w\x93\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16c\xD90\xA0\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0! W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0!J\x91\x90\x81\x01\x90b\0&\xE1V[`@Q` \x01b\0!\\\x91\x90b\0*&V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x90\x82\x90Rc4\x80Q\xD7`\xE1\x1B\x82RF`\x04\x83\x01R\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0!\xBFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0!\xE9\x91\x90\x81\x01\x90b\0&\xE1V[`@Q` \x01b\0!\xFB\x91\x90b\0*[V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x82\x82\x85`@Q` \x01b\0\"%\x93\x92\x91\x90b\0+hV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rc\xE2<\xD1\x9F`\xE0\x1B\x82R\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xE2<\xD1\x9F\x90b\0\"p\x90\x88\x90\x85\x90`\x04\x01b\0+\x0BV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\"\x8BW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\"\xA0W=`\0\x80>=`\0\xFD[PPPPPPPPPV[`\x94\x80b\0+\xC2\x839\x01\x90V[a\x07\x18\x80b\0,V\x839\x01\x90V[a\x0E\x81\x80b\x003n\x839\x01\x90V[aD\xED\x80b\0A\xEF\x839\x01\x90V[a\x07x\x80b\0\x86\xDC\x839\x01\x90V[a\x1E#\x80b\0\x8ET\x839\x01\x90V[a 5\x80b\0\xACw\x839\x01\x90V[a\x13a\x80b\0\xCC\xAC\x839\x01\x90V[a3\xC8\x80b\0\xE0\r\x839\x01\x90V[ac\x99\x80b\x01\x13\xD5\x839\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90\x82\x01R`\x80\x01\x90V[`\0[\x83\x81\x10\x15b\0#|W\x81\x81\x01Q\x83\x82\x01R` \x01b\0#bV[\x83\x81\x11\x15b\0#\x8CW`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Rb\0#\xAC\x81` \x86\x01` \x86\x01b\0#_V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x82R\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90b\0\x1F\xAA\x90\x83\x01\x84b\0#\x92V[`\0` \x82\x84\x03\x12\x15b\0$\x01W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0 5W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`@\x80\x82R\x83Q\x90\x82\x01\x81\x90R`\0\x90` \x90``\x84\x01\x90\x82\x87\x01\x84[\x82\x81\x10\x15b\0$\x89W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01b\0$bV[PPP`\x01`\x01`\xA0\x1B\x03\x94\x90\x94\x16\x92\x01\x91\x90\x91RP\x91\x90PV[`\0`\0\x19\x82\x14\x15b\0$\xC7WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15b\0%\x0EW\x81Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01b\0$\xE2V[P\x94\x95\x94PPPPPV[`\0\x82\x82Q\x80\x85R` \x80\x86\x01\x95P\x80\x82`\x05\x1B\x84\x01\x01\x81\x86\x01`\0\x80[\x85\x81\x10\x15b\0%\xB0W\x86\x84\x03`\x1F\x19\x01\x8AR\x82Q\x80Q\x80\x86R\x90\x86\x01\x90\x86\x86\x01\x90\x84[\x81\x81\x10\x15b\0%\x9AW\x83Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x89\x01Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x89\x84\x01R\x92\x88\x01\x92`@\x90\x92\x01\x91`\x01\x01b\0%ZV[PP\x9A\x86\x01\x9A\x94PP\x91\x84\x01\x91`\x01\x01b\0%7V[P\x91\x98\x97PPPPPPPPV[`\0a\x01\0\x80\x83\x01`\x01\x80`\xA0\x1B\x03\x80\x8D\x16\x85R` \x81\x8D\x16\x81\x87\x01R`@\x82\x8D\x16\x81\x88\x01R``\x83\x8D\x16\x81\x89\x01R`\xFF\x8C\x16`\x80\x89\x01R\x85`\xA0\x89\x01R\x84\x95P\x8AQ\x93P\x83\x85Ra\x01 \x88\x01\x95P\x82\x8B\x01\x94P`\0[\x84\x81\x10\x15b\0&RW\x85Q\x80Qc\xFF\xFF\xFF\xFF\x16\x88R\x84\x81\x01Qa\xFF\xFF\x90\x81\x16\x86\x8A\x01R\x90\x84\x01Q\x16\x83\x88\x01R\x95\x81\x01\x95\x94\x83\x01\x94`\x01\x01b\0&\x15V[PPPPPP\x82\x81\x03`\xC0\x84\x01Rb\0&l\x81\x86b\0$\xCEV[\x90P\x82\x81\x03`\xE0\x84\x01Rb\0&\x82\x81\x85b\0%\x19V[\x9B\x9APPPPPPPPPPPV[``\x81R`\0b\0&\xA6``\x83\x01\x85b\0#\x92V[\x82\x81\x03` \x80\x85\x01\x91\x90\x91R`\n\x82Ri897\xBC<\xA0\xB26\xB4\xB7`\xB1\x1B\x90\x82\x01R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16`@\x92\x83\x01RP\x01\x91\x90PV[`\0` \x82\x84\x03\x12\x15b\0&\xF4W`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15b\0'\rW`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12b\0'\"W`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\0'7Wb\0'7b\0$\x19V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15b\0'bWb\0'bb\0$\x19V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15b\0'|W`\0\x80\xFD[b\0'\x8F\x83` \x83\x01` \x88\x01b\0#_V[\x97\x96PPPPPPPV[``\x81R`\0b\0'\xAF``\x83\x01\x85b\0#\x92V[\x82\x81\x03` \x84\x01Rb\0'\xE4\x81`\x15\x81Rt6\xB7\xB1\xB5\xA0\xBB9\xA9\xB2\xB9;4\xB1\xB2\xA6\xB0\xB70\xB3\xB2\xB9`Y\x1B` \x82\x01R`@\x01\x90V[\x91PP`\x01\x80`\xA0\x1B\x03\x83\x16`@\x83\x01R\x93\x92PPPV[``\x81R`\0b\0(\x11``\x83\x01\x85b\0#\x92V[\x82\x81\x03` \x84\x01R`#\x81R\x7FmockAvsServiceManagerImplementat` \x82\x01Rb4\xB7\xB7`\xE9\x1B`@\x82\x01R``\x81\x01\x91PP`\x01\x80`\xA0\x1B\x03\x83\x16`@\x83\x01R\x93\x92PPPV[``\x81R`\0b\0(\x80``\x83\x01\x85b\0#\x92V[\x82\x81\x03` \x80\x85\x01\x91\x90\x91R`\x13\x82Rr92\xB3\xB4\xB9\xBA9<\xA1\xB7\xB7\xB924\xB70\xBA7\xB9`i\x1B\x90\x82\x01R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16`@\x92\x83\x01RP\x01\x91\x90PV[``\x81R`\0b\0(\xD9``\x83\x01\x85b\0#\x92V[\x82\x81\x03` \x84\x01R`!\x81R\x7FregistryCoordinatorImplementatio` \x82\x01R`7`\xF9\x1B`@\x82\x01R``\x81\x01\x91PP`\x01\x80`\xA0\x1B\x03\x83\x16`@\x83\x01R\x93\x92PPPV[``\x81R`\0b\0)F``\x83\x01\x85b\0#\x92V[\x82\x81\x03` \x80\x85\x01\x91\x90\x91R`\x16\x82Ru7\xB82\xB90\xBA7\xB9)\xBA0\xBA2\xA92\xBA94\xB2\xBB2\xB9`Q\x1B\x90\x82\x01R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16`@\x92\x83\x01RP\x01\x91\x90PV[``\x81R`\0b\0)\xA2``\x83\x01\x86b\0#\x92V[\x82\x81\x03` \x84\x01Rb\0)\xB6\x81\x86b\0#\x92V[\x90P\x82\x81\x03`@\x84\x01Rb\0)\xCC\x81\x85b\0#\x92V[\x96\x95PPPPPPV[`@\x81R`\0b\0*\x0C`@\x83\x01`\x15\x81Rt6\xB7\xB1\xB5\xA0\xBB9\xA9\xB2\xB9;4\xB1\xB2\xA6\xB0\xB70\xB3\xB2\xB9`Y\x1B` \x82\x01R`@\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16` \x92\x90\x92\x01\x91\x90\x91RP\x90V[`\0\x82Qb\0*:\x81\x84` \x87\x01b\0#_V[n/script/output/`\x88\x1B\x92\x01\x91\x82RP`\x0F\x01\x91\x90PV[`\0\x82Qb\0*o\x81\x84` \x87\x01b\0#_V[`/`\xF8\x1B\x92\x01\x91\x82RP`\x01\x01\x91\x90PV[`\0\x82Qb\0*\x96\x81\x84` \x87\x01b\0#_V[d\x1759\xB7\xB7`\xD9\x1B\x92\x01\x91\x82RP`\x05\x01\x91\x90PV[`\0\x84Qb\0*\xC1\x81\x84` \x89\x01b\0#_V[\x84Q\x90\x83\x01\x90b\0*\xD7\x81\x83` \x89\x01b\0#_V[\x84Q\x91\x01\x90b\0*\xEC\x81\x83` \x88\x01b\0#_V[\x01\x95\x94PPPPPV[` \x81R`\0b\0 5` \x83\x01\x84b\0#\x92V[`@\x81R`\0b\0+ `@\x83\x01\x85b\0#\x92V[\x82\x81\x03` \x84\x01Rb\0\x1F\xAA\x81\x85b\0#\x92V[`\0\x82Qb\0+H\x81\x84` \x87\x01b\0#_V[m/script/input/`\x90\x1B\x92\x01\x91\x82RP`\x0E\x01\x91\x90PV[`\0\x84Qb\0+|\x81\x84` \x89\x01b\0#_V[\x84Q\x90\x83\x01\x90b\0+\x92\x81\x83` \x89\x01b\0#_V[\x84Q\x91\x01\x90b\0+\xA7\x81\x83` \x88\x01b\0#_V[d\x1759\xB7\xB7`\xD9\x1B\x91\x01\x90\x81R`\x05\x01\x95\x94PPPPPV\xFE`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`w\x80`\x1D`\09`\0\xF3\xFE`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`(W`\x005`\xE0\x1C\x80c\xC2\x98Ux\x14`-W[`\0\x80\xFD[`\0`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3\xFE\xA2dipfsX\"\x12 \x07\xC8\x0E:\xB7[d\xAB(Q\xD2*\x866\x01\xE8\x06G5\xDA\x0B\xA4\x04\x0C\xDE\t\x90\xCB\x05(\xB7\xC0dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\0\x1A3a\0\x1FV[a\0oV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[a\x06\x9A\x80a\0~`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\0{W`\x005`\xE0\x1C\x80c\x96#`\x9D\x11a\0NW\x80c\x96#`\x9D\x14a\x01\x11W\x80c\x99\xA8\x8E\xC4\x14a\x01$W\x80c\xF2\xFD\xE3\x8B\x14a\x01DW\x80c\xF3\xB7\xDE\xAD\x14a\x01dW`\0\x80\xFD[\x80c N\x1Cz\x14a\0\x80W\x80cqP\x18\xA6\x14a\0\xBCW\x80c~\xFF'^\x14a\0\xD3W\x80c\x8D\xA5\xCB[\x14a\0\xF3W[`\0\x80\xFD[4\x80\x15a\0\x8CW`\0\x80\xFD[Pa\0\xA0a\0\x9B6`\x04a\x04\x99V[a\x01\x84V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xC8W`\0\x80\xFD[Pa\0\xD1a\x02\x15V[\0[4\x80\x15a\0\xDFW`\0\x80\xFD[Pa\0\xD1a\0\xEE6`\x04a\x04\xBDV[a\x02)V[4\x80\x15a\0\xFFW`\0\x80\xFD[P`\0T`\x01`\x01`\xA0\x1B\x03\x16a\0\xA0V[a\0\xD1a\x01\x1F6`\x04a\x05\x0CV[a\x02\x91V[4\x80\x15a\x010W`\0\x80\xFD[Pa\0\xD1a\x01?6`\x04a\x04\xBDV[a\x03\0V[4\x80\x15a\x01PW`\0\x80\xFD[Pa\0\xD1a\x01_6`\x04a\x04\x99V[a\x036V[4\x80\x15a\x01pW`\0\x80\xFD[Pa\0\xA0a\x01\x7F6`\x04a\x04\x99V[a\x03\xB4V[`\0\x80`\0\x83`\x01`\x01`\xA0\x1B\x03\x16`@Qa\x01\xAA\x90c\\`\xDA\x1B`\xE0\x1B\x81R`\x04\x01\x90V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x01\xE5W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\xEAV[``\x91P[P\x91P\x91P\x81a\x01\xF9W`\0\x80\xFD[\x80\x80` \x01\x90Q\x81\x01\x90a\x02\r\x91\x90a\x05\xE2V[\x94\x93PPPPV[a\x02\x1Da\x03\xDAV[a\x02'`\0a\x044V[V[a\x021a\x03\xDAV[`@Qc\x08\xF2\x83\x97`\xE4\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R\x83\x16\x90c\x8F(9p\x90`$\x01[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02uW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\x89W=`\0\x80>=`\0\xFD[PPPPPPV[a\x02\x99a\x03\xDAV[`@Qc'\x8FyC`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90cO\x1E\xF2\x86\x904\x90a\x02\xC9\x90\x86\x90\x86\x90`\x04\x01a\x05\xFFV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x02\xE2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\xF6W=`\0\x80>=`\0\xFD[PPPPPPPPV[a\x03\x08a\x03\xDAV[`@Qc\x1B,\xE7\xF3`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R\x83\x16\x90c6Y\xCF\xE6\x90`$\x01a\x02[V[a\x03>a\x03\xDAV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x03\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x03\xB1\x81a\x044V[PV[`\0\x80`\0\x83`\x01`\x01`\xA0\x1B\x03\x16`@Qa\x01\xAA\x90c\x03\xE1F\x91`\xE6\x1B\x81R`\x04\x01\x90V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02'W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x03\x9FV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xB1W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x04\xABW`\0\x80\xFD[\x815a\x04\xB6\x81a\x04\x84V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x04\xD0W`\0\x80\xFD[\x825a\x04\xDB\x81a\x04\x84V[\x91P` \x83\x015a\x04\xEB\x81a\x04\x84V[\x80\x91PP\x92P\x92\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15a\x05!W`\0\x80\xFD[\x835a\x05,\x81a\x04\x84V[\x92P` \x84\x015a\x05<\x81a\x04\x84V[\x91P`@\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x05YW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x05mW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x05\x7FWa\x05\x7Fa\x04\xF6V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x05\xA7Wa\x05\xA7a\x04\xF6V[\x81`@R\x82\x81R\x89` \x84\x87\x01\x01\x11\x15a\x05\xC0W`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0` \x84\x83\x01\x01R\x80\x95PPPPPP\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x05\xF4W`\0\x80\xFD[\x81Qa\x04\xB6\x81a\x04\x84V[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`\0` `@\x81\x84\x01R\x83Q\x80`@\x85\x01R`\0[\x81\x81\x10\x15a\x06;W\x85\x81\x01\x83\x01Q\x85\x82\x01``\x01R\x82\x01a\x06\x1FV[\x81\x81\x11\x15a\x06MW`\0``\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01``\x01\x94\x93PPPPV\xFE\xA2dipfsX\"\x12 \xD2\xDE\xFA2\x01\xBE\x94\x93\"\x80\x0C0\x98\xB5t\xD2m\x9Djl\xBA\xC4V\x0C\x14z\xE4\xC6u\xA9\xD4zdsolcC\0\x08\x0C\x003`\x80`@R`@Qb\0\x0E\x818\x03\x80b\0\x0E\x81\x839\x81\x01`@\x81\x90Rb\0\0&\x91b\0\x04\x90V[\x82\x81b\0\x006\x82\x82`\0b\0\0MV[Pb\0\0D\x90P\x82b\0\0\x8AV[PPPb\0\x05\xC3V[b\0\0X\x83b\0\0\xE5V[`\0\x82Q\x11\x80b\0\0fWP\x80[\x15b\0\0\x85Wb\0\0\x83\x83\x83b\0\x01'` \x1Bb\0\x02`\x17` \x1CV[P[PPPV[\x7F~dMyB/\x17\xC0\x1EH\x94\xB5\xF4\xF5\x88\xD31\xEB\xFA(e=B\xAE\x83-\xC5\x9E8\xC9y\x8Fb\0\0\xB5b\0\x01VV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x84\x16` \x83\x01R\x01`@Q\x80\x91\x03\x90\xA1b\0\0\xE2\x81b\0\x01\x8FV[PV[b\0\0\xF0\x81b\0\x02DV[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90`\0\x90\xA2PV[``b\0\x01O\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01b\0\x0EZ`'\x919b\0\x02\xF8V[\x93\x92PPPV[`\0b\0\x01\x80`\0\x80Q` b\0\x0E:\x839\x81Q\x91R`\0\x1Bb\0\x03\xDE` \x1Bb\0\x02\x08\x17` \x1CV[T`\x01`\x01`\xA0\x1B\x03\x16\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16b\0\x01\xFAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC1967: new admin is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[\x80b\0\x02#`\0\x80Q` b\0\x0E:\x839\x81Q\x91R`\0\x1Bb\0\x03\xDE` \x1Bb\0\x02\x08\x17` \x1CV[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UPV[b\0\x02Z\x81b\0\x03\xE1` \x1Bb\0\x02\x8C\x17` \x1CV[b\0\x02\xBEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FERC1967: new implementation is n`D\x82\x01Rl\x1B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x9A\x1B`d\x82\x01R`\x84\x01b\0\x01\xF1V[\x80b\0\x02#\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC`\0\x1Bb\0\x03\xDE` \x1Bb\0\x02\x08\x17` \x1CV[```\x01`\x01`\xA0\x1B\x03\x84\x16;b\0\x03bW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FAddress: delegate call to non-co`D\x82\x01Re\x1B\x9D\x1C\x98X\xDD`\xD2\x1B`d\x82\x01R`\x84\x01b\0\x01\xF1V[`\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qb\0\x03\x7F\x91\x90b\0\x05pV[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14b\0\x03\xBCW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x03\xC1V[``\x91P[P\x90\x92P\x90Pb\0\x03\xD4\x82\x82\x86b\0\x03\xF0V[\x96\x95PPPPPPV[\x90V[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[``\x83\x15b\0\x04\x01WP\x81b\0\x01OV[\x82Q\x15b\0\x04\x12W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01b\0\x01\xF1\x91\x90b\0\x05\x8EV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x04FW`\0\x80\xFD[\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15b\0\x04~W\x81\x81\x01Q\x83\x82\x01R` \x01b\0\x04dV[\x83\x81\x11\x15b\0\0\x83WPP`\0\x91\x01RV[`\0\x80`\0``\x84\x86\x03\x12\x15b\0\x04\xA6W`\0\x80\xFD[b\0\x04\xB1\x84b\0\x04.V[\x92Pb\0\x04\xC1` \x85\x01b\0\x04.V[`@\x85\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x04\xDFW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12b\0\x04\xF4W`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\0\x05\tWb\0\x05\tb\0\x04KV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15b\0\x054Wb\0\x054b\0\x04KV[\x81`@R\x82\x81R\x89` \x84\x87\x01\x01\x11\x15b\0\x05NW`\0\x80\xFD[b\0\x05a\x83` \x83\x01` \x88\x01b\0\x04aV[\x80\x95PPPPPP\x92P\x92P\x92V[`\0\x82Qb\0\x05\x84\x81\x84` \x87\x01b\0\x04aV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Rb\0\x05\xAF\x81`@\x85\x01` \x87\x01b\0\x04aV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[a\x08g\x80b\0\x05\xD3`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\0NW`\x005`\xE0\x1C\x80c6Y\xCF\xE6\x14a\0eW\x80cO\x1E\xF2\x86\x14a\0\x85W\x80c\\`\xDA\x1B\x14a\0\x98W\x80c\x8F(9p\x14a\0\xC9W\x80c\xF8Q\xA4@\x14a\0\xE9Wa\0]V[6a\0]Wa\0[a\0\xFEV[\0[a\0[a\0\xFEV[4\x80\x15a\0qW`\0\x80\xFD[Pa\0[a\0\x806`\x04a\x06\xF1V[a\x01\x18V[a\0[a\0\x936`\x04a\x07\x0CV[a\x01_V[4\x80\x15a\0\xA4W`\0\x80\xFD[Pa\0\xADa\x01\xD0V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xD5W`\0\x80\xFD[Pa\0[a\0\xE46`\x04a\x06\xF1V[a\x02\x0BV[4\x80\x15a\0\xF5W`\0\x80\xFD[Pa\0\xADa\x025V[a\x01\x06a\x02\x9BV[a\x01\x16a\x01\x11a\x03:V[a\x03DV[V[a\x01 a\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x01WWa\x01T\x81`@Q\x80` \x01`@R\x80`\0\x81RP`\0a\x03\x9BV[PV[a\x01Ta\0\xFEV[a\x01ga\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x01\xC8Wa\x01\xC3\x83\x83\x83\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RP`\x01\x92Pa\x03\x9B\x91PPV[PPPV[a\x01\xC3a\0\xFEV[`\0a\x01\xDAa\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x02\0Wa\x01\xFBa\x03:V[\x90P\x90V[a\x02\x08a\0\xFEV[\x90V[a\x02\x13a\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x01WWa\x01T\x81a\x03\xC6V[`\0a\x02?a\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x02\0Wa\x01\xFBa\x03hV[``a\x02\x85\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x08\x0B`'\x919a\x04\x1AV[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[a\x02\xA3a\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x01\x16W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R\x7FTransparentUpgradeableProxy: adm`D\x82\x01R\x7Fin cannot fallback to proxy targ`d\x82\x01Ra\x19]`\xF2\x1B`\x84\x82\x01R`\xA4\x01[`@Q\x80\x91\x03\x90\xFD[`\0a\x01\xFBa\x04\xF7V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15a\x03cW=`\0\xF3[=`\0\xFD[`\0\x7F\xB51'hJV\x8B1s\xAE\x13\xB9\xF8\xA6\x01n$>c\xB6\xE8\xEE\x11x\xD6\xA7\x17\x85\x0B]a\x03[T`\x01`\x01`\xA0\x1B\x03\x16\x91\x90PV[a\x03\xA4\x83a\x05\x1FV[`\0\x82Q\x11\x80a\x03\xB1WP\x80[\x15a\x01\xC3Wa\x03\xC0\x83\x83a\x02`V[PPPPV[\x7F~dMyB/\x17\xC0\x1EH\x94\xB5\xF4\xF5\x88\xD31\xEB\xFA(e=B\xAE\x83-\xC5\x9E8\xC9y\x8Fa\x03\xEFa\x03hV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x84\x16` \x83\x01R\x01`@Q\x80\x91\x03\x90\xA1a\x01T\x81a\x05_V[```\x01`\x01`\xA0\x1B\x03\x84\x16;a\x04\x82W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FAddress: delegate call to non-co`D\x82\x01Re\x1B\x9D\x1C\x98X\xDD`\xD2\x1B`d\x82\x01R`\x84\x01a\x031V[`\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x04\x9D\x91\x90a\x07\xBBV[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x04\xD8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x04\xDDV[``\x91P[P\x91P\x91Pa\x04\xED\x82\x82\x86a\x06\x08V[\x96\x95PPPPPPV[`\0\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x03\x8CV[a\x05(\x81a\x06AV[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90`\0\x90\xA2PV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xC4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC1967: new admin is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x031V[\x80\x7F\xB51'hJV\x8B1s\xAE\x13\xB9\xF8\xA6\x01n$>c\xB6\xE8\xEE\x11x\xD6\xA7\x17\x85\x0B]a\x03[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UPV[``\x83\x15a\x06\x17WP\x81a\x02\x85V[\x82Q\x15a\x06'W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x031\x91\x90a\x07\xD7V[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x06\xAEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FERC1967: new implementation is n`D\x82\x01Rl\x1B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x9A\x1B`d\x82\x01R`\x84\x01a\x031V[\x80\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x05\xE7V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x06\xECW`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x07\x03W`\0\x80\xFD[a\x02\x85\x82a\x06\xD5V[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x07!W`\0\x80\xFD[a\x07*\x84a\x06\xD5V[\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x07GW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x07[W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x07jW`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x07|W`\0\x80\xFD[` \x83\x01\x94P\x80\x93PPPP\x92P\x92P\x92V[`\0[\x83\x81\x10\x15a\x07\xAAW\x81\x81\x01Q\x83\x82\x01R` \x01a\x07\x92V[\x83\x81\x11\x15a\x03\xC0WPP`\0\x91\x01RV[`\0\x82Qa\x07\xCD\x81\x84` \x87\x01a\x07\x8FV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x07\xF6\x81`@\x85\x01` \x87\x01a\x07\x8FV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 t \xB9\xD3\xA1z\x9BK\x12yH*\xEAb\x85[8\xB1\xF3\xC3he\xE17\x12\xF5c/:H\x7F7dsolcC\0\x08\x0C\x003\xB51'hJV\x8B1s\xAE\x13\xB9\xF8\xA6\x01n$>c\xB6\xE8\xEE\x11x\xD6\xA7\x17\x85\x0B]a\x03Address: low-level delegate call faileda\x01\x80`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0D\xED8\x03\x80b\0D\xED\x839\x81\x01`@\x81\x90Rb\0\x005\x91b\0\x03?V[\x82\x82\x82\x85\x86`\x01`\x01`\xA0\x1B\x03\x16ch0H5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\0xW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\x9E\x91\x90b\0\x03\x93V[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\x80R\x80\x84\x16`\xA0R\x80\x83\x16`\xC0R\x81\x16`\xE0Rb\0\0\xC7b\0\x02dV[PPPP\x80`\x01`\x01`\xA0\x1B\x03\x16a\x01\0\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80`\x01`\x01`\xA0\x1B\x03\x16ch0H5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x01%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01K\x91\x90b\0\x03\x93V[`\x01`\x01`\xA0\x1B\x03\x16a\x01 \x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80`\x01`\x01`\xA0\x1B\x03\x16c]\xF4YF`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x01\xA4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01\xCA\x91\x90b\0\x03\x93V[`\x01`\x01`\xA0\x1B\x03\x16a\x01@\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPPa\x01 Q`\x01`\x01`\xA0\x1B\x03\x16c\xDF\\\xF7#`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x02&W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02L\x91\x90b\0\x03\x93V[`\x01`\x01`\xA0\x1B\x03\x16a\x01`RPb\0\x03\xBA\x92PPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\x02\xD1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FInitializable: contract is initi`D\x82\x01Rfalizing`\xC8\x1B`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[`\0T`\xFF\x90\x81\x16\x10\x15b\0\x03$W`\0\x80T`\xFF\x19\x16`\xFF\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x03=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x8B\x91\x90a:\xA4V[`@Qc\x87\x1E\xF0I`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R\x90\x91P`\0\x90`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x87\x1E\xF0I\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\xF6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\x1A\x91\x90a:\xBDV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15\x80a\x06\xB4WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x9A\xA1e=`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\x8BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xAF\x91\x90a:\xE6V[`\xFF\x16\x15[\x15a\x06\xD0WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x92\x91PPV[`\0a\x06\xE4\x82`\x01`\x01`\xC0\x1B\x03\x16a)IV[\x90P`\0\x80[\x82Q\x81\x10\x15a\x07\xBAW\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c<\xA5\xA5\xF5\x84\x83\x81Q\x81\x10a\x074Wa\x074a:lV[\x01` \x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01R`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07xW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\x9C\x91\x90a:\xA4V[a\x07\xA6\x90\x83a;\x1FV[\x91P\x80a\x07\xB2\x81a;7V[\x91PPa\x06\xEAV[P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\xD5Wa\x07\xD5a2GV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\xFEW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80[\x84Q\x81\x10\x15a\t\xBDW`\0\x85\x82\x81Q\x81\x10a\x08\"Wa\x08\"a:lV[\x01` \x01Q`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01\x81\x90R\x91P`\0\x90`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c<\xA5\xA5\xF5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\x97W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xBB\x91\x90a:\xA4V[\x90P`\0[\x81\x81\x10\x15a\t\xA7W`@QcV\xE4\x02m`\xE1\x1B\x81R`\xFF\x84\x16`\x04\x82\x01R`$\x81\x01\x82\x90R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90c\xAD\xC8\x04\xDA\x90`D\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\tY\x91\x90a;gV[`\0\x01Q\x86\x86\x81Q\x81\x10a\toWa\toa:lV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x84a\t\x91\x81a;7V[\x95PP\x80\x80a\t\x9F\x90a;7V[\x91PPa\x08\xC0V[PPP\x80\x80a\t\xB5\x90a;7V[\x91PPa\x08\x05V[P\x90\x97\x96PPPPPPPV[a\t\xD2a*\x0BV[a\t\xDB\x81a*eV[PV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n`\x91\x90a;\xA8V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0B\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R\x7FBLSSignatureChecker.onlyCoordina`D\x82\x01R\x7FtorOwner: caller is not the owne`d\x82\x01R\x7Fr of the registryCoordinator\0\0\0\0`\x84\x82\x01R`\xA4\x01[`@Q\x80\x91\x03\x90\xFD[a\t\xDB\x81a*\xCEV[`@\x80Q\x80\x82\x01\x90\x91R``\x80\x82R` \x82\x01R`\0\x84a\x0B\x91W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: empty quorum input\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x0B\x08V[`@\x83\x01QQ\x85\x14\x80\x15a\x0B\xA9WP`\xA0\x83\x01QQ\x85\x14[\x80\x15a\x0B\xB9WP`\xC0\x83\x01QQ\x85\x14[\x80\x15a\x0B\xC9WP`\xE0\x83\x01QQ\x85\x14[a\x0C3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: input quorum length mismatc`d\x82\x01R`\r`\xFB\x1B`\x84\x82\x01R`\xA4\x01a\x0B\x08V[\x82QQ` \x84\x01QQ\x14a\x0C\xABW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R`\0\x80Q` a?\xD0\x839\x81Q\x91R\x90\x82\x01R\x7Fres: input nonsigner length mism`d\x82\x01Rc\x0C.\x8Cm`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x0B\x08V[Cc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10a\r\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: invalid reference block\0\0\0\0`d\x82\x01R`\x84\x01a\x0B\x08V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x80\x83\x01\x91\x90\x91R\x82Q\x80\x84\x01\x90\x93R``\x80\x84R\x90\x83\x01R\x90\x86`\x01`\x01`@\x1B\x03\x81\x11\x15a\r[Wa\r[a2GV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\r\x84W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P` \x82\x01R\x86`\x01`\x01`@\x1B\x03\x81\x11\x15a\r\xA2Wa\r\xA2a2GV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\r\xCBW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R`@\x80Q\x80\x82\x01\x90\x91R``\x80\x82R` \x82\x01R\x85` \x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a\r\xFFWa\r\xFFa2GV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0E(W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x86\x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0EHWa\x0EHa2GV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0EqW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81` \x01\x81\x90RP`\0a\x0FC\x8A\x8A\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`@\x80Qc\x9A\xA1e=`\xE0\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x93Pc\x9A\xA1e=\x92P`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x0F\x1AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F>\x91\x90a:\xE6V[a+\x15V[\x90P`\0[\x87` \x01QQ\x81\x10\x15a\x11\xDEWa\x0F\x8D\x88` \x01Q\x82\x81Q\x81\x10a\x0FnWa\x0Fna:lV[` \x02` \x01\x01Q\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x83` \x01Q\x82\x81Q\x81\x10a\x0F\xA3Wa\x0F\xA3a:lV[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80\x15a\x10cW` \x83\x01Qa\x0F\xC4`\x01\x83a;\xC5V[\x81Q\x81\x10a\x0F\xD4Wa\x0F\xD4a:lV[` \x02` \x01\x01Q`\0\x1C\x83` \x01Q\x82\x81Q\x81\x10a\x0F\xF5Wa\x0F\xF5a:lV[` \x02` \x01\x01Q`\0\x1C\x11a\x10cW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: nonSignerPubkeys not sorted`d\x82\x01R`\x84\x01a\x0B\x08V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x84` \x01Q\x83\x81Q\x81\x10a\x10\xA8Wa\x10\xA8a:lV[` \x02` \x01\x01Q\x8B\x8B`\0\x01Q\x85\x81Q\x81\x10a\x10\xC7Wa\x10\xC7a:lV[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x11\x04\x93\x92\x91\x90\x92\x83Rc\xFF\xFF\xFF\xFF\x91\x82\x16` \x84\x01R\x16`@\x82\x01R``\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11!W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11E\x91\x90a:\xBDV[`\x01`\x01`\xC0\x1B\x03\x16\x83`\0\x01Q\x82\x81Q\x81\x10a\x11dWa\x11da:lV[` \x02` \x01\x01\x81\x81RPPa\x11\xCAa\x04\x8Ca\x11\x9E\x84\x86`\0\x01Q\x85\x81Q\x81\x10a\x11\x90Wa\x11\x90a:lV[` \x02` \x01\x01Q\x16a+\xA8V[\x8A` \x01Q\x84\x81Q\x81\x10a\x11\xB4Wa\x11\xB4a:lV[` \x02` \x01\x01Qa+\xD3\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x94P\x80a\x11\xD6\x81a;7V[\x91PPa\x0FHV[PPa\x11\xE9\x83a,\xB7V[`\x97T\x90\x93P`\xFF\x16`\0\x81a\x12\0W`\0a\x12\x82V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xC4H\xFE\xB8`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12^W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12\x82\x91\x90a:\xA4V[\x90P`\0[\x8A\x81\x10\x15a\x19\0W\x82\x15a\x13\xE2W\x89c\xFF\xFF\xFF\xFF\x16\x82\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c$\x9A\x0CB\x8F\x8F\x86\x81\x81\x10a\x12\xDEWa\x12\xDEa:lV[`@Q`\xE0\x85\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R\x92\x015`\xF8\x1C`\x04\x83\x01RP`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x13\x1EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13B\x91\x90a:\xA4V[a\x13L\x91\x90a;\x1FV[\x11a\x13\xE2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: StakeRegistry updates must `d\x82\x01R\x7Fbe within withdrawalDelayBlocks `\x84\x82\x01Rewindow`\xD0\x1B`\xA4\x82\x01R`\xC4\x01a\x0B\x08V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16ch\xBC\xCA\xAC\x8D\x8D\x84\x81\x81\x10a\x14#Wa\x14#a:lV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xA0\x01Q\x85\x81Q\x81\x10a\x14GWa\x14Ga:lV[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81R`\xFF\x90\x93\x16`\x04\x84\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x84\x01R\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\xA3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x14\xC7\x91\x90a;\xDCV[`\x01`\x01`@\x1B\x03\x19\x16a\x14\xEA\x8A`@\x01Q\x83\x81Q\x81\x10a\x0FnWa\x0Fna:lV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x14a\x15\x86W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`a`$\x82\x01R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: quorumApk hash in storage d`d\x82\x01R\x7Foes not match provided quorum ap`\x84\x82\x01R`k`\xF8\x1B`\xA4\x82\x01R`\xC4\x01a\x0B\x08V[a\x15\xB6\x89`@\x01Q\x82\x81Q\x81\x10a\x15\x9FWa\x15\x9Fa:lV[` \x02` \x01\x01Q\x87a%A\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x95P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xC8)LV\x8D\x8D\x84\x81\x81\x10a\x15\xF9Wa\x15\xF9a:lV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xC0\x01Q\x85\x81Q\x81\x10a\x16\x1DWa\x16\x1Da:lV[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81R`\xFF\x90\x93\x16`\x04\x84\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x84\x01R\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16yW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\x9D\x91\x90a<\x07V[\x85` \x01Q\x82\x81Q\x81\x10a\x16\xB3Wa\x16\xB3a:lV[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x82\x01R\x85\x01Q\x80Q\x82\x90\x81\x10a\x16\xDFWa\x16\xDFa:lV[` \x02` \x01\x01Q\x85`\0\x01Q\x82\x81Q\x81\x10a\x16\xFDWa\x16\xFDa:lV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPP`\0\x80[\x8A` \x01QQ\x81\x10\x15a\x18\xEBWa\x17u\x86`\0\x01Q\x82\x81Q\x81\x10a\x17GWa\x17Ga:lV[` \x02` \x01\x01Q\x8F\x8F\x86\x81\x81\x10a\x17aWa\x17aa:lV[`\x01\x92\x015`\xF8\x1C\x92\x90\x92\x1C\x81\x16\x14\x91\x90PV[\x15a\x18\xD9W\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xF2\xBE\x94\xAE\x8F\x8F\x86\x81\x81\x10a\x17\xBBWa\x17\xBBa:lV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8E\x89` \x01Q\x85\x81Q\x81\x10a\x17\xDFWa\x17\xDFa:lV[` \x02` \x01\x01Q\x8F`\xE0\x01Q\x88\x81Q\x81\x10a\x17\xFDWa\x17\xFDa:lV[` \x02` \x01\x01Q\x87\x81Q\x81\x10a\x18\x16Wa\x18\x16a:lV[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x87\x90\x1B\x16\x81R`\xFF\x90\x94\x16`\x04\x85\x01Rc\xFF\xFF\xFF\xFF\x92\x83\x16`$\x85\x01R`D\x84\x01\x91\x90\x91R\x16`d\x82\x01R`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x18zW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x18\x9E\x91\x90a<\x07V[\x87Q\x80Q\x85\x90\x81\x10a\x18\xB2Wa\x18\xB2a:lV[` \x02` \x01\x01\x81\x81Qa\x18\xC6\x91\x90a<$V[`\x01`\x01``\x1B\x03\x16\x90RP`\x01\x90\x91\x01\x90[\x80a\x18\xE3\x81a;7V[\x91PPa\x17!V[PP\x80\x80a\x18\xF8\x90a;7V[\x91PPa\x12\x87V[PPP`\0\x80a\x19\x1A\x8C\x86\x8A``\x01Q\x8B`\x80\x01Qa\x03qV[\x91P\x91P\x81a\x19\x8BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: pairing precompile call fai`d\x82\x01Rb\x1B\x19Y`\xEA\x1B`\x84\x82\x01R`\xA4\x01a\x0B\x08V[\x80a\x19\xECW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`9`$\x82\x01R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: signature is invalid\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x0B\x08V[PP`\0\x87\x82` \x01Q`@Q` \x01a\x1A\x07\x92\x91\x90a=`\0\xFD[PPPPPPV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x1BYW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x0B\x08\x90a<\x94V[`@QcQ\xB2zm`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xA3d\xF4\xDA\x90`$\x01[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1B\xBDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1B\xD1W=`\0\x80>=`\0\xFD[PPPPPV[a\x1B\xE0a*\x0BV[`@Qc\xA9\x8F\xB3U`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xA9\x8F\xB3U\x90a\x1B\xA3\x90\x84\x90`\x04\x01a=\xA4V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x1CLWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x1CfWP0;\x15\x80\x15a\x1CfWP`\0T`\xFF\x16`\x01\x14[a\x1C\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01a\x0B\x08V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x1C\xECW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x1C\xF6\x82\x83a-\xA4V[\x80\x15a\x1D=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1D\xC6\x91\x90a:\xE6V[`\xFF\x16\x90P\x80a\x1D\xE4WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x90V[`\0\x80[\x82\x81\x10\x15a\x1E\x99W`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xFF\x82\x16`\x04\x82\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90c<\xA5\xA5\xF5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1EWW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1E{\x91\x90a:\xA4V[a\x1E\x85\x90\x83a;\x1FV[\x91P\x80a\x1E\x91\x81a;7V[\x91PPa\x1D\xE8V[P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\xB4Wa\x1E\xB4a2GV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1E\xDDW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x9A\xA1e=`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1FBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Ff\x91\x90a:\xE6V[`\xFF\x16\x81\x10\x15a \xFFW`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xFF\x82\x16`\x04\x82\x01R`\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90c<\xA5\xA5\xF5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1F\xDAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F\xFE\x91\x90a:\xA4V[\x90P`\0[\x81\x81\x10\x15a \xEAW`@QcV\xE4\x02m`\xE1\x1B\x81R`\xFF\x84\x16`\x04\x82\x01R`$\x81\x01\x82\x90R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90c\xAD\xC8\x04\xDA\x90`D\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a xW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a \x9C\x91\x90a;gV[`\0\x01Q\x85\x85\x81Q\x81\x10a \xB2Wa \xB2a:lV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x83a \xD4\x81a;7V[\x94PP\x80\x80a \xE2\x90a;7V[\x91PPa \x03V[PP\x80\x80a \xF7\x90a;7V[\x91PPa\x1E\xE4V[P\x90\x94\x93PPPPV[a!\x11a*\x0BV[`\x01`\x01`\xA0\x1B\x03\x81\x16a!vW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x0B\x08V[a\t\xDB\x81a-RV[a!\x87a.!V[`\0[\x81\x81\x10\x15a$[W\x82\x82\x82\x81\x81\x10a!\xA4Wa!\xA4a:lV[\x90P` \x02\x81\x01\x90a!\xB6\x91\x90a=\xBEV[a!\xC7\x90`@\x81\x01\x90` \x01a4 V[`\x01`\x01`\xA0\x1B\x03\x16c#\xB8r\xDD30\x86\x86\x86\x81\x81\x10a!\xE9Wa!\xE9a:lV[\x90P` \x02\x81\x01\x90a!\xFB\x91\x90a=\xBEV[`@\x80Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x87\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`\x04\x82\x01R\x93\x90\x92\x16`$\x84\x01R\x015`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\"RW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\"v\x91\x90a=\xE9V[P`\0\x83\x83\x83\x81\x81\x10a\"\x8BWa\"\x8Ba:lV[\x90P` \x02\x81\x01\x90a\"\x9D\x91\x90a=\xBEV[a\"\xAE\x90`@\x81\x01\x90` \x01a4 V[`@Qcn\xB1v\x9F`\xE1\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16`$\x83\x01R\x91\x90\x91\x16\x90c\xDDb\xED>\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a#\x1CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a#@\x91\x90a:\xA4V[\x90P\x83\x83\x83\x81\x81\x10a#TWa#Ta:lV[\x90P` \x02\x81\x01\x90a#f\x91\x90a=\xBEV[a#w\x90`@\x81\x01\x90` \x01a4 V[`\x01`\x01`\xA0\x1B\x03\x16c\t^\xA7\xB3\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x87\x87\x87\x81\x81\x10a#\xB9Wa#\xB9a:lV[\x90P` \x02\x81\x01\x90a#\xCB\x91\x90a=\xBEV[`@\x015a#\xD9\x91\x90a;\x1FV[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x85\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16`\x04\x83\x01R`$\x82\x01R`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a$$W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a$H\x91\x90a=\xE9V[PP\x80a$T\x90a;7V[\x90Pa!\x8AV[P`@Qc\xFC\xE3l}`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xFC\xE3l}\x90a\x1A\xDB\x90\x85\x90\x85\x90`\x04\x01a>aV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra$\xC6a1mV[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R`\0\x90\x83``\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a$\xF9Wa$\xFBV[\xFE[P\x80a%9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x0B\x08V[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra%]a1\x8BV[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x80\x84\x01\x91\x90\x91R\x90\x84\x01Q``\x83\x01R`\0\x90\x83`\x80\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a$\xF9WP\x80a%9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCBXY\x19\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x0B\x08V[a%\xDDa1\xA9V[P`@\x80Q`\x80\x81\x01\x82R\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81\x83\x01\x90\x81R\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED``\x83\x01R\x81R\x81Q\x80\x83\x01\x90\x92R\x7F']\xC4\xA2\x88\xD1\xAF\xB3\xCB\xB1\xAC\t\x18u$\xC7\xDB69]\xF7\xBE;\x99\xE6s\xB1:\x07Ze\xEC\x82R\x7F\x1D\x9B\xEF\xCD\x05\xA52>m\xA4\xD45\xF3\xB6\x17\xCD\xB3\xAF\x83(\\-\xF7\x11\xEF9\xC0\x15q\x82\x7F\x9D` \x83\x81\x01\x91\x90\x91R\x81\x01\x91\x90\x91R\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0\x80\x80a&\xC5`\0\x80Q` a?\xB0\x839\x81Q\x91R\x86a:\x82V[\x90P[a&\xD1\x81a.\xB6V[\x90\x93P\x91P`\0\x80Q` a?\xB0\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a'\x0BW`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` a?\xB0\x839\x81Q\x91R`\x01\x82\x08\x90Pa&\xC8V[`@\x80Q\x80\x82\x01\x82R\x86\x81R` \x80\x82\x01\x86\x90R\x82Q\x80\x84\x01\x90\x93R\x86\x83R\x82\x01\x84\x90R`\0\x91\x82\x91\x90a'Wa1\xCEV[`\0[`\x02\x81\x10\x15a)\x1CW`\0a'p\x82`\x06a?nV[\x90P\x84\x82`\x02\x81\x10a'\x84Wa'\x84a:lV[` \x02\x01QQ\x83a'\x96\x83`\0a;\x1FV[`\x0C\x81\x10a'\xA6Wa'\xA6a:lV[` \x02\x01R\x84\x82`\x02\x81\x10a'\xBDWa'\xBDa:lV[` \x02\x01Q` \x01Q\x83\x82`\x01a'\xD4\x91\x90a;\x1FV[`\x0C\x81\x10a'\xE4Wa'\xE4a:lV[` \x02\x01R\x83\x82`\x02\x81\x10a'\xFBWa'\xFBa:lV[` \x02\x01QQQ\x83a(\x0E\x83`\x02a;\x1FV[`\x0C\x81\x10a(\x1EWa(\x1Ea:lV[` \x02\x01R\x83\x82`\x02\x81\x10a(5Wa(5a:lV[` \x02\x01QQ`\x01` \x02\x01Q\x83a(N\x83`\x03a;\x1FV[`\x0C\x81\x10a(^Wa(^a:lV[` \x02\x01R\x83\x82`\x02\x81\x10a(uWa(ua:lV[` \x02\x01Q` \x01Q`\0`\x02\x81\x10a(\x90Wa(\x90a:lV[` \x02\x01Q\x83a(\xA1\x83`\x04a;\x1FV[`\x0C\x81\x10a(\xB1Wa(\xB1a:lV[` \x02\x01R\x83\x82`\x02\x81\x10a(\xC8Wa(\xC8a:lV[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a(\xE3Wa(\xE3a:lV[` \x02\x01Q\x83a(\xF4\x83`\x05a;\x1FV[`\x0C\x81\x10a)\x04Wa)\x04a:lV[` \x02\x01RP\x80a)\x14\x81a;7V[\x91PPa'ZV[Pa)%a1\xEDV[`\0` \x82a\x01\x80\x85`\x08\x8C\xFA\x91Q\x91\x9C\x91\x15\x15\x9BP\x90\x99PPPPPPPPPPV[```\0\x80a)W\x84a+\xA8V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a)rWa)ra2GV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a)\x9CW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a)\xB4WPa\x01\0\x81\x10[\x15a \xFFW`\x01\x81\x1B\x93P\x85\x84\x16\x15a)\xFBW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a)\xDDWa)\xDDa:lV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a*\x04\x81a;7V[\x90Pa)\xA3V[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x1ACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x0B\x08V[`eT`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\xE1\x1C\xDD\xF1\x81jC1\x8C\xA1u\xBB\xC5,\xD0\x18T6\xE9\xCB\xEA\xD7\xC8:\xCCT\xA7>F\x17\x17\xE3\x91\x01`@Q\x80\x91\x03\x90\xA1`e\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x97\x80T`\xFF\x19\x16\x82\x15\x15\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F@\xE4\xED\x88\n)\xE0\xF6\xDD\xCE0tW\xFBu\xCD\xDFO\xEE\xF7\xD3\xEC\xB00\x1B\xFD\xF4\x97j\x0E-\xFC\x90` \x01`@Q\x80\x91\x03\x90\xA1PV[`\0\x80a+!\x84a/8V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a+\x9FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`?`$\x82\x01R\x7FBitmapUtils.orderedBytesArrayToB`D\x82\x01R\x7Fitmap: bitmap exceeds max value\0`d\x82\x01R`\x84\x01a\x0B\x08V[\x90P[\x92\x91PPV[`\0\x80[\x82\x15a+\xA2Wa+\xBD`\x01\x84a;\xC5V[\x90\x92\x16\x91\x80a+\xCB\x81a?\x8DV[\x91PPa+\xACV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x02\0\x82a\xFF\xFF\x16\x10a,/W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01Roscalar-too-large`\x80\x1B`D\x82\x01R`d\x01a\x0B\x08V[\x81a\xFF\xFF\x16`\x01\x14\x15a,CWP\x81a+\xA2V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01\x81\x90R\x84\x90`\x01\x90[\x81a\xFF\xFF\x16\x86a\xFF\xFF\x16\x10a,\xACW`\x01a\xFF\xFF\x87\x16`\xFF\x83\x16\x1C\x81\x16\x14\x15a,\x8FWa,\x8C\x84\x84a%AV[\x93P[a,\x99\x83\x84a%AV[\x92Pb\x01\xFF\xFE`\x01\x92\x83\x1B\x16\x91\x01a,_V[P\x91\x95\x94PPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a,\xDCWP` \x82\x01Q\x15[\x15a,\xFAWPP`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x90V[`@Q\x80`@\x01`@R\x80\x83`\0\x01Q\x81R` \x01`\0\x80Q` a?\xB0\x839\x81Q\x91R\x84` \x01Qa--\x91\x90a:\x82V[a-E\x90`\0\x80Q` a?\xB0\x839\x81Q\x91Ra;\xC5V[\x90R\x92\x91PPV[\x91\x90PV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[`\0Ta\x01\0\x90\x04`\xFF\x16a.\x0FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`+`$\x82\x01R\x7FInitializable: contract is not i`D\x82\x01Rjnitializing`\xA8\x1B`d\x82\x01R`\x84\x01a\x0B\x08V[a.\x18\x82a-RV[a\x1D<\x81a*eV[`eT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x1ACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`L`$\x82\x01R\x7FServiceManagerBase.onlyRewardsIn`D\x82\x01R\x7Fitiator: caller is not the rewar`d\x82\x01Rk29\x904\xB74\xBA4\xB0\xBA7\xB9`\xA1\x1B`\x84\x82\x01R`\xA4\x01a\x0B\x08V[`\0\x80\x80`\0\x80Q` a?\xB0\x839\x81Q\x91R`\x03`\0\x80Q` a?\xB0\x839\x81Q\x91R\x86`\0\x80Q` a?\xB0\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0a/,\x82\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R`\0\x80Q` a?\xB0\x839\x81Q\x91Ra0\xC5V[\x91\x95\x91\x94P\x90\x92PPPV[`\0a\x01\0\x82Q\x11\x15a/\xC1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FBitmapUtils.orderedBytesArrayToB\x90\x82\x01R\x7Fitmap: orderedBytesArray is too `d\x82\x01Rclong`\xE0\x1B`\x84\x82\x01R`\xA4\x01a\x0B\x08V[\x81Qa/\xCFWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a/\xE5Wa/\xE5a:lV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a0\xBCW\x84\x81\x81Q\x81\x10a0\x13Wa0\x13a:lV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a0\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FBitmapUtils.orderedBytesArrayToB`D\x82\x01R\x7Fitmap: orderedBytesArray is not `d\x82\x01Rf\x1B\xDC\x99\x19\\\x99Y`\xCA\x1B`\x84\x82\x01R`\xA4\x01a\x0B\x08V[\x91\x81\x17\x91a0\xB5\x81a;7V[\x90Pa/\xF8V[P\x90\x93\x92PPPV[`\0\x80a0\xD0a1\xEDV[a0\xD8a2\x0BV[` \x80\x82R\x81\x81\x01\x81\x90R`@\x82\x01\x81\x90R``\x82\x01\x88\x90R`\x80\x82\x01\x87\x90R`\xA0\x82\x01\x86\x90R\x82`\xC0\x83`\x05a\x07\xD0Z\x03\xFA\x92P\x82\x80\x15a$\xF9WP\x82a1bW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7FBN254.expMod: call failure\0\0\0\0\0\0`D\x82\x01R`d\x01a\x0B\x08V[PQ\x95\x94PPPPPV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\x80\x01`@R\x80`\x04\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80a1\xBCa2)V[\x81R` \x01a1\xC9a2)V[\x90R\x90V[`@Q\x80a\x01\x80\x01`@R\x80`\x0C\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80` \x01`@R\x80`\x01\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\xC0\x01`@R\x80`\x06\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2\x7FWa2\x7Fa2GV[`@R\x90V[`@Qa\x01\0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2\x7FWa2\x7Fa2GV[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2\x7FWa2\x7Fa2GV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2\xF2Wa2\xF2a2GV[`@R\x91\x90PV[`\0`@\x82\x84\x03\x12\x15a3\x0CW`\0\x80\xFD[a3\x14a2]V[\x90P\x815\x81R` \x82\x015` \x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a3;W`\0\x80\xFD[a3Ca2]V[\x80`@\x84\x01\x85\x81\x11\x15a3UW`\0\x80\xFD[\x84[\x81\x81\x10\x15a3oW\x805\x84R` \x93\x84\x01\x93\x01a3WV[P\x90\x95\x94PPPPPV[`\0`\x80\x82\x84\x03\x12\x15a3\x8CW`\0\x80\xFD[a3\x94a2]V[\x90Pa3\xA0\x83\x83a3*V[\x81Ra3\xAF\x83`@\x84\x01a3*V[` \x82\x01R\x92\x91PPV[`\0\x80`\0\x80a\x01 \x85\x87\x03\x12\x15a3\xD1W`\0\x80\xFD[\x845\x93Pa3\xE2\x86` \x87\x01a2\xFAV[\x92Pa3\xF1\x86``\x87\x01a3zV[\x91Pa4\0\x86`\xE0\x87\x01a2\xFAV[\x90P\x92\x95\x91\x94P\x92PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\xDBW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a42W`\0\x80\xFD[\x815a+\x9F\x81a4\x0BV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a4~W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a4YV[P\x90\x96\x95PPPPPPV[\x80\x15\x15\x81\x14a\t\xDBW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a4\xAAW`\0\x80\xFD[\x815a+\x9F\x81a4\x8AV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a-MW`\0\x80\xFD[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a4\xE2Wa4\xE2a2GV[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a4\xFDW`\0\x80\xFD[\x815` a5\x12a5\r\x83a4\xC9V[a2\xCAV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a51W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a5SWa5F\x81a4\xB5V[\x83R\x91\x83\x01\x91\x83\x01a55V[P\x96\x95PPPPPPV[`\0\x82`\x1F\x83\x01\x12a5oW`\0\x80\xFD[\x815` a5\x7Fa5\r\x83a4\xC9V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a5\x9EW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a5SWa5\xB4\x88\x82a2\xFAV[\x83R\x91\x83\x01\x91`@\x01a5\xA2V[`\0\x82`\x1F\x83\x01\x12a5\xD3W`\0\x80\xFD[\x815` a5\xE3a5\r\x83a4\xC9V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a6\x02W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a5SW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a6%W`\0\x80\x81\xFD[a63\x89\x86\x83\x8B\x01\x01a4\xECV[\x84RP\x91\x83\x01\x91\x83\x01a6\x06V[`\0a\x01\x80\x82\x84\x03\x12\x15a6TW`\0\x80\xFD[a6\\a2\x85V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a6uW`\0\x80\xFD[a6\x81\x85\x83\x86\x01a4\xECV[\x83R` \x84\x015\x91P\x80\x82\x11\x15a6\x97W`\0\x80\xFD[a6\xA3\x85\x83\x86\x01a5^V[` \x84\x01R`@\x84\x015\x91P\x80\x82\x11\x15a6\xBCW`\0\x80\xFD[a6\xC8\x85\x83\x86\x01a5^V[`@\x84\x01Ra6\xDA\x85``\x86\x01a3zV[``\x84\x01Ra6\xEC\x85`\xE0\x86\x01a2\xFAV[`\x80\x84\x01Ra\x01 \x84\x015\x91P\x80\x82\x11\x15a7\x06W`\0\x80\xFD[a7\x12\x85\x83\x86\x01a4\xECV[`\xA0\x84\x01Ra\x01@\x84\x015\x91P\x80\x82\x11\x15a7,W`\0\x80\xFD[a78\x85\x83\x86\x01a4\xECV[`\xC0\x84\x01Ra\x01`\x84\x015\x91P\x80\x82\x11\x15a7RW`\0\x80\xFD[Pa7_\x84\x82\x85\x01a5\xC2V[`\xE0\x83\x01RP\x92\x91PPV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a7\x83W`\0\x80\xFD[\x855\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a7\xA1W`\0\x80\xFD[\x81\x88\x01\x91P\x88`\x1F\x83\x01\x12a7\xB5W`\0\x80\xFD[\x815\x81\x81\x11\x15a7\xC4W`\0\x80\xFD[\x89` \x82\x85\x01\x01\x11\x15a7\xD6W`\0\x80\xFD[` \x83\x01\x96P\x94Pa7\xEA`@\x89\x01a4\xB5V[\x93P``\x88\x015\x91P\x80\x82\x11\x15a8\0W`\0\x80\xFD[Pa8\r\x88\x82\x89\x01a6AV[\x91PP\x92\x95P\x92\x95\x90\x93PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a8SW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a8.V[P\x94\x95\x94PPPPPV[`@\x81R`\0\x83Q`@\x80\x84\x01Ra8y`\x80\x84\x01\x82a8\x1AV[\x90P` \x85\x01Q`?\x19\x84\x83\x03\x01``\x85\x01Ra8\x96\x82\x82a8\x1AV[\x92PPP\x82` \x83\x01R\x93\x92PPPV[`\0`\x01`\x01`@\x1B\x03\x83\x11\x15a8\xC0Wa8\xC0a2GV[a8\xD3`\x1F\x84\x01`\x1F\x19\x16` \x01a2\xCAV[\x90P\x82\x81R\x83\x83\x83\x01\x11\x15a8\xE7W`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a9\x11W`\0\x80\xFD[\x825a9\x1C\x81a4\x0BV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a98W`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a9LW`\0\x80\xFD[a9Ta2\xA8V[\x825\x82\x81\x11\x15a9cW`\0\x80\xFD[\x83\x01\x91P`\x1F\x82\x01\x87\x13a9vW`\0\x80\xFD[a9\x85\x87\x835` \x85\x01a8\xA7V[\x81R` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x93PPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a9\xBAW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a9\xD0W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a9\xE1W`\0\x80\xFD[a9\xF0\x84\x825` \x84\x01a8\xA7V[\x94\x93PPPPV[`\0\x80` \x83\x85\x03\x12\x15a:\x0BW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a:\"W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a:6W`\0\x80\xFD[\x815\x81\x81\x11\x15a:EW`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a:ZW`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x82a:\x9FWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`\0` \x82\x84\x03\x12\x15a:\xB6W`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a:\xCFW`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a+\x9FW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a:\xF8W`\0\x80\xFD[\x81Q`\xFF\x81\x16\x81\x14a+\x9FW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a;2Wa;2a;\tV[P\x01\x90V[`\0`\0\x19\x82\x14\x15a;KWa;Ka;\tV[P`\x01\x01\x90V[`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\t\xDBW`\0\x80\xFD[`\0`@\x82\x84\x03\x12\x15a;yW`\0\x80\xFD[a;\x81a2]V[\x82Qa;\x8C\x81a4\x0BV[\x81R` \x83\x01Qa;\x9C\x81a;RV[` \x82\x01R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a;\xBAW`\0\x80\xFD[\x81Qa+\x9F\x81a4\x0BV[`\0\x82\x82\x10\x15a;\xD7Wa;\xD7a;\tV[P\x03\x90V[`\0` \x82\x84\x03\x12\x15a;\xEEW`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x16\x81\x14a+\x9FW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a<\x19W`\0\x80\xFD[\x81Qa+\x9F\x81a;RV[`\0`\x01`\x01``\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15a)\x81a4\x0BV[`\x01`\x01`\xA0\x1B\x03\x16\x87R\x81\x83\x015a>A\x81a;RV[`\x01`\x01``\x1B\x03\x16\x87\x84\x01R`@\x96\x87\x01\x96\x91\x90\x91\x01\x90`\x01\x01a>\x16V[` \x80\x82R\x81\x81\x01\x83\x90R`\0\x90`@\x80\x84\x01`\x05\x86\x90\x1B\x85\x01\x82\x01\x87\x85[\x88\x81\x10\x15a?`W\x87\x83\x03`?\x19\x01\x84R\x8156\x8B\x90\x03`\x9E\x19\x01\x81\x12a>\xA6W`\0\x80\xFD[\x8A\x01`\xA0\x8156\x83\x90\x03`\x1E\x19\x01\x81\x12a>\xBFW`\0\x80\xFD[\x82\x01\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a>\xD7W`\0\x80\xFD[\x80`\x06\x1B6\x03\x84\x13\x15a>\xE9W`\0\x80\xFD[\x82\x87Ra>\xFB\x83\x88\x01\x82\x8C\x85\x01a>\x06V[\x92PPPa?\n\x88\x83\x01a=\xDEV[`\x01`\x01`\xA0\x1B\x03\x16\x88\x86\x01R\x81\x87\x015\x87\x86\x01R``a?,\x81\x84\x01a4\xB5V[c\xFF\xFF\xFF\xFF\x16\x90\x86\x01R`\x80a?C\x83\x82\x01a4\xB5V[c\xFF\xFF\xFF\xFF\x16\x95\x01\x94\x90\x94RP\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a>\x80V[P\x90\x98\x97PPPPPPPPV[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a?\x88Wa?\x88a;\tV[P\x02\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a?\xA5Wa?\xA5a;\tV[`\x01\x01\x93\x92PPPV\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGBLSSignatureChecker.checkSignatu\xA2dipfsX\"\x12 \x04\xD1K\x0CgI\x1Co\x81\xFCh`\x90\xC2\xB8\x01X~_w\x17v\x04\x07\xA2v\xDC\x8BQ~o\xC0dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x07x8\x03\x80a\x07x\x839\x81\x01`@\x81\x90Ra\0/\x91a\x02cV[`\0[\x82Q\x81\x10\x15a\0wWa\0e\x83\x82\x81Q\x81\x10a\0PWa\0Pa\x039V[` \x02` \x01\x01Q`\x01a\0\x88` \x1B` \x1CV[\x80a\0o\x81a\x03OV[\x91PPa\x002V[Pa\0\x81\x81a\x01ZV[PPa\x03xV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\0\xF9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FPauserRegistry._setPauser: zero `D\x82\x01Rl\x18Y\x19\x1C\x99\\\xDC\xC8\x1A[\x9C\x1D]`\x9A\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x81\x81R` \x81\x81R`@\x91\x82\x90 \x80T`\xFF\x19\x16\x85\x15\x15\x90\x81\x17\x90\x91U\x82Q\x93\x84R\x90\x83\x01R\x7Fe\xD3\xA1\xFDL\x13\xF0\\\xBA\x16O\x80\xD0<\xE9\x0F\xB4\xB5\xE2\x19F\xBF\xC3\xAB}\xBDCL-\x0B\x91R\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x01\xC8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FPauserRegistry._setUnpauser: zer`D\x82\x01Rn\x1B\xC8\x18Y\x19\x1C\x99\\\xDC\xC8\x1A[\x9C\x1D]`\x8A\x1B`d\x82\x01R`\x84\x01a\0\xF0V[`\x01T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\x06\xB4\x16z%(\x88z\x1E\x97\xA3f\xEE\xFE\x85I\xBF\xBF\x1E\xA3\xE6\xAC\x81\xCB%d\xA94\xD2\x0E\x88\x92\x91\x01`@Q\x80\x91\x03\x90\xA1`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x02^W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x02vW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x02\x8DW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x02\xA1W`\0\x80\xFD[\x81Q` \x82\x82\x11\x15a\x02\xB5Wa\x02\xB5a\x021V[\x81`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x86\x82\x11\x17\x15a\x02\xDAWa\x02\xDAa\x021V[`@R\x92\x83R\x81\x83\x01\x93P\x84\x81\x01\x82\x01\x92\x89\x84\x11\x15a\x02\xF8W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a\x03\x1DWa\x03\x0E\x86a\x02GV[\x85R\x94\x82\x01\x94\x93\x82\x01\x93a\x02\xFDV[\x96Pa\x03,\x90P\x87\x82\x01a\x02GV[\x94PPPPP\x92P\x92\x90PV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x03qWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V[a\x03\xF1\x80a\x03\x87`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0LW`\x005`\xE0\x1C\x80cF\xFB\xF6\x8E\x14a\0QW\x80c\x85hR\x06\x14a\0\x89W\x80c\xCET\x84(\x14a\0\x9EW\x80c\xEA\xB6mz\x14a\0\xB1W[`\0\x80\xFD[a\0ta\0_6`\x04a\x03\x13V[`\0` \x81\x90R\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\x9Ca\0\x976`\x04a\x035V[a\0\xDCV[\0[a\0\x9Ca\0\xAC6`\x04a\x03\x13V[a\x01\x1DV[`\x01Ta\0\xC4\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\x80V[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01\x0FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\x06\x90a\x03qV[`@Q\x80\x91\x03\x90\xFD[a\x01\x19\x82\x82a\x01SV[PPV[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01GW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\x06\x90a\x03qV[a\x01P\x81a\x02 V[PV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x01\xBFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FPauserRegistry._setPauser: zero `D\x82\x01Rl\x18Y\x19\x1C\x99\\\xDC\xC8\x1A[\x9C\x1D]`\x9A\x1B`d\x82\x01R`\x84\x01a\x01\x06V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x81\x81R` \x81\x81R`@\x91\x82\x90 \x80T`\xFF\x19\x16\x85\x15\x15\x90\x81\x17\x90\x91U\x82Q\x93\x84R\x90\x83\x01R\x7Fe\xD3\xA1\xFDL\x13\xF0\\\xBA\x16O\x80\xD0<\xE9\x0F\xB4\xB5\xE2\x19F\xBF\xC3\xAB}\xBDCL-\x0B\x91R\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x02\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FPauserRegistry._setUnpauser: zer`D\x82\x01Rn\x1B\xC8\x18Y\x19\x1C\x99\\\xDC\xC8\x1A[\x9C\x1D]`\x8A\x1B`d\x82\x01R`\x84\x01a\x01\x06V[`\x01T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\x06\xB4\x16z%(\x88z\x1E\x97\xA3f\xEE\xFE\x85I\xBF\xBF\x1E\xA3\xE6\xAC\x81\xCB%d\xA94\xD2\x0E\x88\x92\x91\x01`@Q\x80\x91\x03\x90\xA1`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x0EW`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x03%W`\0\x80\xFD[a\x03.\x82a\x02\xF7V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x03HW`\0\x80\xFD[a\x03Q\x83a\x02\xF7V[\x91P` \x83\x015\x80\x15\x15\x81\x14a\x03fW`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[` \x80\x82R`*\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Ri9\x90:\xB780\xBA\xB9\xB2\xB9`\xB1\x1B``\x82\x01R`\x80\x01\x90V\xFE\xA2dipfsX\"\x12 '\xE8\x96\xEE\xD5\xAF\xE9D\xD6\xCC\x17*\xEFr\xE2a\x08\xDBL\xB8(q\xC2\x9E\xE2\x97h`F\xC2\xEEMdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x1E\x03\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0bW`\x005`\xE0\x1C\x80c1\xB3k\xD9\x14a\0gW\x80c5c\xB0\xD1\x14a\0\x90W\x80cM+W\xFE\x14a\0\xB0W\x80cOs\x9Ft\x14a\0\xD0W\x80c\\\x15Vb\x14a\0\xF0W\x80c\xCE\xFD\xC1\xD4\x14a\x01\x10W[`\0\x80\xFD[a\0za\0u6`\x04a\x13\xFAV[a\x011V[`@Qa\0\x87\x91\x90a\x14\xE8V[`@Q\x80\x91\x03\x90\xF3[a\0\xA3a\0\x9E6`\x04a\x15$V[a\x02MV[`@Qa\0\x87\x91\x90a\x16\x7FV[a\0\xC3a\0\xBE6`\x04a\x16\xF8V[a\x06\xE3V[`@Qa\0\x87\x91\x90a\x17GV[a\0\xE3a\0\xDE6`\x04a\x17\xDFV[a\x07\xF8V[`@Qa\0\x87\x91\x90a\x18\xD7V[a\x01\x03a\0\xFE6`\x04a\x19\x92V[a\x0F\"V[`@Qa\0\x87\x91\x90a\x19\xF5V[a\x01#a\x01\x1E6`\x04a\x1A-V[a\x10\xEAV[`@Qa\0\x87\x92\x91\x90a\x1AdV[``\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x01LWa\x01La\x13\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01uW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82Q\x81\x10\x15a\x02FW\x83`\x01`\x01`\xA0\x1B\x03\x16c\x13T*N\x84\x83\x81Q\x81\x10a\x01\xA5Wa\x01\xA5a\x1A\x85V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x01\xD8\x91\x90`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xF5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x19\x91\x90a\x1A\x9BV[\x82\x82\x81Q\x81\x10a\x02+Wa\x02+a\x1A\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01Ra\x02?\x81a\x1A\xCAV[\x90Pa\x01{V[P\x92\x91PPV[```\0\x84`\x01`\x01`\xA0\x1B\x03\x16ch0H5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\x8FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xB3\x91\x90a\x1A\xE5V[\x90P`\0\x85`\x01`\x01`\xA0\x1B\x03\x16c\x9E\x99#\xC2`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\xF5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\x19\x91\x90a\x1A\xE5V[\x90P`\0\x86`\x01`\x01`\xA0\x1B\x03\x16c]\xF4YF`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03[W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\x7F\x91\x90a\x1A\xE5V[\x90P`\0\x86Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03\x9CWa\x03\x9Ca\x13\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x03\xCFW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x03\xBAW\x90P[P\x90P`\0[\x87Q\x81\x10\x15a\x06\xD7W`\0\x88\x82\x81Q\x81\x10a\x03\xF2Wa\x03\xF2a\x1A\x85V[\x01` \x01Q`@Qc\x89\x02bE`\xE0\x1B\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01\x81\x90Rc\xFF\xFF\xFF\xFF\x8A\x16`$\x83\x01R\x91P`\0\x90`\x01`\x01`\xA0\x1B\x03\x87\x16\x90c\x89\x02bE\x90`D\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04SW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x04{\x91\x90\x81\x01\x90a\x1B\x02V[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x04\x96Wa\x04\x96a\x13\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04\xE1W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R`\0\x19\x90\x92\x01\x91\x01\x81a\x04\xB4W\x90P[P\x84\x84\x81Q\x81\x10a\x04\xF4Wa\x04\xF4a\x1A\x85V[` \x02` \x01\x01\x81\x90RP`\0[\x81Q\x81\x10\x15a\x06\xC1W`@Q\x80``\x01`@R\x80\x87`\x01`\x01`\xA0\x1B\x03\x16cG\xB3\x14\xE8\x85\x85\x81Q\x81\x10a\x057Wa\x057a\x1A\x85V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x05]\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05zW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x9E\x91\x90a\x1A\xE5V[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x83\x81Q\x81\x10a\x05\xBEWa\x05\xBEa\x1A\x85V[` \x02` \x01\x01Q\x81R` \x01\x89`\x01`\x01`\xA0\x1B\x03\x16c\xFA(\xC6'\x85\x85\x81Q\x81\x10a\x05\xECWa\x05\xECa\x1A\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\x04\x81\x01\x91\x90\x91R`\xFF\x88\x16`$\x82\x01Rc\xFF\xFF\xFF\xFF\x8F\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06HW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06l\x91\x90a\x1B\x92V[`\x01`\x01``\x1B\x03\x16\x81RP\x85\x85\x81Q\x81\x10a\x06\x8AWa\x06\x8Aa\x1A\x85V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\x06\xA3Wa\x06\xA3a\x1A\x85V[` \x02` \x01\x01\x81\x90RP\x80\x80a\x06\xB9\x90a\x1A\xCAV[\x91PPa\x05\x02V[PPP\x80\x80a\x06\xCF\x90a\x1A\xCAV[\x91PPa\x03\xD5V[P\x97\x96PPPPPPPV[``\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x06\xFEWa\x06\xFEa\x13\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07'W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82Q\x81\x10\x15a\x02FW\x83`\x01`\x01`\xA0\x1B\x03\x16c)k\xB0d\x84\x83\x81Q\x81\x10a\x07WWa\x07Wa\x1A\x85V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x07}\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\x9AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xBE\x91\x90a\x1A\xE5V[\x82\x82\x81Q\x81\x10a\x07\xD0Wa\x07\xD0a\x1A\x85V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01Ra\x07\xF1\x81a\x1A\xCAV[\x90Pa\x07-V[a\x08#`@Q\x80`\x80\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`\0\x87`\x01`\x01`\xA0\x1B\x03\x16ch0H5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08cW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\x87\x91\x90a\x1A\xE5V[\x90Pa\x08\xB4`@Q\x80`\x80\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`@Qca\xC8\xA1/`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x8A\x16\x90c\xC3\x91B^\x90a\x08\xE4\x90\x8B\x90\x89\x90\x89\x90`\x04\x01a\x1B\xBBV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\x01W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\t)\x91\x90\x81\x01\x90a\x1C\x05V[\x81R`@Qc@\xE0:\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x81\xC0u\x02\x90a\t[\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a\x1C\xBCV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\txW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\t\xA0\x91\x90\x81\x01\x90a\x1C\x05V[`@\x82\x01R\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xBDWa\t\xBDa\x13\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\xF0W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\t\xDBW\x90P[P``\x82\x01R`\0[`\xFF\x81\x16\x87\x11\x15a\x0E3W`\0\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\x1EWa\n\x1Ea\x13\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\nGW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x83``\x01Q\x83`\xFF\x16\x81Q\x81\x10a\naWa\naa\x1A\x85V[` \x02` \x01\x01\x81\x90RP`\0[\x86\x81\x10\x15a\r3W`\0\x8C`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x8A\x8A\x85\x81\x81\x10a\n\x9AWa\n\x9Aa\x1A\x85V[\x90P` \x02\x015\x8E\x88`\0\x01Q\x86\x81Q\x81\x10a\n\xB8Wa\n\xB8a\x1A\x85V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\n\xF5\x93\x92\x91\x90\x92\x83Rc\xFF\xFF\xFF\xFF\x91\x82\x16` \x84\x01R\x16`@\x82\x01R``\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\x12W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B6\x91\x90a\x1C\xE5V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16a\x0B\xDEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R\x7FOperatorStateRetriever.getCheckS`D\x82\x01R\x7FignaturesIndices: operator must `d\x82\x01R\x7Fbe registered at blocknumber\0\0\0\0`\x84\x82\x01R`\xA4\x01`@Q\x80\x91\x03\x90\xFD[\x8A\x8A\x85`\xFF\x16\x81\x81\x10a\x0B\xF3Wa\x0B\xF3a\x1A\x85V[`\x01`\x01`\xC0\x1B\x03\x84\x16\x92\x015`\xF8\x1C\x91\x90\x91\x1C`\x01\x90\x81\x16\x14\x15\x90Pa\r W\x85`\x01`\x01`\xA0\x1B\x03\x16c\xDD\x98F\xB9\x8A\x8A\x85\x81\x81\x10a\x0C5Wa\x0C5a\x1A\x85V[\x90P` \x02\x015\x8D\x8D\x88`\xFF\x16\x81\x81\x10a\x0CQWa\x0CQa\x1A\x85V[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x87\x90\x1B\x16\x81R`\x04\x81\x01\x94\x90\x94R\x91\x90\x91\x015`\xF8\x1C`$\x83\x01RPc\xFF\xFF\xFF\xFF\x8F\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\xA7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xCB\x91\x90a\x1D\x0EV[\x85``\x01Q\x85`\xFF\x16\x81Q\x81\x10a\x0C\xE4Wa\x0C\xE4a\x1A\x85V[` \x02` \x01\x01Q\x84\x81Q\x81\x10a\x0C\xFDWa\x0C\xFDa\x1A\x85V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x82a\r\x1C\x81a\x1A\xCAV[\x93PP[P\x80a\r+\x81a\x1A\xCAV[\x91PPa\noV[P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\rNWa\rNa\x13\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\rwW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82\x81\x10\x15a\r\xF8W\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\r\x9EWa\r\x9Ea\x1A\x85V[` \x02` \x01\x01Q\x81\x81Q\x81\x10a\r\xB7Wa\r\xB7a\x1A\x85V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\r\xD1Wa\r\xD1a\x1A\x85V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\r\xF0\x81a\x1A\xCAV[\x91PPa\r}V[P\x80\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0E\x13Wa\x0E\x13a\x1A\x85V[` \x02` \x01\x01\x81\x90RPPP\x80\x80a\x0E+\x90a\x1D+V[\x91PPa\t\xF9V[P`\0\x89`\x01`\x01`\xA0\x1B\x03\x16c]\xF4YF`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0EtW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\x98\x91\x90a\x1A\xE5V[`@Qc5IR\xA3`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xD5%J\x8C\x90a\x0E\xCB\x90\x8B\x90\x8B\x90\x8E\x90`\x04\x01a\x1DKV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xE8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0F\x10\x91\x90\x81\x01\x90a\x1C\x05V[` \x83\x01RP\x98\x97PPPPPPPPV[```\0\x84`\x01`\x01`\xA0\x1B\x03\x16c\xC3\x91B^\x84\x86`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0FT\x92\x91\x90a\x1DuV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0FqW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0F\x99\x91\x90\x81\x01\x90a\x1C\x05V[\x90P`\0\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0F\xB6Wa\x0F\xB6a\x13\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F\xDFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85Q\x81\x10\x15a\x10\xE0W\x86`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x87\x83\x81Q\x81\x10a\x10\x0FWa\x10\x0Fa\x1A\x85V[` \x02` \x01\x01Q\x87\x86\x85\x81Q\x81\x10a\x10*Wa\x10*a\x1A\x85V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10g\x93\x92\x91\x90\x92\x83Rc\xFF\xFF\xFF\xFF\x91\x82\x16` \x84\x01R\x16`@\x82\x01R``\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\x84W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xA8\x91\x90a\x1C\xE5V[`\x01`\x01`\xC0\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x10\xC3Wa\x10\xC3a\x1A\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a\x10\xD8\x81a\x1A\xCAV[\x91PPa\x0F\xE5V[P\x95\x94PPPPPV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91``\x91\x83\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P\x84\x81`\0\x81Q\x81\x10a\x11%Wa\x11%a\x1A\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qca\xC8\xA1/`\xE1\x1B\x81R`\0\x90`\x01`\x01`\xA0\x1B\x03\x88\x16\x90c\xC3\x91B^\x90a\x11a\x90\x88\x90\x86\x90`\x04\x01a\x1DuV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x11\xA6\x91\x90\x81\x01\x90a\x1C\x05V[`\0\x81Q\x81\x10a\x11\xB8Wa\x11\xB8a\x1A\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Qc\x04\xECcQ`\xE0\x1B\x81R`\x04\x81\x01\x88\x90Rc\xFF\xFF\xFF\xFF\x87\x81\x16`$\x83\x01R\x90\x91\x16`D\x82\x01\x81\x90R\x91P`\0\x90`\x01`\x01`\xA0\x1B\x03\x89\x16\x90c\x04\xECcQ\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12$W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12H\x91\x90a\x1C\xE5V[`\x01`\x01`\xC0\x1B\x03\x16\x90P`\0a\x12^\x82a\x12|V[\x90P\x81a\x12l\x8A\x83\x8Aa\x02MV[\x95P\x95PPPPP\x93P\x93\x91PPV[```\0\x80a\x12\x8A\x84a\x13HV[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12\xA5Wa\x12\xA5a\x13\x91V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x12\xCFW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x12\xE7WPa\x01\0\x81\x10[\x15a\x13>W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x13.W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x13\x10Wa\x13\x10a\x1A\x85V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x137\x81a\x1A\xCAV[\x90Pa\x12\xD6V[P\x90\x94\x93PPPPV[`\0\x80[\x82\x15a\x13sWa\x13]`\x01\x84a\x1D\x94V[\x90\x92\x16\x91\x80a\x13k\x81a\x1D\xABV[\x91PPa\x13LV[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x13\x8EW`\0\x80\xFD[PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x13\xCFWa\x13\xCFa\x13\x91V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x13\xF0Wa\x13\xF0a\x13\x91V[P`\x05\x1B` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x14\rW`\0\x80\xFD[\x825a\x14\x18\x81a\x13yV[\x91P` \x83\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x144W`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x14EW`\0\x80\xFD[\x805a\x14Xa\x14S\x82a\x13\xD7V[a\x13\xA7V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15a\x14wW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x14\x9EW\x835a\x14\x8F\x81a\x13yV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x14|V[\x80\x95PPPPPP\x92P\x92\x90PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a\x14\xDDW\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x14\xC1V[P\x94\x95\x94PPPPPV[` \x81R`\0a\x14\xFB` \x83\x01\x84a\x14\xADV[\x93\x92PPPV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x13\x8EW`\0\x80\xFD[\x805a\x15\x1F\x81a\x15\x02V[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x159W`\0\x80\xFD[\x835a\x15D\x81a\x13yV[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x15aW`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a\x15uW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x15\x87Wa\x15\x87a\x13\x91V[a\x15\x99`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x13\xA7V[\x91P\x80\x82R\x88\x84\x82\x85\x01\x01\x11\x15a\x15\xAFW`\0\x80\xFD[\x80\x84\x84\x01\x85\x84\x017`\0\x84\x82\x84\x01\x01RP\x80\x94PPPPa\x15\xD2`@\x85\x01a\x15\x14V[\x90P\x92P\x92P\x92V[`\0\x81Q\x80\x84R` \x80\x85\x01\x80\x81\x96P\x83`\x05\x1B\x81\x01\x91P\x82\x86\x01`\0\x80[\x86\x81\x10\x15a\x16qW\x83\x85\x03\x8AR\x82Q\x80Q\x80\x87R\x90\x87\x01\x90\x87\x87\x01\x90\x84[\x81\x81\x10\x15a\x16\\W\x83Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x8A\x81\x01Q\x8B\x85\x01R`@\x90\x81\x01Q`\x01`\x01``\x1B\x03\x16\x90\x84\x01R\x92\x89\x01\x92``\x90\x92\x01\x91`\x01\x01a\x16\x18V[PP\x9A\x87\x01\x9A\x95PP\x91\x85\x01\x91`\x01\x01a\x15\xFAV[P\x92\x98\x97PPPPPPPPV[` \x81R`\0a\x14\xFB` \x83\x01\x84a\x15\xDBV[`\0\x82`\x1F\x83\x01\x12a\x16\xA3W`\0\x80\xFD[\x815` a\x16\xB3a\x14S\x83a\x13\xD7V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\x16\xD2W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x16\xEDW\x805\x83R\x91\x83\x01\x91\x83\x01a\x16\xD6V[P\x96\x95PPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x17\x0BW`\0\x80\xFD[\x825a\x17\x16\x81a\x13yV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x171W`\0\x80\xFD[a\x17=\x85\x82\x86\x01a\x16\x92V[\x91PP\x92P\x92\x90PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x17\x88W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x17cV[P\x90\x96\x95PPPPPPV[`\0\x80\x83`\x1F\x84\x01\x12a\x17\xA6W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\xBDW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x17\xD8W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\x80\x87\x89\x03\x12\x15a\x17\xF8W`\0\x80\xFD[\x865a\x18\x03\x81a\x13yV[\x95P` \x87\x015a\x18\x13\x81a\x15\x02V[\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x18/W`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a\x18CW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x18RW`\0\x80\xFD[\x8A` \x82\x85\x01\x01\x11\x15a\x18dW`\0\x80\xFD[` \x83\x01\x96P\x80\x95PP``\x89\x015\x91P\x80\x82\x11\x15a\x18\x82W`\0\x80\xFD[Pa\x18\x8F\x89\x82\x8A\x01a\x17\x94V[\x97\x9A\x96\x99P\x94\x97P\x92\x95\x93\x94\x92PPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a\x14\xDDW\x81Qc\xFF\xFF\xFF\xFF\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x18\xB5V[`\0` \x80\x83R\x83Q`\x80\x82\x85\x01Ra\x18\xF3`\xA0\x85\x01\x82a\x18\xA1V[\x90P\x81\x85\x01Q`\x1F\x19\x80\x86\x84\x03\x01`@\x87\x01Ra\x19\x10\x83\x83a\x18\xA1V[\x92P`@\x87\x01Q\x91P\x80\x86\x84\x03\x01``\x87\x01Ra\x19-\x83\x83a\x18\xA1V[``\x88\x01Q\x87\x82\x03\x83\x01`\x80\x89\x01R\x80Q\x80\x83R\x91\x94P\x85\x01\x92P\x84\x84\x01\x90`\x05\x81\x90\x1B\x85\x01\x86\x01`\0[\x82\x81\x10\x15a\x19\x84W\x84\x87\x83\x03\x01\x84Ra\x19r\x82\x87Qa\x18\xA1V[\x95\x88\x01\x95\x93\x88\x01\x93\x91P`\x01\x01a\x19XV[P\x99\x98PPPPPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x19\xA7W`\0\x80\xFD[\x835a\x19\xB2\x81a\x13yV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\xCDW`\0\x80\xFD[a\x19\xD9\x86\x82\x87\x01a\x16\x92V[\x92PP`@\x84\x015a\x19\xEA\x81a\x15\x02V[\x80\x91PP\x92P\x92P\x92V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x17\x88W\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1A\x11V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x1ABW`\0\x80\xFD[\x835a\x1AM\x81a\x13yV[\x92P` \x84\x015\x91P`@\x84\x015a\x19\xEA\x81a\x15\x02V[\x82\x81R`@` \x82\x01R`\0a\x1A}`@\x83\x01\x84a\x15\xDBV[\x94\x93PPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x1A\xADW`\0\x80\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x1A\xDEWa\x1A\xDEa\x1A\xB4V[P`\x01\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x1A\xF7W`\0\x80\xFD[\x81Qa\x14\xFB\x81a\x13yV[`\0` \x80\x83\x85\x03\x12\x15a\x1B\x15W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1B+W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x1B`$\x82\x01R\x7FBLSApkRegistry._validateApkHashA`D\x82\x01R\x7FtBlockNumber: index too recent\0\0`d\x82\x01R`\x84\x01a\x04\xDEV[`@\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\x07\x95WP\x80`@\x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x08\x13W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R\x7FBLSApkRegistry._validateApkHashA`D\x82\x01R\x7FtBlockNumber: not latest apk upd`d\x82\x01Rbate`\xE8\x1B`\x84\x82\x01R`\xA4\x01a\x04\xDEV[Q\x94\x93PPPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x088W`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`@\x81\x90\x1B\x92Pc\xFF\xFF\xFF\xFF`\x01`\xC0\x1B\x82\x04\x81\x16\x92P`\x01`\xE0\x1B\x90\x91\x04\x16\x83V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x81\x81R`\x03` \x90\x81R`@\x80\x83 \x81Q\x80\x83\x01\x83R\x81T\x81R`\x01\x91\x82\x01T\x81\x85\x01R\x94\x84R\x90\x91R\x81 T\x90\x91\x90\x80a\t*W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FBLSApkRegistry.getRegisteredPubk`D\x82\x01R\x7Fey: operator is not registered\0\0`d\x82\x01R`\x84\x01a\x04\xDEV[\x90\x94\x90\x93P\x91PPV[`\0a\t>a\x0F\xCBV[`\0a\tla\tU6\x86\x90\x03\x86\x01`@\x87\x01a\x1C^V[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x90P\x7F\xAD2(\xB6v\xF7\xD3\xCDB\x84\xA5D?\x17\xF1\x96+6\xE4\x91\xB3\n@\xB2@XI\xE5\x97\xBA_\xB5\x81\x14\x15a\t\xF4W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R`\0\x80Q` a\x1Eu\x839\x81Q\x91R`D\x82\x01R\x7FKey: cannot register zero pubkey`d\x82\x01R`\x84\x01a\x04\xDEV[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\n~W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a\x1Eu\x839\x81Q\x91R`D\x82\x01R\x7FKey: operator already registered`d\x82\x01Rf pubkey`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x04\xDEV[`\0\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` a\x1Eu\x839\x81Q\x91R`D\x82\x01R\x7FKey: public key already register`d\x82\x01Ra\x19Y`\xF2\x1B`\x84\x82\x01R`\xA4\x01a\x04\xDEV[`@\x80Q`\0\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x91a\x0B[\x91\x885\x91` \x80\x8B\x015\x92\x8B\x015\x91``\x8C\x015\x91`\x80\x8D\x01\x91`\xC0\x8E\x01\x91\x8D5\x91\x8E\x82\x015\x91\x01a\x1C\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1Ca\x0B~\x91\x90a\x1C\xDBV[\x90Pa\x0C\x18a\x0B\xB7a\x0B\xA2\x83a\x0B\x9C6\x8A\x90\x03\x8A\x01`@\x8B\x01a\x1C^V[\x90a\x12\xCDV[a\x0B\xB16\x89\x90\x03\x89\x01\x89a\x1C^V[\x90a\x13dV[a\x0B\xBFa\x13\xF8V[a\x0C\x01a\x0B\xF2\x85a\x0B\x9C`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[a\x0B\xB16\x8A\x90\x03\x8A\x01\x8Aa\x1C^V[a\x0C\x136\x8A\x90\x03\x8A\x01`\x80\x8B\x01a\x1DMV[a\x14\xB8V[a\x0C\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R`\0\x80Q` a\x1Eu\x839\x81Q\x91R`D\x82\x01R\x7FKey: either the G1 signature is `d\x82\x01R\x7Fwrong, or G1 and G2 private key `\x84\x82\x01Rk\x0C\x8D\xE4\r\xCD\xEE\x84\r\xAC.\x8Cm`\xA3\x1B`\xA4\x82\x01R`\xC4\x01a\x04\xDEV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x81\x81R`\x03` \x90\x81R`@\x80\x83 \x89\x82\x01\x805\x82U``\x8B\x015`\x01\x92\x83\x01U\x90\x83R\x81\x84 \x87\x90U\x86\x84R`\x02\x90\x92R\x91\x82\x90 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x84\x17\x90U\x90Q\x7F\xE3\xFBf\x13\xAF.\x890\xCF\x85\xD4\x7F\xCFm\xB1\x01\x92\"Jd\xC6\xCB\xE8\x02>\x0E\xEE\x1B\xA3\x82\x80A\x91a\r7\x91`\x80\x8A\x01\x90a\x1D\xAAV[`@Q\x80\x91\x03\x90\xA2P\x94\x93PPPPV[```\0\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\reWa\rea\x19\x05V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\r\x8EW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84\x81\x10\x15a\x0FYW`\0\x86\x86\x83\x81\x81\x10a\r\xB0Wa\r\xB0a\x1CHV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x04` R`@\x90 T\x90\x92P\x90P\x80\x15\x80a\x0E\x13WP`\xFF\x82\x16`\0\x90\x81R`\x04` R`@\x81 \x80T\x90\x91\x90a\r\xF7Wa\r\xF7a\x1CHV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x86\x10[\x15a\x0E\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`Q`$\x82\x01R\x7FBLSApkRegistry.getApkIndicesAtBl`D\x82\x01R\x7FockNumber: blockNumber is before`d\x82\x01Rp the first update`x\x1B`\x84\x82\x01R`\xA4\x01a\x04\xDEV[\x80[\x80\x15a\x0FCW`\xFF\x83\x16`\0\x90\x81R`\x04` R`@\x90 \x87\x90a\x0E\xC7`\x01\x84a\x1D\xF4V[\x81T\x81\x10a\x0E\xD7Wa\x0E\xD7a\x1CHV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x11a\x0F1Wa\x0F\0`\x01\x82a\x1D\xF4V[\x85\x85\x81Q\x81\x10a\x0F\x12Wa\x0F\x12a\x1CHV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x0FCV[\x80a\x0F;\x81a\x1E\x0BV[\x91PPa\x0E\xA2V[PPP\x80\x80a\x0FQ\x90a\x1E\"V[\x91PPa\r\x94V[P\x94\x93PPPPV[a\x0Fja\x0F\xCBV[`\0a\x0Fu\x83a\x08gV[P\x90Pa\x0F\x8A\x82a\x0F\x85\x83a\x17%V[a\x10\x82V[\x7F\xF8C\xEC\xD5:V6u\xE6!\x07\xBE\x14\x94\xFD\xDEJ=I\xAE\xED\xAF\x8D\x88\xC6\x16\xD8SF\xE3P\x0E\x83a\x05\xD1\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x10\x80W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`N`$\x82\x01R\x7FBLSApkRegistry.onlyRegistryCoord`D\x82\x01R\x7Finator: caller is not the regist`d\x82\x01Rm9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x91\x1B`\x84\x82\x01R`\xA4\x01a\x04\xDEV[V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0[\x83Q\x81\x10\x15a\x12\xC7W`\0\x84\x82\x81Q\x81\x10a\x10\xB6Wa\x10\xB6a\x1CHV[\x01` \x90\x81\x01Q`\xF8\x1C`\0\x81\x81R`\x04\x90\x92R`@\x90\x91 T\x90\x91P\x80a\x11FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FBLSApkRegistry._processQuorumApk`D\x82\x01R\x7FUpdate: quorum does not exist\0\0\0`d\x82\x01R`\x84\x01a\x04\xDEV[`\xFF\x82\x16`\0\x90\x81R`\x05` \x90\x81R`@\x91\x82\x90 \x82Q\x80\x84\x01\x90\x93R\x80T\x83R`\x01\x01T\x90\x82\x01Ra\x11z\x90\x86a\x13dV[`\xFF\x83\x16`\0\x81\x81R`\x05` \x90\x81R`@\x80\x83 \x85Q\x80\x82U\x86\x84\x01\x80Q`\x01\x93\x84\x01U\x90\x85RQ\x83R\x81\x84 \x94\x84R`\x04\x90\x92R\x82 \x93\x97P\x91\x92\x90\x91a\x11\xC3\x90\x85a\x1D\xF4V[\x81T\x81\x10a\x11\xD3Wa\x11\xD3a\x1CHV[`\0\x91\x82R` \x90\x91 \x01\x80T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16`\x01`\xC0\x1B\x90\x92\x04\x16\x14\x15a\x12\x14W\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`@\x83\x90\x1C\x17\x81Ua\x12\xB0V[\x80Tc\xFF\xFF\xFF\xFFC\x81\x16`\x01`\xE0\x1B\x81\x81\x02`\x01`\x01`\xE0\x1B\x03\x94\x85\x16\x17\x85U`\xFF\x88\x16`\0\x90\x81R`\x04` \x90\x81R`@\x80\x83 \x81Q``\x81\x01\x83Rg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x8B\x16\x81R\x80\x84\x01\x96\x87R\x80\x83\x01\x85\x81R\x82T`\x01\x81\x01\x84U\x92\x86R\x93\x90\x94 \x93Q\x93\x01\x80T\x95Q\x92Q\x87\x16\x90\x94\x02\x91\x90\x95\x16`\x01`\xC0\x1B\x02`\x01`\x01`\xE0\x1B\x03\x19\x94\x90\x94\x16\x91\x90\x94\x1C\x17\x91\x90\x91\x17\x90\x92\x16\x17\x90U[PPPP\x80\x80a\x12\xBF\x90a\x1E\"V[\x91PPa\x10\x99V[PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x12\xE9a\x17\xE4V[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R`\0\x90\x83``\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13\x1CWa\x13\x1EV[\xFE[P\x80a\x13\\W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x04\xDEV[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x13\x80a\x18\x02V[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x80\x84\x01\x91\x90\x91R\x90\x84\x01Q``\x83\x01R`\0\x90\x83`\x80\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13\x1CWP\x80a\x13\\W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCBXY\x19\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x04\xDEV[a\x14\0a\x18 V[P`@\x80Q`\x80\x81\x01\x82R\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81\x83\x01\x90\x81R\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED``\x83\x01R\x81R\x81Q\x80\x83\x01\x90\x92R\x7F']\xC4\xA2\x88\xD1\xAF\xB3\xCB\xB1\xAC\t\x18u$\xC7\xDB69]\xF7\xBE;\x99\xE6s\xB1:\x07Ze\xEC\x82R\x7F\x1D\x9B\xEF\xCD\x05\xA52>m\xA4\xD45\xF3\xB6\x17\xCD\xB3\xAF\x83(\\-\xF7\x11\xEF9\xC0\x15q\x82\x7F\x9D` \x83\x81\x01\x91\x90\x91R\x81\x01\x91\x90\x91R\x90V[`@\x80Q\x80\x82\x01\x82R\x85\x81R` \x80\x82\x01\x85\x90R\x82Q\x80\x84\x01\x90\x93R\x85\x83R\x82\x01\x83\x90R`\0\x91a\x14\xE7a\x18EV[`\0[`\x02\x81\x10\x15a\x16\xACW`\0a\x15\0\x82`\x06a\x1E=V[\x90P\x84\x82`\x02\x81\x10a\x15\x14Wa\x15\x14a\x1CHV[` \x02\x01QQ\x83a\x15&\x83`\0a\x1E\\V[`\x0C\x81\x10a\x156Wa\x156a\x1CHV[` \x02\x01R\x84\x82`\x02\x81\x10a\x15MWa\x15Ma\x1CHV[` \x02\x01Q` \x01Q\x83\x82`\x01a\x15d\x91\x90a\x1E\\V[`\x0C\x81\x10a\x15tWa\x15ta\x1CHV[` \x02\x01R\x83\x82`\x02\x81\x10a\x15\x8BWa\x15\x8Ba\x1CHV[` \x02\x01QQQ\x83a\x15\x9E\x83`\x02a\x1E\\V[`\x0C\x81\x10a\x15\xAEWa\x15\xAEa\x1CHV[` \x02\x01R\x83\x82`\x02\x81\x10a\x15\xC5Wa\x15\xC5a\x1CHV[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x15\xDE\x83`\x03a\x1E\\V[`\x0C\x81\x10a\x15\xEEWa\x15\xEEa\x1CHV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\x05Wa\x16\x05a\x1CHV[` \x02\x01Q` \x01Q`\0`\x02\x81\x10a\x16 Wa\x16 a\x1CHV[` \x02\x01Q\x83a\x161\x83`\x04a\x1E\\V[`\x0C\x81\x10a\x16AWa\x16Aa\x1CHV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16XWa\x16Xa\x1CHV[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x16sWa\x16sa\x1CHV[` \x02\x01Q\x83a\x16\x84\x83`\x05a\x1E\\V[`\x0C\x81\x10a\x16\x94Wa\x16\x94a\x1CHV[` \x02\x01RP\x80a\x16\xA4\x81a\x1E\"V[\x91PPa\x14\xEAV[Pa\x16\xB5a\x18dV[`\0` \x82a\x01\x80\x85`\x08a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13\x1CWP\x80a\x17\x15W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x15`$\x82\x01Rt\x1C\x18Z\\\x9A[\x99\xCB[\xDC\x18\xDB\xD9\x19KY\x98Z[\x19Y`Z\x1B`D\x82\x01R`d\x01a\x04\xDEV[PQ\x15\x15\x98\x97PPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x17JWP` \x82\x01Q\x15[\x15a\x17hWPP`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x90V[`@Q\x80`@\x01`@R\x80\x83`\0\x01Q\x81R` \x01\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\x84` \x01Qa\x17\xAD\x91\x90a\x1C\xDBV[a\x17\xD7\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\x1D\xF4V[\x90R\x92\x91PPV[\x91\x90PV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\x80\x01`@R\x80`\x04\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80a\x183a\x18\x82V[\x81R` \x01a\x18@a\x18\x82V[\x90R\x90V[`@Q\x80a\x01\x80\x01`@R\x80`\x0C\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80` \x01`@R\x80`\x01\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x17\xDFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x18\xC9W`\0\x80\xFD[a\x18\xD2\x82a\x18\xA0V[\x93\x92PPPV[\x805`\xFF\x81\x16\x81\x14a\x17\xDFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x18\xFCW`\0\x80\xFD[a\x18\xD2\x82a\x18\xD9V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x19>Wa\x19>a\x19\x05V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x19mWa\x19ma\x19\x05V[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x19\x88W`\0\x80\xFD[a\x19\x91\x83a\x18\xA0V[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x19\xAFW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x19\xC3W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x19\xD5Wa\x19\xD5a\x19\x05V[a\x19\xE7`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x19DV[\x91P\x80\x82R\x87\x84\x82\x85\x01\x01\x11\x15a\x19\xFDW`\0\x80\xFD[\x80\x84\x84\x01\x85\x84\x017`\0\x84\x82\x84\x01\x01RP\x80\x93PPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x1A-W`\0\x80\xFD[P5\x91\x90PV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x06{V[`\0\x80`@\x83\x85\x03\x12\x15a\x1A^W`\0\x80\xFD[a\x1Ag\x83a\x18\xD9V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x1A\x8AW`\0\x80\xFD[a\x1A\x93\x84a\x18\xD9V[\x92P` \x84\x015c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1A\xACW`\0\x80\xFD[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`\0\x83\x85\x03a\x01`\x81\x12\x15a\x1A\xD4W`\0\x80\xFD[a\x1A\xDD\x85a\x18\xA0V[\x93Pa\x01\0`\x1F\x19\x82\x01\x12\x15a\x1A\xF2W`\0\x80\xFD[` \x85\x01\x92P`@a\x01\x1F\x19\x82\x01\x12\x15a\x1B\x0BW`\0\x80\xFD[Pa\x01 \x84\x01\x90P\x92P\x92P\x92V[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x1B/W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x1BGW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1B[W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1BjW`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x1B|W`\0\x80\xFD[` \x92\x83\x01\x98\x90\x97P\x95\x90\x91\x015\x94\x93PPPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1B\xD0W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1B\xAEV[P\x90\x96\x95PPPPPPV[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R`\0` \x84\x81\x84\x01R```@\x84\x01R\x83Q\x80``\x85\x01R`\0[\x81\x81\x10\x15a\x1C\x1EW\x85\x81\x01\x83\x01Q\x85\x82\x01`\x80\x01R\x82\x01a\x1C\x02V[\x81\x81\x11\x15a\x1C0W`\0`\x80\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`\x80\x01\x95\x94PPPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0`@\x82\x84\x03\x12\x15a\x1CpW`\0\x80\xFD[a\x1Cxa\x19\x1BV[\x825\x81R` \x83\x015` \x82\x01R\x80\x91PP\x92\x91PPV[\x88\x81R\x87` \x82\x01R\x86`@\x82\x01R\x85``\x82\x01R`@\x85`\x80\x83\x017`\0`\xC0\x82\x01`\0\x81R`@\x86\x827PPa\x01\0\x81\x01\x92\x90\x92Ra\x01 \x82\x01Ra\x01@\x01\x96\x95PPPPPPV[`\0\x82a\x1C\xF8WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`\0\x82`\x1F\x83\x01\x12a\x1D\x0EW`\0\x80\xFD[a\x1D\x16a\x19\x1BV[\x80`@\x84\x01\x85\x81\x11\x15a\x1D(W`\0\x80\xFD[\x84[\x81\x81\x10\x15a\x1DBW\x805\x84R` \x93\x84\x01\x93\x01a\x1D*V[P\x90\x95\x94PPPPPV[`\0`\x80\x82\x84\x03\x12\x15a\x1D_W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x1D\x82Wa\x1D\x82a\x19\x05V[`@Ra\x1D\x8F\x84\x84a\x1C\xFDV[\x81Ra\x1D\x9E\x84`@\x85\x01a\x1C\xFDV[` \x82\x01R\x93\x92PPPV[\x825\x81R` \x80\x84\x015\x90\x82\x01R`\xC0\x81\x01`@\x83\x81\x84\x017`\x80\x82\x01`\0\x81R`@\x80\x85\x01\x827P`\0\x81R\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x82\x10\x15a\x1E\x06Wa\x1E\x06a\x1D\xDEV[P\x03\x90V[`\0\x81a\x1E\x1AWa\x1E\x1Aa\x1D\xDEV[P`\0\x19\x01\x90V[`\0`\0\x19\x82\x14\x15a\x1E6Wa\x1E6a\x1D\xDEV[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x1EWWa\x1EWa\x1D\xDEV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a\x1EoWa\x1Eoa\x1D\xDEV[P\x01\x90V\xFEBLSApkRegistry.registerBLSPublic\xA2dipfsX\"\x12 \xCA\x1B1\x98\xDD\xD9\xD6\"\xC9\xFE^\x8AB\xFB8\x85\xDA\x9A\xB1\x81\x8A\x06=\x1B\xFD\x99\xCD\xE5\xD9z\x14\xB5dsolcC\0\x08\x0C\x003`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x13a8\x03\x80a\x13a\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01\x0CV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80R\x80a\0Ea\0LV[PPa\x01V[a\x01\x8Fa\x01\xE16`\x04a\x0F\xADV[a\x06\xEBV[a\x01(a\x01\xF46`\x04a\x0E\xBDV[a\x07bV[a\x02\x01`\0\x81V[`@Q\x90\x81R` \x01a\0\xD8V[a\x02@a\x02\x1D6`\x04a\x10vV[`\x01` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 Tc\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0\xD8V[a\x02@a\x02c6`\x04a\x0F\xE0V[a\x080V[``a\x02ra\x08OV[`\0\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02\x8DWa\x02\x8Da\x10\xA0V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02\xB6W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83\x81\x10\x15a\x03\x7FW`\0\x85\x85\x83\x81\x81\x10a\x02\xD8Wa\x02\xD8a\x10\xB6V[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x03` R`@\x90 T\x90\x92P\x90P\x80a\x03\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\x11\x90a\x10\xCCV[`@Q\x80\x91\x03\x90\xFD[`\0a\x03%\x83a\t\x05V[\x90Pa\x03<\x89\x84a\x037`\x01\x85a\x117V[a\t\xFEV[\x80\x85\x85\x81Q\x81\x10a\x03OWa\x03Oa\x10\xB6V[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPPPP\x80\x80a\x03w\x90a\x11\\V[\x91PPa\x02\xBCV[P\x90P[\x93\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x03\xA8\x83\x83a\n\x88V[`@\x80Q\x80\x82\x01\x90\x91R\x81Tc\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01T` \x82\x01R\x90P[\x92\x91PPV[a\x03\xD8a\x08OV[`\xFF\x81\x16`\0\x90\x81R`\x03` R`@\x90 T\x15a\x04RW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`1`$\x82\x01R\x7FIndexRegistry.createQuorum: quor`D\x82\x01Rpum already exists`x\x1B`d\x82\x01R`\x84\x01a\x03\x11V[`\xFF\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 \x81Q\x80\x83\x01\x90\x92Rc\xFF\xFF\xFF\xFFC\x81\x16\x83R\x82\x84\x01\x85\x81R\x82T`\x01\x81\x01\x84U\x92\x86R\x93\x90\x94 \x91Q\x91\x01\x80T\x92Q\x84\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x93\x16\x91\x90\x93\x16\x17\x17\x90UV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\xFF\x84\x16`\0\x90\x81R`\x02` \x90\x81R`@\x80\x83 c\xFF\xFF\xFF\xFF\x80\x88\x16\x85R\x92R\x90\x91 \x80T\x90\x91\x84\x16\x90\x81\x10a\x05\x01Wa\x05\x01a\x10\xB6V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q\x80\x82\x01\x90\x91R`\x02\x90\x92\x02\x01\x80Tc\xFF\xFF\xFF\xFF\x16\x82R`\x01\x01T\x91\x81\x01\x91\x90\x91R\x90P\x93\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x05W\x82a\n\xE0V[`@\x80Q\x80\x82\x01\x90\x91R\x90Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x90\x91\x04\x16` \x82\x01R\x92\x91PPV[```\0a\x05\x8F\x84\x84a\x0B\"V[\x90P`\0\x81c\xFF\xFF\xFF\xFF\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05\xB2Wa\x05\xB2a\x10\xA0V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xDBW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82c\xFF\xFF\xFF\xFF\x16\x81\x10\x15a\x06\xE2Wa\x05\xFA\x86\x82\x87a\x0CWV[\x82\x82\x81Q\x81\x10a\x06\x0CWa\x06\x0Ca\x10\xB6V[` \x02` \x01\x01\x81\x81RPP`\0\x80\x1B\x82\x82\x81Q\x81\x10a\x06.Wa\x06.a\x10\xB6V[` \x02` \x01\x01Q\x14\x15a\x06\xD0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`]`$\x82\x01R\x7FIndexRegistry.getOperatorListAtB`D\x82\x01R\x7FlockNumber: operator does not ex`d\x82\x01R\x7Fist at the given block number\0\0\0`\x84\x82\x01R`\xA4\x01a\x03\x11V[\x80a\x06\xDA\x81a\x11\\V[\x91PPa\x05\xE1V[P\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\xFF\x83\x16`\0\x90\x81R`\x03` R`@\x90 \x80Tc\xFF\xFF\xFF\xFF\x84\x16\x90\x81\x10a\x07)Wa\x07)a\x10\xB6V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q\x80\x82\x01\x90\x91R\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x90\x91\x04\x16\x91\x81\x01\x91\x90\x91R\x93\x92PPPV[a\x07ja\x08OV[`\0[\x81\x81\x10\x15a\x08*W`\0\x83\x83\x83\x81\x81\x10a\x07\x89Wa\x07\x89a\x10\xB6V[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x03` R`@\x90 T\x90\x92P\x90P\x80a\x07\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\x11\x90a\x10\xCCV[`\xFF\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x89\x84R\x90\x91R\x81 Tc\xFF\xFF\xFF\xFF\x16\x90a\x07\xF0\x84a\r.V[\x90P`\0a\x07\xFE\x85\x83a\rhV[\x90P\x80\x89\x14a\x08\x12Wa\x08\x12\x81\x86\x85a\t\xFEV[PPPPP\x80\x80a\x08\"\x90a\x11\\V[\x91PPa\x07mV[PPPPV[`\0a\x08;\x82a\n\xE0V[T`\x01` \x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x92\x91PPV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\t\x03W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`M`$\x82\x01R\x7FIndexRegistry.onlyRegistryCoordi`D\x82\x01R\x7Fnator: caller is not the registr`d\x82\x01Rl<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x99\x1B`\x84\x82\x01R`\xA4\x01a\x03\x11V[V[`\0\x80a\t\x11\x83a\n\xE0V[\x80T\x90\x91P`\0\x90a\t1\x90`\x01` \x1B\x90\x04c\xFF\xFF\xFF\xFF\x16`\x01a\x11wV[\x90Pa\t>\x84\x83\x83a\r\x92V[`\xFF\x84\x16`\0\x90\x81R`\x02` R`@\x81 \x90a\t\\`\x01\x84a\x117V[c\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x91\x90\x91R`@\x01`\0 Ta\x03\x83W`\xFF\x84\x16`\0\x90\x81R`\x02` R`@\x81 \x90a\t\x95`\x01\x84a\x117V[c\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x83\x01\x93\x90\x93R`@\x91\x82\x01`\0\x90\x81 \x83Q\x80\x85\x01\x90\x94RC\x83\x16\x84R\x83\x85\x01\x82\x81R\x81T`\x01\x80\x82\x01\x84U\x92\x84R\x95\x90\x92 \x93Q`\x02\x90\x95\x02\x90\x93\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16\x94\x90\x92\x16\x93\x90\x93\x17\x81U\x91Q\x91\x01U\x93\x92PPPV[`\0a\n\n\x83\x83a\n\x88V[\x90Pa\n\x18\x83\x83\x83\x87a\x0E2V[`\xFF\x83\x16`\0\x81\x81R`\x01` \x90\x81R`@\x80\x83 \x88\x84R\x82R\x91\x82\x90 \x80Tc\xFF\xFF\xFF\xFF\x19\x16c\xFF\xFF\xFF\xFF\x87\x16\x90\x81\x17\x90\x91U\x82Q\x93\x84R\x90\x83\x01R\x85\x91\x7Fn\xE1\xE4\xF4\x07_=\x06qv\x14\r4\xE8xt$M\xD2s)L\x05\xB2!\x813\xE4\x9A+\xA6\xF6\x91\x01`@Q\x80\x91\x03\x90\xA2PPPPV[`\xFF\x82\x16`\0\x90\x81R`\x02` \x90\x81R`@\x80\x83 c\xFF\xFF\xFF\xFF\x85\x16\x84R\x90\x91R\x81 \x80T\x90a\n\xB9`\x01\x83a\x11\x9FV[\x81T\x81\x10a\n\xC9Wa\n\xC9a\x10\xB6V[\x90`\0R` `\0 \x90`\x02\x02\x01\x91PP\x92\x91PPV[`\xFF\x81\x16`\0\x90\x81R`\x03` R`@\x81 \x80T\x90a\x0B\0`\x01\x83a\x11\x9FV[\x81T\x81\x10a\x0B\x10Wa\x0B\x10a\x10\xB6V[\x90`\0R` `\0 \x01\x91PP\x91\x90PV[`\xFF\x82\x16`\0\x90\x81R`\x03` R`@\x81 T\x80[\x80\x15a\x0B\xCAW`\xFF\x85\x16`\0\x90\x81R`\x03` R`@\x81 a\x0BZ`\x01\x84a\x11\x9FV[\x81T\x81\x10a\x0BjWa\x0Bja\x10\xB6V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q\x80\x82\x01\x90\x91R\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x80\x84R`\x01` \x1B\x90\x92\x04\x81\x16\x93\x83\x01\x93\x90\x93R\x90\x92P\x90\x86\x16\x10a\x0B\xB7W` \x01Q\x92Pa\x03\xCA\x91PPV[P\x80a\x0B\xC2\x81a\x11\xB6V[\x91PPa\x0B7V[P`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`U`$\x82\x01R\x7FIndexRegistry._operatorCountAtBl`D\x82\x01R\x7FockNumber: quorum did not exist `d\x82\x01Rt0\xBA\x103\xB4\xBB2\xB7\x10167\xB1\xB5\x907:\xB6\xB12\xB9`Y\x1B`\x84\x82\x01R`\xA4\x01a\x03\x11V[`\xFF\x83\x16`\0\x90\x81R`\x02` \x90\x81R`@\x80\x83 c\xFF\xFF\xFF\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a\r\"W`\xFF\x86\x16`\0\x90\x81R`\x02` \x90\x81R`@\x80\x83 c\xFF\xFF\xFF\xFF\x89\x16\x84R\x90\x91R\x81 a\x0C\xB1`\x01\x84a\x11\x9FV[\x81T\x81\x10a\x0C\xC1Wa\x0C\xC1a\x10\xB6V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q\x80\x82\x01\x90\x91R`\x02\x90\x92\x02\x01\x80Tc\xFF\xFF\xFF\xFF\x90\x81\x16\x80\x84R`\x01\x90\x92\x01T\x93\x83\x01\x93\x90\x93R\x90\x92P\x90\x86\x16\x10a\r\x0FW` \x01Q\x92Pa\x03\x83\x91PPV[P\x80a\r\x1A\x81a\x11\xB6V[\x91PPa\x0C}V[P`\0\x95\x94PPPPPV[`\0\x80a\r:\x83a\n\xE0V[\x80T\x90\x91P`\0\x90a\r[\x90`\x01\x90`\x01` \x1B\x90\x04c\xFF\xFF\xFF\xFF\x16a\x117V[\x90Pa\x03\x83\x84\x83\x83a\r\x92V[`\0\x80a\ru\x84\x84a\n\x88V[`\x01\x81\x01T\x90\x91Pa\r\x8A\x85\x85\x84`\0a\x0E2V[\x94\x93PPPPV[\x81TCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a\r\xC9W\x81Tc\xFF\xFF\xFF\xFF\x82\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\0\0\0\0\x19\x90\x91\x16\x17\x82UPPPV[`\xFF\x83\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 \x81Q\x80\x83\x01\x90\x92Rc\xFF\xFF\xFF\xFFC\x81\x16\x83R\x85\x81\x16\x83\x85\x01\x90\x81R\x82T`\x01\x81\x01\x84U\x92\x86R\x93\x90\x94 \x91Q\x91\x01\x80T\x92Q\x84\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x93\x16\x91\x90\x93\x16\x17\x17\x90UPPPV[\x81TCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a\x0EQW`\x01\x82\x01\x81\x90Ua\x08*V[`\xFF\x93\x90\x93\x16`\0\x90\x81R`\x02` \x81\x81R`@\x80\x84 c\xFF\xFF\xFF\xFF\x96\x87\x16\x85R\x82R\x80\x84 \x81Q\x80\x83\x01\x90\x92RC\x87\x16\x82R\x81\x83\x01\x97\x88R\x80T`\x01\x80\x82\x01\x83U\x91\x86R\x92\x90\x94 \x90Q\x91\x90\x92\x02\x90\x91\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16\x91\x90\x94\x16\x17\x83U\x92Q\x91\x90\x92\x01UPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x0E\xD2W`\0\x80\xFD[\x835\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0E\xF1W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x0F\x05W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x0F\x14W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x0F&W`\0\x80\xFD[` \x83\x01\x94P\x80\x93PPPP\x92P\x92P\x92V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0FwW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0FUV[P\x90\x96\x95PPPPPPV[\x805`\xFF\x81\x16\x81\x14a\x0F\x94W`\0\x80\xFD[\x91\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0F\x94W`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0F\xC0W`\0\x80\xFD[a\x0F\xC9\x83a\x0F\x83V[\x91Pa\x0F\xD7` \x84\x01a\x0F\x99V[\x90P\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x0F\xF2W`\0\x80\xFD[a\x03\x83\x82a\x0F\x83V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x10\x10W`\0\x80\xFD[a\x10\x19\x84a\x0F\x83V[\x92Pa\x10'` \x85\x01a\x0F\x99V[\x91Pa\x105`@\x85\x01a\x0F\x99V[\x90P\x92P\x92P\x92V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0FwW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x10ZV[`\0\x80`@\x83\x85\x03\x12\x15a\x10\x89W`\0\x80\xFD[a\x10\x92\x83a\x0F\x83V[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[` \x80\x82R`5\x90\x82\x01R\x7FIndexRegistry.registerOperator: `@\x82\x01Rt\x1C][\xDC\x9D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`Z\x1B``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0c\xFF\xFF\xFF\xFF\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15a\x11TWa\x11Ta\x11!V[\x03\x93\x92PPPV[`\0`\0\x19\x82\x14\x15a\x11pWa\x11pa\x11!V[P`\x01\x01\x90V[`\0c\xFF\xFF\xFF\xFF\x80\x83\x16\x81\x85\x16\x80\x83\x03\x82\x11\x15a\x11\x96Wa\x11\x96a\x11!V[\x01\x94\x93PPPPV[`\0\x82\x82\x10\x15a\x11\xB1Wa\x11\xB1a\x11!V[P\x03\x90V[`\0\x81a\x11\xC5Wa\x11\xC5a\x11!V[P`\0\x19\x01\x90V\xFE\xA2dipfsX\"\x12 \r\xD4$\x98]t\x81&\xCF\xEC\xB0B\xDF\x97x\x97;l\xAD\xCF\x9F\x9Bq\xB1;.\xE0e\xB5=&\xC4dsolcC\0\x08\x0C\x003`\xC0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\x003\xC88\x03\x80b\x003\xC8\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0eV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\xA0R\x16`\x80Rb\0\0\xA4V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0bW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\0yW`\0\x80\xFD[\x82Qb\0\0\x86\x81b\0\0LV[` \x84\x01Q\x90\x92Pb\0\0\x99\x81b\0\0LV[\x80\x91PP\x92P\x92\x90PV[`\x80Q`\xA0Qa2\xE9b\0\0\xDF`\09`\0\x81\x81a\x03z\x01R\x81\x81a\x1AG\x01Ra\x1By\x01R`\0\x81\x81a\x05)\x01Ra\x18\xA8\x01Ra2\xE9`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\xE5W`\x005`\xE0\x1C\x80c\x9F<\xCFe\x11a\x01\x0FW\x80c\xC8)LV\x11a\0\xA2W\x80c\xF2\xBE\x94\xAE\x11a\0qW\x80c\xF2\xBE\x94\xAE\x14a\x05KW\x80c\xF8Q\xE1\x98\x14a\x05^W\x80c\xFA(\xC6'\x14a\x05qW\x80c\xFFiJw\x14a\x05\x84W`\0\x80\xFD[\x80c\xC8)LV\x14a\x04\xD6W\x80c\xD5\xEC\xCC\x05\x14a\x04\xE9W\x80c\xDD\x98F\xB9\x14a\x04\xFCW\x80c\xDF\\\xF7#\x14a\x05$W`\0\x80\xFD[\x80c\xBC\x9A@\xC3\x11a\0\xDEW\x80c\xBC\x9A@\xC3\x14a\x04tW\x80c\xBD)\xB8\xCD\x14a\x04\x87W\x80c\xC4gx\xA5\x14a\x04\x9AW\x80c\xC6\x01R}\x14a\x04\xC3W`\0\x80\xFD[\x80c\x9F<\xCFe\x14a\x03\xEEW\x80c\xACk\xFB\x03\x14a\x04\x01W\x80c\xAD\xC8\x04\xDA\x14a\x04!W\x80c\xB6\x90Kx\x14a\x04aW`\0\x80\xFD[\x80cK\xD2n\t\x11a\x01\x87W\x80cf\xAC\xFE\xFE\x11a\x01VW\x80cf\xAC\xFE\xFE\x14a\x03JW\x80cm\x14\xA9\x87\x14a\x03uW\x80c|\x17#G\x14a\x03\xB4W\x80c\x81\xC0u\x02\x14a\x03\xCEW`\0\x80\xFD[\x80cK\xD2n\t\x14a\x02\xE5W\x80cT\x01\xED'\x14a\x03\x15W\x80c^Zgu\x14a\x03(W\x80c_\x1F-w\x14a\x037W`\0\x80\xFD[\x80c \xB6b\x98\x11a\x01\xC3W\x80c \xB6b\x98\x14a\x02lW\x80c%PGw\x14a\x02\x81W\x80c,\xD9Y@\x14a\x02\xA2W\x80c<\xA5\xA5\xF5\x14a\x02\xC2W`\0\x80\xFD[\x80c\x04\x91\xB4\x1C\x14a\x01\xEAW\x80c\x08s$a\x14a\x02 W\x80c\x1F\x9Bt\xE0\x14a\x02AW[`\0\x80\xFD[a\x02\ra\x01\xF86`\x04a(\x03V[`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x023a\x02.6`\x04a(\x1EV[a\x05\x97V[`@Qa\x02\x17\x92\x91\x90a(HV[a\x02Ta\x02O6`\x04a(\x7FV[a\x05\xE0V[`@Q`\x01`\x01``\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x17V[a\x02\x7Fa\x02z6`\x04a(\xFAV[a\x06\x02V[\0[a\x02\x94a\x02\x8F6`\x04a)\xBBV[a\x08`V[`@Qa\x02\x17\x92\x91\x90a*ZV[a\x02\xB5a\x02\xB06`\x04a*\x7FV[a\nxV[`@Qa\x02\x17\x91\x90a*\xABV[a\x02\ra\x02\xD06`\x04a(\x03V[`\xFF\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[a\x02\ra\x02\xF36`\x04a*\x7FV[`\0\x91\x82R`\x02` \x90\x81R`@\x80\x84 `\xFF\x93\x90\x93\x16\x84R\x91\x90R\x90 T\x90V[a\x02Ta\x03#6`\x04a*\x7FV[a\x0B\x17V[a\x02\rg\r\xE0\xB6\xB3\xA7d\0\0\x81V[a\x02\x7Fa\x03E6`\x04a+\xB4V[a\x0B0V[a\x03]a\x03X6`\x04a)\xBBV[a\x0ExV[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x17V[a\x03\x9C\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x17V[a\x03\xBC` \x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x02\x17V[a\x03\xE1a\x03\xDC6`\x04a,pV[a\x0F\x17V[`@Qa\x02\x17\x91\x90a,\xC2V[a\x03\x9Ca\x03\xFC6`\x04a(\x1EV[a\x11WV[a\x04\x14a\x04\x0F6`\x04a-\0V[a\x11\x8FV[`@Qa\x02\x17\x91\x90a-3V[a\x044a\x04/6`\x04a(\x1EV[a\x12'V[`@\x80Q\x82Q`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x92\x83\x01Q`\x01`\x01``\x1B\x03\x16\x92\x81\x01\x92\x90\x92R\x01a\x02\x17V[a\x04\x14a\x04o6`\x04a(\x1EV[a\x12\xA1V[a\x02\x7Fa\x04\x826`\x04a-\x7FV[a\x130V[a\x02\x7Fa\x04\x956`\x04a-\xA9V[a\x13QV[a\x02Ta\x04\xA86`\x04a(\x03V[`\0` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01``\x1B\x03\x16\x81V[a\x02\x7Fa\x04\xD16`\x04a.uV[a\x13\xC3V[a\x02Ta\x04\xE46`\x04a.\xC2V[a\x13\xDFV[a\x02Ta\x04\xF76`\x04a(\x03V[a\x14]V[a\x05\x0Fa\x05\n6`\x04a.\xFEV[a\x14\xB0V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\x17V[a\x03\x9C\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x02Ta\x05Y6`\x04a/:V[a\x14\xC5V[a\x04\x14a\x05l6`\x04a*\x7FV[a\x15ZV[a\x02Ta\x05\x7F6`\x04a.\xFEV[a\x16?V[a\x02\x7Fa\x05\x926`\x04a/|V[a\x16\xA0V[`\x03` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x05\xB3W`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x81\x16\x92P`\x01`\xA0\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x90P\x82V[`\0\x82a\x05\xEC\x81a\x17\xCBV[`\0a\x05\xF8\x85\x85a\x18GV[P\x95\x94PPPPPV[a\x06\na\x1AEV[\x84a\x06\x14\x81a\x17\xCBV[\x83\x80a\x06\x8FW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FStakeRegistry.modifyStrategyPara`D\x82\x01R\x7Fms: no strategy indices provided`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[\x82\x81\x14a\x07\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`9`$\x82\x01R\x7FStakeRegistry.modifyStrategyPara`D\x82\x01R\x7Fms: input length mismatch\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x86V[`\xFF\x87\x16`\0\x90\x81R`\x03` R`@\x81 \x90[\x82\x81\x10\x15a\x08UW\x85\x85\x82\x81\x81\x10a\x072Wa\x072a/\xD9V[\x90P` \x02\x01` \x81\x01\x90a\x07G\x91\x90a/\xEFV[\x82\x89\x89\x84\x81\x81\x10a\x07ZWa\x07Za/\xD9V[\x90P` \x02\x015\x81T\x81\x10a\x07qWa\x07qa/\xD9V[\x90`\0R` `\0 \x01`\0\x01`\x14a\x01\0\n\x81T\x81`\x01`\x01``\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01``\x1B\x03\x16\x02\x17\x90UP\x88`\xFF\x16\x7F\x11\xA5d\x13\"\xDA\x1D\xFFV\xA4\xB6n\xAA\xC3\x1F\xFAFR\x95\xEC\xE9\x07\xCD\x1647y;M\0\x9Au\x83\x8A\x8A\x85\x81\x81\x10a\x07\xDAWa\x07\xDAa/\xD9V[\x90P` \x02\x015\x81T\x81\x10a\x07\xF1Wa\x07\xF1a/\xD9V[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\x08\x18Wa\x08\x18a/\xD9V[\x90P` \x02\x01` \x81\x01\x90a\x08-\x91\x90a/\xEFV[`@Qa\x08;\x92\x91\x90a(HV[`@Q\x80\x91\x03\x90\xA2\x80a\x08M\x81a0 V[\x91PPa\x07\x18V[PPPPPPPPPV[``\x80a\x08ka\x1BnV[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\x85Wa\x08\x85a+#V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08\xAEW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\xCBWa\x08\xCBa+#V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08\xF4W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85\x81\x10\x15a\njW`\0\x87\x87\x83\x81\x81\x10a\t\x16Wa\t\x16a/\xD9V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\t+\x90P\x81a\x17\xCBV[`\0\x80a\t8\x83\x8Da\x18GV[\x91P\x91P\x80a\t\xD5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`[`$\x82\x01R\x7FStakeRegistry.registerOperator: `D\x82\x01R\x7FOperator does not meet minimum s`d\x82\x01R\x7Ftake requirement for quorum\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x06\x86V[`\0a\t\xE2\x8C\x85\x85a\x1C!V[\x90P\x82\x87\x86\x81Q\x81\x10a\t\xF7Wa\t\xF7a/\xD9V[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\n!\x84\x82a\x1E\xA1V[\x86\x86\x81Q\x81\x10a\n3Wa\n3a/\xD9V[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPPPPP\x80\x80a\nb\x90a0 V[\x91PPa\x08\xFAV[P\x90\x97\x90\x96P\x94PPPPPV[`\0\x82\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x85\x16\x84R\x82R\x80\x83 \x80T\x82Q\x81\x85\x02\x81\x01\x85\x01\x90\x93R\x80\x83R``\x94\x92\x93\x91\x92\x90\x91\x84\x01[\x82\x82\x10\x15a\x0B\nW`\0\x84\x81R` \x90\x81\x90 `@\x80Q``\x81\x01\x82R\x91\x85\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x84R`\x01` \x1B\x82\x04\x16\x83\x85\x01R`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x90\x82\x01R\x82R`\x01\x90\x92\x01\x91\x01a\n\xB1V[PPPP\x90P[\x92\x91PPV[`\0\x80a\x0B$\x84\x84a\x15ZV[`@\x01Q\x94\x93PPPPV[a\x0B8a\x1AEV[\x81a\x0BB\x81a\x17\xCBV[\x81Q\x80a\x0B\xB7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FStakeRegistry.removeStrategies: `D\x82\x01R\x7Fno indices to remove provided\0\0\0`d\x82\x01R`\x84\x01a\x06\x86V[`\xFF\x84\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 `\x04\x90\x92R\x82 \x90\x91[\x83\x81\x10\x15a\x0EoW\x86`\xFF\x16\x7F1\xFA.,\xD2\x80\xC97^\x13\xFF\xCF=\x81\xE27\x81\0\x18n@X\xF8\xD3\xDD\xB6\x90\xB8-\xCD1\xF7\x84\x88\x84\x81Q\x81\x10a\x0C\x16Wa\x0C\x16a/\xD9V[` \x02` \x01\x01Q\x81T\x81\x10a\x0C.Wa\x0C.a/\xD9V[`\0\x91\x82R` \x91\x82\x90 \x01T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R\x01`@Q\x80\x91\x03\x90\xA2\x86`\xFF\x16\x7F\x11\xA5d\x13\"\xDA\x1D\xFFV\xA4\xB6n\xAA\xC3\x1F\xFAFR\x95\xEC\xE9\x07\xCD\x1647y;M\0\x9Au\x84\x88\x84\x81Q\x81\x10a\x0C\x8CWa\x0C\x8Ca/\xD9V[` \x02` \x01\x01Q\x81T\x81\x10a\x0C\xA4Wa\x0C\xA4a/\xD9V[`\0\x91\x82R` \x80\x83 \x91\x90\x91\x01T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x82R\x91\x81\x01\x92\x90\x92R\x01`@Q\x80\x91\x03\x90\xA2\x82T\x83\x90a\x0C\xE4\x90`\x01\x90a0;V[\x81T\x81\x10a\x0C\xF4Wa\x0C\xF4a/\xD9V[\x90`\0R` `\0 \x01\x83\x87\x83\x81Q\x81\x10a\r\x11Wa\r\x11a/\xD9V[` \x02` \x01\x01Q\x81T\x81\x10a\r)Wa\r)a/\xD9V[`\0\x91\x82R` \x90\x91 \x82T\x91\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x82\x17\x81U\x91T`\x01`\x01``\x1B\x03`\x01`\xA0\x1B\x91\x82\x90\x04\x16\x02\x17\x90U\x82T\x83\x90\x80a\r|Wa\r|a0RV[`\0\x82\x81R` \x81 \x82\x01`\0\x19\x90\x81\x01\x91\x90\x91U\x01\x90U\x81T\x82\x90a\r\xA4\x90`\x01\x90a0;V[\x81T\x81\x10a\r\xB4Wa\r\xB4a/\xD9V[\x90`\0R` `\0 \x01`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x82\x87\x83\x81Q\x81\x10a\r\xE5Wa\r\xE5a/\xD9V[` \x02` \x01\x01Q\x81T\x81\x10a\r\xFDWa\r\xFDa/\xD9V[\x90`\0R` `\0 \x01`\0a\x01\0\n\x81T\x81`\x01`\x01`\xA0\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`\xA0\x1B\x03\x16\x02\x17\x90UP\x81\x80T\x80a\x0E;Wa\x0E;a0RV[`\0\x82\x81R` \x90 \x81\x01`\0\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90U\x80a\x0Eg\x81a0 V[\x91PPa\x0B\xD6V[PPPPPPPV[`\0a\x0E\x82a\x1BnV[`\0\x80[\x83\x81\x10\x15a\x05\xF8W`\0\x85\x85\x83\x81\x81\x10a\x0E\xA2Wa\x0E\xA2a/\xD9V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\x0E\xB7\x90P\x81a\x17\xCBV[`\0\x80a\x0E\xC4\x83\x8Ba\x18GV[\x91P\x91P\x80a\x0E\xE6W`\0\x91P`\x01`\xFF\x84\x16\x1B`\x01`\x01`\xC0\x1B\x03\x86\x16\x17\x94P[`\0a\x0E\xF3\x8A\x85\x85a\x1C!V[\x90Pa\x0E\xFF\x84\x82a\x1E\xA1V[PPPPP\x80\x80a\x0F\x0F\x90a0 V[\x91PPa\x0E\x86V[```\0\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0F3Wa\x0F3a+#V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F\\W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83\x81\x10\x15a\x11LW`\0\x85\x85\x83\x81\x81\x10a\x0F~Wa\x0F~a/\xD9V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\x0F\x93\x90P\x81a\x17\xCBV[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 \x80Tc\xFF\xFF\xFF\xFF\x8A\x16\x92\x90a\x0F\xBCWa\x0F\xBCa/\xD9V[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x10hW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`[`$\x82\x01R\x7FStakeRegistry.getTotalStakeIndic`D\x82\x01R\x7FesAtBlockNumber: quorum has no s`d\x82\x01R\x7Ftake history at blockNumber\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x06\x86V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 T\x90[\x81\x81\x10\x15a\x116W`\xFF\x83\x16`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 c\xFF\xFF\xFF\xFF\x8B\x16\x91a\x10\xAC\x84\x86a0;V[a\x10\xB6\x91\x90a0;V[\x81T\x81\x10a\x10\xC6Wa\x10\xC6a/\xD9V[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a\x11$W`\x01a\x10\xE9\x82\x84a0;V[a\x10\xF3\x91\x90a0;V[\x85\x85\x81Q\x81\x10a\x11\x05Wa\x11\x05a/\xD9V[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x116V[\x80a\x11.\x81a0 V[\x91PPa\x10}V[PPP\x80\x80a\x11D\x90a0 V[\x91PPa\x0FbV[P\x90P[\x93\x92PPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x11sW`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x91P\x82\x90PV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x82\x84\x01\x82\x90R\x85\x82R`\x02\x81R\x83\x82 `\xFF\x88\x16\x83R\x90R\x91\x90\x91 \x80T\x83\x90\x81\x10a\x11\xD4Wa\x11\xD4a/\xD9V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x84R`\x01` \x1B\x82\x04\x16\x93\x83\x01\x93\x90\x93R`\x01`@\x1B\x90\x92\x04`\x01`\x01``\x1B\x03\x16\x91\x81\x01\x91\x90\x91R\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\xFF\x83\x16`\0\x90\x81R`\x03` R`@\x90 \x80T\x83\x90\x81\x10a\x12_Wa\x12_a/\xD9V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q\x80\x82\x01\x90\x91R\x91\x01T`\x01`\x01`\xA0\x1B\x03\x81\x16\x82R`\x01`\xA0\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91\x81\x01\x91\x90\x91R\x93\x92PPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x82\x84\x01\x82\x90R`\xFF\x86\x16\x82R`\x01\x90R\x91\x90\x91 \x80T\x83\x90\x81\x10a\x12\xDEWa\x12\xDEa/\xD9V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x84R`\x01` \x1B\x82\x04\x16\x93\x83\x01\x93\x90\x93R`\x01`@\x1B\x90\x92\x04`\x01`\x01``\x1B\x03\x16\x91\x81\x01\x91\x90\x91R\x93\x92PPPV[a\x138a\x1AEV[\x81a\x13B\x81a\x17\xCBV[a\x13L\x83\x83a \x1BV[PPPV[a\x13Ya\x1BnV[`\0[\x81\x81\x10\x15a\x13\xBDW`\0\x83\x83\x83\x81\x81\x10a\x13xWa\x13xa/\xD9V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\x13\x8D\x90P\x81a\x17\xCBV[`\0a\x13\x9B\x86\x83`\0a\x1C!V[\x90Pa\x13\xA7\x82\x82a\x1E\xA1V[PPP\x80\x80a\x13\xB5\x90a0 V[\x91PPa\x13\\V[PPPPV[a\x13\xCBa\x1AEV[\x81a\x13\xD5\x81a\x17\xCBV[a\x13L\x83\x83a \x84V[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x14\x06Wa\x14\x06a/\xD9V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x82\x04\x16\x93\x82\x01\x93\x90\x93R`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x93\x04\x92\x90\x92\x16\x90\x82\x01R\x90Pa\x0B$\x81\x85a$\xC7V[`\xFF\x81\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x90\x91a\x14~\x91a0;V[\x81T\x81\x10a\x14\x8EWa\x14\x8Ea/\xD9V[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[`\0a\x14\xBD\x84\x84\x84a&AV[\x94\x93PPPPV[`\0\x82\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x14\xF6Wa\x14\xF6a/\xD9V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x82\x04\x16\x93\x82\x01\x93\x90\x93R`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x93\x04\x92\x90\x92\x16\x90\x82\x01R\x90Pa\x15M\x81\x86a$\xC7V[`@\x01Q\x95\x94PPPPPV[`@\x80Q``\x80\x82\x01\x83R`\0\x80\x83R` \x80\x84\x01\x82\x90R\x83\x85\x01\x82\x90R\x86\x82R`\x02\x81R\x84\x82 `\xFF\x87\x16\x83R\x81R\x84\x82 T\x85Q\x93\x84\x01\x86R\x82\x84R\x90\x83\x01\x82\x90R\x93\x82\x01R\x90\x91\x90\x81a\x15\xB3W\x91Pa\x0B\x11\x90PV[`\0\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x15\xDA`\x01\x84a0;V[\x81T\x81\x10a\x15\xEAWa\x15\xEAa/\xD9V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x82\x04\x16\x93\x82\x01\x93\x90\x93R`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x93\x04\x92\x90\x92\x16\x90\x82\x01R\x92Pa\x0B\x11\x91PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x16f\x85\x85\x85a&AV[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x16|Wa\x16|a/\xD9V[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x94\x93PPPPV[a\x16\xA8a\x1BnV[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x17&W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FStakeRegistry.initializeQuorum: `D\x82\x01Rtquorum already exists`X\x1B`d\x82\x01R`\x84\x01a\x06\x86V[a\x170\x83\x82a \x84V[a\x17:\x83\x83a \x1BV[PP`\xFF\x16`\0\x90\x81R`\x01` \x81\x81R`@\x80\x84 \x81Q``\x81\x01\x83Rc\xFF\xFF\xFF\xFFC\x81\x16\x82R\x81\x85\x01\x87\x81R\x93\x82\x01\x87\x81R\x83T\x96\x87\x01\x84U\x92\x87R\x93\x90\x95 \x94Q\x94\x90\x93\x01\x80T\x91Q\x93Q`\x01`\x01``\x1B\x03\x16`\x01`@\x1B\x02`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x94\x84\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x93\x16\x95\x90\x93\x16\x94\x90\x94\x17\x17\x91\x90\x91\x16\x17\x90UV[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x90 Ta\x18DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`1`$\x82\x01R\x7FStakeRegistry.quorumExists: quor`D\x82\x01Rp\x1D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`z\x1B`d\x82\x01R`\x84\x01a\x06\x86V[PV[`\0\x80`\0\x80a\x18f\x86`\xFF\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x90\x91P`\xFF\x87\x16`\0\x90\x81R`\x04` \x81\x90R`@\x80\x83 \x90Qc\x90\x04\x13G`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x92c\x90\x04\x13G\x92a\x18\xDB\x92\x8C\x92\x01a0hV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x18\xF8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x19 \x91\x90\x81\x01\x90a0\xC7V[\x90P`\0[\x83\x81\x10\x15a\x1A\x11W`\xFF\x89\x16`\0\x90\x81R`\x03` R`@\x90 \x80T\x82\x90\x81\x10a\x19QWa\x19Qa/\xD9V[`\0\x91\x82R` \x80\x83 `@\x80Q\x80\x82\x01\x90\x91R\x92\x01T`\x01`\x01`\xA0\x1B\x03\x81\x16\x83R`\x01`\xA0\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x90\x82\x01R\x83Q\x90\x94P\x83\x90\x83\x90\x81\x10a\x19\x9FWa\x19\x9Fa/\xD9V[` \x02` \x01\x01Q\x11\x15a\x19\xFFWg\r\xE0\xB6\xB3\xA7d\0\0\x83` \x01Q`\x01`\x01``\x1B\x03\x16\x83\x83\x81Q\x81\x10a\x19\xD6Wa\x19\xD6a/\xD9V[` \x02` \x01\x01Qa\x19\xE8\x91\x90a1WV[a\x19\xF2\x91\x90a1vV[a\x19\xFC\x90\x86a1\x98V[\x94P[\x80a\x1A\t\x81a0 V[\x91PPa\x19%V[PPP`\xFF\x86\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x91\x93PP`\x01`\x01``\x1B\x03\x90\x81\x16\x90\x83\x16\x10\x15\x90P[\x92P\x92\x90PV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\xA3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xC7\x91\x90a1\xC3V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1BlW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R\x7FStakeRegistry.onlyCoordinatorOwn`D\x82\x01R\x7Fer: caller is not the owner of t`d\x82\x01Ru42\x9092\xB3\xB4\xB9\xBA9<\xA1\xB7\xB7\xB924\xB70\xBA7\xB9`Q\x1B`\x84\x82\x01R`\xA4\x01a\x06\x86V[V[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x1BlW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`L`$\x82\x01R\x7FStakeRegistry.onlyRegistryCoordi`D\x82\x01R\x7Fnator: caller is not the Registr`d\x82\x01Rk<\xA1\xB7\xB7\xB924\xB70\xBA7\xB9`\xA1\x1B`\x84\x82\x01R`\xA4\x01a\x06\x86V[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x81\x90\x80a\x1C\xE5W`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x82R\x80\x83 \x81Q``\x81\x01\x83Rc\xFF\xFF\xFF\xFFC\x81\x16\x82R\x81\x85\x01\x86\x81R`\x01`\x01``\x1B\x03\x80\x8C\x16\x95\x84\x01\x95\x86R\x84T`\x01\x81\x01\x86U\x94\x88R\x95\x90\x96 \x91Q\x91\x90\x92\x01\x80T\x95Q\x93Q\x90\x94\x16`\x01`@\x1B\x02`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x93\x83\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x96\x16\x91\x90\x92\x16\x17\x93\x90\x93\x17\x16\x91\x90\x91\x17\x90Ua\x1EGV[`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a\x1D\x0C`\x01\x84a0;V[\x81T\x81\x10a\x1D\x1CWa\x1D\x1Ca/\xD9V[`\0\x91\x82R` \x90\x91 \x01\x80T`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x94P\x90\x91P\x85\x16\x83\x14\x15a\x1DUW`\0\x93PPPPa\x11PV[\x80TCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a\x1D\x8FW\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua\x1EEV[\x80Tg\xFF\xFF\xFF\xFF\0\0\0\0\x19\x16`\x01` \x1BCc\xFF\xFF\xFF\xFF\x90\x81\x16\x82\x81\x02\x93\x90\x93\x17\x84U`\0\x8A\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x8D\x16\x84R\x82R\x80\x83 \x81Q``\x81\x01\x83R\x96\x87R\x86\x83\x01\x84\x81R`\x01`\x01``\x1B\x03\x8D\x81\x16\x93\x89\x01\x93\x84R\x82T`\x01\x81\x01\x84U\x92\x86R\x93\x90\x94 \x96Q\x96\x01\x80T\x93Q\x91Q\x96\x85\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x94\x16\x93\x90\x93\x17\x93\x16\x90\x93\x02\x91\x90\x91\x17`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B\x93\x90\x92\x16\x92\x90\x92\x02\x17\x90U[P[`@\x80Q`\xFF\x87\x16\x81R`\x01`\x01``\x1B\x03\x86\x16` \x82\x01R\x87\x91\x7F/R}R~\x95\xD8\xFE@\xAE\xC5Swt;\xB7y\x08}\xA3\xF6\xD0\xD0\x8F\x12\xE3dD\xDAb2}\x91\x01`@Q\x80\x91\x03\x90\xA2a\x1E\x97\x82\x85a'\xA7V[\x96\x95PPPPPPV[`\xFF\x82\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a\x1E\xC5\x90\x84a0;V[\x81T\x81\x10a\x1E\xD5Wa\x1E\xD5a/\xD9V[\x90`\0R` `\0 \x01\x90P\x83`\0\x14\x15a\x1F\x04WT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\x0B\x11\x90PV[\x80T`\0\x90a\x1F#\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a'\xBFV[\x82T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a\x1F`W\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua \x12V[\x81Tc\xFF\xFF\xFF\xFFC\x81\x16`\x01` \x1B\x81\x81\x02g\xFF\xFF\xFF\xFF\0\0\0\0\x19\x90\x94\x16\x93\x90\x93\x17\x85U`\xFF\x89\x16`\0\x90\x81R`\x01` \x81\x81R`@\x80\x84 \x81Q``\x81\x01\x83R\x95\x86R\x85\x83\x01\x85\x81R`\x01`\x01``\x1B\x03\x80\x8B\x16\x93\x88\x01\x93\x84R\x82T\x95\x86\x01\x83U\x91\x86R\x92\x90\x94 \x94Q\x94\x90\x92\x01\x80T\x91Q\x92Q\x90\x93\x16`\x01`@\x1B\x02`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x92\x86\x16\x90\x96\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x91\x16\x93\x90\x94\x16\x92\x90\x92\x17\x92\x90\x92\x17\x16\x91\x90\x91\x17\x90U[\x95\x94PPPPPV[`\xFF\x82\x16`\0\x81\x81R` \x81\x81R`@\x91\x82\x90 \x80Tk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01``\x1B\x03\x86\x16\x90\x81\x17\x90\x91U\x91Q\x91\x82R\x7F&\xEE\xCF\xF2\xB7\x0B\nq\x10O\xF4\xD9@\xBAqb\xD2:\x95\xC2Hw\x1F\xC4\x87\xA7\xBE\x17\xA5\x96\xB3\xCF\x91\x01`@Q\x80\x91\x03\x90\xA2PPV[`\0\x81Q\x11a \xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R`\0\x80Q` a2\x94\x839\x81Q\x91R`D\x82\x01R\x7F: no strategies provided\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x86V[\x80Q`\xFF\x83\x16`\0\x90\x81R`\x03` \x90\x81R`@\x90\x91 T\x90a!\x0C\x83\x83a1\xE0V[\x11\x15a!|W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`E`$\x82\x01R`\0\x80Q` a2\x94\x839\x81Q\x91R`D\x82\x01R\x7F: exceed MAX_WEIGHING_FUNCTION_L`d\x82\x01Rd\x08\xA9\xC8\xEA\x89`\xDB\x1B`\x84\x82\x01R`\xA4\x01a\x06\x86V[`\0[\x82\x81\x10\x15a$\xC0W`\0[a!\x94\x82\x84a1\xE0V[\x81\x10\x15a\"uW\x84\x82\x81Q\x81\x10a!\xADWa!\xADa/\xD9V[` \x02` \x01\x01Q`\0\x01Q`\x01`\x01`\xA0\x1B\x03\x16`\x03`\0\x88`\xFF\x16`\xFF\x16\x81R` \x01\x90\x81R` \x01`\0 \x82\x81T\x81\x10a!\xECWa!\xECa/\xD9V[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\"cW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R`\0\x80Q` a2\x94\x839\x81Q\x91R`D\x82\x01R\x7F: cannot add same strategy 2x\0\0\0`d\x82\x01R`\x84\x01a\x06\x86V[\x80a\"m\x81a0 V[\x91PPa!\x8AV[P`\0\x84\x82\x81Q\x81\x10a\"\x8AWa\"\x8Aa/\xD9V[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x11a#\x0FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R`\0\x80Q` a2\x94\x839\x81Q\x91R`D\x82\x01R\x7F: cannot add strategy with zero `d\x82\x01Re\x1D\xD9ZY\xDA\x1D`\xD2\x1B`\x84\x82\x01R`\xA4\x01a\x06\x86V[`\xFF\x85\x16`\0\x90\x81R`\x03` R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a#5Wa#5a/\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q\x82T`\x01\x81\x01\x84U`\0\x93\x84R\x82\x84 \x82Q\x92\x84\x01Q`\x01`\x01``\x1B\x03\x16`\x01`\xA0\x1B\x02`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x92\x90\x92\x17\x91\x01U`\xFF\x87\x16\x82R`\x04\x90R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a#\x9AWa#\x9Aa/\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQ\x82T`\x01\x81\x01\x84U`\0\x93\x84R\x91\x90\x92 \x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90U\x83Q`\xFF\x86\x16\x90\x7F\x10V^V\xCA\xCB\xF3.\xCA&yE\xF0T\xFE\xC0.Yu\x002\xD1\x13\xD30!\x82\xAD\x96\x7FT\x04\x90\x86\x90\x84\x90\x81\x10a$\x11Wa$\x11a/\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQ`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R\x01`@Q\x80\x91\x03\x90\xA2\x84`\xFF\x16\x7F\x11\xA5d\x13\"\xDA\x1D\xFFV\xA4\xB6n\xAA\xC3\x1F\xFAFR\x95\xEC\xE9\x07\xCD\x1647y;M\0\x9Au\x85\x83\x81Q\x81\x10a$nWa$na/\xD9V[` \x02` \x01\x01Q`\0\x01Q\x86\x84\x81Q\x81\x10a$\x8CWa$\x8Ca/\xD9V[` \x02` \x01\x01Q` \x01Q`@Qa$\xA6\x92\x91\x90a(HV[`@Q\x80\x91\x03\x90\xA2\x80a$\xB8\x81a0 V[\x91PPa!\x7FV[PPPPPV[\x81`\0\x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10\x15a%lW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R\x7FStakeRegistry._validateStakeUpda`D\x82\x01R\x7FteAtBlockNumber: stakeUpdate is `d\x82\x01Ru397\xB6\x900\xB3:2\xB9\x10167\xB1\xB5\xA7:\xB6\xB12\xB9`Q\x1B`\x84\x82\x01R`\xA4\x01a\x06\x86V[` \x82\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a%\x92WP\x81` \x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10[a&=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`j`$\x82\x01R\x7FStakeRegistry._validateStakeUpda`D\x82\x01R\x7FteAtBlockNumber: there is a newe`d\x82\x01R\x7Fr stakeUpdate available before b`\x84\x82\x01Ri67\xB1\xB5\xA7:\xB6\xB12\xB9`\xB1\x1B`\xA4\x82\x01R`\xC4\x01a\x06\x86V[PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a&\xE2W`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x90 c\xFF\xFF\xFF\xFF\x85\x16\x90a&\x95`\x01\x84a0;V[\x81T\x81\x10a&\xA5Wa&\xA5a/\xD9V[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a&\xD0Wa&\xC7`\x01\x82a0;V[\x92PPPa\x11PV[\x80a&\xDA\x81a1\xF8V[\x91PPa&`V[P`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x81`$\x82\x01R\x7FStakeRegistry._getStakeUpdateInd`D\x82\x01R\x7FexForOperatorAtBlockNumber: no s`d\x82\x01R\x7Ftake update found for operatorId`\x84\x82\x01R\x7F and quorumNumber at block numbe`\xA4\x82\x01R`9`\xF9\x1B`\xC4\x82\x01R`\xE4\x01a\x06\x86V[`\0a\x11P`\x01`\x01``\x1B\x03\x80\x85\x16\x90\x84\x16a2\x0FV[`\0\x80\x82\x12\x15a'\xE3Wa'\xD2\x82a2NV[a'\xDC\x90\x84a2kV[\x90Pa\x0B\x11V[a'\xDC\x82\x84a1\x98V[\x805`\xFF\x81\x16\x81\x14a'\xFEW`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a(\x15W`\0\x80\xFD[a\x11P\x82a'\xEDV[`\0\x80`@\x83\x85\x03\x12\x15a(1W`\0\x80\xFD[a(:\x83a'\xEDV[\x94` \x93\x90\x93\x015\x93PPPV[`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x82R`\x01`\x01``\x1B\x03\x16` \x82\x01R`@\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x18DW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a(\x92W`\0\x80\xFD[a(\x9B\x83a'\xEDV[\x91P` \x83\x015a(\xAB\x81a(jV[\x80\x91PP\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a(\xC8W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xDFW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x1A>W`\0\x80\xFD[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a)\x12W`\0\x80\xFD[a)\x1B\x86a'\xEDV[\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a)7W`\0\x80\xFD[a)C\x89\x83\x8A\x01a(\xB6V[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a)\\W`\0\x80\xFD[Pa)i\x88\x82\x89\x01a(\xB6V[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a)\x8CW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a)\xA3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x1A>W`\0\x80\xFD[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a)\xD1W`\0\x80\xFD[\x845a)\xDC\x81a(jV[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a)\xFEW`\0\x80\xFD[a*\n\x87\x82\x88\x01a)zV[\x95\x98\x94\x97P\x95PPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*OW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a**V[P\x94\x95\x94PPPPPV[`@\x81R`\0a*m`@\x83\x01\x85a*\x16V[\x82\x81\x03` \x84\x01Ra \x12\x81\x85a*\x16V[`\0\x80`@\x83\x85\x03\x12\x15a*\x92W`\0\x80\xFD[\x825\x91Pa*\xA2` \x84\x01a'\xEDV[\x90P\x92P\x92\x90PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a+\x17Wa+\x04\x83\x85Qc\xFF\xFF\xFF\xFF\x80\x82Q\x16\x83R\x80` \x83\x01Q\x16` \x84\x01RP`\x01`\x01``\x1B\x03`@\x82\x01Q\x16`@\x83\x01RPPV[\x92\x84\x01\x92``\x92\x90\x92\x01\x91`\x01\x01a*\xC7V[P\x90\x96\x95PPPPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+[Wa+[a+#V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\x89Wa+\x89a+#V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a+\xAAWa+\xAAa+#V[P`\x05\x1B` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a+\xC7W`\0\x80\xFD[a+\xD0\x83a'\xEDV[\x91P` \x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xECW`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a+\xFDW`\0\x80\xFD[\x805a,\x10a,\x0B\x82a+\x91V[a+aV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15a,/W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a,MW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a,4V[\x80\x95PPPPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a'\xFEW`\0\x80\xFD[`\0\x80`\0`@\x84\x86\x03\x12\x15a,\x85W`\0\x80\xFD[a,\x8E\x84a,\\V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xA9W`\0\x80\xFD[a,\xB5\x86\x82\x87\x01a)zV[\x94\x97\x90\x96P\x93\x94PPPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a+\x17W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a,\xDEV[`\0\x80`\0``\x84\x86\x03\x12\x15a-\x15W`\0\x80\xFD[a-\x1E\x84a'\xEDV[\x95` \x85\x015\x95P`@\x90\x94\x015\x93\x92PPPV[\x81Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x84\x01Q\x90\x91\x16\x90\x82\x01R`@\x80\x83\x01Q`\x01`\x01``\x1B\x03\x16\x90\x82\x01R``\x81\x01a\x0B\x11V[\x805`\x01`\x01``\x1B\x03\x81\x16\x81\x14a'\xFEW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a-\x92W`\0\x80\xFD[a-\x9B\x83a'\xEDV[\x91Pa*\xA2` \x84\x01a-hV[`\0\x80`\0`@\x84\x86\x03\x12\x15a-\xBEW`\0\x80\xFD[\x835\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xA9W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a-\xECW`\0\x80\xFD[\x815` a-\xFCa,\x0B\x83a+\x91V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a.\x1BW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a.jW`@\x81\x89\x03\x12\x15a.8W`\0\x80\x81\xFD[a.@a+9V[\x815a.K\x81a(jV[\x81Ra.X\x82\x86\x01a-hV[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01a.\x1FV[P\x96\x95PPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a.\x88W`\0\x80\xFD[a.\x91\x83a'\xEDV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xACW`\0\x80\xFD[a.\xB8\x85\x82\x86\x01a-\xDBV[\x91PP\x92P\x92\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a.\xD7W`\0\x80\xFD[a.\xE0\x84a'\xEDV[\x92Pa.\xEE` \x85\x01a,\\V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`\0``\x84\x86\x03\x12\x15a/\x13W`\0\x80\xFD[\x835\x92Pa/#` \x85\x01a'\xEDV[\x91Pa/1`@\x85\x01a,\\V[\x90P\x92P\x92P\x92V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a/PW`\0\x80\xFD[a/Y\x85a'\xEDV[\x93Pa/g` \x86\x01a,\\V[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a/\x91W`\0\x80\xFD[a/\x9A\x84a'\xEDV[\x92Pa/\xA8` \x85\x01a-hV[\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xC3W`\0\x80\xFD[a/\xCF\x86\x82\x87\x01a-\xDBV[\x91PP\x92P\x92P\x92V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a0\x01W`\0\x80\xFD[a\x11P\x82a-hV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a04Wa04a0\nV[P`\x01\x01\x90V[`\0\x82\x82\x10\x15a0MWa0Ma0\nV[P\x03\x90V[cNH{q`\xE0\x1B`\0R`1`\x04R`$`\0\xFD[`\0`@\x82\x01`\x01\x80`\xA0\x1B\x03\x80\x86\x16\x84R` `@\x81\x86\x01R\x82\x86T\x80\x85R``\x87\x01\x91P\x87`\0R\x82`\0 \x94P`\0[\x81\x81\x10\x15a0\xB9W\x85T\x85\x16\x83R`\x01\x95\x86\x01\x95\x92\x84\x01\x92\x01a0\x9BV[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a0\xDAW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xF0W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a1\x01W`\0\x80\xFD[\x80Qa1\x0Fa,\x0B\x82a+\x91V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a1.W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a1LW\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a13V[\x97\x96PPPPPPPV[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a1qWa1qa0\nV[P\x02\x90V[`\0\x82a1\x93WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0`\x01`\x01``\x1B\x03\x80\x83\x16\x81\x85\x16\x80\x83\x03\x82\x11\x15a1\xBAWa1\xBAa0\nV[\x01\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a1\xD5W`\0\x80\xFD[\x81Qa\x11P\x81a(jV[`\0\x82\x19\x82\x11\x15a1\xF3Wa1\xF3a0\nV[P\x01\x90V[`\0\x81a2\x07Wa2\x07a0\nV[P`\0\x19\x01\x90V[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a2-Wa2-a0\nV[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a2HWa2Ha0\nV[PP\x03\x90V[`\0`\x01`\xFF\x1B\x82\x14\x15a2dWa2da0\nV[P`\0\x03\x90V[`\0`\x01`\x01``\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15a2\x8BWa2\x8Ba0\nV[\x03\x93\x92PPPV\xFEStakeRegistry._addStrategyParams\xA2dipfsX\"\x12 U\xBFx\xA9\xAD\xDC\xFCS\xE6h\xF5\xD4\xAA4i;\x1A3\xCDU\xFA\xCC\x1B,S\xFB\xB2\xB0o\xA0'\xBAdsolcC\0\x08\x0C\x003a\x01\xC0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0c\x998\x03\x80b\0c\x99\x839\x81\x01`@\x81\x90Rb\0\x005\x91b\0\x02TV[`@\x80Q\x80\x82\x01\x82R`\x16\x81R\x7FAVSRegistryCoordinator\0\0\0\0\0\0\0\0\0\0` \x80\x83\x01\x91\x82R\x83Q\x80\x85\x01\x90\x94R`\x06\x84Rev0.0.1`\xD0\x1B\x90\x84\x01R\x81Q\x90 `\xE0\x81\x90R\x7Fk\xDA~?8^H\x84\x10H9\x04D\xCC\xED\\\xC7\x95\xAF\x87u\x8A\xF6v\"\xE5\xF4\xF0\x88,J\x99a\x01\0\x81\x90RF`\xA0R\x87\x93\x87\x93\x87\x93\x87\x93\x91\x92\x91\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0Fb\0\x015\x81\x84\x84`@\x80Q` \x81\x01\x85\x90R\x90\x81\x01\x83\x90R``\x81\x01\x82\x90RF`\x80\x82\x01R0`\xA0\x82\x01R`\0\x90`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x93\x92PPPV[`\x80R0`\xC0Ra\x01 RPPPP`\x01`\x01`\xA0\x1B\x03\x93\x84\x16a\x01@R\x91\x83\x16a\x01\x80R\x82\x16a\x01`R\x16a\x01\xA0Rb\0\x01ob\0\x01yV[PPPPb\0\x02\xBCV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\x01\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FInitializable: contract is initi`D\x82\x01Rfalizing`\xC8\x1B`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[`\0T`\xFF\x90\x81\x16\x10\x15b\0\x029W`\0\x80T`\xFF\x19\x16`\xFF\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x02QW`\0\x80\xFD[PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x02kW`\0\x80\xFD[\x84Qb\0\x02x\x81b\0\x02;V[` \x86\x01Q\x90\x94Pb\0\x02\x8B\x81b\0\x02;V[`@\x86\x01Q\x90\x93Pb\0\x02\x9E\x81b\0\x02;V[``\x86\x01Q\x90\x92Pb\0\x02\xB1\x81b\0\x02;V[\x93\x96\x92\x95P\x90\x93PPV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x01\0Qa\x01 Qa\x01@Qa\x01`Qa\x01\x80Qa\x01\xA0Qa_\xD5b\0\x03\xC4`\09`\0\x81\x81a\x06\xAB\x01R\x81\x81a\x11\x9D\x01R\x81\x81a \x85\x01R\x81\x81a.\xB5\x01R\x81\x81a7l\x01Ra=D\x01R`\0\x81\x81a\x05\xF0\x01R\x81\x81a \x10\x01R\x81\x81a$\xB8\x01R\x81\x81a.5\x01R\x81\x81a6\xC3\x01R\x81\x81a9\x19\x01Ra<\xC3\x01R`\0\x81\x81a\x05\xB6\x01R\x81\x81a\x0F8\x01R\x81\x81a N\x01R\x81\x81a-\xB7\x01R\x81\x81a/\x9D\x01R\x81\x81a0\x13\x01R\x81\x81a6C\x01Ra=\xC0\x01R`\0\x81\x81a\x04\xFA\x01R\x81\x81a-\r\x01Ra5\x8B\x01R`\0a?\xC7\x01R`\0a@\x16\x01R`\0a?\xF1\x01R`\0a?J\x01R`\0a?t\x01R`\0a?\x9E\x01Ra_\xD5`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x02\xD5W`\x005`\xE0\x1C\x80c]\xF4YF\x11a\x01\x82W\x80c\x9F\xEA\xB8Y\x11a\0\xE9W\x80c\xD7-\x8D\xD6\x11a\0\xA2W\x80c\xE6W\x97\xAD\x11a\0|W\x80c\xE6W\x97\xAD\x14a\x07\x98W\x80c\xF2\xFD\xE3\x8B\x14a\x08;W\x80c\xFA\xBC\x1C\xBC\x14a\x08NW\x80c\xFD9\x10Z\x14a\x08aW`\0\x80\xFD[\x80c\xD7-\x8D\xD6\x14a\x07jW\x80c\xD7[L\x88\x14a\x07rW\x80c\xDD\x82\x83\xF3\x14a\x07\x85W`\0\x80\xFD[\x80c\x9F\xEA\xB8Y\x14a\x06\xCDW\x80c\xA5\x08W\xBF\x14a\x06\xF4W\x80c\xA9ox>\x14a\x07\x07W\x80c\xC3\x91B^\x14a\x07\x10W\x80c\xCA\r\xE8\x82\x14a\x070W\x80c\xCAO-\x97\x14a\x07WW`\0\x80\xFD[\x80c\x87\x1E\xF0I\x11a\x01;W\x80c\x87\x1E\xF0I\x14a\x06@W\x80c\x88o\x11\x95\x14a\x06SW\x80c\x8D\xA5\xCB[\x14a\x06lW\x80c\x9A\xA1e=\x14a\x06tW\x80c\x9B]\x17{\x14a\x06\x93W\x80c\x9E\x99#\xC2\x14a\x06\xA6W`\0\x80\xFD[\x80c]\xF4YF\x14a\x05\xB1W\x80ccG\xC9\0\x14a\x05\xD8W\x80ch0H5\x14a\x05\xEBW\x80cn;\x17\xDB\x14a\x06\x12W\x80cqP\x18\xA6\x14a\x06%W\x80c\x84\xCAR\x13\x14a\x06-W`\0\x80\xFD[\x80c$\x9A\x0CB\x11a\x02AW\x80c<*\x7FL\x11a\x01\xFAW\x80cY\\jg\x11a\x01\xD4W\x80cY\\jg\x14a\x05oW\x80cZ\xC8j\xB7\x14a\x05wW\x80c[\x0B\x82\x9F\x14a\x05\x96W\x80c\\\x97Z\xBB\x14a\x05\xA9W`\0\x80\xFD[\x80c<*\x7FL\x14a\x05\x1CW\x80cQ@\xA5H\x14a\x05\x80W\xC1\xAD\x1F5\x10\xFC\x83w\x8B\xE2\x0F\x10\xEC]\xE6\x81V[a\x02\xEDa\x07\x026`\x04aR/V[a\x1B\xB8V[a\x03\x0F`\xA0T\x81V[a\x07#a\x07\x1E6`\x04aR\xD7V[a\x1D=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x15\x91\x90aX\x1FV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\rEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aX=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xC2\x91\x90aX\x86V[a\r\xDEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aX\xA8V[`\x01T\x81\x81\x16\x14a\x0EWW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.pause: invalid attempt `D\x82\x01R\x7Fto unpause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x08\xC6V[`\x01\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01a\x0C\x86V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`\0\x83\x81R`\x98` R`@\x90 \x80T\x83\x90\x81\x10a\x0E\xCBWa\x0E\xCBaWxV[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x82\x04\x16\x93\x82\x01\x93\x90\x93R`\x01`\x01`\xC0\x1B\x03`\x01`@\x1B\x90\x93\x04\x92\x90\x92\x16\x90\x82\x01R\x90P[\x92\x91PPV[`@Qc\x08\xF6b\x9D`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90cG\xB3\x14\xE8\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\x87W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\x19\x91\x90aX\x1FV[a\x0F\xB3a%gV[a\rN\x81a&\xCBV[a\x0F\xC4a%gV[a\rN\x81a'4V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x0F\x19a\x10G\x7F+\xD8!$\x05\x7F\t\x13\xBC;w,\xE7\xB8>\x80W\xC1\xAD\x1F5\x10\xFC\x83w\x8B\xE2\x0F\x10\xEC]\xE6\x84`@Q` \x01a\x10,\x92\x91\x90\x91\x82R`\x01`\x01`\xA0\x1B\x03\x16` \x82\x01R`@\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a'\x9DV[a'\xEBV[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x10uW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aWAV[`\0a\x10\xBD\x84\x84\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`\x96T`\xFF\x16\x91Pa({\x90PV[\x90P\x84\x83\x14a\x11.W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` a_@\x839\x81Q\x91R`D\x82\x01R\x7ForsForQuorum: input length misma`d\x82\x01Rb\x0E\x8Cm`\xEB\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`\0[\x83\x81\x10\x15a\x15TW`\0\x85\x85\x83\x81\x81\x10a\x11MWa\x11MaWxV[\x91\x90\x91\x015`\xF8\x1C\x91P6\x90P`\0\x89\x89\x85\x81\x81\x10a\x11nWa\x11naWxV[\x90P` \x02\x81\x01\x90a\x11\x80\x91\x90aX\xF0V[`@Qcy\xA0\x84\x91`\xE1\x1B\x81R`\xFF\x86\x16`\x04\x82\x01R\x91\x93P\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90c\xF3A\t\"\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11\xECW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12\x10\x91\x90aY9V[c\xFF\xFF\xFF\xFF\x16\x81\x14a\x12\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`e`$\x82\x01R`\0\x80Q` a_@\x839\x81Q\x91R`D\x82\x01R\x7ForsForQuorum: number of updated `d\x82\x01R\x7Foperators does not match quorum `\x84\x82\x01Rd\x1D\x1B\xDD\x18[`\xDA\x1B`\xA4\x82\x01R`\xC4\x01a\x08\xC6V[`\0\x80[\x82\x81\x10\x15a\x14\xF3W`\0\x84\x84\x83\x81\x81\x10a\x12\xCCWa\x12\xCCaWxV[\x90P` \x02\x01` \x81\x01\x90a\x12\xE1\x91\x90aL\xC7V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\x99` \x90\x81R`@\x80\x83 \x81Q\x80\x83\x01\x90\x92R\x80T\x82R`\x01\x81\x01T\x94\x95P\x92\x93\x90\x92\x91\x83\x01\x90`\xFF\x16`\x02\x81\x11\x15a\x13,Wa\x13,aM\xF5V[`\x02\x81\x11\x15a\x13=Wa\x13=aM\xF5V[\x90RP\x80Q\x90\x91P`\0a\x13P\x82a#EV[\x90P`\x01`\x01`\x01`\xC0\x1B\x03\x82\x16`\xFF\x8B\x16\x1C\x81\x16\x14a\x13\xD4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R`\0\x80Q` a_@\x839\x81Q\x91R\x90\x82\x01R\x7ForsForQuorum: operator not in qu`d\x82\x01Rcorum`\xE0\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[\x85`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x11a\x14\x7FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`g`$\x82\x01R`\0\x80Q` a_@\x839\x81Q\x91R`D\x82\x01R\x7ForsForQuorum: operators array mu`d\x82\x01R\x7Fst be sorted in ascending addres`\x84\x82\x01Rf9\x907\xB922\xB9`\xC9\x1B`\xA4\x82\x01R`\xC4\x01a\x08\xC6V[Pa\x14\xDD\x83\x83\x8F\x8F\x8D\x90\x8E`\x01a\x14\x96\x91\x90aYVV[\x92a\x14\xA3\x93\x92\x91\x90aYnV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa$z\x92PPPV[P\x90\x92Pa\x14\xEC\x90P\x81aW\xA4V[\x90Pa\x12\xB0V[P`\xFF\x84\x16`\0\x81\x81R`\x9B` \x90\x81R`@\x91\x82\x90 C\x90\x81\x90U\x91Q\x91\x82R\x7FF\x07}U3\x07c\xF1bi\xFDu\xE5v\x16c\xF4\x19-'\x91t|\x01\x89\xB1j\xD3\x1D\xB0}\xB4\x91\x01`@Q\x80\x91\x03\x90\xA2PPPP\x80a\x15M\x90aW\xA4V[\x90Pa\x111V[PPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` \x90\x81R`@\x91\x82\x90 \x82Q\x80\x84\x01\x90\x93R\x80T\x83R`\x01\x81\x01T\x90\x91\x83\x01\x90`\xFF\x16`\x02\x81\x11\x15a\x15\xB7Wa\x15\xB7aM\xF5V[`\x02\x81\x11\x15a\x15\xC8Wa\x15\xC8aM\xF5V[\x90RP\x92\x91PPV[`\0T`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01Rb\x01\0\0\x90\x91\x04`\x01`\x01`\xA0\x1B\x03\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16\x1EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16B\x91\x90aX\x86V[a\x16^W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aX\xA8V[`\0\x19`\x01\x81\x90U`@Q\x90\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2V[a\x16\xA5a%gV[\x81a\x16\xAF\x81a)\x0CV[a\x16\xB9\x83\x83a)\x8AV[PPPV[`\x9C\x81\x81T\x81\x10a\x16\xCEW`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x90P\x81V[a\x16\xF0a*7V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9F` \x90\x81R`@\x80\x83 B\x90U`\x99\x82R\x80\x83 \x80T\x82Q`\x1F\x87\x01\x85\x90\x04\x85\x02\x81\x01\x85\x01\x90\x93R\x85\x83R\x90\x93\x90\x92\x90\x91a\x17]\x91\x87\x90\x87\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`\x96T`\xFF\x16\x91Pa({\x90PV[\x90P`\0a\x17j\x83a#EV[\x90P`\x01\x80\x85\x01T`\xFF\x16`\x02\x81\x11\x15a\x17\x86Wa\x17\x86aM\xF5V[\x14\x80\x15a\x17\x9BWP`\x01`\x01`\xC0\x1B\x03\x82\x16\x15\x15[\x80\x15a\x17\xB9WPa\x17\xB9`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x16\x14\x90V[\x15a\x15TWa\x15T\x87\x87\x87\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa*\xB7\x92PPPV[a\x18\x06a%gV[a\x18\x10`\0a/)V[V[`\0a\x18R\x7FM@N2v\xE7\xAC!c\xD8\xEEGj\xFAjA\xD1\xF6\x8F\xB7\x1F-\x8BeF\xB2NU\xCE\x01\xB7*\x87\x87\x87\x87\x87`@Q` \x01a\x10,\x96\x95\x94\x93\x92\x91\x90aY\x98V[\x96\x95PPPPPPV[`\0a\x0F\x19\x82a#EV[`\0a\x18{`dT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90P\x90V[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x18\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aWAV[\x83\x89\x14a\x19+W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FRegistryCoordinator.registerOper\x90\x82\x01R\x7FatorWithChurn: input length mism`d\x82\x01Rc\x0C.\x8Cm`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`\0a\x1973\x88a/{V[\x90Pa\x19\x973\x82\x88\x88\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x19\x8CWa\x19}`@\x83\x02\x86\x016\x81\x90\x03\x81\x01\x90aZ\x1DV[\x81R` \x01\x90`\x01\x01\x90a\x19`V[PPPPP\x87a0\xACV[`\0a\x19\xDE3\x83\x8E\x8E\x8E\x8E\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RP\x8C\x92Pa29\x91PPV[\x90P`\0[\x8B\x81\x10\x15a\x1B\xA9W`\0`\x97`\0\x8F\x8F\x85\x81\x81\x10a\x1A\x03Wa\x1A\x03aWxV[\x91\x90\x91\x015`\xF8\x1C\x82RP` \x80\x82\x01\x92\x90\x92R`@\x90\x81\x01`\0 \x81Q``\x81\x01\x83R\x90Tc\xFF\xFF\xFF\xFF\x81\x16\x80\x83Ra\xFF\xFF`\x01` \x1B\x83\x04\x81\x16\x95\x84\x01\x95\x90\x95R`\x01`0\x1B\x90\x91\x04\x90\x93\x16\x91\x81\x01\x91\x90\x91R\x84Q\x80Q\x91\x93P\x90\x84\x90\x81\x10a\x1ApWa\x1ApaWxV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1B\x96Wa\x1B\x11\x8E\x8E\x84\x81\x81\x10a\x1A\x99Wa\x1A\x99aWxV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x84`@\x01Q\x84\x81Q\x81\x10a\x1A\xBCWa\x1A\xBCaWxV[` \x02` \x01\x01Q3\x86` \x01Q\x86\x81Q\x81\x10a\x1A\xDBWa\x1A\xDBaWxV[` \x02` \x01\x01Q\x8D\x8D\x88\x81\x81\x10a\x1A\xF5Wa\x1A\xF5aWxV[\x90P`@\x02\x01\x806\x03\x81\x01\x90a\x1B\x0B\x91\x90aZ\x1DV[\x86a7\xFAV[a\x1B\x96\x89\x89\x84\x81\x81\x10a\x1B&Wa\x1B&aWxV[\x90P`@\x02\x01` \x01` \x81\x01\x90a\x1B>\x91\x90aL\xC7V[\x8F\x8F\x85\x90\x86`\x01a\x1BO\x91\x90aYVV[\x92a\x1B\\\x93\x92\x91\x90aYnV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa*\xB7\x92PPPV[P\x80a\x1B\xA1\x81aW\xA4V[\x91PPa\x19\xE3V[PPPPPPPPPPPPPV[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x1B\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aWAV[`\0a\x1B\xEC3\x85a/{V[\x90P`\0a\x1C53\x83\x8B\x8B\x8B\x8B\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RP\x8C\x92Pa29\x91PPV[Q\x90P`\0[\x88\x81\x10\x15a\x1D0W`\0\x8A\x8A\x83\x81\x81\x10a\x1CWWa\x1CWaWxV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x97` R`@\x90 T\x85Q\x91\x93Pc\xFF\xFF\xFF\xFF\x16\x91P\x84\x90\x84\x90\x81\x10a\x1C\x8DWa\x1C\x8DaWxV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1D\x1DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FRegistryCoordinator.registerOper\x90\x82\x01R\x7Fator: operator count exceeds max`d\x82\x01Rcimum`\xE0\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[P\x80a\x1D(\x81aW\xA4V[\x91PPa\x1C;V[PPPPPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1DYWa\x1DYaKkV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x82W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1D\xEDWa\x1D\xB4\x85\x85\x83\x81Q\x81\x10a\x1D\xA7Wa\x1D\xA7aWxV[` \x02` \x01\x01Qa:\xCFV[\x82\x82\x81Q\x81\x10a\x1D\xC6Wa\x1D\xC6aWxV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x1D\xE5\x81aW\xA4V[\x91PPa\x1D\x88V[P\x93\x92PPPV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\x1E\x1CW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aWAV[a\x16\xB93\x84\x84\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa*\xB7\x92PPPV[a\x1Eda%gV[a\x16\xB9\x83\x83\x83a<\x0BV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x1E\x8FWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x1E\xA9WP0;\x15\x80\x15a\x1E\xA9WP`\0T`\xFF\x16`\x01\x14[a\x1F\x0CW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01a\x08\xC6V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x1F/W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[\x82Q\x84Q\x14\x80\x15a\x1FAWP\x81Q\x83Q\x14[a\x1F\xABW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FRegistryCoordinator.initialize: `D\x82\x01Rt\r-\xCE\x0E\xAE\x84\r\x8C\xAD\xCC\xEE\x8D\x04\r\xAD.m\xAC.\x8Cm`[\x1B`d\x82\x01R`\x84\x01a\x08\xC6V[a\x1F\xB4\x89a/)V[a\x1F\xBE\x86\x86a>\"V[a\x1F\xC7\x88a&\xCBV[a\x1F\xD0\x87a'4V[`\x9C\x80T`\x01\x81\x81\x01\x83U`\0\x83\x81R\x7F\xAF\x85\xB9\x07\x1D\xFA\xFE\xAC\x14\t\xD3\xF1\xD1\x9B\xAF\xC9\xBC|7\x97L\xDE\x8D\xF0\xEEah\xF0\x08nS\x9C\x92\x83\x01\x80T`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90\x92U\x85T\x80\x85\x01\x87U\x85\x01\x80T\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x16\x90\x83\x16\x17\x90U\x85T\x93\x84\x01\x90\x95U\x91\x90\x92\x01\x80T\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x92\x16\x91\x90\x93\x16\x17\x90\x91U[\x84Q\x81\x10\x15a!!Wa!\x0F\x85\x82\x81Q\x81\x10a \xCEWa \xCEaWxV[` \x02` \x01\x01Q\x85\x83\x81Q\x81\x10a \xE8Wa \xE8aWxV[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a!\x02Wa!\x02aWxV[` \x02` \x01\x01Qa<\x0BV[\x80a!\x19\x81aW\xA4V[\x91PPa \xB0V[P\x80\x15a!hW`\0\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[a!{a%gV[`\x01`\x01`\xA0\x1B\x03\x81\x16a!\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x08\xC6V[a\rN\x81a/)V[`\0`\x02\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xEA\xB6mz`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\"=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\"`\x91\x90aX\x1FV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\"\x90W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aX=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a%4\x91\x90aZ\x80V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15a%`Wa%`\x85a%[\x83`\x01`\x01`\xC0\x1B\x03\x16a#\xAEV[a*\xB7V[PPPPPV[3a%pa\x18gV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x18\x10W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x08\xC6V[`\x01`\x01`\xA0\x1B\x03\x81\x16a&TW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FPausable._setPauserRegistry: new`D\x82\x01R\x7FPauserRegistry cannot be the zer`d\x82\x01Rho address`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`\0T`@\x80Q`\x01`\x01`\xA0\x1B\x03b\x01\0\0\x90\x93\x04\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7Fn\x9F\xCDS\x98\x96\xFC\xA6\x0E\x8B\x0F\x01\xDDX\x023\xE4\x8Ak\x0F}\xF0\x13\xB8\x9B\xA7\xF5e\x86\x9A\xCD\xB6\x91\x01`@Q\x80\x91\x03\x90\xA1`\0\x80T`\x01`\x01`\xA0\x1B\x03\x90\x92\x16b\x01\0\0\x02b\x01\0\0`\x01`\xB0\x1B\x03\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x9DT`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F1TW\xD8\xA8\xFE`\xF0J\xF1|\x16\xE2\xF5\xA5\xE1\xDBa+1d\x8EX\x03\x03`u\x9E\xF8\xF3R\x8C\x91\x01`@Q\x80\x91\x03\x90\xA1`\x9D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x9ET`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\x8F0\xAB\t\xF4:l\x15}\x7F\xCE~\n\x13\xC0\x03\x04,\x1C\x95\xE8\xA7.z\x14j!\xC0\xCA\xA2M\xC9\x91\x01`@Q\x80\x91\x03\x90\xA1`\x9E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\0a\x0F\x19a'\xAAa?=V[\x83`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x83\x90R`B\x81\x01\x82\x90R`\0\x90`b\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0\x80\x80a(\x1B`\0\x80Q` a_\x80\x839\x81Q\x91R\x86aZ\xBFV[\x90P[a('\x81a@dV[\x90\x93P\x91P`\0\x80Q` a_\x80\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a(aW`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` a_\x80\x839\x81Q\x91R`\x01\x82\x08\x90Pa(\x1EV[`\0\x80a(\x87\x84a@\xE6V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a)\x05W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`?`$\x82\x01R\x7FBitmapUtils.orderedBytesArrayToB`D\x82\x01R\x7Fitmap: bitmap exceeds max value\0`d\x82\x01R`\x84\x01a\x08\xC6V[\x93\x92PPPV[`\x96T`\xFF\x90\x81\x16\x90\x82\x16\x10a\rNW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FRegistryCoordinator.quorumExists`D\x82\x01R\x7F: quorum does not exist\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x08\xC6V[`\xFF\x82\x16`\0\x81\x81R`\x97` \x90\x81R`@\x91\x82\x90 \x84Q\x81T\x86\x84\x01\x80Q\x88\x87\x01\x80Qc\xFF\xFF\xFF\xFF\x90\x95\x16e\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x94\x16\x84\x17`\x01` \x1Ba\xFF\xFF\x93\x84\x16\x02\x17g\xFF\xFF\0\0\0\0\0\0\x19\x16`\x01`0\x1B\x95\x83\x16\x95\x90\x95\x02\x94\x90\x94\x17\x90\x94U\x85Q\x91\x82RQ\x83\x16\x93\x81\x01\x93\x90\x93RQ\x16\x91\x81\x01\x91\x90\x91R\x7F>\xE6\xFE\x8DTa\x02D\xC3\xE9\xD3\xC0f\xAEJ\xEE\x99x\x84\xAA(\xF1\x06\x16\xAE\x82\x19%@\x13\x18\xAC\x90``\x01`@Q\x80\x91\x03\x90\xA2PPV[`\x9ET`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18\x10W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FRegistryCoordinator.onlyEjector:`D\x82\x01R\x7F caller is not the ejector\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x08\xC6V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` R`@\x90 \x80T`\x01\x80\x83\x01T`\xFF\x16`\x02\x81\x11\x15a*\xEBWa*\xEBaM\xF5V[\x14a+jW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R\x7FRegistryCoordinator._deregisterO`D\x82\x01R\x7Fperator: operator is not registe`d\x82\x01Rb\x1C\x99Y`\xEA\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`\x96T`\0\x90a+~\x90\x85\x90`\xFF\x16a({V[\x90P`\0a+\x8B\x83a#EV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a,\tW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`;`$\x82\x01R\x7FRegistryCoordinator._deregisterO`D\x82\x01R\x7Fperator: bitmap cannot be 0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x08\xC6V[a, `\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x16\x14\x90V[a,\xB8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`Y`$\x82\x01R\x7FRegistryCoordinator._deregisterO`D\x82\x01R\x7Fperator: operator is not registe`d\x82\x01R\x7Fred for specified quorums\0\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`\x01`\x01`\xC0\x1B\x03\x82\x81\x16\x19\x82\x16\x16a,\xD1\x84\x82aBsV[`\x01`\x01`\xC0\x1B\x03\x81\x16a-\xA0W`\x01\x85\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`@QcQ\xB2zm`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x88\x81\x16`\x04\x83\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xA3d\xF4\xDA\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a-QW`\0\x80\xFD[PZ\xF1\x15\x80\x15a-eW=`\0\x80>=`\0\xFD[PP`@Q\x86\x92P`\x01`\x01`\xA0\x1B\x03\x8A\x16\x91P\x7F9o\xDC\xB1\x80\xCB\x0F\xEA&\x92\x81\x13\xFB\x0F\xD1\xC3T\x98c\xF9\xCDV>j\x18O\x1DW\x81\x16\xC8\xE4\x90`\0\x90\xA3[`@Qc\xF4\xE2O\xE5`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xF4\xE2O\xE5\x90a-\xEE\x90\x8A\x90\x8A\x90`\x04\x01aZ\xD3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a.\x08W`\0\x80\xFD[PZ\xF1\x15\x80\x15a.\x1CW=`\0\x80>=`\0\xFD[PP`@Qc\xBD)\xB8\xCD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x92Pc\xBD)\xB8\xCD\x91Pa.n\x90\x87\x90\x8A\x90`\x04\x01aZ\xF7V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a.\x88W`\0\x80\xFD[PZ\xF1\x15\x80\x15a.\x9CW=`\0\x80>=`\0\xFD[PP`@Qc\xBD)\xB8\xCD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x92Pc\xBD)\xB8\xCD\x91Pa.\xEE\x90\x87\x90\x8A\x90`\x04\x01aZ\xF7V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a/\x08W`\0\x80\xFD[PZ\xF1\x15\x80\x15a/\x1CW=`\0\x80>=`\0\xFD[PPPPPPPPPPPV[`d\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x04\x83\x01R`\0\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90c\x13T*N\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a/\xE6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a0\n\x91\x90a[\x10V[\x90P\x80a\x0F\x19W\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xBFy\xCEX\x84\x84a0K\x87a\x0F\xCDV[`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a0i\x93\x92\x91\x90a[)V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a0\x88W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a)\x05\x91\x90a[\x10V[` \x80\x82\x01Q`\0\x90\x81R`\x9A\x90\x91R`@\x90 T`\xFF\x16\x15a1RW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`R`$\x82\x01R\x7FRegistryCoordinator._verifyChurn`D\x82\x01R\x7FApproverSignature: churnApprover`d\x82\x01Rq\x08\x1C\xD8[\x1D\x08\x18[\x1C\x99XY\x1EH\x1D\\\xD9Y`r\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[B\x81`@\x01Q\x10\x15a1\xE7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`R`$\x82\x01R\x7FRegistryCoordinator._verifyChurn`D\x82\x01R\x7FApproverSignature: churnApprover`d\x82\x01Rq\x08\x1C\xDAY\xDB\x98]\x1D\\\x99H\x19^\x1C\x1A\\\x99Y`r\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[` \x80\x82\x01\x80Q`\0\x90\x81R`\x9A\x90\x92R`@\x91\x82\x90 \x80T`\xFF\x19\x16`\x01\x17\x90U`\x9DT\x90Q\x91\x83\x01Qa\t\xAD\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91a22\x91\x88\x91\x88\x91\x88\x91\x90a\x18\x12V[\x83QaD3V[a2]`@Q\x80``\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`\0a2\xA5\x86\x86\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`\x96T`\xFF\x16\x91Pa({\x90PV[\x90P`\0a2\xB2\x88a#EV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a30W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`9`$\x82\x01R\x7FRegistryCoordinator._registerOpe`D\x82\x01R\x7Frator: bitmap cannot be 0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x08\xC6V[\x80\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x15a3\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`h`$\x82\x01R\x7FRegistryCoordinator._registerOpe`D\x82\x01R\x7Frator: operator already register`d\x82\x01R\x7Fed for some quorums being regist`\x84\x82\x01Rg2\xB92\xB2\x1037\xB9`\xC1\x1B`\xA4\x82\x01R`\xC4\x01a\x08\xC6V[`\xA0T`\x01`\x01`\xA0\x1B\x03\x8A\x16`\0\x90\x81R`\x9F` R`@\x90 T`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x85\x16\x17\x91B\x91a4\x1E\x91\x90aYVV[\x10a4\x9FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`E`$\x82\x01R\x7FRegistryCoordinator._registerOpe`D\x82\x01R\x7Frator: operator cannot reregiste`d\x82\x01Rd\x1C\x88\x1EY]`\xDA\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[a4\xA9\x89\x82aBsV[\x88\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x87`@Qa4\xD9\x91\x90aX\x0CV[`@Q\x80\x91\x03\x90\xA2`\x01`\x01`\x01`\xA0\x1B\x03\x8B\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a5\x13Wa5\x13aM\xF5V[\x14a6,W`@\x80Q\x80\x82\x01\x82R\x8A\x81R`\x01` \x80\x83\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x8F\x16`\0\x90\x81R`\x99\x90\x92R\x93\x90 \x82Q\x81U\x92Q\x83\x82\x01\x80T\x93\x94\x93\x91\x92\x90\x91`\xFF\x19\x16\x90\x83`\x02\x81\x11\x15a5nWa5naM\xF5V[\x02\x17\x90UPP`@Qc\x99&\xEE}`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x91Pc\x99&\xEE}\x90a5\xC3\x90\x8D\x90\x89\x90`\x04\x01a[\xA8V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a5\xDDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a5\xF1W=`\0\x80>=`\0\xFD[PP`@Q\x8B\x92P`\x01`\x01`\xA0\x1B\x03\x8D\x16\x91P\x7F\xE8\xE6\x8C\xEF\x1C:v\x1E\xD7\xBE~\x84c\xA3u\xF2\x7F{\xC35\xE5\x18$\"<\xAC\xCEcn\xC5\xC3\xFE\x90`\0\x90\xA3[`@Qc\x1F\xD9<\xA9`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c?\xB2yR\x90a6|\x90\x8D\x90\x8C\x90\x8C\x90`\x04\x01a\\\x1CV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a6\x96W`\0\x80\xFD[PZ\xF1\x15\x80\x15a6\xAAW=`\0\x80>=`\0\xFD[PP`@Qc%PGw`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x92Pc%PGw\x91Pa7\0\x90\x8D\x90\x8D\x90\x8D\x90\x8D\x90`\x04\x01a\\AV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a7\x1FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra7G\x91\x90\x81\x01\x90a\\\xCDV[`@\x80\x87\x01\x91\x90\x91R` \x86\x01\x91\x90\x91RQb\xBF\xF0M`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90b\xBF\xF0M\x90a7\xA4\x90\x8C\x90\x8C\x90\x8C\x90`\x04\x01a]0V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a7\xC3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra7\xEB\x91\x90\x81\x01\x90a]JV[\x84RPPP\x96\x95PPPPPPV[` \x80\x83\x01Q`\x01`\x01`\xA0\x1B\x03\x80\x82\x16`\0\x81\x81R`\x99\x90\x94R`@\x90\x93 T\x91\x92\x90\x87\x16\x14\x15a8zW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R`\0\x80Q` a_`\x839\x81Q\x91R`D\x82\x01Rt97\x1D\x101\xB0\xB777\xBA\x101\xB4:\xB97\x109\xB2\xB63`Y\x1B`d\x82\x01R`\x84\x01a\x08\xC6V[\x87`\xFF\x16\x84`\0\x01Q`\xFF\x16\x14a8\xF7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a_`\x839\x81Q\x91R`D\x82\x01R\x7Frn: quorumNumber not the same as`d\x82\x01Rf\x08\x1C\xDAY\xDB\x99Y`\xCA\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`@QcT\x01\xED'`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`\xFF\x89\x16`$\x82\x01R`\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90cT\x01\xED'\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a9hW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a9\x8C\x91\x90a]\xE3V[\x90Pa9\x98\x81\x85aE\xEDV[`\x01`\x01``\x1B\x03\x16\x86`\x01`\x01``\x1B\x03\x16\x11a:+W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R`\0\x80Q` a_`\x839\x81Q\x91R`D\x82\x01R\x7Frn: incoming operator has insuff`d\x82\x01Ru4\xB1\xB4\xB2\xB7:\x109\xBA0\xB5\xB2\x9037\xB9\x101\xB4:\xB97`Q\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[a:5\x88\x85aF\x11V[`\x01`\x01``\x1B\x03\x16\x81`\x01`\x01``\x1B\x03\x16\x10a!hW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R`\0\x80Q` a_`\x839\x81Q\x91R`D\x82\x01R\x7Frn: cannot kick operator with mo`d\x82\x01R\x7Fre than kickBIPsOfTotalStake\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`\0\x81\x81R`\x98` R`@\x81 T\x81[\x81\x81\x10\x15a;aW`\x01a:\xF4\x82\x84aZ9V[a:\xFE\x91\x90aZ9V[\x92P\x84c\xFF\xFF\xFF\xFF\x16`\x98`\0\x86\x81R` \x01\x90\x81R` \x01`\0 \x84c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a;1Wa;1aWxV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a;OWPPa\x0F\x19V[\x80a;Y\x81aW\xA4V[\x91PPa:\xE0V[P`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapIndexAtBlockNumber: no bitmap`d\x82\x01R\x7F update found for operatorId at `\x84\x82\x01Rk167\xB1\xB5\x907:\xB6\xB12\xB9`\xA1\x1B`\xA4\x82\x01R`\xC4\x01a\x08\xC6V[`\x96T`\xFF\x16`\xC0\x81\x10a<\x7FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FRegistryCoordinator.createQuorum`D\x82\x01Rt\x0E\x88\x1BX^\x08\x1C][\xDC\x9D[\\\xC8\x1C\x99XX\xDA\x19Y`Z\x1B`d\x82\x01R`\x84\x01a\x08\xC6V[a<\x8A\x81`\x01a^\0V[`\x96\x80T`\xFF\x19\x16`\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x80a<\xA9\x81\x86a)\x8AV[`@Q`\x01b\x96\xB5\x89`\xE0\x1B\x03\x19\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xFFiJw\x90a<\xFC\x90\x84\x90\x88\x90\x88\x90`\x04\x01a^%V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a=\x16W`\0\x80\xFD[PZ\xF1\x15\x80\x15a=*W=`\0\x80>=`\0\xFD[PP`@Qc\x13l\xA0\xF9`\xE1\x1B\x81R`\xFF\x84\x16`\x04\x82\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x92Pc&\xD9A\xF2\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a=\x92W`\0\x80\xFD[PZ\xF1\x15\x80\x15a=\xA6W=`\0\x80>=`\0\xFD[PP`@Qc\x13l\xA0\xF9`\xE1\x1B\x81R`\xFF\x84\x16`\x04\x82\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x92Pc&\xD9A\xF2\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a>\x0EW`\0\x80\xFD[PZ\xF1\x15\x80\x15a!hW=`\0\x80>=`\0\xFD[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a>IWP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a>\xCBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FPausable._initializePauser: _ini`D\x82\x01R\x7FtializePauser() can only be call`d\x82\x01Rfed once`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`\x01\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2a?\x0E\x82a%\xC6V[PPV[`\0\x80[\x82\x15a\x0F\x19Wa?'`\x01\x84aZ9V[\x90\x92\x16\x91\x80a?5\x81a^\x9EV[\x91PPa?\x16V[`\x000`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80\x15a?\x96WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0F\x14[\x15a?\xC0WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[P`@\x80Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x80\x83\x01\x91\x90\x91R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x84\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0``\x83\x01RF`\x80\x83\x01R0`\xA0\x80\x84\x01\x91\x90\x91R\x83Q\x80\x84\x03\x90\x91\x01\x81R`\xC0\x90\x92\x01\x90\x92R\x80Q\x91\x01 \x90V[`\0\x80\x80`\0\x80Q` a_\x80\x839\x81Q\x91R`\x03`\0\x80Q` a_\x80\x839\x81Q\x91R\x86`\0\x80Q` a_\x80\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0a@\xDA\x82\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R`\0\x80Q` a_\x80\x839\x81Q\x91RaF+V[\x91\x95\x91\x94P\x90\x92PPPV[`\0a\x01\0\x82Q\x11\x15aAoW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FBitmapUtils.orderedBytesArrayToB\x90\x82\x01R\x7Fitmap: orderedBytesArray is too `d\x82\x01Rclong`\xE0\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[\x81QaA}WP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10aA\x93WaA\x93aWxV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15aBjW\x84\x81\x81Q\x81\x10aA\xC1WaA\xC1aWxV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11aBVW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FBitmapUtils.orderedBytesArrayToB`D\x82\x01R\x7Fitmap: orderedBytesArray is not `d\x82\x01Rf\x1B\xDC\x99\x19\\\x99Y`\xCA\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[\x91\x81\x17\x91aBc\x81aW\xA4V[\x90PaA\xA6V[P\x90\x93\x92PPPV[`\0\x82\x81R`\x98` R`@\x90 T\x80aC\x18W`\0\x83\x81R`\x98` \x90\x81R`@\x80\x83 \x81Q``\x81\x01\x83Rc\xFF\xFF\xFF\xFFC\x81\x16\x82R\x81\x85\x01\x86\x81R`\x01`\x01`\xC0\x1B\x03\x80\x8A\x16\x95\x84\x01\x95\x86R\x84T`\x01\x81\x01\x86U\x94\x88R\x95\x90\x96 \x91Q\x91\x90\x92\x01\x80T\x95Q\x93Q\x90\x94\x16`\x01`@\x1B\x02`\x01`\x01`@\x1B\x03\x93\x83\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x96\x16\x91\x90\x92\x16\x17\x93\x90\x93\x17\x16\x91\x90\x91\x17\x90UPPPV[`\0\x83\x81R`\x98` R`@\x81 aC1`\x01\x84aZ9V[\x81T\x81\x10aCAWaCAaWxV[`\0\x91\x82R` \x90\x91 \x01\x80T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15aC\x85W\x80T`\x01`\x01`@\x1B\x03\x16`\x01`@\x1B`\x01`\x01`\xC0\x1B\x03\x85\x16\x02\x17\x81Ua\t\xADV[\x80Tc\xFF\xFF\xFF\xFFC\x81\x16`\x01` \x1B\x81\x81\x02g\xFF\xFF\xFF\xFF\0\0\0\0\x19\x90\x94\x16\x93\x90\x93\x17\x84U`\0\x87\x81R`\x98` \x90\x81R`@\x80\x83 \x81Q``\x81\x01\x83R\x94\x85R\x84\x83\x01\x84\x81R`\x01`\x01`\xC0\x1B\x03\x80\x8C\x16\x93\x87\x01\x93\x84R\x82T`\x01\x81\x01\x84U\x92\x86R\x93\x90\x94 \x94Q\x94\x01\x80T\x93Q\x91Q\x90\x92\x16`\x01`@\x1B\x02`\x01`\x01`@\x1B\x03\x91\x86\x16\x90\x96\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x93\x16\x93\x90\x94\x16\x92\x90\x92\x17\x17\x91\x90\x91\x16\x91\x90\x91\x17\x90UPPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16;\x15aEMW`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aDs\x90\x86\x90\x86\x90`\x04\x01aZ\xF7V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aD\x90W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aD\xB4\x91\x90a^\xC0V[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x16\xB9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`S`$\x82\x01R\x7FEIP1271SignatureUtils.checkSigna`D\x82\x01R\x7Fture_EIP1271: ERC1271 signature `d\x82\x01Rr\x1D\x99\\\x9AY\x9AX\xD8]\x1A[\xDB\x88\x19\x98Z[\x19Y`j\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[\x82`\x01`\x01`\xA0\x1B\x03\x16aEa\x83\x83aF\xDAV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x16\xB9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FEIP1271SignatureUtils.checkSigna`D\x82\x01R\x7Fture_EIP1271: signature not from`d\x82\x01Rf\x109\xB4\xB3\xB72\xB9`\xC9\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[` \x81\x01Q`\0\x90a'\x10\x90aF\x07\x90a\xFF\xFF\x16\x85a^\xEAV[a)\x05\x91\x90a_\x19V[`@\x81\x01Q`\0\x90a'\x10\x90aF\x07\x90a\xFF\xFF\x16\x85a^\xEAV[`\0\x80aF6aJGV[aF>aJeV[` \x80\x82R\x81\x81\x01\x81\x90R`@\x82\x01\x81\x90R``\x82\x01\x88\x90R`\x80\x82\x01\x87\x90R`\xA0\x82\x01\x86\x90R\x82`\xC0\x83`\x05a\x07\xD0Z\x03\xFA\x92P\x82\x80\x15aF\x7FWaF\x81V[\xFE[P\x82aF\xCFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7FBN254.expMod: call failure\0\0\0\0\0\0`D\x82\x01R`d\x01a\x08\xC6V[PQ\x95\x94PPPPPV[`\0\x80`\0aF\xE9\x85\x85aF\xF6V[\x91P\x91Pa\x1D\xED\x81aGfV[`\0\x80\x82Q`A\x14\x15aG-W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaG!\x87\x82\x85\x85aI!V[\x94P\x94PPPPaG_V[\x82Q`@\x14\x15aGWW` \x83\x01Q`@\x84\x01QaGL\x86\x83\x83aJ\x0EV[\x93P\x93PPPaG_V[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aGzWaGzaM\xF5V[\x14\x15aG\x83WPV[`\x01\x81`\x04\x81\x11\x15aG\x97WaG\x97aM\xF5V[\x14\x15aG\xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FECDSA: invalid signature\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x08\xC6V[`\x02\x81`\x04\x81\x11\x15aG\xF9WaG\xF9aM\xF5V[\x14\x15aHGW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x08\xC6V[`\x03\x81`\x04\x81\x11\x15aH[WaH[aM\xF5V[\x14\x15aH\xB4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 's' val`D\x82\x01Raue`\xF0\x1B`d\x82\x01R`\x84\x01a\x08\xC6V[`\x04\x81`\x04\x81\x11\x15aH\xC8WaH\xC8aM\xF5V[\x14\x15a\rNW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 'v' val`D\x82\x01Raue`\xF0\x1B`d\x82\x01R`\x84\x01a\x08\xC6V[`\0\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x83\x11\x15aIXWP`\0\x90P`\x03aJ\x05V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aIpWP\x84`\xFF\x16`\x1C\x14\x15[\x15aI\x81WP`\0\x90P`\x04aJ\x05V[`@\x80Q`\0\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15aI\xD5W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aI\xFEW`\0`\x01\x92P\x92PPaJ\x05V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aJ+`\xFF\x86\x90\x1C`\x1BaYVV[\x90PaJ9\x87\x82\x88\x85aI!V[\x93P\x93PPP\x93P\x93\x91PPV[`@Q\x80` \x01`@R\x80`\x01\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\xC0\x01`@R\x80`\x06\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`\0\x80\x83`\x1F\x84\x01\x12aJ\x95W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aJ\xACW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aG_W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aJ\xDAW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aJ\xF0W`\0\x80\xFD[aJ\xFC\x85\x82\x86\x01aJ\x83V[\x90\x96\x90\x95P\x93PPPPV[`\0` \x82\x84\x03\x12\x15aK\x1AW`\0\x80\xFD[P5\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\rNW`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15aKHW`\0\x80\xFD[\x835\x92P` \x84\x015aKZ\x81aK!V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aK\xA3WaK\xA3aKkV[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aK\xA3WaK\xA3aKkV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aK\xF3WaK\xF3aKkV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x83\x11\x15aL\x14WaL\x14aKkV[aL'`\x1F\x84\x01`\x1F\x19\x16` \x01aK\xCBV[\x90P\x82\x81R\x83\x83\x83\x01\x11\x15aL;W`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15aLdW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aLzW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aL\x8BW`\0\x80\xFD[aL\x9A\x84\x825` \x84\x01aK\xFBV[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\rNW`\0\x80\xFD[\x805aL\xC2\x81aL\xA2V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15aL\xD9W`\0\x80\xFD[\x815a)\x05\x81aL\xA2V[`\0\x80`@\x83\x85\x03\x12\x15aL\xF7W`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[\x805`\xFF\x81\x16\x81\x14aL\xC2W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aM)W`\0\x80\xFD[a)\x05\x82aM\x06V[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x0F\x19V[`\0\x80\x83`\x1F\x84\x01\x12aM[W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aMrW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aG_W`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aM\xA0W`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aM\xB7W`\0\x80\xFD[aM\xC3\x88\x83\x89\x01aJ\x83V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aM\xDCW`\0\x80\xFD[PaM\xE9\x87\x82\x88\x01aMIV[\x95\x98\x94\x97P\x95PPPPV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`\x03\x81\x10aN)WcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[\x81Q\x81R` \x80\x83\x01Q`@\x83\x01\x91aNH\x90\x84\x01\x82aN\x0BV[P\x92\x91PPV[\x805a\xFF\xFF\x81\x16\x81\x14aL\xC2W`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aNsW`\0\x80\xFD[aN{aK\x81V[\x90P\x815aN\x88\x81aK!V[\x81RaN\x96` \x83\x01aNOV[` \x82\x01RaN\xA7`@\x83\x01aNOV[`@\x82\x01R\x92\x91PPV[`\0\x80`\x80\x83\x85\x03\x12\x15aN\xC5W`\0\x80\xFD[aN\xCE\x83aM\x06V[\x91PaN\xDD\x84` \x85\x01aNaV[\x90P\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15aN\xFBW`\0\x80\xFD[\x835aO\x06\x81aL\xA2V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aO!W`\0\x80\xFD[aO-\x86\x82\x87\x01aMIV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aOSWaOSaKkV[P`\x05\x1B` \x01\x90V[`\0`@\x82\x84\x03\x12\x15aOoW`\0\x80\xFD[aOwaK\xA9V[\x90PaO\x82\x82aM\x06V[\x81R` \x82\x015aO\x92\x81aL\xA2V[` \x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aO\xB5W`\0\x80\xFD[\x855aO\xC0\x81aL\xA2V[\x94P` \x86\x81\x015\x94P`@\x80\x88\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aO\xE4W`\0\x80\xFD[\x88\x01`\x1F\x81\x01\x8A\x13aO\xF5W`\0\x80\xFD[\x805aP\x08aP\x03\x82aO:V[aK\xCBV[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x84\x01\x90\x84\x81\x01\x90\x8C\x83\x11\x15aP'W`\0\x80\xFD[\x92\x85\x01\x92[\x82\x84\x10\x15aPMWaP>\x8D\x85aO]V[\x82R\x92\x84\x01\x92\x90\x85\x01\x90aP,V[\x99\x9C\x98\x9BP\x98\x99``\x81\x015\x99P`\x80\x015\x97\x96PPPPPPPV[`\0a\x01\0\x82\x84\x03\x12\x15aP}W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aP\x95W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aP\xACW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x06\x1B\x85\x01\x01\x11\x15aG_W`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aP\xD9W`\0\x80\xFD[aP\xE1aK\x81V[\x90P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aP\xF9W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aQ\nW`\0\x80\xFD[aQ\x19\x84\x825` \x84\x01aK\xFBV[\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01\xA0\x8A\x8C\x03\x12\x15aQUW`\0\x80\xFD[\x895`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aQlW`\0\x80\xFD[aQx\x8D\x83\x8E\x01aMIV[\x90\x9BP\x99P` \x8C\x015\x91P\x80\x82\x11\x15aQ\x91W`\0\x80\xFD[aQ\x9D\x8D\x83\x8E\x01aMIV[\x90\x99P\x97P\x87\x91PaQ\xB2\x8D`@\x8E\x01aPjV[\x96Pa\x01@\x8C\x015\x91P\x80\x82\x11\x15aQ\xC9W`\0\x80\xFD[aQ\xD5\x8D\x83\x8E\x01aP\x83V[\x90\x96P\x94Pa\x01`\x8C\x015\x91P\x80\x82\x11\x15aQ\xEFW`\0\x80\xFD[aQ\xFB\x8D\x83\x8E\x01aP\xC7V[\x93Pa\x01\x80\x8C\x015\x91P\x80\x82\x11\x15aR\x12W`\0\x80\xFD[PaR\x1F\x8C\x82\x8D\x01aP\xC7V[\x91PP\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80a\x01`\x87\x89\x03\x12\x15aRIW`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aR`W`\0\x80\xFD[aRl\x8A\x83\x8B\x01aMIV[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15aR\x85W`\0\x80\xFD[aR\x91\x8A\x83\x8B\x01aMIV[\x90\x96P\x94P\x84\x91PaR\xA6\x8A`@\x8B\x01aPjV[\x93Pa\x01@\x89\x015\x91P\x80\x82\x11\x15aR\xBDW`\0\x80\xFD[PaR\xCA\x89\x82\x8A\x01aP\xC7V[\x91PP\x92\x95P\x92\x95P\x92\x95V[`\0\x80`@\x83\x85\x03\x12\x15aR\xEAW`\0\x80\xFD[\x825aR\xF5\x81aK!V[\x91P` \x83\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aS\x11W`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13aS\"W`\0\x80\xFD[\x805aS0aP\x03\x82aO:V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15aSOW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15aSmW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90aSTV[\x80\x95PPPPPP\x92P\x92\x90PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15aS\xBAW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aS\x98V[P\x90\x96\x95PPPPPPV[`\0\x80` \x83\x85\x03\x12\x15aS\xD9W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aS\xEFW`\0\x80\xFD[aJ\xFC\x85\x82\x86\x01aMIV[`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\rNW`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12aT!W`\0\x80\xFD[\x815` aT1aP\x03\x83aO:V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aTPW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aT\xA1W`@\x81\x89\x03\x12\x15aTmW`\0\x80\x81\xFD[aTuaK\xA9V[\x815aT\x80\x81aL\xA2V[\x81R\x81\x85\x015aT\x8F\x81aS\xFBV[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01aTTV[P\x96\x95PPPPPPV[`\0\x80`\0`\xA0\x84\x86\x03\x12\x15aT\xC1W`\0\x80\xFD[aT\xCB\x85\x85aNaV[\x92P``\x84\x015aT\xDB\x81aS\xFBV[\x91P`\x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aT\xF6W`\0\x80\xFD[aU\x02\x86\x82\x87\x01aT\x10V[\x91PP\x92P\x92P\x92V[`\0\x82`\x1F\x83\x01\x12aU\x1DW`\0\x80\xFD[\x815` aU-aP\x03\x83aO:V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15aULW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15aUoWaUb\x89\x82aNaV[\x84R\x92\x84\x01\x92\x81\x01aUPV[P\x90\x97\x96PPPPPPPV[`\0\x82`\x1F\x83\x01\x12aU\x8DW`\0\x80\xFD[\x815` aU\x9DaP\x03\x83aO:V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aU\xBCW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aT\xA1W\x805aU\xD3\x81aS\xFBV[\x83R\x91\x83\x01\x91\x83\x01aU\xC0V[`\0\x82`\x1F\x83\x01\x12aU\xF1W`\0\x80\xFD[\x815` aV\x01aP\x03\x83aO:V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aV W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aT\xA1W\x805`\x01`\x01`@\x1B\x03\x81\x11\x15aVCW`\0\x80\x81\xFD[aVQ\x89\x86\x83\x8B\x01\x01aT\x10V[\x84RP\x91\x83\x01\x91\x83\x01aV$V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15aV|W`\0\x80\xFD[aV\x85\x89aL\xB7V[\x97PaV\x93` \x8A\x01aL\xB7V[\x96PaV\xA1`@\x8A\x01aL\xB7V[\x95PaV\xAF``\x8A\x01aL\xB7V[\x94P`\x80\x89\x015\x93P`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aV\xD2W`\0\x80\xFD[aV\xDE\x8C\x83\x8D\x01aU\x0CV[\x94P`\xC0\x8B\x015\x91P\x80\x82\x11\x15aV\xF4W`\0\x80\xFD[aW\0\x8C\x83\x8D\x01aU|V[\x93P`\xE0\x8B\x015\x91P\x80\x82\x11\x15aW\x16W`\0\x80\xFD[PaW#\x8B\x82\x8C\x01aU\xE0V[\x91PP\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[` \x81\x01a\x0F\x19\x82\x84aN\x0BV[` \x80\x82R`\x19\x90\x82\x01R\x7FPausable: index is paused\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15aW\xB8WaW\xB8aW\x8EV[P`\x01\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15aW\xE5W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01aW\xC9V[\x81\x81\x11\x15aW\xF7W`\0` \x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a)\x05` \x83\x01\x84aW\xBFV[`\0` \x82\x84\x03\x12\x15aX1W`\0\x80\xFD[\x81Qa)\x05\x81aL\xA2V[` \x80\x82R`*\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Ri9\x90:\xB780\xBA\xB9\xB2\xB9`\xB1\x1B``\x82\x01R`\x80\x01\x90V[`\0` \x82\x84\x03\x12\x15aX\x98W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a)\x05W`\0\x80\xFD[` \x80\x82R`(\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Rg9\x9080\xBA\xB9\xB2\xB9`\xC1\x1B``\x82\x01R`\x80\x01\x90V[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aY\x07W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aY!W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aG_W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aYKW`\0\x80\xFD[\x81Qa)\x05\x81aK!V[`\0\x82\x19\x82\x11\x15aYiWaYiaW\x8EV[P\x01\x90V[`\0\x80\x85\x85\x11\x15aY~W`\0\x80\xFD[\x83\x86\x11\x15aY\x8BW`\0\x80\xFD[PP\x82\x01\x93\x91\x90\x92\x03\x91PV[`\0`\xC0\x82\x01\x88\x83R` `\x01\x80`\xA0\x1B\x03\x80\x8A\x16\x82\x86\x01R`@\x89\x81\x87\x01R`\xC0``\x87\x01R\x83\x89Q\x80\x86R`\xE0\x88\x01\x91P\x84\x8B\x01\x95P`\0[\x81\x81\x10\x15aY\xFDW\x86Q\x80Q`\xFF\x16\x84R\x86\x01Q\x85\x16\x86\x84\x01R\x95\x85\x01\x95\x91\x83\x01\x91`\x01\x01aY\xD3V[PP`\x80\x87\x01\x98\x90\x98RPPPP`\xA0\x90\x91\x01\x91\x90\x91RP\x94\x93PPPPV[`\0`@\x82\x84\x03\x12\x15aZ/W`\0\x80\xFD[a)\x05\x83\x83aO]V[`\0\x82\x82\x10\x15aZKWaZKaW\x8EV[P\x03\x90V[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\0aZw``\x83\x01\x84aW\xBFV[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15aZ\x92W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a)\x05W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aZ\xCEWaZ\xCEaZ\xA9V[P\x06\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\0\x90aL\x9A\x90\x83\x01\x84aW\xBFV[\x82\x81R`@` \x82\x01R`\0aL\x9A`@\x83\x01\x84aW\xBFV[`\0` \x82\x84\x03\x12\x15a[\"W`\0\x80\xFD[PQ\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81Ra\x01`\x81\x01a[Q` \x83\x01\x85\x805\x82R` \x90\x81\x015\x91\x01RV[a[k``\x83\x01`@\x86\x01\x805\x82R` \x90\x81\x015\x91\x01RV[`@`\x80\x85\x01`\xA0\x84\x017`\xE0\x82\x01`\0\x81R`@`\xC0\x86\x01\x827P`\0a\x01 \x83\x01\x90\x81R\x83Q\x90R` \x90\x92\x01Qa\x01@\x90\x91\x01R\x92\x91PPV[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01R`\0\x82Q```@\x84\x01Ra[\xD2`\xA0\x84\x01\x82aW\xBFV[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[\x81\x83R\x81\x81` \x85\x017P`\0\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\0\x90aZw\x90\x83\x01\x84\x86a[\xF3V[`\x01\x80`\xA0\x1B\x03\x85\x16\x81R\x83` \x82\x01R```@\x82\x01R`\0a\x18R``\x83\x01\x84\x86a[\xF3V[`\0\x82`\x1F\x83\x01\x12a\\zW`\0\x80\xFD[\x81Q` a\\\x8AaP\x03\x83aO:V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\\\xA9W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aT\xA1W\x80Qa\\\xC0\x81aS\xFBV[\x83R\x91\x83\x01\x91\x83\x01a\\\xADV[`\0\x80`@\x83\x85\x03\x12\x15a\\\xE0W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\\\xF7W`\0\x80\xFD[a]\x03\x86\x83\x87\x01a\\iV[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15a]\x19W`\0\x80\xFD[Pa]&\x85\x82\x86\x01a\\iV[\x91PP\x92P\x92\x90PV[\x83\x81R`@` \x82\x01R`\0aZw`@\x83\x01\x84\x86a[\xF3V[`\0` \x80\x83\x85\x03\x12\x15a]]W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a]sW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a]\x84W`\0\x80\xFD[\x80Qa]\x92aP\x03\x82aO:V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a]\xB1W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a]\xD8W\x83Qa]\xC9\x81aK!V[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a]\xB6V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a]\xF5W`\0\x80\xFD[\x81Qa)\x05\x81aS\xFBV[`\0`\xFF\x82\x16`\xFF\x84\x16\x80`\xFF\x03\x82\x11\x15a^\x1DWa^\x1DaW\x8EV[\x01\x93\x92PPPV[`\0``\x82\x01`\xFF\x86\x16\x83R` `\x01`\x01``\x1B\x03\x80\x87\x16\x82\x86\x01R`@``\x81\x87\x01R\x83\x87Q\x80\x86R`\x80\x88\x01\x91P\x84\x89\x01\x95P`\0[\x81\x81\x10\x15a^\x8EW\x86Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x86\x01Q\x85\x16\x86\x84\x01R\x95\x85\x01\x95\x91\x83\x01\x91`\x01\x01a^^V[P\x90\x9A\x99PPPPPPPPPPV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a^\xB6Wa^\xB6aW\x8EV[`\x01\x01\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a^\xD2W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a)\x05W`\0\x80\xFD[`\0`\x01`\x01``\x1B\x03\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15a_\x10Wa_\x10aW\x8EV[\x02\x94\x93PPPPV[`\0`\x01`\x01``\x1B\x03\x80\x84\x16\x80a_3Wa_3aZ\xA9V[\x92\x16\x91\x90\x91\x04\x92\x91PPV\xFERegistryCoordinator.updateOperatRegistryCoordinator._validateChu0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\xA2dipfsX\"\x12 t\x91\xACv\xA1\xCD\x7F\xCE\x1D-\x0C\xD9\x06uM^\xFD\xF63Z\r\xCB\xFE\xDA&\x92BMw{JJdsolcC\0\x08\x0C\x003.addresses.baseStrategyImplementation\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\xA2dipfsX\"\x12 \xA5}9\xBA#\x13v|\xD3\x9B9\xF0\x99\xBB#\xDB5G\xF0\x91C\xB0W\xE8\xB9xi]\x1B@\x9BMdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x60806040523480156200001157600080fd5b5060043610620001155760003560e01c80638b2c69eb11620000a3578063c0406226116200006e578063c0406226146200022e578063e18272c2146200023a578063e3a8b345146200024e578063f8ccbf47146200026257600080fd5b80638b2c69eb14620001de5780638c4f9b5014620001f25780639e3ba43714620002065780639e9923c2146200021a57600080fd5b80635df4594611620000e45780635df45946146200018e5780636830483514620001a25780636d14a98714620001b657806380e064d414620001ca57600080fd5b80630331ed2a146200011a57806334667564146200015257806339a5fcfa14620001665780634ca22c3f146200017a575b600080fd5b600c546200013590630100000090046001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b60195462000135906001600160a01b031681565b600f5462000135906001600160a01b031681565b60165462000135906001600160a01b031681565b60105462000135906001600160a01b031681565b60145462000135906001600160a01b031681565b600e5462000135906001600160a01b031681565b600d5462000135906001600160a01b031681565b60135462000135906001600160a01b031681565b60185462000135906001600160a01b031681565b60115462000135906001600160a01b031681565b60125462000135906001600160a01b031681565b6200023862000287565b005b60155462000135906001600160a01b031681565b60175462000135906001600160a01b031681565b600c54620002769062010000900460ff1681565b604051901515815260200162000149565b735fbdb2315678afecb367f032d93f642f64180aa36000620002a862000894565b90506000620002dc6040518060400160405280600d81526020016c6f70735f61646472657373657360981b81525062000b22565b90506000805160206201779383398151915260001c6001600160a01b0316637fb5297f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200032c57600080fd5b505af115801562000341573d6000803e3d6000fd5b505050506040516200035390620022ab565b604051809103906000f08015801562000370573d6000803e3d6000fd5b50601780546001600160a01b0319166001600160a01b03929092169190911790556040516200039f90620022b8565b604051809103906000f080158015620003bc573d6000803e3d6000fd5b50600c80546301000000600160b81b03191663010000006001600160a01b0393841681029190911791829055601754604051908416939190920416906200040390620022c6565b6200041092919062002336565b604051809103906000f0801580156200042d573d6000803e3d6000fd5b50601880546001600160a01b0319166001600160a01b039283169081179091556019546000926200046392869286921662000c84565b9050600e60009054906101000a90046001600160a01b03168360a001518460c001516040516200049390620022d4565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620004d0573d6000803e3d6000fd5b50601980546001600160a01b039283166001600160a01b03199091168117909155600c5460185485516040805191861660248084019190915281518084039091018152604490920181526020820180516001600160e01b031663189acdbd60e31b17905251639623609d60e01b81526301000000909304851694639623609d9462000566949390911692909190600401620023c0565b600060405180830381600087803b1580156200058157600080fd5b505af115801562000596573d6000803e3d6000fd5b505060185460408051638da5cb5b60e01b81529051600094506001600160a01b039092169250638da5cb5b9160048083019260209291908290030181865afa158015620005e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200060d9190620023ee565b6001600160a01b03161415620006605760405162461bcd60e51b815260206004820152601360248201527213dddb995c881d5b9a5b9a5d1a585b1a5e9959606a1b60448201526064015b60405180910390fd5b46617a69148062000672575046610539145b156200082757600c5460408051630fe7858560e31b81526004810191909152600a604482015269283937bc3ca0b236b4b760b11b606482015263010000009091046001600160a01b039081166024830152851690637f3c2c2890608401600060405180830381600087803b158015620006ea57600080fd5b505af1158015620006ff573d6000803e3d6000fd5b5050505060a083015160408051630fe7858560e31b81526004810191909152600c60448201526b4176734469726563746f727960a01b60648201526001600160a01b03918216602482015290851690637f3c2c2890608401600060405180830381600087803b1580156200077257600080fd5b505af115801562000787573d6000803e3d6000fd5b50505050602083015160408051630fe7858560e31b815260048101919091526013604482015272656967656e6c6179657250617573657252656760681b60648201526001600160a01b03918216602482015290851690637f3c2c2890608401600060405180830381600087803b1580156200080157600080fd5b505af115801562000816573d6000803e3d6000fd5b505050506200082784848362001a66565b6000805160206201779383398151915260001c6001600160a01b03166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200087557600080fd5b505af11580156200088a573d6000803e3d6000fd5b5050505050505050565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091526000620009176040518060400160405280601c81526020017f656967656e6c617965725f6465706c6f796d656e745f6f75747075740000000081525062001d9c565b905060006200095c826040518060400160405280601f81526020017f2e6164647265737365732e656967656e4c6179657250726f787941646d696e0081525062001fb3565b90506000620009a1836040518060400160405280601e81526020017f2e6164647265737365732e656967656e4c61796572506175736572526567000081525062001fb3565b90506000620009e6846040518060400160405280601a81526020017f2e6164647265737365732e73747261746567794d616e6167657200000000000081525062001fb3565b9050600062000a2385604051806040016040528060158152602001741730b2323932b9b9b2b9973232b632b3b0ba34b7b760591b81525062001fb3565b9050600062000a68866040518060400160405280601781526020017f2e6164647265737365732e6176734469726563746f727900000000000000000081525062001fb3565b9050600062000aa287604051806040016040528060128152602001711730b2323932b9b9b2b99739b630b9b432b960711b81525062001fb3565b9050600062000acb886040518060600160405280602581526020016201776e6025913962001fb3565b60408051610100810182526001600160a01b03998a1681529789166020890152958816958701959095525091851660608501529084166080840152831660a0830152600060c083015290911660e082015292915050565b60408051608081018252600080825260208201819052918101829052606081018290529062000b51836200203c565b905062000b7e60408051608081018252600080825260208201819052918101829052606081019190915290565b62000bb482604051806040016040528060128152602001712e636f6d6d756e6974794d756c746973696760701b81525062001fb3565b6001600160a01b03168152604080518082019091526007815266173830bab9b2b960c91b602082015262000bea90839062001fb3565b81602001906001600160a01b031690816001600160a01b03168152505062000c3382604051806040016040528060088152602001671731b43ab93732b960c11b81525062001fb3565b6001600160a01b0316604080830191909152805180820190915260088152671732b532b1ba37b960c11b602082015262000c6f90839062001fb3565b6001600160a01b031660608201529392505050565b60408051606080820183526000808352602083018190528284018190528351600280825292810190945291929081602001602082028036833701905050905084602001518160008151811062000cde5762000cde6200242f565b60200260200101906001600160a01b031690816001600160a01b03168152505084600001518160018151811062000d195762000d196200242f565b60200260200101906001600160a01b031690816001600160a01b03168152505080856000015160405162000d4d90620022e2565b62000d5a92919062002445565b604051809103906000f08015801562000d77573d6000803e3d6000fd5b50600d80546001600160a01b0319166001600160a01b03928316179055601754600c546040519183169350630100000090049091169062000db890620022c6565b62000dc592919062002336565b604051809103906000f08015801562000de2573d6000803e3d6000fd5b50600e80546001600160a01b0319166001600160a01b03928316179055601754600c54604051918316926301000000909104169062000e2190620022c6565b62000e2e92919062002336565b604051809103906000f08015801562000e4b573d6000803e3d6000fd5b50601080546001600160a01b0319166001600160a01b03928316179055601754600c54604051918316926301000000909104169062000e8a90620022c6565b62000e9792919062002336565b604051809103906000f08015801562000eb4573d6000803e3d6000fd5b50601280546001600160a01b0319166001600160a01b03928316179055601754600c54604051918316926301000000909104169062000ef390620022c6565b62000f0092919062002336565b604051809103906000f08015801562000f1d573d6000803e3d6000fd5b50601480546001600160a01b0319166001600160a01b039290921691909117905560405162000f4c90620022f0565b604051809103906000f08015801562000f69573d6000803e3d6000fd5b50601680546001600160a01b0319166001600160a01b03928316179055600e5460405191169062000f9a90620022fe565b6001600160a01b039091168152602001604051809103906000f08015801562000fc7573d6000803e3d6000fd5b50601180546001600160a01b0319166001600160a01b03928316908117909155600c5460105460405163266a23b160e21b81529084166004820152602481019290925263010000009004909116906399a88ec490604401600060405180830381600087803b1580156200103957600080fd5b505af11580156200104e573d6000803e3d6000fd5b5050600e546040516001600160a01b0390911692506200106f91506200230c565b6001600160a01b039091168152602001604051809103906000f0801580156200109c573d6000803e3d6000fd5b50601380546001600160a01b0319166001600160a01b03928316908117909155600c5460125460405163266a23b160e21b81529084166004820152602481019290925263010000009004909116906399a88ec490604401600060405180830381600087803b1580156200110e57600080fd5b505af115801562001123573d6000803e3d6000fd5b5050600e5460608801516040516001600160a01b03909216935091506200114a906200231a565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156200117e573d6000803e3d6000fd5b50601580546001600160a01b0319166001600160a01b03928316908117909155600c5460145460405163266a23b160e21b81529084166004820152602481019290925263010000009004909116906399a88ec490604401600060405180830381600087803b158015620011f057600080fd5b505af115801562001205573d6000803e3d6000fd5b50506014546010546012546040518895506001600160a01b039384169450918316921690620012349062002328565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562001279573d6000803e3d6000fd5b50600f80546001600160a01b0319166001600160a01b039290921691909117905560408051600080825260208201909252819081620012e1565b6040805160608101825260008082526020808301829052928201528252600019909201910181620012b35790505b50905060005b828110156200134857604080516060810182526127108152613a98602082015260649181019190915282518390839081106200132757620013276200242f565b602002602001018190525080806200133f90620024a4565b915050620012e7565b5060008267ffffffffffffffff81111562001367576200136762002419565b60405190808252806020026020018201604052801562001391578160200160208202803683370190505b50905060008367ffffffffffffffff811115620013b257620013b262002419565b604051908082528060200260200182016040528015620013e757816020015b6060815260200190600190039081620013d15790505b509050600c60039054906101000a90046001600160a01b03166001600160a01b0316639623609d600e60009054906101000a90046001600160a01b0316600f60009054906101000a90046001600160a01b031663dd8283f360e01b8c600001518d604001518e606001518f6020015160008c8c8c60405160240162001474989796959493929190620025be565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e086901b9092168252620014bd939291600401620023c0565b600060405180830381600087803b158015620014d857600080fd5b505af1158015620014ed573d6000803e3d6000fd5b5050600e5460408051638da5cb5b60e01b81529051600098506001600160a01b039092169650638da5cb5b955060048082019550602094509192508290030181865afa15801562001542573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015689190620023ee565b6001600160a01b03161415620015b75760405162461bcd60e51b815260206004820152601360248201527213dddb995c881d5b9a5b9a5d1a585b1a5e9959606a1b604482015260640162000657565b604080518082018252600d81526c1c185c995b9d081bd89a9958dd609a1b60208083019190915282518084018452600981526861646472657373657360b81b91810191909152600c549251634b96303160e11b815291929091737109709ecfa91a80626ff3989d68f67f5b1dd12d9163972c6062916200164e91859163010000009091046001600160a01b03169060040162002691565b6000604051808303816000875af11580156200166e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620016989190810190620026e1565b50604051634b96303160e11b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063972c606290620016d490849089906004016200279a565b6000604051808303816000875af1158015620016f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200171e9190810190620026e1565b50604051634b96303160e11b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063972c6062906200175a9084908890600401620027fc565b6000604051808303816000875af11580156200177a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620017a49190810190620026e1565b50600e54604051634b96303160e11b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9163972c606291620017ed9185916001600160a01b03909116906004016200286b565b6000604051808303816000875af11580156200180d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620018379190810190620026e1565b50600f54604051634b96303160e11b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9163972c606291620018809185916001600160a01b0390911690600401620028c4565b6000604051808303816000875af1158015620018a0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620018ca9190810190620026e1565b50601654604051634b96303160e11b8152600091737109709ecfa91a80626ff3989d68f67f5b1dd12d9163972c606291620019149186916001600160a01b03169060040162002931565b6000604051808303816000875af115801562001934573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200195e9190810190620026e1565b6040516388da6d3560e01b8152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d906388da6d3590620019a1908790879087906004016200298d565b6000604051808303816000875af1158015620019c1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620019eb9190810190620026e1565b905062001a2e816040518060400160405280601981526020017f6d6f636b6176735f6465706c6f796d656e745f6f757470757400000000000000815250620020cd565b5050604080516060810182526001600160a01b039687168152600e548716602082015260165490961690860152509295945050505050565b8051604051630fe7858560e31b81526001600160a01b03851691637f3c2c289162001a959190600401620029d6565b600060405180830381600087803b15801562001ab057600080fd5b505af115801562001ac5573d6000803e3d6000fd5b50505050602081015160408051630fe7858560e31b81526004810191909152601a60448201527f6d6f636b4176735265676973747279436f6f7264696e61746f7200000000000060648201526001600160a01b03918216602482015290841690637f3c2c2890608401600060405180830381600087803b15801562001b4957600080fd5b505af115801562001b5e573d6000803e3d6000fd5b505050506040818101518151630fe7858560e31b81526004810192909252601d60448301527f6d6f636b4176734f70657261746f72537461746552657472696576657200000060648301526001600160a01b039081166024830152841690637f3c2c2890608401600060405180830381600087803b15801562001be057600080fd5b505af115801562001bf5573d6000803e3d6000fd5b50505050606082015160408051630fe7858560e31b8152600481019190915260116044820152703232b632b3b0ba34b7b726b0b730b3b2b960791b60648201526001600160a01b03918216602482015290841690637f3c2c2890608401600060405180830381600087803b15801562001c6d57600080fd5b505af115801562001c82573d6000803e3d6000fd5b505050506040828101518151630fe7858560e31b81526004810192909252600f60448301526e39ba3930ba32b3bca6b0b730b3b2b960891b60648301526001600160a01b039081166024830152841690637f3c2c2890608401600060405180830381600087803b15801562001cf657600080fd5b505af115801562001d0b573d6000803e3d6000fd5b5050505060a082015160408051630fe7858560e31b81526004810191909152600c60448201526b6176734469726563746f727960a01b60648201526001600160a01b03918216602482015290841690637f3c2c2890608401600060405180830381600087803b15801562001d7e57600080fd5b505af115801562001d93573d6000803e3d6000fd5b50505050505050565b606060006000805160206201779383398151915260001c6001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001df1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001e1b9190810190620026e1565b60405160200162001e2d919062002a26565b60408051808303601f190181529082905263348051d760e11b82524660048301529150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801562001e90573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001eba9190810190620026e1565b60405160200162001ecc919062002a5b565b604051602081830303815290604052905060008460405160200162001ef2919062002a82565b60408051601f19818403018152908290529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906360f9bb119062001f359086908690869060200162002aad565b6040516020818303038152906040526040518263ffffffff1660e01b815260040162001f62919062002af6565b600060405180830381865afa15801562001f80573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001faa9190810190620026e1565b95945050505050565b604051631e19e65760e01b8152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90631e19e6579062001ff1908690869060040162002b0b565b602060405180830381865afa1580156200200f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020359190620023ee565b9392505050565b606060006000805160206201779383398151915260001c6001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa15801562002091573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620020bb9190810190620026e1565b60405160200162001e2d919062002b34565b60006000805160206201779383398151915260001c6001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa15801562002120573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200214a9190810190620026e1565b6040516020016200215c919062002a26565b60408051808303601f190181529082905263348051d760e11b82524660048301529150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015620021bf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620021e99190810190620026e1565b604051602001620021fb919062002a5b565b60405160208183030381529060405290506000828285604051602001620022259392919062002b68565b60408051601f198184030181529082905263e23cd19f60e01b82529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e23cd19f9062002270908890859060040162002b0b565b600060405180830381600087803b1580156200228b57600080fd5b505af1158015620022a0573d6000803e3d6000fd5b505050505050505050565b60948062002bc283390190565b6107188062002c5683390190565b610e81806200336e83390190565b6144ed80620041ef83390190565b61077880620086dc83390190565b611e238062008e5483390190565b612035806200ac7783390190565b611361806200ccac83390190565b6133c8806200e00d83390190565b61639980620113d583390190565b6001600160a01b0392831681529116602082015260606040820181905260009082015260800190565b60005b838110156200237c57818101518382015260200162002362565b838111156200238c576000848401525b50505050565b60008151808452620023ac8160208601602086016200235f565b601f01601f19169290920160200192915050565b6001600160a01b0384811682528316602082015260606040820181905260009062001faa9083018462002392565b6000602082840312156200240157600080fd5b81516001600160a01b03811681146200203557600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b82811015620024895781516001600160a01b03168452928401929084019060010162002462565b5050506001600160a01b039490941692019190915250919050565b6000600019821415620024c757634e487b7160e01b600052601160045260246000fd5b5060010190565b600081518084526020808501945080840160005b838110156200250e5781516bffffffffffffffffffffffff1687529582019590820190600101620024e2565b509495945050505050565b600082825180855260208086019550808260051b8401018186016000805b85811015620025b057868403601f19018a52825180518086529086019086860190845b818110156200259a57835180516001600160a01b031684528901516bffffffffffffffffffffffff1689840152928801926040909201916001016200255a565b50509a86019a9450509184019160010162002537565b509198975050505050505050565b600061010080830160018060a01b03808d1685526020818d16818701526040828d16818801526060838d168189015260ff8c1660808901528560a08901528495508a51935083855261012088019550828b01945060005b8481101562002652578551805163ffffffff1688528481015161ffff908116868a0152908401511683880152958101959483019460010162002615565b50505050505082810360c08401526200266c8186620024ce565b905082810360e084015262002682818562002519565b9b9a5050505050505050505050565b606081526000620026a6606083018562002392565b828103602080850191909152600a825269383937bc3ca0b236b4b760b11b908201526001600160a01b03939093166040928301525001919050565b600060208284031215620026f457600080fd5b815167ffffffffffffffff808211156200270d57600080fd5b818401915084601f8301126200272257600080fd5b81518181111562002737576200273762002419565b604051601f8201601f19908116603f0116810190838211818310171562002762576200276262002419565b816040528281528760208487010111156200277c57600080fd5b6200278f8360208301602088016200235f565b979650505050505050565b606081526000620027af606083018562002392565b8281036020840152620027e481601581527436b7b1b5a0bb39a9b2b93b34b1b2a6b0b730b3b2b960591b602082015260400190565b91505060018060a01b03831660408301529392505050565b60608152600062002811606083018562002392565b8281036020840152602381527f6d6f636b417673536572766963654d616e61676572496d706c656d656e74617460208201526234b7b760e91b60408201526060810191505060018060a01b03831660408301529392505050565b60608152600062002880606083018562002392565b82810360208085019190915260138252723932b3b4b9ba393ca1b7b7b93234b730ba37b960691b908201526001600160a01b03939093166040928301525001919050565b606081526000620028d9606083018562002392565b8281036020840152602181527f7265676973747279436f6f7264696e61746f72496d706c656d656e746174696f6020820152603760f91b60408201526060810191505060018060a01b03831660408301529392505050565b60608152600062002946606083018562002392565b828103602080850191909152601682527537b832b930ba37b929ba30ba32a932ba3934b2bb32b960511b908201526001600160a01b03939093166040928301525001919050565b606081526000620029a2606083018662002392565b8281036020840152620029b6818662002392565b90508281036040840152620029cc818562002392565b9695505050505050565b60408152600062002a0c60408301601581527436b7b1b5a0bb39a9b2b93b34b1b2a6b0b730b3b2b960591b602082015260400190565b6001600160a01b0393909316602092909201919091525090565b6000825162002a3a8184602087016200235f565b6e2f7363726970742f6f75747075742f60881b920191825250600f01919050565b6000825162002a6f8184602087016200235f565b602f60f81b920191825250600101919050565b6000825162002a968184602087016200235f565b64173539b7b760d91b920191825250600501919050565b6000845162002ac18184602089016200235f565b84519083019062002ad78183602089016200235f565b845191019062002aec8183602088016200235f565b0195945050505050565b60208152600062002035602083018462002392565b60408152600062002b20604083018562002392565b828103602084015262001faa818562002392565b6000825162002b488184602087016200235f565b6d2f7363726970742f696e7075742f60901b920191825250600e01919050565b6000845162002b7c8184602089016200235f565b84519083019062002b928183602089016200235f565b845191019062002ba78183602088016200235f565b64173539b7b760d91b91019081526005019594505050505056fe6080604052348015600f57600080fd5b50607780601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea264697066735822122007c80e3ab75b64ab2851d22a863601e8064735da0ba4040cde0990cb0528b7c064736f6c634300080c0033608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea2646970667358221220d2defa3201be949322800c3098b574d26d9d6a6cbac4560c147ae4c675a9d47a64736f6c634300080c0033608060405260405162000e8138038062000e81833981016040819052620000269162000490565b828162000036828260006200004d565b50620000449050826200008a565b505050620005c3565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e5a60279139620002f8565b9392505050565b60006200018060008051602062000e3a83398151915260001b620003de60201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e3a83398151915260001b620003de60201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200028c1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620002081760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000570565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f191906200058e565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b83811115620000835750506000910152565b600080600060608486031215620004a657600080fd5b620004b1846200042e565b9250620004c1602085016200042e565b60408501519092506001600160401b0380821115620004df57600080fd5b818601915086601f830112620004f457600080fd5b8151818111156200050957620005096200044b565b604051601f8201601f19908116603f011681019083821181831017156200053457620005346200044b565b816040528281528960208487010111156200054e57600080fd5b6200056183602083016020880162000461565b80955050505050509250925092565b600082516200058481846020870162000461565b9190910192915050565b6020815260008251806020840152620005af81604085016020870162000461565b601f01601f19169190910160400192915050565b61086780620005d36000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212207420b9d3a17a9b4b1279482aea62855b38b1f3c36865e13712f5632f3a487f3764736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65646101806040523480156200001257600080fd5b50604051620044ed380380620044ed83398101604081905262000035916200033f565b82828285866001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000078573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009e919062000393565b6001600160a01b0380851660805280841660a05280831660c052811660e052620000c762000264565b50505050806001600160a01b0316610100816001600160a01b031681525050806001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000125573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014b919062000393565b6001600160a01b0316610120816001600160a01b031681525050806001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ca919062000393565b6001600160a01b0316610140816001600160a01b031681525050610120516001600160a01b031663df5cf7236040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000226573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024c919062000393565b6001600160a01b03166101605250620003ba92505050565b600054610100900460ff1615620002d15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000324576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200033c57600080fd5b50565b6000806000606084860312156200035557600080fd5b8351620003628162000326565b6020850151909350620003758162000326565b6040850151909250620003888162000326565b809150509250925092565b600060208284031215620003a657600080fd5b8151620003b38162000326565b9392505050565b60805160a05160c05160e05161010051610120516101405161016051614025620004c86000396000818161030e01526112020152600081816101b801526113e40152600081816101f7015281816115ba015261177c015260008181610244015281816109e001528181610ecd01528181611065015261129f0152600081816106f501528181610850015281816108e701528181611e0801528181611f8b015261202a015260008181610520015281816105af0152818161062f01528181611a5001528181611b1c01528181611d460152611ee60152600081816122cb01528181612387015261247301526000818161021b01528181611aa401528181611b780152611bf701526140256000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80638da5cb5b116100b8578063c4d66de81161007c578063c4d66de8146102f6578063df5cf72314610309578063e481af9d14610330578063f2fde38b14610338578063fc299dee1461034b578063fce36c7d1461035e57600080fd5b80638da5cb5b1461028f5780639926ee7d146102a0578063a364f4da146102b3578063a98fb355146102c6578063b98d0908146102d957600080fd5b806368304835116100ff57806368304835146101f25780636b3aa72e146102195780636d14a9871461023f5780636efb463614610266578063715018a61461028757600080fd5b8063171f1d5b1461013c57806333cfb7b71461016b5780633bc28c8c1461018b578063416c7e5e146101a05780635df45946146101b3575b600080fd5b61014f61014a3660046133ba565b610371565b6040805192151583529015156020830152015b60405180910390f35b61017e610179366004613420565b6104fb565b604051610162919061343d565b61019e610199366004613420565b6109ca565b005b61019e6101ae366004613498565b6109de565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610162565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b7f00000000000000000000000000000000000000000000000000000000000000006101da565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b61027961027436600461376b565b610b1a565b60405161016292919061385e565b61019e611a31565b6033546001600160a01b03166101da565b61019e6102ae3660046138fe565b611a45565b61019e6102c1366004613420565b611b11565b61019e6102d43660046139a8565b611bd8565b6097546102e69060ff1681565b6040519015158152602001610162565b61019e610304366004613420565b611c2c565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b61017e611d40565b61019e610346366004613420565b612109565b6065546101da906001600160a01b031681565b61019e61036c3660046139f8565b61217f565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001878760000151886020015188600001516000600281106103b9576103b9613a6c565b60200201518951600160200201518a602001516000600281106103de576103de613a6c565b60200201518b602001516001600281106103fa576103fa613a6c565b602090810291909101518c518d8301516040516104579a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c61047a9190613a82565b90506104ed61049361048c88846124aa565b8690612541565b61049b6125d5565b6104e36104d4856104ce604080518082018252600080825260209182015281518083019092526001825260029082015290565b906124aa565b6104dd8c612695565b90612541565b886201d4c0612725565b909890975095505050505050565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa158015610567573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058b9190613aa4565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa1580156105f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061a9190613abd565b90506001600160c01b03811615806106b457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106af9190613ae6565b60ff16155b156106d057505060408051600081526020810190915292915050565b60006106e4826001600160c01b0316612949565b90506000805b82518110156107ba577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f584838151811061073457610734613a6c565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610778573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079c9190613aa4565b6107a69083613b1f565b9150806107b281613b37565b9150506106ea565b506000816001600160401b038111156107d5576107d5613247565b6040519080825280602002602001820160405280156107fe578160200160208202803683370190505b5090506000805b84518110156109bd57600085828151811061082257610822613a6c565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610897573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108bb9190613aa4565b905060005b818110156109a7576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015610935573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109599190613b67565b6000015186868151811061096f5761096f613a6c565b6001600160a01b03909216602092830291909101909101528461099181613b37565b955050808061099f90613b37565b9150506108c0565b50505080806109b590613b37565b915050610805565b5090979650505050505050565b6109d2612a0b565b6109db81612a65565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a609190613ba8565b6001600160a01b0316336001600160a01b031614610b115760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a4015b60405180910390fd5b6109db81612ace565b6040805180820190915260608082526020820152600084610b915760405162461bcd60e51b81526020600482015260376024820152600080516020613fd083398151915260448201527f7265733a20656d7074792071756f72756d20696e7075740000000000000000006064820152608401610b08565b60408301515185148015610ba9575060a08301515185145b8015610bb9575060c08301515185145b8015610bc9575060e08301515185145b610c335760405162461bcd60e51b81526020600482015260416024820152600080516020613fd083398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610b08565b82515160208401515114610cab5760405162461bcd60e51b815260206004820152604460248201819052600080516020613fd0833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610b08565b4363ffffffff168463ffffffff1610610d1a5760405162461bcd60e51b815260206004820152603c6024820152600080516020613fd083398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610b08565b6040805180820182526000808252602080830191909152825180840190935260608084529083015290866001600160401b03811115610d5b57610d5b613247565b604051908082528060200260200182016040528015610d84578160200160208202803683370190505b506020820152866001600160401b03811115610da257610da2613247565b604051908082528060200260200182016040528015610dcb578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b03811115610dff57610dff613247565b604051908082528060200260200182016040528015610e28578160200160208202803683370190505b5081526020860151516001600160401b03811115610e4857610e48613247565b604051908082528060200260200182016040528015610e71578160200160208202803683370190505b5081602001819052506000610f438a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e9190613ae6565b612b15565b905060005b8760200151518110156111de57610f8d88602001518281518110610f6e57610f6e613a6c565b6020026020010151805160009081526020918201519091526040902090565b83602001518281518110610fa357610fa3613a6c565b60209081029190910101528015611063576020830151610fc4600183613bc5565b81518110610fd457610fd4613a6c565b602002602001015160001c83602001518281518110610ff557610ff5613a6c565b602002602001015160001c11611063576040805162461bcd60e51b8152602060048201526024810191909152600080516020613fd083398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610b08565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec6351846020015183815181106110a8576110a8613a6c565b60200260200101518b8b6000015185815181106110c7576110c7613a6c565b60200260200101516040518463ffffffff1660e01b81526004016111049392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015611121573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111459190613abd565b6001600160c01b03168360000151828151811061116457611164613a6c565b6020026020010181815250506111ca61048c61119e848660000151858151811061119057611190613a6c565b602002602001015116612ba8565b8a6020015184815181106111b4576111b4613a6c565b6020026020010151612bd390919063ffffffff16565b9450806111d681613b37565b915050610f48565b50506111e983612cb7565b60975490935060ff16600081611200576000611282565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561125e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112829190613aa4565b905060005b8a8110156119005782156113e2578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c428f8f868181106112de576112de613a6c565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa15801561131e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113429190613aa4565b61134c9190613b1f565b116113e25760405162461bcd60e51b81526020600482015260666024820152600080516020613fd083398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610b08565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8d8d8481811061142357611423613a6c565b9050013560f81c60f81b60f81c8c8c60a00151858151811061144757611447613a6c565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa1580156114a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c79190613bdc565b6001600160401b0319166114ea8a604001518381518110610f6e57610f6e613a6c565b67ffffffffffffffff1916146115865760405162461bcd60e51b81526020600482015260616024820152600080516020613fd083398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610b08565b6115b68960400151828151811061159f5761159f613a6c565b60200260200101518761254190919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568d8d848181106115f9576115f9613a6c565b9050013560f81c60f81b60f81c8c8c60c00151858151811061161d5761161d613a6c565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015611679573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169d9190613c07565b856020015182815181106116b3576116b3613a6c565b6001600160601b039092166020928302919091018201528501518051829081106116df576116df613a6c565b6020026020010151856000015182815181106116fd576116fd613a6c565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a60200151518110156118eb576117758660000151828151811061174757611747613a6c565b60200260200101518f8f8681811061176157611761613a6c565b600192013560f81c9290921c811614919050565b156118d9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8f8f868181106117bb576117bb613a6c565b9050013560f81c60f81b60f81c8e896020015185815181106117df576117df613a6c565b60200260200101518f60e0015188815181106117fd576117fd613a6c565b6020026020010151878151811061181657611816613a6c565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa15801561187a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189e9190613c07565b87518051859081106118b2576118b2613a6c565b602002602001018181516118c69190613c24565b6001600160601b03169052506001909101905b806118e381613b37565b915050611721565b505080806118f890613b37565b915050611287565b50505060008061191a8c868a606001518b60800151610371565b915091508161198b5760405162461bcd60e51b81526020600482015260436024820152600080516020613fd083398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610b08565b806119ec5760405162461bcd60e51b81526020600482015260396024820152600080516020613fd083398151915260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610b08565b50506000878260200151604051602001611a07929190613c4c565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b611a39612a0b565b611a436000612d52565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611a8d5760405162461bcd60e51b8152600401610b0890613c94565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d90611adb9085908590600401613d59565b600060405180830381600087803b158015611af557600080fd5b505af1158015611b09573d6000803e3d6000fd5b505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b595760405162461bcd60e51b8152600401610b0890613c94565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b158015611bbd57600080fd5b505af1158015611bd1573d6000803e3d6000fd5b5050505050565b611be0612a0b565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb35590611ba3908490600401613da4565b600054610100900460ff1615808015611c4c5750600054600160ff909116105b80611c665750303b158015611c66575060005460ff166001145b611cc95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b08565b6000805460ff191660011790558015611cec576000805461ff0019166101001790555b611cf68283612da4565b8015611d3c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611da2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc69190613ae6565b60ff16905080611de457505060408051600081526020810190915290565b6000805b82811015611e9957604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015611e57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7b9190613aa4565b611e859083613b1f565b915080611e9181613b37565b915050611de8565b506000816001600160401b03811115611eb457611eb4613247565b604051908082528060200260200182016040528015611edd578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f669190613ae6565b60ff168110156120ff57604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015611fda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ffe9190613aa4565b905060005b818110156120ea576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015612078573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209c9190613b67565b600001518585815181106120b2576120b2613a6c565b6001600160a01b0390921660209283029190910190910152836120d481613b37565b94505080806120e290613b37565b915050612003565b505080806120f790613b37565b915050611ee4565b5090949350505050565b612111612a0b565b6001600160a01b0381166121765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b08565b6109db81612d52565b612187612e21565b60005b8181101561245b578282828181106121a4576121a4613a6c565b90506020028101906121b69190613dbe565b6121c7906040810190602001613420565b6001600160a01b03166323b872dd33308686868181106121e9576121e9613a6c565b90506020028101906121fb9190613dbe565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152013560448201526064016020604051808303816000875af1158015612252573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122769190613de9565b50600083838381811061228b5761228b613a6c565b905060200281019061229d9190613dbe565b6122ae906040810190602001613420565b604051636eb1769f60e11b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063dd62ed3e90604401602060405180830381865afa15801561231c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123409190613aa4565b905083838381811061235457612354613a6c565b90506020028101906123669190613dbe565b612377906040810190602001613420565b6001600160a01b031663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000838787878181106123b9576123b9613a6c565b90506020028101906123cb9190613dbe565b604001356123d99190613b1f565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612424573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124489190613de9565b50508061245490613b37565b905061218a565b5060405163fce36c7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fce36c7d90611adb9085908590600401613e61565b60408051808201909152600080825260208201526124c661316d565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156124f9576124fb565bfe5b50806125395760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610b08565b505092915050565b604080518082019091526000808252602082015261255d61318b565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156124f95750806125395760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610b08565b6125dd6131a9565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820190915260008082526020820152600080806126c5600080516020613fb083398151915286613a82565b90505b6126d181612eb6565b9093509150600080516020613fb083398151915282830983141561270b576040805180820190915290815260208101919091529392505050565b600080516020613fb08339815191526001820890506126c8565b6040805180820182528681526020808201869052825180840190935286835282018490526000918291906127576131ce565b60005b600281101561291c576000612770826006613f6e565b905084826002811061278457612784613a6c565b60200201515183612796836000613b1f565b600c81106127a6576127a6613a6c565b60200201528482600281106127bd576127bd613a6c565b602002015160200151838260016127d49190613b1f565b600c81106127e4576127e4613a6c565b60200201528382600281106127fb576127fb613a6c565b602002015151518361280e836002613b1f565b600c811061281e5761281e613a6c565b602002015283826002811061283557612835613a6c565b602002015151600160200201518361284e836003613b1f565b600c811061285e5761285e613a6c565b602002015283826002811061287557612875613a6c565b60200201516020015160006002811061289057612890613a6c565b6020020151836128a1836004613b1f565b600c81106128b1576128b1613a6c565b60200201528382600281106128c8576128c8613a6c565b6020020151602001516001600281106128e3576128e3613a6c565b6020020151836128f4836005613b1f565b600c811061290457612904613a6c565b6020020152508061291481613b37565b91505061275a565b506129256131ed565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b606060008061295784612ba8565b61ffff166001600160401b0381111561297257612972613247565b6040519080825280601f01601f19166020018201604052801561299c576020820181803683370190505b5090506000805b8251821080156129b4575061010081105b156120ff576001811b9350858416156129fb578060f81b8383815181106129dd576129dd613a6c565b60200101906001600160f81b031916908160001a9053508160010191505b612a0481613b37565b90506129a3565b6033546001600160a01b03163314611a435760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b08565b606554604080516001600160a01b03928316815291831660208301527fe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6097805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b600080612b2184612f38565b9050808360ff166001901b11612b9f5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610b08565b90505b92915050565b6000805b8215612ba257612bbd600184613bc5565b9092169180612bcb81613f8d565b915050612bac565b60408051808201909152600080825260208201526102008261ffff1610612c2f5760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610b08565b8161ffff1660011415612c43575081612ba2565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff1610612cac57600161ffff871660ff83161c81161415612c8f57612c8c8484612541565b93505b612c998384612541565b92506201fffe600192831b169101612c5f565b509195945050505050565b60408051808201909152600080825260208201528151158015612cdc57506020820151155b15612cfa575050604080518082019091526000808252602082015290565b604051806040016040528083600001518152602001600080516020613fb08339815191528460200151612d2d9190613a82565b612d4590600080516020613fb0833981519152613bc5565b905292915050565b919050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16612e0f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610b08565b612e1882612d52565b611d3c81612a65565b6065546001600160a01b03163314611a435760405162461bcd60e51b815260206004820152604c60248201527f536572766963654d616e61676572426173652e6f6e6c7952657761726473496e60448201527f69746961746f723a2063616c6c6572206973206e6f742074686520726577617260648201526b32399034b734ba34b0ba37b960a11b608482015260a401610b08565b60008080600080516020613fb08339815191526003600080516020613fb083398151915286600080516020613fb0833981519152888909090890506000612f2c827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020613fb08339815191526130c5565b91959194509092505050565b600061010082511115612fc15760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610b08565b8151612fcf57506000919050565b60008083600081518110612fe557612fe5613a6c565b0160200151600160f89190911c81901b92505b84518110156130bc5784818151811061301357613013613a6c565b0160200151600160f89190911c1b91508282116130a85760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610b08565b918117916130b581613b37565b9050612ff8565b50909392505050565b6000806130d06131ed565b6130d861320b565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280156124f95750826131625760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610b08565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806131bc613229565b81526020016131c9613229565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561327f5761327f613247565b60405290565b60405161010081016001600160401b038111828210171561327f5761327f613247565b604051606081016001600160401b038111828210171561327f5761327f613247565b604051601f8201601f191681016001600160401b03811182821017156132f2576132f2613247565b604052919050565b60006040828403121561330c57600080fd5b61331461325d565b9050813581526020820135602082015292915050565b600082601f83011261333b57600080fd5b61334361325d565b80604084018581111561335557600080fd5b845b8181101561336f578035845260209384019301613357565b509095945050505050565b60006080828403121561338c57600080fd5b61339461325d565b90506133a0838361332a565b81526133af836040840161332a565b602082015292915050565b60008060008061012085870312156133d157600080fd5b843593506133e286602087016132fa565b92506133f1866060870161337a565b91506134008660e087016132fa565b905092959194509250565b6001600160a01b03811681146109db57600080fd5b60006020828403121561343257600080fd5b8135612b9f8161340b565b6020808252825182820181905260009190848201906040850190845b8181101561347e5783516001600160a01b031683529284019291840191600101613459565b50909695505050505050565b80151581146109db57600080fd5b6000602082840312156134aa57600080fd5b8135612b9f8161348a565b803563ffffffff81168114612d4d57600080fd5b60006001600160401b038211156134e2576134e2613247565b5060051b60200190565b600082601f8301126134fd57600080fd5b8135602061351261350d836134c9565b6132ca565b82815260059290921b8401810191818101908684111561353157600080fd5b8286015b8481101561355357613546816134b5565b8352918301918301613535565b509695505050505050565b600082601f83011261356f57600080fd5b8135602061357f61350d836134c9565b82815260069290921b8401810191818101908684111561359e57600080fd5b8286015b84811015613553576135b488826132fa565b8352918301916040016135a2565b600082601f8301126135d357600080fd5b813560206135e361350d836134c9565b82815260059290921b8401810191818101908684111561360257600080fd5b8286015b848110156135535780356001600160401b038111156136255760008081fd5b6136338986838b01016134ec565b845250918301918301613606565b6000610180828403121561365457600080fd5b61365c613285565b905081356001600160401b038082111561367557600080fd5b613681858386016134ec565b8352602084013591508082111561369757600080fd5b6136a38583860161355e565b602084015260408401359150808211156136bc57600080fd5b6136c88583860161355e565b60408401526136da856060860161337a565b60608401526136ec8560e086016132fa565b608084015261012084013591508082111561370657600080fd5b613712858386016134ec565b60a084015261014084013591508082111561372c57600080fd5b613738858386016134ec565b60c084015261016084013591508082111561375257600080fd5b5061375f848285016135c2565b60e08301525092915050565b60008060008060006080868803121561378357600080fd5b8535945060208601356001600160401b03808211156137a157600080fd5b818801915088601f8301126137b557600080fd5b8135818111156137c457600080fd5b8960208285010111156137d657600080fd5b60208301965094506137ea604089016134b5565b9350606088013591508082111561380057600080fd5b5061380d88828901613641565b9150509295509295909350565b600081518084526020808501945080840160005b838110156138535781516001600160601b03168752958201959082019060010161382e565b509495945050505050565b6040815260008351604080840152613879608084018261381a565b90506020850151603f19848303016060850152613896828261381a565b925050508260208301529392505050565b60006001600160401b038311156138c0576138c0613247565b6138d3601f8401601f19166020016132ca565b90508281528383830111156138e757600080fd5b828260208301376000602084830101529392505050565b6000806040838503121561391157600080fd5b823561391c8161340b565b915060208301356001600160401b038082111561393857600080fd5b908401906060828703121561394c57600080fd5b6139546132a8565b82358281111561396357600080fd5b83019150601f8201871361397657600080fd5b613985878335602085016138a7565b815260208301356020820152604083013560408201528093505050509250929050565b6000602082840312156139ba57600080fd5b81356001600160401b038111156139d057600080fd5b8201601f810184136139e157600080fd5b6139f0848235602084016138a7565b949350505050565b60008060208385031215613a0b57600080fd5b82356001600160401b0380821115613a2257600080fd5b818501915085601f830112613a3657600080fd5b813581811115613a4557600080fd5b8660208260051b8501011115613a5a57600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052603260045260246000fd5b600082613a9f57634e487b7160e01b600052601260045260246000fd5b500690565b600060208284031215613ab657600080fd5b5051919050565b600060208284031215613acf57600080fd5b81516001600160c01b0381168114612b9f57600080fd5b600060208284031215613af857600080fd5b815160ff81168114612b9f57600080fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115613b3257613b32613b09565b500190565b6000600019821415613b4b57613b4b613b09565b5060010190565b6001600160601b03811681146109db57600080fd5b600060408284031215613b7957600080fd5b613b8161325d565b8251613b8c8161340b565b81526020830151613b9c81613b52565b60208201529392505050565b600060208284031215613bba57600080fd5b8151612b9f8161340b565b600082821015613bd757613bd7613b09565b500390565b600060208284031215613bee57600080fd5b815167ffffffffffffffff1981168114612b9f57600080fd5b600060208284031215613c1957600080fd5b8151612b9f81613b52565b60006001600160601b0383811690831681811015613c4457613c44613b09565b039392505050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b83811015613c8757815185529382019390820190600101613c6b565b5092979650505050505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b81811015613d3257602081850181015186830182015201613d16565b81811115613d44576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b0383168152604060208201526000825160606040840152613d8360a0840182613d0c565b90506020840151606084015260408401516080840152809150509392505050565b602081526000613db76020830184613d0c565b9392505050565b60008235609e19833603018112613dd457600080fd5b9190910192915050565b8035612d4d8161340b565b600060208284031215613dfb57600080fd5b8151612b9f8161348a565b8183526000602080850194508260005b85811015613853578135613e298161340b565b6001600160a01b0316875281830135613e4181613b52565b6001600160601b0316878401526040968701969190910190600101613e16565b60208082528181018390526000906040808401600586901b8501820187855b88811015613f6057878303603f190184528135368b9003609e19018112613ea657600080fd5b8a0160a0813536839003601e19018112613ebf57600080fd5b820180356001600160401b03811115613ed757600080fd5b8060061b3603841315613ee957600080fd5b828752613efb838801828c8501613e06565b92505050613f0a888301613dde565b6001600160a01b03168886015281870135878601526060613f2c8184016134b5565b63ffffffff16908601526080613f438382016134b5565b63ffffffff16950194909452509285019290850190600101613e80565b509098975050505050505050565b6000816000190483118215151615613f8857613f88613b09565b500290565b600061ffff80831681811415613fa557613fa5613b09565b600101939250505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47424c535369676e6174757265436865636b65722e636865636b5369676e617475a264697066735822122004d14b0c67491c6f81fc686090c2b801587e5f7717760407a276dc8b517e6fc064736f6c634300080c0033608060405234801561001057600080fd5b5060405161077838038061077883398101604081905261002f91610263565b60005b82518110156100775761006583828151811061005057610050610339565b6020026020010151600161008860201b60201c565b8061006f8161034f565b915050610032565b506100818161015a565b5050610378565b6001600160a01b0382166100f95760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b60648201526084015b60405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101c85760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b60648201526084016100f0565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461025e57600080fd5b919050565b6000806040838503121561027657600080fd5b82516001600160401b038082111561028d57600080fd5b818501915085601f8301126102a157600080fd5b81516020828211156102b5576102b5610231565b8160051b604051601f19603f830116810181811086821117156102da576102da610231565b6040529283528183019350848101820192898411156102f857600080fd5b948201945b8386101561031d5761030e86610247565b855294820194938201936102fd565b965061032c9050878201610247565b9450505050509250929050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561037157634e487b7160e01b600052601160045260246000fd5b5060010190565b6103f1806103876000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea264697066735822122027e896eed5afe944d6cc172aef72e26108db4cb82871c29ee297686046c2ee4d64736f6c634300080c0033608060405234801561001057600080fd5b50611e03806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806331b36bd9146100675780633563b0d1146100905780634d2b57fe146100b05780634f739f74146100d05780635c155662146100f0578063cefdc1d414610110575b600080fd5b61007a6100753660046113fa565b610131565b60405161008791906114e8565b60405180910390f35b6100a361009e366004611524565b61024d565b604051610087919061167f565b6100c36100be3660046116f8565b6106e3565b6040516100879190611747565b6100e36100de3660046117df565b6107f8565b60405161008791906118d7565b6101036100fe366004611992565b610f22565b60405161008791906119f5565b61012361011e366004611a2d565b6110ea565b604051610087929190611a64565b606081516001600160401b0381111561014c5761014c611391565b604051908082528060200260200182016040528015610175578160200160208202803683370190505b50905060005b825181101561024657836001600160a01b03166313542a4e8483815181106101a5576101a5611a85565b60200260200101516040518263ffffffff1660e01b81526004016101d891906001600160a01b0391909116815260200190565b602060405180830381865afa1580156101f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102199190611a9b565b82828151811061022b5761022b611a85565b602090810291909101015261023f81611aca565b905061017b565b5092915050565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561028f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b39190611ae5565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103199190611ae5565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa15801561035b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037f9190611ae5565b9050600086516001600160401b0381111561039c5761039c611391565b6040519080825280602002602001820160405280156103cf57816020015b60608152602001906001900390816103ba5790505b50905060005b87518110156106d75760008882815181106103f2576103f2611a85565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa158015610453573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261047b9190810190611b02565b905080516001600160401b0381111561049657610496611391565b6040519080825280602002602001820160405280156104e157816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816104b45790505b508484815181106104f4576104f4611a85565b602002602001018190525060005b81518110156106c1576040518060600160405280876001600160a01b03166347b314e885858151811061053757610537611a85565b60200260200101516040518263ffffffff1660e01b815260040161055d91815260200190565b602060405180830381865afa15801561057a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059e9190611ae5565b6001600160a01b031681526020018383815181106105be576105be611a85565b60200260200101518152602001896001600160a01b031663fa28c6278585815181106105ec576105ec611a85565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa158015610648573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066c9190611b92565b6001600160601b031681525085858151811061068a5761068a611a85565b602002602001015182815181106106a3576106a3611a85565b602002602001018190525080806106b990611aca565b915050610502565b50505080806106cf90611aca565b9150506103d5565b50979650505050505050565b606081516001600160401b038111156106fe576106fe611391565b604051908082528060200260200182016040528015610727578160200160208202803683370190505b50905060005b825181101561024657836001600160a01b031663296bb06484838151811061075757610757611a85565b60200260200101516040518263ffffffff1660e01b815260040161077d91815260200190565b602060405180830381865afa15801561079a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107be9190611ae5565b8282815181106107d0576107d0611a85565b6001600160a01b03909216602092830291909101909101526107f181611aca565b905061072d565b6108236040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610863573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108879190611ae5565b90506108b46040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e906108e4908b9089908990600401611bbb565b600060405180830381865afa158015610901573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109299190810190611c05565b81526040516340e03a8160e11b81526001600160a01b038316906381c075029061095b908b908b908b90600401611cbc565b600060405180830381865afa158015610978573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109a09190810190611c05565b6040820152856001600160401b038111156109bd576109bd611391565b6040519080825280602002602001820160405280156109f057816020015b60608152602001906001900390816109db5790505b50606082015260005b60ff8116871115610e33576000856001600160401b03811115610a1e57610a1e611391565b604051908082528060200260200182016040528015610a47578160200160208202803683370190505b5083606001518360ff1681518110610a6157610a61611a85565b602002602001018190525060005b86811015610d335760008c6001600160a01b03166304ec63518a8a85818110610a9a57610a9a611a85565b905060200201358e88600001518681518110610ab857610ab8611a85565b60200260200101516040518463ffffffff1660e01b8152600401610af59392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610b12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b369190611ce5565b90506001600160c01b038116610bde5760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff16818110610bf357610bf3611a85565b6001600160c01b03841692013560f81c9190911c600190811614159050610d2057856001600160a01b031663dd9846b98a8a85818110610c3557610c35611a85565b905060200201358d8d8860ff16818110610c5157610c51611a85565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015610ca7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccb9190611d0e565b85606001518560ff1681518110610ce457610ce4611a85565b60200260200101518481518110610cfd57610cfd611a85565b63ffffffff9092166020928302919091019091015282610d1c81611aca565b9350505b5080610d2b81611aca565b915050610a6f565b506000816001600160401b03811115610d4e57610d4e611391565b604051908082528060200260200182016040528015610d77578160200160208202803683370190505b50905060005b82811015610df85784606001518460ff1681518110610d9e57610d9e611a85565b60200260200101518181518110610db757610db7611a85565b6020026020010151828281518110610dd157610dd1611a85565b63ffffffff9092166020928302919091019091015280610df081611aca565b915050610d7d565b508084606001518460ff1681518110610e1357610e13611a85565b602002602001018190525050508080610e2b90611d2b565b9150506109f9565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e989190611ae5565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610ecb908b908b908e90600401611d4b565b600060405180830381865afa158015610ee8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f109190810190611c05565b60208301525098975050505050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610f54929190611d75565b600060405180830381865afa158015610f71573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f999190810190611c05565b9050600084516001600160401b03811115610fb657610fb6611391565b604051908082528060200260200182016040528015610fdf578160200160208202803683370190505b50905060005b85518110156110e057866001600160a01b03166304ec635187838151811061100f5761100f611a85565b60200260200101518786858151811061102a5761102a611a85565b60200260200101516040518463ffffffff1660e01b81526004016110679392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015611084573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a89190611ce5565b6001600160c01b03168282815181106110c3576110c3611a85565b6020908102919091010152806110d881611aca565b915050610fe5565b5095945050505050565b604080516001808252818301909252600091606091839160208083019080368337019050509050848160008151811061112557611125611a85565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e906111619088908690600401611d75565b600060405180830381865afa15801561117e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111a69190810190611c05565b6000815181106111b8576111b8611a85565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa158015611224573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112489190611ce5565b6001600160c01b03169050600061125e8261127c565b90508161126c8a838a61024d565b9550955050505050935093915050565b606060008061128a84611348565b61ffff166001600160401b038111156112a5576112a5611391565b6040519080825280601f01601f1916602001820160405280156112cf576020820181803683370190505b5090506000805b8251821080156112e7575061010081105b1561133e576001811b93508584161561132e578060f81b83838151811061131057611310611a85565b60200101906001600160f81b031916908160001a9053508160010191505b61133781611aca565b90506112d6565b5090949350505050565b6000805b82156113735761135d600184611d94565b909216918061136b81611dab565b91505061134c565b92915050565b6001600160a01b038116811461138e57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156113cf576113cf611391565b604052919050565b60006001600160401b038211156113f0576113f0611391565b5060051b60200190565b6000806040838503121561140d57600080fd5b823561141881611379565b91506020838101356001600160401b0381111561143457600080fd5b8401601f8101861361144557600080fd5b8035611458611453826113d7565b6113a7565b81815260059190911b8201830190838101908883111561147757600080fd5b928401925b8284101561149e57833561148f81611379565b8252928401929084019061147c565b80955050505050509250929050565b600081518084526020808501945080840160005b838110156114dd578151875295820195908201906001016114c1565b509495945050505050565b6020815260006114fb60208301846114ad565b9392505050565b63ffffffff8116811461138e57600080fd5b803561151f81611502565b919050565b60008060006060848603121561153957600080fd5b833561154481611379565b92506020848101356001600160401b038082111561156157600080fd5b818701915087601f83011261157557600080fd5b81358181111561158757611587611391565b611599601f8201601f191685016113a7565b915080825288848285010111156115af57600080fd5b80848401858401376000848284010152508094505050506115d260408501611514565b90509250925092565b600081518084526020808501808196508360051b810191508286016000805b86811015611671578385038a52825180518087529087019087870190845b8181101561165c57835180516001600160a01b031684528a8101518b8501526040908101516001600160601b03169084015292890192606090920191600101611618565b50509a87019a955050918501916001016115fa565b509298975050505050505050565b6020815260006114fb60208301846115db565b600082601f8301126116a357600080fd5b813560206116b3611453836113d7565b82815260059290921b840181019181810190868411156116d257600080fd5b8286015b848110156116ed57803583529183019183016116d6565b509695505050505050565b6000806040838503121561170b57600080fd5b823561171681611379565b915060208301356001600160401b0381111561173157600080fd5b61173d85828601611692565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b818110156117885783516001600160a01b031683529284019291840191600101611763565b50909695505050505050565b60008083601f8401126117a657600080fd5b5081356001600160401b038111156117bd57600080fd5b6020830191508360208260051b85010111156117d857600080fd5b9250929050565b600080600080600080608087890312156117f857600080fd5b863561180381611379565b9550602087013561181381611502565b945060408701356001600160401b038082111561182f57600080fd5b818901915089601f83011261184357600080fd5b81358181111561185257600080fd5b8a602082850101111561186457600080fd5b60208301965080955050606089013591508082111561188257600080fd5b5061188f89828a01611794565b979a9699509497509295939492505050565b600081518084526020808501945080840160005b838110156114dd57815163ffffffff16875295820195908201906001016118b5565b6000602080835283516080828501526118f360a08501826118a1565b905081850151601f198086840301604087015261191083836118a1565b9250604087015191508086840301606087015261192d83836118a1565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b8281101561198457848783030184526119728287516118a1565b95880195938801939150600101611958565b509998505050505050505050565b6000806000606084860312156119a757600080fd5b83356119b281611379565b925060208401356001600160401b038111156119cd57600080fd5b6119d986828701611692565b92505060408401356119ea81611502565b809150509250925092565b6020808252825182820181905260009190848201906040850190845b8181101561178857835183529284019291840191600101611a11565b600080600060608486031215611a4257600080fd5b8335611a4d81611379565b92506020840135915060408401356119ea81611502565b828152604060208201526000611a7d60408301846115db565b949350505050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611aad57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000600019821415611ade57611ade611ab4565b5060010190565b600060208284031215611af757600080fd5b81516114fb81611379565b60006020808385031215611b1557600080fd5b82516001600160401b03811115611b2b57600080fd5b8301601f81018513611b3c57600080fd5b8051611b4a611453826113d7565b81815260059190911b82018301908381019087831115611b6957600080fd5b928401925b82841015611b8757835182529284019290840190611b6e565b979650505050505050565b600060208284031215611ba457600080fd5b81516001600160601b03811681146114fb57600080fd5b63ffffffff84168152604060208201819052810182905260006001600160fb1b03831115611be857600080fd5b8260051b8085606085013760009201606001918252509392505050565b60006020808385031215611c1857600080fd5b82516001600160401b03811115611c2e57600080fd5b8301601f81018513611c3f57600080fd5b8051611c4d611453826113d7565b81815260059190911b82018301908381019087831115611c6c57600080fd5b928401925b82841015611b87578351611c8481611502565b82529284019290840190611c71565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff84168152604060208201526000611cdc604083018486611c93565b95945050505050565b600060208284031215611cf757600080fd5b81516001600160c01b03811681146114fb57600080fd5b600060208284031215611d2057600080fd5b81516114fb81611502565b600060ff821660ff811415611d4257611d42611ab4565b60010192915050565b604081526000611d5f604083018587611c93565b905063ffffffff83166020830152949350505050565b63ffffffff83168152604060208201526000611a7d60408301846114ad565b600082821015611da657611da6611ab4565b500390565b600061ffff80831681811415611dc357611dc3611ab4565b600101939250505056fea2646970667358221220f5eda3f040e501199d72cb503d0f2436742d1a0c7e5bffadd7a834d6274bf34b64736f6c634300080c003360a06040523480156200001157600080fd5b506040516200203538038062002035833981016040819052620000349162000116565b6001600160a01b038116608052806200004c62000054565b505062000148565b600054610100900460ff1615620000c15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000114576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b608051611eca6200016b6000396000818161030f0152610fd60152611eca6000f3fe608060405234801561001057600080fd5b50600436106101155760003560e01c80636d14a987116100a2578063bf79ce5811610071578063bf79ce58146103cc578063d5254a8c146103df578063de29fac0146103ff578063e8bb9ae61461041f578063f4e24fe51461044857600080fd5b80636d14a9871461030a5780637916cea6146103315780637ff81a8714610372578063a3db80e2146103a557600080fd5b80633fb27952116100e95780633fb27952146101df57806347b314e8146101f25780635f61a88414610233578063605747d51461028f57806368bccaac146102dd57600080fd5b8062a1f4cb1461011a57806313542a4e1461015b57806326d941f214610192578063377ed99d146101a7575b600080fd5b6101416101283660046118b7565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b6101846101693660046118b7565b6001600160a01b031660009081526001602052604090205490565b604051908152602001610152565b6101a56101a03660046118ea565b61045b565b005b6101ca6101b53660046118ea565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610152565b6101a56101ed366004611975565b610570565b61021b610200366004611a1b565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b6102826102413660046118ea565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b6040516101529190611a34565b6102a261029d366004611a4b565b6105ee565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610152565b6102f06102eb366004611a75565b610681565b60405167ffffffffffffffff199091168152602001610152565b61021b7f000000000000000000000000000000000000000000000000000000000000000081565b61034461033f366004611a4b565b61081c565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610152565b6103856103803660046118b7565b610867565b604080518351815260209384015193810193909352820152606001610152565b6101416103b33660046118ea565b6005602052600090815260409020805460019091015482565b6101846103da366004611abd565b610934565b6103f26103ed366004611b1a565b610d48565b6040516101529190611b92565b61018461040d3660046118b7565b60016020526000908152604090205481565b61021b61042d366004611a1b565b6002602052600090815260409020546001600160a01b031681565b6101a5610456366004611975565b610f62565b610463610fcb565b60ff8116600090815260046020526040902054156104e75760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b60648201526084015b60405180910390fd5b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b610578610fcb565b600061058383610867565b5090506105908282611082565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e836105d1856001600160a01b031660009081526001602052604090205490565b846040516105e193929190611bdc565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff86168252600490529190912080548390811061062b5761062b611c48565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff831660009081526004602052604081208054829190849081106106a8576106a8611c48565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b90910481169282019290925292508516101561076f5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e74000060648201526084016104de565b604081015163ffffffff1615806107955750806040015163ffffffff168463ffffffff16105b6108135760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a4016104de565b51949350505050565b6004602052816000526040600020818154811061083857600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b03821660008181526003602090815260408083208151808301835281548152600191820154818501529484529091528120549091908061092a5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f742072656769737465726564000060648201526084016104de565b9094909350915050565b600061093e610fcb565b600061096c61095536869003860160408701611c5e565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb58114156109f4576040805162461bcd60e51b8152602060048201526024810191909152600080516020611e7583398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b657960648201526084016104de565b6001600160a01b03851660009081526001602052604090205415610a7e5760405162461bcd60e51b81526020600482015260476024820152600080516020611e7583398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a4016104de565b6000818152600260205260409020546001600160a01b031615610b025760405162461bcd60e51b81526020600482015260426024820152600080516020611e7583398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a4016104de565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610b5b918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611c90565b6040516020818303038152906040528051906020012060001c610b7e9190611cdb565b9050610c18610bb7610ba283610b9c368a90038a0160408b01611c5e565b906112cd565b610bb136899003890189611c5e565b90611364565b610bbf6113f8565b610c01610bf285610b9c604080518082018252600080825260209182015281518083019092526001825260029082015290565b610bb1368a90038a018a611c5e565b610c13368a90038a0160808b01611d4d565b6114b8565b610cb35760405162461bcd60e51b815260206004820152606c6024820152600080516020611e7583398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c4016104de565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610d379160808a0190611daa565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610d6557610d65611905565b604051908082528060200260200182016040528015610d8e578160200160208202803683370190505b50905060005b84811015610f59576000868683818110610db057610db0611c48565b919091013560f81c6000818152600460205260409020549092509050801580610e13575060ff821660009081526004602052604081208054909190610df757610df7611c48565b600091825260209091200154600160c01b900463ffffffff1686105b15610ea05760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a4016104de565b805b8015610f435760ff831660009081526004602052604090208790610ec7600184611df4565b81548110610ed757610ed7611c48565b600091825260209091200154600160c01b900463ffffffff1611610f3157610f00600182611df4565b858581518110610f1257610f12611c48565b602002602001019063ffffffff16908163ffffffff1681525050610f43565b80610f3b81611e0b565b915050610ea2565b5050508080610f5190611e22565b915050610d94565b50949350505050565b610f6a610fcb565b6000610f7583610867565b509050610f8a82610f8583611725565b611082565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e836105d1856001600160a01b031660009081526001602052604090205490565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110805760405162461bcd60e51b815260206004820152604e60248201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460448201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460648201526d393c9031b7b7b93234b730ba37b960911b608482015260a4016104de565b565b604080518082019091526000808252602082015260005b83518110156112c75760008482815181106110b6576110b6611c48565b0160209081015160f81c60008181526004909252604090912054909150806111465760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f7420657869737400000060648201526084016104de565b60ff8216600090815260056020908152604091829020825180840190935280548352600101549082015261117a9086611364565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916111c39085611df4565b815481106111d3576111d3611c48565b600091825260209091200180549091504363ffffffff908116600160c01b9092041614156112145780546001600160c01b031916604083901c1781556112b0565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b5050505080806112bf90611e22565b915050611099565b50505050565b60408051808201909152600080825260208201526112e96117e4565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa905080801561131c5761131e565bfe5b508061135c5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016104de565b505092915050565b6040805180820190915260008082526020820152611380611802565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa905080801561131c57508061135c5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016104de565b611400611820565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820182528581526020808201859052825180840190935285835282018390526000916114e7611845565b60005b60028110156116ac576000611500826006611e3d565b905084826002811061151457611514611c48565b60200201515183611526836000611e5c565b600c811061153657611536611c48565b602002015284826002811061154d5761154d611c48565b602002015160200151838260016115649190611e5c565b600c811061157457611574611c48565b602002015283826002811061158b5761158b611c48565b602002015151518361159e836002611e5c565b600c81106115ae576115ae611c48565b60200201528382600281106115c5576115c5611c48565b60200201515160016020020151836115de836003611e5c565b600c81106115ee576115ee611c48565b602002015283826002811061160557611605611c48565b60200201516020015160006002811061162057611620611c48565b602002015183611631836004611e5c565b600c811061164157611641611c48565b602002015283826002811061165857611658611c48565b60200201516020015160016002811061167357611673611c48565b602002015183611684836005611e5c565b600c811061169457611694611c48565b602002015250806116a481611e22565b9150506114ea565b506116b5611864565b60006020826101808560086107d05a03fa905080801561131c5750806117155760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104de565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561174a57506020820151155b15611768575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117ad9190611cdb565b6117d7907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611df4565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280611833611882565b8152602001611840611882565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b03811681146117df57600080fd5b6000602082840312156118c957600080fd5b6118d2826118a0565b9392505050565b803560ff811681146117df57600080fd5b6000602082840312156118fc57600080fd5b6118d2826118d9565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561193e5761193e611905565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561196d5761196d611905565b604052919050565b6000806040838503121561198857600080fd5b611991836118a0565b915060208084013567ffffffffffffffff808211156119af57600080fd5b818601915086601f8301126119c357600080fd5b8135818111156119d5576119d5611905565b6119e7601f8201601f19168501611944565b915080825287848285010111156119fd57600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a2d57600080fd5b5035919050565b81518152602080830151908201526040810161067b565b60008060408385031215611a5e57600080fd5b611a67836118d9565b946020939093013593505050565b600080600060608486031215611a8a57600080fd5b611a93846118d9565b9250602084013563ffffffff81168114611aac57600080fd5b929592945050506040919091013590565b6000806000838503610160811215611ad457600080fd5b611add856118a0565b9350610100601f1982011215611af257600080fd5b602085019250604061011f1982011215611b0b57600080fd5b50610120840190509250925092565b600080600060408486031215611b2f57600080fd5b833567ffffffffffffffff80821115611b4757600080fd5b818601915086601f830112611b5b57600080fd5b813581811115611b6a57600080fd5b876020828501011115611b7c57600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611bd057835163ffffffff1683529284019291840191600101611bae565b50909695505050505050565b60018060a01b038416815260006020848184015260606040840152835180606085015260005b81811015611c1e57858101830151858201608001528201611c02565b81811115611c30576000608083870101525b50601f01601f19169290920160800195945050505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611c7057600080fd5b611c7861191b565b82358152602083013560208201528091505092915050565b8881528760208201528660408201528560608201526040856080830137600060c082016000815260408682375050610100810192909252610120820152610140019695505050505050565b600082611cf857634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611d0e57600080fd5b611d1661191b565b806040840185811115611d2857600080fd5b845b81811015611d42578035845260209384019301611d2a565b509095945050505050565b600060808284031215611d5f57600080fd5b6040516040810181811067ffffffffffffffff82111715611d8257611d82611905565b604052611d8f8484611cfd565b8152611d9e8460408501611cfd565b60208201529392505050565b823581526020808401359082015260c081016040838184013760808201600081526040808501823750600081529392505050565b634e487b7160e01b600052601160045260246000fd5b600082821015611e0657611e06611dde565b500390565b600081611e1a57611e1a611dde565b506000190190565b6000600019821415611e3657611e36611dde565b5060010190565b6000816000190483118215151615611e5757611e57611dde565b500290565b60008219821115611e6f57611e6f611dde565b50019056fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a2646970667358221220ca1b3198ddd9d622c9fe5e8a42fb3885da9ab1818a063d1bfd99cde5d97a14b564736f6c634300080c003360a060405234801561001057600080fd5b5060405161136138038061136183398101604081905261002f9161010c565b6001600160a01b0381166080528061004561004c565b505061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b60805161120361015e60003960008181610142015261085a01526112036000f3fe608060405234801561001057600080fd5b50600436106100b35760003560e01c8063890262451161007157806389026245146101b3578063a48bb0ac146101d3578063bd29b8cd146101e6578063caa3cd76146101f9578063e2e685801461020f578063f34109221461025557600080fd5b8062bff04d146100b857806312d1d74d146100e157806326d941f2146101155780632ed583e51461012a5780636d14a9871461013d5780638121906f1461017c575b600080fd5b6100cb6100c6366004610ebd565b610268565b6040516100d89190610f39565b60405180910390f35b6100f46100ef366004610fad565b61038a565b60408051825163ffffffff16815260209283015192810192909252016100d8565b610128610123366004610fe0565b6103d0565b005b6100f4610138366004610ffb565b6104b4565b6101647f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100d8565b61018f61018a366004610fe0565b61053a565b60408051825163ffffffff90811682526020938401511692810192909252016100d8565b6101c66101c1366004610fad565b610581565b6040516100d8919061103e565b61018f6101e1366004610fad565b6106eb565b6101286101f4366004610ebd565b610762565b610201600081565b6040519081526020016100d8565b61024061021d366004611076565b600160209081526000928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d8565b610240610263366004610fe0565b610830565b606061027261084f565b60008267ffffffffffffffff81111561028d5761028d6110a0565b6040519080825280602002602001820160405280156102b6578160200160208202803683370190505b50905060005b8381101561037f5760008585838181106102d8576102d86110b6565b919091013560f81c60008181526003602052604090205490925090508061031a5760405162461bcd60e51b8152600401610311906110cc565b60405180910390fd5b600061032583610905565b905061033c8984610337600185611137565b6109fe565b8085858151811061034f5761034f6110b6565b602002602001019063ffffffff16908163ffffffff168152505050505080806103779061115c565b9150506102bc565b5090505b9392505050565b60408051808201909152600080825260208201526103a88383610a88565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b6103d861084f565b60ff8116600090815260036020526040902054156104525760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b6064820152608401610311565b60ff166000908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091526000808252602082015260ff8416600090815260026020908152604080832063ffffffff80881685529252909120805490918416908110610501576105016110b6565b600091825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b604080518082019091526000808252602082015261055782610ae0565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b6060600061058f8484610b22565b905060008163ffffffff1667ffffffffffffffff8111156105b2576105b26110a0565b6040519080825280602002602001820160405280156105db578160200160208202803683370190505b50905060005b8263ffffffff168110156106e2576105fa868287610c57565b82828151811061060c5761060c6110b6565b6020026020010181815250506000801b82828151811061062e5761062e6110b6565b602002602001015114156106d05760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a401610311565b806106da8161115c565b9150506105e1565b50949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805463ffffffff8416908110610729576107296110b6565b60009182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b61076a61084f565b60005b8181101561082a576000838383818110610789576107896110b6565b919091013560f81c6000818152600360205260409020549092509050806107c25760405162461bcd60e51b8152600401610311906110cc565b60ff8216600090815260016020908152604080832089845290915281205463ffffffff16906107f084610d2e565b905060006107fe8583610d68565b9050808914610812576108128186856109fe565b505050505080806108229061115c565b91505061076d565b50505050565b600061083b82610ae0565b54600160201b900463ffffffff1692915050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109035760405162461bcd60e51b815260206004820152604d60248201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960448201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260648201526c3c9031b7b7b93234b730ba37b960991b608482015260a401610311565b565b60008061091183610ae0565b805490915060009061093190600160201b900463ffffffff166001611177565b905061093e848383610d92565b60ff841660009081526002602052604081209061095c600184611137565b63ffffffff1681526020810191909152604001600020546103835760ff8416600090815260026020526040812090610995600184611137565b63ffffffff908116825260208083019390935260409182016000908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b6000610a0a8383610a88565b9050610a1883838387610e32565b60ff83166000818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff8216600090815260026020908152604080832063ffffffff851684529091528120805490610ab960018361119f565b81548110610ac957610ac96110b6565b906000526020600020906002020191505092915050565b60ff81166000908152600360205260408120805490610b0060018361119f565b81548110610b1057610b106110b6565b90600052602060002001915050919050565b60ff8216600090815260036020526040812054805b8015610bca5760ff85166000908152600360205260408120610b5a60018461119f565b81548110610b6a57610b6a6110b6565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610bb7576020015192506103ca915050565b5080610bc2816111b6565b915050610b37565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a401610311565b60ff8316600090815260026020908152604080832063ffffffff86168452909152812054805b8015610d225760ff8616600090815260026020908152604080832063ffffffff891684529091528120610cb160018461119f565b81548110610cc157610cc16110b6565b600091825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610d0f57602001519250610383915050565b5080610d1a816111b6565b915050610c7d565b50600095945050505050565b600080610d3a83610ae0565b8054909150600090610d5b90600190600160201b900463ffffffff16611137565b9050610383848383610d92565b600080610d758484610a88565b6001810154909150610d8a8585846000610e32565b949350505050565b81544363ffffffff90811691161415610dc957815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83166000908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b81544363ffffffff90811691161415610e51576001820181905561082a565b60ff93909316600090815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b600080600060408486031215610ed257600080fd5b83359250602084013567ffffffffffffffff80821115610ef157600080fd5b818601915086601f830112610f0557600080fd5b813581811115610f1457600080fd5b876020828501011115610f2657600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f7757835163ffffffff1683529284019291840191600101610f55565b50909695505050505050565b803560ff81168114610f9457600080fd5b919050565b803563ffffffff81168114610f9457600080fd5b60008060408385031215610fc057600080fd5b610fc983610f83565b9150610fd760208401610f99565b90509250929050565b600060208284031215610ff257600080fd5b61038382610f83565b60008060006060848603121561101057600080fd5b61101984610f83565b925061102760208501610f99565b915061103560408501610f99565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f775783518352928401929184019160010161105a565b6000806040838503121561108957600080fd5b61109283610f83565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff8381169083168181101561115457611154611121565b039392505050565b600060001982141561117057611170611121565b5060010190565b600063ffffffff80831681851680830382111561119657611196611121565b01949350505050565b6000828210156111b1576111b1611121565b500390565b6000816111c5576111c5611121565b50600019019056fea26469706673582212200dd424985d748126cfecb042df9778973b6cadcf9f9b71b13b2ee065b53d26c464736f6c634300080c003360c06040523480156200001157600080fd5b50604051620033c8380380620033c8833981016040819052620000349162000065565b6001600160a01b0391821660a05216608052620000a4565b6001600160a01b03811681146200006257600080fd5b50565b600080604083850312156200007957600080fd5b825162000086816200004c565b602084015190925062000099816200004c565b809150509250929050565b60805160a0516132e9620000df6000396000818161037a01528181611a470152611b7901526000818161052901526118a801526132e96000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612803565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e36600461281e565b610597565b604051610217929190612848565b61025461024f36600461287f565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a3660046128fa565b610602565b005b61029461028f3660046129bb565b610860565b604051610217929190612a5a565b6102b56102b0366004612a7f565b610a78565b6040516102179190612aab565b61020d6102d0366004612803565b60ff1660009081526003602052604090205490565b61020d6102f3366004612a7f565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612a7f565b610b17565b61020d670de0b6b3a764000081565b61027f610345366004612bb4565b610b30565b61035d6103583660046129bb565b610e78565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc366004612c70565b610f17565b6040516102179190612cc2565b61039c6103fc36600461281e565b611157565b61041461040f366004612d00565b61118f565b6040516102179190612d33565b61043461042f36600461281e565b611227565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f36600461281e565b6112a1565b61027f610482366004612d7f565b611330565b61027f610495366004612da9565b611351565b6102546104a8366004612803565b6000602081905290815260409020546001600160601b031681565b61027f6104d1366004612e75565b6113c3565b6102546104e4366004612ec2565b6113df565b6102546104f7366004612803565b61145d565b61050f61050a366004612efe565b6114b0565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b610254610559366004612f3a565b6114c5565b61041461056c366004612a7f565b61155a565b61025461057f366004612efe565b61163f565b61027f610592366004612f7c565b6116a0565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b6000826105ec816117cb565b60006105f88585611847565b5095945050505050565b61060a611a45565b84610614816117cb565b838061068f576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f766964656460648201526084015b60405180910390fd5b8281146107045760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610686565b60ff87166000908152600360205260408120905b828110156108555785858281811061073257610732612fd9565b90506020020160208101906107479190612fef565b8289898481811061075a5761075a612fd9565b905060200201358154811061077157610771612fd9565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106107da576107da612fd9565b90506020020135815481106107f1576107f1612fd9565b6000918252602090912001546001600160a01b031688888581811061081857610818612fd9565b905060200201602081019061082d9190612fef565b60405161083b929190612848565b60405180910390a28061084d81613020565b915050610718565b505050505050505050565b60608061086b611b6e565b6000836001600160401b0381111561088557610885612b23565b6040519080825280602002602001820160405280156108ae578160200160208202803683370190505b5090506000846001600160401b038111156108cb576108cb612b23565b6040519080825280602002602001820160405280156108f4578160200160208202803683370190505b50905060005b85811015610a6a57600087878381811061091657610916612fd9565b919091013560f81c915061092b9050816117cb565b600080610938838d611847565b91509150806109d55760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610686565b60006109e28c8585611c21565b9050828786815181106109f7576109f7612fd9565b60200260200101906001600160601b031690816001600160601b031681525050610a218482611ea1565b868681518110610a3357610a33612fd9565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610a6290613020565b9150506108fa565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610b0a576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610ab1565b5050505090505b92915050565b600080610b24848461155a565b60400151949350505050565b610b38611a45565b81610b42816117cb565b815180610bb75760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610686565b60ff841660009081526003602090815260408083206004909252822090915b83811015610e6f578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610c1657610c16612fd9565b602002602001015181548110610c2e57610c2e612fd9565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610c8c57610c8c612fd9565b602002602001015181548110610ca457610ca4612fd9565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610ce49060019061303b565b81548110610cf457610cf4612fd9565b9060005260206000200183878381518110610d1157610d11612fd9565b602002602001015181548110610d2957610d29612fd9565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080610d7c57610d7c613052565b60008281526020812082016000199081019190915501905581548290610da49060019061303b565b81548110610db457610db4612fd9565b9060005260206000200160009054906101000a90046001600160a01b031682878381518110610de557610de5612fd9565b602002602001015181548110610dfd57610dfd612fd9565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081805480610e3b57610e3b613052565b600082815260209020810160001990810180546001600160a01b031916905501905580610e6781613020565b915050610bd6565b50505050505050565b6000610e82611b6e565b6000805b838110156105f8576000858583818110610ea257610ea2612fd9565b919091013560f81c9150610eb79050816117cb565b600080610ec4838b611847565b9150915080610ee65760009150600160ff84161b6001600160c01b0386161794505b6000610ef38a8585611c21565b9050610eff8482611ea1565b50505050508080610f0f90613020565b915050610e86565b60606000826001600160401b03811115610f3357610f33612b23565b604051908082528060200260200182016040528015610f5c578160200160208202803683370190505b50905060005b8381101561114c576000858583818110610f7e57610f7e612fd9565b919091013560f81c9150610f939050816117cb565b60ff81166000908152600160205260408120805463ffffffff8a169290610fbc57610fbc612fd9565b60009182526020909120015463ffffffff1611156110685760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610686565b60ff8116600090815260016020526040812054905b818110156111365760ff8316600090815260016020819052604090912063ffffffff8b16916110ac848661303b565b6110b6919061303b565b815481106110c6576110c6612fd9565b60009182526020909120015463ffffffff16116111245760016110e9828461303b565b6110f3919061303b565b85858151811061110557611105612fd9565b602002602001019063ffffffff16908163ffffffff1681525050611136565b8061112e81613020565b91505061107d565b505050808061114490613020565b915050610f62565b5090505b9392505050565b6004602052816000526040600020818154811061117357600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106111d4576111d4612fd9565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff8316600090815260036020526040902080548390811061125f5761125f612fd9565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260019052919091208054839081106112de576112de612fd9565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b611338611a45565b81611342816117cb565b61134c838361201b565b505050565b611359611b6e565b60005b818110156113bd57600083838381811061137857611378612fd9565b919091013560f81c915061138d9050816117cb565b600061139b86836000611c21565b90506113a78282611ea1565b50505080806113b590613020565b91505061135c565b50505050565b6113cb611a45565b816113d5816117cb565b61134c8383612084565b60ff8316600090815260016020526040812080548291908490811061140657611406612fd9565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610b2481856124c7565b60ff8116600090815260016020819052604082208054909161147e9161303b565b8154811061148e5761148e612fd9565b600091825260209091200154600160401b90046001600160601b031692915050565b60006114bd848484612641565b949350505050565b600082815260026020908152604080832060ff8816845290915281208054829190849081106114f6576114f6612fd9565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b9093049290921690820152905061154d81866124c7565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff871683528152848220548551938401865282845290830182905293820152909190816115b3579150610b119050565b600085815260026020908152604080832060ff8816845290915290206115da60018461303b565b815481106115ea576115ea612fd9565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610b11915050565b600083815260026020908152604080832060ff861684529091528120611666858585612641565b63ffffffff168154811061167c5761167c612fd9565b600091825260209091200154600160401b90046001600160601b0316949350505050565b6116a8611b6e565b60ff8316600090815260016020526040902054156117265760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610686565b6117308382612084565b61173a838361201b565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b60ff81166000908152600160205260409020546118445760405162461bcd60e51b815260206004820152603160248201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726044820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b6064820152608401610686565b50565b6000806000806118668660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016926390041347926118db928c9201613068565b600060405180830381865afa1580156118f8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261192091908101906130c7565b905060005b83811015611a115760ff8916600090815260036020526040902080548290811061195157611951612fd9565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b031690820152835190945083908390811061199f5761199f612fd9565b602002602001015111156119ff57670de0b6b3a764000083602001516001600160601b03168383815181106119d6576119d6612fd9565b60200260200101516119e89190613157565b6119f29190613176565b6119fc9086613198565b94505b80611a0981613020565b915050611925565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac791906131c3565b6001600160a01b0316336001600160a01b031614611b6c5760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60448201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746064820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608482015260a401610686565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b6c5760405162461bcd60e51b815260206004820152604c60248201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960448201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260648201526b3ca1b7b7b93234b730ba37b960a11b608482015260a401610686565b600083815260026020908152604080832060ff86168452909152812054819080611ce557600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055611e47565b600086815260026020908152604080832060ff891684529091528120611d0c60018461303b565b81548110611d1c57611d1c612fd9565b600091825260209091200180546001600160601b03600160401b909104811694509091508516831415611d555760009350505050611150565b80544363ffffffff90811691161415611d8f578054600160401b600160a01b031916600160401b6001600160601b03871602178155611e45565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a2611e9782856127a7565b9695505050505050565b60ff821660009081526001602081905260408220805491839190611ec5908461303b565b81548110611ed557611ed5612fd9565b9060005260206000200190508360001415611f045754600160401b90046001600160601b03169150610b119050565b8054600090611f2390600160401b90046001600160601b0316866127bf565b82549091504363ffffffff90811691161415611f60578154600160401b600160a01b031916600160401b6001600160601b03831602178255612012565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b60008151116120e95760405162461bcd60e51b8152602060048201526038602482015260008051602061329483398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610686565b805160ff83166000908152600360209081526040909120549061210c83836131e0565b111561217c5760405162461bcd60e51b8152602060048201526045602482015260008051602061329483398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610686565b60005b828110156124c05760005b61219482846131e0565b811015612275578482815181106121ad576121ad612fd9565b6020026020010151600001516001600160a01b0316600360008860ff1660ff16815260200190815260200160002082815481106121ec576121ec612fd9565b6000918252602090912001546001600160a01b031614156122635760405162461bcd60e51b815260206004820152603d602482015260008051602061329483398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610686565b8061226d81613020565b91505061218a565b50600084828151811061228a5761228a612fd9565b6020026020010151602001516001600160601b03161161230f5760405162461bcd60e51b8152602060048201526046602482015260008051602061329483398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610686565b60ff85166000908152600360205260409020845185908390811061233557612335612fd9565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff871682526004905260409020845185908390811061239a5761239a612fd9565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f54049086908490811061241157612411612fd9565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7585838151811061246e5761246e612fd9565b60200260200101516000015186848151811061248c5761248c612fd9565b6020026020010151602001516040516124a6929190612848565b60405180910390a2806124b881613020565b91505061217f565b5050505050565b816000015163ffffffff168163ffffffff16101561256c5760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610686565b602082015163ffffffff1615806125925750816020015163ffffffff168163ffffffff16105b61263d5760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610686565b5050565b600083815260026020908152604080832060ff86168452909152812054805b80156126e257600086815260026020908152604080832060ff89168452909152902063ffffffff85169061269560018461303b565b815481106126a5576126a5612fd9565b60009182526020909120015463ffffffff16116126d0576126c760018261303b565b92505050611150565b806126da816131f8565b915050612660565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610686565b60006111506001600160601b0380851690841661320f565b6000808212156127e3576127d28261324e565b6127dc908461326b565b9050610b11565b6127dc8284613198565b803560ff811681146127fe57600080fd5b919050565b60006020828403121561281557600080fd5b611150826127ed565b6000806040838503121561283157600080fd5b61283a836127ed565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b038116811461184457600080fd5b6000806040838503121561289257600080fd5b61289b836127ed565b915060208301356128ab8161286a565b809150509250929050565b60008083601f8401126128c857600080fd5b5081356001600160401b038111156128df57600080fd5b6020830191508360208260051b8501011115611a3e57600080fd5b60008060008060006060868803121561291257600080fd5b61291b866127ed565b945060208601356001600160401b038082111561293757600080fd5b61294389838a016128b6565b9096509450604088013591508082111561295c57600080fd5b50612969888289016128b6565b969995985093965092949392505050565b60008083601f84011261298c57600080fd5b5081356001600160401b038111156129a357600080fd5b602083019150836020828501011115611a3e57600080fd5b600080600080606085870312156129d157600080fd5b84356129dc8161286a565b93506020850135925060408501356001600160401b038111156129fe57600080fd5b612a0a8782880161297a565b95989497509550505050565b600081518084526020808501945080840160005b83811015612a4f5781516001600160601b031687529582019590820190600101612a2a565b509495945050505050565b604081526000612a6d6040830185612a16565b82810360208401526120128185612a16565b60008060408385031215612a9257600080fd5b82359150612aa2602084016127ed565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612b1757612b0483855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612ac7565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612b5b57612b5b612b23565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612b8957612b89612b23565b604052919050565b60006001600160401b03821115612baa57612baa612b23565b5060051b60200190565b60008060408385031215612bc757600080fd5b612bd0836127ed565b91506020808401356001600160401b03811115612bec57600080fd5b8401601f81018613612bfd57600080fd5b8035612c10612c0b82612b91565b612b61565b81815260059190911b82018301908381019088831115612c2f57600080fd5b928401925b82841015612c4d57833582529284019290840190612c34565b80955050505050509250929050565b803563ffffffff811681146127fe57600080fd5b600080600060408486031215612c8557600080fd5b612c8e84612c5c565b925060208401356001600160401b03811115612ca957600080fd5b612cb58682870161297a565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612b1757835163ffffffff1683529284019291840191600101612cde565b600080600060608486031215612d1557600080fd5b612d1e846127ed565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610b11565b80356001600160601b03811681146127fe57600080fd5b60008060408385031215612d9257600080fd5b612d9b836127ed565b9150612aa260208401612d68565b600080600060408486031215612dbe57600080fd5b8335925060208401356001600160401b03811115612ca957600080fd5b600082601f830112612dec57600080fd5b81356020612dfc612c0b83612b91565b82815260069290921b84018101918181019086841115612e1b57600080fd5b8286015b84811015612e6a5760408189031215612e385760008081fd5b612e40612b39565b8135612e4b8161286a565b8152612e58828601612d68565b81860152835291830191604001612e1f565b509695505050505050565b60008060408385031215612e8857600080fd5b612e91836127ed565b915060208301356001600160401b03811115612eac57600080fd5b612eb885828601612ddb565b9150509250929050565b600080600060608486031215612ed757600080fd5b612ee0846127ed565b9250612eee60208501612c5c565b9150604084013590509250925092565b600080600060608486031215612f1357600080fd5b83359250612f23602085016127ed565b9150612f3160408501612c5c565b90509250925092565b60008060008060808587031215612f5057600080fd5b612f59856127ed565b9350612f6760208601612c5c565b93969395505050506040820135916060013590565b600080600060608486031215612f9157600080fd5b612f9a846127ed565b9250612fa860208501612d68565b915060408401356001600160401b03811115612fc357600080fd5b612fcf86828701612ddb565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561300157600080fd5b61115082612d68565b634e487b7160e01b600052601160045260246000fd5b60006000198214156130345761303461300a565b5060010190565b60008282101561304d5761304d61300a565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b818110156130b957855485168352600195860195928401920161309b565b509098975050505050505050565b600060208083850312156130da57600080fd5b82516001600160401b038111156130f057600080fd5b8301601f8101851361310157600080fd5b805161310f612c0b82612b91565b81815260059190911b8201830190838101908783111561312e57600080fd5b928401925b8284101561314c57835182529284019290840190613133565b979650505050505050565b60008160001904831182151516156131715761317161300a565b500290565b60008261319357634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b038083168185168083038211156131ba576131ba61300a565b01949350505050565b6000602082840312156131d557600080fd5b81516111508161286a565b600082198211156131f3576131f361300a565b500190565b6000816132075761320761300a565b506000190190565b60008083128015600160ff1b85018412161561322d5761322d61300a565b6001600160ff1b03840183138116156132485761324861300a565b50500390565b6000600160ff1b8214156132645761326461300a565b5060000390565b60006001600160601b038381169083168181101561328b5761328b61300a565b03939250505056fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a264697066735822122055bf78a9addcfc53e668f5d4aa34693b1a33cd55facc1b2c53fbb2b06fa027ba64736f6c634300080c00336101c06040523480156200001257600080fd5b506040516200639938038062006399833981016040819052620000359162000254565b604080518082018252601681527f4156535265676973747279436f6f7264696e61746f720000000000000000000060208083019182528351808501909452600684526576302e302e3160d01b908401528151902060e08190527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a996101008190524660a05287938793879387939192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620001358184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c05261012052505050506001600160a01b039384166101405291831661018052821661016052166101a0526200016f62000179565b50505050620002bc565b600054610100900460ff1615620001e65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000239576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200025157600080fd5b50565b600080600080608085870312156200026b57600080fd5b845162000278816200023b565b60208601519094506200028b816200023b565b60408601519093506200029e816200023b565b6060860151909250620002b1816200023b565b939692955090935050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615fd5620003c4600039600081816106ab0152818161119d0152818161208501528181612eb50152818161376c0152613d440152600081816105f001528181612010015281816124b801528181612e35015281816136c3015281816139190152613cc30152600081816105b601528181610f380152818161204e01528181612db701528181612f9d01528181613013015281816136430152613dc00152600081816104fa01528181612d0d015261358b01526000613fc70152600061401601526000613ff101526000613f4a01526000613f7401526000613f9e0152615fd56000f3fe608060405234801561001057600080fd5b50600436106102d55760003560e01c80635df45946116101825780639feab859116100e9578063d72d8dd6116100a2578063e65797ad1161007c578063e65797ad14610798578063f2fde38b1461083b578063fabc1cbc1461084e578063fd39105a1461086157600080fd5b8063d72d8dd61461076a578063d75b4c8814610772578063dd8283f31461078557600080fd5b80639feab859146106cd578063a50857bf146106f4578063a96f783e14610707578063c391425e14610710578063ca0de88214610730578063ca4f2d971461075757600080fd5b8063871ef0491161013b578063871ef04914610640578063886f1195146106535780638da5cb5b1461066c5780639aa1653d146106745780639b5d177b146106935780639e9923c2146106a657600080fd5b80635df45946146105b15780636347c900146105d857806368304835146105eb5780636e3b17db14610612578063715018a61461062557806384ca52131461062d57600080fd5b8063249a0c42116102415780633c2a7f4c116101fa578063595c6a67116101d4578063595c6a671461056f5780635ac86ab7146105775780635b0b829f146105965780635c975abb146105a957600080fd5b80633c2a7f4c1461051c5780635140a5481461053c5780635865c60c1461054f57600080fd5b8063249a0c421461048957806328f61b31146104a9578063296bb064146104bc57806329d1e0c3146104cf5780632cdd1e86146104e25780633998fdd3146104f557600080fd5b806310d67a2f1161029357806310d67a2f1461039e578063125e0584146103b157806313542a4e146103d1578063136439dd146103fa5780631478851f1461040d5780631eb812da1461044057600080fd5b8062cf2ab5146102da57806303fd3492146102ef57806304ec635114610322578063054310e61461034d5780630cf4b767146103785780630d3f21341461038b575b600080fd5b6102ed6102e8366004614ac7565b61089d565b005b61030f6102fd366004614b08565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b610335610330366004614b33565b6109b3565b6040516001600160c01b039091168152602001610319565b609d54610360906001600160a01b031681565b6040516001600160a01b039091168152602001610319565b6102ed610386366004614c52565b610ba9565b6102ed610399366004614b08565b610c91565b6102ed6103ac366004614cc7565b610c9e565b61030f6103bf366004614cc7565b609f6020526000908152604090205481565b61030f6103df366004614cc7565b6001600160a01b031660009081526099602052604090205490565b6102ed610408366004614b08565b610d51565b61043061041b366004614b08565b609a6020526000908152604090205460ff1681565b6040519015158152602001610319565b61045361044e366004614ce4565b610e8e565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b031690820152606001610319565b61030f610497366004614d17565b609b6020526000908152604090205481565b609e54610360906001600160a01b031681565b6103606104ca366004614b08565b610f1f565b6102ed6104dd366004614cc7565b610fab565b6102ed6104f0366004614cc7565b610fbc565b6103607f000000000000000000000000000000000000000000000000000000000000000081565b61052f61052a366004614cc7565b610fcd565b6040516103199190614d32565b6102ed61054a366004614d8a565b61104c565b61056261055d366004614cc7565b61155d565b6040516103199190614e2d565b6102ed6115d1565b610430610585366004614d17565b6001805460ff9092161b9081161490565b6102ed6105a4366004614eb2565b61169d565b60015461030f565b6103607f000000000000000000000000000000000000000000000000000000000000000081565b6103606105e6366004614b08565b6116be565b6103607f000000000000000000000000000000000000000000000000000000000000000081565b6102ed610620366004614ee6565b6116e8565b6102ed6117fe565b61030f61063b366004614f9d565b611812565b61033561064e366004614b08565b61185c565b600054610360906201000090046001600160a01b031681565b610360611867565b6096546106819060ff1681565b60405160ff9091168152602001610319565b6102ed6106a1366004615136565b611880565b6103607f000000000000000000000000000000000000000000000000000000000000000081565b61030f7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6102ed61070236600461522f565b611bb8565b61030f60a05481565b61072361071e3660046152d7565b611d3c565b604051610319919061537c565b61030f7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6102ed6107653660046153c6565b611df5565b609c5461030f565b6102ed6107803660046154ac565b611e5c565b6102ed61079336600461565f565b611e6f565b6108076107a6366004614d17565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff908116918301919091529282015190921690820152606001610319565b6102ed610849366004614cc7565b612173565b6102ed61085c366004614b08565b6121e9565b61089061086f366004614cc7565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516103199190615733565b600154600290600490811614156108cf5760405162461bcd60e51b81526004016108c690615741565b60405180910390fd5b60005b828110156109ad5760008484838181106108ee576108ee615778565b90506020020160208101906109039190614cc7565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff16600281111561094e5761094e614df5565b600281111561095f5761095f614df5565b9052508051909150600061097282612345565b90506000610988826001600160c01b03166123ae565b905061099585858361247a565b505050505080806109a5906157a4565b9150506108d2565b50505050565b60008381526098602052604081208054829190849081106109d6576109d6615778565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610ad05760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c4016108c6565b602081015163ffffffff161580610af65750806020015163ffffffff168463ffffffff16105b610b9d5760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c4016108c6565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610bd257610bd2614df5565b14610c455760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f7420726567697374657265640000000060648201526084016108c6565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610c8690849061580c565b60405180910390a250565b610c99612567565b60a055565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d15919061581f565b6001600160a01b0316336001600160a01b031614610d455760405162461bcd60e51b81526004016108c69061583c565b610d4e816125c6565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc29190615886565b610dde5760405162461bcd60e51b81526004016108c6906158a8565b60015481811614610e575760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016108c6565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610c86565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610ecb57610ecb615778565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f19919061581f565b610fb3612567565b610d4e816126cb565b610fc4612567565b610d4e81612734565b6040805180820190915260008082526020820152610f196110477f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de68460405160200161102c9291909182526001600160a01b0316602082015260400190565b6040516020818303038152906040528051906020012061279d565b6127eb565b600154600290600490811614156110755760405162461bcd60e51b81526004016108c690615741565b60006110bd84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff16915061287b9050565b905084831461112e5760405162461bcd60e51b81526020600482015260436024820152600080516020615f4083398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a4016108c6565b60005b8381101561155457600085858381811061114d5761114d615778565b919091013560f81c9150369050600089898581811061116e5761116e615778565b905060200281019061118091906158f0565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa1580156111ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112109190615939565b63ffffffff1681146112ac5760405162461bcd60e51b81526020600482015260656024820152600080516020615f4083398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c4016108c6565b6000805b828110156114f35760008484838181106112cc576112cc615778565b90506020020160208101906112e19190614cc7565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff16600281111561132c5761132c614df5565b600281111561133d5761133d614df5565b9052508051909150600061135082612345565b905060016001600160c01b03821660ff8b161c8116146113d45760405162461bcd60e51b815260206004820152604460248201819052600080516020615f40833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a4016108c6565b856001600160a01b0316846001600160a01b03161161147f5760405162461bcd60e51b81526020600482015260676024820152600080516020615f4083398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c4016108c6565b506114dd83838f8f8d908e60016114969190615956565b926114a39392919061596e565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061247a92505050565b509092506114ec9050816157a4565b90506112b0565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a2505050508061154d906157a4565b9050611131565b50505050505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff1660028111156115b7576115b7614df5565b60028111156115c8576115c8614df5565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561161e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116429190615886565b61165e5760405162461bcd60e51b81526004016108c6906158a8565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6116a5612567565b816116af8161290c565b6116b9838361298a565b505050565b609c81815481106116ce57600080fd5b6000918252602090912001546001600160a01b0316905081565b6116f0612a37565b6001600160a01b0383166000908152609f602090815260408083204290556099825280832080548251601f870185900485028101850190935285835290939092909161175d9187908790819084018382808284376000920191909152505060965460ff16915061287b9050565b9050600061176a83612345565b905060018085015460ff16600281111561178657611786614df5565b14801561179b57506001600160c01b03821615155b80156117b957506117b96001600160c01b0383811690831681161490565b15611554576115548787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ab792505050565b611806612567565b6118106000612f29565b565b60006118527f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a878787878760405160200161102c96959493929190615998565b9695505050505050565b6000610f1982612345565b600061187b6064546001600160a01b031690565b905090565b6001805460009190811614156118a85760405162461bcd60e51b81526004016108c690615741565b83891461192b5760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a4016108c6565b60006119373388612f7b565b905061199733828888808060200260200160405190810160405280939291908181526020016000905b8282101561198c5761197d60408302860136819003810190615a1d565b81526020019060010190611960565b5050505050876130ac565b60006119de33838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613239915050565b905060005b8b811015611ba9576000609760008f8f85818110611a0357611a03615778565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b90910490931691810191909152845180519193509084908110611a7057611a70615778565b602002602001015163ffffffff161115611b9657611b118e8e84818110611a9957611a99615778565b9050013560f81c60f81b60f81c84604001518481518110611abc57611abc615778565b60200260200101513386602001518681518110611adb57611adb615778565b60200260200101518d8d88818110611af557611af5615778565b905060400201803603810190611b0b9190615a1d565b866137fa565b611b96898984818110611b2657611b26615778565b9050604002016020016020810190611b3e9190614cc7565b8f8f8590866001611b4f9190615956565b92611b5c9392919061596e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ab792505050565b5080611ba1816157a4565b9150506119e3565b50505050505050505050505050565b600180546000919081161415611be05760405162461bcd60e51b81526004016108c690615741565b6000611bec3385612f7b565b90506000611c3533838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613239915050565b51905060005b88811015611d305760008a8a83818110611c5757611c57615778565b919091013560f81c600081815260976020526040902054855191935063ffffffff169150849084908110611c8d57611c8d615778565b602002602001015163ffffffff161115611d1d5760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a4016108c6565b5080611d28816157a4565b915050611c3b565b50505050505050505050565b6060600082516001600160401b03811115611d5957611d59614b6b565b604051908082528060200260200182016040528015611d82578160200160208202803683370190505b50905060005b8351811015611ded57611db485858381518110611da757611da7615778565b6020026020010151613acf565b828281518110611dc657611dc6615778565b63ffffffff9092166020928302919091019091015280611de5816157a4565b915050611d88565b509392505050565b6001805460029081161415611e1c5760405162461bcd60e51b81526004016108c690615741565b6116b93384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ab792505050565b611e64612567565b6116b9838383613c0b565b600054610100900460ff1615808015611e8f5750600054600160ff909116105b80611ea95750303b158015611ea9575060005460ff166001145b611f0c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108c6565b6000805460ff191660011790558015611f2f576000805461ff0019166101001790555b82518451148015611f41575081518351145b611fab5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b60648201526084016108c6565b611fb489612f29565b611fbe8686613e22565b611fc7886126cb565b611fd087612734565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b84518110156121215761210f8582815181106120ce576120ce615778565b60200260200101518583815181106120e8576120e8615778565b602002602001015185848151811061210257612102615778565b6020026020010151613c0b565b80612119816157a4565b9150506120b0565b508015612168576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b61217b612567565b6001600160a01b0381166121e05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108c6565b610d4e81612f29565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561223c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612260919061581f565b6001600160a01b0316336001600160a01b0316146122905760405162461bcd60e51b81526004016108c69061583c565b60015419811960015419161461230e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016108c6565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610c86565b600081815260986020526040812054806123625750600092915050565b600083815260986020526040902061237b600183615a39565b8154811061238b5761238b615778565b600091825260209091200154600160401b90046001600160c01b03169392505050565b60606000806123bc84613f12565b61ffff166001600160401b038111156123d7576123d7614b6b565b6040519080825280601f01601f191660200182016040528015612401576020820181803683370190505b5090506000805b825182108015612419575061010081105b15612470576001811b935085841615612460578060f81b83838151811061244257612442615778565b60200101906001600160f81b031916908160001a9053508160010191505b612469816157a4565b9050612408565b5090949350505050565b60018260200151600281111561249257612492614df5565b1461249c57505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe906124f190889086908890600401615a50565b6020604051808303816000875af1158015612510573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125349190615a80565b90506001600160c01b03811615612560576125608561255b836001600160c01b03166123ae565b612ab7565b5050505050565b33612570611867565b6001600160a01b0316146118105760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b6001600160a01b0381166126545760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016108c6565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610f196127aa613f3d565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60408051808201909152600080825260208201526000808061281b600080516020615f8083398151915286615abf565b90505b61282781614064565b9093509150600080516020615f80833981519152828309831415612861576040805180820190915290815260208101919091529392505050565b600080516020615f8083398151915260018208905061281e565b600080612887846140e6565b9050808360ff166001901b116129055760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c75650060648201526084016108c6565b9392505050565b60965460ff90811690821610610d4e5760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f7420657869737400000000000000000060648201526084016108c6565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b609e546001600160a01b031633146118105760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f7200000000000060648201526084016108c6565b6001600160a01b0382166000908152609960205260409020805460018083015460ff166002811115612aeb57612aeb614df5565b14612b6a5760405162461bcd60e51b815260206004820152604360248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a4016108c6565b609654600090612b7e90859060ff1661287b565b90506000612b8b83612345565b90506001600160c01b038216612c095760405162461bcd60e51b815260206004820152603b60248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206269746d61702063616e6e6f742062652030000000000060648201526084016108c6565b612c206001600160c01b0383811690831681161490565b612cb85760405162461bcd60e51b815260206004820152605960248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a4016108c6565b6001600160c01b0382811619821616612cd18482614273565b6001600160c01b038116612da05760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015612d5157600080fd5b505af1158015612d65573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590612dee908a908a90600401615ad3565b600060405180830381600087803b158015612e0857600080fd5b505af1158015612e1c573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612e6e9087908a90600401615af7565b600060405180830381600087803b158015612e8857600080fd5b505af1158015612e9c573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612eee9087908a90600401615af7565b600060405180830381600087803b158015612f0857600080fd5b505af1158015612f1c573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015612fe6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300a9190615b10565b905080610f19577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce58848461304b87610fcd565b6040518463ffffffff1660e01b815260040161306993929190615b29565b6020604051808303816000875af1158015613088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129059190615b10565b6020808201516000908152609a909152604090205460ff16156131525760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a4016108c6565b42816040015110156131e75760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a4016108c6565b602080820180516000908152609a909252604091829020805460ff19166001179055609d549051918301516109ad926001600160a01b03909216916132329188918891889190611812565b8351614433565b61325d60405180606001604052806060815260200160608152602001606081525090565b60006132a586868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff16915061287b9050565b905060006132b288612345565b90506001600160c01b0382166133305760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f7420626520300000000000000060648201526084016108c6565b8082166001600160c01b0316156133e65760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c4016108c6565b60a0546001600160a01b038a166000908152609f60205260409020546001600160c01b038381169085161791429161341e9190615956565b1061349f5760405162461bcd60e51b815260206004820152604560248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f722063616e6e6f74207265726567697374656064820152641c881e595d60da1b608482015260a4016108c6565b6134a98982614273565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516134d9919061580c565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561351357613513614df5565b1461362c576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff19169083600281111561356e5761356e614df5565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d906135c3908d908990600401615ba8565b600060405180830381600087803b1580156135dd57600080fd5b505af11580156135f1573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb279529061367c908d908c908c90600401615c1c565b600060405180830381600087803b15801561369657600080fd5b505af11580156136aa573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063255047779150613700908d908d908d908d90600401615c41565b6000604051808303816000875af115801561371f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137479190810190615ccd565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d906137a4908c908c908c90600401615d30565b6000604051808303816000875af11580156137c3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137eb9190810190615d4a565b84525050509695505050505050565b6020808301516001600160a01b03808216600081815260999094526040909320549192908716141561387a5760405162461bcd60e51b81526020600482015260356024820152600080516020615f6083398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b60648201526084016108c6565b8760ff16846000015160ff16146138f75760405162461bcd60e51b81526020600482015260476024820152600080516020615f6083398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a4016108c6565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015613968573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061398c9190615de3565b905061399881856145ed565b6001600160601b0316866001600160601b031611613a2b5760405162461bcd60e51b81526020600482015260566024820152600080516020615f6083398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a4016108c6565b613a358885614611565b6001600160601b0316816001600160601b0316106121685760405162461bcd60e51b815260206004820152605c6024820152600080516020615f6083398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a4016108c6565b600081815260986020526040812054815b81811015613b61576001613af48284615a39565b613afe9190615a39565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff1681548110613b3157613b31615778565b60009182526020909120015463ffffffff1611613b4f575050610f19565b80613b59816157a4565b915050613ae0565b5060405162461bcd60e51b815260206004820152606c60248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c4016108c6565b60965460ff1660c08110613c7f5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b60648201526084016108c6565b613c8a816001615e00565b6096805460ff191660ff9290921691909117905580613ca9818661298a565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a7790613cfc90849088908890600401615e25565b600060405180830381600087803b158015613d1657600080fd5b505af1158015613d2a573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613d9257600080fd5b505af1158015613da6573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613e0e57600080fd5b505af1158015612168573d6000803e3d6000fd5b6000546201000090046001600160a01b0316158015613e4957506001600160a01b03821615155b613ecb5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016108c6565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2613f0e826125c6565b5050565b6000805b8215610f1957613f27600184615a39565b9092169180613f3581615e9e565b915050613f16565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015613f9657507f000000000000000000000000000000000000000000000000000000000000000046145b15613fc057507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615f808339815191526003600080516020615f8083398151915286600080516020615f808339815191528889090908905060006140da827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615f8083398151915261462b565b91959194509092505050565b60006101008251111561416f5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016108c6565b815161417d57506000919050565b6000808360008151811061419357614193615778565b0160200151600160f89190911c81901b92505b845181101561426a578481815181106141c1576141c1615778565b0160200151600160f89190911c1b91508282116142565760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016108c6565b91811791614263816157a4565b90506141a6565b50909392505050565b60008281526098602052604090205480614318576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b6000838152609860205260408120614331600184615a39565b8154811061434157614341615778565b600091825260209091200180549091504363ffffffff908116911614156143855780546001600160401b0316600160401b6001600160c01b038516021781556109ad565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b1561454d57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906144739086908690600401615af7565b602060405180830381865afa158015614490573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144b49190615ec0565b6001600160e01b031916146116b95760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a4016108c6565b826001600160a01b031661456183836146da565b6001600160a01b0316146116b95760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a4016108c6565b6020810151600090612710906146079061ffff1685615eea565b6129059190615f19565b6040810151600090612710906146079061ffff1685615eea565b600080614636614a47565b61463e614a65565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561467f57614681565bfe5b50826146cf5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c75726500000000000060448201526064016108c6565b505195945050505050565b60008060006146e985856146f6565b91509150611ded81614766565b60008082516041141561472d5760208301516040840151606085015160001a61472187828585614921565b9450945050505061475f565b825160401415614757576020830151604084015161474c868383614a0e565b93509350505061475f565b506000905060025b9250929050565b600081600481111561477a5761477a614df5565b14156147835750565b600181600481111561479757614797614df5565b14156147e55760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016108c6565b60028160048111156147f9576147f9614df5565b14156148475760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016108c6565b600381600481111561485b5761485b614df5565b14156148b45760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016108c6565b60048160048111156148c8576148c8614df5565b1415610d4e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016108c6565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156149585750600090506003614a05565b8460ff16601b1415801561497057508460ff16601c14155b156149815750600090506004614a05565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156149d5573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166149fe57600060019250925050614a05565b9150600090505b94509492505050565b6000806001600160ff1b03831681614a2b60ff86901c601b615956565b9050614a3987828885614921565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f840112614a9557600080fd5b5081356001600160401b03811115614aac57600080fd5b6020830191508360208260051b850101111561475f57600080fd5b60008060208385031215614ada57600080fd5b82356001600160401b03811115614af057600080fd5b614afc85828601614a83565b90969095509350505050565b600060208284031215614b1a57600080fd5b5035919050565b63ffffffff81168114610d4e57600080fd5b600080600060608486031215614b4857600080fd5b833592506020840135614b5a81614b21565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614ba357614ba3614b6b565b60405290565b604080519081016001600160401b0381118282101715614ba357614ba3614b6b565b604051601f8201601f191681016001600160401b0381118282101715614bf357614bf3614b6b565b604052919050565b60006001600160401b03831115614c1457614c14614b6b565b614c27601f8401601f1916602001614bcb565b9050828152838383011115614c3b57600080fd5b828260208301376000602084830101529392505050565b600060208284031215614c6457600080fd5b81356001600160401b03811115614c7a57600080fd5b8201601f81018413614c8b57600080fd5b614c9a84823560208401614bfb565b949350505050565b6001600160a01b0381168114610d4e57600080fd5b8035614cc281614ca2565b919050565b600060208284031215614cd957600080fd5b813561290581614ca2565b60008060408385031215614cf757600080fd5b50508035926020909101359150565b803560ff81168114614cc257600080fd5b600060208284031215614d2957600080fd5b61290582614d06565b815181526020808301519082015260408101610f19565b60008083601f840112614d5b57600080fd5b5081356001600160401b03811115614d7257600080fd5b60208301915083602082850101111561475f57600080fd5b60008060008060408587031215614da057600080fd5b84356001600160401b0380821115614db757600080fd5b614dc388838901614a83565b90965094506020870135915080821115614ddc57600080fd5b50614de987828801614d49565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110614e2957634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614e4890840182614e0b565b5092915050565b803561ffff81168114614cc257600080fd5b600060608284031215614e7357600080fd5b614e7b614b81565b90508135614e8881614b21565b8152614e9660208301614e4f565b6020820152614ea760408301614e4f565b604082015292915050565b60008060808385031215614ec557600080fd5b614ece83614d06565b9150614edd8460208501614e61565b90509250929050565b600080600060408486031215614efb57600080fd5b8335614f0681614ca2565b925060208401356001600160401b03811115614f2157600080fd5b614f2d86828701614d49565b9497909650939450505050565b60006001600160401b03821115614f5357614f53614b6b565b5060051b60200190565b600060408284031215614f6f57600080fd5b614f77614ba9565b9050614f8282614d06565b81526020820135614f9281614ca2565b602082015292915050565b600080600080600060a08688031215614fb557600080fd5b8535614fc081614ca2565b945060208681013594506040808801356001600160401b03811115614fe457600080fd5b8801601f81018a13614ff557600080fd5b803561500861500382614f3a565b614bcb565b81815260069190911b8201840190848101908c83111561502757600080fd5b928501925b8284101561504d5761503e8d85614f5d565b8252928401929085019061502c565b999c989b5098996060810135995060800135979650505050505050565b6000610100828403121561507d57600080fd5b50919050565b60008083601f84011261509557600080fd5b5081356001600160401b038111156150ac57600080fd5b6020830191508360208260061b850101111561475f57600080fd5b6000606082840312156150d957600080fd5b6150e1614b81565b905081356001600160401b038111156150f957600080fd5b8201601f8101841361510a57600080fd5b61511984823560208401614bfb565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c03121561515557600080fd5b89356001600160401b038082111561516c57600080fd5b6151788d838e01614d49565b909b50995060208c013591508082111561519157600080fd5b61519d8d838e01614d49565b90995097508791506151b28d60408e0161506a565b96506101408c01359150808211156151c957600080fd5b6151d58d838e01615083565b90965094506101608c01359150808211156151ef57600080fd5b6151fb8d838e016150c7565b93506101808c013591508082111561521257600080fd5b5061521f8c828d016150c7565b9150509295985092959850929598565b600080600080600080610160878903121561524957600080fd5b86356001600160401b038082111561526057600080fd5b61526c8a838b01614d49565b9098509650602089013591508082111561528557600080fd5b6152918a838b01614d49565b90965094508491506152a68a60408b0161506a565b93506101408901359150808211156152bd57600080fd5b506152ca89828a016150c7565b9150509295509295509295565b600080604083850312156152ea57600080fd5b82356152f581614b21565b91506020838101356001600160401b0381111561531157600080fd5b8401601f8101861361532257600080fd5b803561533061500382614f3a565b81815260059190911b8201830190838101908883111561534f57600080fd5b928401925b8284101561536d57833582529284019290840190615354565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156153ba57835163ffffffff1683529284019291840191600101615398565b50909695505050505050565b600080602083850312156153d957600080fd5b82356001600160401b038111156153ef57600080fd5b614afc85828601614d49565b6001600160601b0381168114610d4e57600080fd5b600082601f83011261542157600080fd5b8135602061543161500383614f3a565b82815260069290921b8401810191818101908684111561545057600080fd5b8286015b848110156154a1576040818903121561546d5760008081fd5b615475614ba9565b813561548081614ca2565b81528185013561548f816153fb565b81860152835291830191604001615454565b509695505050505050565b600080600060a084860312156154c157600080fd5b6154cb8585614e61565b925060608401356154db816153fb565b915060808401356001600160401b038111156154f657600080fd5b61550286828701615410565b9150509250925092565b600082601f83011261551d57600080fd5b8135602061552d61500383614f3a565b8281526060928302850182019282820191908785111561554c57600080fd5b8387015b8581101561556f576155628982614e61565b8452928401928101615550565b5090979650505050505050565b600082601f83011261558d57600080fd5b8135602061559d61500383614f3a565b82815260059290921b840181019181810190868411156155bc57600080fd5b8286015b848110156154a15780356155d3816153fb565b83529183019183016155c0565b600082601f8301126155f157600080fd5b8135602061560161500383614f3a565b82815260059290921b8401810191818101908684111561562057600080fd5b8286015b848110156154a15780356001600160401b038111156156435760008081fd5b6156518986838b0101615410565b845250918301918301615624565b600080600080600080600080610100898b03121561567c57600080fd5b61568589614cb7565b975061569360208a01614cb7565b96506156a160408a01614cb7565b95506156af60608a01614cb7565b94506080890135935060a08901356001600160401b03808211156156d257600080fd5b6156de8c838d0161550c565b945060c08b01359150808211156156f457600080fd5b6157008c838d0161557c565b935060e08b013591508082111561571657600080fd5b506157238b828c016155e0565b9150509295985092959890939650565b60208101610f198284614e0b565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156157b8576157b861578e565b5060010190565b6000815180845260005b818110156157e5576020818501810151868301820152016157c9565b818111156157f7576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061290560208301846157bf565b60006020828403121561583157600080fd5b815161290581614ca2565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561589857600080fd5b8151801515811461290557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000808335601e1984360301811261590757600080fd5b8301803591506001600160401b0382111561592157600080fd5b6020019150600581901b360382131561475f57600080fd5b60006020828403121561594b57600080fd5b815161290581614b21565b600082198211156159695761596961578e565b500190565b6000808585111561597e57600080fd5b8386111561598b57600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a16828601526040898187015260c0606087015283895180865260e088019150848b01955060005b818110156159fd578651805160ff16845286015185168684015295850195918301916001016159d3565b505060808701989098525050505060a09091019190915250949350505050565b600060408284031215615a2f57600080fd5b6129058383614f5d565b600082821015615a4b57615a4b61578e565b500390565b60018060a01b0384168152826020820152606060408201526000615a7760608301846157bf565b95945050505050565b600060208284031215615a9257600080fd5b81516001600160c01b038116811461290557600080fd5b634e487b7160e01b600052601260045260246000fd5b600082615ace57615ace615aa9565b500690565b6001600160a01b0383168152604060208201819052600090614c9a908301846157bf565b828152604060208201526000614c9a60408301846157bf565b600060208284031215615b2257600080fd5b5051919050565b6001600160a01b03841681526101608101615b51602083018580358252602090810135910152565b615b6b606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b60018060a01b0383168152604060208201526000825160606040840152615bd260a08401826157bf565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b0384168152604060208201819052600090615a779083018486615bf3565b60018060a01b0385168152836020820152606060408201526000611852606083018486615bf3565b600082601f830112615c7a57600080fd5b81516020615c8a61500383614f3a565b82815260059290921b84018101918181019086841115615ca957600080fd5b8286015b848110156154a1578051615cc0816153fb565b8352918301918301615cad565b60008060408385031215615ce057600080fd5b82516001600160401b0380821115615cf757600080fd5b615d0386838701615c69565b93506020850151915080821115615d1957600080fd5b50615d2685828601615c69565b9150509250929050565b838152604060208201526000615a77604083018486615bf3565b60006020808385031215615d5d57600080fd5b82516001600160401b03811115615d7357600080fd5b8301601f81018513615d8457600080fd5b8051615d9261500382614f3a565b81815260059190911b82018301908381019087831115615db157600080fd5b928401925b82841015615dd8578351615dc981614b21565b82529284019290840190615db6565b979650505050505050565b600060208284031215615df557600080fd5b8151612905816153fb565b600060ff821660ff84168060ff03821115615e1d57615e1d61578e565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015615e8e57865180516001600160a01b031684528601518516868401529585019591830191600101615e5e565b50909a9950505050505050505050565b600061ffff80831681811415615eb657615eb661578e565b6001019392505050565b600060208284031215615ed257600080fd5b81516001600160e01b03198116811461290557600080fd5b60006001600160601b0380831681851681830481118215151615615f1057615f1061578e565b02949350505050565b60006001600160601b0380841680615f3357615f33615aa9565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212207491ac76a1cd7fce1d2d0cd906754d5efdf6335a0dcbfeda2692424d777b4a4a64736f6c634300080c00332e6164647265737365732e626173655374726174656779496d706c656d656e746174696f6e885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12da2646970667358221220a57d39ba2313767cd39b39f099bb23db3547f09143b057e8b978695d1b409b4d64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`\x046\x10b\0\x01\x15W`\x005`\xE0\x1C\x80c\x8B,i\xEB\x11b\0\0\xA3W\x80c\xC0@b&\x11b\0\0nW\x80c\xC0@b&\x14b\0\x02.W\x80c\xE1\x82r\xC2\x14b\0\x02:W\x80c\xE3\xA8\xB3E\x14b\0\x02NW\x80c\xF8\xCC\xBFG\x14b\0\x02bW`\0\x80\xFD[\x80c\x8B,i\xEB\x14b\0\x01\xDEW\x80c\x8CO\x9BP\x14b\0\x01\xF2W\x80c\x9E;\xA47\x14b\0\x02\x06W\x80c\x9E\x99#\xC2\x14b\0\x02\x1AW`\0\x80\xFD[\x80c]\xF4YF\x11b\0\0\xE4W\x80c]\xF4YF\x14b\0\x01\x8EW\x80ch0H5\x14b\0\x01\xA2W\x80cm\x14\xA9\x87\x14b\0\x01\xB6W\x80c\x80\xE0d\xD4\x14b\0\x01\xCAW`\0\x80\xFD[\x80c\x031\xED*\x14b\0\x01\x1AW\x80c4fud\x14b\0\x01RW\x80c9\xA5\xFC\xFA\x14b\0\x01fW\x80cL\xA2,?\x14b\0\x01zW[`\0\x80\xFD[`\x0CTb\0\x015\x90c\x01\0\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\x19Tb\0\x015\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x0FTb\0\x015\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x16Tb\0\x015\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x10Tb\0\x015\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x14Tb\0\x015\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x0ETb\0\x015\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\rTb\0\x015\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x13Tb\0\x015\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x18Tb\0\x015\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x11Tb\0\x015\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x12Tb\0\x015\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[b\0\x028b\0\x02\x87V[\0[`\x15Tb\0\x015\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x17Tb\0\x015\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x0CTb\0\x02v\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01b\0\x01IV[s_\xBD\xB21Vx\xAF\xEC\xB3g\xF02\xD9?d/d\x18\n\xA3`\0b\0\x02\xA8b\0\x08\x94V[\x90P`\0b\0\x02\xDC`@Q\x80`@\x01`@R\x80`\r\x81R` \x01lops_addresses`\x98\x1B\x81RPb\0\x0B\"V[\x90P`\0\x80Q` b\x01w\x93\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x03,W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x03AW=`\0\x80>=`\0\xFD[PPPP`@Qb\0\x03S\x90b\0\"\xABV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x03pW=`\0\x80>=`\0\xFD[P`\x17\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Qb\0\x03\x9F\x90b\0\"\xB8V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x03\xBCW=`\0\x80>=`\0\xFD[P`\x0C\x80Tc\x01\0\0\0`\x01`\xB8\x1B\x03\x19\x16c\x01\0\0\0`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81\x02\x91\x90\x91\x17\x91\x82\x90U`\x17T`@Q\x90\x84\x16\x93\x91\x90\x92\x04\x16\x90b\0\x04\x03\x90b\0\"\xC6V[b\0\x04\x10\x92\x91\x90b\0#6V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04-W=`\0\x80>=`\0\xFD[P`\x18\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x90\x81\x17\x90\x91U`\x19T`\0\x92b\0\x04c\x92\x86\x92\x86\x92\x16b\0\x0C\x84V[\x90P`\x0E`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x83`\xA0\x01Q\x84`\xC0\x01Q`@Qb\0\x04\x93\x90b\0\"\xD4V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x83\x16` \x83\x01R\x90\x91\x16`@\x82\x01R``\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x04\xD0W=`\0\x80>=`\0\xFD[P`\x19\x80T`\x01`\x01`\xA0\x1B\x03\x92\x83\x16`\x01`\x01`\xA0\x1B\x03\x19\x90\x91\x16\x81\x17\x90\x91U`\x0CT`\x18T\x85Q`@\x80Q\x91\x86\x16`$\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81R`D\x90\x92\x01\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x18\x9A\xCD\xBD`\xE3\x1B\x17\x90RQc\x96#`\x9D`\xE0\x1B\x81Rc\x01\0\0\0\x90\x93\x04\x85\x16\x94c\x96#`\x9D\x94b\0\x05f\x94\x93\x90\x91\x16\x92\x90\x91\x90`\x04\x01b\0#\xC0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x05\x81W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x05\x96W=`\0\x80>=`\0\xFD[PP`\x18T`@\x80Qc\x8D\xA5\xCB[`\xE0\x1B\x81R\x90Q`\0\x94P`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x92Pc\x8D\xA5\xCB[\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x05\xE7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x06\r\x91\x90b\0#\xEEV[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15b\0\x06`W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x13\xDD\xDB\x99\\\x88\x1D[\x9A[\x9A]\x1AX[\x1A^\x99Y`j\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[Fazi\x14\x80b\0\x06rWPFa\x059\x14[\x15b\0\x08'W`\x0CT`@\x80Qc\x0F\xE7\x85\x85`\xE3\x1B\x81R`\x04\x81\x01\x91\x90\x91R`\n`D\x82\x01Ri(97\xBC<\xA0\xB26\xB4\xB7`\xB1\x1B`d\x82\x01Rc\x01\0\0\0\x90\x91\x04`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`$\x83\x01R\x85\x16\x90c\x7F<,(\x90`\x84\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x06\xEAW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x06\xFFW=`\0\x80>=`\0\xFD[PPPP`\xA0\x83\x01Q`@\x80Qc\x0F\xE7\x85\x85`\xE3\x1B\x81R`\x04\x81\x01\x91\x90\x91R`\x0C`D\x82\x01RkAvsDirectory`\xA0\x1B`d\x82\x01R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`$\x82\x01R\x90\x85\x16\x90c\x7F<,(\x90`\x84\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x07rW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x07\x87W=`\0\x80>=`\0\xFD[PPPP` \x83\x01Q`@\x80Qc\x0F\xE7\x85\x85`\xE3\x1B\x81R`\x04\x81\x01\x91\x90\x91R`\x13`D\x82\x01RreigenlayerPauserReg`h\x1B`d\x82\x01R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`$\x82\x01R\x90\x85\x16\x90c\x7F<,(\x90`\x84\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x08\x01W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x08\x16W=`\0\x80>=`\0\xFD[PPPPb\0\x08'\x84\x84\x83b\0\x1AfV[`\0\x80Q` b\x01w\x93\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x08uW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x08\x8AW=`\0\x80>=`\0\xFD[PPPPPPPPV[`@\x80Qa\x01\0\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x82\x90R`\x80\x81\x01\x82\x90R`\xA0\x81\x01\x82\x90R`\xC0\x81\x01\x82\x90R`\xE0\x81\x01\x91\x90\x91R`\0b\0\t\x17`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7Feigenlayer_deployment_output\0\0\0\0\x81RPb\0\x1D\x9CV[\x90P`\0b\0\t\\\x82`@Q\x80`@\x01`@R\x80`\x1F\x81R` \x01\x7F.addresses.eigenLayerProxyAdmin\0\x81RPb\0\x1F\xB3V[\x90P`\0b\0\t\xA1\x83`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7F.addresses.eigenLayerPauserReg\0\0\x81RPb\0\x1F\xB3V[\x90P`\0b\0\t\xE6\x84`@Q\x80`@\x01`@R\x80`\x1A\x81R` \x01\x7F.addresses.strategyManager\0\0\0\0\0\0\x81RPb\0\x1F\xB3V[\x90P`\0b\0\n#\x85`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01t\x170\xB2292\xB9\xB9\xB2\xB9\x9722\xB62\xB3\xB0\xBA4\xB7\xB7`Y\x1B\x81RPb\0\x1F\xB3V[\x90P`\0b\0\nh\x86`@Q\x80`@\x01`@R\x80`\x17\x81R` \x01\x7F.addresses.avsDirectory\0\0\0\0\0\0\0\0\0\x81RPb\0\x1F\xB3V[\x90P`\0b\0\n\xA2\x87`@Q\x80`@\x01`@R\x80`\x12\x81R` \x01q\x170\xB2292\xB9\xB9\xB2\xB9\x979\xB60\xB9\xB42\xB9`q\x1B\x81RPb\0\x1F\xB3V[\x90P`\0b\0\n\xCB\x88`@Q\x80``\x01`@R\x80`%\x81R` \x01b\x01wn`%\x919b\0\x1F\xB3V[`@\x80Qa\x01\0\x81\x01\x82R`\x01`\x01`\xA0\x1B\x03\x99\x8A\x16\x81R\x97\x89\x16` \x89\x01R\x95\x88\x16\x95\x87\x01\x95\x90\x95RP\x91\x85\x16``\x85\x01R\x90\x84\x16`\x80\x84\x01R\x83\x16`\xA0\x83\x01R`\0`\xC0\x83\x01R\x90\x91\x16`\xE0\x82\x01R\x92\x91PPV[`@\x80Q`\x80\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x82\x90R\x90b\0\x0BQ\x83b\0 =`\0\xFD[P`\r\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x17T`\x0CT`@Q\x91\x83\x16\x93Pc\x01\0\0\0\x90\x04\x90\x91\x16\x90b\0\r\xB8\x90b\0\"\xC6V[b\0\r\xC5\x92\x91\x90b\0#6V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\r\xE2W=`\0\x80>=`\0\xFD[P`\x0E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x17T`\x0CT`@Q\x91\x83\x16\x92c\x01\0\0\0\x90\x91\x04\x16\x90b\0\x0E!\x90b\0\"\xC6V[b\0\x0E.\x92\x91\x90b\0#6V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0EKW=`\0\x80>=`\0\xFD[P`\x10\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x17T`\x0CT`@Q\x91\x83\x16\x92c\x01\0\0\0\x90\x91\x04\x16\x90b\0\x0E\x8A\x90b\0\"\xC6V[b\0\x0E\x97\x92\x91\x90b\0#6V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0E\xB4W=`\0\x80>=`\0\xFD[P`\x12\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x17T`\x0CT`@Q\x91\x83\x16\x92c\x01\0\0\0\x90\x91\x04\x16\x90b\0\x0E\xF3\x90b\0\"\xC6V[b\0\x0F\0\x92\x91\x90b\0#6V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0F\x1DW=`\0\x80>=`\0\xFD[P`\x14\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@Qb\0\x0FL\x90b\0\"\xF0V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0FiW=`\0\x80>=`\0\xFD[P`\x16\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x90U`\x0ET`@Q\x91\x16\x90b\0\x0F\x9A\x90b\0\"\xFEV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x0F\xC7W=`\0\x80>=`\0\xFD[P`\x11\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x90\x81\x17\x90\x91U`\x0CT`\x10T`@Qc&j#\xB1`\xE2\x1B\x81R\x90\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92Rc\x01\0\0\0\x90\x04\x90\x91\x16\x90c\x99\xA8\x8E\xC4\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x109W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x10NW=`\0\x80>=`\0\xFD[PP`\x0ET`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pb\0\x10o\x91Pb\0#\x0CV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x10\x9CW=`\0\x80>=`\0\xFD[P`\x13\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x90\x81\x17\x90\x91U`\x0CT`\x12T`@Qc&j#\xB1`\xE2\x1B\x81R\x90\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92Rc\x01\0\0\0\x90\x04\x90\x91\x16\x90c\x99\xA8\x8E\xC4\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x11\x0EW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x11#W=`\0\x80>=`\0\xFD[PP`\x0ET``\x88\x01Q`@Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x93P\x91Pb\0\x11J\x90b\0#\x1AV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x11~W=`\0\x80>=`\0\xFD[P`\x15\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x90\x81\x17\x90\x91U`\x0CT`\x14T`@Qc&j#\xB1`\xE2\x1B\x81R\x90\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92Rc\x01\0\0\0\x90\x04\x90\x91\x16\x90c\x99\xA8\x8E\xC4\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x11\xF0W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x12\x05W=`\0\x80>=`\0\xFD[PP`\x14T`\x10T`\x12T`@Q\x88\x95P`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x94P\x91\x83\x16\x92\x16\x90b\0\x124\x90b\0#(V[`\x01`\x01`\xA0\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x90\x83\x16`@\x83\x01R\x90\x91\x16``\x82\x01R`\x80\x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x12yW=`\0\x80>=`\0\xFD[P`\x0F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90U`@\x80Q`\0\x80\x82R` \x82\x01\x90\x92R\x81\x90\x81b\0\x12\xE1V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R`\0\x19\x90\x92\x01\x91\x01\x81b\0\x12\xB3W\x90P[P\x90P`\0[\x82\x81\x10\x15b\0\x13HW`@\x80Q``\x81\x01\x82Ra'\x10\x81Ra:\x98` \x82\x01R`d\x91\x81\x01\x91\x90\x91R\x82Q\x83\x90\x83\x90\x81\x10b\0\x13'Wb\0\x13'b\0$/V[` \x02` \x01\x01\x81\x90RP\x80\x80b\0\x13?\x90b\0$\xA4V[\x91PPb\0\x12\xE7V[P`\0\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15b\0\x13gWb\0\x13gb\0$\x19V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x13\x91W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15b\0\x13\xB2Wb\0\x13\xB2b\0$\x19V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15b\0\x13\xE7W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\x13\xD1W\x90P[P\x90P`\x0C`\x03\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x96#`\x9D`\x0E`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x0F`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16c\xDD\x82\x83\xF3`\xE0\x1B\x8C`\0\x01Q\x8D`@\x01Q\x8E``\x01Q\x8F` \x01Q`\0\x8C\x8C\x8C`@Q`$\x01b\0\x14t\x98\x97\x96\x95\x94\x93\x92\x91\x90b\0%\xBEV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16`\x01`\x01`\xE0\x1B\x03\x19\x94\x85\x16\x17\x90RQ`\xE0\x86\x90\x1B\x90\x92\x16\x82Rb\0\x14\xBD\x93\x92\x91`\x04\x01b\0#\xC0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x14\xD8W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x14\xEDW=`\0\x80>=`\0\xFD[PP`\x0ET`@\x80Qc\x8D\xA5\xCB[`\xE0\x1B\x81R\x90Q`\0\x98P`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x96Pc\x8D\xA5\xCB[\x95P`\x04\x80\x82\x01\x95P` \x94P\x91\x92P\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x15BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x15h\x91\x90b\0#\xEEV[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15b\0\x15\xB7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x13\xDD\xDB\x99\\\x88\x1D[\x9A[\x9A]\x1AX[\x1A^\x99Y`j\x1B`D\x82\x01R`d\x01b\0\x06WV[`@\x80Q\x80\x82\x01\x82R`\r\x81Rl\x1C\x18\\\x99[\x9D\x08\x1B\xD8\x9A\x99X\xDD`\x9A\x1B` \x80\x83\x01\x91\x90\x91R\x82Q\x80\x84\x01\x84R`\t\x81Rhaddresses`\xB8\x1B\x91\x81\x01\x91\x90\x91R`\x0CT\x92QcK\x9601`\xE1\x1B\x81R\x91\x92\x90\x91sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x91c\x97,`b\x91b\0\x16N\x91\x85\x91c\x01\0\0\0\x90\x91\x04`\x01`\x01`\xA0\x1B\x03\x16\x90`\x04\x01b\0&\x91V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x16nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x16\x98\x91\x90\x81\x01\x90b\0&\xE1V[P`@QcK\x9601`\xE1\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x97,`b\x90b\0\x16\xD4\x90\x84\x90\x89\x90`\x04\x01b\0'\x9AV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x16\xF4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x17\x1E\x91\x90\x81\x01\x90b\0&\xE1V[P`@QcK\x9601`\xE1\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x97,`b\x90b\0\x17Z\x90\x84\x90\x88\x90`\x04\x01b\0'\xFCV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x17zW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x17\xA4\x91\x90\x81\x01\x90b\0&\xE1V[P`\x0ET`@QcK\x9601`\xE1\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x91c\x97,`b\x91b\0\x17\xED\x91\x85\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90`\x04\x01b\0(kV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x18\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x187\x91\x90\x81\x01\x90b\0&\xE1V[P`\x0FT`@QcK\x9601`\xE1\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x91c\x97,`b\x91b\0\x18\x80\x91\x85\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90`\x04\x01b\0(\xC4V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x18\xA0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x18\xCA\x91\x90\x81\x01\x90b\0&\xE1V[P`\x16T`@QcK\x9601`\xE1\x1B\x81R`\0\x91sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x91c\x97,`b\x91b\0\x19\x14\x91\x86\x91`\x01`\x01`\xA0\x1B\x03\x16\x90`\x04\x01b\0)1V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x194W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x19^\x91\x90\x81\x01\x90b\0&\xE1V[`@Qc\x88\xDAm5`\xE0\x1B\x81R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x88\xDAm5\x90b\0\x19\xA1\x90\x87\x90\x87\x90\x87\x90`\x04\x01b\0)\x8DV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x19\xC1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x19\xEB\x91\x90\x81\x01\x90b\0&\xE1V[\x90Pb\0\x1A.\x81`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7Fmockavs_deployment_output\0\0\0\0\0\0\0\x81RPb\0 \xCDV[PP`@\x80Q``\x81\x01\x82R`\x01`\x01`\xA0\x1B\x03\x96\x87\x16\x81R`\x0ET\x87\x16` \x82\x01R`\x16T\x90\x96\x16\x90\x86\x01RP\x92\x95\x94PPPPPV[\x80Q`@Qc\x0F\xE7\x85\x85`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16\x91c\x7F<,(\x91b\0\x1A\x95\x91\x90`\x04\x01b\0)\xD6V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x1A\xB0W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x1A\xC5W=`\0\x80>=`\0\xFD[PPPP` \x81\x01Q`@\x80Qc\x0F\xE7\x85\x85`\xE3\x1B\x81R`\x04\x81\x01\x91\x90\x91R`\x1A`D\x82\x01R\x7FmockAvsRegistryCoordinator\0\0\0\0\0\0`d\x82\x01R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`$\x82\x01R\x90\x84\x16\x90c\x7F<,(\x90`\x84\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x1BIW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x1B^W=`\0\x80>=`\0\xFD[PPPP`@\x81\x81\x01Q\x81Qc\x0F\xE7\x85\x85`\xE3\x1B\x81R`\x04\x81\x01\x92\x90\x92R`\x1D`D\x83\x01R\x7FmockAvsOperatorStateRetriever\0\0\0`d\x83\x01R`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`$\x83\x01R\x84\x16\x90c\x7F<,(\x90`\x84\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x1B\xE0W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x1B\xF5W=`\0\x80>=`\0\xFD[PPPP``\x82\x01Q`@\x80Qc\x0F\xE7\x85\x85`\xE3\x1B\x81R`\x04\x81\x01\x91\x90\x91R`\x11`D\x82\x01Rp22\xB62\xB3\xB0\xBA4\xB7\xB7&\xB0\xB70\xB3\xB2\xB9`y\x1B`d\x82\x01R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`$\x82\x01R\x90\x84\x16\x90c\x7F<,(\x90`\x84\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x1CmW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x1C\x82W=`\0\x80>=`\0\xFD[PPPP`@\x82\x81\x01Q\x81Qc\x0F\xE7\x85\x85`\xE3\x1B\x81R`\x04\x81\x01\x92\x90\x92R`\x0F`D\x83\x01Rn9\xBA90\xBA2\xB3\xBC\xA6\xB0\xB70\xB3\xB2\xB9`\x89\x1B`d\x83\x01R`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`$\x83\x01R\x84\x16\x90c\x7F<,(\x90`\x84\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x1C\xF6W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x1D\x0BW=`\0\x80>=`\0\xFD[PPPP`\xA0\x82\x01Q`@\x80Qc\x0F\xE7\x85\x85`\xE3\x1B\x81R`\x04\x81\x01\x91\x90\x91R`\x0C`D\x82\x01RkavsDirectory`\xA0\x1B`d\x82\x01R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`$\x82\x01R\x90\x84\x16\x90c\x7F<,(\x90`\x84\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x1D~W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x1D\x93W=`\0\x80>=`\0\xFD[PPPPPPPV[```\0`\0\x80Q` b\x01w\x93\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16c\xD90\xA0\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x1D\xF1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1E\x1B\x91\x90\x81\x01\x90b\0&\xE1V[`@Q` \x01b\0\x1E-\x91\x90b\0*&V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x90\x82\x90Rc4\x80Q\xD7`\xE1\x1B\x82RF`\x04\x83\x01R\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x1E\x90W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1E\xBA\x91\x90\x81\x01\x90b\0&\xE1V[`@Q` \x01b\0\x1E\xCC\x91\x90b\0*[V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x84`@Q` \x01b\0\x1E\xF2\x91\x90b\0*\x82V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c`\xF9\xBB\x11\x90b\0\x1F5\x90\x86\x90\x86\x90\x86\x90` \x01b\0*\xADV[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0\x1Fb\x91\x90b\0*\xF6V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x1F\x80W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x1F\xAA\x91\x90\x81\x01\x90b\0&\xE1V[\x95\x94PPPPPV[`@Qc\x1E\x19\xE6W`\xE0\x1B\x81R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x1E\x19\xE6W\x90b\0\x1F\xF1\x90\x86\x90\x86\x90`\x04\x01b\0+\x0BV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0 \x0FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0 5\x91\x90b\0#\xEEV[\x93\x92PPPV[```\0`\0\x80Q` b\x01w\x93\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16c\xD90\xA0\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0 \x91W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0 \xBB\x91\x90\x81\x01\x90b\0&\xE1V[`@Q` \x01b\0\x1E-\x91\x90b\0+4V[`\0`\0\x80Q` b\x01w\x93\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16c\xD90\xA0\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0! W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0!J\x91\x90\x81\x01\x90b\0&\xE1V[`@Q` \x01b\0!\\\x91\x90b\0*&V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x90\x82\x90Rc4\x80Q\xD7`\xE1\x1B\x82RF`\x04\x83\x01R\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0!\xBFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0!\xE9\x91\x90\x81\x01\x90b\0&\xE1V[`@Q` \x01b\0!\xFB\x91\x90b\0*[V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x82\x82\x85`@Q` \x01b\0\"%\x93\x92\x91\x90b\0+hV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rc\xE2<\xD1\x9F`\xE0\x1B\x82R\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xE2<\xD1\x9F\x90b\0\"p\x90\x88\x90\x85\x90`\x04\x01b\0+\x0BV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\"\x8BW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\"\xA0W=`\0\x80>=`\0\xFD[PPPPPPPPPV[`\x94\x80b\0+\xC2\x839\x01\x90V[a\x07\x18\x80b\0,V\x839\x01\x90V[a\x0E\x81\x80b\x003n\x839\x01\x90V[aD\xED\x80b\0A\xEF\x839\x01\x90V[a\x07x\x80b\0\x86\xDC\x839\x01\x90V[a\x1E#\x80b\0\x8ET\x839\x01\x90V[a 5\x80b\0\xACw\x839\x01\x90V[a\x13a\x80b\0\xCC\xAC\x839\x01\x90V[a3\xC8\x80b\0\xE0\r\x839\x01\x90V[ac\x99\x80b\x01\x13\xD5\x839\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90\x82\x01R`\x80\x01\x90V[`\0[\x83\x81\x10\x15b\0#|W\x81\x81\x01Q\x83\x82\x01R` \x01b\0#bV[\x83\x81\x11\x15b\0#\x8CW`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Rb\0#\xAC\x81` \x86\x01` \x86\x01b\0#_V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x82R\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90b\0\x1F\xAA\x90\x83\x01\x84b\0#\x92V[`\0` \x82\x84\x03\x12\x15b\0$\x01W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0 5W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`@\x80\x82R\x83Q\x90\x82\x01\x81\x90R`\0\x90` \x90``\x84\x01\x90\x82\x87\x01\x84[\x82\x81\x10\x15b\0$\x89W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01b\0$bV[PPP`\x01`\x01`\xA0\x1B\x03\x94\x90\x94\x16\x92\x01\x91\x90\x91RP\x91\x90PV[`\0`\0\x19\x82\x14\x15b\0$\xC7WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15b\0%\x0EW\x81Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01b\0$\xE2V[P\x94\x95\x94PPPPPV[`\0\x82\x82Q\x80\x85R` \x80\x86\x01\x95P\x80\x82`\x05\x1B\x84\x01\x01\x81\x86\x01`\0\x80[\x85\x81\x10\x15b\0%\xB0W\x86\x84\x03`\x1F\x19\x01\x8AR\x82Q\x80Q\x80\x86R\x90\x86\x01\x90\x86\x86\x01\x90\x84[\x81\x81\x10\x15b\0%\x9AW\x83Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x89\x01Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x89\x84\x01R\x92\x88\x01\x92`@\x90\x92\x01\x91`\x01\x01b\0%ZV[PP\x9A\x86\x01\x9A\x94PP\x91\x84\x01\x91`\x01\x01b\0%7V[P\x91\x98\x97PPPPPPPPV[`\0a\x01\0\x80\x83\x01`\x01\x80`\xA0\x1B\x03\x80\x8D\x16\x85R` \x81\x8D\x16\x81\x87\x01R`@\x82\x8D\x16\x81\x88\x01R``\x83\x8D\x16\x81\x89\x01R`\xFF\x8C\x16`\x80\x89\x01R\x85`\xA0\x89\x01R\x84\x95P\x8AQ\x93P\x83\x85Ra\x01 \x88\x01\x95P\x82\x8B\x01\x94P`\0[\x84\x81\x10\x15b\0&RW\x85Q\x80Qc\xFF\xFF\xFF\xFF\x16\x88R\x84\x81\x01Qa\xFF\xFF\x90\x81\x16\x86\x8A\x01R\x90\x84\x01Q\x16\x83\x88\x01R\x95\x81\x01\x95\x94\x83\x01\x94`\x01\x01b\0&\x15V[PPPPPP\x82\x81\x03`\xC0\x84\x01Rb\0&l\x81\x86b\0$\xCEV[\x90P\x82\x81\x03`\xE0\x84\x01Rb\0&\x82\x81\x85b\0%\x19V[\x9B\x9APPPPPPPPPPPV[``\x81R`\0b\0&\xA6``\x83\x01\x85b\0#\x92V[\x82\x81\x03` \x80\x85\x01\x91\x90\x91R`\n\x82Ri897\xBC<\xA0\xB26\xB4\xB7`\xB1\x1B\x90\x82\x01R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16`@\x92\x83\x01RP\x01\x91\x90PV[`\0` \x82\x84\x03\x12\x15b\0&\xF4W`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15b\0'\rW`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12b\0'\"W`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\0'7Wb\0'7b\0$\x19V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15b\0'bWb\0'bb\0$\x19V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15b\0'|W`\0\x80\xFD[b\0'\x8F\x83` \x83\x01` \x88\x01b\0#_V[\x97\x96PPPPPPPV[``\x81R`\0b\0'\xAF``\x83\x01\x85b\0#\x92V[\x82\x81\x03` \x84\x01Rb\0'\xE4\x81`\x15\x81Rt6\xB7\xB1\xB5\xA0\xBB9\xA9\xB2\xB9;4\xB1\xB2\xA6\xB0\xB70\xB3\xB2\xB9`Y\x1B` \x82\x01R`@\x01\x90V[\x91PP`\x01\x80`\xA0\x1B\x03\x83\x16`@\x83\x01R\x93\x92PPPV[``\x81R`\0b\0(\x11``\x83\x01\x85b\0#\x92V[\x82\x81\x03` \x84\x01R`#\x81R\x7FmockAvsServiceManagerImplementat` \x82\x01Rb4\xB7\xB7`\xE9\x1B`@\x82\x01R``\x81\x01\x91PP`\x01\x80`\xA0\x1B\x03\x83\x16`@\x83\x01R\x93\x92PPPV[``\x81R`\0b\0(\x80``\x83\x01\x85b\0#\x92V[\x82\x81\x03` \x80\x85\x01\x91\x90\x91R`\x13\x82Rr92\xB3\xB4\xB9\xBA9<\xA1\xB7\xB7\xB924\xB70\xBA7\xB9`i\x1B\x90\x82\x01R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16`@\x92\x83\x01RP\x01\x91\x90PV[``\x81R`\0b\0(\xD9``\x83\x01\x85b\0#\x92V[\x82\x81\x03` \x84\x01R`!\x81R\x7FregistryCoordinatorImplementatio` \x82\x01R`7`\xF9\x1B`@\x82\x01R``\x81\x01\x91PP`\x01\x80`\xA0\x1B\x03\x83\x16`@\x83\x01R\x93\x92PPPV[``\x81R`\0b\0)F``\x83\x01\x85b\0#\x92V[\x82\x81\x03` \x80\x85\x01\x91\x90\x91R`\x16\x82Ru7\xB82\xB90\xBA7\xB9)\xBA0\xBA2\xA92\xBA94\xB2\xBB2\xB9`Q\x1B\x90\x82\x01R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16`@\x92\x83\x01RP\x01\x91\x90PV[``\x81R`\0b\0)\xA2``\x83\x01\x86b\0#\x92V[\x82\x81\x03` \x84\x01Rb\0)\xB6\x81\x86b\0#\x92V[\x90P\x82\x81\x03`@\x84\x01Rb\0)\xCC\x81\x85b\0#\x92V[\x96\x95PPPPPPV[`@\x81R`\0b\0*\x0C`@\x83\x01`\x15\x81Rt6\xB7\xB1\xB5\xA0\xBB9\xA9\xB2\xB9;4\xB1\xB2\xA6\xB0\xB70\xB3\xB2\xB9`Y\x1B` \x82\x01R`@\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16` \x92\x90\x92\x01\x91\x90\x91RP\x90V[`\0\x82Qb\0*:\x81\x84` \x87\x01b\0#_V[n/script/output/`\x88\x1B\x92\x01\x91\x82RP`\x0F\x01\x91\x90PV[`\0\x82Qb\0*o\x81\x84` \x87\x01b\0#_V[`/`\xF8\x1B\x92\x01\x91\x82RP`\x01\x01\x91\x90PV[`\0\x82Qb\0*\x96\x81\x84` \x87\x01b\0#_V[d\x1759\xB7\xB7`\xD9\x1B\x92\x01\x91\x82RP`\x05\x01\x91\x90PV[`\0\x84Qb\0*\xC1\x81\x84` \x89\x01b\0#_V[\x84Q\x90\x83\x01\x90b\0*\xD7\x81\x83` \x89\x01b\0#_V[\x84Q\x91\x01\x90b\0*\xEC\x81\x83` \x88\x01b\0#_V[\x01\x95\x94PPPPPV[` \x81R`\0b\0 5` \x83\x01\x84b\0#\x92V[`@\x81R`\0b\0+ `@\x83\x01\x85b\0#\x92V[\x82\x81\x03` \x84\x01Rb\0\x1F\xAA\x81\x85b\0#\x92V[`\0\x82Qb\0+H\x81\x84` \x87\x01b\0#_V[m/script/input/`\x90\x1B\x92\x01\x91\x82RP`\x0E\x01\x91\x90PV[`\0\x84Qb\0+|\x81\x84` \x89\x01b\0#_V[\x84Q\x90\x83\x01\x90b\0+\x92\x81\x83` \x89\x01b\0#_V[\x84Q\x91\x01\x90b\0+\xA7\x81\x83` \x88\x01b\0#_V[d\x1759\xB7\xB7`\xD9\x1B\x91\x01\x90\x81R`\x05\x01\x95\x94PPPPPV\xFE`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`w\x80`\x1D`\09`\0\xF3\xFE`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`(W`\x005`\xE0\x1C\x80c\xC2\x98Ux\x14`-W[`\0\x80\xFD[`\0`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3\xFE\xA2dipfsX\"\x12 \x07\xC8\x0E:\xB7[d\xAB(Q\xD2*\x866\x01\xE8\x06G5\xDA\x0B\xA4\x04\x0C\xDE\t\x90\xCB\x05(\xB7\xC0dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\0\x1A3a\0\x1FV[a\0oV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[a\x06\x9A\x80a\0~`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\0{W`\x005`\xE0\x1C\x80c\x96#`\x9D\x11a\0NW\x80c\x96#`\x9D\x14a\x01\x11W\x80c\x99\xA8\x8E\xC4\x14a\x01$W\x80c\xF2\xFD\xE3\x8B\x14a\x01DW\x80c\xF3\xB7\xDE\xAD\x14a\x01dW`\0\x80\xFD[\x80c N\x1Cz\x14a\0\x80W\x80cqP\x18\xA6\x14a\0\xBCW\x80c~\xFF'^\x14a\0\xD3W\x80c\x8D\xA5\xCB[\x14a\0\xF3W[`\0\x80\xFD[4\x80\x15a\0\x8CW`\0\x80\xFD[Pa\0\xA0a\0\x9B6`\x04a\x04\x99V[a\x01\x84V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xC8W`\0\x80\xFD[Pa\0\xD1a\x02\x15V[\0[4\x80\x15a\0\xDFW`\0\x80\xFD[Pa\0\xD1a\0\xEE6`\x04a\x04\xBDV[a\x02)V[4\x80\x15a\0\xFFW`\0\x80\xFD[P`\0T`\x01`\x01`\xA0\x1B\x03\x16a\0\xA0V[a\0\xD1a\x01\x1F6`\x04a\x05\x0CV[a\x02\x91V[4\x80\x15a\x010W`\0\x80\xFD[Pa\0\xD1a\x01?6`\x04a\x04\xBDV[a\x03\0V[4\x80\x15a\x01PW`\0\x80\xFD[Pa\0\xD1a\x01_6`\x04a\x04\x99V[a\x036V[4\x80\x15a\x01pW`\0\x80\xFD[Pa\0\xA0a\x01\x7F6`\x04a\x04\x99V[a\x03\xB4V[`\0\x80`\0\x83`\x01`\x01`\xA0\x1B\x03\x16`@Qa\x01\xAA\x90c\\`\xDA\x1B`\xE0\x1B\x81R`\x04\x01\x90V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x01\xE5W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\xEAV[``\x91P[P\x91P\x91P\x81a\x01\xF9W`\0\x80\xFD[\x80\x80` \x01\x90Q\x81\x01\x90a\x02\r\x91\x90a\x05\xE2V[\x94\x93PPPPV[a\x02\x1Da\x03\xDAV[a\x02'`\0a\x044V[V[a\x021a\x03\xDAV[`@Qc\x08\xF2\x83\x97`\xE4\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R\x83\x16\x90c\x8F(9p\x90`$\x01[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02uW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\x89W=`\0\x80>=`\0\xFD[PPPPPPV[a\x02\x99a\x03\xDAV[`@Qc'\x8FyC`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90cO\x1E\xF2\x86\x904\x90a\x02\xC9\x90\x86\x90\x86\x90`\x04\x01a\x05\xFFV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x02\xE2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\xF6W=`\0\x80>=`\0\xFD[PPPPPPPPV[a\x03\x08a\x03\xDAV[`@Qc\x1B,\xE7\xF3`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R\x83\x16\x90c6Y\xCF\xE6\x90`$\x01a\x02[V[a\x03>a\x03\xDAV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x03\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x03\xB1\x81a\x044V[PV[`\0\x80`\0\x83`\x01`\x01`\xA0\x1B\x03\x16`@Qa\x01\xAA\x90c\x03\xE1F\x91`\xE6\x1B\x81R`\x04\x01\x90V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02'W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x03\x9FV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xB1W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x04\xABW`\0\x80\xFD[\x815a\x04\xB6\x81a\x04\x84V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x04\xD0W`\0\x80\xFD[\x825a\x04\xDB\x81a\x04\x84V[\x91P` \x83\x015a\x04\xEB\x81a\x04\x84V[\x80\x91PP\x92P\x92\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15a\x05!W`\0\x80\xFD[\x835a\x05,\x81a\x04\x84V[\x92P` \x84\x015a\x05<\x81a\x04\x84V[\x91P`@\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x05YW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x05mW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x05\x7FWa\x05\x7Fa\x04\xF6V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x05\xA7Wa\x05\xA7a\x04\xF6V[\x81`@R\x82\x81R\x89` \x84\x87\x01\x01\x11\x15a\x05\xC0W`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0` \x84\x83\x01\x01R\x80\x95PPPPPP\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x05\xF4W`\0\x80\xFD[\x81Qa\x04\xB6\x81a\x04\x84V[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`\0` `@\x81\x84\x01R\x83Q\x80`@\x85\x01R`\0[\x81\x81\x10\x15a\x06;W\x85\x81\x01\x83\x01Q\x85\x82\x01``\x01R\x82\x01a\x06\x1FV[\x81\x81\x11\x15a\x06MW`\0``\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01``\x01\x94\x93PPPPV\xFE\xA2dipfsX\"\x12 \xD2\xDE\xFA2\x01\xBE\x94\x93\"\x80\x0C0\x98\xB5t\xD2m\x9Djl\xBA\xC4V\x0C\x14z\xE4\xC6u\xA9\xD4zdsolcC\0\x08\x0C\x003`\x80`@R`@Qb\0\x0E\x818\x03\x80b\0\x0E\x81\x839\x81\x01`@\x81\x90Rb\0\0&\x91b\0\x04\x90V[\x82\x81b\0\x006\x82\x82`\0b\0\0MV[Pb\0\0D\x90P\x82b\0\0\x8AV[PPPb\0\x05\xC3V[b\0\0X\x83b\0\0\xE5V[`\0\x82Q\x11\x80b\0\0fWP\x80[\x15b\0\0\x85Wb\0\0\x83\x83\x83b\0\x01'` \x1Bb\0\x02`\x17` \x1CV[P[PPPV[\x7F~dMyB/\x17\xC0\x1EH\x94\xB5\xF4\xF5\x88\xD31\xEB\xFA(e=B\xAE\x83-\xC5\x9E8\xC9y\x8Fb\0\0\xB5b\0\x01VV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x84\x16` \x83\x01R\x01`@Q\x80\x91\x03\x90\xA1b\0\0\xE2\x81b\0\x01\x8FV[PV[b\0\0\xF0\x81b\0\x02DV[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90`\0\x90\xA2PV[``b\0\x01O\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01b\0\x0EZ`'\x919b\0\x02\xF8V[\x93\x92PPPV[`\0b\0\x01\x80`\0\x80Q` b\0\x0E:\x839\x81Q\x91R`\0\x1Bb\0\x03\xDE` \x1Bb\0\x02\x08\x17` \x1CV[T`\x01`\x01`\xA0\x1B\x03\x16\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16b\0\x01\xFAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC1967: new admin is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[\x80b\0\x02#`\0\x80Q` b\0\x0E:\x839\x81Q\x91R`\0\x1Bb\0\x03\xDE` \x1Bb\0\x02\x08\x17` \x1CV[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UPV[b\0\x02Z\x81b\0\x03\xE1` \x1Bb\0\x02\x8C\x17` \x1CV[b\0\x02\xBEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FERC1967: new implementation is n`D\x82\x01Rl\x1B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x9A\x1B`d\x82\x01R`\x84\x01b\0\x01\xF1V[\x80b\0\x02#\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC`\0\x1Bb\0\x03\xDE` \x1Bb\0\x02\x08\x17` \x1CV[```\x01`\x01`\xA0\x1B\x03\x84\x16;b\0\x03bW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FAddress: delegate call to non-co`D\x82\x01Re\x1B\x9D\x1C\x98X\xDD`\xD2\x1B`d\x82\x01R`\x84\x01b\0\x01\xF1V[`\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qb\0\x03\x7F\x91\x90b\0\x05pV[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14b\0\x03\xBCW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x03\xC1V[``\x91P[P\x90\x92P\x90Pb\0\x03\xD4\x82\x82\x86b\0\x03\xF0V[\x96\x95PPPPPPV[\x90V[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[``\x83\x15b\0\x04\x01WP\x81b\0\x01OV[\x82Q\x15b\0\x04\x12W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01b\0\x01\xF1\x91\x90b\0\x05\x8EV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x04FW`\0\x80\xFD[\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15b\0\x04~W\x81\x81\x01Q\x83\x82\x01R` \x01b\0\x04dV[\x83\x81\x11\x15b\0\0\x83WPP`\0\x91\x01RV[`\0\x80`\0``\x84\x86\x03\x12\x15b\0\x04\xA6W`\0\x80\xFD[b\0\x04\xB1\x84b\0\x04.V[\x92Pb\0\x04\xC1` \x85\x01b\0\x04.V[`@\x85\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x04\xDFW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12b\0\x04\xF4W`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\0\x05\tWb\0\x05\tb\0\x04KV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15b\0\x054Wb\0\x054b\0\x04KV[\x81`@R\x82\x81R\x89` \x84\x87\x01\x01\x11\x15b\0\x05NW`\0\x80\xFD[b\0\x05a\x83` \x83\x01` \x88\x01b\0\x04aV[\x80\x95PPPPPP\x92P\x92P\x92V[`\0\x82Qb\0\x05\x84\x81\x84` \x87\x01b\0\x04aV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Rb\0\x05\xAF\x81`@\x85\x01` \x87\x01b\0\x04aV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[a\x08g\x80b\0\x05\xD3`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\0NW`\x005`\xE0\x1C\x80c6Y\xCF\xE6\x14a\0eW\x80cO\x1E\xF2\x86\x14a\0\x85W\x80c\\`\xDA\x1B\x14a\0\x98W\x80c\x8F(9p\x14a\0\xC9W\x80c\xF8Q\xA4@\x14a\0\xE9Wa\0]V[6a\0]Wa\0[a\0\xFEV[\0[a\0[a\0\xFEV[4\x80\x15a\0qW`\0\x80\xFD[Pa\0[a\0\x806`\x04a\x06\xF1V[a\x01\x18V[a\0[a\0\x936`\x04a\x07\x0CV[a\x01_V[4\x80\x15a\0\xA4W`\0\x80\xFD[Pa\0\xADa\x01\xD0V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xD5W`\0\x80\xFD[Pa\0[a\0\xE46`\x04a\x06\xF1V[a\x02\x0BV[4\x80\x15a\0\xF5W`\0\x80\xFD[Pa\0\xADa\x025V[a\x01\x06a\x02\x9BV[a\x01\x16a\x01\x11a\x03:V[a\x03DV[V[a\x01 a\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x01WWa\x01T\x81`@Q\x80` \x01`@R\x80`\0\x81RP`\0a\x03\x9BV[PV[a\x01Ta\0\xFEV[a\x01ga\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x01\xC8Wa\x01\xC3\x83\x83\x83\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RP`\x01\x92Pa\x03\x9B\x91PPV[PPPV[a\x01\xC3a\0\xFEV[`\0a\x01\xDAa\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x02\0Wa\x01\xFBa\x03:V[\x90P\x90V[a\x02\x08a\0\xFEV[\x90V[a\x02\x13a\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x01WWa\x01T\x81a\x03\xC6V[`\0a\x02?a\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x02\0Wa\x01\xFBa\x03hV[``a\x02\x85\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x08\x0B`'\x919a\x04\x1AV[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[a\x02\xA3a\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x01\x16W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R\x7FTransparentUpgradeableProxy: adm`D\x82\x01R\x7Fin cannot fallback to proxy targ`d\x82\x01Ra\x19]`\xF2\x1B`\x84\x82\x01R`\xA4\x01[`@Q\x80\x91\x03\x90\xFD[`\0a\x01\xFBa\x04\xF7V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15a\x03cW=`\0\xF3[=`\0\xFD[`\0\x7F\xB51'hJV\x8B1s\xAE\x13\xB9\xF8\xA6\x01n$>c\xB6\xE8\xEE\x11x\xD6\xA7\x17\x85\x0B]a\x03[T`\x01`\x01`\xA0\x1B\x03\x16\x91\x90PV[a\x03\xA4\x83a\x05\x1FV[`\0\x82Q\x11\x80a\x03\xB1WP\x80[\x15a\x01\xC3Wa\x03\xC0\x83\x83a\x02`V[PPPPV[\x7F~dMyB/\x17\xC0\x1EH\x94\xB5\xF4\xF5\x88\xD31\xEB\xFA(e=B\xAE\x83-\xC5\x9E8\xC9y\x8Fa\x03\xEFa\x03hV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x84\x16` \x83\x01R\x01`@Q\x80\x91\x03\x90\xA1a\x01T\x81a\x05_V[```\x01`\x01`\xA0\x1B\x03\x84\x16;a\x04\x82W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FAddress: delegate call to non-co`D\x82\x01Re\x1B\x9D\x1C\x98X\xDD`\xD2\x1B`d\x82\x01R`\x84\x01a\x031V[`\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x04\x9D\x91\x90a\x07\xBBV[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x04\xD8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x04\xDDV[``\x91P[P\x91P\x91Pa\x04\xED\x82\x82\x86a\x06\x08V[\x96\x95PPPPPPV[`\0\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x03\x8CV[a\x05(\x81a\x06AV[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90`\0\x90\xA2PV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xC4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC1967: new admin is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x031V[\x80\x7F\xB51'hJV\x8B1s\xAE\x13\xB9\xF8\xA6\x01n$>c\xB6\xE8\xEE\x11x\xD6\xA7\x17\x85\x0B]a\x03[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UPV[``\x83\x15a\x06\x17WP\x81a\x02\x85V[\x82Q\x15a\x06'W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x031\x91\x90a\x07\xD7V[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x06\xAEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FERC1967: new implementation is n`D\x82\x01Rl\x1B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x9A\x1B`d\x82\x01R`\x84\x01a\x031V[\x80\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x05\xE7V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x06\xECW`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x07\x03W`\0\x80\xFD[a\x02\x85\x82a\x06\xD5V[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x07!W`\0\x80\xFD[a\x07*\x84a\x06\xD5V[\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x07GW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x07[W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x07jW`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x07|W`\0\x80\xFD[` \x83\x01\x94P\x80\x93PPPP\x92P\x92P\x92V[`\0[\x83\x81\x10\x15a\x07\xAAW\x81\x81\x01Q\x83\x82\x01R` \x01a\x07\x92V[\x83\x81\x11\x15a\x03\xC0WPP`\0\x91\x01RV[`\0\x82Qa\x07\xCD\x81\x84` \x87\x01a\x07\x8FV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x07\xF6\x81`@\x85\x01` \x87\x01a\x07\x8FV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 t \xB9\xD3\xA1z\x9BK\x12yH*\xEAb\x85[8\xB1\xF3\xC3he\xE17\x12\xF5c/:H\x7F7dsolcC\0\x08\x0C\x003\xB51'hJV\x8B1s\xAE\x13\xB9\xF8\xA6\x01n$>c\xB6\xE8\xEE\x11x\xD6\xA7\x17\x85\x0B]a\x03Address: low-level delegate call faileda\x01\x80`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0D\xED8\x03\x80b\0D\xED\x839\x81\x01`@\x81\x90Rb\0\x005\x91b\0\x03?V[\x82\x82\x82\x85\x86`\x01`\x01`\xA0\x1B\x03\x16ch0H5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\0xW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\x9E\x91\x90b\0\x03\x93V[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\x80R\x80\x84\x16`\xA0R\x80\x83\x16`\xC0R\x81\x16`\xE0Rb\0\0\xC7b\0\x02dV[PPPP\x80`\x01`\x01`\xA0\x1B\x03\x16a\x01\0\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80`\x01`\x01`\xA0\x1B\x03\x16ch0H5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x01%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01K\x91\x90b\0\x03\x93V[`\x01`\x01`\xA0\x1B\x03\x16a\x01 \x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80`\x01`\x01`\xA0\x1B\x03\x16c]\xF4YF`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x01\xA4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01\xCA\x91\x90b\0\x03\x93V[`\x01`\x01`\xA0\x1B\x03\x16a\x01@\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPPa\x01 Q`\x01`\x01`\xA0\x1B\x03\x16c\xDF\\\xF7#`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x02&W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02L\x91\x90b\0\x03\x93V[`\x01`\x01`\xA0\x1B\x03\x16a\x01`RPb\0\x03\xBA\x92PPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\x02\xD1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FInitializable: contract is initi`D\x82\x01Rfalizing`\xC8\x1B`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[`\0T`\xFF\x90\x81\x16\x10\x15b\0\x03$W`\0\x80T`\xFF\x19\x16`\xFF\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x03=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x8B\x91\x90a:\xA4V[`@Qc\x87\x1E\xF0I`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R\x90\x91P`\0\x90`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x87\x1E\xF0I\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\xF6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\x1A\x91\x90a:\xBDV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15\x80a\x06\xB4WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x9A\xA1e=`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\x8BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xAF\x91\x90a:\xE6V[`\xFF\x16\x15[\x15a\x06\xD0WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x92\x91PPV[`\0a\x06\xE4\x82`\x01`\x01`\xC0\x1B\x03\x16a)IV[\x90P`\0\x80[\x82Q\x81\x10\x15a\x07\xBAW\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c<\xA5\xA5\xF5\x84\x83\x81Q\x81\x10a\x074Wa\x074a:lV[\x01` \x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01R`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07xW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\x9C\x91\x90a:\xA4V[a\x07\xA6\x90\x83a;\x1FV[\x91P\x80a\x07\xB2\x81a;7V[\x91PPa\x06\xEAV[P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\xD5Wa\x07\xD5a2GV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\xFEW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80[\x84Q\x81\x10\x15a\t\xBDW`\0\x85\x82\x81Q\x81\x10a\x08\"Wa\x08\"a:lV[\x01` \x01Q`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01\x81\x90R\x91P`\0\x90`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c<\xA5\xA5\xF5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\x97W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xBB\x91\x90a:\xA4V[\x90P`\0[\x81\x81\x10\x15a\t\xA7W`@QcV\xE4\x02m`\xE1\x1B\x81R`\xFF\x84\x16`\x04\x82\x01R`$\x81\x01\x82\x90R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90c\xAD\xC8\x04\xDA\x90`D\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\tY\x91\x90a;gV[`\0\x01Q\x86\x86\x81Q\x81\x10a\toWa\toa:lV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x84a\t\x91\x81a;7V[\x95PP\x80\x80a\t\x9F\x90a;7V[\x91PPa\x08\xC0V[PPP\x80\x80a\t\xB5\x90a;7V[\x91PPa\x08\x05V[P\x90\x97\x96PPPPPPPV[a\t\xD2a*\x0BV[a\t\xDB\x81a*eV[PV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n`\x91\x90a;\xA8V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0B\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R\x7FBLSSignatureChecker.onlyCoordina`D\x82\x01R\x7FtorOwner: caller is not the owne`d\x82\x01R\x7Fr of the registryCoordinator\0\0\0\0`\x84\x82\x01R`\xA4\x01[`@Q\x80\x91\x03\x90\xFD[a\t\xDB\x81a*\xCEV[`@\x80Q\x80\x82\x01\x90\x91R``\x80\x82R` \x82\x01R`\0\x84a\x0B\x91W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: empty quorum input\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x0B\x08V[`@\x83\x01QQ\x85\x14\x80\x15a\x0B\xA9WP`\xA0\x83\x01QQ\x85\x14[\x80\x15a\x0B\xB9WP`\xC0\x83\x01QQ\x85\x14[\x80\x15a\x0B\xC9WP`\xE0\x83\x01QQ\x85\x14[a\x0C3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: input quorum length mismatc`d\x82\x01R`\r`\xFB\x1B`\x84\x82\x01R`\xA4\x01a\x0B\x08V[\x82QQ` \x84\x01QQ\x14a\x0C\xABW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R`\0\x80Q` a?\xD0\x839\x81Q\x91R\x90\x82\x01R\x7Fres: input nonsigner length mism`d\x82\x01Rc\x0C.\x8Cm`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x0B\x08V[Cc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10a\r\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: invalid reference block\0\0\0\0`d\x82\x01R`\x84\x01a\x0B\x08V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x80\x83\x01\x91\x90\x91R\x82Q\x80\x84\x01\x90\x93R``\x80\x84R\x90\x83\x01R\x90\x86`\x01`\x01`@\x1B\x03\x81\x11\x15a\r[Wa\r[a2GV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\r\x84W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P` \x82\x01R\x86`\x01`\x01`@\x1B\x03\x81\x11\x15a\r\xA2Wa\r\xA2a2GV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\r\xCBW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R`@\x80Q\x80\x82\x01\x90\x91R``\x80\x82R` \x82\x01R\x85` \x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a\r\xFFWa\r\xFFa2GV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0E(W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x86\x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0EHWa\x0EHa2GV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0EqW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81` \x01\x81\x90RP`\0a\x0FC\x8A\x8A\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`@\x80Qc\x9A\xA1e=`\xE0\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x93Pc\x9A\xA1e=\x92P`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x0F\x1AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F>\x91\x90a:\xE6V[a+\x15V[\x90P`\0[\x87` \x01QQ\x81\x10\x15a\x11\xDEWa\x0F\x8D\x88` \x01Q\x82\x81Q\x81\x10a\x0FnWa\x0Fna:lV[` \x02` \x01\x01Q\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x83` \x01Q\x82\x81Q\x81\x10a\x0F\xA3Wa\x0F\xA3a:lV[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80\x15a\x10cW` \x83\x01Qa\x0F\xC4`\x01\x83a;\xC5V[\x81Q\x81\x10a\x0F\xD4Wa\x0F\xD4a:lV[` \x02` \x01\x01Q`\0\x1C\x83` \x01Q\x82\x81Q\x81\x10a\x0F\xF5Wa\x0F\xF5a:lV[` \x02` \x01\x01Q`\0\x1C\x11a\x10cW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: nonSignerPubkeys not sorted`d\x82\x01R`\x84\x01a\x0B\x08V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x84` \x01Q\x83\x81Q\x81\x10a\x10\xA8Wa\x10\xA8a:lV[` \x02` \x01\x01Q\x8B\x8B`\0\x01Q\x85\x81Q\x81\x10a\x10\xC7Wa\x10\xC7a:lV[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x11\x04\x93\x92\x91\x90\x92\x83Rc\xFF\xFF\xFF\xFF\x91\x82\x16` \x84\x01R\x16`@\x82\x01R``\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11!W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11E\x91\x90a:\xBDV[`\x01`\x01`\xC0\x1B\x03\x16\x83`\0\x01Q\x82\x81Q\x81\x10a\x11dWa\x11da:lV[` \x02` \x01\x01\x81\x81RPPa\x11\xCAa\x04\x8Ca\x11\x9E\x84\x86`\0\x01Q\x85\x81Q\x81\x10a\x11\x90Wa\x11\x90a:lV[` \x02` \x01\x01Q\x16a+\xA8V[\x8A` \x01Q\x84\x81Q\x81\x10a\x11\xB4Wa\x11\xB4a:lV[` \x02` \x01\x01Qa+\xD3\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x94P\x80a\x11\xD6\x81a;7V[\x91PPa\x0FHV[PPa\x11\xE9\x83a,\xB7V[`\x97T\x90\x93P`\xFF\x16`\0\x81a\x12\0W`\0a\x12\x82V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xC4H\xFE\xB8`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12^W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12\x82\x91\x90a:\xA4V[\x90P`\0[\x8A\x81\x10\x15a\x19\0W\x82\x15a\x13\xE2W\x89c\xFF\xFF\xFF\xFF\x16\x82\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c$\x9A\x0CB\x8F\x8F\x86\x81\x81\x10a\x12\xDEWa\x12\xDEa:lV[`@Q`\xE0\x85\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R\x92\x015`\xF8\x1C`\x04\x83\x01RP`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x13\x1EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13B\x91\x90a:\xA4V[a\x13L\x91\x90a;\x1FV[\x11a\x13\xE2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: StakeRegistry updates must `d\x82\x01R\x7Fbe within withdrawalDelayBlocks `\x84\x82\x01Rewindow`\xD0\x1B`\xA4\x82\x01R`\xC4\x01a\x0B\x08V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16ch\xBC\xCA\xAC\x8D\x8D\x84\x81\x81\x10a\x14#Wa\x14#a:lV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xA0\x01Q\x85\x81Q\x81\x10a\x14GWa\x14Ga:lV[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81R`\xFF\x90\x93\x16`\x04\x84\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x84\x01R\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\xA3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x14\xC7\x91\x90a;\xDCV[`\x01`\x01`@\x1B\x03\x19\x16a\x14\xEA\x8A`@\x01Q\x83\x81Q\x81\x10a\x0FnWa\x0Fna:lV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x14a\x15\x86W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`a`$\x82\x01R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: quorumApk hash in storage d`d\x82\x01R\x7Foes not match provided quorum ap`\x84\x82\x01R`k`\xF8\x1B`\xA4\x82\x01R`\xC4\x01a\x0B\x08V[a\x15\xB6\x89`@\x01Q\x82\x81Q\x81\x10a\x15\x9FWa\x15\x9Fa:lV[` \x02` \x01\x01Q\x87a%A\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x95P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xC8)LV\x8D\x8D\x84\x81\x81\x10a\x15\xF9Wa\x15\xF9a:lV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xC0\x01Q\x85\x81Q\x81\x10a\x16\x1DWa\x16\x1Da:lV[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81R`\xFF\x90\x93\x16`\x04\x84\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x84\x01R\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16yW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\x9D\x91\x90a<\x07V[\x85` \x01Q\x82\x81Q\x81\x10a\x16\xB3Wa\x16\xB3a:lV[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x82\x01R\x85\x01Q\x80Q\x82\x90\x81\x10a\x16\xDFWa\x16\xDFa:lV[` \x02` \x01\x01Q\x85`\0\x01Q\x82\x81Q\x81\x10a\x16\xFDWa\x16\xFDa:lV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPP`\0\x80[\x8A` \x01QQ\x81\x10\x15a\x18\xEBWa\x17u\x86`\0\x01Q\x82\x81Q\x81\x10a\x17GWa\x17Ga:lV[` \x02` \x01\x01Q\x8F\x8F\x86\x81\x81\x10a\x17aWa\x17aa:lV[`\x01\x92\x015`\xF8\x1C\x92\x90\x92\x1C\x81\x16\x14\x91\x90PV[\x15a\x18\xD9W\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xF2\xBE\x94\xAE\x8F\x8F\x86\x81\x81\x10a\x17\xBBWa\x17\xBBa:lV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8E\x89` \x01Q\x85\x81Q\x81\x10a\x17\xDFWa\x17\xDFa:lV[` \x02` \x01\x01Q\x8F`\xE0\x01Q\x88\x81Q\x81\x10a\x17\xFDWa\x17\xFDa:lV[` \x02` \x01\x01Q\x87\x81Q\x81\x10a\x18\x16Wa\x18\x16a:lV[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x87\x90\x1B\x16\x81R`\xFF\x90\x94\x16`\x04\x85\x01Rc\xFF\xFF\xFF\xFF\x92\x83\x16`$\x85\x01R`D\x84\x01\x91\x90\x91R\x16`d\x82\x01R`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x18zW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x18\x9E\x91\x90a<\x07V[\x87Q\x80Q\x85\x90\x81\x10a\x18\xB2Wa\x18\xB2a:lV[` \x02` \x01\x01\x81\x81Qa\x18\xC6\x91\x90a<$V[`\x01`\x01``\x1B\x03\x16\x90RP`\x01\x90\x91\x01\x90[\x80a\x18\xE3\x81a;7V[\x91PPa\x17!V[PP\x80\x80a\x18\xF8\x90a;7V[\x91PPa\x12\x87V[PPP`\0\x80a\x19\x1A\x8C\x86\x8A``\x01Q\x8B`\x80\x01Qa\x03qV[\x91P\x91P\x81a\x19\x8BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: pairing precompile call fai`d\x82\x01Rb\x1B\x19Y`\xEA\x1B`\x84\x82\x01R`\xA4\x01a\x0B\x08V[\x80a\x19\xECW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`9`$\x82\x01R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: signature is invalid\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x0B\x08V[PP`\0\x87\x82` \x01Q`@Q` \x01a\x1A\x07\x92\x91\x90a=`\0\xFD[PPPPPPV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x1BYW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x0B\x08\x90a<\x94V[`@QcQ\xB2zm`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xA3d\xF4\xDA\x90`$\x01[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1B\xBDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1B\xD1W=`\0\x80>=`\0\xFD[PPPPPV[a\x1B\xE0a*\x0BV[`@Qc\xA9\x8F\xB3U`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xA9\x8F\xB3U\x90a\x1B\xA3\x90\x84\x90`\x04\x01a=\xA4V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x1CLWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x1CfWP0;\x15\x80\x15a\x1CfWP`\0T`\xFF\x16`\x01\x14[a\x1C\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01a\x0B\x08V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x1C\xECW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x1C\xF6\x82\x83a-\xA4V[\x80\x15a\x1D=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1D\xC6\x91\x90a:\xE6V[`\xFF\x16\x90P\x80a\x1D\xE4WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x90V[`\0\x80[\x82\x81\x10\x15a\x1E\x99W`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xFF\x82\x16`\x04\x82\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90c<\xA5\xA5\xF5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1EWW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1E{\x91\x90a:\xA4V[a\x1E\x85\x90\x83a;\x1FV[\x91P\x80a\x1E\x91\x81a;7V[\x91PPa\x1D\xE8V[P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\xB4Wa\x1E\xB4a2GV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1E\xDDW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x9A\xA1e=`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1FBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Ff\x91\x90a:\xE6V[`\xFF\x16\x81\x10\x15a \xFFW`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xFF\x82\x16`\x04\x82\x01R`\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90c<\xA5\xA5\xF5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1F\xDAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F\xFE\x91\x90a:\xA4V[\x90P`\0[\x81\x81\x10\x15a \xEAW`@QcV\xE4\x02m`\xE1\x1B\x81R`\xFF\x84\x16`\x04\x82\x01R`$\x81\x01\x82\x90R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90c\xAD\xC8\x04\xDA\x90`D\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a xW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a \x9C\x91\x90a;gV[`\0\x01Q\x85\x85\x81Q\x81\x10a \xB2Wa \xB2a:lV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x83a \xD4\x81a;7V[\x94PP\x80\x80a \xE2\x90a;7V[\x91PPa \x03V[PP\x80\x80a \xF7\x90a;7V[\x91PPa\x1E\xE4V[P\x90\x94\x93PPPPV[a!\x11a*\x0BV[`\x01`\x01`\xA0\x1B\x03\x81\x16a!vW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x0B\x08V[a\t\xDB\x81a-RV[a!\x87a.!V[`\0[\x81\x81\x10\x15a$[W\x82\x82\x82\x81\x81\x10a!\xA4Wa!\xA4a:lV[\x90P` \x02\x81\x01\x90a!\xB6\x91\x90a=\xBEV[a!\xC7\x90`@\x81\x01\x90` \x01a4 V[`\x01`\x01`\xA0\x1B\x03\x16c#\xB8r\xDD30\x86\x86\x86\x81\x81\x10a!\xE9Wa!\xE9a:lV[\x90P` \x02\x81\x01\x90a!\xFB\x91\x90a=\xBEV[`@\x80Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x87\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`\x04\x82\x01R\x93\x90\x92\x16`$\x84\x01R\x015`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\"RW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\"v\x91\x90a=\xE9V[P`\0\x83\x83\x83\x81\x81\x10a\"\x8BWa\"\x8Ba:lV[\x90P` \x02\x81\x01\x90a\"\x9D\x91\x90a=\xBEV[a\"\xAE\x90`@\x81\x01\x90` \x01a4 V[`@Qcn\xB1v\x9F`\xE1\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16`$\x83\x01R\x91\x90\x91\x16\x90c\xDDb\xED>\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a#\x1CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a#@\x91\x90a:\xA4V[\x90P\x83\x83\x83\x81\x81\x10a#TWa#Ta:lV[\x90P` \x02\x81\x01\x90a#f\x91\x90a=\xBEV[a#w\x90`@\x81\x01\x90` \x01a4 V[`\x01`\x01`\xA0\x1B\x03\x16c\t^\xA7\xB3\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x87\x87\x87\x81\x81\x10a#\xB9Wa#\xB9a:lV[\x90P` \x02\x81\x01\x90a#\xCB\x91\x90a=\xBEV[`@\x015a#\xD9\x91\x90a;\x1FV[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x85\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16`\x04\x83\x01R`$\x82\x01R`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a$$W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a$H\x91\x90a=\xE9V[PP\x80a$T\x90a;7V[\x90Pa!\x8AV[P`@Qc\xFC\xE3l}`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xFC\xE3l}\x90a\x1A\xDB\x90\x85\x90\x85\x90`\x04\x01a>aV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra$\xC6a1mV[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R`\0\x90\x83``\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a$\xF9Wa$\xFBV[\xFE[P\x80a%9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x0B\x08V[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra%]a1\x8BV[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x80\x84\x01\x91\x90\x91R\x90\x84\x01Q``\x83\x01R`\0\x90\x83`\x80\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a$\xF9WP\x80a%9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCBXY\x19\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x0B\x08V[a%\xDDa1\xA9V[P`@\x80Q`\x80\x81\x01\x82R\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81\x83\x01\x90\x81R\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED``\x83\x01R\x81R\x81Q\x80\x83\x01\x90\x92R\x7F']\xC4\xA2\x88\xD1\xAF\xB3\xCB\xB1\xAC\t\x18u$\xC7\xDB69]\xF7\xBE;\x99\xE6s\xB1:\x07Ze\xEC\x82R\x7F\x1D\x9B\xEF\xCD\x05\xA52>m\xA4\xD45\xF3\xB6\x17\xCD\xB3\xAF\x83(\\-\xF7\x11\xEF9\xC0\x15q\x82\x7F\x9D` \x83\x81\x01\x91\x90\x91R\x81\x01\x91\x90\x91R\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0\x80\x80a&\xC5`\0\x80Q` a?\xB0\x839\x81Q\x91R\x86a:\x82V[\x90P[a&\xD1\x81a.\xB6V[\x90\x93P\x91P`\0\x80Q` a?\xB0\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a'\x0BW`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` a?\xB0\x839\x81Q\x91R`\x01\x82\x08\x90Pa&\xC8V[`@\x80Q\x80\x82\x01\x82R\x86\x81R` \x80\x82\x01\x86\x90R\x82Q\x80\x84\x01\x90\x93R\x86\x83R\x82\x01\x84\x90R`\0\x91\x82\x91\x90a'Wa1\xCEV[`\0[`\x02\x81\x10\x15a)\x1CW`\0a'p\x82`\x06a?nV[\x90P\x84\x82`\x02\x81\x10a'\x84Wa'\x84a:lV[` \x02\x01QQ\x83a'\x96\x83`\0a;\x1FV[`\x0C\x81\x10a'\xA6Wa'\xA6a:lV[` \x02\x01R\x84\x82`\x02\x81\x10a'\xBDWa'\xBDa:lV[` \x02\x01Q` \x01Q\x83\x82`\x01a'\xD4\x91\x90a;\x1FV[`\x0C\x81\x10a'\xE4Wa'\xE4a:lV[` \x02\x01R\x83\x82`\x02\x81\x10a'\xFBWa'\xFBa:lV[` \x02\x01QQQ\x83a(\x0E\x83`\x02a;\x1FV[`\x0C\x81\x10a(\x1EWa(\x1Ea:lV[` \x02\x01R\x83\x82`\x02\x81\x10a(5Wa(5a:lV[` \x02\x01QQ`\x01` \x02\x01Q\x83a(N\x83`\x03a;\x1FV[`\x0C\x81\x10a(^Wa(^a:lV[` \x02\x01R\x83\x82`\x02\x81\x10a(uWa(ua:lV[` \x02\x01Q` \x01Q`\0`\x02\x81\x10a(\x90Wa(\x90a:lV[` \x02\x01Q\x83a(\xA1\x83`\x04a;\x1FV[`\x0C\x81\x10a(\xB1Wa(\xB1a:lV[` \x02\x01R\x83\x82`\x02\x81\x10a(\xC8Wa(\xC8a:lV[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a(\xE3Wa(\xE3a:lV[` \x02\x01Q\x83a(\xF4\x83`\x05a;\x1FV[`\x0C\x81\x10a)\x04Wa)\x04a:lV[` \x02\x01RP\x80a)\x14\x81a;7V[\x91PPa'ZV[Pa)%a1\xEDV[`\0` \x82a\x01\x80\x85`\x08\x8C\xFA\x91Q\x91\x9C\x91\x15\x15\x9BP\x90\x99PPPPPPPPPPV[```\0\x80a)W\x84a+\xA8V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a)rWa)ra2GV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a)\x9CW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a)\xB4WPa\x01\0\x81\x10[\x15a \xFFW`\x01\x81\x1B\x93P\x85\x84\x16\x15a)\xFBW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a)\xDDWa)\xDDa:lV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a*\x04\x81a;7V[\x90Pa)\xA3V[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x1ACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x0B\x08V[`eT`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\xE1\x1C\xDD\xF1\x81jC1\x8C\xA1u\xBB\xC5,\xD0\x18T6\xE9\xCB\xEA\xD7\xC8:\xCCT\xA7>F\x17\x17\xE3\x91\x01`@Q\x80\x91\x03\x90\xA1`e\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x97\x80T`\xFF\x19\x16\x82\x15\x15\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F@\xE4\xED\x88\n)\xE0\xF6\xDD\xCE0tW\xFBu\xCD\xDFO\xEE\xF7\xD3\xEC\xB00\x1B\xFD\xF4\x97j\x0E-\xFC\x90` \x01`@Q\x80\x91\x03\x90\xA1PV[`\0\x80a+!\x84a/8V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a+\x9FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`?`$\x82\x01R\x7FBitmapUtils.orderedBytesArrayToB`D\x82\x01R\x7Fitmap: bitmap exceeds max value\0`d\x82\x01R`\x84\x01a\x0B\x08V[\x90P[\x92\x91PPV[`\0\x80[\x82\x15a+\xA2Wa+\xBD`\x01\x84a;\xC5V[\x90\x92\x16\x91\x80a+\xCB\x81a?\x8DV[\x91PPa+\xACV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x02\0\x82a\xFF\xFF\x16\x10a,/W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01Roscalar-too-large`\x80\x1B`D\x82\x01R`d\x01a\x0B\x08V[\x81a\xFF\xFF\x16`\x01\x14\x15a,CWP\x81a+\xA2V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01\x81\x90R\x84\x90`\x01\x90[\x81a\xFF\xFF\x16\x86a\xFF\xFF\x16\x10a,\xACW`\x01a\xFF\xFF\x87\x16`\xFF\x83\x16\x1C\x81\x16\x14\x15a,\x8FWa,\x8C\x84\x84a%AV[\x93P[a,\x99\x83\x84a%AV[\x92Pb\x01\xFF\xFE`\x01\x92\x83\x1B\x16\x91\x01a,_V[P\x91\x95\x94PPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a,\xDCWP` \x82\x01Q\x15[\x15a,\xFAWPP`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x90V[`@Q\x80`@\x01`@R\x80\x83`\0\x01Q\x81R` \x01`\0\x80Q` a?\xB0\x839\x81Q\x91R\x84` \x01Qa--\x91\x90a:\x82V[a-E\x90`\0\x80Q` a?\xB0\x839\x81Q\x91Ra;\xC5V[\x90R\x92\x91PPV[\x91\x90PV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[`\0Ta\x01\0\x90\x04`\xFF\x16a.\x0FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`+`$\x82\x01R\x7FInitializable: contract is not i`D\x82\x01Rjnitializing`\xA8\x1B`d\x82\x01R`\x84\x01a\x0B\x08V[a.\x18\x82a-RV[a\x1D<\x81a*eV[`eT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x1ACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`L`$\x82\x01R\x7FServiceManagerBase.onlyRewardsIn`D\x82\x01R\x7Fitiator: caller is not the rewar`d\x82\x01Rk29\x904\xB74\xBA4\xB0\xBA7\xB9`\xA1\x1B`\x84\x82\x01R`\xA4\x01a\x0B\x08V[`\0\x80\x80`\0\x80Q` a?\xB0\x839\x81Q\x91R`\x03`\0\x80Q` a?\xB0\x839\x81Q\x91R\x86`\0\x80Q` a?\xB0\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0a/,\x82\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R`\0\x80Q` a?\xB0\x839\x81Q\x91Ra0\xC5V[\x91\x95\x91\x94P\x90\x92PPPV[`\0a\x01\0\x82Q\x11\x15a/\xC1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FBitmapUtils.orderedBytesArrayToB\x90\x82\x01R\x7Fitmap: orderedBytesArray is too `d\x82\x01Rclong`\xE0\x1B`\x84\x82\x01R`\xA4\x01a\x0B\x08V[\x81Qa/\xCFWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a/\xE5Wa/\xE5a:lV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a0\xBCW\x84\x81\x81Q\x81\x10a0\x13Wa0\x13a:lV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a0\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FBitmapUtils.orderedBytesArrayToB`D\x82\x01R\x7Fitmap: orderedBytesArray is not `d\x82\x01Rf\x1B\xDC\x99\x19\\\x99Y`\xCA\x1B`\x84\x82\x01R`\xA4\x01a\x0B\x08V[\x91\x81\x17\x91a0\xB5\x81a;7V[\x90Pa/\xF8V[P\x90\x93\x92PPPV[`\0\x80a0\xD0a1\xEDV[a0\xD8a2\x0BV[` \x80\x82R\x81\x81\x01\x81\x90R`@\x82\x01\x81\x90R``\x82\x01\x88\x90R`\x80\x82\x01\x87\x90R`\xA0\x82\x01\x86\x90R\x82`\xC0\x83`\x05a\x07\xD0Z\x03\xFA\x92P\x82\x80\x15a$\xF9WP\x82a1bW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7FBN254.expMod: call failure\0\0\0\0\0\0`D\x82\x01R`d\x01a\x0B\x08V[PQ\x95\x94PPPPPV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\x80\x01`@R\x80`\x04\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80a1\xBCa2)V[\x81R` \x01a1\xC9a2)V[\x90R\x90V[`@Q\x80a\x01\x80\x01`@R\x80`\x0C\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80` \x01`@R\x80`\x01\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\xC0\x01`@R\x80`\x06\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2\x7FWa2\x7Fa2GV[`@R\x90V[`@Qa\x01\0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2\x7FWa2\x7Fa2GV[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2\x7FWa2\x7Fa2GV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2\xF2Wa2\xF2a2GV[`@R\x91\x90PV[`\0`@\x82\x84\x03\x12\x15a3\x0CW`\0\x80\xFD[a3\x14a2]V[\x90P\x815\x81R` \x82\x015` \x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a3;W`\0\x80\xFD[a3Ca2]V[\x80`@\x84\x01\x85\x81\x11\x15a3UW`\0\x80\xFD[\x84[\x81\x81\x10\x15a3oW\x805\x84R` \x93\x84\x01\x93\x01a3WV[P\x90\x95\x94PPPPPV[`\0`\x80\x82\x84\x03\x12\x15a3\x8CW`\0\x80\xFD[a3\x94a2]V[\x90Pa3\xA0\x83\x83a3*V[\x81Ra3\xAF\x83`@\x84\x01a3*V[` \x82\x01R\x92\x91PPV[`\0\x80`\0\x80a\x01 \x85\x87\x03\x12\x15a3\xD1W`\0\x80\xFD[\x845\x93Pa3\xE2\x86` \x87\x01a2\xFAV[\x92Pa3\xF1\x86``\x87\x01a3zV[\x91Pa4\0\x86`\xE0\x87\x01a2\xFAV[\x90P\x92\x95\x91\x94P\x92PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\xDBW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a42W`\0\x80\xFD[\x815a+\x9F\x81a4\x0BV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a4~W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a4YV[P\x90\x96\x95PPPPPPV[\x80\x15\x15\x81\x14a\t\xDBW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a4\xAAW`\0\x80\xFD[\x815a+\x9F\x81a4\x8AV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a-MW`\0\x80\xFD[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a4\xE2Wa4\xE2a2GV[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a4\xFDW`\0\x80\xFD[\x815` a5\x12a5\r\x83a4\xC9V[a2\xCAV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a51W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a5SWa5F\x81a4\xB5V[\x83R\x91\x83\x01\x91\x83\x01a55V[P\x96\x95PPPPPPV[`\0\x82`\x1F\x83\x01\x12a5oW`\0\x80\xFD[\x815` a5\x7Fa5\r\x83a4\xC9V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a5\x9EW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a5SWa5\xB4\x88\x82a2\xFAV[\x83R\x91\x83\x01\x91`@\x01a5\xA2V[`\0\x82`\x1F\x83\x01\x12a5\xD3W`\0\x80\xFD[\x815` a5\xE3a5\r\x83a4\xC9V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a6\x02W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a5SW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a6%W`\0\x80\x81\xFD[a63\x89\x86\x83\x8B\x01\x01a4\xECV[\x84RP\x91\x83\x01\x91\x83\x01a6\x06V[`\0a\x01\x80\x82\x84\x03\x12\x15a6TW`\0\x80\xFD[a6\\a2\x85V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a6uW`\0\x80\xFD[a6\x81\x85\x83\x86\x01a4\xECV[\x83R` \x84\x015\x91P\x80\x82\x11\x15a6\x97W`\0\x80\xFD[a6\xA3\x85\x83\x86\x01a5^V[` \x84\x01R`@\x84\x015\x91P\x80\x82\x11\x15a6\xBCW`\0\x80\xFD[a6\xC8\x85\x83\x86\x01a5^V[`@\x84\x01Ra6\xDA\x85``\x86\x01a3zV[``\x84\x01Ra6\xEC\x85`\xE0\x86\x01a2\xFAV[`\x80\x84\x01Ra\x01 \x84\x015\x91P\x80\x82\x11\x15a7\x06W`\0\x80\xFD[a7\x12\x85\x83\x86\x01a4\xECV[`\xA0\x84\x01Ra\x01@\x84\x015\x91P\x80\x82\x11\x15a7,W`\0\x80\xFD[a78\x85\x83\x86\x01a4\xECV[`\xC0\x84\x01Ra\x01`\x84\x015\x91P\x80\x82\x11\x15a7RW`\0\x80\xFD[Pa7_\x84\x82\x85\x01a5\xC2V[`\xE0\x83\x01RP\x92\x91PPV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a7\x83W`\0\x80\xFD[\x855\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a7\xA1W`\0\x80\xFD[\x81\x88\x01\x91P\x88`\x1F\x83\x01\x12a7\xB5W`\0\x80\xFD[\x815\x81\x81\x11\x15a7\xC4W`\0\x80\xFD[\x89` \x82\x85\x01\x01\x11\x15a7\xD6W`\0\x80\xFD[` \x83\x01\x96P\x94Pa7\xEA`@\x89\x01a4\xB5V[\x93P``\x88\x015\x91P\x80\x82\x11\x15a8\0W`\0\x80\xFD[Pa8\r\x88\x82\x89\x01a6AV[\x91PP\x92\x95P\x92\x95\x90\x93PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a8SW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a8.V[P\x94\x95\x94PPPPPV[`@\x81R`\0\x83Q`@\x80\x84\x01Ra8y`\x80\x84\x01\x82a8\x1AV[\x90P` \x85\x01Q`?\x19\x84\x83\x03\x01``\x85\x01Ra8\x96\x82\x82a8\x1AV[\x92PPP\x82` \x83\x01R\x93\x92PPPV[`\0`\x01`\x01`@\x1B\x03\x83\x11\x15a8\xC0Wa8\xC0a2GV[a8\xD3`\x1F\x84\x01`\x1F\x19\x16` \x01a2\xCAV[\x90P\x82\x81R\x83\x83\x83\x01\x11\x15a8\xE7W`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a9\x11W`\0\x80\xFD[\x825a9\x1C\x81a4\x0BV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a98W`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a9LW`\0\x80\xFD[a9Ta2\xA8V[\x825\x82\x81\x11\x15a9cW`\0\x80\xFD[\x83\x01\x91P`\x1F\x82\x01\x87\x13a9vW`\0\x80\xFD[a9\x85\x87\x835` \x85\x01a8\xA7V[\x81R` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x93PPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a9\xBAW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a9\xD0W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a9\xE1W`\0\x80\xFD[a9\xF0\x84\x825` \x84\x01a8\xA7V[\x94\x93PPPPV[`\0\x80` \x83\x85\x03\x12\x15a:\x0BW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a:\"W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a:6W`\0\x80\xFD[\x815\x81\x81\x11\x15a:EW`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a:ZW`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x82a:\x9FWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`\0` \x82\x84\x03\x12\x15a:\xB6W`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a:\xCFW`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a+\x9FW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a:\xF8W`\0\x80\xFD[\x81Q`\xFF\x81\x16\x81\x14a+\x9FW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a;2Wa;2a;\tV[P\x01\x90V[`\0`\0\x19\x82\x14\x15a;KWa;Ka;\tV[P`\x01\x01\x90V[`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\t\xDBW`\0\x80\xFD[`\0`@\x82\x84\x03\x12\x15a;yW`\0\x80\xFD[a;\x81a2]V[\x82Qa;\x8C\x81a4\x0BV[\x81R` \x83\x01Qa;\x9C\x81a;RV[` \x82\x01R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a;\xBAW`\0\x80\xFD[\x81Qa+\x9F\x81a4\x0BV[`\0\x82\x82\x10\x15a;\xD7Wa;\xD7a;\tV[P\x03\x90V[`\0` \x82\x84\x03\x12\x15a;\xEEW`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x16\x81\x14a+\x9FW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a<\x19W`\0\x80\xFD[\x81Qa+\x9F\x81a;RV[`\0`\x01`\x01``\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15a)\x81a4\x0BV[`\x01`\x01`\xA0\x1B\x03\x16\x87R\x81\x83\x015a>A\x81a;RV[`\x01`\x01``\x1B\x03\x16\x87\x84\x01R`@\x96\x87\x01\x96\x91\x90\x91\x01\x90`\x01\x01a>\x16V[` \x80\x82R\x81\x81\x01\x83\x90R`\0\x90`@\x80\x84\x01`\x05\x86\x90\x1B\x85\x01\x82\x01\x87\x85[\x88\x81\x10\x15a?`W\x87\x83\x03`?\x19\x01\x84R\x8156\x8B\x90\x03`\x9E\x19\x01\x81\x12a>\xA6W`\0\x80\xFD[\x8A\x01`\xA0\x8156\x83\x90\x03`\x1E\x19\x01\x81\x12a>\xBFW`\0\x80\xFD[\x82\x01\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a>\xD7W`\0\x80\xFD[\x80`\x06\x1B6\x03\x84\x13\x15a>\xE9W`\0\x80\xFD[\x82\x87Ra>\xFB\x83\x88\x01\x82\x8C\x85\x01a>\x06V[\x92PPPa?\n\x88\x83\x01a=\xDEV[`\x01`\x01`\xA0\x1B\x03\x16\x88\x86\x01R\x81\x87\x015\x87\x86\x01R``a?,\x81\x84\x01a4\xB5V[c\xFF\xFF\xFF\xFF\x16\x90\x86\x01R`\x80a?C\x83\x82\x01a4\xB5V[c\xFF\xFF\xFF\xFF\x16\x95\x01\x94\x90\x94RP\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a>\x80V[P\x90\x98\x97PPPPPPPPV[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a?\x88Wa?\x88a;\tV[P\x02\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a?\xA5Wa?\xA5a;\tV[`\x01\x01\x93\x92PPPV\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGBLSSignatureChecker.checkSignatu\xA2dipfsX\"\x12 \x04\xD1K\x0CgI\x1Co\x81\xFCh`\x90\xC2\xB8\x01X~_w\x17v\x04\x07\xA2v\xDC\x8BQ~o\xC0dsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x07x8\x03\x80a\x07x\x839\x81\x01`@\x81\x90Ra\0/\x91a\x02cV[`\0[\x82Q\x81\x10\x15a\0wWa\0e\x83\x82\x81Q\x81\x10a\0PWa\0Pa\x039V[` \x02` \x01\x01Q`\x01a\0\x88` \x1B` \x1CV[\x80a\0o\x81a\x03OV[\x91PPa\x002V[Pa\0\x81\x81a\x01ZV[PPa\x03xV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\0\xF9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FPauserRegistry._setPauser: zero `D\x82\x01Rl\x18Y\x19\x1C\x99\\\xDC\xC8\x1A[\x9C\x1D]`\x9A\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x81\x81R` \x81\x81R`@\x91\x82\x90 \x80T`\xFF\x19\x16\x85\x15\x15\x90\x81\x17\x90\x91U\x82Q\x93\x84R\x90\x83\x01R\x7Fe\xD3\xA1\xFDL\x13\xF0\\\xBA\x16O\x80\xD0<\xE9\x0F\xB4\xB5\xE2\x19F\xBF\xC3\xAB}\xBDCL-\x0B\x91R\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x01\xC8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FPauserRegistry._setUnpauser: zer`D\x82\x01Rn\x1B\xC8\x18Y\x19\x1C\x99\\\xDC\xC8\x1A[\x9C\x1D]`\x8A\x1B`d\x82\x01R`\x84\x01a\0\xF0V[`\x01T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\x06\xB4\x16z%(\x88z\x1E\x97\xA3f\xEE\xFE\x85I\xBF\xBF\x1E\xA3\xE6\xAC\x81\xCB%d\xA94\xD2\x0E\x88\x92\x91\x01`@Q\x80\x91\x03\x90\xA1`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x02^W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x02vW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x02\x8DW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x02\xA1W`\0\x80\xFD[\x81Q` \x82\x82\x11\x15a\x02\xB5Wa\x02\xB5a\x021V[\x81`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x86\x82\x11\x17\x15a\x02\xDAWa\x02\xDAa\x021V[`@R\x92\x83R\x81\x83\x01\x93P\x84\x81\x01\x82\x01\x92\x89\x84\x11\x15a\x02\xF8W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a\x03\x1DWa\x03\x0E\x86a\x02GV[\x85R\x94\x82\x01\x94\x93\x82\x01\x93a\x02\xFDV[\x96Pa\x03,\x90P\x87\x82\x01a\x02GV[\x94PPPPP\x92P\x92\x90PV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x03qWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V[a\x03\xF1\x80a\x03\x87`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0LW`\x005`\xE0\x1C\x80cF\xFB\xF6\x8E\x14a\0QW\x80c\x85hR\x06\x14a\0\x89W\x80c\xCET\x84(\x14a\0\x9EW\x80c\xEA\xB6mz\x14a\0\xB1W[`\0\x80\xFD[a\0ta\0_6`\x04a\x03\x13V[`\0` \x81\x90R\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\x9Ca\0\x976`\x04a\x035V[a\0\xDCV[\0[a\0\x9Ca\0\xAC6`\x04a\x03\x13V[a\x01\x1DV[`\x01Ta\0\xC4\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\x80V[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01\x0FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\x06\x90a\x03qV[`@Q\x80\x91\x03\x90\xFD[a\x01\x19\x82\x82a\x01SV[PPV[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01GW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\x06\x90a\x03qV[a\x01P\x81a\x02 V[PV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x01\xBFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FPauserRegistry._setPauser: zero `D\x82\x01Rl\x18Y\x19\x1C\x99\\\xDC\xC8\x1A[\x9C\x1D]`\x9A\x1B`d\x82\x01R`\x84\x01a\x01\x06V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x81\x81R` \x81\x81R`@\x91\x82\x90 \x80T`\xFF\x19\x16\x85\x15\x15\x90\x81\x17\x90\x91U\x82Q\x93\x84R\x90\x83\x01R\x7Fe\xD3\xA1\xFDL\x13\xF0\\\xBA\x16O\x80\xD0<\xE9\x0F\xB4\xB5\xE2\x19F\xBF\xC3\xAB}\xBDCL-\x0B\x91R\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x02\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FPauserRegistry._setUnpauser: zer`D\x82\x01Rn\x1B\xC8\x18Y\x19\x1C\x99\\\xDC\xC8\x1A[\x9C\x1D]`\x8A\x1B`d\x82\x01R`\x84\x01a\x01\x06V[`\x01T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\x06\xB4\x16z%(\x88z\x1E\x97\xA3f\xEE\xFE\x85I\xBF\xBF\x1E\xA3\xE6\xAC\x81\xCB%d\xA94\xD2\x0E\x88\x92\x91\x01`@Q\x80\x91\x03\x90\xA1`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x0EW`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x03%W`\0\x80\xFD[a\x03.\x82a\x02\xF7V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x03HW`\0\x80\xFD[a\x03Q\x83a\x02\xF7V[\x91P` \x83\x015\x80\x15\x15\x81\x14a\x03fW`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[` \x80\x82R`*\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Ri9\x90:\xB780\xBA\xB9\xB2\xB9`\xB1\x1B``\x82\x01R`\x80\x01\x90V\xFE\xA2dipfsX\"\x12 '\xE8\x96\xEE\xD5\xAF\xE9D\xD6\xCC\x17*\xEFr\xE2a\x08\xDBL\xB8(q\xC2\x9E\xE2\x97h`F\xC2\xEEMdsolcC\0\x08\x0C\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x1E\x03\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0bW`\x005`\xE0\x1C\x80c1\xB3k\xD9\x14a\0gW\x80c5c\xB0\xD1\x14a\0\x90W\x80cM+W\xFE\x14a\0\xB0W\x80cOs\x9Ft\x14a\0\xD0W\x80c\\\x15Vb\x14a\0\xF0W\x80c\xCE\xFD\xC1\xD4\x14a\x01\x10W[`\0\x80\xFD[a\0za\0u6`\x04a\x13\xFAV[a\x011V[`@Qa\0\x87\x91\x90a\x14\xE8V[`@Q\x80\x91\x03\x90\xF3[a\0\xA3a\0\x9E6`\x04a\x15$V[a\x02MV[`@Qa\0\x87\x91\x90a\x16\x7FV[a\0\xC3a\0\xBE6`\x04a\x16\xF8V[a\x06\xE3V[`@Qa\0\x87\x91\x90a\x17GV[a\0\xE3a\0\xDE6`\x04a\x17\xDFV[a\x07\xF8V[`@Qa\0\x87\x91\x90a\x18\xD7V[a\x01\x03a\0\xFE6`\x04a\x19\x92V[a\x0F\"V[`@Qa\0\x87\x91\x90a\x19\xF5V[a\x01#a\x01\x1E6`\x04a\x1A-V[a\x10\xEAV[`@Qa\0\x87\x92\x91\x90a\x1AdV[``\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x01LWa\x01La\x13\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01uW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82Q\x81\x10\x15a\x02FW\x83`\x01`\x01`\xA0\x1B\x03\x16c\x13T*N\x84\x83\x81Q\x81\x10a\x01\xA5Wa\x01\xA5a\x1A\x85V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x01\xD8\x91\x90`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xF5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x19\x91\x90a\x1A\x9BV[\x82\x82\x81Q\x81\x10a\x02+Wa\x02+a\x1A\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01Ra\x02?\x81a\x1A\xCAV[\x90Pa\x01{V[P\x92\x91PPV[```\0\x84`\x01`\x01`\xA0\x1B\x03\x16ch0H5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\x8FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xB3\x91\x90a\x1A\xE5V[\x90P`\0\x85`\x01`\x01`\xA0\x1B\x03\x16c\x9E\x99#\xC2`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\xF5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\x19\x91\x90a\x1A\xE5V[\x90P`\0\x86`\x01`\x01`\xA0\x1B\x03\x16c]\xF4YF`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03[W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\x7F\x91\x90a\x1A\xE5V[\x90P`\0\x86Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03\x9CWa\x03\x9Ca\x13\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x03\xCFW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x03\xBAW\x90P[P\x90P`\0[\x87Q\x81\x10\x15a\x06\xD7W`\0\x88\x82\x81Q\x81\x10a\x03\xF2Wa\x03\xF2a\x1A\x85V[\x01` \x01Q`@Qc\x89\x02bE`\xE0\x1B\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01\x81\x90Rc\xFF\xFF\xFF\xFF\x8A\x16`$\x83\x01R\x91P`\0\x90`\x01`\x01`\xA0\x1B\x03\x87\x16\x90c\x89\x02bE\x90`D\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04SW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x04{\x91\x90\x81\x01\x90a\x1B\x02V[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x04\x96Wa\x04\x96a\x13\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04\xE1W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R`\0\x19\x90\x92\x01\x91\x01\x81a\x04\xB4W\x90P[P\x84\x84\x81Q\x81\x10a\x04\xF4Wa\x04\xF4a\x1A\x85V[` \x02` \x01\x01\x81\x90RP`\0[\x81Q\x81\x10\x15a\x06\xC1W`@Q\x80``\x01`@R\x80\x87`\x01`\x01`\xA0\x1B\x03\x16cG\xB3\x14\xE8\x85\x85\x81Q\x81\x10a\x057Wa\x057a\x1A\x85V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x05]\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05zW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x9E\x91\x90a\x1A\xE5V[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x83\x81Q\x81\x10a\x05\xBEWa\x05\xBEa\x1A\x85V[` \x02` \x01\x01Q\x81R` \x01\x89`\x01`\x01`\xA0\x1B\x03\x16c\xFA(\xC6'\x85\x85\x81Q\x81\x10a\x05\xECWa\x05\xECa\x1A\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\x04\x81\x01\x91\x90\x91R`\xFF\x88\x16`$\x82\x01Rc\xFF\xFF\xFF\xFF\x8F\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06HW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06l\x91\x90a\x1B\x92V[`\x01`\x01``\x1B\x03\x16\x81RP\x85\x85\x81Q\x81\x10a\x06\x8AWa\x06\x8Aa\x1A\x85V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\x06\xA3Wa\x06\xA3a\x1A\x85V[` \x02` \x01\x01\x81\x90RP\x80\x80a\x06\xB9\x90a\x1A\xCAV[\x91PPa\x05\x02V[PPP\x80\x80a\x06\xCF\x90a\x1A\xCAV[\x91PPa\x03\xD5V[P\x97\x96PPPPPPPV[``\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x06\xFEWa\x06\xFEa\x13\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07'W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82Q\x81\x10\x15a\x02FW\x83`\x01`\x01`\xA0\x1B\x03\x16c)k\xB0d\x84\x83\x81Q\x81\x10a\x07WWa\x07Wa\x1A\x85V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x07}\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\x9AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xBE\x91\x90a\x1A\xE5V[\x82\x82\x81Q\x81\x10a\x07\xD0Wa\x07\xD0a\x1A\x85V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01Ra\x07\xF1\x81a\x1A\xCAV[\x90Pa\x07-V[a\x08#`@Q\x80`\x80\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`\0\x87`\x01`\x01`\xA0\x1B\x03\x16ch0H5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08cW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\x87\x91\x90a\x1A\xE5V[\x90Pa\x08\xB4`@Q\x80`\x80\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`@Qca\xC8\xA1/`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x8A\x16\x90c\xC3\x91B^\x90a\x08\xE4\x90\x8B\x90\x89\x90\x89\x90`\x04\x01a\x1B\xBBV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\x01W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\t)\x91\x90\x81\x01\x90a\x1C\x05V[\x81R`@Qc@\xE0:\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x81\xC0u\x02\x90a\t[\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a\x1C\xBCV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\txW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\t\xA0\x91\x90\x81\x01\x90a\x1C\x05V[`@\x82\x01R\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xBDWa\t\xBDa\x13\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\xF0W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\t\xDBW\x90P[P``\x82\x01R`\0[`\xFF\x81\x16\x87\x11\x15a\x0E3W`\0\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\x1EWa\n\x1Ea\x13\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\nGW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x83``\x01Q\x83`\xFF\x16\x81Q\x81\x10a\naWa\naa\x1A\x85V[` \x02` \x01\x01\x81\x90RP`\0[\x86\x81\x10\x15a\r3W`\0\x8C`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x8A\x8A\x85\x81\x81\x10a\n\x9AWa\n\x9Aa\x1A\x85V[\x90P` \x02\x015\x8E\x88`\0\x01Q\x86\x81Q\x81\x10a\n\xB8Wa\n\xB8a\x1A\x85V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\n\xF5\x93\x92\x91\x90\x92\x83Rc\xFF\xFF\xFF\xFF\x91\x82\x16` \x84\x01R\x16`@\x82\x01R``\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\x12W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B6\x91\x90a\x1C\xE5V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16a\x0B\xDEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R\x7FOperatorStateRetriever.getCheckS`D\x82\x01R\x7FignaturesIndices: operator must `d\x82\x01R\x7Fbe registered at blocknumber\0\0\0\0`\x84\x82\x01R`\xA4\x01`@Q\x80\x91\x03\x90\xFD[\x8A\x8A\x85`\xFF\x16\x81\x81\x10a\x0B\xF3Wa\x0B\xF3a\x1A\x85V[`\x01`\x01`\xC0\x1B\x03\x84\x16\x92\x015`\xF8\x1C\x91\x90\x91\x1C`\x01\x90\x81\x16\x14\x15\x90Pa\r W\x85`\x01`\x01`\xA0\x1B\x03\x16c\xDD\x98F\xB9\x8A\x8A\x85\x81\x81\x10a\x0C5Wa\x0C5a\x1A\x85V[\x90P` \x02\x015\x8D\x8D\x88`\xFF\x16\x81\x81\x10a\x0CQWa\x0CQa\x1A\x85V[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x87\x90\x1B\x16\x81R`\x04\x81\x01\x94\x90\x94R\x91\x90\x91\x015`\xF8\x1C`$\x83\x01RPc\xFF\xFF\xFF\xFF\x8F\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\xA7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xCB\x91\x90a\x1D\x0EV[\x85``\x01Q\x85`\xFF\x16\x81Q\x81\x10a\x0C\xE4Wa\x0C\xE4a\x1A\x85V[` \x02` \x01\x01Q\x84\x81Q\x81\x10a\x0C\xFDWa\x0C\xFDa\x1A\x85V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x82a\r\x1C\x81a\x1A\xCAV[\x93PP[P\x80a\r+\x81a\x1A\xCAV[\x91PPa\noV[P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\rNWa\rNa\x13\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\rwW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82\x81\x10\x15a\r\xF8W\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\r\x9EWa\r\x9Ea\x1A\x85V[` \x02` \x01\x01Q\x81\x81Q\x81\x10a\r\xB7Wa\r\xB7a\x1A\x85V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\r\xD1Wa\r\xD1a\x1A\x85V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\r\xF0\x81a\x1A\xCAV[\x91PPa\r}V[P\x80\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0E\x13Wa\x0E\x13a\x1A\x85V[` \x02` \x01\x01\x81\x90RPPP\x80\x80a\x0E+\x90a\x1D+V[\x91PPa\t\xF9V[P`\0\x89`\x01`\x01`\xA0\x1B\x03\x16c]\xF4YF`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0EtW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\x98\x91\x90a\x1A\xE5V[`@Qc5IR\xA3`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xD5%J\x8C\x90a\x0E\xCB\x90\x8B\x90\x8B\x90\x8E\x90`\x04\x01a\x1DKV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xE8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0F\x10\x91\x90\x81\x01\x90a\x1C\x05V[` \x83\x01RP\x98\x97PPPPPPPPV[```\0\x84`\x01`\x01`\xA0\x1B\x03\x16c\xC3\x91B^\x84\x86`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0FT\x92\x91\x90a\x1DuV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0FqW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0F\x99\x91\x90\x81\x01\x90a\x1C\x05V[\x90P`\0\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0F\xB6Wa\x0F\xB6a\x13\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F\xDFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85Q\x81\x10\x15a\x10\xE0W\x86`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x87\x83\x81Q\x81\x10a\x10\x0FWa\x10\x0Fa\x1A\x85V[` \x02` \x01\x01Q\x87\x86\x85\x81Q\x81\x10a\x10*Wa\x10*a\x1A\x85V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10g\x93\x92\x91\x90\x92\x83Rc\xFF\xFF\xFF\xFF\x91\x82\x16` \x84\x01R\x16`@\x82\x01R``\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\x84W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xA8\x91\x90a\x1C\xE5V[`\x01`\x01`\xC0\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x10\xC3Wa\x10\xC3a\x1A\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a\x10\xD8\x81a\x1A\xCAV[\x91PPa\x0F\xE5V[P\x95\x94PPPPPV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91``\x91\x83\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P\x84\x81`\0\x81Q\x81\x10a\x11%Wa\x11%a\x1A\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qca\xC8\xA1/`\xE1\x1B\x81R`\0\x90`\x01`\x01`\xA0\x1B\x03\x88\x16\x90c\xC3\x91B^\x90a\x11a\x90\x88\x90\x86\x90`\x04\x01a\x1DuV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x11\xA6\x91\x90\x81\x01\x90a\x1C\x05V[`\0\x81Q\x81\x10a\x11\xB8Wa\x11\xB8a\x1A\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Qc\x04\xECcQ`\xE0\x1B\x81R`\x04\x81\x01\x88\x90Rc\xFF\xFF\xFF\xFF\x87\x81\x16`$\x83\x01R\x90\x91\x16`D\x82\x01\x81\x90R\x91P`\0\x90`\x01`\x01`\xA0\x1B\x03\x89\x16\x90c\x04\xECcQ\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12$W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12H\x91\x90a\x1C\xE5V[`\x01`\x01`\xC0\x1B\x03\x16\x90P`\0a\x12^\x82a\x12|V[\x90P\x81a\x12l\x8A\x83\x8Aa\x02MV[\x95P\x95PPPPP\x93P\x93\x91PPV[```\0\x80a\x12\x8A\x84a\x13HV[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12\xA5Wa\x12\xA5a\x13\x91V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x12\xCFW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x12\xE7WPa\x01\0\x81\x10[\x15a\x13>W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x13.W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x13\x10Wa\x13\x10a\x1A\x85V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x137\x81a\x1A\xCAV[\x90Pa\x12\xD6V[P\x90\x94\x93PPPPV[`\0\x80[\x82\x15a\x13sWa\x13]`\x01\x84a\x1D\x94V[\x90\x92\x16\x91\x80a\x13k\x81a\x1D\xABV[\x91PPa\x13LV[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x13\x8EW`\0\x80\xFD[PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x13\xCFWa\x13\xCFa\x13\x91V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x13\xF0Wa\x13\xF0a\x13\x91V[P`\x05\x1B` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x14\rW`\0\x80\xFD[\x825a\x14\x18\x81a\x13yV[\x91P` \x83\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x144W`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x14EW`\0\x80\xFD[\x805a\x14Xa\x14S\x82a\x13\xD7V[a\x13\xA7V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15a\x14wW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x14\x9EW\x835a\x14\x8F\x81a\x13yV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x14|V[\x80\x95PPPPPP\x92P\x92\x90PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a\x14\xDDW\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x14\xC1V[P\x94\x95\x94PPPPPV[` \x81R`\0a\x14\xFB` \x83\x01\x84a\x14\xADV[\x93\x92PPPV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x13\x8EW`\0\x80\xFD[\x805a\x15\x1F\x81a\x15\x02V[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x159W`\0\x80\xFD[\x835a\x15D\x81a\x13yV[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x15aW`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a\x15uW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x15\x87Wa\x15\x87a\x13\x91V[a\x15\x99`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x13\xA7V[\x91P\x80\x82R\x88\x84\x82\x85\x01\x01\x11\x15a\x15\xAFW`\0\x80\xFD[\x80\x84\x84\x01\x85\x84\x017`\0\x84\x82\x84\x01\x01RP\x80\x94PPPPa\x15\xD2`@\x85\x01a\x15\x14V[\x90P\x92P\x92P\x92V[`\0\x81Q\x80\x84R` \x80\x85\x01\x80\x81\x96P\x83`\x05\x1B\x81\x01\x91P\x82\x86\x01`\0\x80[\x86\x81\x10\x15a\x16qW\x83\x85\x03\x8AR\x82Q\x80Q\x80\x87R\x90\x87\x01\x90\x87\x87\x01\x90\x84[\x81\x81\x10\x15a\x16\\W\x83Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x8A\x81\x01Q\x8B\x85\x01R`@\x90\x81\x01Q`\x01`\x01``\x1B\x03\x16\x90\x84\x01R\x92\x89\x01\x92``\x90\x92\x01\x91`\x01\x01a\x16\x18V[PP\x9A\x87\x01\x9A\x95PP\x91\x85\x01\x91`\x01\x01a\x15\xFAV[P\x92\x98\x97PPPPPPPPV[` \x81R`\0a\x14\xFB` \x83\x01\x84a\x15\xDBV[`\0\x82`\x1F\x83\x01\x12a\x16\xA3W`\0\x80\xFD[\x815` a\x16\xB3a\x14S\x83a\x13\xD7V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\x16\xD2W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x16\xEDW\x805\x83R\x91\x83\x01\x91\x83\x01a\x16\xD6V[P\x96\x95PPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x17\x0BW`\0\x80\xFD[\x825a\x17\x16\x81a\x13yV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x171W`\0\x80\xFD[a\x17=\x85\x82\x86\x01a\x16\x92V[\x91PP\x92P\x92\x90PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x17\x88W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x17cV[P\x90\x96\x95PPPPPPV[`\0\x80\x83`\x1F\x84\x01\x12a\x17\xA6W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\xBDW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x17\xD8W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\x80\x87\x89\x03\x12\x15a\x17\xF8W`\0\x80\xFD[\x865a\x18\x03\x81a\x13yV[\x95P` \x87\x015a\x18\x13\x81a\x15\x02V[\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x18/W`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a\x18CW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x18RW`\0\x80\xFD[\x8A` \x82\x85\x01\x01\x11\x15a\x18dW`\0\x80\xFD[` \x83\x01\x96P\x80\x95PP``\x89\x015\x91P\x80\x82\x11\x15a\x18\x82W`\0\x80\xFD[Pa\x18\x8F\x89\x82\x8A\x01a\x17\x94V[\x97\x9A\x96\x99P\x94\x97P\x92\x95\x93\x94\x92PPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a\x14\xDDW\x81Qc\xFF\xFF\xFF\xFF\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x18\xB5V[`\0` \x80\x83R\x83Q`\x80\x82\x85\x01Ra\x18\xF3`\xA0\x85\x01\x82a\x18\xA1V[\x90P\x81\x85\x01Q`\x1F\x19\x80\x86\x84\x03\x01`@\x87\x01Ra\x19\x10\x83\x83a\x18\xA1V[\x92P`@\x87\x01Q\x91P\x80\x86\x84\x03\x01``\x87\x01Ra\x19-\x83\x83a\x18\xA1V[``\x88\x01Q\x87\x82\x03\x83\x01`\x80\x89\x01R\x80Q\x80\x83R\x91\x94P\x85\x01\x92P\x84\x84\x01\x90`\x05\x81\x90\x1B\x85\x01\x86\x01`\0[\x82\x81\x10\x15a\x19\x84W\x84\x87\x83\x03\x01\x84Ra\x19r\x82\x87Qa\x18\xA1V[\x95\x88\x01\x95\x93\x88\x01\x93\x91P`\x01\x01a\x19XV[P\x99\x98PPPPPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x19\xA7W`\0\x80\xFD[\x835a\x19\xB2\x81a\x13yV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\xCDW`\0\x80\xFD[a\x19\xD9\x86\x82\x87\x01a\x16\x92V[\x92PP`@\x84\x015a\x19\xEA\x81a\x15\x02V[\x80\x91PP\x92P\x92P\x92V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x17\x88W\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1A\x11V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x1ABW`\0\x80\xFD[\x835a\x1AM\x81a\x13yV[\x92P` \x84\x015\x91P`@\x84\x015a\x19\xEA\x81a\x15\x02V[\x82\x81R`@` \x82\x01R`\0a\x1A}`@\x83\x01\x84a\x15\xDBV[\x94\x93PPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x1A\xADW`\0\x80\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x1A\xDEWa\x1A\xDEa\x1A\xB4V[P`\x01\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x1A\xF7W`\0\x80\xFD[\x81Qa\x14\xFB\x81a\x13yV[`\0` \x80\x83\x85\x03\x12\x15a\x1B\x15W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1B+W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x1B`$\x82\x01R\x7FBLSApkRegistry._validateApkHashA`D\x82\x01R\x7FtBlockNumber: index too recent\0\0`d\x82\x01R`\x84\x01a\x04\xDEV[`@\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\x07\x95WP\x80`@\x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x08\x13W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R\x7FBLSApkRegistry._validateApkHashA`D\x82\x01R\x7FtBlockNumber: not latest apk upd`d\x82\x01Rbate`\xE8\x1B`\x84\x82\x01R`\xA4\x01a\x04\xDEV[Q\x94\x93PPPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x088W`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`@\x81\x90\x1B\x92Pc\xFF\xFF\xFF\xFF`\x01`\xC0\x1B\x82\x04\x81\x16\x92P`\x01`\xE0\x1B\x90\x91\x04\x16\x83V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x81\x81R`\x03` \x90\x81R`@\x80\x83 \x81Q\x80\x83\x01\x83R\x81T\x81R`\x01\x91\x82\x01T\x81\x85\x01R\x94\x84R\x90\x91R\x81 T\x90\x91\x90\x80a\t*W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FBLSApkRegistry.getRegisteredPubk`D\x82\x01R\x7Fey: operator is not registered\0\0`d\x82\x01R`\x84\x01a\x04\xDEV[\x90\x94\x90\x93P\x91PPV[`\0a\t>a\x0F\xCBV[`\0a\tla\tU6\x86\x90\x03\x86\x01`@\x87\x01a\x1C^V[\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x90P\x7F\xAD2(\xB6v\xF7\xD3\xCDB\x84\xA5D?\x17\xF1\x96+6\xE4\x91\xB3\n@\xB2@XI\xE5\x97\xBA_\xB5\x81\x14\x15a\t\xF4W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R`\0\x80Q` a\x1Eu\x839\x81Q\x91R`D\x82\x01R\x7FKey: cannot register zero pubkey`d\x82\x01R`\x84\x01a\x04\xDEV[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\n~W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a\x1Eu\x839\x81Q\x91R`D\x82\x01R\x7FKey: operator already registered`d\x82\x01Rf pubkey`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x04\xDEV[`\0\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` a\x1Eu\x839\x81Q\x91R`D\x82\x01R\x7FKey: public key already register`d\x82\x01Ra\x19Y`\xF2\x1B`\x84\x82\x01R`\xA4\x01a\x04\xDEV[`@\x80Q`\0\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x91a\x0B[\x91\x885\x91` \x80\x8B\x015\x92\x8B\x015\x91``\x8C\x015\x91`\x80\x8D\x01\x91`\xC0\x8E\x01\x91\x8D5\x91\x8E\x82\x015\x91\x01a\x1C\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1Ca\x0B~\x91\x90a\x1C\xDBV[\x90Pa\x0C\x18a\x0B\xB7a\x0B\xA2\x83a\x0B\x9C6\x8A\x90\x03\x8A\x01`@\x8B\x01a\x1C^V[\x90a\x12\xCDV[a\x0B\xB16\x89\x90\x03\x89\x01\x89a\x1C^V[\x90a\x13dV[a\x0B\xBFa\x13\xF8V[a\x0C\x01a\x0B\xF2\x85a\x0B\x9C`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[a\x0B\xB16\x8A\x90\x03\x8A\x01\x8Aa\x1C^V[a\x0C\x136\x8A\x90\x03\x8A\x01`\x80\x8B\x01a\x1DMV[a\x14\xB8V[a\x0C\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R`\0\x80Q` a\x1Eu\x839\x81Q\x91R`D\x82\x01R\x7FKey: either the G1 signature is `d\x82\x01R\x7Fwrong, or G1 and G2 private key `\x84\x82\x01Rk\x0C\x8D\xE4\r\xCD\xEE\x84\r\xAC.\x8Cm`\xA3\x1B`\xA4\x82\x01R`\xC4\x01a\x04\xDEV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x81\x81R`\x03` \x90\x81R`@\x80\x83 \x89\x82\x01\x805\x82U``\x8B\x015`\x01\x92\x83\x01U\x90\x83R\x81\x84 \x87\x90U\x86\x84R`\x02\x90\x92R\x91\x82\x90 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x84\x17\x90U\x90Q\x7F\xE3\xFBf\x13\xAF.\x890\xCF\x85\xD4\x7F\xCFm\xB1\x01\x92\"Jd\xC6\xCB\xE8\x02>\x0E\xEE\x1B\xA3\x82\x80A\x91a\r7\x91`\x80\x8A\x01\x90a\x1D\xAAV[`@Q\x80\x91\x03\x90\xA2P\x94\x93PPPPV[```\0\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\reWa\rea\x19\x05V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\r\x8EW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84\x81\x10\x15a\x0FYW`\0\x86\x86\x83\x81\x81\x10a\r\xB0Wa\r\xB0a\x1CHV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x04` R`@\x90 T\x90\x92P\x90P\x80\x15\x80a\x0E\x13WP`\xFF\x82\x16`\0\x90\x81R`\x04` R`@\x81 \x80T\x90\x91\x90a\r\xF7Wa\r\xF7a\x1CHV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x86\x10[\x15a\x0E\xA0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`Q`$\x82\x01R\x7FBLSApkRegistry.getApkIndicesAtBl`D\x82\x01R\x7FockNumber: blockNumber is before`d\x82\x01Rp the first update`x\x1B`\x84\x82\x01R`\xA4\x01a\x04\xDEV[\x80[\x80\x15a\x0FCW`\xFF\x83\x16`\0\x90\x81R`\x04` R`@\x90 \x87\x90a\x0E\xC7`\x01\x84a\x1D\xF4V[\x81T\x81\x10a\x0E\xD7Wa\x0E\xD7a\x1CHV[`\0\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x11a\x0F1Wa\x0F\0`\x01\x82a\x1D\xF4V[\x85\x85\x81Q\x81\x10a\x0F\x12Wa\x0F\x12a\x1CHV[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x0FCV[\x80a\x0F;\x81a\x1E\x0BV[\x91PPa\x0E\xA2V[PPP\x80\x80a\x0FQ\x90a\x1E\"V[\x91PPa\r\x94V[P\x94\x93PPPPV[a\x0Fja\x0F\xCBV[`\0a\x0Fu\x83a\x08gV[P\x90Pa\x0F\x8A\x82a\x0F\x85\x83a\x17%V[a\x10\x82V[\x7F\xF8C\xEC\xD5:V6u\xE6!\x07\xBE\x14\x94\xFD\xDEJ=I\xAE\xED\xAF\x8D\x88\xC6\x16\xD8SF\xE3P\x0E\x83a\x05\xD1\x85`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x10\x80W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`N`$\x82\x01R\x7FBLSApkRegistry.onlyRegistryCoord`D\x82\x01R\x7Finator: caller is not the regist`d\x82\x01Rm9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x91\x1B`\x84\x82\x01R`\xA4\x01a\x04\xDEV[V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0[\x83Q\x81\x10\x15a\x12\xC7W`\0\x84\x82\x81Q\x81\x10a\x10\xB6Wa\x10\xB6a\x1CHV[\x01` \x90\x81\x01Q`\xF8\x1C`\0\x81\x81R`\x04\x90\x92R`@\x90\x91 T\x90\x91P\x80a\x11FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FBLSApkRegistry._processQuorumApk`D\x82\x01R\x7FUpdate: quorum does not exist\0\0\0`d\x82\x01R`\x84\x01a\x04\xDEV[`\xFF\x82\x16`\0\x90\x81R`\x05` \x90\x81R`@\x91\x82\x90 \x82Q\x80\x84\x01\x90\x93R\x80T\x83R`\x01\x01T\x90\x82\x01Ra\x11z\x90\x86a\x13dV[`\xFF\x83\x16`\0\x81\x81R`\x05` \x90\x81R`@\x80\x83 \x85Q\x80\x82U\x86\x84\x01\x80Q`\x01\x93\x84\x01U\x90\x85RQ\x83R\x81\x84 \x94\x84R`\x04\x90\x92R\x82 \x93\x97P\x91\x92\x90\x91a\x11\xC3\x90\x85a\x1D\xF4V[\x81T\x81\x10a\x11\xD3Wa\x11\xD3a\x1CHV[`\0\x91\x82R` \x90\x91 \x01\x80T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16`\x01`\xC0\x1B\x90\x92\x04\x16\x14\x15a\x12\x14W\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`@\x83\x90\x1C\x17\x81Ua\x12\xB0V[\x80Tc\xFF\xFF\xFF\xFFC\x81\x16`\x01`\xE0\x1B\x81\x81\x02`\x01`\x01`\xE0\x1B\x03\x94\x85\x16\x17\x85U`\xFF\x88\x16`\0\x90\x81R`\x04` \x90\x81R`@\x80\x83 \x81Q``\x81\x01\x83Rg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x8B\x16\x81R\x80\x84\x01\x96\x87R\x80\x83\x01\x85\x81R\x82T`\x01\x81\x01\x84U\x92\x86R\x93\x90\x94 \x93Q\x93\x01\x80T\x95Q\x92Q\x87\x16\x90\x94\x02\x91\x90\x95\x16`\x01`\xC0\x1B\x02`\x01`\x01`\xE0\x1B\x03\x19\x94\x90\x94\x16\x91\x90\x94\x1C\x17\x91\x90\x91\x17\x90\x92\x16\x17\x90U[PPPP\x80\x80a\x12\xBF\x90a\x1E\"V[\x91PPa\x10\x99V[PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x12\xE9a\x17\xE4V[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R`\0\x90\x83``\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13\x1CWa\x13\x1EV[\xFE[P\x80a\x13\\W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x04\xDEV[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x13\x80a\x18\x02V[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x80\x84\x01\x91\x90\x91R\x90\x84\x01Q``\x83\x01R`\0\x90\x83`\x80\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13\x1CWP\x80a\x13\\W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCBXY\x19\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x04\xDEV[a\x14\0a\x18 V[P`@\x80Q`\x80\x81\x01\x82R\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81\x83\x01\x90\x81R\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED``\x83\x01R\x81R\x81Q\x80\x83\x01\x90\x92R\x7F']\xC4\xA2\x88\xD1\xAF\xB3\xCB\xB1\xAC\t\x18u$\xC7\xDB69]\xF7\xBE;\x99\xE6s\xB1:\x07Ze\xEC\x82R\x7F\x1D\x9B\xEF\xCD\x05\xA52>m\xA4\xD45\xF3\xB6\x17\xCD\xB3\xAF\x83(\\-\xF7\x11\xEF9\xC0\x15q\x82\x7F\x9D` \x83\x81\x01\x91\x90\x91R\x81\x01\x91\x90\x91R\x90V[`@\x80Q\x80\x82\x01\x82R\x85\x81R` \x80\x82\x01\x85\x90R\x82Q\x80\x84\x01\x90\x93R\x85\x83R\x82\x01\x83\x90R`\0\x91a\x14\xE7a\x18EV[`\0[`\x02\x81\x10\x15a\x16\xACW`\0a\x15\0\x82`\x06a\x1E=V[\x90P\x84\x82`\x02\x81\x10a\x15\x14Wa\x15\x14a\x1CHV[` \x02\x01QQ\x83a\x15&\x83`\0a\x1E\\V[`\x0C\x81\x10a\x156Wa\x156a\x1CHV[` \x02\x01R\x84\x82`\x02\x81\x10a\x15MWa\x15Ma\x1CHV[` \x02\x01Q` \x01Q\x83\x82`\x01a\x15d\x91\x90a\x1E\\V[`\x0C\x81\x10a\x15tWa\x15ta\x1CHV[` \x02\x01R\x83\x82`\x02\x81\x10a\x15\x8BWa\x15\x8Ba\x1CHV[` \x02\x01QQQ\x83a\x15\x9E\x83`\x02a\x1E\\V[`\x0C\x81\x10a\x15\xAEWa\x15\xAEa\x1CHV[` \x02\x01R\x83\x82`\x02\x81\x10a\x15\xC5Wa\x15\xC5a\x1CHV[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x15\xDE\x83`\x03a\x1E\\V[`\x0C\x81\x10a\x15\xEEWa\x15\xEEa\x1CHV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16\x05Wa\x16\x05a\x1CHV[` \x02\x01Q` \x01Q`\0`\x02\x81\x10a\x16 Wa\x16 a\x1CHV[` \x02\x01Q\x83a\x161\x83`\x04a\x1E\\V[`\x0C\x81\x10a\x16AWa\x16Aa\x1CHV[` \x02\x01R\x83\x82`\x02\x81\x10a\x16XWa\x16Xa\x1CHV[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x16sWa\x16sa\x1CHV[` \x02\x01Q\x83a\x16\x84\x83`\x05a\x1E\\V[`\x0C\x81\x10a\x16\x94Wa\x16\x94a\x1CHV[` \x02\x01RP\x80a\x16\xA4\x81a\x1E\"V[\x91PPa\x14\xEAV[Pa\x16\xB5a\x18dV[`\0` \x82a\x01\x80\x85`\x08a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a\x13\x1CWP\x80a\x17\x15W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x15`$\x82\x01Rt\x1C\x18Z\\\x9A[\x99\xCB[\xDC\x18\xDB\xD9\x19KY\x98Z[\x19Y`Z\x1B`D\x82\x01R`d\x01a\x04\xDEV[PQ\x15\x15\x98\x97PPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x17JWP` \x82\x01Q\x15[\x15a\x17hWPP`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x90V[`@Q\x80`@\x01`@R\x80\x83`\0\x01Q\x81R` \x01\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\x84` \x01Qa\x17\xAD\x91\x90a\x1C\xDBV[a\x17\xD7\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\x1D\xF4V[\x90R\x92\x91PPV[\x91\x90PV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\x80\x01`@R\x80`\x04\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80a\x183a\x18\x82V[\x81R` \x01a\x18@a\x18\x82V[\x90R\x90V[`@Q\x80a\x01\x80\x01`@R\x80`\x0C\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80` \x01`@R\x80`\x01\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x17\xDFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x18\xC9W`\0\x80\xFD[a\x18\xD2\x82a\x18\xA0V[\x93\x92PPPV[\x805`\xFF\x81\x16\x81\x14a\x17\xDFW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x18\xFCW`\0\x80\xFD[a\x18\xD2\x82a\x18\xD9V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x19>Wa\x19>a\x19\x05V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x19mWa\x19ma\x19\x05V[`@R\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x19\x88W`\0\x80\xFD[a\x19\x91\x83a\x18\xA0V[\x91P` \x80\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x19\xAFW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x19\xC3W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x19\xD5Wa\x19\xD5a\x19\x05V[a\x19\xE7`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x19DV[\x91P\x80\x82R\x87\x84\x82\x85\x01\x01\x11\x15a\x19\xFDW`\0\x80\xFD[\x80\x84\x84\x01\x85\x84\x017`\0\x84\x82\x84\x01\x01RP\x80\x93PPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x1A-W`\0\x80\xFD[P5\x91\x90PV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x06{V[`\0\x80`@\x83\x85\x03\x12\x15a\x1A^W`\0\x80\xFD[a\x1Ag\x83a\x18\xD9V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x1A\x8AW`\0\x80\xFD[a\x1A\x93\x84a\x18\xD9V[\x92P` \x84\x015c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1A\xACW`\0\x80\xFD[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0\x80`\0\x83\x85\x03a\x01`\x81\x12\x15a\x1A\xD4W`\0\x80\xFD[a\x1A\xDD\x85a\x18\xA0V[\x93Pa\x01\0`\x1F\x19\x82\x01\x12\x15a\x1A\xF2W`\0\x80\xFD[` \x85\x01\x92P`@a\x01\x1F\x19\x82\x01\x12\x15a\x1B\x0BW`\0\x80\xFD[Pa\x01 \x84\x01\x90P\x92P\x92P\x92V[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x1B/W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x1BGW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x1B[W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x1BjW`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x1B|W`\0\x80\xFD[` \x92\x83\x01\x98\x90\x97P\x95\x90\x91\x015\x94\x93PPPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1B\xD0W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1B\xAEV[P\x90\x96\x95PPPPPPV[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R`\0` \x84\x81\x84\x01R```@\x84\x01R\x83Q\x80``\x85\x01R`\0[\x81\x81\x10\x15a\x1C\x1EW\x85\x81\x01\x83\x01Q\x85\x82\x01`\x80\x01R\x82\x01a\x1C\x02V[\x81\x81\x11\x15a\x1C0W`\0`\x80\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`\x80\x01\x95\x94PPPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0`@\x82\x84\x03\x12\x15a\x1CpW`\0\x80\xFD[a\x1Cxa\x19\x1BV[\x825\x81R` \x83\x015` \x82\x01R\x80\x91PP\x92\x91PPV[\x88\x81R\x87` \x82\x01R\x86`@\x82\x01R\x85``\x82\x01R`@\x85`\x80\x83\x017`\0`\xC0\x82\x01`\0\x81R`@\x86\x827PPa\x01\0\x81\x01\x92\x90\x92Ra\x01 \x82\x01Ra\x01@\x01\x96\x95PPPPPPV[`\0\x82a\x1C\xF8WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`\0\x82`\x1F\x83\x01\x12a\x1D\x0EW`\0\x80\xFD[a\x1D\x16a\x19\x1BV[\x80`@\x84\x01\x85\x81\x11\x15a\x1D(W`\0\x80\xFD[\x84[\x81\x81\x10\x15a\x1DBW\x805\x84R` \x93\x84\x01\x93\x01a\x1D*V[P\x90\x95\x94PPPPPV[`\0`\x80\x82\x84\x03\x12\x15a\x1D_W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x1D\x82Wa\x1D\x82a\x19\x05V[`@Ra\x1D\x8F\x84\x84a\x1C\xFDV[\x81Ra\x1D\x9E\x84`@\x85\x01a\x1C\xFDV[` \x82\x01R\x93\x92PPPV[\x825\x81R` \x80\x84\x015\x90\x82\x01R`\xC0\x81\x01`@\x83\x81\x84\x017`\x80\x82\x01`\0\x81R`@\x80\x85\x01\x827P`\0\x81R\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x82\x10\x15a\x1E\x06Wa\x1E\x06a\x1D\xDEV[P\x03\x90V[`\0\x81a\x1E\x1AWa\x1E\x1Aa\x1D\xDEV[P`\0\x19\x01\x90V[`\0`\0\x19\x82\x14\x15a\x1E6Wa\x1E6a\x1D\xDEV[P`\x01\x01\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x1EWWa\x1EWa\x1D\xDEV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a\x1EoWa\x1Eoa\x1D\xDEV[P\x01\x90V\xFEBLSApkRegistry.registerBLSPublic\xA2dipfsX\"\x12 \xCA\x1B1\x98\xDD\xD9\xD6\"\xC9\xFE^\x8AB\xFB8\x85\xDA\x9A\xB1\x81\x8A\x06=\x1B\xFD\x99\xCD\xE5\xD9z\x14\xB5dsolcC\0\x08\x0C\x003`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x13a8\x03\x80a\x13a\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01\x0CV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80R\x80a\0Ea\0LV[PPa\x01V[a\x01\x8Fa\x01\xE16`\x04a\x0F\xADV[a\x06\xEBV[a\x01(a\x01\xF46`\x04a\x0E\xBDV[a\x07bV[a\x02\x01`\0\x81V[`@Q\x90\x81R` \x01a\0\xD8V[a\x02@a\x02\x1D6`\x04a\x10vV[`\x01` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 Tc\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0\xD8V[a\x02@a\x02c6`\x04a\x0F\xE0V[a\x080V[``a\x02ra\x08OV[`\0\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02\x8DWa\x02\x8Da\x10\xA0V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02\xB6W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83\x81\x10\x15a\x03\x7FW`\0\x85\x85\x83\x81\x81\x10a\x02\xD8Wa\x02\xD8a\x10\xB6V[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x03` R`@\x90 T\x90\x92P\x90P\x80a\x03\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\x11\x90a\x10\xCCV[`@Q\x80\x91\x03\x90\xFD[`\0a\x03%\x83a\t\x05V[\x90Pa\x03<\x89\x84a\x037`\x01\x85a\x117V[a\t\xFEV[\x80\x85\x85\x81Q\x81\x10a\x03OWa\x03Oa\x10\xB6V[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPPPP\x80\x80a\x03w\x90a\x11\\V[\x91PPa\x02\xBCV[P\x90P[\x93\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x03\xA8\x83\x83a\n\x88V[`@\x80Q\x80\x82\x01\x90\x91R\x81Tc\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01T` \x82\x01R\x90P[\x92\x91PPV[a\x03\xD8a\x08OV[`\xFF\x81\x16`\0\x90\x81R`\x03` R`@\x90 T\x15a\x04RW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`1`$\x82\x01R\x7FIndexRegistry.createQuorum: quor`D\x82\x01Rpum already exists`x\x1B`d\x82\x01R`\x84\x01a\x03\x11V[`\xFF\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 \x81Q\x80\x83\x01\x90\x92Rc\xFF\xFF\xFF\xFFC\x81\x16\x83R\x82\x84\x01\x85\x81R\x82T`\x01\x81\x01\x84U\x92\x86R\x93\x90\x94 \x91Q\x91\x01\x80T\x92Q\x84\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x93\x16\x91\x90\x93\x16\x17\x17\x90UV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\xFF\x84\x16`\0\x90\x81R`\x02` \x90\x81R`@\x80\x83 c\xFF\xFF\xFF\xFF\x80\x88\x16\x85R\x92R\x90\x91 \x80T\x90\x91\x84\x16\x90\x81\x10a\x05\x01Wa\x05\x01a\x10\xB6V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q\x80\x82\x01\x90\x91R`\x02\x90\x92\x02\x01\x80Tc\xFF\xFF\xFF\xFF\x16\x82R`\x01\x01T\x91\x81\x01\x91\x90\x91R\x90P\x93\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x05W\x82a\n\xE0V[`@\x80Q\x80\x82\x01\x90\x91R\x90Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x90\x91\x04\x16` \x82\x01R\x92\x91PPV[```\0a\x05\x8F\x84\x84a\x0B\"V[\x90P`\0\x81c\xFF\xFF\xFF\xFF\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05\xB2Wa\x05\xB2a\x10\xA0V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xDBW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82c\xFF\xFF\xFF\xFF\x16\x81\x10\x15a\x06\xE2Wa\x05\xFA\x86\x82\x87a\x0CWV[\x82\x82\x81Q\x81\x10a\x06\x0CWa\x06\x0Ca\x10\xB6V[` \x02` \x01\x01\x81\x81RPP`\0\x80\x1B\x82\x82\x81Q\x81\x10a\x06.Wa\x06.a\x10\xB6V[` \x02` \x01\x01Q\x14\x15a\x06\xD0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`]`$\x82\x01R\x7FIndexRegistry.getOperatorListAtB`D\x82\x01R\x7FlockNumber: operator does not ex`d\x82\x01R\x7Fist at the given block number\0\0\0`\x84\x82\x01R`\xA4\x01a\x03\x11V[\x80a\x06\xDA\x81a\x11\\V[\x91PPa\x05\xE1V[P\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\xFF\x83\x16`\0\x90\x81R`\x03` R`@\x90 \x80Tc\xFF\xFF\xFF\xFF\x84\x16\x90\x81\x10a\x07)Wa\x07)a\x10\xB6V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q\x80\x82\x01\x90\x91R\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x90\x91\x04\x16\x91\x81\x01\x91\x90\x91R\x93\x92PPPV[a\x07ja\x08OV[`\0[\x81\x81\x10\x15a\x08*W`\0\x83\x83\x83\x81\x81\x10a\x07\x89Wa\x07\x89a\x10\xB6V[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x03` R`@\x90 T\x90\x92P\x90P\x80a\x07\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\x11\x90a\x10\xCCV[`\xFF\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x89\x84R\x90\x91R\x81 Tc\xFF\xFF\xFF\xFF\x16\x90a\x07\xF0\x84a\r.V[\x90P`\0a\x07\xFE\x85\x83a\rhV[\x90P\x80\x89\x14a\x08\x12Wa\x08\x12\x81\x86\x85a\t\xFEV[PPPPP\x80\x80a\x08\"\x90a\x11\\V[\x91PPa\x07mV[PPPPV[`\0a\x08;\x82a\n\xE0V[T`\x01` \x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x92\x91PPV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\t\x03W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`M`$\x82\x01R\x7FIndexRegistry.onlyRegistryCoordi`D\x82\x01R\x7Fnator: caller is not the registr`d\x82\x01Rl<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x99\x1B`\x84\x82\x01R`\xA4\x01a\x03\x11V[V[`\0\x80a\t\x11\x83a\n\xE0V[\x80T\x90\x91P`\0\x90a\t1\x90`\x01` \x1B\x90\x04c\xFF\xFF\xFF\xFF\x16`\x01a\x11wV[\x90Pa\t>\x84\x83\x83a\r\x92V[`\xFF\x84\x16`\0\x90\x81R`\x02` R`@\x81 \x90a\t\\`\x01\x84a\x117V[c\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x91\x90\x91R`@\x01`\0 Ta\x03\x83W`\xFF\x84\x16`\0\x90\x81R`\x02` R`@\x81 \x90a\t\x95`\x01\x84a\x117V[c\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x83\x01\x93\x90\x93R`@\x91\x82\x01`\0\x90\x81 \x83Q\x80\x85\x01\x90\x94RC\x83\x16\x84R\x83\x85\x01\x82\x81R\x81T`\x01\x80\x82\x01\x84U\x92\x84R\x95\x90\x92 \x93Q`\x02\x90\x95\x02\x90\x93\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16\x94\x90\x92\x16\x93\x90\x93\x17\x81U\x91Q\x91\x01U\x93\x92PPPV[`\0a\n\n\x83\x83a\n\x88V[\x90Pa\n\x18\x83\x83\x83\x87a\x0E2V[`\xFF\x83\x16`\0\x81\x81R`\x01` \x90\x81R`@\x80\x83 \x88\x84R\x82R\x91\x82\x90 \x80Tc\xFF\xFF\xFF\xFF\x19\x16c\xFF\xFF\xFF\xFF\x87\x16\x90\x81\x17\x90\x91U\x82Q\x93\x84R\x90\x83\x01R\x85\x91\x7Fn\xE1\xE4\xF4\x07_=\x06qv\x14\r4\xE8xt$M\xD2s)L\x05\xB2!\x813\xE4\x9A+\xA6\xF6\x91\x01`@Q\x80\x91\x03\x90\xA2PPPPV[`\xFF\x82\x16`\0\x90\x81R`\x02` \x90\x81R`@\x80\x83 c\xFF\xFF\xFF\xFF\x85\x16\x84R\x90\x91R\x81 \x80T\x90a\n\xB9`\x01\x83a\x11\x9FV[\x81T\x81\x10a\n\xC9Wa\n\xC9a\x10\xB6V[\x90`\0R` `\0 \x90`\x02\x02\x01\x91PP\x92\x91PPV[`\xFF\x81\x16`\0\x90\x81R`\x03` R`@\x81 \x80T\x90a\x0B\0`\x01\x83a\x11\x9FV[\x81T\x81\x10a\x0B\x10Wa\x0B\x10a\x10\xB6V[\x90`\0R` `\0 \x01\x91PP\x91\x90PV[`\xFF\x82\x16`\0\x90\x81R`\x03` R`@\x81 T\x80[\x80\x15a\x0B\xCAW`\xFF\x85\x16`\0\x90\x81R`\x03` R`@\x81 a\x0BZ`\x01\x84a\x11\x9FV[\x81T\x81\x10a\x0BjWa\x0Bja\x10\xB6V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q\x80\x82\x01\x90\x91R\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x80\x84R`\x01` \x1B\x90\x92\x04\x81\x16\x93\x83\x01\x93\x90\x93R\x90\x92P\x90\x86\x16\x10a\x0B\xB7W` \x01Q\x92Pa\x03\xCA\x91PPV[P\x80a\x0B\xC2\x81a\x11\xB6V[\x91PPa\x0B7V[P`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`U`$\x82\x01R\x7FIndexRegistry._operatorCountAtBl`D\x82\x01R\x7FockNumber: quorum did not exist `d\x82\x01Rt0\xBA\x103\xB4\xBB2\xB7\x10167\xB1\xB5\x907:\xB6\xB12\xB9`Y\x1B`\x84\x82\x01R`\xA4\x01a\x03\x11V[`\xFF\x83\x16`\0\x90\x81R`\x02` \x90\x81R`@\x80\x83 c\xFF\xFF\xFF\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a\r\"W`\xFF\x86\x16`\0\x90\x81R`\x02` \x90\x81R`@\x80\x83 c\xFF\xFF\xFF\xFF\x89\x16\x84R\x90\x91R\x81 a\x0C\xB1`\x01\x84a\x11\x9FV[\x81T\x81\x10a\x0C\xC1Wa\x0C\xC1a\x10\xB6V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q\x80\x82\x01\x90\x91R`\x02\x90\x92\x02\x01\x80Tc\xFF\xFF\xFF\xFF\x90\x81\x16\x80\x84R`\x01\x90\x92\x01T\x93\x83\x01\x93\x90\x93R\x90\x92P\x90\x86\x16\x10a\r\x0FW` \x01Q\x92Pa\x03\x83\x91PPV[P\x80a\r\x1A\x81a\x11\xB6V[\x91PPa\x0C}V[P`\0\x95\x94PPPPPV[`\0\x80a\r:\x83a\n\xE0V[\x80T\x90\x91P`\0\x90a\r[\x90`\x01\x90`\x01` \x1B\x90\x04c\xFF\xFF\xFF\xFF\x16a\x117V[\x90Pa\x03\x83\x84\x83\x83a\r\x92V[`\0\x80a\ru\x84\x84a\n\x88V[`\x01\x81\x01T\x90\x91Pa\r\x8A\x85\x85\x84`\0a\x0E2V[\x94\x93PPPPV[\x81TCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a\r\xC9W\x81Tc\xFF\xFF\xFF\xFF\x82\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\0\0\0\0\x19\x90\x91\x16\x17\x82UPPPV[`\xFF\x83\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 \x81Q\x80\x83\x01\x90\x92Rc\xFF\xFF\xFF\xFFC\x81\x16\x83R\x85\x81\x16\x83\x85\x01\x90\x81R\x82T`\x01\x81\x01\x84U\x92\x86R\x93\x90\x94 \x91Q\x91\x01\x80T\x92Q\x84\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x93\x16\x91\x90\x93\x16\x17\x17\x90UPPPV[\x81TCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a\x0EQW`\x01\x82\x01\x81\x90Ua\x08*V[`\xFF\x93\x90\x93\x16`\0\x90\x81R`\x02` \x81\x81R`@\x80\x84 c\xFF\xFF\xFF\xFF\x96\x87\x16\x85R\x82R\x80\x84 \x81Q\x80\x83\x01\x90\x92RC\x87\x16\x82R\x81\x83\x01\x97\x88R\x80T`\x01\x80\x82\x01\x83U\x91\x86R\x92\x90\x94 \x90Q\x91\x90\x92\x02\x90\x91\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16\x91\x90\x94\x16\x17\x83U\x92Q\x91\x90\x92\x01UPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x0E\xD2W`\0\x80\xFD[\x835\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0E\xF1W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x0F\x05W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x0F\x14W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x0F&W`\0\x80\xFD[` \x83\x01\x94P\x80\x93PPPP\x92P\x92P\x92V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0FwW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0FUV[P\x90\x96\x95PPPPPPV[\x805`\xFF\x81\x16\x81\x14a\x0F\x94W`\0\x80\xFD[\x91\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0F\x94W`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0F\xC0W`\0\x80\xFD[a\x0F\xC9\x83a\x0F\x83V[\x91Pa\x0F\xD7` \x84\x01a\x0F\x99V[\x90P\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x0F\xF2W`\0\x80\xFD[a\x03\x83\x82a\x0F\x83V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x10\x10W`\0\x80\xFD[a\x10\x19\x84a\x0F\x83V[\x92Pa\x10'` \x85\x01a\x0F\x99V[\x91Pa\x105`@\x85\x01a\x0F\x99V[\x90P\x92P\x92P\x92V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0FwW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x10ZV[`\0\x80`@\x83\x85\x03\x12\x15a\x10\x89W`\0\x80\xFD[a\x10\x92\x83a\x0F\x83V[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[` \x80\x82R`5\x90\x82\x01R\x7FIndexRegistry.registerOperator: `@\x82\x01Rt\x1C][\xDC\x9D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`Z\x1B``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0c\xFF\xFF\xFF\xFF\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15a\x11TWa\x11Ta\x11!V[\x03\x93\x92PPPV[`\0`\0\x19\x82\x14\x15a\x11pWa\x11pa\x11!V[P`\x01\x01\x90V[`\0c\xFF\xFF\xFF\xFF\x80\x83\x16\x81\x85\x16\x80\x83\x03\x82\x11\x15a\x11\x96Wa\x11\x96a\x11!V[\x01\x94\x93PPPPV[`\0\x82\x82\x10\x15a\x11\xB1Wa\x11\xB1a\x11!V[P\x03\x90V[`\0\x81a\x11\xC5Wa\x11\xC5a\x11!V[P`\0\x19\x01\x90V\xFE\xA2dipfsX\"\x12 \r\xD4$\x98]t\x81&\xCF\xEC\xB0B\xDF\x97x\x97;l\xAD\xCF\x9F\x9Bq\xB1;.\xE0e\xB5=&\xC4dsolcC\0\x08\x0C\x003`\xC0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\x003\xC88\x03\x80b\x003\xC8\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0eV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\xA0R\x16`\x80Rb\0\0\xA4V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0bW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\0yW`\0\x80\xFD[\x82Qb\0\0\x86\x81b\0\0LV[` \x84\x01Q\x90\x92Pb\0\0\x99\x81b\0\0LV[\x80\x91PP\x92P\x92\x90PV[`\x80Q`\xA0Qa2\xE9b\0\0\xDF`\09`\0\x81\x81a\x03z\x01R\x81\x81a\x1AG\x01Ra\x1By\x01R`\0\x81\x81a\x05)\x01Ra\x18\xA8\x01Ra2\xE9`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\xE5W`\x005`\xE0\x1C\x80c\x9F<\xCFe\x11a\x01\x0FW\x80c\xC8)LV\x11a\0\xA2W\x80c\xF2\xBE\x94\xAE\x11a\0qW\x80c\xF2\xBE\x94\xAE\x14a\x05KW\x80c\xF8Q\xE1\x98\x14a\x05^W\x80c\xFA(\xC6'\x14a\x05qW\x80c\xFFiJw\x14a\x05\x84W`\0\x80\xFD[\x80c\xC8)LV\x14a\x04\xD6W\x80c\xD5\xEC\xCC\x05\x14a\x04\xE9W\x80c\xDD\x98F\xB9\x14a\x04\xFCW\x80c\xDF\\\xF7#\x14a\x05$W`\0\x80\xFD[\x80c\xBC\x9A@\xC3\x11a\0\xDEW\x80c\xBC\x9A@\xC3\x14a\x04tW\x80c\xBD)\xB8\xCD\x14a\x04\x87W\x80c\xC4gx\xA5\x14a\x04\x9AW\x80c\xC6\x01R}\x14a\x04\xC3W`\0\x80\xFD[\x80c\x9F<\xCFe\x14a\x03\xEEW\x80c\xACk\xFB\x03\x14a\x04\x01W\x80c\xAD\xC8\x04\xDA\x14a\x04!W\x80c\xB6\x90Kx\x14a\x04aW`\0\x80\xFD[\x80cK\xD2n\t\x11a\x01\x87W\x80cf\xAC\xFE\xFE\x11a\x01VW\x80cf\xAC\xFE\xFE\x14a\x03JW\x80cm\x14\xA9\x87\x14a\x03uW\x80c|\x17#G\x14a\x03\xB4W\x80c\x81\xC0u\x02\x14a\x03\xCEW`\0\x80\xFD[\x80cK\xD2n\t\x14a\x02\xE5W\x80cT\x01\xED'\x14a\x03\x15W\x80c^Zgu\x14a\x03(W\x80c_\x1F-w\x14a\x037W`\0\x80\xFD[\x80c \xB6b\x98\x11a\x01\xC3W\x80c \xB6b\x98\x14a\x02lW\x80c%PGw\x14a\x02\x81W\x80c,\xD9Y@\x14a\x02\xA2W\x80c<\xA5\xA5\xF5\x14a\x02\xC2W`\0\x80\xFD[\x80c\x04\x91\xB4\x1C\x14a\x01\xEAW\x80c\x08s$a\x14a\x02 W\x80c\x1F\x9Bt\xE0\x14a\x02AW[`\0\x80\xFD[a\x02\ra\x01\xF86`\x04a(\x03V[`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x023a\x02.6`\x04a(\x1EV[a\x05\x97V[`@Qa\x02\x17\x92\x91\x90a(HV[a\x02Ta\x02O6`\x04a(\x7FV[a\x05\xE0V[`@Q`\x01`\x01``\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x17V[a\x02\x7Fa\x02z6`\x04a(\xFAV[a\x06\x02V[\0[a\x02\x94a\x02\x8F6`\x04a)\xBBV[a\x08`V[`@Qa\x02\x17\x92\x91\x90a*ZV[a\x02\xB5a\x02\xB06`\x04a*\x7FV[a\nxV[`@Qa\x02\x17\x91\x90a*\xABV[a\x02\ra\x02\xD06`\x04a(\x03V[`\xFF\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[a\x02\ra\x02\xF36`\x04a*\x7FV[`\0\x91\x82R`\x02` \x90\x81R`@\x80\x84 `\xFF\x93\x90\x93\x16\x84R\x91\x90R\x90 T\x90V[a\x02Ta\x03#6`\x04a*\x7FV[a\x0B\x17V[a\x02\rg\r\xE0\xB6\xB3\xA7d\0\0\x81V[a\x02\x7Fa\x03E6`\x04a+\xB4V[a\x0B0V[a\x03]a\x03X6`\x04a)\xBBV[a\x0ExV[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x17V[a\x03\x9C\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x17V[a\x03\xBC` \x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x02\x17V[a\x03\xE1a\x03\xDC6`\x04a,pV[a\x0F\x17V[`@Qa\x02\x17\x91\x90a,\xC2V[a\x03\x9Ca\x03\xFC6`\x04a(\x1EV[a\x11WV[a\x04\x14a\x04\x0F6`\x04a-\0V[a\x11\x8FV[`@Qa\x02\x17\x91\x90a-3V[a\x044a\x04/6`\x04a(\x1EV[a\x12'V[`@\x80Q\x82Q`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x92\x83\x01Q`\x01`\x01``\x1B\x03\x16\x92\x81\x01\x92\x90\x92R\x01a\x02\x17V[a\x04\x14a\x04o6`\x04a(\x1EV[a\x12\xA1V[a\x02\x7Fa\x04\x826`\x04a-\x7FV[a\x130V[a\x02\x7Fa\x04\x956`\x04a-\xA9V[a\x13QV[a\x02Ta\x04\xA86`\x04a(\x03V[`\0` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01``\x1B\x03\x16\x81V[a\x02\x7Fa\x04\xD16`\x04a.uV[a\x13\xC3V[a\x02Ta\x04\xE46`\x04a.\xC2V[a\x13\xDFV[a\x02Ta\x04\xF76`\x04a(\x03V[a\x14]V[a\x05\x0Fa\x05\n6`\x04a.\xFEV[a\x14\xB0V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\x17V[a\x03\x9C\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x02Ta\x05Y6`\x04a/:V[a\x14\xC5V[a\x04\x14a\x05l6`\x04a*\x7FV[a\x15ZV[a\x02Ta\x05\x7F6`\x04a.\xFEV[a\x16?V[a\x02\x7Fa\x05\x926`\x04a/|V[a\x16\xA0V[`\x03` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x05\xB3W`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x81\x16\x92P`\x01`\xA0\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x90P\x82V[`\0\x82a\x05\xEC\x81a\x17\xCBV[`\0a\x05\xF8\x85\x85a\x18GV[P\x95\x94PPPPPV[a\x06\na\x1AEV[\x84a\x06\x14\x81a\x17\xCBV[\x83\x80a\x06\x8FW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FStakeRegistry.modifyStrategyPara`D\x82\x01R\x7Fms: no strategy indices provided`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[\x82\x81\x14a\x07\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`9`$\x82\x01R\x7FStakeRegistry.modifyStrategyPara`D\x82\x01R\x7Fms: input length mismatch\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x86V[`\xFF\x87\x16`\0\x90\x81R`\x03` R`@\x81 \x90[\x82\x81\x10\x15a\x08UW\x85\x85\x82\x81\x81\x10a\x072Wa\x072a/\xD9V[\x90P` \x02\x01` \x81\x01\x90a\x07G\x91\x90a/\xEFV[\x82\x89\x89\x84\x81\x81\x10a\x07ZWa\x07Za/\xD9V[\x90P` \x02\x015\x81T\x81\x10a\x07qWa\x07qa/\xD9V[\x90`\0R` `\0 \x01`\0\x01`\x14a\x01\0\n\x81T\x81`\x01`\x01``\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01``\x1B\x03\x16\x02\x17\x90UP\x88`\xFF\x16\x7F\x11\xA5d\x13\"\xDA\x1D\xFFV\xA4\xB6n\xAA\xC3\x1F\xFAFR\x95\xEC\xE9\x07\xCD\x1647y;M\0\x9Au\x83\x8A\x8A\x85\x81\x81\x10a\x07\xDAWa\x07\xDAa/\xD9V[\x90P` \x02\x015\x81T\x81\x10a\x07\xF1Wa\x07\xF1a/\xD9V[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\x08\x18Wa\x08\x18a/\xD9V[\x90P` \x02\x01` \x81\x01\x90a\x08-\x91\x90a/\xEFV[`@Qa\x08;\x92\x91\x90a(HV[`@Q\x80\x91\x03\x90\xA2\x80a\x08M\x81a0 V[\x91PPa\x07\x18V[PPPPPPPPPV[``\x80a\x08ka\x1BnV[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\x85Wa\x08\x85a+#V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08\xAEW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\xCBWa\x08\xCBa+#V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08\xF4W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85\x81\x10\x15a\njW`\0\x87\x87\x83\x81\x81\x10a\t\x16Wa\t\x16a/\xD9V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\t+\x90P\x81a\x17\xCBV[`\0\x80a\t8\x83\x8Da\x18GV[\x91P\x91P\x80a\t\xD5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`[`$\x82\x01R\x7FStakeRegistry.registerOperator: `D\x82\x01R\x7FOperator does not meet minimum s`d\x82\x01R\x7Ftake requirement for quorum\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x06\x86V[`\0a\t\xE2\x8C\x85\x85a\x1C!V[\x90P\x82\x87\x86\x81Q\x81\x10a\t\xF7Wa\t\xF7a/\xD9V[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\n!\x84\x82a\x1E\xA1V[\x86\x86\x81Q\x81\x10a\n3Wa\n3a/\xD9V[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPPPPP\x80\x80a\nb\x90a0 V[\x91PPa\x08\xFAV[P\x90\x97\x90\x96P\x94PPPPPV[`\0\x82\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x85\x16\x84R\x82R\x80\x83 \x80T\x82Q\x81\x85\x02\x81\x01\x85\x01\x90\x93R\x80\x83R``\x94\x92\x93\x91\x92\x90\x91\x84\x01[\x82\x82\x10\x15a\x0B\nW`\0\x84\x81R` \x90\x81\x90 `@\x80Q``\x81\x01\x82R\x91\x85\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x84R`\x01` \x1B\x82\x04\x16\x83\x85\x01R`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x90\x82\x01R\x82R`\x01\x90\x92\x01\x91\x01a\n\xB1V[PPPP\x90P[\x92\x91PPV[`\0\x80a\x0B$\x84\x84a\x15ZV[`@\x01Q\x94\x93PPPPV[a\x0B8a\x1AEV[\x81a\x0BB\x81a\x17\xCBV[\x81Q\x80a\x0B\xB7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FStakeRegistry.removeStrategies: `D\x82\x01R\x7Fno indices to remove provided\0\0\0`d\x82\x01R`\x84\x01a\x06\x86V[`\xFF\x84\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 `\x04\x90\x92R\x82 \x90\x91[\x83\x81\x10\x15a\x0EoW\x86`\xFF\x16\x7F1\xFA.,\xD2\x80\xC97^\x13\xFF\xCF=\x81\xE27\x81\0\x18n@X\xF8\xD3\xDD\xB6\x90\xB8-\xCD1\xF7\x84\x88\x84\x81Q\x81\x10a\x0C\x16Wa\x0C\x16a/\xD9V[` \x02` \x01\x01Q\x81T\x81\x10a\x0C.Wa\x0C.a/\xD9V[`\0\x91\x82R` \x91\x82\x90 \x01T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R\x01`@Q\x80\x91\x03\x90\xA2\x86`\xFF\x16\x7F\x11\xA5d\x13\"\xDA\x1D\xFFV\xA4\xB6n\xAA\xC3\x1F\xFAFR\x95\xEC\xE9\x07\xCD\x1647y;M\0\x9Au\x84\x88\x84\x81Q\x81\x10a\x0C\x8CWa\x0C\x8Ca/\xD9V[` \x02` \x01\x01Q\x81T\x81\x10a\x0C\xA4Wa\x0C\xA4a/\xD9V[`\0\x91\x82R` \x80\x83 \x91\x90\x91\x01T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x82R\x91\x81\x01\x92\x90\x92R\x01`@Q\x80\x91\x03\x90\xA2\x82T\x83\x90a\x0C\xE4\x90`\x01\x90a0;V[\x81T\x81\x10a\x0C\xF4Wa\x0C\xF4a/\xD9V[\x90`\0R` `\0 \x01\x83\x87\x83\x81Q\x81\x10a\r\x11Wa\r\x11a/\xD9V[` \x02` \x01\x01Q\x81T\x81\x10a\r)Wa\r)a/\xD9V[`\0\x91\x82R` \x90\x91 \x82T\x91\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x82\x17\x81U\x91T`\x01`\x01``\x1B\x03`\x01`\xA0\x1B\x91\x82\x90\x04\x16\x02\x17\x90U\x82T\x83\x90\x80a\r|Wa\r|a0RV[`\0\x82\x81R` \x81 \x82\x01`\0\x19\x90\x81\x01\x91\x90\x91U\x01\x90U\x81T\x82\x90a\r\xA4\x90`\x01\x90a0;V[\x81T\x81\x10a\r\xB4Wa\r\xB4a/\xD9V[\x90`\0R` `\0 \x01`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x82\x87\x83\x81Q\x81\x10a\r\xE5Wa\r\xE5a/\xD9V[` \x02` \x01\x01Q\x81T\x81\x10a\r\xFDWa\r\xFDa/\xD9V[\x90`\0R` `\0 \x01`\0a\x01\0\n\x81T\x81`\x01`\x01`\xA0\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`\xA0\x1B\x03\x16\x02\x17\x90UP\x81\x80T\x80a\x0E;Wa\x0E;a0RV[`\0\x82\x81R` \x90 \x81\x01`\0\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90U\x80a\x0Eg\x81a0 V[\x91PPa\x0B\xD6V[PPPPPPPV[`\0a\x0E\x82a\x1BnV[`\0\x80[\x83\x81\x10\x15a\x05\xF8W`\0\x85\x85\x83\x81\x81\x10a\x0E\xA2Wa\x0E\xA2a/\xD9V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\x0E\xB7\x90P\x81a\x17\xCBV[`\0\x80a\x0E\xC4\x83\x8Ba\x18GV[\x91P\x91P\x80a\x0E\xE6W`\0\x91P`\x01`\xFF\x84\x16\x1B`\x01`\x01`\xC0\x1B\x03\x86\x16\x17\x94P[`\0a\x0E\xF3\x8A\x85\x85a\x1C!V[\x90Pa\x0E\xFF\x84\x82a\x1E\xA1V[PPPPP\x80\x80a\x0F\x0F\x90a0 V[\x91PPa\x0E\x86V[```\0\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0F3Wa\x0F3a+#V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F\\W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83\x81\x10\x15a\x11LW`\0\x85\x85\x83\x81\x81\x10a\x0F~Wa\x0F~a/\xD9V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\x0F\x93\x90P\x81a\x17\xCBV[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 \x80Tc\xFF\xFF\xFF\xFF\x8A\x16\x92\x90a\x0F\xBCWa\x0F\xBCa/\xD9V[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x10hW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`[`$\x82\x01R\x7FStakeRegistry.getTotalStakeIndic`D\x82\x01R\x7FesAtBlockNumber: quorum has no s`d\x82\x01R\x7Ftake history at blockNumber\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x06\x86V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 T\x90[\x81\x81\x10\x15a\x116W`\xFF\x83\x16`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 c\xFF\xFF\xFF\xFF\x8B\x16\x91a\x10\xAC\x84\x86a0;V[a\x10\xB6\x91\x90a0;V[\x81T\x81\x10a\x10\xC6Wa\x10\xC6a/\xD9V[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a\x11$W`\x01a\x10\xE9\x82\x84a0;V[a\x10\xF3\x91\x90a0;V[\x85\x85\x81Q\x81\x10a\x11\x05Wa\x11\x05a/\xD9V[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x116V[\x80a\x11.\x81a0 V[\x91PPa\x10}V[PPP\x80\x80a\x11D\x90a0 V[\x91PPa\x0FbV[P\x90P[\x93\x92PPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x11sW`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x91P\x82\x90PV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x82\x84\x01\x82\x90R\x85\x82R`\x02\x81R\x83\x82 `\xFF\x88\x16\x83R\x90R\x91\x90\x91 \x80T\x83\x90\x81\x10a\x11\xD4Wa\x11\xD4a/\xD9V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x84R`\x01` \x1B\x82\x04\x16\x93\x83\x01\x93\x90\x93R`\x01`@\x1B\x90\x92\x04`\x01`\x01``\x1B\x03\x16\x91\x81\x01\x91\x90\x91R\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\xFF\x83\x16`\0\x90\x81R`\x03` R`@\x90 \x80T\x83\x90\x81\x10a\x12_Wa\x12_a/\xD9V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q\x80\x82\x01\x90\x91R\x91\x01T`\x01`\x01`\xA0\x1B\x03\x81\x16\x82R`\x01`\xA0\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91\x81\x01\x91\x90\x91R\x93\x92PPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x82\x84\x01\x82\x90R`\xFF\x86\x16\x82R`\x01\x90R\x91\x90\x91 \x80T\x83\x90\x81\x10a\x12\xDEWa\x12\xDEa/\xD9V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x84R`\x01` \x1B\x82\x04\x16\x93\x83\x01\x93\x90\x93R`\x01`@\x1B\x90\x92\x04`\x01`\x01``\x1B\x03\x16\x91\x81\x01\x91\x90\x91R\x93\x92PPPV[a\x138a\x1AEV[\x81a\x13B\x81a\x17\xCBV[a\x13L\x83\x83a \x1BV[PPPV[a\x13Ya\x1BnV[`\0[\x81\x81\x10\x15a\x13\xBDW`\0\x83\x83\x83\x81\x81\x10a\x13xWa\x13xa/\xD9V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\x13\x8D\x90P\x81a\x17\xCBV[`\0a\x13\x9B\x86\x83`\0a\x1C!V[\x90Pa\x13\xA7\x82\x82a\x1E\xA1V[PPP\x80\x80a\x13\xB5\x90a0 V[\x91PPa\x13\\V[PPPPV[a\x13\xCBa\x1AEV[\x81a\x13\xD5\x81a\x17\xCBV[a\x13L\x83\x83a \x84V[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x14\x06Wa\x14\x06a/\xD9V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x82\x04\x16\x93\x82\x01\x93\x90\x93R`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x93\x04\x92\x90\x92\x16\x90\x82\x01R\x90Pa\x0B$\x81\x85a$\xC7V[`\xFF\x81\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x90\x91a\x14~\x91a0;V[\x81T\x81\x10a\x14\x8EWa\x14\x8Ea/\xD9V[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[`\0a\x14\xBD\x84\x84\x84a&AV[\x94\x93PPPPV[`\0\x82\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x14\xF6Wa\x14\xF6a/\xD9V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x82\x04\x16\x93\x82\x01\x93\x90\x93R`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x93\x04\x92\x90\x92\x16\x90\x82\x01R\x90Pa\x15M\x81\x86a$\xC7V[`@\x01Q\x95\x94PPPPPV[`@\x80Q``\x80\x82\x01\x83R`\0\x80\x83R` \x80\x84\x01\x82\x90R\x83\x85\x01\x82\x90R\x86\x82R`\x02\x81R\x84\x82 `\xFF\x87\x16\x83R\x81R\x84\x82 T\x85Q\x93\x84\x01\x86R\x82\x84R\x90\x83\x01\x82\x90R\x93\x82\x01R\x90\x91\x90\x81a\x15\xB3W\x91Pa\x0B\x11\x90PV[`\0\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x15\xDA`\x01\x84a0;V[\x81T\x81\x10a\x15\xEAWa\x15\xEAa/\xD9V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x82\x04\x16\x93\x82\x01\x93\x90\x93R`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x93\x04\x92\x90\x92\x16\x90\x82\x01R\x92Pa\x0B\x11\x91PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x16f\x85\x85\x85a&AV[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x16|Wa\x16|a/\xD9V[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x94\x93PPPPV[a\x16\xA8a\x1BnV[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x17&W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FStakeRegistry.initializeQuorum: `D\x82\x01Rtquorum already exists`X\x1B`d\x82\x01R`\x84\x01a\x06\x86V[a\x170\x83\x82a \x84V[a\x17:\x83\x83a \x1BV[PP`\xFF\x16`\0\x90\x81R`\x01` \x81\x81R`@\x80\x84 \x81Q``\x81\x01\x83Rc\xFF\xFF\xFF\xFFC\x81\x16\x82R\x81\x85\x01\x87\x81R\x93\x82\x01\x87\x81R\x83T\x96\x87\x01\x84U\x92\x87R\x93\x90\x95 \x94Q\x94\x90\x93\x01\x80T\x91Q\x93Q`\x01`\x01``\x1B\x03\x16`\x01`@\x1B\x02`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x94\x84\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x93\x16\x95\x90\x93\x16\x94\x90\x94\x17\x17\x91\x90\x91\x16\x17\x90UV[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x90 Ta\x18DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`1`$\x82\x01R\x7FStakeRegistry.quorumExists: quor`D\x82\x01Rp\x1D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`z\x1B`d\x82\x01R`\x84\x01a\x06\x86V[PV[`\0\x80`\0\x80a\x18f\x86`\xFF\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x90\x91P`\xFF\x87\x16`\0\x90\x81R`\x04` \x81\x90R`@\x80\x83 \x90Qc\x90\x04\x13G`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x92c\x90\x04\x13G\x92a\x18\xDB\x92\x8C\x92\x01a0hV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x18\xF8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x19 \x91\x90\x81\x01\x90a0\xC7V[\x90P`\0[\x83\x81\x10\x15a\x1A\x11W`\xFF\x89\x16`\0\x90\x81R`\x03` R`@\x90 \x80T\x82\x90\x81\x10a\x19QWa\x19Qa/\xD9V[`\0\x91\x82R` \x80\x83 `@\x80Q\x80\x82\x01\x90\x91R\x92\x01T`\x01`\x01`\xA0\x1B\x03\x81\x16\x83R`\x01`\xA0\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x90\x82\x01R\x83Q\x90\x94P\x83\x90\x83\x90\x81\x10a\x19\x9FWa\x19\x9Fa/\xD9V[` \x02` \x01\x01Q\x11\x15a\x19\xFFWg\r\xE0\xB6\xB3\xA7d\0\0\x83` \x01Q`\x01`\x01``\x1B\x03\x16\x83\x83\x81Q\x81\x10a\x19\xD6Wa\x19\xD6a/\xD9V[` \x02` \x01\x01Qa\x19\xE8\x91\x90a1WV[a\x19\xF2\x91\x90a1vV[a\x19\xFC\x90\x86a1\x98V[\x94P[\x80a\x1A\t\x81a0 V[\x91PPa\x19%V[PPP`\xFF\x86\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x91\x93PP`\x01`\x01``\x1B\x03\x90\x81\x16\x90\x83\x16\x10\x15\x90P[\x92P\x92\x90PV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\xA3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xC7\x91\x90a1\xC3V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1BlW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R\x7FStakeRegistry.onlyCoordinatorOwn`D\x82\x01R\x7Fer: caller is not the owner of t`d\x82\x01Ru42\x9092\xB3\xB4\xB9\xBA9<\xA1\xB7\xB7\xB924\xB70\xBA7\xB9`Q\x1B`\x84\x82\x01R`\xA4\x01a\x06\x86V[V[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x1BlW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`L`$\x82\x01R\x7FStakeRegistry.onlyRegistryCoordi`D\x82\x01R\x7Fnator: caller is not the Registr`d\x82\x01Rk<\xA1\xB7\xB7\xB924\xB70\xBA7\xB9`\xA1\x1B`\x84\x82\x01R`\xA4\x01a\x06\x86V[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x81\x90\x80a\x1C\xE5W`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x82R\x80\x83 \x81Q``\x81\x01\x83Rc\xFF\xFF\xFF\xFFC\x81\x16\x82R\x81\x85\x01\x86\x81R`\x01`\x01``\x1B\x03\x80\x8C\x16\x95\x84\x01\x95\x86R\x84T`\x01\x81\x01\x86U\x94\x88R\x95\x90\x96 \x91Q\x91\x90\x92\x01\x80T\x95Q\x93Q\x90\x94\x16`\x01`@\x1B\x02`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x93\x83\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x96\x16\x91\x90\x92\x16\x17\x93\x90\x93\x17\x16\x91\x90\x91\x17\x90Ua\x1EGV[`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a\x1D\x0C`\x01\x84a0;V[\x81T\x81\x10a\x1D\x1CWa\x1D\x1Ca/\xD9V[`\0\x91\x82R` \x90\x91 \x01\x80T`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x94P\x90\x91P\x85\x16\x83\x14\x15a\x1DUW`\0\x93PPPPa\x11PV[\x80TCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a\x1D\x8FW\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua\x1EEV[\x80Tg\xFF\xFF\xFF\xFF\0\0\0\0\x19\x16`\x01` \x1BCc\xFF\xFF\xFF\xFF\x90\x81\x16\x82\x81\x02\x93\x90\x93\x17\x84U`\0\x8A\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x8D\x16\x84R\x82R\x80\x83 \x81Q``\x81\x01\x83R\x96\x87R\x86\x83\x01\x84\x81R`\x01`\x01``\x1B\x03\x8D\x81\x16\x93\x89\x01\x93\x84R\x82T`\x01\x81\x01\x84U\x92\x86R\x93\x90\x94 \x96Q\x96\x01\x80T\x93Q\x91Q\x96\x85\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x94\x16\x93\x90\x93\x17\x93\x16\x90\x93\x02\x91\x90\x91\x17`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B\x93\x90\x92\x16\x92\x90\x92\x02\x17\x90U[P[`@\x80Q`\xFF\x87\x16\x81R`\x01`\x01``\x1B\x03\x86\x16` \x82\x01R\x87\x91\x7F/R}R~\x95\xD8\xFE@\xAE\xC5Swt;\xB7y\x08}\xA3\xF6\xD0\xD0\x8F\x12\xE3dD\xDAb2}\x91\x01`@Q\x80\x91\x03\x90\xA2a\x1E\x97\x82\x85a'\xA7V[\x96\x95PPPPPPV[`\xFF\x82\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a\x1E\xC5\x90\x84a0;V[\x81T\x81\x10a\x1E\xD5Wa\x1E\xD5a/\xD9V[\x90`\0R` `\0 \x01\x90P\x83`\0\x14\x15a\x1F\x04WT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\x0B\x11\x90PV[\x80T`\0\x90a\x1F#\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a'\xBFV[\x82T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a\x1F`W\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua \x12V[\x81Tc\xFF\xFF\xFF\xFFC\x81\x16`\x01` \x1B\x81\x81\x02g\xFF\xFF\xFF\xFF\0\0\0\0\x19\x90\x94\x16\x93\x90\x93\x17\x85U`\xFF\x89\x16`\0\x90\x81R`\x01` \x81\x81R`@\x80\x84 \x81Q``\x81\x01\x83R\x95\x86R\x85\x83\x01\x85\x81R`\x01`\x01``\x1B\x03\x80\x8B\x16\x93\x88\x01\x93\x84R\x82T\x95\x86\x01\x83U\x91\x86R\x92\x90\x94 \x94Q\x94\x90\x92\x01\x80T\x91Q\x92Q\x90\x93\x16`\x01`@\x1B\x02`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x92\x86\x16\x90\x96\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x91\x16\x93\x90\x94\x16\x92\x90\x92\x17\x92\x90\x92\x17\x16\x91\x90\x91\x17\x90U[\x95\x94PPPPPV[`\xFF\x82\x16`\0\x81\x81R` \x81\x81R`@\x91\x82\x90 \x80Tk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01``\x1B\x03\x86\x16\x90\x81\x17\x90\x91U\x91Q\x91\x82R\x7F&\xEE\xCF\xF2\xB7\x0B\nq\x10O\xF4\xD9@\xBAqb\xD2:\x95\xC2Hw\x1F\xC4\x87\xA7\xBE\x17\xA5\x96\xB3\xCF\x91\x01`@Q\x80\x91\x03\x90\xA2PPV[`\0\x81Q\x11a \xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R`\0\x80Q` a2\x94\x839\x81Q\x91R`D\x82\x01R\x7F: no strategies provided\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x86V[\x80Q`\xFF\x83\x16`\0\x90\x81R`\x03` \x90\x81R`@\x90\x91 T\x90a!\x0C\x83\x83a1\xE0V[\x11\x15a!|W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`E`$\x82\x01R`\0\x80Q` a2\x94\x839\x81Q\x91R`D\x82\x01R\x7F: exceed MAX_WEIGHING_FUNCTION_L`d\x82\x01Rd\x08\xA9\xC8\xEA\x89`\xDB\x1B`\x84\x82\x01R`\xA4\x01a\x06\x86V[`\0[\x82\x81\x10\x15a$\xC0W`\0[a!\x94\x82\x84a1\xE0V[\x81\x10\x15a\"uW\x84\x82\x81Q\x81\x10a!\xADWa!\xADa/\xD9V[` \x02` \x01\x01Q`\0\x01Q`\x01`\x01`\xA0\x1B\x03\x16`\x03`\0\x88`\xFF\x16`\xFF\x16\x81R` \x01\x90\x81R` \x01`\0 \x82\x81T\x81\x10a!\xECWa!\xECa/\xD9V[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\"cW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R`\0\x80Q` a2\x94\x839\x81Q\x91R`D\x82\x01R\x7F: cannot add same strategy 2x\0\0\0`d\x82\x01R`\x84\x01a\x06\x86V[\x80a\"m\x81a0 V[\x91PPa!\x8AV[P`\0\x84\x82\x81Q\x81\x10a\"\x8AWa\"\x8Aa/\xD9V[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x11a#\x0FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R`\0\x80Q` a2\x94\x839\x81Q\x91R`D\x82\x01R\x7F: cannot add strategy with zero `d\x82\x01Re\x1D\xD9ZY\xDA\x1D`\xD2\x1B`\x84\x82\x01R`\xA4\x01a\x06\x86V[`\xFF\x85\x16`\0\x90\x81R`\x03` R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a#5Wa#5a/\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q\x82T`\x01\x81\x01\x84U`\0\x93\x84R\x82\x84 \x82Q\x92\x84\x01Q`\x01`\x01``\x1B\x03\x16`\x01`\xA0\x1B\x02`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x92\x90\x92\x17\x91\x01U`\xFF\x87\x16\x82R`\x04\x90R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a#\x9AWa#\x9Aa/\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQ\x82T`\x01\x81\x01\x84U`\0\x93\x84R\x91\x90\x92 \x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90U\x83Q`\xFF\x86\x16\x90\x7F\x10V^V\xCA\xCB\xF3.\xCA&yE\xF0T\xFE\xC0.Yu\x002\xD1\x13\xD30!\x82\xAD\x96\x7FT\x04\x90\x86\x90\x84\x90\x81\x10a$\x11Wa$\x11a/\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQ`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R\x01`@Q\x80\x91\x03\x90\xA2\x84`\xFF\x16\x7F\x11\xA5d\x13\"\xDA\x1D\xFFV\xA4\xB6n\xAA\xC3\x1F\xFAFR\x95\xEC\xE9\x07\xCD\x1647y;M\0\x9Au\x85\x83\x81Q\x81\x10a$nWa$na/\xD9V[` \x02` \x01\x01Q`\0\x01Q\x86\x84\x81Q\x81\x10a$\x8CWa$\x8Ca/\xD9V[` \x02` \x01\x01Q` \x01Q`@Qa$\xA6\x92\x91\x90a(HV[`@Q\x80\x91\x03\x90\xA2\x80a$\xB8\x81a0 V[\x91PPa!\x7FV[PPPPPV[\x81`\0\x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10\x15a%lW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R\x7FStakeRegistry._validateStakeUpda`D\x82\x01R\x7FteAtBlockNumber: stakeUpdate is `d\x82\x01Ru397\xB6\x900\xB3:2\xB9\x10167\xB1\xB5\xA7:\xB6\xB12\xB9`Q\x1B`\x84\x82\x01R`\xA4\x01a\x06\x86V[` \x82\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a%\x92WP\x81` \x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10[a&=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`j`$\x82\x01R\x7FStakeRegistry._validateStakeUpda`D\x82\x01R\x7FteAtBlockNumber: there is a newe`d\x82\x01R\x7Fr stakeUpdate available before b`\x84\x82\x01Ri67\xB1\xB5\xA7:\xB6\xB12\xB9`\xB1\x1B`\xA4\x82\x01R`\xC4\x01a\x06\x86V[PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a&\xE2W`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x90 c\xFF\xFF\xFF\xFF\x85\x16\x90a&\x95`\x01\x84a0;V[\x81T\x81\x10a&\xA5Wa&\xA5a/\xD9V[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a&\xD0Wa&\xC7`\x01\x82a0;V[\x92PPPa\x11PV[\x80a&\xDA\x81a1\xF8V[\x91PPa&`V[P`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x81`$\x82\x01R\x7FStakeRegistry._getStakeUpdateInd`D\x82\x01R\x7FexForOperatorAtBlockNumber: no s`d\x82\x01R\x7Ftake update found for operatorId`\x84\x82\x01R\x7F and quorumNumber at block numbe`\xA4\x82\x01R`9`\xF9\x1B`\xC4\x82\x01R`\xE4\x01a\x06\x86V[`\0a\x11P`\x01`\x01``\x1B\x03\x80\x85\x16\x90\x84\x16a2\x0FV[`\0\x80\x82\x12\x15a'\xE3Wa'\xD2\x82a2NV[a'\xDC\x90\x84a2kV[\x90Pa\x0B\x11V[a'\xDC\x82\x84a1\x98V[\x805`\xFF\x81\x16\x81\x14a'\xFEW`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a(\x15W`\0\x80\xFD[a\x11P\x82a'\xEDV[`\0\x80`@\x83\x85\x03\x12\x15a(1W`\0\x80\xFD[a(:\x83a'\xEDV[\x94` \x93\x90\x93\x015\x93PPPV[`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x82R`\x01`\x01``\x1B\x03\x16` \x82\x01R`@\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x18DW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a(\x92W`\0\x80\xFD[a(\x9B\x83a'\xEDV[\x91P` \x83\x015a(\xAB\x81a(jV[\x80\x91PP\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a(\xC8W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xDFW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x1A>W`\0\x80\xFD[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a)\x12W`\0\x80\xFD[a)\x1B\x86a'\xEDV[\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a)7W`\0\x80\xFD[a)C\x89\x83\x8A\x01a(\xB6V[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a)\\W`\0\x80\xFD[Pa)i\x88\x82\x89\x01a(\xB6V[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a)\x8CW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a)\xA3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x1A>W`\0\x80\xFD[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a)\xD1W`\0\x80\xFD[\x845a)\xDC\x81a(jV[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a)\xFEW`\0\x80\xFD[a*\n\x87\x82\x88\x01a)zV[\x95\x98\x94\x97P\x95PPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*OW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a**V[P\x94\x95\x94PPPPPV[`@\x81R`\0a*m`@\x83\x01\x85a*\x16V[\x82\x81\x03` \x84\x01Ra \x12\x81\x85a*\x16V[`\0\x80`@\x83\x85\x03\x12\x15a*\x92W`\0\x80\xFD[\x825\x91Pa*\xA2` \x84\x01a'\xEDV[\x90P\x92P\x92\x90PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a+\x17Wa+\x04\x83\x85Qc\xFF\xFF\xFF\xFF\x80\x82Q\x16\x83R\x80` \x83\x01Q\x16` \x84\x01RP`\x01`\x01``\x1B\x03`@\x82\x01Q\x16`@\x83\x01RPPV[\x92\x84\x01\x92``\x92\x90\x92\x01\x91`\x01\x01a*\xC7V[P\x90\x96\x95PPPPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+[Wa+[a+#V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\x89Wa+\x89a+#V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a+\xAAWa+\xAAa+#V[P`\x05\x1B` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a+\xC7W`\0\x80\xFD[a+\xD0\x83a'\xEDV[\x91P` \x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xECW`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a+\xFDW`\0\x80\xFD[\x805a,\x10a,\x0B\x82a+\x91V[a+aV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15a,/W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a,MW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a,4V[\x80\x95PPPPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a'\xFEW`\0\x80\xFD[`\0\x80`\0`@\x84\x86\x03\x12\x15a,\x85W`\0\x80\xFD[a,\x8E\x84a,\\V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xA9W`\0\x80\xFD[a,\xB5\x86\x82\x87\x01a)zV[\x94\x97\x90\x96P\x93\x94PPPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a+\x17W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a,\xDEV[`\0\x80`\0``\x84\x86\x03\x12\x15a-\x15W`\0\x80\xFD[a-\x1E\x84a'\xEDV[\x95` \x85\x015\x95P`@\x90\x94\x015\x93\x92PPPV[\x81Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x84\x01Q\x90\x91\x16\x90\x82\x01R`@\x80\x83\x01Q`\x01`\x01``\x1B\x03\x16\x90\x82\x01R``\x81\x01a\x0B\x11V[\x805`\x01`\x01``\x1B\x03\x81\x16\x81\x14a'\xFEW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a-\x92W`\0\x80\xFD[a-\x9B\x83a'\xEDV[\x91Pa*\xA2` \x84\x01a-hV[`\0\x80`\0`@\x84\x86\x03\x12\x15a-\xBEW`\0\x80\xFD[\x835\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xA9W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a-\xECW`\0\x80\xFD[\x815` a-\xFCa,\x0B\x83a+\x91V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a.\x1BW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a.jW`@\x81\x89\x03\x12\x15a.8W`\0\x80\x81\xFD[a.@a+9V[\x815a.K\x81a(jV[\x81Ra.X\x82\x86\x01a-hV[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01a.\x1FV[P\x96\x95PPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a.\x88W`\0\x80\xFD[a.\x91\x83a'\xEDV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xACW`\0\x80\xFD[a.\xB8\x85\x82\x86\x01a-\xDBV[\x91PP\x92P\x92\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a.\xD7W`\0\x80\xFD[a.\xE0\x84a'\xEDV[\x92Pa.\xEE` \x85\x01a,\\V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`\0``\x84\x86\x03\x12\x15a/\x13W`\0\x80\xFD[\x835\x92Pa/#` \x85\x01a'\xEDV[\x91Pa/1`@\x85\x01a,\\V[\x90P\x92P\x92P\x92V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a/PW`\0\x80\xFD[a/Y\x85a'\xEDV[\x93Pa/g` \x86\x01a,\\V[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a/\x91W`\0\x80\xFD[a/\x9A\x84a'\xEDV[\x92Pa/\xA8` \x85\x01a-hV[\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xC3W`\0\x80\xFD[a/\xCF\x86\x82\x87\x01a-\xDBV[\x91PP\x92P\x92P\x92V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a0\x01W`\0\x80\xFD[a\x11P\x82a-hV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a04Wa04a0\nV[P`\x01\x01\x90V[`\0\x82\x82\x10\x15a0MWa0Ma0\nV[P\x03\x90V[cNH{q`\xE0\x1B`\0R`1`\x04R`$`\0\xFD[`\0`@\x82\x01`\x01\x80`\xA0\x1B\x03\x80\x86\x16\x84R` `@\x81\x86\x01R\x82\x86T\x80\x85R``\x87\x01\x91P\x87`\0R\x82`\0 \x94P`\0[\x81\x81\x10\x15a0\xB9W\x85T\x85\x16\x83R`\x01\x95\x86\x01\x95\x92\x84\x01\x92\x01a0\x9BV[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a0\xDAW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xF0W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a1\x01W`\0\x80\xFD[\x80Qa1\x0Fa,\x0B\x82a+\x91V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a1.W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a1LW\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a13V[\x97\x96PPPPPPPV[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a1qWa1qa0\nV[P\x02\x90V[`\0\x82a1\x93WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0`\x01`\x01``\x1B\x03\x80\x83\x16\x81\x85\x16\x80\x83\x03\x82\x11\x15a1\xBAWa1\xBAa0\nV[\x01\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a1\xD5W`\0\x80\xFD[\x81Qa\x11P\x81a(jV[`\0\x82\x19\x82\x11\x15a1\xF3Wa1\xF3a0\nV[P\x01\x90V[`\0\x81a2\x07Wa2\x07a0\nV[P`\0\x19\x01\x90V[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a2-Wa2-a0\nV[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a2HWa2Ha0\nV[PP\x03\x90V[`\0`\x01`\xFF\x1B\x82\x14\x15a2dWa2da0\nV[P`\0\x03\x90V[`\0`\x01`\x01``\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15a2\x8BWa2\x8Ba0\nV[\x03\x93\x92PPPV\xFEStakeRegistry._addStrategyParams\xA2dipfsX\"\x12 U\xBFx\xA9\xAD\xDC\xFCS\xE6h\xF5\xD4\xAA4i;\x1A3\xCDU\xFA\xCC\x1B,S\xFB\xB2\xB0o\xA0'\xBAdsolcC\0\x08\x0C\x003a\x01\xC0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0c\x998\x03\x80b\0c\x99\x839\x81\x01`@\x81\x90Rb\0\x005\x91b\0\x02TV[`@\x80Q\x80\x82\x01\x82R`\x16\x81R\x7FAVSRegistryCoordinator\0\0\0\0\0\0\0\0\0\0` \x80\x83\x01\x91\x82R\x83Q\x80\x85\x01\x90\x94R`\x06\x84Rev0.0.1`\xD0\x1B\x90\x84\x01R\x81Q\x90 `\xE0\x81\x90R\x7Fk\xDA~?8^H\x84\x10H9\x04D\xCC\xED\\\xC7\x95\xAF\x87u\x8A\xF6v\"\xE5\xF4\xF0\x88,J\x99a\x01\0\x81\x90RF`\xA0R\x87\x93\x87\x93\x87\x93\x87\x93\x91\x92\x91\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0Fb\0\x015\x81\x84\x84`@\x80Q` \x81\x01\x85\x90R\x90\x81\x01\x83\x90R``\x81\x01\x82\x90RF`\x80\x82\x01R0`\xA0\x82\x01R`\0\x90`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x93\x92PPPV[`\x80R0`\xC0Ra\x01 RPPPP`\x01`\x01`\xA0\x1B\x03\x93\x84\x16a\x01@R\x91\x83\x16a\x01\x80R\x82\x16a\x01`R\x16a\x01\xA0Rb\0\x01ob\0\x01yV[PPPPb\0\x02\xBCV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\x01\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FInitializable: contract is initi`D\x82\x01Rfalizing`\xC8\x1B`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[`\0T`\xFF\x90\x81\x16\x10\x15b\0\x029W`\0\x80T`\xFF\x19\x16`\xFF\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x02QW`\0\x80\xFD[PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x02kW`\0\x80\xFD[\x84Qb\0\x02x\x81b\0\x02;V[` \x86\x01Q\x90\x94Pb\0\x02\x8B\x81b\0\x02;V[`@\x86\x01Q\x90\x93Pb\0\x02\x9E\x81b\0\x02;V[``\x86\x01Q\x90\x92Pb\0\x02\xB1\x81b\0\x02;V[\x93\x96\x92\x95P\x90\x93PPV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x01\0Qa\x01 Qa\x01@Qa\x01`Qa\x01\x80Qa\x01\xA0Qa_\xD5b\0\x03\xC4`\09`\0\x81\x81a\x06\xAB\x01R\x81\x81a\x11\x9D\x01R\x81\x81a \x85\x01R\x81\x81a.\xB5\x01R\x81\x81a7l\x01Ra=D\x01R`\0\x81\x81a\x05\xF0\x01R\x81\x81a \x10\x01R\x81\x81a$\xB8\x01R\x81\x81a.5\x01R\x81\x81a6\xC3\x01R\x81\x81a9\x19\x01Ra<\xC3\x01R`\0\x81\x81a\x05\xB6\x01R\x81\x81a\x0F8\x01R\x81\x81a N\x01R\x81\x81a-\xB7\x01R\x81\x81a/\x9D\x01R\x81\x81a0\x13\x01R\x81\x81a6C\x01Ra=\xC0\x01R`\0\x81\x81a\x04\xFA\x01R\x81\x81a-\r\x01Ra5\x8B\x01R`\0a?\xC7\x01R`\0a@\x16\x01R`\0a?\xF1\x01R`\0a?J\x01R`\0a?t\x01R`\0a?\x9E\x01Ra_\xD5`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x02\xD5W`\x005`\xE0\x1C\x80c]\xF4YF\x11a\x01\x82W\x80c\x9F\xEA\xB8Y\x11a\0\xE9W\x80c\xD7-\x8D\xD6\x11a\0\xA2W\x80c\xE6W\x97\xAD\x11a\0|W\x80c\xE6W\x97\xAD\x14a\x07\x98W\x80c\xF2\xFD\xE3\x8B\x14a\x08;W\x80c\xFA\xBC\x1C\xBC\x14a\x08NW\x80c\xFD9\x10Z\x14a\x08aW`\0\x80\xFD[\x80c\xD7-\x8D\xD6\x14a\x07jW\x80c\xD7[L\x88\x14a\x07rW\x80c\xDD\x82\x83\xF3\x14a\x07\x85W`\0\x80\xFD[\x80c\x9F\xEA\xB8Y\x14a\x06\xCDW\x80c\xA5\x08W\xBF\x14a\x06\xF4W\x80c\xA9ox>\x14a\x07\x07W\x80c\xC3\x91B^\x14a\x07\x10W\x80c\xCA\r\xE8\x82\x14a\x070W\x80c\xCAO-\x97\x14a\x07WW`\0\x80\xFD[\x80c\x87\x1E\xF0I\x11a\x01;W\x80c\x87\x1E\xF0I\x14a\x06@W\x80c\x88o\x11\x95\x14a\x06SW\x80c\x8D\xA5\xCB[\x14a\x06lW\x80c\x9A\xA1e=\x14a\x06tW\x80c\x9B]\x17{\x14a\x06\x93W\x80c\x9E\x99#\xC2\x14a\x06\xA6W`\0\x80\xFD[\x80c]\xF4YF\x14a\x05\xB1W\x80ccG\xC9\0\x14a\x05\xD8W\x80ch0H5\x14a\x05\xEBW\x80cn;\x17\xDB\x14a\x06\x12W\x80cqP\x18\xA6\x14a\x06%W\x80c\x84\xCAR\x13\x14a\x06-W`\0\x80\xFD[\x80c$\x9A\x0CB\x11a\x02AW\x80c<*\x7FL\x11a\x01\xFAW\x80cY\\jg\x11a\x01\xD4W\x80cY\\jg\x14a\x05oW\x80cZ\xC8j\xB7\x14a\x05wW\x80c[\x0B\x82\x9F\x14a\x05\x96W\x80c\\\x97Z\xBB\x14a\x05\xA9W`\0\x80\xFD[\x80c<*\x7FL\x14a\x05\x1CW\x80cQ@\xA5H\x14a\x05\x80W\xC1\xAD\x1F5\x10\xFC\x83w\x8B\xE2\x0F\x10\xEC]\xE6\x81V[a\x02\xEDa\x07\x026`\x04aR/V[a\x1B\xB8V[a\x03\x0F`\xA0T\x81V[a\x07#a\x07\x1E6`\x04aR\xD7V[a\x1D=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x15\x91\x90aX\x1FV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\rEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aX=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xC2\x91\x90aX\x86V[a\r\xDEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aX\xA8V[`\x01T\x81\x81\x16\x14a\x0EWW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.pause: invalid attempt `D\x82\x01R\x7Fto unpause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x08\xC6V[`\x01\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01a\x0C\x86V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`\0\x83\x81R`\x98` R`@\x90 \x80T\x83\x90\x81\x10a\x0E\xCBWa\x0E\xCBaWxV[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x82\x04\x16\x93\x82\x01\x93\x90\x93R`\x01`\x01`\xC0\x1B\x03`\x01`@\x1B\x90\x93\x04\x92\x90\x92\x16\x90\x82\x01R\x90P[\x92\x91PPV[`@Qc\x08\xF6b\x9D`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90cG\xB3\x14\xE8\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\x87W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\x19\x91\x90aX\x1FV[a\x0F\xB3a%gV[a\rN\x81a&\xCBV[a\x0F\xC4a%gV[a\rN\x81a'4V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x0F\x19a\x10G\x7F+\xD8!$\x05\x7F\t\x13\xBC;w,\xE7\xB8>\x80W\xC1\xAD\x1F5\x10\xFC\x83w\x8B\xE2\x0F\x10\xEC]\xE6\x84`@Q` \x01a\x10,\x92\x91\x90\x91\x82R`\x01`\x01`\xA0\x1B\x03\x16` \x82\x01R`@\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a'\x9DV[a'\xEBV[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x10uW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aWAV[`\0a\x10\xBD\x84\x84\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`\x96T`\xFF\x16\x91Pa({\x90PV[\x90P\x84\x83\x14a\x11.W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` a_@\x839\x81Q\x91R`D\x82\x01R\x7ForsForQuorum: input length misma`d\x82\x01Rb\x0E\x8Cm`\xEB\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`\0[\x83\x81\x10\x15a\x15TW`\0\x85\x85\x83\x81\x81\x10a\x11MWa\x11MaWxV[\x91\x90\x91\x015`\xF8\x1C\x91P6\x90P`\0\x89\x89\x85\x81\x81\x10a\x11nWa\x11naWxV[\x90P` \x02\x81\x01\x90a\x11\x80\x91\x90aX\xF0V[`@Qcy\xA0\x84\x91`\xE1\x1B\x81R`\xFF\x86\x16`\x04\x82\x01R\x91\x93P\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90c\xF3A\t\"\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11\xECW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12\x10\x91\x90aY9V[c\xFF\xFF\xFF\xFF\x16\x81\x14a\x12\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`e`$\x82\x01R`\0\x80Q` a_@\x839\x81Q\x91R`D\x82\x01R\x7ForsForQuorum: number of updated `d\x82\x01R\x7Foperators does not match quorum `\x84\x82\x01Rd\x1D\x1B\xDD\x18[`\xDA\x1B`\xA4\x82\x01R`\xC4\x01a\x08\xC6V[`\0\x80[\x82\x81\x10\x15a\x14\xF3W`\0\x84\x84\x83\x81\x81\x10a\x12\xCCWa\x12\xCCaWxV[\x90P` \x02\x01` \x81\x01\x90a\x12\xE1\x91\x90aL\xC7V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\x99` \x90\x81R`@\x80\x83 \x81Q\x80\x83\x01\x90\x92R\x80T\x82R`\x01\x81\x01T\x94\x95P\x92\x93\x90\x92\x91\x83\x01\x90`\xFF\x16`\x02\x81\x11\x15a\x13,Wa\x13,aM\xF5V[`\x02\x81\x11\x15a\x13=Wa\x13=aM\xF5V[\x90RP\x80Q\x90\x91P`\0a\x13P\x82a#EV[\x90P`\x01`\x01`\x01`\xC0\x1B\x03\x82\x16`\xFF\x8B\x16\x1C\x81\x16\x14a\x13\xD4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R`\0\x80Q` a_@\x839\x81Q\x91R\x90\x82\x01R\x7ForsForQuorum: operator not in qu`d\x82\x01Rcorum`\xE0\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[\x85`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x11a\x14\x7FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`g`$\x82\x01R`\0\x80Q` a_@\x839\x81Q\x91R`D\x82\x01R\x7ForsForQuorum: operators array mu`d\x82\x01R\x7Fst be sorted in ascending addres`\x84\x82\x01Rf9\x907\xB922\xB9`\xC9\x1B`\xA4\x82\x01R`\xC4\x01a\x08\xC6V[Pa\x14\xDD\x83\x83\x8F\x8F\x8D\x90\x8E`\x01a\x14\x96\x91\x90aYVV[\x92a\x14\xA3\x93\x92\x91\x90aYnV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa$z\x92PPPV[P\x90\x92Pa\x14\xEC\x90P\x81aW\xA4V[\x90Pa\x12\xB0V[P`\xFF\x84\x16`\0\x81\x81R`\x9B` \x90\x81R`@\x91\x82\x90 C\x90\x81\x90U\x91Q\x91\x82R\x7FF\x07}U3\x07c\xF1bi\xFDu\xE5v\x16c\xF4\x19-'\x91t|\x01\x89\xB1j\xD3\x1D\xB0}\xB4\x91\x01`@Q\x80\x91\x03\x90\xA2PPPP\x80a\x15M\x90aW\xA4V[\x90Pa\x111V[PPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` \x90\x81R`@\x91\x82\x90 \x82Q\x80\x84\x01\x90\x93R\x80T\x83R`\x01\x81\x01T\x90\x91\x83\x01\x90`\xFF\x16`\x02\x81\x11\x15a\x15\xB7Wa\x15\xB7aM\xF5V[`\x02\x81\x11\x15a\x15\xC8Wa\x15\xC8aM\xF5V[\x90RP\x92\x91PPV[`\0T`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01Rb\x01\0\0\x90\x91\x04`\x01`\x01`\xA0\x1B\x03\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16\x1EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16B\x91\x90aX\x86V[a\x16^W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aX\xA8V[`\0\x19`\x01\x81\x90U`@Q\x90\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2V[a\x16\xA5a%gV[\x81a\x16\xAF\x81a)\x0CV[a\x16\xB9\x83\x83a)\x8AV[PPPV[`\x9C\x81\x81T\x81\x10a\x16\xCEW`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x90P\x81V[a\x16\xF0a*7V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9F` \x90\x81R`@\x80\x83 B\x90U`\x99\x82R\x80\x83 \x80T\x82Q`\x1F\x87\x01\x85\x90\x04\x85\x02\x81\x01\x85\x01\x90\x93R\x85\x83R\x90\x93\x90\x92\x90\x91a\x17]\x91\x87\x90\x87\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`\x96T`\xFF\x16\x91Pa({\x90PV[\x90P`\0a\x17j\x83a#EV[\x90P`\x01\x80\x85\x01T`\xFF\x16`\x02\x81\x11\x15a\x17\x86Wa\x17\x86aM\xF5V[\x14\x80\x15a\x17\x9BWP`\x01`\x01`\xC0\x1B\x03\x82\x16\x15\x15[\x80\x15a\x17\xB9WPa\x17\xB9`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x16\x14\x90V[\x15a\x15TWa\x15T\x87\x87\x87\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa*\xB7\x92PPPV[a\x18\x06a%gV[a\x18\x10`\0a/)V[V[`\0a\x18R\x7FM@N2v\xE7\xAC!c\xD8\xEEGj\xFAjA\xD1\xF6\x8F\xB7\x1F-\x8BeF\xB2NU\xCE\x01\xB7*\x87\x87\x87\x87\x87`@Q` \x01a\x10,\x96\x95\x94\x93\x92\x91\x90aY\x98V[\x96\x95PPPPPPV[`\0a\x0F\x19\x82a#EV[`\0a\x18{`dT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90P\x90V[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x18\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aWAV[\x83\x89\x14a\x19+W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FRegistryCoordinator.registerOper\x90\x82\x01R\x7FatorWithChurn: input length mism`d\x82\x01Rc\x0C.\x8Cm`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`\0a\x1973\x88a/{V[\x90Pa\x19\x973\x82\x88\x88\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x19\x8CWa\x19}`@\x83\x02\x86\x016\x81\x90\x03\x81\x01\x90aZ\x1DV[\x81R` \x01\x90`\x01\x01\x90a\x19`V[PPPPP\x87a0\xACV[`\0a\x19\xDE3\x83\x8E\x8E\x8E\x8E\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RP\x8C\x92Pa29\x91PPV[\x90P`\0[\x8B\x81\x10\x15a\x1B\xA9W`\0`\x97`\0\x8F\x8F\x85\x81\x81\x10a\x1A\x03Wa\x1A\x03aWxV[\x91\x90\x91\x015`\xF8\x1C\x82RP` \x80\x82\x01\x92\x90\x92R`@\x90\x81\x01`\0 \x81Q``\x81\x01\x83R\x90Tc\xFF\xFF\xFF\xFF\x81\x16\x80\x83Ra\xFF\xFF`\x01` \x1B\x83\x04\x81\x16\x95\x84\x01\x95\x90\x95R`\x01`0\x1B\x90\x91\x04\x90\x93\x16\x91\x81\x01\x91\x90\x91R\x84Q\x80Q\x91\x93P\x90\x84\x90\x81\x10a\x1ApWa\x1ApaWxV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1B\x96Wa\x1B\x11\x8E\x8E\x84\x81\x81\x10a\x1A\x99Wa\x1A\x99aWxV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x84`@\x01Q\x84\x81Q\x81\x10a\x1A\xBCWa\x1A\xBCaWxV[` \x02` \x01\x01Q3\x86` \x01Q\x86\x81Q\x81\x10a\x1A\xDBWa\x1A\xDBaWxV[` \x02` \x01\x01Q\x8D\x8D\x88\x81\x81\x10a\x1A\xF5Wa\x1A\xF5aWxV[\x90P`@\x02\x01\x806\x03\x81\x01\x90a\x1B\x0B\x91\x90aZ\x1DV[\x86a7\xFAV[a\x1B\x96\x89\x89\x84\x81\x81\x10a\x1B&Wa\x1B&aWxV[\x90P`@\x02\x01` \x01` \x81\x01\x90a\x1B>\x91\x90aL\xC7V[\x8F\x8F\x85\x90\x86`\x01a\x1BO\x91\x90aYVV[\x92a\x1B\\\x93\x92\x91\x90aYnV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa*\xB7\x92PPPV[P\x80a\x1B\xA1\x81aW\xA4V[\x91PPa\x19\xE3V[PPPPPPPPPPPPPV[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x1B\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aWAV[`\0a\x1B\xEC3\x85a/{V[\x90P`\0a\x1C53\x83\x8B\x8B\x8B\x8B\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RP\x8C\x92Pa29\x91PPV[Q\x90P`\0[\x88\x81\x10\x15a\x1D0W`\0\x8A\x8A\x83\x81\x81\x10a\x1CWWa\x1CWaWxV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x97` R`@\x90 T\x85Q\x91\x93Pc\xFF\xFF\xFF\xFF\x16\x91P\x84\x90\x84\x90\x81\x10a\x1C\x8DWa\x1C\x8DaWxV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1D\x1DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FRegistryCoordinator.registerOper\x90\x82\x01R\x7Fator: operator count exceeds max`d\x82\x01Rcimum`\xE0\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[P\x80a\x1D(\x81aW\xA4V[\x91PPa\x1C;V[PPPPPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1DYWa\x1DYaKkV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x82W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1D\xEDWa\x1D\xB4\x85\x85\x83\x81Q\x81\x10a\x1D\xA7Wa\x1D\xA7aWxV[` \x02` \x01\x01Qa:\xCFV[\x82\x82\x81Q\x81\x10a\x1D\xC6Wa\x1D\xC6aWxV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x1D\xE5\x81aW\xA4V[\x91PPa\x1D\x88V[P\x93\x92PPPV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\x1E\x1CW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aWAV[a\x16\xB93\x84\x84\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa*\xB7\x92PPPV[a\x1Eda%gV[a\x16\xB9\x83\x83\x83a<\x0BV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x1E\x8FWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x1E\xA9WP0;\x15\x80\x15a\x1E\xA9WP`\0T`\xFF\x16`\x01\x14[a\x1F\x0CW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01a\x08\xC6V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x1F/W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[\x82Q\x84Q\x14\x80\x15a\x1FAWP\x81Q\x83Q\x14[a\x1F\xABW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FRegistryCoordinator.initialize: `D\x82\x01Rt\r-\xCE\x0E\xAE\x84\r\x8C\xAD\xCC\xEE\x8D\x04\r\xAD.m\xAC.\x8Cm`[\x1B`d\x82\x01R`\x84\x01a\x08\xC6V[a\x1F\xB4\x89a/)V[a\x1F\xBE\x86\x86a>\"V[a\x1F\xC7\x88a&\xCBV[a\x1F\xD0\x87a'4V[`\x9C\x80T`\x01\x81\x81\x01\x83U`\0\x83\x81R\x7F\xAF\x85\xB9\x07\x1D\xFA\xFE\xAC\x14\t\xD3\xF1\xD1\x9B\xAF\xC9\xBC|7\x97L\xDE\x8D\xF0\xEEah\xF0\x08nS\x9C\x92\x83\x01\x80T`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90\x92U\x85T\x80\x85\x01\x87U\x85\x01\x80T\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x16\x90\x83\x16\x17\x90U\x85T\x93\x84\x01\x90\x95U\x91\x90\x92\x01\x80T\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x92\x16\x91\x90\x93\x16\x17\x90\x91U[\x84Q\x81\x10\x15a!!Wa!\x0F\x85\x82\x81Q\x81\x10a \xCEWa \xCEaWxV[` \x02` \x01\x01Q\x85\x83\x81Q\x81\x10a \xE8Wa \xE8aWxV[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a!\x02Wa!\x02aWxV[` \x02` \x01\x01Qa<\x0BV[\x80a!\x19\x81aW\xA4V[\x91PPa \xB0V[P\x80\x15a!hW`\0\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[a!{a%gV[`\x01`\x01`\xA0\x1B\x03\x81\x16a!\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x08\xC6V[a\rN\x81a/)V[`\0`\x02\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xEA\xB6mz`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\"=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\"`\x91\x90aX\x1FV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\"\x90W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aX=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a%4\x91\x90aZ\x80V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15a%`Wa%`\x85a%[\x83`\x01`\x01`\xC0\x1B\x03\x16a#\xAEV[a*\xB7V[PPPPPV[3a%pa\x18gV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x18\x10W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x08\xC6V[`\x01`\x01`\xA0\x1B\x03\x81\x16a&TW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FPausable._setPauserRegistry: new`D\x82\x01R\x7FPauserRegistry cannot be the zer`d\x82\x01Rho address`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`\0T`@\x80Q`\x01`\x01`\xA0\x1B\x03b\x01\0\0\x90\x93\x04\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7Fn\x9F\xCDS\x98\x96\xFC\xA6\x0E\x8B\x0F\x01\xDDX\x023\xE4\x8Ak\x0F}\xF0\x13\xB8\x9B\xA7\xF5e\x86\x9A\xCD\xB6\x91\x01`@Q\x80\x91\x03\x90\xA1`\0\x80T`\x01`\x01`\xA0\x1B\x03\x90\x92\x16b\x01\0\0\x02b\x01\0\0`\x01`\xB0\x1B\x03\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x9DT`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F1TW\xD8\xA8\xFE`\xF0J\xF1|\x16\xE2\xF5\xA5\xE1\xDBa+1d\x8EX\x03\x03`u\x9E\xF8\xF3R\x8C\x91\x01`@Q\x80\x91\x03\x90\xA1`\x9D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x9ET`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\x8F0\xAB\t\xF4:l\x15}\x7F\xCE~\n\x13\xC0\x03\x04,\x1C\x95\xE8\xA7.z\x14j!\xC0\xCA\xA2M\xC9\x91\x01`@Q\x80\x91\x03\x90\xA1`\x9E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\0a\x0F\x19a'\xAAa?=V[\x83`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x83\x90R`B\x81\x01\x82\x90R`\0\x90`b\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0\x80\x80a(\x1B`\0\x80Q` a_\x80\x839\x81Q\x91R\x86aZ\xBFV[\x90P[a('\x81a@dV[\x90\x93P\x91P`\0\x80Q` a_\x80\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a(aW`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` a_\x80\x839\x81Q\x91R`\x01\x82\x08\x90Pa(\x1EV[`\0\x80a(\x87\x84a@\xE6V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a)\x05W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`?`$\x82\x01R\x7FBitmapUtils.orderedBytesArrayToB`D\x82\x01R\x7Fitmap: bitmap exceeds max value\0`d\x82\x01R`\x84\x01a\x08\xC6V[\x93\x92PPPV[`\x96T`\xFF\x90\x81\x16\x90\x82\x16\x10a\rNW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FRegistryCoordinator.quorumExists`D\x82\x01R\x7F: quorum does not exist\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x08\xC6V[`\xFF\x82\x16`\0\x81\x81R`\x97` \x90\x81R`@\x91\x82\x90 \x84Q\x81T\x86\x84\x01\x80Q\x88\x87\x01\x80Qc\xFF\xFF\xFF\xFF\x90\x95\x16e\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x94\x16\x84\x17`\x01` \x1Ba\xFF\xFF\x93\x84\x16\x02\x17g\xFF\xFF\0\0\0\0\0\0\x19\x16`\x01`0\x1B\x95\x83\x16\x95\x90\x95\x02\x94\x90\x94\x17\x90\x94U\x85Q\x91\x82RQ\x83\x16\x93\x81\x01\x93\x90\x93RQ\x16\x91\x81\x01\x91\x90\x91R\x7F>\xE6\xFE\x8DTa\x02D\xC3\xE9\xD3\xC0f\xAEJ\xEE\x99x\x84\xAA(\xF1\x06\x16\xAE\x82\x19%@\x13\x18\xAC\x90``\x01`@Q\x80\x91\x03\x90\xA2PPV[`\x9ET`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18\x10W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FRegistryCoordinator.onlyEjector:`D\x82\x01R\x7F caller is not the ejector\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x08\xC6V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` R`@\x90 \x80T`\x01\x80\x83\x01T`\xFF\x16`\x02\x81\x11\x15a*\xEBWa*\xEBaM\xF5V[\x14a+jW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R\x7FRegistryCoordinator._deregisterO`D\x82\x01R\x7Fperator: operator is not registe`d\x82\x01Rb\x1C\x99Y`\xEA\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`\x96T`\0\x90a+~\x90\x85\x90`\xFF\x16a({V[\x90P`\0a+\x8B\x83a#EV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a,\tW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`;`$\x82\x01R\x7FRegistryCoordinator._deregisterO`D\x82\x01R\x7Fperator: bitmap cannot be 0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x08\xC6V[a, `\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x16\x14\x90V[a,\xB8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`Y`$\x82\x01R\x7FRegistryCoordinator._deregisterO`D\x82\x01R\x7Fperator: operator is not registe`d\x82\x01R\x7Fred for specified quorums\0\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`\x01`\x01`\xC0\x1B\x03\x82\x81\x16\x19\x82\x16\x16a,\xD1\x84\x82aBsV[`\x01`\x01`\xC0\x1B\x03\x81\x16a-\xA0W`\x01\x85\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`@QcQ\xB2zm`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x88\x81\x16`\x04\x83\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xA3d\xF4\xDA\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a-QW`\0\x80\xFD[PZ\xF1\x15\x80\x15a-eW=`\0\x80>=`\0\xFD[PP`@Q\x86\x92P`\x01`\x01`\xA0\x1B\x03\x8A\x16\x91P\x7F9o\xDC\xB1\x80\xCB\x0F\xEA&\x92\x81\x13\xFB\x0F\xD1\xC3T\x98c\xF9\xCDV>j\x18O\x1DW\x81\x16\xC8\xE4\x90`\0\x90\xA3[`@Qc\xF4\xE2O\xE5`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xF4\xE2O\xE5\x90a-\xEE\x90\x8A\x90\x8A\x90`\x04\x01aZ\xD3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a.\x08W`\0\x80\xFD[PZ\xF1\x15\x80\x15a.\x1CW=`\0\x80>=`\0\xFD[PP`@Qc\xBD)\xB8\xCD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x92Pc\xBD)\xB8\xCD\x91Pa.n\x90\x87\x90\x8A\x90`\x04\x01aZ\xF7V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a.\x88W`\0\x80\xFD[PZ\xF1\x15\x80\x15a.\x9CW=`\0\x80>=`\0\xFD[PP`@Qc\xBD)\xB8\xCD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x92Pc\xBD)\xB8\xCD\x91Pa.\xEE\x90\x87\x90\x8A\x90`\x04\x01aZ\xF7V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a/\x08W`\0\x80\xFD[PZ\xF1\x15\x80\x15a/\x1CW=`\0\x80>=`\0\xFD[PPPPPPPPPPPV[`d\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x04\x83\x01R`\0\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90c\x13T*N\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a/\xE6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a0\n\x91\x90a[\x10V[\x90P\x80a\x0F\x19W\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xBFy\xCEX\x84\x84a0K\x87a\x0F\xCDV[`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a0i\x93\x92\x91\x90a[)V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a0\x88W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a)\x05\x91\x90a[\x10V[` \x80\x82\x01Q`\0\x90\x81R`\x9A\x90\x91R`@\x90 T`\xFF\x16\x15a1RW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`R`$\x82\x01R\x7FRegistryCoordinator._verifyChurn`D\x82\x01R\x7FApproverSignature: churnApprover`d\x82\x01Rq\x08\x1C\xD8[\x1D\x08\x18[\x1C\x99XY\x1EH\x1D\\\xD9Y`r\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[B\x81`@\x01Q\x10\x15a1\xE7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`R`$\x82\x01R\x7FRegistryCoordinator._verifyChurn`D\x82\x01R\x7FApproverSignature: churnApprover`d\x82\x01Rq\x08\x1C\xDAY\xDB\x98]\x1D\\\x99H\x19^\x1C\x1A\\\x99Y`r\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[` \x80\x82\x01\x80Q`\0\x90\x81R`\x9A\x90\x92R`@\x91\x82\x90 \x80T`\xFF\x19\x16`\x01\x17\x90U`\x9DT\x90Q\x91\x83\x01Qa\t\xAD\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91a22\x91\x88\x91\x88\x91\x88\x91\x90a\x18\x12V[\x83QaD3V[a2]`@Q\x80``\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`\0a2\xA5\x86\x86\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`\x96T`\xFF\x16\x91Pa({\x90PV[\x90P`\0a2\xB2\x88a#EV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a30W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`9`$\x82\x01R\x7FRegistryCoordinator._registerOpe`D\x82\x01R\x7Frator: bitmap cannot be 0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x08\xC6V[\x80\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x15a3\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`h`$\x82\x01R\x7FRegistryCoordinator._registerOpe`D\x82\x01R\x7Frator: operator already register`d\x82\x01R\x7Fed for some quorums being regist`\x84\x82\x01Rg2\xB92\xB2\x1037\xB9`\xC1\x1B`\xA4\x82\x01R`\xC4\x01a\x08\xC6V[`\xA0T`\x01`\x01`\xA0\x1B\x03\x8A\x16`\0\x90\x81R`\x9F` R`@\x90 T`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x85\x16\x17\x91B\x91a4\x1E\x91\x90aYVV[\x10a4\x9FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`E`$\x82\x01R\x7FRegistryCoordinator._registerOpe`D\x82\x01R\x7Frator: operator cannot reregiste`d\x82\x01Rd\x1C\x88\x1EY]`\xDA\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[a4\xA9\x89\x82aBsV[\x88\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x87`@Qa4\xD9\x91\x90aX\x0CV[`@Q\x80\x91\x03\x90\xA2`\x01`\x01`\x01`\xA0\x1B\x03\x8B\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a5\x13Wa5\x13aM\xF5V[\x14a6,W`@\x80Q\x80\x82\x01\x82R\x8A\x81R`\x01` \x80\x83\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x8F\x16`\0\x90\x81R`\x99\x90\x92R\x93\x90 \x82Q\x81U\x92Q\x83\x82\x01\x80T\x93\x94\x93\x91\x92\x90\x91`\xFF\x19\x16\x90\x83`\x02\x81\x11\x15a5nWa5naM\xF5V[\x02\x17\x90UPP`@Qc\x99&\xEE}`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x91Pc\x99&\xEE}\x90a5\xC3\x90\x8D\x90\x89\x90`\x04\x01a[\xA8V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a5\xDDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a5\xF1W=`\0\x80>=`\0\xFD[PP`@Q\x8B\x92P`\x01`\x01`\xA0\x1B\x03\x8D\x16\x91P\x7F\xE8\xE6\x8C\xEF\x1C:v\x1E\xD7\xBE~\x84c\xA3u\xF2\x7F{\xC35\xE5\x18$\"<\xAC\xCEcn\xC5\xC3\xFE\x90`\0\x90\xA3[`@Qc\x1F\xD9<\xA9`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c?\xB2yR\x90a6|\x90\x8D\x90\x8C\x90\x8C\x90`\x04\x01a\\\x1CV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a6\x96W`\0\x80\xFD[PZ\xF1\x15\x80\x15a6\xAAW=`\0\x80>=`\0\xFD[PP`@Qc%PGw`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x92Pc%PGw\x91Pa7\0\x90\x8D\x90\x8D\x90\x8D\x90\x8D\x90`\x04\x01a\\AV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a7\x1FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra7G\x91\x90\x81\x01\x90a\\\xCDV[`@\x80\x87\x01\x91\x90\x91R` \x86\x01\x91\x90\x91RQb\xBF\xF0M`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90b\xBF\xF0M\x90a7\xA4\x90\x8C\x90\x8C\x90\x8C\x90`\x04\x01a]0V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a7\xC3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra7\xEB\x91\x90\x81\x01\x90a]JV[\x84RPPP\x96\x95PPPPPPV[` \x80\x83\x01Q`\x01`\x01`\xA0\x1B\x03\x80\x82\x16`\0\x81\x81R`\x99\x90\x94R`@\x90\x93 T\x91\x92\x90\x87\x16\x14\x15a8zW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R`\0\x80Q` a_`\x839\x81Q\x91R`D\x82\x01Rt97\x1D\x101\xB0\xB777\xBA\x101\xB4:\xB97\x109\xB2\xB63`Y\x1B`d\x82\x01R`\x84\x01a\x08\xC6V[\x87`\xFF\x16\x84`\0\x01Q`\xFF\x16\x14a8\xF7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a_`\x839\x81Q\x91R`D\x82\x01R\x7Frn: quorumNumber not the same as`d\x82\x01Rf\x08\x1C\xDAY\xDB\x99Y`\xCA\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`@QcT\x01\xED'`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`\xFF\x89\x16`$\x82\x01R`\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90cT\x01\xED'\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a9hW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a9\x8C\x91\x90a]\xE3V[\x90Pa9\x98\x81\x85aE\xEDV[`\x01`\x01``\x1B\x03\x16\x86`\x01`\x01``\x1B\x03\x16\x11a:+W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R`\0\x80Q` a_`\x839\x81Q\x91R`D\x82\x01R\x7Frn: incoming operator has insuff`d\x82\x01Ru4\xB1\xB4\xB2\xB7:\x109\xBA0\xB5\xB2\x9037\xB9\x101\xB4:\xB97`Q\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[a:5\x88\x85aF\x11V[`\x01`\x01``\x1B\x03\x16\x81`\x01`\x01``\x1B\x03\x16\x10a!hW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R`\0\x80Q` a_`\x839\x81Q\x91R`D\x82\x01R\x7Frn: cannot kick operator with mo`d\x82\x01R\x7Fre than kickBIPsOfTotalStake\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`\0\x81\x81R`\x98` R`@\x81 T\x81[\x81\x81\x10\x15a;aW`\x01a:\xF4\x82\x84aZ9V[a:\xFE\x91\x90aZ9V[\x92P\x84c\xFF\xFF\xFF\xFF\x16`\x98`\0\x86\x81R` \x01\x90\x81R` \x01`\0 \x84c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a;1Wa;1aWxV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a;OWPPa\x0F\x19V[\x80a;Y\x81aW\xA4V[\x91PPa:\xE0V[P`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapIndexAtBlockNumber: no bitmap`d\x82\x01R\x7F update found for operatorId at `\x84\x82\x01Rk167\xB1\xB5\x907:\xB6\xB12\xB9`\xA1\x1B`\xA4\x82\x01R`\xC4\x01a\x08\xC6V[`\x96T`\xFF\x16`\xC0\x81\x10a<\x7FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FRegistryCoordinator.createQuorum`D\x82\x01Rt\x0E\x88\x1BX^\x08\x1C][\xDC\x9D[\\\xC8\x1C\x99XX\xDA\x19Y`Z\x1B`d\x82\x01R`\x84\x01a\x08\xC6V[a<\x8A\x81`\x01a^\0V[`\x96\x80T`\xFF\x19\x16`\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x80a<\xA9\x81\x86a)\x8AV[`@Q`\x01b\x96\xB5\x89`\xE0\x1B\x03\x19\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xFFiJw\x90a<\xFC\x90\x84\x90\x88\x90\x88\x90`\x04\x01a^%V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a=\x16W`\0\x80\xFD[PZ\xF1\x15\x80\x15a=*W=`\0\x80>=`\0\xFD[PP`@Qc\x13l\xA0\xF9`\xE1\x1B\x81R`\xFF\x84\x16`\x04\x82\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x92Pc&\xD9A\xF2\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a=\x92W`\0\x80\xFD[PZ\xF1\x15\x80\x15a=\xA6W=`\0\x80>=`\0\xFD[PP`@Qc\x13l\xA0\xF9`\xE1\x1B\x81R`\xFF\x84\x16`\x04\x82\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x92Pc&\xD9A\xF2\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a>\x0EW`\0\x80\xFD[PZ\xF1\x15\x80\x15a!hW=`\0\x80>=`\0\xFD[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a>IWP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a>\xCBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FPausable._initializePauser: _ini`D\x82\x01R\x7FtializePauser() can only be call`d\x82\x01Rfed once`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`\x01\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2a?\x0E\x82a%\xC6V[PPV[`\0\x80[\x82\x15a\x0F\x19Wa?'`\x01\x84aZ9V[\x90\x92\x16\x91\x80a?5\x81a^\x9EV[\x91PPa?\x16V[`\x000`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80\x15a?\x96WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0F\x14[\x15a?\xC0WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[P`@\x80Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x80\x83\x01\x91\x90\x91R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x84\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0``\x83\x01RF`\x80\x83\x01R0`\xA0\x80\x84\x01\x91\x90\x91R\x83Q\x80\x84\x03\x90\x91\x01\x81R`\xC0\x90\x92\x01\x90\x92R\x80Q\x91\x01 \x90V[`\0\x80\x80`\0\x80Q` a_\x80\x839\x81Q\x91R`\x03`\0\x80Q` a_\x80\x839\x81Q\x91R\x86`\0\x80Q` a_\x80\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0a@\xDA\x82\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R`\0\x80Q` a_\x80\x839\x81Q\x91RaF+V[\x91\x95\x91\x94P\x90\x92PPPV[`\0a\x01\0\x82Q\x11\x15aAoW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FBitmapUtils.orderedBytesArrayToB\x90\x82\x01R\x7Fitmap: orderedBytesArray is too `d\x82\x01Rclong`\xE0\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[\x81QaA}WP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10aA\x93WaA\x93aWxV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15aBjW\x84\x81\x81Q\x81\x10aA\xC1WaA\xC1aWxV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11aBVW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FBitmapUtils.orderedBytesArrayToB`D\x82\x01R\x7Fitmap: orderedBytesArray is not `d\x82\x01Rf\x1B\xDC\x99\x19\\\x99Y`\xCA\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[\x91\x81\x17\x91aBc\x81aW\xA4V[\x90PaA\xA6V[P\x90\x93\x92PPPV[`\0\x82\x81R`\x98` R`@\x90 T\x80aC\x18W`\0\x83\x81R`\x98` \x90\x81R`@\x80\x83 \x81Q``\x81\x01\x83Rc\xFF\xFF\xFF\xFFC\x81\x16\x82R\x81\x85\x01\x86\x81R`\x01`\x01`\xC0\x1B\x03\x80\x8A\x16\x95\x84\x01\x95\x86R\x84T`\x01\x81\x01\x86U\x94\x88R\x95\x90\x96 \x91Q\x91\x90\x92\x01\x80T\x95Q\x93Q\x90\x94\x16`\x01`@\x1B\x02`\x01`\x01`@\x1B\x03\x93\x83\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x96\x16\x91\x90\x92\x16\x17\x93\x90\x93\x17\x16\x91\x90\x91\x17\x90UPPPV[`\0\x83\x81R`\x98` R`@\x81 aC1`\x01\x84aZ9V[\x81T\x81\x10aCAWaCAaWxV[`\0\x91\x82R` \x90\x91 \x01\x80T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15aC\x85W\x80T`\x01`\x01`@\x1B\x03\x16`\x01`@\x1B`\x01`\x01`\xC0\x1B\x03\x85\x16\x02\x17\x81Ua\t\xADV[\x80Tc\xFF\xFF\xFF\xFFC\x81\x16`\x01` \x1B\x81\x81\x02g\xFF\xFF\xFF\xFF\0\0\0\0\x19\x90\x94\x16\x93\x90\x93\x17\x84U`\0\x87\x81R`\x98` \x90\x81R`@\x80\x83 \x81Q``\x81\x01\x83R\x94\x85R\x84\x83\x01\x84\x81R`\x01`\x01`\xC0\x1B\x03\x80\x8C\x16\x93\x87\x01\x93\x84R\x82T`\x01\x81\x01\x84U\x92\x86R\x93\x90\x94 \x94Q\x94\x01\x80T\x93Q\x91Q\x90\x92\x16`\x01`@\x1B\x02`\x01`\x01`@\x1B\x03\x91\x86\x16\x90\x96\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x93\x16\x93\x90\x94\x16\x92\x90\x92\x17\x17\x91\x90\x91\x16\x91\x90\x91\x17\x90UPPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16;\x15aEMW`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aDs\x90\x86\x90\x86\x90`\x04\x01aZ\xF7V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aD\x90W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aD\xB4\x91\x90a^\xC0V[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x16\xB9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`S`$\x82\x01R\x7FEIP1271SignatureUtils.checkSigna`D\x82\x01R\x7Fture_EIP1271: ERC1271 signature `d\x82\x01Rr\x1D\x99\\\x9AY\x9AX\xD8]\x1A[\xDB\x88\x19\x98Z[\x19Y`j\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[\x82`\x01`\x01`\xA0\x1B\x03\x16aEa\x83\x83aF\xDAV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x16\xB9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FEIP1271SignatureUtils.checkSigna`D\x82\x01R\x7Fture_EIP1271: signature not from`d\x82\x01Rf\x109\xB4\xB3\xB72\xB9`\xC9\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[` \x81\x01Q`\0\x90a'\x10\x90aF\x07\x90a\xFF\xFF\x16\x85a^\xEAV[a)\x05\x91\x90a_\x19V[`@\x81\x01Q`\0\x90a'\x10\x90aF\x07\x90a\xFF\xFF\x16\x85a^\xEAV[`\0\x80aF6aJGV[aF>aJeV[` \x80\x82R\x81\x81\x01\x81\x90R`@\x82\x01\x81\x90R``\x82\x01\x88\x90R`\x80\x82\x01\x87\x90R`\xA0\x82\x01\x86\x90R\x82`\xC0\x83`\x05a\x07\xD0Z\x03\xFA\x92P\x82\x80\x15aF\x7FWaF\x81V[\xFE[P\x82aF\xCFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7FBN254.expMod: call failure\0\0\0\0\0\0`D\x82\x01R`d\x01a\x08\xC6V[PQ\x95\x94PPPPPV[`\0\x80`\0aF\xE9\x85\x85aF\xF6V[\x91P\x91Pa\x1D\xED\x81aGfV[`\0\x80\x82Q`A\x14\x15aG-W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaG!\x87\x82\x85\x85aI!V[\x94P\x94PPPPaG_V[\x82Q`@\x14\x15aGWW` \x83\x01Q`@\x84\x01QaGL\x86\x83\x83aJ\x0EV[\x93P\x93PPPaG_V[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aGzWaGzaM\xF5V[\x14\x15aG\x83WPV[`\x01\x81`\x04\x81\x11\x15aG\x97WaG\x97aM\xF5V[\x14\x15aG\xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FECDSA: invalid signature\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x08\xC6V[`\x02\x81`\x04\x81\x11\x15aG\xF9WaG\xF9aM\xF5V[\x14\x15aHGW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x08\xC6V[`\x03\x81`\x04\x81\x11\x15aH[WaH[aM\xF5V[\x14\x15aH\xB4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 's' val`D\x82\x01Raue`\xF0\x1B`d\x82\x01R`\x84\x01a\x08\xC6V[`\x04\x81`\x04\x81\x11\x15aH\xC8WaH\xC8aM\xF5V[\x14\x15a\rNW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 'v' val`D\x82\x01Raue`\xF0\x1B`d\x82\x01R`\x84\x01a\x08\xC6V[`\0\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x83\x11\x15aIXWP`\0\x90P`\x03aJ\x05V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aIpWP\x84`\xFF\x16`\x1C\x14\x15[\x15aI\x81WP`\0\x90P`\x04aJ\x05V[`@\x80Q`\0\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15aI\xD5W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aI\xFEW`\0`\x01\x92P\x92PPaJ\x05V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aJ+`\xFF\x86\x90\x1C`\x1BaYVV[\x90PaJ9\x87\x82\x88\x85aI!V[\x93P\x93PPP\x93P\x93\x91PPV[`@Q\x80` \x01`@R\x80`\x01\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\xC0\x01`@R\x80`\x06\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`\0\x80\x83`\x1F\x84\x01\x12aJ\x95W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aJ\xACW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aG_W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aJ\xDAW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aJ\xF0W`\0\x80\xFD[aJ\xFC\x85\x82\x86\x01aJ\x83V[\x90\x96\x90\x95P\x93PPPPV[`\0` \x82\x84\x03\x12\x15aK\x1AW`\0\x80\xFD[P5\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\rNW`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15aKHW`\0\x80\xFD[\x835\x92P` \x84\x015aKZ\x81aK!V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aK\xA3WaK\xA3aKkV[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aK\xA3WaK\xA3aKkV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aK\xF3WaK\xF3aKkV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x83\x11\x15aL\x14WaL\x14aKkV[aL'`\x1F\x84\x01`\x1F\x19\x16` \x01aK\xCBV[\x90P\x82\x81R\x83\x83\x83\x01\x11\x15aL;W`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15aLdW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aLzW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aL\x8BW`\0\x80\xFD[aL\x9A\x84\x825` \x84\x01aK\xFBV[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\rNW`\0\x80\xFD[\x805aL\xC2\x81aL\xA2V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15aL\xD9W`\0\x80\xFD[\x815a)\x05\x81aL\xA2V[`\0\x80`@\x83\x85\x03\x12\x15aL\xF7W`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[\x805`\xFF\x81\x16\x81\x14aL\xC2W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aM)W`\0\x80\xFD[a)\x05\x82aM\x06V[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x0F\x19V[`\0\x80\x83`\x1F\x84\x01\x12aM[W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aMrW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aG_W`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aM\xA0W`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aM\xB7W`\0\x80\xFD[aM\xC3\x88\x83\x89\x01aJ\x83V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aM\xDCW`\0\x80\xFD[PaM\xE9\x87\x82\x88\x01aMIV[\x95\x98\x94\x97P\x95PPPPV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`\x03\x81\x10aN)WcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[\x81Q\x81R` \x80\x83\x01Q`@\x83\x01\x91aNH\x90\x84\x01\x82aN\x0BV[P\x92\x91PPV[\x805a\xFF\xFF\x81\x16\x81\x14aL\xC2W`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aNsW`\0\x80\xFD[aN{aK\x81V[\x90P\x815aN\x88\x81aK!V[\x81RaN\x96` \x83\x01aNOV[` \x82\x01RaN\xA7`@\x83\x01aNOV[`@\x82\x01R\x92\x91PPV[`\0\x80`\x80\x83\x85\x03\x12\x15aN\xC5W`\0\x80\xFD[aN\xCE\x83aM\x06V[\x91PaN\xDD\x84` \x85\x01aNaV[\x90P\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15aN\xFBW`\0\x80\xFD[\x835aO\x06\x81aL\xA2V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aO!W`\0\x80\xFD[aO-\x86\x82\x87\x01aMIV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aOSWaOSaKkV[P`\x05\x1B` \x01\x90V[`\0`@\x82\x84\x03\x12\x15aOoW`\0\x80\xFD[aOwaK\xA9V[\x90PaO\x82\x82aM\x06V[\x81R` \x82\x015aO\x92\x81aL\xA2V[` \x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aO\xB5W`\0\x80\xFD[\x855aO\xC0\x81aL\xA2V[\x94P` \x86\x81\x015\x94P`@\x80\x88\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aO\xE4W`\0\x80\xFD[\x88\x01`\x1F\x81\x01\x8A\x13aO\xF5W`\0\x80\xFD[\x805aP\x08aP\x03\x82aO:V[aK\xCBV[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x84\x01\x90\x84\x81\x01\x90\x8C\x83\x11\x15aP'W`\0\x80\xFD[\x92\x85\x01\x92[\x82\x84\x10\x15aPMWaP>\x8D\x85aO]V[\x82R\x92\x84\x01\x92\x90\x85\x01\x90aP,V[\x99\x9C\x98\x9BP\x98\x99``\x81\x015\x99P`\x80\x015\x97\x96PPPPPPPV[`\0a\x01\0\x82\x84\x03\x12\x15aP}W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aP\x95W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aP\xACW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x06\x1B\x85\x01\x01\x11\x15aG_W`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aP\xD9W`\0\x80\xFD[aP\xE1aK\x81V[\x90P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aP\xF9W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aQ\nW`\0\x80\xFD[aQ\x19\x84\x825` \x84\x01aK\xFBV[\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01\xA0\x8A\x8C\x03\x12\x15aQUW`\0\x80\xFD[\x895`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aQlW`\0\x80\xFD[aQx\x8D\x83\x8E\x01aMIV[\x90\x9BP\x99P` \x8C\x015\x91P\x80\x82\x11\x15aQ\x91W`\0\x80\xFD[aQ\x9D\x8D\x83\x8E\x01aMIV[\x90\x99P\x97P\x87\x91PaQ\xB2\x8D`@\x8E\x01aPjV[\x96Pa\x01@\x8C\x015\x91P\x80\x82\x11\x15aQ\xC9W`\0\x80\xFD[aQ\xD5\x8D\x83\x8E\x01aP\x83V[\x90\x96P\x94Pa\x01`\x8C\x015\x91P\x80\x82\x11\x15aQ\xEFW`\0\x80\xFD[aQ\xFB\x8D\x83\x8E\x01aP\xC7V[\x93Pa\x01\x80\x8C\x015\x91P\x80\x82\x11\x15aR\x12W`\0\x80\xFD[PaR\x1F\x8C\x82\x8D\x01aP\xC7V[\x91PP\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80a\x01`\x87\x89\x03\x12\x15aRIW`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aR`W`\0\x80\xFD[aRl\x8A\x83\x8B\x01aMIV[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15aR\x85W`\0\x80\xFD[aR\x91\x8A\x83\x8B\x01aMIV[\x90\x96P\x94P\x84\x91PaR\xA6\x8A`@\x8B\x01aPjV[\x93Pa\x01@\x89\x015\x91P\x80\x82\x11\x15aR\xBDW`\0\x80\xFD[PaR\xCA\x89\x82\x8A\x01aP\xC7V[\x91PP\x92\x95P\x92\x95P\x92\x95V[`\0\x80`@\x83\x85\x03\x12\x15aR\xEAW`\0\x80\xFD[\x825aR\xF5\x81aK!V[\x91P` \x83\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aS\x11W`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13aS\"W`\0\x80\xFD[\x805aS0aP\x03\x82aO:V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15aSOW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15aSmW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90aSTV[\x80\x95PPPPPP\x92P\x92\x90PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15aS\xBAW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aS\x98V[P\x90\x96\x95PPPPPPV[`\0\x80` \x83\x85\x03\x12\x15aS\xD9W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aS\xEFW`\0\x80\xFD[aJ\xFC\x85\x82\x86\x01aMIV[`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\rNW`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12aT!W`\0\x80\xFD[\x815` aT1aP\x03\x83aO:V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aTPW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aT\xA1W`@\x81\x89\x03\x12\x15aTmW`\0\x80\x81\xFD[aTuaK\xA9V[\x815aT\x80\x81aL\xA2V[\x81R\x81\x85\x015aT\x8F\x81aS\xFBV[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01aTTV[P\x96\x95PPPPPPV[`\0\x80`\0`\xA0\x84\x86\x03\x12\x15aT\xC1W`\0\x80\xFD[aT\xCB\x85\x85aNaV[\x92P``\x84\x015aT\xDB\x81aS\xFBV[\x91P`\x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aT\xF6W`\0\x80\xFD[aU\x02\x86\x82\x87\x01aT\x10V[\x91PP\x92P\x92P\x92V[`\0\x82`\x1F\x83\x01\x12aU\x1DW`\0\x80\xFD[\x815` aU-aP\x03\x83aO:V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15aULW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15aUoWaUb\x89\x82aNaV[\x84R\x92\x84\x01\x92\x81\x01aUPV[P\x90\x97\x96PPPPPPPV[`\0\x82`\x1F\x83\x01\x12aU\x8DW`\0\x80\xFD[\x815` aU\x9DaP\x03\x83aO:V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aU\xBCW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aT\xA1W\x805aU\xD3\x81aS\xFBV[\x83R\x91\x83\x01\x91\x83\x01aU\xC0V[`\0\x82`\x1F\x83\x01\x12aU\xF1W`\0\x80\xFD[\x815` aV\x01aP\x03\x83aO:V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aV W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aT\xA1W\x805`\x01`\x01`@\x1B\x03\x81\x11\x15aVCW`\0\x80\x81\xFD[aVQ\x89\x86\x83\x8B\x01\x01aT\x10V[\x84RP\x91\x83\x01\x91\x83\x01aV$V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15aV|W`\0\x80\xFD[aV\x85\x89aL\xB7V[\x97PaV\x93` \x8A\x01aL\xB7V[\x96PaV\xA1`@\x8A\x01aL\xB7V[\x95PaV\xAF``\x8A\x01aL\xB7V[\x94P`\x80\x89\x015\x93P`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aV\xD2W`\0\x80\xFD[aV\xDE\x8C\x83\x8D\x01aU\x0CV[\x94P`\xC0\x8B\x015\x91P\x80\x82\x11\x15aV\xF4W`\0\x80\xFD[aW\0\x8C\x83\x8D\x01aU|V[\x93P`\xE0\x8B\x015\x91P\x80\x82\x11\x15aW\x16W`\0\x80\xFD[PaW#\x8B\x82\x8C\x01aU\xE0V[\x91PP\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[` \x81\x01a\x0F\x19\x82\x84aN\x0BV[` \x80\x82R`\x19\x90\x82\x01R\x7FPausable: index is paused\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15aW\xB8WaW\xB8aW\x8EV[P`\x01\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15aW\xE5W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01aW\xC9V[\x81\x81\x11\x15aW\xF7W`\0` \x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a)\x05` \x83\x01\x84aW\xBFV[`\0` \x82\x84\x03\x12\x15aX1W`\0\x80\xFD[\x81Qa)\x05\x81aL\xA2V[` \x80\x82R`*\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Ri9\x90:\xB780\xBA\xB9\xB2\xB9`\xB1\x1B``\x82\x01R`\x80\x01\x90V[`\0` \x82\x84\x03\x12\x15aX\x98W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a)\x05W`\0\x80\xFD[` \x80\x82R`(\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Rg9\x9080\xBA\xB9\xB2\xB9`\xC1\x1B``\x82\x01R`\x80\x01\x90V[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aY\x07W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aY!W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aG_W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aYKW`\0\x80\xFD[\x81Qa)\x05\x81aK!V[`\0\x82\x19\x82\x11\x15aYiWaYiaW\x8EV[P\x01\x90V[`\0\x80\x85\x85\x11\x15aY~W`\0\x80\xFD[\x83\x86\x11\x15aY\x8BW`\0\x80\xFD[PP\x82\x01\x93\x91\x90\x92\x03\x91PV[`\0`\xC0\x82\x01\x88\x83R` `\x01\x80`\xA0\x1B\x03\x80\x8A\x16\x82\x86\x01R`@\x89\x81\x87\x01R`\xC0``\x87\x01R\x83\x89Q\x80\x86R`\xE0\x88\x01\x91P\x84\x8B\x01\x95P`\0[\x81\x81\x10\x15aY\xFDW\x86Q\x80Q`\xFF\x16\x84R\x86\x01Q\x85\x16\x86\x84\x01R\x95\x85\x01\x95\x91\x83\x01\x91`\x01\x01aY\xD3V[PP`\x80\x87\x01\x98\x90\x98RPPPP`\xA0\x90\x91\x01\x91\x90\x91RP\x94\x93PPPPV[`\0`@\x82\x84\x03\x12\x15aZ/W`\0\x80\xFD[a)\x05\x83\x83aO]V[`\0\x82\x82\x10\x15aZKWaZKaW\x8EV[P\x03\x90V[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\0aZw``\x83\x01\x84aW\xBFV[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15aZ\x92W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a)\x05W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aZ\xCEWaZ\xCEaZ\xA9V[P\x06\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\0\x90aL\x9A\x90\x83\x01\x84aW\xBFV[\x82\x81R`@` \x82\x01R`\0aL\x9A`@\x83\x01\x84aW\xBFV[`\0` \x82\x84\x03\x12\x15a[\"W`\0\x80\xFD[PQ\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81Ra\x01`\x81\x01a[Q` \x83\x01\x85\x805\x82R` \x90\x81\x015\x91\x01RV[a[k``\x83\x01`@\x86\x01\x805\x82R` \x90\x81\x015\x91\x01RV[`@`\x80\x85\x01`\xA0\x84\x017`\xE0\x82\x01`\0\x81R`@`\xC0\x86\x01\x827P`\0a\x01 \x83\x01\x90\x81R\x83Q\x90R` \x90\x92\x01Qa\x01@\x90\x91\x01R\x92\x91PPV[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01R`\0\x82Q```@\x84\x01Ra[\xD2`\xA0\x84\x01\x82aW\xBFV[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[\x81\x83R\x81\x81` \x85\x017P`\0\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\0\x90aZw\x90\x83\x01\x84\x86a[\xF3V[`\x01\x80`\xA0\x1B\x03\x85\x16\x81R\x83` \x82\x01R```@\x82\x01R`\0a\x18R``\x83\x01\x84\x86a[\xF3V[`\0\x82`\x1F\x83\x01\x12a\\zW`\0\x80\xFD[\x81Q` a\\\x8AaP\x03\x83aO:V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\\\xA9W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aT\xA1W\x80Qa\\\xC0\x81aS\xFBV[\x83R\x91\x83\x01\x91\x83\x01a\\\xADV[`\0\x80`@\x83\x85\x03\x12\x15a\\\xE0W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\\\xF7W`\0\x80\xFD[a]\x03\x86\x83\x87\x01a\\iV[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15a]\x19W`\0\x80\xFD[Pa]&\x85\x82\x86\x01a\\iV[\x91PP\x92P\x92\x90PV[\x83\x81R`@` \x82\x01R`\0aZw`@\x83\x01\x84\x86a[\xF3V[`\0` \x80\x83\x85\x03\x12\x15a]]W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a]sW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a]\x84W`\0\x80\xFD[\x80Qa]\x92aP\x03\x82aO:V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a]\xB1W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a]\xD8W\x83Qa]\xC9\x81aK!V[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a]\xB6V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a]\xF5W`\0\x80\xFD[\x81Qa)\x05\x81aS\xFBV[`\0`\xFF\x82\x16`\xFF\x84\x16\x80`\xFF\x03\x82\x11\x15a^\x1DWa^\x1DaW\x8EV[\x01\x93\x92PPPV[`\0``\x82\x01`\xFF\x86\x16\x83R` `\x01`\x01``\x1B\x03\x80\x87\x16\x82\x86\x01R`@``\x81\x87\x01R\x83\x87Q\x80\x86R`\x80\x88\x01\x91P\x84\x89\x01\x95P`\0[\x81\x81\x10\x15a^\x8EW\x86Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x86\x01Q\x85\x16\x86\x84\x01R\x95\x85\x01\x95\x91\x83\x01\x91`\x01\x01a^^V[P\x90\x9A\x99PPPPPPPPPPV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a^\xB6Wa^\xB6aW\x8EV[`\x01\x01\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a^\xD2W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a)\x05W`\0\x80\xFD[`\0`\x01`\x01``\x1B\x03\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15a_\x10Wa_\x10aW\x8EV[\x02\x94\x93PPPPV[`\0`\x01`\x01``\x1B\x03\x80\x84\x16\x80a_3Wa_3aZ\xA9V[\x92\x16\x91\x90\x91\x04\x92\x91PPV\xFERegistryCoordinator.updateOperatRegistryCoordinator._validateChu0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\xA2dipfsX\"\x12 t\x91\xACv\xA1\xCD\x7F\xCE\x1D-\x0C\xD9\x06uM^\xFD\xF63Z\r\xCB\xFE\xDA&\x92BMw{JJdsolcC\0\x08\x0C\x003.addresses.baseStrategyImplementation\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\xA2dipfsX\"\x12 \xA5}9\xBA#\x13v|\xD3\x9B9\xF0\x99\xBB#\xDB5G\xF0\x91C\xB0W\xE8\xB9xi]\x1B@\x9BMdsolcC\0\x08\x0C\x003", + ); + /**Function with signature `IS_SCRIPT()` and selector `0xf8ccbf47`. + ```solidity + function IS_SCRIPT() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_SCRIPTCall {} + ///Container type for the return parameters of the [`IS_SCRIPT()`](IS_SCRIPTCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_SCRIPTReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_SCRIPTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_SCRIPTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_SCRIPT()"; + const SELECTOR: [u8; 4] = [248u8, 204u8, 191u8, 71u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `blsApkRegistry()` and selector `0x5df45946`. + ```solidity + function blsApkRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct blsApkRegistryCall {} + ///Container type for the return parameters of the [`blsApkRegistry()`](blsApkRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct blsApkRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: blsApkRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for blsApkRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: blsApkRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for blsApkRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for blsApkRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = blsApkRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "blsApkRegistry()"; + const SELECTOR: [u8; 4] = [93u8, 244u8, 89u8, 70u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `blsApkRegistryImplementation()` and selector `0x9e3ba437`. + ```solidity + function blsApkRegistryImplementation() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct blsApkRegistryImplementationCall {} + ///Container type for the return parameters of the [`blsApkRegistryImplementation()`](blsApkRegistryImplementationCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct blsApkRegistryImplementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: blsApkRegistryImplementationCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for blsApkRegistryImplementationCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: blsApkRegistryImplementationReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for blsApkRegistryImplementationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for blsApkRegistryImplementationCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = blsApkRegistryImplementationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "blsApkRegistryImplementation()"; + const SELECTOR: [u8; 4] = [158u8, 59u8, 164u8, 55u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `emptyContract()` and selector `0xe3a8b345`. + ```solidity + function emptyContract() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct emptyContractCall {} + ///Container type for the return parameters of the [`emptyContract()`](emptyContractCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct emptyContractReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: emptyContractCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for emptyContractCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: emptyContractReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for emptyContractReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for emptyContractCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = emptyContractReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "emptyContract()"; + const SELECTOR: [u8; 4] = [227u8, 168u8, 179u8, 69u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `indexRegistry()` and selector `0x9e9923c2`. + ```solidity + function indexRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct indexRegistryCall {} + ///Container type for the return parameters of the [`indexRegistry()`](indexRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct indexRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: indexRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for indexRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: indexRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for indexRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for indexRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = indexRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "indexRegistry()"; + const SELECTOR: [u8; 4] = [158u8, 153u8, 35u8, 194u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `indexRegistryImplementation()` and selector `0x8b2c69eb`. + ```solidity + function indexRegistryImplementation() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct indexRegistryImplementationCall {} + ///Container type for the return parameters of the [`indexRegistryImplementation()`](indexRegistryImplementationCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct indexRegistryImplementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: indexRegistryImplementationCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for indexRegistryImplementationCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: indexRegistryImplementationReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for indexRegistryImplementationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for indexRegistryImplementationCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = indexRegistryImplementationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "indexRegistryImplementation()"; + const SELECTOR: [u8; 4] = [139u8, 44u8, 105u8, 235u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `mockAvsPauserReg()` and selector `0x80e064d4`. + ```solidity + function mockAvsPauserReg() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct mockAvsPauserRegCall {} + ///Container type for the return parameters of the [`mockAvsPauserReg()`](mockAvsPauserRegCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct mockAvsPauserRegReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: mockAvsPauserRegCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mockAvsPauserRegCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: mockAvsPauserRegReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mockAvsPauserRegReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for mockAvsPauserRegCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = mockAvsPauserRegReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "mockAvsPauserReg()"; + const SELECTOR: [u8; 4] = [128u8, 224u8, 100u8, 212u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `mockAvsProxyAdmin()` and selector `0x0331ed2a`. + ```solidity + function mockAvsProxyAdmin() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct mockAvsProxyAdminCall {} + ///Container type for the return parameters of the [`mockAvsProxyAdmin()`](mockAvsProxyAdminCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct mockAvsProxyAdminReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: mockAvsProxyAdminCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mockAvsProxyAdminCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: mockAvsProxyAdminReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mockAvsProxyAdminReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for mockAvsProxyAdminCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = mockAvsProxyAdminReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "mockAvsProxyAdmin()"; + const SELECTOR: [u8; 4] = [3u8, 49u8, 237u8, 42u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `mockAvsServiceManager()` and selector `0x8c4f9b50`. + ```solidity + function mockAvsServiceManager() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct mockAvsServiceManagerCall {} + ///Container type for the return parameters of the [`mockAvsServiceManager()`](mockAvsServiceManagerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct mockAvsServiceManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: mockAvsServiceManagerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mockAvsServiceManagerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: mockAvsServiceManagerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mockAvsServiceManagerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for mockAvsServiceManagerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = mockAvsServiceManagerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "mockAvsServiceManager()"; + const SELECTOR: [u8; 4] = [140u8, 79u8, 155u8, 80u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `mockAvsServiceManagerImplementation()` and selector `0x34667564`. + ```solidity + function mockAvsServiceManagerImplementation() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct mockAvsServiceManagerImplementationCall {} + ///Container type for the return parameters of the [`mockAvsServiceManagerImplementation()`](mockAvsServiceManagerImplementationCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct mockAvsServiceManagerImplementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: mockAvsServiceManagerImplementationCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mockAvsServiceManagerImplementationCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: mockAvsServiceManagerImplementationReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mockAvsServiceManagerImplementationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for mockAvsServiceManagerImplementationCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = mockAvsServiceManagerImplementationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "mockAvsServiceManagerImplementation()"; + const SELECTOR: [u8; 4] = [52u8, 102u8, 117u8, 100u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `operatorStateRetriever()` and selector `0x4ca22c3f`. + ```solidity + function operatorStateRetriever() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorStateRetrieverCall {} + ///Container type for the return parameters of the [`operatorStateRetriever()`](operatorStateRetrieverCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorStateRetrieverReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorStateRetrieverCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorStateRetrieverCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorStateRetrieverReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorStateRetrieverReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for operatorStateRetrieverCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = operatorStateRetrieverReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "operatorStateRetriever()"; + const SELECTOR: [u8; 4] = [76u8, 162u8, 44u8, 63u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registryCoordinator()` and selector `0x6d14a987`. + ```solidity + function registryCoordinator() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registryCoordinatorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registryCoordinatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registryCoordinator()"; + const SELECTOR: [u8; 4] = [109u8, 20u8, 169u8, 135u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registryCoordinatorImplementation()` and selector `0x39a5fcfa`. + ```solidity + function registryCoordinatorImplementation() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorImplementationCall {} + ///Container type for the return parameters of the [`registryCoordinatorImplementation()`](registryCoordinatorImplementationCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorImplementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorImplementationCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorImplementationCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorImplementationReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorImplementationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registryCoordinatorImplementationCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registryCoordinatorImplementationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registryCoordinatorImplementation()"; + const SELECTOR: [u8; 4] = [57u8, 165u8, 252u8, 250u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `run()` and selector `0xc0406226`. + ```solidity + function run() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct runCall {} + ///Container type for the return parameters of the [`run()`](runCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct runReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: runCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for runCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: runReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for runReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for runCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = runReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "run()"; + const SELECTOR: [u8; 4] = [192u8, 64u8, 98u8, 38u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `stakeRegistry()` and selector `0x68304835`. + ```solidity + function stakeRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakeRegistryCall {} + ///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakeRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakeRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakeRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakeRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakeRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for stakeRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = stakeRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "stakeRegistry()"; + const SELECTOR: [u8; 4] = [104u8, 48u8, 72u8, 53u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `stakeRegistryImplementation()` and selector `0xe18272c2`. + ```solidity + function stakeRegistryImplementation() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakeRegistryImplementationCall {} + ///Container type for the return parameters of the [`stakeRegistryImplementation()`](stakeRegistryImplementationCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakeRegistryImplementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakeRegistryImplementationCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakeRegistryImplementationCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakeRegistryImplementationReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakeRegistryImplementationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for stakeRegistryImplementationCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = stakeRegistryImplementationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "stakeRegistryImplementation()"; + const SELECTOR: [u8; 4] = [225u8, 130u8, 114u8, 194u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`DeployMockAvs`](self) function calls. + pub enum DeployMockAvsCalls { + IS_SCRIPT(IS_SCRIPTCall), + blsApkRegistry(blsApkRegistryCall), + blsApkRegistryImplementation(blsApkRegistryImplementationCall), + emptyContract(emptyContractCall), + indexRegistry(indexRegistryCall), + indexRegistryImplementation(indexRegistryImplementationCall), + mockAvsPauserReg(mockAvsPauserRegCall), + mockAvsProxyAdmin(mockAvsProxyAdminCall), + mockAvsServiceManager(mockAvsServiceManagerCall), + mockAvsServiceManagerImplementation(mockAvsServiceManagerImplementationCall), + operatorStateRetriever(operatorStateRetrieverCall), + registryCoordinator(registryCoordinatorCall), + registryCoordinatorImplementation(registryCoordinatorImplementationCall), + run(runCall), + stakeRegistry(stakeRegistryCall), + stakeRegistryImplementation(stakeRegistryImplementationCall), + } + #[automatically_derived] + impl DeployMockAvsCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [3u8, 49u8, 237u8, 42u8], + [52u8, 102u8, 117u8, 100u8], + [57u8, 165u8, 252u8, 250u8], + [76u8, 162u8, 44u8, 63u8], + [93u8, 244u8, 89u8, 70u8], + [104u8, 48u8, 72u8, 53u8], + [109u8, 20u8, 169u8, 135u8], + [128u8, 224u8, 100u8, 212u8], + [139u8, 44u8, 105u8, 235u8], + [140u8, 79u8, 155u8, 80u8], + [158u8, 59u8, 164u8, 55u8], + [158u8, 153u8, 35u8, 194u8], + [192u8, 64u8, 98u8, 38u8], + [225u8, 130u8, 114u8, 194u8], + [227u8, 168u8, 179u8, 69u8], + [248u8, 204u8, 191u8, 71u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for DeployMockAvsCalls { + const NAME: &'static str = "DeployMockAvsCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 16usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_SCRIPT(_) => ::SELECTOR, + Self::blsApkRegistry(_) => { + ::SELECTOR + } + Self::blsApkRegistryImplementation(_) => { + ::SELECTOR + } + Self::emptyContract(_) => ::SELECTOR, + Self::indexRegistry(_) => ::SELECTOR, + Self::indexRegistryImplementation(_) => { + ::SELECTOR + } + Self::mockAvsPauserReg(_) => { + ::SELECTOR + } + Self::mockAvsProxyAdmin(_) => { + ::SELECTOR + } + Self::mockAvsServiceManager(_) => { + ::SELECTOR + } + Self::mockAvsServiceManagerImplementation(_) => { + ::SELECTOR + } + Self::operatorStateRetriever(_) => { + ::SELECTOR + } + Self::registryCoordinator(_) => { + ::SELECTOR + } + Self::registryCoordinatorImplementation(_) => { + ::SELECTOR + } + Self::run(_) => ::SELECTOR, + Self::stakeRegistry(_) => ::SELECTOR, + Self::stakeRegistryImplementation(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn mockAvsProxyAdmin( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DeployMockAvsCalls::mockAvsProxyAdmin) + } + mockAvsProxyAdmin + }, + { + fn mockAvsServiceManagerImplementation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DeployMockAvsCalls::mockAvsServiceManagerImplementation) + } + mockAvsServiceManagerImplementation + }, + { + fn registryCoordinatorImplementation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DeployMockAvsCalls::registryCoordinatorImplementation) + } + registryCoordinatorImplementation + }, + { + fn operatorStateRetriever( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DeployMockAvsCalls::operatorStateRetriever) + } + operatorStateRetriever + }, + { + fn blsApkRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DeployMockAvsCalls::blsApkRegistry) + } + blsApkRegistry + }, + { + fn stakeRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DeployMockAvsCalls::stakeRegistry) + } + stakeRegistry + }, + { + fn registryCoordinator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DeployMockAvsCalls::registryCoordinator) + } + registryCoordinator + }, + { + fn mockAvsPauserReg( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DeployMockAvsCalls::mockAvsPauserReg) + } + mockAvsPauserReg + }, + { + fn indexRegistryImplementation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DeployMockAvsCalls::indexRegistryImplementation) + } + indexRegistryImplementation + }, + { + fn mockAvsServiceManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DeployMockAvsCalls::mockAvsServiceManager) + } + mockAvsServiceManager + }, + { + fn blsApkRegistryImplementation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DeployMockAvsCalls::blsApkRegistryImplementation) + } + blsApkRegistryImplementation + }, + { + fn indexRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DeployMockAvsCalls::indexRegistry) + } + indexRegistry + }, + { + fn run( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(DeployMockAvsCalls::run) + } + run + }, + { + fn stakeRegistryImplementation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DeployMockAvsCalls::stakeRegistryImplementation) + } + stakeRegistryImplementation + }, + { + fn emptyContract( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DeployMockAvsCalls::emptyContract) + } + emptyContract + }, + { + fn IS_SCRIPT( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(DeployMockAvsCalls::IS_SCRIPT) + } + IS_SCRIPT + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encoded_size(inner) + } + Self::blsApkRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::blsApkRegistryImplementation(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::emptyContract(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::indexRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::indexRegistryImplementation(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::mockAvsPauserReg(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::mockAvsProxyAdmin(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::mockAvsServiceManager(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::mockAvsServiceManagerImplementation(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::operatorStateRetriever(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registryCoordinator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registryCoordinatorImplementation(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::run(inner) => { + ::abi_encoded_size(inner) + } + Self::stakeRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::stakeRegistryImplementation(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::blsApkRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::blsApkRegistryImplementation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::emptyContract(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::indexRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::indexRegistryImplementation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::mockAvsPauserReg(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::mockAvsProxyAdmin(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::mockAvsServiceManager(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::mockAvsServiceManagerImplementation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::operatorStateRetriever(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registryCoordinator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registryCoordinatorImplementation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::run(inner) => { + ::abi_encode_raw(inner, out) + } + Self::stakeRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::stakeRegistryImplementation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`DeployMockAvs`](self) contract instance. + + See the [wrapper's documentation](`DeployMockAvsInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> DeployMockAvsInstance { + DeployMockAvsInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + DeployMockAvsInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + DeployMockAvsInstance::::deploy_builder(provider) + } + /**A [`DeployMockAvs`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`DeployMockAvs`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct DeployMockAvsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for DeployMockAvsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("DeployMockAvsInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployMockAvsInstance + { + /**Creates a new wrapper around an on-chain [`DeployMockAvs`](self) contract instance. + + See the [wrapper's documentation](`DeployMockAvsInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl DeployMockAvsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> DeployMockAvsInstance { + DeployMockAvsInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployMockAvsInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`IS_SCRIPT`] function. + pub fn IS_SCRIPT(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_SCRIPTCall {}) + } + ///Creates a new call builder for the [`blsApkRegistry`] function. + pub fn blsApkRegistry( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&blsApkRegistryCall {}) + } + ///Creates a new call builder for the [`blsApkRegistryImplementation`] function. + pub fn blsApkRegistryImplementation( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&blsApkRegistryImplementationCall {}) + } + ///Creates a new call builder for the [`emptyContract`] function. + pub fn emptyContract(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&emptyContractCall {}) + } + ///Creates a new call builder for the [`indexRegistry`] function. + pub fn indexRegistry(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&indexRegistryCall {}) + } + ///Creates a new call builder for the [`indexRegistryImplementation`] function. + pub fn indexRegistryImplementation( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&indexRegistryImplementationCall {}) + } + ///Creates a new call builder for the [`mockAvsPauserReg`] function. + pub fn mockAvsPauserReg( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&mockAvsPauserRegCall {}) + } + ///Creates a new call builder for the [`mockAvsProxyAdmin`] function. + pub fn mockAvsProxyAdmin( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&mockAvsProxyAdminCall {}) + } + ///Creates a new call builder for the [`mockAvsServiceManager`] function. + pub fn mockAvsServiceManager( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&mockAvsServiceManagerCall {}) + } + ///Creates a new call builder for the [`mockAvsServiceManagerImplementation`] function. + pub fn mockAvsServiceManagerImplementation( + &self, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&mockAvsServiceManagerImplementationCall {}) + } + ///Creates a new call builder for the [`operatorStateRetriever`] function. + pub fn operatorStateRetriever( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&operatorStateRetrieverCall {}) + } + ///Creates a new call builder for the [`registryCoordinator`] function. + pub fn registryCoordinator( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®istryCoordinatorCall {}) + } + ///Creates a new call builder for the [`registryCoordinatorImplementation`] function. + pub fn registryCoordinatorImplementation( + &self, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(®istryCoordinatorImplementationCall {}) + } + ///Creates a new call builder for the [`run`] function. + pub fn run(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&runCall {}) + } + ///Creates a new call builder for the [`stakeRegistry`] function. + pub fn stakeRegistry(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&stakeRegistryCall {}) + } + ///Creates a new call builder for the [`stakeRegistryImplementation`] function. + pub fn stakeRegistryImplementation( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&stakeRegistryImplementationCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployMockAvsInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/deploymockavsregistries.rs b/crates/utils/src/deploymockavsregistries.rs new file mode 100644 index 00000000..8e1e9f5b --- /dev/null +++ b/crates/utils/src/deploymockavsregistries.rs @@ -0,0 +1,2270 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface DeployMockAvsRegistries { + function IS_SCRIPT() external view returns (bool); + function blsApkRegistry() external view returns (address); + function blsApkRegistryImplementation() external view returns (address); + function emptyContract() external view returns (address); + function indexRegistry() external view returns (address); + function indexRegistryImplementation() external view returns (address); + function mockAvsPauserReg() external view returns (address); + function mockAvsProxyAdmin() external view returns (address); + function operatorStateRetriever() external view returns (address); + function registryCoordinator() external view returns (address); + function registryCoordinatorImplementation() external view returns (address); + function stakeRegistry() external view returns (address); + function stakeRegistryImplementation() external view returns (address); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_SCRIPT", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "blsApkRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IBLSApkRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "blsApkRegistryImplementation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IBLSApkRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "emptyContract", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract EmptyContract" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "indexRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IIndexRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "indexRegistryImplementation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IIndexRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "mockAvsPauserReg", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract PauserRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "mockAvsProxyAdmin", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ProxyAdmin" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "operatorStateRetriever", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract OperatorStateRetriever" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registryCoordinator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract RegistryCoordinator" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registryCoordinatorImplementation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IRegistryCoordinator" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "stakeRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStakeRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "stakeRegistryImplementation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStakeRegistry" + } + ], + "stateMutability": "view" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod DeployMockAvsRegistries { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052600c805462ff00ff19166201000117905534801561002157600080fd5b50610235806100316000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806380e064d41161008c5780639e9923c2116100665780639e9923c2146101a3578063e18272c2146101b6578063e3a8b345146101c9578063f8ccbf47146101dc57600080fd5b806380e064d41461016a5780638b2c69eb1461017d5780639e3ba4371461019057600080fd5b80630331ed2a146100d457806339a5fcfa1461010b5780634ca22c3f1461011e5780635df459461461013157806368304835146101445780636d14a98714610157575b600080fd5b600c546100ee90630100000090046001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b600f546100ee906001600160a01b031681565b6016546100ee906001600160a01b031681565b6010546100ee906001600160a01b031681565b6014546100ee906001600160a01b031681565b600e546100ee906001600160a01b031681565b600d546100ee906001600160a01b031681565b6013546100ee906001600160a01b031681565b6011546100ee906001600160a01b031681565b6012546100ee906001600160a01b031681565b6015546100ee906001600160a01b031681565b6017546100ee906001600160a01b031681565b600c546101ef9062010000900460ff1681565b604051901515815260200161010256fea26469706673582212201453d4bf05f8c497d9ead2ee542204814abcb8c1aefed00926a25edb0de539a064736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0!W`\0\x80\xFD[Pa\x025\x80a\x001`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80c\x80\xE0d\xD4\x11a\0\x8CW\x80c\x9E\x99#\xC2\x11a\0fW\x80c\x9E\x99#\xC2\x14a\x01\xA3W\x80c\xE1\x82r\xC2\x14a\x01\xB6W\x80c\xE3\xA8\xB3E\x14a\x01\xC9W\x80c\xF8\xCC\xBFG\x14a\x01\xDCW`\0\x80\xFD[\x80c\x80\xE0d\xD4\x14a\x01jW\x80c\x8B,i\xEB\x14a\x01}W\x80c\x9E;\xA47\x14a\x01\x90W`\0\x80\xFD[\x80c\x031\xED*\x14a\0\xD4W\x80c9\xA5\xFC\xFA\x14a\x01\x0BW\x80cL\xA2,?\x14a\x01\x1EW\x80c]\xF4YF\x14a\x011W\x80ch0H5\x14a\x01DW\x80cm\x14\xA9\x87\x14a\x01WW[`\0\x80\xFD[`\x0CTa\0\xEE\x90c\x01\0\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\x0FTa\0\xEE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x16Ta\0\xEE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x10Ta\0\xEE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x14Ta\0\xEE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x0ETa\0\xEE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\rTa\0\xEE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x13Ta\0\xEE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x11Ta\0\xEE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x12Ta\0\xEE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x15Ta\0\xEE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x17Ta\0\xEE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x0CTa\x01\xEF\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x01\x02V\xFE\xA2dipfsX\"\x12 \x14S\xD4\xBF\x05\xF8\xC4\x97\xD9\xEA\xD2\xEET\"\x04\x81J\xBC\xB8\xC1\xAE\xFE\xD0\t&\xA2^\xDB\r\xE59\xA0dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806380e064d41161008c5780639e9923c2116100665780639e9923c2146101a3578063e18272c2146101b6578063e3a8b345146101c9578063f8ccbf47146101dc57600080fd5b806380e064d41461016a5780638b2c69eb1461017d5780639e3ba4371461019057600080fd5b80630331ed2a146100d457806339a5fcfa1461010b5780634ca22c3f1461011e5780635df459461461013157806368304835146101445780636d14a98714610157575b600080fd5b600c546100ee90630100000090046001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b600f546100ee906001600160a01b031681565b6016546100ee906001600160a01b031681565b6010546100ee906001600160a01b031681565b6014546100ee906001600160a01b031681565b600e546100ee906001600160a01b031681565b600d546100ee906001600160a01b031681565b6013546100ee906001600160a01b031681565b6011546100ee906001600160a01b031681565b6012546100ee906001600160a01b031681565b6015546100ee906001600160a01b031681565b6017546100ee906001600160a01b031681565b600c546101ef9062010000900460ff1681565b604051901515815260200161010256fea26469706673582212201453d4bf05f8c497d9ead2ee542204814abcb8c1aefed00926a25edb0de539a064736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80c\x80\xE0d\xD4\x11a\0\x8CW\x80c\x9E\x99#\xC2\x11a\0fW\x80c\x9E\x99#\xC2\x14a\x01\xA3W\x80c\xE1\x82r\xC2\x14a\x01\xB6W\x80c\xE3\xA8\xB3E\x14a\x01\xC9W\x80c\xF8\xCC\xBFG\x14a\x01\xDCW`\0\x80\xFD[\x80c\x80\xE0d\xD4\x14a\x01jW\x80c\x8B,i\xEB\x14a\x01}W\x80c\x9E;\xA47\x14a\x01\x90W`\0\x80\xFD[\x80c\x031\xED*\x14a\0\xD4W\x80c9\xA5\xFC\xFA\x14a\x01\x0BW\x80cL\xA2,?\x14a\x01\x1EW\x80c]\xF4YF\x14a\x011W\x80ch0H5\x14a\x01DW\x80cm\x14\xA9\x87\x14a\x01WW[`\0\x80\xFD[`\x0CTa\0\xEE\x90c\x01\0\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\x0FTa\0\xEE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x16Ta\0\xEE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x10Ta\0\xEE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x14Ta\0\xEE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x0ETa\0\xEE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\rTa\0\xEE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x13Ta\0\xEE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x11Ta\0\xEE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x12Ta\0\xEE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x15Ta\0\xEE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x17Ta\0\xEE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\x0CTa\x01\xEF\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x01\x02V\xFE\xA2dipfsX\"\x12 \x14S\xD4\xBF\x05\xF8\xC4\x97\xD9\xEA\xD2\xEET\"\x04\x81J\xBC\xB8\xC1\xAE\xFE\xD0\t&\xA2^\xDB\r\xE59\xA0dsolcC\0\x08\x0C\x003", + ); + /**Function with signature `IS_SCRIPT()` and selector `0xf8ccbf47`. + ```solidity + function IS_SCRIPT() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_SCRIPTCall {} + ///Container type for the return parameters of the [`IS_SCRIPT()`](IS_SCRIPTCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_SCRIPTReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_SCRIPTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_SCRIPTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_SCRIPT()"; + const SELECTOR: [u8; 4] = [248u8, 204u8, 191u8, 71u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `blsApkRegistry()` and selector `0x5df45946`. + ```solidity + function blsApkRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct blsApkRegistryCall {} + ///Container type for the return parameters of the [`blsApkRegistry()`](blsApkRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct blsApkRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: blsApkRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for blsApkRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: blsApkRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for blsApkRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for blsApkRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = blsApkRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "blsApkRegistry()"; + const SELECTOR: [u8; 4] = [93u8, 244u8, 89u8, 70u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `blsApkRegistryImplementation()` and selector `0x9e3ba437`. + ```solidity + function blsApkRegistryImplementation() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct blsApkRegistryImplementationCall {} + ///Container type for the return parameters of the [`blsApkRegistryImplementation()`](blsApkRegistryImplementationCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct blsApkRegistryImplementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: blsApkRegistryImplementationCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for blsApkRegistryImplementationCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: blsApkRegistryImplementationReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for blsApkRegistryImplementationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for blsApkRegistryImplementationCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = blsApkRegistryImplementationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "blsApkRegistryImplementation()"; + const SELECTOR: [u8; 4] = [158u8, 59u8, 164u8, 55u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `emptyContract()` and selector `0xe3a8b345`. + ```solidity + function emptyContract() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct emptyContractCall {} + ///Container type for the return parameters of the [`emptyContract()`](emptyContractCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct emptyContractReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: emptyContractCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for emptyContractCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: emptyContractReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for emptyContractReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for emptyContractCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = emptyContractReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "emptyContract()"; + const SELECTOR: [u8; 4] = [227u8, 168u8, 179u8, 69u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `indexRegistry()` and selector `0x9e9923c2`. + ```solidity + function indexRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct indexRegistryCall {} + ///Container type for the return parameters of the [`indexRegistry()`](indexRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct indexRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: indexRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for indexRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: indexRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for indexRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for indexRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = indexRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "indexRegistry()"; + const SELECTOR: [u8; 4] = [158u8, 153u8, 35u8, 194u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `indexRegistryImplementation()` and selector `0x8b2c69eb`. + ```solidity + function indexRegistryImplementation() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct indexRegistryImplementationCall {} + ///Container type for the return parameters of the [`indexRegistryImplementation()`](indexRegistryImplementationCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct indexRegistryImplementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: indexRegistryImplementationCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for indexRegistryImplementationCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: indexRegistryImplementationReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for indexRegistryImplementationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for indexRegistryImplementationCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = indexRegistryImplementationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "indexRegistryImplementation()"; + const SELECTOR: [u8; 4] = [139u8, 44u8, 105u8, 235u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `mockAvsPauserReg()` and selector `0x80e064d4`. + ```solidity + function mockAvsPauserReg() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct mockAvsPauserRegCall {} + ///Container type for the return parameters of the [`mockAvsPauserReg()`](mockAvsPauserRegCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct mockAvsPauserRegReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: mockAvsPauserRegCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mockAvsPauserRegCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: mockAvsPauserRegReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mockAvsPauserRegReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for mockAvsPauserRegCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = mockAvsPauserRegReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "mockAvsPauserReg()"; + const SELECTOR: [u8; 4] = [128u8, 224u8, 100u8, 212u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `mockAvsProxyAdmin()` and selector `0x0331ed2a`. + ```solidity + function mockAvsProxyAdmin() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct mockAvsProxyAdminCall {} + ///Container type for the return parameters of the [`mockAvsProxyAdmin()`](mockAvsProxyAdminCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct mockAvsProxyAdminReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: mockAvsProxyAdminCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mockAvsProxyAdminCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: mockAvsProxyAdminReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mockAvsProxyAdminReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for mockAvsProxyAdminCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = mockAvsProxyAdminReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "mockAvsProxyAdmin()"; + const SELECTOR: [u8; 4] = [3u8, 49u8, 237u8, 42u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `operatorStateRetriever()` and selector `0x4ca22c3f`. + ```solidity + function operatorStateRetriever() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorStateRetrieverCall {} + ///Container type for the return parameters of the [`operatorStateRetriever()`](operatorStateRetrieverCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorStateRetrieverReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorStateRetrieverCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorStateRetrieverCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorStateRetrieverReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorStateRetrieverReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for operatorStateRetrieverCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = operatorStateRetrieverReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "operatorStateRetriever()"; + const SELECTOR: [u8; 4] = [76u8, 162u8, 44u8, 63u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registryCoordinator()` and selector `0x6d14a987`. + ```solidity + function registryCoordinator() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registryCoordinatorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registryCoordinatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registryCoordinator()"; + const SELECTOR: [u8; 4] = [109u8, 20u8, 169u8, 135u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registryCoordinatorImplementation()` and selector `0x39a5fcfa`. + ```solidity + function registryCoordinatorImplementation() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorImplementationCall {} + ///Container type for the return parameters of the [`registryCoordinatorImplementation()`](registryCoordinatorImplementationCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorImplementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorImplementationCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorImplementationCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorImplementationReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorImplementationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registryCoordinatorImplementationCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registryCoordinatorImplementationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registryCoordinatorImplementation()"; + const SELECTOR: [u8; 4] = [57u8, 165u8, 252u8, 250u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `stakeRegistry()` and selector `0x68304835`. + ```solidity + function stakeRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakeRegistryCall {} + ///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakeRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakeRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakeRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakeRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakeRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for stakeRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = stakeRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "stakeRegistry()"; + const SELECTOR: [u8; 4] = [104u8, 48u8, 72u8, 53u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `stakeRegistryImplementation()` and selector `0xe18272c2`. + ```solidity + function stakeRegistryImplementation() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakeRegistryImplementationCall {} + ///Container type for the return parameters of the [`stakeRegistryImplementation()`](stakeRegistryImplementationCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakeRegistryImplementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakeRegistryImplementationCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakeRegistryImplementationCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakeRegistryImplementationReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakeRegistryImplementationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for stakeRegistryImplementationCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = stakeRegistryImplementationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "stakeRegistryImplementation()"; + const SELECTOR: [u8; 4] = [225u8, 130u8, 114u8, 194u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`DeployMockAvsRegistries`](self) function calls. + pub enum DeployMockAvsRegistriesCalls { + IS_SCRIPT(IS_SCRIPTCall), + blsApkRegistry(blsApkRegistryCall), + blsApkRegistryImplementation(blsApkRegistryImplementationCall), + emptyContract(emptyContractCall), + indexRegistry(indexRegistryCall), + indexRegistryImplementation(indexRegistryImplementationCall), + mockAvsPauserReg(mockAvsPauserRegCall), + mockAvsProxyAdmin(mockAvsProxyAdminCall), + operatorStateRetriever(operatorStateRetrieverCall), + registryCoordinator(registryCoordinatorCall), + registryCoordinatorImplementation(registryCoordinatorImplementationCall), + stakeRegistry(stakeRegistryCall), + stakeRegistryImplementation(stakeRegistryImplementationCall), + } + #[automatically_derived] + impl DeployMockAvsRegistriesCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [3u8, 49u8, 237u8, 42u8], + [57u8, 165u8, 252u8, 250u8], + [76u8, 162u8, 44u8, 63u8], + [93u8, 244u8, 89u8, 70u8], + [104u8, 48u8, 72u8, 53u8], + [109u8, 20u8, 169u8, 135u8], + [128u8, 224u8, 100u8, 212u8], + [139u8, 44u8, 105u8, 235u8], + [158u8, 59u8, 164u8, 55u8], + [158u8, 153u8, 35u8, 194u8], + [225u8, 130u8, 114u8, 194u8], + [227u8, 168u8, 179u8, 69u8], + [248u8, 204u8, 191u8, 71u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for DeployMockAvsRegistriesCalls { + const NAME: &'static str = "DeployMockAvsRegistriesCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 13usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_SCRIPT(_) => ::SELECTOR, + Self::blsApkRegistry(_) => { + ::SELECTOR + } + Self::blsApkRegistryImplementation(_) => { + ::SELECTOR + } + Self::emptyContract(_) => ::SELECTOR, + Self::indexRegistry(_) => ::SELECTOR, + Self::indexRegistryImplementation(_) => { + ::SELECTOR + } + Self::mockAvsPauserReg(_) => { + ::SELECTOR + } + Self::mockAvsProxyAdmin(_) => { + ::SELECTOR + } + Self::operatorStateRetriever(_) => { + ::SELECTOR + } + Self::registryCoordinator(_) => { + ::SELECTOR + } + Self::registryCoordinatorImplementation(_) => { + ::SELECTOR + } + Self::stakeRegistry(_) => ::SELECTOR, + Self::stakeRegistryImplementation(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn mockAvsProxyAdmin( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DeployMockAvsRegistriesCalls::mockAvsProxyAdmin) + } + mockAvsProxyAdmin + }, + { + fn registryCoordinatorImplementation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + DeployMockAvsRegistriesCalls::registryCoordinatorImplementation, + ) + } + registryCoordinatorImplementation + }, + { + fn operatorStateRetriever( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DeployMockAvsRegistriesCalls::operatorStateRetriever) + } + operatorStateRetriever + }, + { + fn blsApkRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DeployMockAvsRegistriesCalls::blsApkRegistry) + } + blsApkRegistry + }, + { + fn stakeRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DeployMockAvsRegistriesCalls::stakeRegistry) + } + stakeRegistry + }, + { + fn registryCoordinator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DeployMockAvsRegistriesCalls::registryCoordinator) + } + registryCoordinator + }, + { + fn mockAvsPauserReg( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DeployMockAvsRegistriesCalls::mockAvsPauserReg) + } + mockAvsPauserReg + }, + { + fn indexRegistryImplementation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + DeployMockAvsRegistriesCalls::indexRegistryImplementation, + ) + } + indexRegistryImplementation + }, + { + fn blsApkRegistryImplementation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + DeployMockAvsRegistriesCalls::blsApkRegistryImplementation, + ) + } + blsApkRegistryImplementation + }, + { + fn indexRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DeployMockAvsRegistriesCalls::indexRegistry) + } + indexRegistry + }, + { + fn stakeRegistryImplementation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + DeployMockAvsRegistriesCalls::stakeRegistryImplementation, + ) + } + stakeRegistryImplementation + }, + { + fn emptyContract( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(DeployMockAvsRegistriesCalls::emptyContract) + } + emptyContract + }, + { + fn IS_SCRIPT( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(DeployMockAvsRegistriesCalls::IS_SCRIPT) + } + IS_SCRIPT + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encoded_size(inner) + } + Self::blsApkRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::blsApkRegistryImplementation(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::emptyContract(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::indexRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::indexRegistryImplementation(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::mockAvsPauserReg(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::mockAvsProxyAdmin(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::operatorStateRetriever(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registryCoordinator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registryCoordinatorImplementation(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::stakeRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::stakeRegistryImplementation(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::blsApkRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::blsApkRegistryImplementation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::emptyContract(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::indexRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::indexRegistryImplementation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::mockAvsPauserReg(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::mockAvsProxyAdmin(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::operatorStateRetriever(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registryCoordinator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registryCoordinatorImplementation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::stakeRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::stakeRegistryImplementation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`DeployMockAvsRegistries`](self) contract instance. + + See the [wrapper's documentation](`DeployMockAvsRegistriesInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> DeployMockAvsRegistriesInstance { + DeployMockAvsRegistriesInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + DeployMockAvsRegistriesInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + DeployMockAvsRegistriesInstance::::deploy_builder(provider) + } + /**A [`DeployMockAvsRegistries`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`DeployMockAvsRegistries`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct DeployMockAvsRegistriesInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for DeployMockAvsRegistriesInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("DeployMockAvsRegistriesInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployMockAvsRegistriesInstance + { + /**Creates a new wrapper around an on-chain [`DeployMockAvsRegistries`](self) contract instance. + + See the [wrapper's documentation](`DeployMockAvsRegistriesInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl DeployMockAvsRegistriesInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> DeployMockAvsRegistriesInstance { + DeployMockAvsRegistriesInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployMockAvsRegistriesInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`IS_SCRIPT`] function. + pub fn IS_SCRIPT(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_SCRIPTCall {}) + } + ///Creates a new call builder for the [`blsApkRegistry`] function. + pub fn blsApkRegistry( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&blsApkRegistryCall {}) + } + ///Creates a new call builder for the [`blsApkRegistryImplementation`] function. + pub fn blsApkRegistryImplementation( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&blsApkRegistryImplementationCall {}) + } + ///Creates a new call builder for the [`emptyContract`] function. + pub fn emptyContract(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&emptyContractCall {}) + } + ///Creates a new call builder for the [`indexRegistry`] function. + pub fn indexRegistry(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&indexRegistryCall {}) + } + ///Creates a new call builder for the [`indexRegistryImplementation`] function. + pub fn indexRegistryImplementation( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&indexRegistryImplementationCall {}) + } + ///Creates a new call builder for the [`mockAvsPauserReg`] function. + pub fn mockAvsPauserReg( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&mockAvsPauserRegCall {}) + } + ///Creates a new call builder for the [`mockAvsProxyAdmin`] function. + pub fn mockAvsProxyAdmin( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&mockAvsProxyAdminCall {}) + } + ///Creates a new call builder for the [`operatorStateRetriever`] function. + pub fn operatorStateRetriever( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&operatorStateRetrieverCall {}) + } + ///Creates a new call builder for the [`registryCoordinator`] function. + pub fn registryCoordinator( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®istryCoordinatorCall {}) + } + ///Creates a new call builder for the [`registryCoordinatorImplementation`] function. + pub fn registryCoordinatorImplementation( + &self, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(®istryCoordinatorImplementationCall {}) + } + ///Creates a new call builder for the [`stakeRegistry`] function. + pub fn stakeRegistry(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&stakeRegistryCall {}) + } + ///Creates a new call builder for the [`stakeRegistryImplementation`] function. + pub fn stakeRegistryImplementation( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&stakeRegistryImplementationCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployMockAvsRegistriesInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/deploytokensstrategiescreatequorums.rs b/crates/utils/src/deploytokensstrategiescreatequorums.rs new file mode 100644 index 00000000..fcf8a147 --- /dev/null +++ b/crates/utils/src/deploytokensstrategiescreatequorums.rs @@ -0,0 +1,567 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface DeployTokensStrategiesCreateQuorums { + function IS_SCRIPT() external view returns (bool); + function run() external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_SCRIPT", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "run", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod DeployTokensStrategiesCreateQuorums { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052600c805462ff00ff19166201000117905569010f0cf064dd59200000600d5534801561002f57600080fd5b506131868061003f6000396000f3fe60806040523480156200001157600080fd5b50600436106200003a5760003560e01c8063c0406226146200003f578063f8ccbf47146200004b575b600080fd5b6200004962000073565b005b600c546200005f9062010000900460ff1681565b604051901515815260200160405180910390f35b735fbdb2315678afecb367f032d93f642f64180aa36000620000946200036c565b90506000620000a2620005fa565b90506000806000805160206200310d83398151915260001c6001600160a01b0316637fb5297f6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620000f557600080fd5b505af11580156200010a573d6000803e3d6000fd5b5050505060006000805160206200310d83398151915260001c6001600160a01b03166342cbb15c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000161573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000187919062001297565b905046617a6914806200019b575046610539145b156200025257620001bf856000015186602001518760e001518860400151620008b6565b60408051630fe7858560e31b81526004810191909152601160448201527065726332304d6f636b537472617465677960781b60648201526001600160a01b038083166024830152919550919350871690637f3c2c2890608401600060405180830381600087803b1580156200023357600080fd5b505af115801562000248573d6000803e3d6000fd5b50505050620002ed565b4661426814156200029157735c8b55722f421556a2aafb7a3ea63d4c3e5143129250733f1c547b21f65e10480de3ad8e19faac46c950349150620002ed565b60405162461bcd60e51b815260206004820152602660248201527f436f6e66696775726520546f6b656e20616e6420537472617465677920666f726044820152651021b430b4b760d11b60648201526084015b60405180910390fd5b620002fd84602001518462000d16565b6000805160206200310d83398151915260001c6001600160a01b03166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200034b57600080fd5b505af115801562000360573d6000803e3d6000fd5b50505050505050505050565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091526000620003ef6040518060400160405280601c81526020017f656967656e6c617965725f6465706c6f796d656e745f6f75747075740000000081525062000e38565b9050600062000434826040518060400160405280601f81526020017f2e6164647265737365732e656967656e4c6179657250726f787941646d696e008152506200104f565b9050600062000479836040518060400160405280601e81526020017f2e6164647265737365732e656967656e4c6179657250617573657252656700008152506200104f565b90506000620004be846040518060400160405280601a81526020017f2e6164647265737365732e73747261746567794d616e616765720000000000008152506200104f565b90506000620004fb85604051806040016040528060158152602001741730b2323932b9b9b2b9973232b632b3b0ba34b7b760591b8152506200104f565b9050600062000540866040518060400160405280601781526020017f2e6164647265737365732e6176734469726563746f72790000000000000000008152506200104f565b905060006200057a87604051806040016040528060128152602001711730b2323932b9b9b2b99739b630b9b432b960711b8152506200104f565b90506000620005a388604051806060016040528060258152602001620030c7602591396200104f565b60408051610100810182526001600160a01b03998a1681529789166020890152958816958701959095525091851660608501529084166080840152831660a0830152600060c083015290911660e082015292915050565b60408051606081018252600080825260208201819052918101919091526000620006596040518060400160405280601981526020017f6d6f636b6176735f6465706c6f796d656e745f6f75747075740000000000000081525062000e38565b905060006200069e826040518060400160405280602081526020017f2e6164647265737365732e6d6f636b417673536572766963654d616e616765728152506200104f565b90506001600160a01b0381166200071e5760405162461bcd60e51b815260206004820152603a60248201527f4d6f636b417673436f6e7472616374735061727365723a206d6f636b4176735360448201527f6572766963654d616e61676572206164647265737320697320300000000000006064820152608401620002e4565b600062000761836040518060400160405280601e81526020017f2e6164647265737365732e7265676973747279436f6f7264696e61746f7200008152506200104f565b90506001600160a01b038116620007e15760405162461bcd60e51b815260206004820152603860248201527f4d6f636b417673436f6e7472616374735061727365723a20726567697374727960448201527f436f6f7264696e61746f722061646472657373206973203000000000000000006064820152608401620002e4565b60006200080884604051806060016040528060218152602001620030ec602191396200104f565b90506001600160a01b038116620008885760405162461bcd60e51b815260206004820152603b60248201527f4d6f636b417673436f6e7472616374735061727365723a206f70657261746f7260448201527f53746174655265747269657665722061646472657373206973203000000000006064820152608401620002e4565b604080516060810182526001600160a01b039485168152928416602084015292169181019190915292915050565b6000806000604051620008c9906200127b565b604051809103906000f080158015620008e6573d6000803e3d6000fd5b50600d546040516340c10f1960e01b815232600482015260248101919091529091506001600160a01b038216906340c10f1990604401600060405180830381600087803b1580156200093757600080fd5b505af11580156200094c573d6000803e3d6000fd5b505060408051683635c9adc5dea000006024820181905260448201526001600160a01b0385811660648301528a166084808301919091528251808303909101815260a490910182526020810180516001600160e01b031663019e272960e01b1790529051600093508892508a9190620009c59062001289565b620009d39392919062001312565b604051809103906000f080158015620009f0573d6000803e3d6000fd5b506040805160018082528183019092529192506000919060208083019080368337019050509050818160008151811062000a2e5762000a2e62001356565b6001600160a01b03929092166020928302919091019091015260408051600180825281830190925260009181602001602082028036833701905050905060008160008151811062000a835762000a8362001356565b9115156020928302919091019091015260405163df5b354760e01b81526001600160a01b0388169063df5b35479062000ac390859085906004016200136c565b600060405180830381600087803b15801562000ade57600080fd5b505af115801562000af3573d6000803e3d6000fd5b5050604080518082018252600d81526c1c185c995b9d081bd89a9958dd609a1b60208083019190915282518084018452600981526861646472657373657360b81b918101919091529151634b96303160e11b8152909350909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063972c60629062000b7b9084908a90600401620013f6565b6000604051808303816000875af115801562000b9b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000bc5919081019062001445565b50604051634b96303160e11b8152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063972c60629062000c049085908a90600401620014fe565b6000604051808303816000875af115801562000c24573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000c4e919081019062001445565b6040516388da6d3560e01b8152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d906388da6d359062000c919087908790879060040162001555565b6000604051808303816000875af115801562000cb1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000cdb919081019062001445565b905062000d02816040518060600160405280602481526020016200312d60249139620010d8565b50959c949b50939950505050505050505050565b604080516060810182526127108152613a9860208201526064818301528151600180825281840190935290916000918291816020015b604080518082019091526000808252602082015281526020019060019003908162000d4c5790505090506040518060400160405280856001600160a01b03168152602001670de0b6b3a76400006bffffffffffffffffffffffff168152508160008151811062000dc05762000dc062001356565b6020908102919091010152604051631aeb699160e31b81526001600160a01b0386169063d75b4c889062000dfd908690869086906004016200159e565b600060405180830381600087803b15801562000e1857600080fd5b505af115801562000e2d573d6000803e3d6000fd5b505050505050505050565b606060006000805160206200310d83398151915260001c6001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000e8d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000eb7919081019062001445565b60405160200162000ec991906200163f565b60408051808303601f190181529082905263348051d760e11b82524660048301529150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801562000f2c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000f56919081019062001445565b60405160200162000f68919062001674565b604051602081830303815290604052905060008460405160200162000f8e91906200169b565b60408051601f19818403018152908290529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906360f9bb119062000fd190869086908690602001620016c6565b6040516020818303038152906040526040518263ffffffff1660e01b815260040162000ffe91906200170f565b600060405180830381865afa1580156200101c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001046919081019062001445565b95945050505050565b604051631e19e65760e01b8152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90631e19e657906200108d908690869060040162001724565b602060405180830381865afa158015620010ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010d191906200174d565b9392505050565b60006000805160206200310d83398151915260001c6001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156200112b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001155919081019062001445565b6040516020016200116791906200163f565b60408051808303601f190181529082905263348051d760e11b82524660048301529150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015620011ca573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620011f4919081019062001445565b60405160200162001206919062001674565b60405160208183030381529060405290506000828285604051602001620012309392919062001778565b60408051601f198184030181529082905263e23cd19f60e01b82529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e23cd19f9062000dfd908890859060040162001724565b610a7480620017d283390190565b610e81806200224683390190565b600060208284031215620012aa57600080fd5b5051919050565b60005b83811015620012ce578181015183820152602001620012b4565b83811115620012de576000848401525b50505050565b60008151808452620012fe816020860160208601620012b1565b601f01601f19169290920160200192915050565b6001600160a01b038481168252831660208201526060604082018190526000906200104690830184620012e4565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b82811015620013b05781516001600160a01b03168452928401929084019060010162001389565b5050508381038285015284518082528583019183019060005b81811015620013e9578351151583529284019291840191600101620013c9565b5090979650505050505050565b6060815260006200140b6060830185620012e4565b828103602080850191909152600982526865726332306d6f636b60b81b908201526001600160a01b03939093166040928301525001919050565b6000602082840312156200145857600080fd5b815167ffffffffffffffff808211156200147157600080fd5b818401915084601f8301126200148657600080fd5b8151818111156200149b576200149b62001340565b604051601f8201601f19908116603f01168101908382118183101715620014c657620014c662001340565b81604052828152876020848701011115620014e057600080fd5b620014f3836020830160208801620012b1565b979650505050505050565b606081526000620015136060830185620012e4565b828103602080850191909152601182527065726332306d6f636b737472617465677960781b908201526001600160a01b03939093166040928301525001919050565b6060815260006200156a6060830186620012e4565b82810360208401526200157e8186620012e4565b90508281036040840152620015948185620012e4565b9695505050505050565b600060a0820163ffffffff865116835260208087015161ffff808216838701526040915080828a01511682870152506bffffffffffffffffffffffff808816606087015260a0608087015283875180865260c088019150848901955060005b818110156200162f57865180516001600160a01b031684528601518416868401529585019591840191600101620015fd565b50909a9950505050505050505050565b6000825162001653818460208701620012b1565b6e2f7363726970742f6f75747075742f60881b920191825250600f01919050565b6000825162001688818460208701620012b1565b602f60f81b920191825250600101919050565b60008251620016af818460208701620012b1565b64173539b7b760d91b920191825250600501919050565b60008451620016da818460208901620012b1565b845190830190620016f0818360208901620012b1565b845191019062001705818360208801620012b1565b0195945050505050565b602081526000620010d16020830184620012e4565b604081526000620017396040830185620012e4565b8281036020840152620010468185620012e4565b6000602082840312156200176057600080fd5b81516001600160a01b0381168114620010d157600080fd5b600084516200178c818460208901620012b1565b845190830190620017a2818360208901620012b1565b8451910190620017b7818360208801620012b1565b64173539b7b760d91b91019081526005019594505050505056fe608060405234801561001057600080fd5b506040518060400160405280600a81526020016926b7b1b5902a37b5b2b760b11b815250604051806040016040528060038152602001624d434b60e81b8152508160039080519060200190610066929190610082565b50805161007a906004906020840190610082565b505050610156565b82805461008e9061011b565b90600052602060002090601f0160209004810192826100b057600085556100f6565b82601f106100c957805160ff19168380011785556100f6565b828001600101855582156100f6579182015b828111156100f65782518255916020019190600101906100db565b50610102929150610106565b5090565b5b808211156101025760008155600101610107565b600181811c9082168061012f57607f821691505b6020821081141561015057634e487b7160e01b600052602260045260246000fd5b50919050565b61090f806101656000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806340c10f191161007157806340c10f191461014157806370a082311461015657806395d89b411461017f578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce919061074c565b60405180910390f35b6100ea6100e53660046107bd565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a3660046107e7565b61026a565b604051601281526020016100ce565b6100ea61013c3660046107bd565b610277565b61015461014f3660046107bd565b610299565b005b6100fe610164366004610823565b6001600160a01b031660009081526020819052604090205490565b6100c16102a7565b6100ea6101953660046107bd565b6102b6565b6100ea6101a83660046107bd565b610341565b6100fe6101bb366004610845565b61034f565b6060600380546101cf90610878565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb90610878565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b60003361026081858561037a565b5060019392505050565b600061026084848461049e565b60003361026081858561028a838361034f565b61029491906108b3565b61037a565b6102a3828261066d565b5050565b6060600480546101cf90610878565b600033816102c4828661034f565b9050838110156103295760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b610336828686840361037a565b506001949350505050565b60003361026081858561049e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103dc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610320565b6001600160a01b03821661043d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610320565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166105025760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610320565b6001600160a01b0382166105645760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610320565b6001600160a01b038316600090815260208190526040902054818110156105dc5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610320565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106139084906108b3565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161065f91815260200190565b60405180910390a350505050565b6001600160a01b0382166106c35760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610320565b80600260008282546106d591906108b3565b90915550506001600160a01b038216600090815260208190526040812080548392906107029084906108b3565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600060208083528351808285015260005b818110156107795785810183015185820160400152820161075d565b8181111561078b576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146107b857600080fd5b919050565b600080604083850312156107d057600080fd5b6107d9836107a1565b946020939093013593505050565b6000806000606084860312156107fc57600080fd5b610805846107a1565b9250610813602085016107a1565b9150604084013590509250925092565b60006020828403121561083557600080fd5b61083e826107a1565b9392505050565b6000806040838503121561085857600080fd5b610861836107a1565b915061086f602084016107a1565b90509250929050565b600181811c9082168061088c57607f821691505b602082108114156108ad57634e487b7160e01b600052602260045260246000fd5b50919050565b600082198211156108d457634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220cdd5dacf8932073a3caffc72e84d1bc1b5bd6191303c553cc00319f525760ef364736f6c634300080c0033608060405260405162000e8138038062000e81833981016040819052620000269162000490565b828162000036828260006200004d565b50620000449050826200008a565b505050620005c3565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e5a60279139620002f8565b9392505050565b60006200018060008051602062000e3a83398151915260001b620003de60201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e3a83398151915260001b620003de60201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200028c1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620002081760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000570565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f191906200058e565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b83811115620000835750506000910152565b600080600060608486031215620004a657600080fd5b620004b1846200042e565b9250620004c1602085016200042e565b60408501519092506001600160401b0380821115620004df57600080fd5b818601915086601f830112620004f457600080fd5b8151818111156200050957620005096200044b565b604051601f8201601f19908116603f011681019083821181831017156200053457620005346200044b565b816040528281528960208487010111156200054e57600080fd5b6200056183602083016020880162000461565b80955050505050509250925092565b600082516200058481846020870162000461565b9190910192915050565b6020815260008251806020840152620005af81604085016020870162000461565b601f01601f19169190910160400192915050565b61086780620005d36000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212207420b9d3a17a9b4b1279482aea62855b38b1f3c36865e13712f5632f3a487f3764736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65642e6164647265737365732e626173655374726174656779496d706c656d656e746174696f6e2e6164647265737365732e6f70657261746f725374617465526574726965766572885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d746f6b656e5f616e645f73747261746567795f6465706c6f796d656e745f6f7574707574a26469706673582212200dbe016138a8dd2d2fcf2d0cef7338ef81fa33f72fcb950f4a666e059cc89e9e64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90Ui\x01\x0F\x0C\xF0d\xDDY \0\0`\rU4\x80\x15a\0/W`\0\x80\xFD[Pa1\x86\x80a\0?`\09`\0\xF3\xFE`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`\x046\x10b\0\0:W`\x005`\xE0\x1C\x80c\xC0@b&\x14b\0\0?W\x80c\xF8\xCC\xBFG\x14b\0\0KW[`\0\x80\xFD[b\0\0Ib\0\0sV[\0[`\x0CTb\0\0_\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3[s_\xBD\xB21Vx\xAF\xEC\xB3g\xF02\xD9?d/d\x18\n\xA3`\0b\0\0\x94b\0\x03lV[\x90P`\0b\0\0\xA2b\0\x05\xFAV[\x90P`\0\x80`\0\x80Q` b\x001\r\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\0\xF5W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x01\nW=`\0\x80>=`\0\xFD[PPPP`\0`\0\x80Q` b\x001\r\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cB\xCB\xB1\\`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x01aW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01\x87\x91\x90b\0\x12\x97V[\x90PFazi\x14\x80b\0\x01\x9BWPFa\x059\x14[\x15b\0\x02RWb\0\x01\xBF\x85`\0\x01Q\x86` \x01Q\x87`\xE0\x01Q\x88`@\x01Qb\0\x08\xB6V[`@\x80Qc\x0F\xE7\x85\x85`\xE3\x1B\x81R`\x04\x81\x01\x91\x90\x91R`\x11`D\x82\x01Rperc20MockStrategy`x\x1B`d\x82\x01R`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`$\x83\x01R\x91\x95P\x91\x93P\x87\x16\x90c\x7F<,(\x90`\x84\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x023W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x02HW=`\0\x80>=`\0\xFD[PPPPb\0\x02\xEDV[FaBh\x14\x15b\0\x02\x91Ws\\\x8BUr/B\x15V\xA2\xAA\xFBz>\xA6=L>QC\x12\x92Ps?\x1CT{!\xF6^\x10H\r\xE3\xAD\x8E\x19\xFA\xACF\xC9P4\x91Pb\0\x02\xEDV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FConfigure Token and Strategy for`D\x82\x01Re\x10!\xB40\xB4\xB7`\xD1\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[b\0\x02\xFD\x84` \x01Q\x84b\0\r\x16V[`\0\x80Q` b\x001\r\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x03KW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x03`W=`\0\x80>=`\0\xFD[PPPPPPPPPPV[`@\x80Qa\x01\0\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x82\x90R`\x80\x81\x01\x82\x90R`\xA0\x81\x01\x82\x90R`\xC0\x81\x01\x82\x90R`\xE0\x81\x01\x91\x90\x91R`\0b\0\x03\xEF`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7Feigenlayer_deployment_output\0\0\0\0\x81RPb\0\x0E8V[\x90P`\0b\0\x044\x82`@Q\x80`@\x01`@R\x80`\x1F\x81R` \x01\x7F.addresses.eigenLayerProxyAdmin\0\x81RPb\0\x10OV[\x90P`\0b\0\x04y\x83`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7F.addresses.eigenLayerPauserReg\0\0\x81RPb\0\x10OV[\x90P`\0b\0\x04\xBE\x84`@Q\x80`@\x01`@R\x80`\x1A\x81R` \x01\x7F.addresses.strategyManager\0\0\0\0\0\0\x81RPb\0\x10OV[\x90P`\0b\0\x04\xFB\x85`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01t\x170\xB2292\xB9\xB9\xB2\xB9\x9722\xB62\xB3\xB0\xBA4\xB7\xB7`Y\x1B\x81RPb\0\x10OV[\x90P`\0b\0\x05@\x86`@Q\x80`@\x01`@R\x80`\x17\x81R` \x01\x7F.addresses.avsDirectory\0\0\0\0\0\0\0\0\0\x81RPb\0\x10OV[\x90P`\0b\0\x05z\x87`@Q\x80`@\x01`@R\x80`\x12\x81R` \x01q\x170\xB2292\xB9\xB9\xB2\xB9\x979\xB60\xB9\xB42\xB9`q\x1B\x81RPb\0\x10OV[\x90P`\0b\0\x05\xA3\x88`@Q\x80``\x01`@R\x80`%\x81R` \x01b\x000\xC7`%\x919b\0\x10OV[`@\x80Qa\x01\0\x81\x01\x82R`\x01`\x01`\xA0\x1B\x03\x99\x8A\x16\x81R\x97\x89\x16` \x89\x01R\x95\x88\x16\x95\x87\x01\x95\x90\x95RP\x91\x85\x16``\x85\x01R\x90\x84\x16`\x80\x84\x01R\x83\x16`\xA0\x83\x01R`\0`\xC0\x83\x01R\x90\x91\x16`\xE0\x82\x01R\x92\x91PPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`\0b\0\x06Y`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7Fmockavs_deployment_output\0\0\0\0\0\0\0\x81RPb\0\x0E8V[\x90P`\0b\0\x06\x9E\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7F.addresses.mockAvsServiceManager\x81RPb\0\x10OV[\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16b\0\x07\x1EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FMockAvsContractsParser: mockAvsS`D\x82\x01R\x7FerviceManager address is 0\0\0\0\0\0\0`d\x82\x01R`\x84\x01b\0\x02\xE4V[`\0b\0\x07a\x83`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7F.addresses.registryCoordinator\0\0\x81RPb\0\x10OV[\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16b\0\x07\xE1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FMockAvsContractsParser: registry`D\x82\x01R\x7FCoordinator address is 0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01b\0\x02\xE4V[`\0b\0\x08\x08\x84`@Q\x80``\x01`@R\x80`!\x81R` \x01b\x000\xEC`!\x919b\0\x10OV[\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16b\0\x08\x88W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`;`$\x82\x01R\x7FMockAvsContractsParser: operator`D\x82\x01R\x7FStateRetriever address is 0\0\0\0\0\0`d\x82\x01R`\x84\x01b\0\x02\xE4V[`@\x80Q``\x81\x01\x82R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16\x91\x81\x01\x91\x90\x91R\x92\x91PPV[`\0\x80`\0`@Qb\0\x08\xC9\x90b\0\x12{V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x08\xE6W=`\0\x80>=`\0\xFD[P`\rT`@Qc@\xC1\x0F\x19`\xE0\x1B\x81R2`\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c@\xC1\x0F\x19\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\t7W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\tLW=`\0\x80>=`\0\xFD[PP`@\x80Qh65\xC9\xAD\xC5\xDE\xA0\0\0`$\x82\x01\x81\x90R`D\x82\x01R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`d\x83\x01R\x8A\x16`\x84\x80\x83\x01\x91\x90\x91R\x82Q\x80\x83\x03\x90\x91\x01\x81R`\xA4\x90\x91\x01\x82R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x01\x9E')`\xE0\x1B\x17\x90R\x90Q`\0\x93P\x88\x92P\x8A\x91\x90b\0\t\xC5\x90b\0\x12\x89V[b\0\t\xD3\x93\x92\x91\x90b\0\x13\x12V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\t\xF0W=`\0\x80>=`\0\xFD[P`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x91\x92P`\0\x91\x90` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P\x81\x81`\0\x81Q\x81\x10b\0\n.Wb\0\n.b\0\x13VV[`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01` \x82\x02\x806\x837\x01\x90PP\x90P`\0\x81`\0\x81Q\x81\x10b\0\n\x83Wb\0\n\x83b\0\x13VV[\x91\x15\x15` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`@Qc\xDF[5G`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x88\x16\x90c\xDF[5G\x90b\0\n\xC3\x90\x85\x90\x85\x90`\x04\x01b\0\x13lV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\n\xDEW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\n\xF3W=`\0\x80>=`\0\xFD[PP`@\x80Q\x80\x82\x01\x82R`\r\x81Rl\x1C\x18\\\x99[\x9D\x08\x1B\xD8\x9A\x99X\xDD`\x9A\x1B` \x80\x83\x01\x91\x90\x91R\x82Q\x80\x84\x01\x84R`\t\x81Rhaddresses`\xB8\x1B\x91\x81\x01\x91\x90\x91R\x91QcK\x9601`\xE1\x1B\x81R\x90\x93P\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x97,`b\x90b\0\x0B{\x90\x84\x90\x8A\x90`\x04\x01b\0\x13\xF6V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x0B\x9BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x0B\xC5\x91\x90\x81\x01\x90b\0\x14EV[P`@QcK\x9601`\xE1\x1B\x81R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x97,`b\x90b\0\x0C\x04\x90\x85\x90\x8A\x90`\x04\x01b\0\x14\xFEV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x0C$W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x0CN\x91\x90\x81\x01\x90b\0\x14EV[`@Qc\x88\xDAm5`\xE0\x1B\x81R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x88\xDAm5\x90b\0\x0C\x91\x90\x87\x90\x87\x90\x87\x90`\x04\x01b\0\x15UV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x0C\xB1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x0C\xDB\x91\x90\x81\x01\x90b\0\x14EV[\x90Pb\0\r\x02\x81`@Q\x80``\x01`@R\x80`$\x81R` \x01b\x001-`$\x919b\0\x10\xD8V[P\x95\x9C\x94\x9BP\x93\x99PPPPPPPPPPV[`@\x80Q``\x81\x01\x82Ra'\x10\x81Ra:\x98` \x82\x01R`d\x81\x83\x01R\x81Q`\x01\x80\x82R\x81\x84\x01\x90\x93R\x90\x91`\0\x91\x82\x91\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\rLW\x90PP\x90P`@Q\x80`@\x01`@R\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01g\r\xE0\xB6\xB3\xA7d\0\0k\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x81`\0\x81Q\x81\x10b\0\r\xC0Wb\0\r\xC0b\0\x13VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x1A\xEBi\x91`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x16\x90c\xD7[L\x88\x90b\0\r\xFD\x90\x86\x90\x86\x90\x86\x90`\x04\x01b\0\x15\x9EV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0E\x18W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0E-W=`\0\x80>=`\0\xFD[PPPPPPPPPV[```\0`\0\x80Q` b\x001\r\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16c\xD90\xA0\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x0E\x8DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x0E\xB7\x91\x90\x81\x01\x90b\0\x14EV[`@Q` \x01b\0\x0E\xC9\x91\x90b\0\x16?V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x90\x82\x90Rc4\x80Q\xD7`\xE1\x1B\x82RF`\x04\x83\x01R\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x0F,W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x0FV\x91\x90\x81\x01\x90b\0\x14EV[`@Q` \x01b\0\x0Fh\x91\x90b\0\x16tV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x84`@Q` \x01b\0\x0F\x8E\x91\x90b\0\x16\x9BV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c`\xF9\xBB\x11\x90b\0\x0F\xD1\x90\x86\x90\x86\x90\x86\x90` \x01b\0\x16\xC6V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0\x0F\xFE\x91\x90b\0\x17\x0FV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x10\x1CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x10F\x91\x90\x81\x01\x90b\0\x14EV[\x95\x94PPPPPV[`@Qc\x1E\x19\xE6W`\xE0\x1B\x81R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x1E\x19\xE6W\x90b\0\x10\x8D\x90\x86\x90\x86\x90`\x04\x01b\0\x17$V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x10\xABW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x10\xD1\x91\x90b\0\x17MV[\x93\x92PPPV[`\0`\0\x80Q` b\x001\r\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16c\xD90\xA0\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x11+W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x11U\x91\x90\x81\x01\x90b\0\x14EV[`@Q` \x01b\0\x11g\x91\x90b\0\x16?V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x90\x82\x90Rc4\x80Q\xD7`\xE1\x1B\x82RF`\x04\x83\x01R\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x11\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x11\xF4\x91\x90\x81\x01\x90b\0\x14EV[`@Q` \x01b\0\x12\x06\x91\x90b\0\x16tV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x82\x82\x85`@Q` \x01b\0\x120\x93\x92\x91\x90b\0\x17xV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rc\xE2<\xD1\x9F`\xE0\x1B\x82R\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xE2<\xD1\x9F\x90b\0\r\xFD\x90\x88\x90\x85\x90`\x04\x01b\0\x17$V[a\nt\x80b\0\x17\xD2\x839\x01\x90V[a\x0E\x81\x80b\0\"F\x839\x01\x90V[`\0` \x82\x84\x03\x12\x15b\0\x12\xAAW`\0\x80\xFD[PQ\x91\x90PV[`\0[\x83\x81\x10\x15b\0\x12\xCEW\x81\x81\x01Q\x83\x82\x01R` \x01b\0\x12\xB4V[\x83\x81\x11\x15b\0\x12\xDEW`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Rb\0\x12\xFE\x81` \x86\x01` \x86\x01b\0\x12\xB1V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x82R\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90b\0\x10F\x90\x83\x01\x84b\0\x12\xE4V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`@\x80\x82R\x83Q\x90\x82\x01\x81\x90R`\0\x90` \x90``\x84\x01\x90\x82\x87\x01\x84[\x82\x81\x10\x15b\0\x13\xB0W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01b\0\x13\x89V[PPP\x83\x81\x03\x82\x85\x01R\x84Q\x80\x82R\x85\x83\x01\x91\x83\x01\x90`\0[\x81\x81\x10\x15b\0\x13\xE9W\x83Q\x15\x15\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01b\0\x13\xC9V[P\x90\x97\x96PPPPPPPV[``\x81R`\0b\0\x14\x0B``\x83\x01\x85b\0\x12\xE4V[\x82\x81\x03` \x80\x85\x01\x91\x90\x91R`\t\x82Rherc20mock`\xB8\x1B\x90\x82\x01R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16`@\x92\x83\x01RP\x01\x91\x90PV[`\0` \x82\x84\x03\x12\x15b\0\x14XW`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15b\0\x14qW`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12b\0\x14\x86W`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\0\x14\x9BWb\0\x14\x9Bb\0\x13@V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15b\0\x14\xC6Wb\0\x14\xC6b\0\x13@V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15b\0\x14\xE0W`\0\x80\xFD[b\0\x14\xF3\x83` \x83\x01` \x88\x01b\0\x12\xB1V[\x97\x96PPPPPPPV[``\x81R`\0b\0\x15\x13``\x83\x01\x85b\0\x12\xE4V[\x82\x81\x03` \x80\x85\x01\x91\x90\x91R`\x11\x82Rperc20mockstrategy`x\x1B\x90\x82\x01R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16`@\x92\x83\x01RP\x01\x91\x90PV[``\x81R`\0b\0\x15j``\x83\x01\x86b\0\x12\xE4V[\x82\x81\x03` \x84\x01Rb\0\x15~\x81\x86b\0\x12\xE4V[\x90P\x82\x81\x03`@\x84\x01Rb\0\x15\x94\x81\x85b\0\x12\xE4V[\x96\x95PPPPPPV[`\0`\xA0\x82\x01c\xFF\xFF\xFF\xFF\x86Q\x16\x83R` \x80\x87\x01Qa\xFF\xFF\x80\x82\x16\x83\x87\x01R`@\x91P\x80\x82\x8A\x01Q\x16\x82\x87\x01RPk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x88\x16``\x87\x01R`\xA0`\x80\x87\x01R\x83\x87Q\x80\x86R`\xC0\x88\x01\x91P\x84\x89\x01\x95P`\0[\x81\x81\x10\x15b\0\x16/W\x86Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x86\x01Q\x84\x16\x86\x84\x01R\x95\x85\x01\x95\x91\x84\x01\x91`\x01\x01b\0\x15\xFDV[P\x90\x9A\x99PPPPPPPPPPV[`\0\x82Qb\0\x16S\x81\x84` \x87\x01b\0\x12\xB1V[n/script/output/`\x88\x1B\x92\x01\x91\x82RP`\x0F\x01\x91\x90PV[`\0\x82Qb\0\x16\x88\x81\x84` \x87\x01b\0\x12\xB1V[`/`\xF8\x1B\x92\x01\x91\x82RP`\x01\x01\x91\x90PV[`\0\x82Qb\0\x16\xAF\x81\x84` \x87\x01b\0\x12\xB1V[d\x1759\xB7\xB7`\xD9\x1B\x92\x01\x91\x82RP`\x05\x01\x91\x90PV[`\0\x84Qb\0\x16\xDA\x81\x84` \x89\x01b\0\x12\xB1V[\x84Q\x90\x83\x01\x90b\0\x16\xF0\x81\x83` \x89\x01b\0\x12\xB1V[\x84Q\x91\x01\x90b\0\x17\x05\x81\x83` \x88\x01b\0\x12\xB1V[\x01\x95\x94PPPPPV[` \x81R`\0b\0\x10\xD1` \x83\x01\x84b\0\x12\xE4V[`@\x81R`\0b\0\x179`@\x83\x01\x85b\0\x12\xE4V[\x82\x81\x03` \x84\x01Rb\0\x10F\x81\x85b\0\x12\xE4V[`\0` \x82\x84\x03\x12\x15b\0\x17`W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x10\xD1W`\0\x80\xFD[`\0\x84Qb\0\x17\x8C\x81\x84` \x89\x01b\0\x12\xB1V[\x84Q\x90\x83\x01\x90b\0\x17\xA2\x81\x83` \x89\x01b\0\x12\xB1V[\x84Q\x91\x01\x90b\0\x17\xB7\x81\x83` \x88\x01b\0\x12\xB1V[d\x1759\xB7\xB7`\xD9\x1B\x91\x01\x90\x81R`\x05\x01\x95\x94PPPPPV\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Q\x80`@\x01`@R\x80`\n\x81R` \x01i&\xB7\xB1\xB5\x90*7\xB5\xB2\xB7`\xB1\x1B\x81RP`@Q\x80`@\x01`@R\x80`\x03\x81R` \x01bMCK`\xE8\x1B\x81RP\x81`\x03\x90\x80Q\x90` \x01\x90a\0f\x92\x91\x90a\0\x82V[P\x80Qa\0z\x90`\x04\x90` \x84\x01\x90a\0\x82V[PPPa\x01VV[\x82\x80Ta\0\x8E\x90a\x01\x1BV[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82a\0\xB0W`\0\x85Ua\0\xF6V[\x82`\x1F\x10a\0\xC9W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ua\0\xF6V[\x82\x80\x01`\x01\x01\x85U\x82\x15a\0\xF6W\x91\x82\x01[\x82\x81\x11\x15a\0\xF6W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90a\0\xDBV[Pa\x01\x02\x92\x91Pa\x01\x06V[P\x90V[[\x80\x82\x11\x15a\x01\x02W`\0\x81U`\x01\x01a\x01\x07V[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x01/W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x01PWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[a\t\x0F\x80a\x01e`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xB4W`\x005`\xE0\x1C\x80c@\xC1\x0F\x19\x11a\0qW\x80c@\xC1\x0F\x19\x14a\x01AW\x80cp\xA0\x821\x14a\x01VW\x80c\x95\xD8\x9BA\x14a\x01\x7FW\x80c\xA4W\xC2\xD7\x14a\x01\x87W\x80c\xA9\x05\x9C\xBB\x14a\x01\x9AW\x80c\xDDb\xED>\x14a\x01\xADW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xB9W\x80c\t^\xA7\xB3\x14a\0\xD7W\x80c\x18\x16\r\xDD\x14a\0\xFAW\x80c#\xB8r\xDD\x14a\x01\x0CW\x80c1<\xE5g\x14a\x01\x1FW\x80c9P\x93Q\x14a\x01.W[`\0\x80\xFD[a\0\xC1a\x01\xC0V[`@Qa\0\xCE\x91\x90a\x07LV[`@Q\x80\x91\x03\x90\xF3[a\0\xEAa\0\xE56`\x04a\x07\xBDV[a\x02RV[`@Q\x90\x15\x15\x81R` \x01a\0\xCEV[`\x02T[`@Q\x90\x81R` \x01a\0\xCEV[a\0\xEAa\x01\x1A6`\x04a\x07\xE7V[a\x02jV[`@Q`\x12\x81R` \x01a\0\xCEV[a\0\xEAa\x01<6`\x04a\x07\xBDV[a\x02wV[a\x01Ta\x01O6`\x04a\x07\xBDV[a\x02\x99V[\0[a\0\xFEa\x01d6`\x04a\x08#V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\0\xC1a\x02\xA7V[a\0\xEAa\x01\x956`\x04a\x07\xBDV[a\x02\xB6V[a\0\xEAa\x01\xA86`\x04a\x07\xBDV[a\x03AV[a\0\xFEa\x01\xBB6`\x04a\x08EV[a\x03OV[```\x03\x80Ta\x01\xCF\x90a\x08xV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01\xFB\x90a\x08xV[\x80\x15a\x02HW\x80`\x1F\x10a\x02\x1DWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02HV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02+W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02`\x81\x85\x85a\x03zV[P`\x01\x93\x92PPPV[`\0a\x02`\x84\x84\x84a\x04\x9EV[`\x003a\x02`\x81\x85\x85a\x02\x8A\x83\x83a\x03OV[a\x02\x94\x91\x90a\x08\xB3V[a\x03zV[a\x02\xA3\x82\x82a\x06mV[PPV[```\x04\x80Ta\x01\xCF\x90a\x08xV[`\x003\x81a\x02\xC4\x82\x86a\x03OV[\x90P\x83\x81\x10\x15a\x03)W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: decreased allowance below`D\x82\x01Rd zero`\xD8\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x036\x82\x86\x86\x84\x03a\x03zV[P`\x01\x94\x93PPPPV[`\x003a\x02`\x81\x85\x85a\x04\x9EV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x03\xDCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FERC20: approve from the zero add`D\x82\x01Rcress`\xE0\x1B`d\x82\x01R`\x84\x01a\x03 V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x04=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: approve to the zero addre`D\x82\x01Rass`\xF0\x1B`d\x82\x01R`\x84\x01a\x03 V[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x81\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x87\x16\x80\x84R\x94\x82R\x91\x82\x90 \x85\x90U\x90Q\x84\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x05\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: transfer from the zero ad`D\x82\x01Rddress`\xD8\x1B`d\x82\x01R`\x84\x01a\x03 V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x05dW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7FERC20: transfer to the zero addr`D\x82\x01Rbess`\xE8\x1B`d\x82\x01R`\x84\x01a\x03 V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x05\xDCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC20: transfer amount exceeds b`D\x82\x01Realance`\xD0\x1B`d\x82\x01R`\x84\x01a\x03 V[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R` \x81\x90R`@\x80\x82 \x85\x85\x03\x90U\x91\x85\x16\x81R\x90\x81 \x80T\x84\x92\x90a\x06\x13\x90\x84\x90a\x08\xB3V[\x92PP\x81\x90UP\x82`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x84`@Qa\x06_\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x06\xC3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FERC20: mint to the zero address\0`D\x82\x01R`d\x01a\x03 V[\x80`\x02`\0\x82\x82Ta\x06\xD5\x91\x90a\x08\xB3V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x83\x92\x90a\x07\x02\x90\x84\x90a\x08\xB3V[\x90\x91UPP`@Q\x81\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90`\0\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90` \x01`@Q\x80\x91\x03\x90\xA3PPV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x07yW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x07]V[\x81\x81\x11\x15a\x07\x8BW`\0`@\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\xB8W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x07\xD0W`\0\x80\xFD[a\x07\xD9\x83a\x07\xA1V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x07\xFCW`\0\x80\xFD[a\x08\x05\x84a\x07\xA1V[\x92Pa\x08\x13` \x85\x01a\x07\xA1V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x085W`\0\x80\xFD[a\x08>\x82a\x07\xA1V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x08XW`\0\x80\xFD[a\x08a\x83a\x07\xA1V[\x91Pa\x08o` \x84\x01a\x07\xA1V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x08\x8CW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x08\xADWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0\x82\x19\x82\x11\x15a\x08\xD4WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P\x01\x90V\xFE\xA2dipfsX\"\x12 \xCD\xD5\xDA\xCF\x892\x07:<\xAF\xFCr\xE8M\x1B\xC1\xB5\xBDa\x910 v\xCC75\xA9 \xA3\xCAP]8+\xBC`\0\x1Bb\0\x03\xDE` \x1Bb\0\x02\x08\x17` \x1CV[```\x01`\x01`\xA0\x1B\x03\x84\x16;b\0\x03bW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FAddress: delegate call to non-co`D\x82\x01Re\x1B\x9D\x1C\x98X\xDD`\xD2\x1B`d\x82\x01R`\x84\x01b\0\x01\xF1V[`\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qb\0\x03\x7F\x91\x90b\0\x05pV[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14b\0\x03\xBCW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x03\xC1V[``\x91P[P\x90\x92P\x90Pb\0\x03\xD4\x82\x82\x86b\0\x03\xF0V[\x96\x95PPPPPPV[\x90V[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[``\x83\x15b\0\x04\x01WP\x81b\0\x01OV[\x82Q\x15b\0\x04\x12W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01b\0\x01\xF1\x91\x90b\0\x05\x8EV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x04FW`\0\x80\xFD[\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15b\0\x04~W\x81\x81\x01Q\x83\x82\x01R` \x01b\0\x04dV[\x83\x81\x11\x15b\0\0\x83WPP`\0\x91\x01RV[`\0\x80`\0``\x84\x86\x03\x12\x15b\0\x04\xA6W`\0\x80\xFD[b\0\x04\xB1\x84b\0\x04.V[\x92Pb\0\x04\xC1` \x85\x01b\0\x04.V[`@\x85\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x04\xDFW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12b\0\x04\xF4W`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\0\x05\tWb\0\x05\tb\0\x04KV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15b\0\x054Wb\0\x054b\0\x04KV[\x81`@R\x82\x81R\x89` \x84\x87\x01\x01\x11\x15b\0\x05NW`\0\x80\xFD[b\0\x05a\x83` \x83\x01` \x88\x01b\0\x04aV[\x80\x95PPPPPP\x92P\x92P\x92V[`\0\x82Qb\0\x05\x84\x81\x84` \x87\x01b\0\x04aV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Rb\0\x05\xAF\x81`@\x85\x01` \x87\x01b\0\x04aV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[a\x08g\x80b\0\x05\xD3`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\0NW`\x005`\xE0\x1C\x80c6Y\xCF\xE6\x14a\0eW\x80cO\x1E\xF2\x86\x14a\0\x85W\x80c\\`\xDA\x1B\x14a\0\x98W\x80c\x8F(9p\x14a\0\xC9W\x80c\xF8Q\xA4@\x14a\0\xE9Wa\0]V[6a\0]Wa\0[a\0\xFEV[\0[a\0[a\0\xFEV[4\x80\x15a\0qW`\0\x80\xFD[Pa\0[a\0\x806`\x04a\x06\xF1V[a\x01\x18V[a\0[a\0\x936`\x04a\x07\x0CV[a\x01_V[4\x80\x15a\0\xA4W`\0\x80\xFD[Pa\0\xADa\x01\xD0V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xD5W`\0\x80\xFD[Pa\0[a\0\xE46`\x04a\x06\xF1V[a\x02\x0BV[4\x80\x15a\0\xF5W`\0\x80\xFD[Pa\0\xADa\x025V[a\x01\x06a\x02\x9BV[a\x01\x16a\x01\x11a\x03:V[a\x03DV[V[a\x01 a\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x01WWa\x01T\x81`@Q\x80` \x01`@R\x80`\0\x81RP`\0a\x03\x9BV[PV[a\x01Ta\0\xFEV[a\x01ga\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x01\xC8Wa\x01\xC3\x83\x83\x83\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RP`\x01\x92Pa\x03\x9B\x91PPV[PPPV[a\x01\xC3a\0\xFEV[`\0a\x01\xDAa\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x02\0Wa\x01\xFBa\x03:V[\x90P\x90V[a\x02\x08a\0\xFEV[\x90V[a\x02\x13a\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x01WWa\x01T\x81a\x03\xC6V[`\0a\x02?a\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x02\0Wa\x01\xFBa\x03hV[``a\x02\x85\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x08\x0B`'\x919a\x04\x1AV[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[a\x02\xA3a\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x01\x16W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R\x7FTransparentUpgradeableProxy: adm`D\x82\x01R\x7Fin cannot fallback to proxy targ`d\x82\x01Ra\x19]`\xF2\x1B`\x84\x82\x01R`\xA4\x01[`@Q\x80\x91\x03\x90\xFD[`\0a\x01\xFBa\x04\xF7V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15a\x03cW=`\0\xF3[=`\0\xFD[`\0\x7F\xB51'hJV\x8B1s\xAE\x13\xB9\xF8\xA6\x01n$>c\xB6\xE8\xEE\x11x\xD6\xA7\x17\x85\x0B]a\x03[T`\x01`\x01`\xA0\x1B\x03\x16\x91\x90PV[a\x03\xA4\x83a\x05\x1FV[`\0\x82Q\x11\x80a\x03\xB1WP\x80[\x15a\x01\xC3Wa\x03\xC0\x83\x83a\x02`V[PPPPV[\x7F~dMyB/\x17\xC0\x1EH\x94\xB5\xF4\xF5\x88\xD31\xEB\xFA(e=B\xAE\x83-\xC5\x9E8\xC9y\x8Fa\x03\xEFa\x03hV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x84\x16` \x83\x01R\x01`@Q\x80\x91\x03\x90\xA1a\x01T\x81a\x05_V[```\x01`\x01`\xA0\x1B\x03\x84\x16;a\x04\x82W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FAddress: delegate call to non-co`D\x82\x01Re\x1B\x9D\x1C\x98X\xDD`\xD2\x1B`d\x82\x01R`\x84\x01a\x031V[`\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x04\x9D\x91\x90a\x07\xBBV[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x04\xD8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x04\xDDV[``\x91P[P\x91P\x91Pa\x04\xED\x82\x82\x86a\x06\x08V[\x96\x95PPPPPPV[`\0\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x03\x8CV[a\x05(\x81a\x06AV[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90`\0\x90\xA2PV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xC4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC1967: new admin is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x031V[\x80\x7F\xB51'hJV\x8B1s\xAE\x13\xB9\xF8\xA6\x01n$>c\xB6\xE8\xEE\x11x\xD6\xA7\x17\x85\x0B]a\x03[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UPV[``\x83\x15a\x06\x17WP\x81a\x02\x85V[\x82Q\x15a\x06'W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x031\x91\x90a\x07\xD7V[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x06\xAEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FERC1967: new implementation is n`D\x82\x01Rl\x1B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x9A\x1B`d\x82\x01R`\x84\x01a\x031V[\x80\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x05\xE7V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x06\xECW`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x07\x03W`\0\x80\xFD[a\x02\x85\x82a\x06\xD5V[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x07!W`\0\x80\xFD[a\x07*\x84a\x06\xD5V[\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x07GW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x07[W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x07jW`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x07|W`\0\x80\xFD[` \x83\x01\x94P\x80\x93PPPP\x92P\x92P\x92V[`\0[\x83\x81\x10\x15a\x07\xAAW\x81\x81\x01Q\x83\x82\x01R` \x01a\x07\x92V[\x83\x81\x11\x15a\x03\xC0WPP`\0\x91\x01RV[`\0\x82Qa\x07\xCD\x81\x84` \x87\x01a\x07\x8FV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x07\xF6\x81`@\x85\x01` \x87\x01a\x07\x8FV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 t \xB9\xD3\xA1z\x9BK\x12yH*\xEAb\x85[8\xB1\xF3\xC3he\xE17\x12\xF5c/:H\x7F7dsolcC\0\x08\x0C\x003\xB51'hJV\x8B1s\xAE\x13\xB9\xF8\xA6\x01n$>c\xB6\xE8\xEE\x11x\xD6\xA7\x17\x85\x0B]a\x03Address: low-level delegate call failed.addresses.baseStrategyImplementation.addresses.operatorStateRetriever\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-token_and_strategy_deployment_output\xA2dipfsX\"\x12 \r\xBE\x01a8\xA8\xDD-/\xCF-\x0C\xEFs8\xEF\x81\xFA3\xF7/\xCB\x95\x0FJfn\x05\x9C\xC8\x9E\x9EdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x60806040523480156200001157600080fd5b50600436106200003a5760003560e01c8063c0406226146200003f578063f8ccbf47146200004b575b600080fd5b6200004962000073565b005b600c546200005f9062010000900460ff1681565b604051901515815260200160405180910390f35b735fbdb2315678afecb367f032d93f642f64180aa36000620000946200036c565b90506000620000a2620005fa565b90506000806000805160206200310d83398151915260001c6001600160a01b0316637fb5297f6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620000f557600080fd5b505af11580156200010a573d6000803e3d6000fd5b5050505060006000805160206200310d83398151915260001c6001600160a01b03166342cbb15c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000161573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000187919062001297565b905046617a6914806200019b575046610539145b156200025257620001bf856000015186602001518760e001518860400151620008b6565b60408051630fe7858560e31b81526004810191909152601160448201527065726332304d6f636b537472617465677960781b60648201526001600160a01b038083166024830152919550919350871690637f3c2c2890608401600060405180830381600087803b1580156200023357600080fd5b505af115801562000248573d6000803e3d6000fd5b50505050620002ed565b4661426814156200029157735c8b55722f421556a2aafb7a3ea63d4c3e5143129250733f1c547b21f65e10480de3ad8e19faac46c950349150620002ed565b60405162461bcd60e51b815260206004820152602660248201527f436f6e66696775726520546f6b656e20616e6420537472617465677920666f726044820152651021b430b4b760d11b60648201526084015b60405180910390fd5b620002fd84602001518462000d16565b6000805160206200310d83398151915260001c6001600160a01b03166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200034b57600080fd5b505af115801562000360573d6000803e3d6000fd5b50505050505050505050565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091526000620003ef6040518060400160405280601c81526020017f656967656e6c617965725f6465706c6f796d656e745f6f75747075740000000081525062000e38565b9050600062000434826040518060400160405280601f81526020017f2e6164647265737365732e656967656e4c6179657250726f787941646d696e008152506200104f565b9050600062000479836040518060400160405280601e81526020017f2e6164647265737365732e656967656e4c6179657250617573657252656700008152506200104f565b90506000620004be846040518060400160405280601a81526020017f2e6164647265737365732e73747261746567794d616e616765720000000000008152506200104f565b90506000620004fb85604051806040016040528060158152602001741730b2323932b9b9b2b9973232b632b3b0ba34b7b760591b8152506200104f565b9050600062000540866040518060400160405280601781526020017f2e6164647265737365732e6176734469726563746f72790000000000000000008152506200104f565b905060006200057a87604051806040016040528060128152602001711730b2323932b9b9b2b99739b630b9b432b960711b8152506200104f565b90506000620005a388604051806060016040528060258152602001620030c7602591396200104f565b60408051610100810182526001600160a01b03998a1681529789166020890152958816958701959095525091851660608501529084166080840152831660a0830152600060c083015290911660e082015292915050565b60408051606081018252600080825260208201819052918101919091526000620006596040518060400160405280601981526020017f6d6f636b6176735f6465706c6f796d656e745f6f75747075740000000000000081525062000e38565b905060006200069e826040518060400160405280602081526020017f2e6164647265737365732e6d6f636b417673536572766963654d616e616765728152506200104f565b90506001600160a01b0381166200071e5760405162461bcd60e51b815260206004820152603a60248201527f4d6f636b417673436f6e7472616374735061727365723a206d6f636b4176735360448201527f6572766963654d616e61676572206164647265737320697320300000000000006064820152608401620002e4565b600062000761836040518060400160405280601e81526020017f2e6164647265737365732e7265676973747279436f6f7264696e61746f7200008152506200104f565b90506001600160a01b038116620007e15760405162461bcd60e51b815260206004820152603860248201527f4d6f636b417673436f6e7472616374735061727365723a20726567697374727960448201527f436f6f7264696e61746f722061646472657373206973203000000000000000006064820152608401620002e4565b60006200080884604051806060016040528060218152602001620030ec602191396200104f565b90506001600160a01b038116620008885760405162461bcd60e51b815260206004820152603b60248201527f4d6f636b417673436f6e7472616374735061727365723a206f70657261746f7260448201527f53746174655265747269657665722061646472657373206973203000000000006064820152608401620002e4565b604080516060810182526001600160a01b039485168152928416602084015292169181019190915292915050565b6000806000604051620008c9906200127b565b604051809103906000f080158015620008e6573d6000803e3d6000fd5b50600d546040516340c10f1960e01b815232600482015260248101919091529091506001600160a01b038216906340c10f1990604401600060405180830381600087803b1580156200093757600080fd5b505af11580156200094c573d6000803e3d6000fd5b505060408051683635c9adc5dea000006024820181905260448201526001600160a01b0385811660648301528a166084808301919091528251808303909101815260a490910182526020810180516001600160e01b031663019e272960e01b1790529051600093508892508a9190620009c59062001289565b620009d39392919062001312565b604051809103906000f080158015620009f0573d6000803e3d6000fd5b506040805160018082528183019092529192506000919060208083019080368337019050509050818160008151811062000a2e5762000a2e62001356565b6001600160a01b03929092166020928302919091019091015260408051600180825281830190925260009181602001602082028036833701905050905060008160008151811062000a835762000a8362001356565b9115156020928302919091019091015260405163df5b354760e01b81526001600160a01b0388169063df5b35479062000ac390859085906004016200136c565b600060405180830381600087803b15801562000ade57600080fd5b505af115801562000af3573d6000803e3d6000fd5b5050604080518082018252600d81526c1c185c995b9d081bd89a9958dd609a1b60208083019190915282518084018452600981526861646472657373657360b81b918101919091529151634b96303160e11b8152909350909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063972c60629062000b7b9084908a90600401620013f6565b6000604051808303816000875af115801562000b9b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000bc5919081019062001445565b50604051634b96303160e11b8152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063972c60629062000c049085908a90600401620014fe565b6000604051808303816000875af115801562000c24573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000c4e919081019062001445565b6040516388da6d3560e01b8152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d906388da6d359062000c919087908790879060040162001555565b6000604051808303816000875af115801562000cb1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000cdb919081019062001445565b905062000d02816040518060600160405280602481526020016200312d60249139620010d8565b50959c949b50939950505050505050505050565b604080516060810182526127108152613a9860208201526064818301528151600180825281840190935290916000918291816020015b604080518082019091526000808252602082015281526020019060019003908162000d4c5790505090506040518060400160405280856001600160a01b03168152602001670de0b6b3a76400006bffffffffffffffffffffffff168152508160008151811062000dc05762000dc062001356565b6020908102919091010152604051631aeb699160e31b81526001600160a01b0386169063d75b4c889062000dfd908690869086906004016200159e565b600060405180830381600087803b15801562000e1857600080fd5b505af115801562000e2d573d6000803e3d6000fd5b505050505050505050565b606060006000805160206200310d83398151915260001c6001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000e8d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000eb7919081019062001445565b60405160200162000ec991906200163f565b60408051808303601f190181529082905263348051d760e11b82524660048301529150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801562000f2c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000f56919081019062001445565b60405160200162000f68919062001674565b604051602081830303815290604052905060008460405160200162000f8e91906200169b565b60408051601f19818403018152908290529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906360f9bb119062000fd190869086908690602001620016c6565b6040516020818303038152906040526040518263ffffffff1660e01b815260040162000ffe91906200170f565b600060405180830381865afa1580156200101c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001046919081019062001445565b95945050505050565b604051631e19e65760e01b8152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90631e19e657906200108d908690869060040162001724565b602060405180830381865afa158015620010ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010d191906200174d565b9392505050565b60006000805160206200310d83398151915260001c6001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156200112b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001155919081019062001445565b6040516020016200116791906200163f565b60408051808303601f190181529082905263348051d760e11b82524660048301529150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015620011ca573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620011f4919081019062001445565b60405160200162001206919062001674565b60405160208183030381529060405290506000828285604051602001620012309392919062001778565b60408051601f198184030181529082905263e23cd19f60e01b82529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e23cd19f9062000dfd908890859060040162001724565b610a7480620017d283390190565b610e81806200224683390190565b600060208284031215620012aa57600080fd5b5051919050565b60005b83811015620012ce578181015183820152602001620012b4565b83811115620012de576000848401525b50505050565b60008151808452620012fe816020860160208601620012b1565b601f01601f19169290920160200192915050565b6001600160a01b038481168252831660208201526060604082018190526000906200104690830184620012e4565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b82811015620013b05781516001600160a01b03168452928401929084019060010162001389565b5050508381038285015284518082528583019183019060005b81811015620013e9578351151583529284019291840191600101620013c9565b5090979650505050505050565b6060815260006200140b6060830185620012e4565b828103602080850191909152600982526865726332306d6f636b60b81b908201526001600160a01b03939093166040928301525001919050565b6000602082840312156200145857600080fd5b815167ffffffffffffffff808211156200147157600080fd5b818401915084601f8301126200148657600080fd5b8151818111156200149b576200149b62001340565b604051601f8201601f19908116603f01168101908382118183101715620014c657620014c662001340565b81604052828152876020848701011115620014e057600080fd5b620014f3836020830160208801620012b1565b979650505050505050565b606081526000620015136060830185620012e4565b828103602080850191909152601182527065726332306d6f636b737472617465677960781b908201526001600160a01b03939093166040928301525001919050565b6060815260006200156a6060830186620012e4565b82810360208401526200157e8186620012e4565b90508281036040840152620015948185620012e4565b9695505050505050565b600060a0820163ffffffff865116835260208087015161ffff808216838701526040915080828a01511682870152506bffffffffffffffffffffffff808816606087015260a0608087015283875180865260c088019150848901955060005b818110156200162f57865180516001600160a01b031684528601518416868401529585019591840191600101620015fd565b50909a9950505050505050505050565b6000825162001653818460208701620012b1565b6e2f7363726970742f6f75747075742f60881b920191825250600f01919050565b6000825162001688818460208701620012b1565b602f60f81b920191825250600101919050565b60008251620016af818460208701620012b1565b64173539b7b760d91b920191825250600501919050565b60008451620016da818460208901620012b1565b845190830190620016f0818360208901620012b1565b845191019062001705818360208801620012b1565b0195945050505050565b602081526000620010d16020830184620012e4565b604081526000620017396040830185620012e4565b8281036020840152620010468185620012e4565b6000602082840312156200176057600080fd5b81516001600160a01b0381168114620010d157600080fd5b600084516200178c818460208901620012b1565b845190830190620017a2818360208901620012b1565b8451910190620017b7818360208801620012b1565b64173539b7b760d91b91019081526005019594505050505056fe608060405234801561001057600080fd5b506040518060400160405280600a81526020016926b7b1b5902a37b5b2b760b11b815250604051806040016040528060038152602001624d434b60e81b8152508160039080519060200190610066929190610082565b50805161007a906004906020840190610082565b505050610156565b82805461008e9061011b565b90600052602060002090601f0160209004810192826100b057600085556100f6565b82601f106100c957805160ff19168380011785556100f6565b828001600101855582156100f6579182015b828111156100f65782518255916020019190600101906100db565b50610102929150610106565b5090565b5b808211156101025760008155600101610107565b600181811c9082168061012f57607f821691505b6020821081141561015057634e487b7160e01b600052602260045260246000fd5b50919050565b61090f806101656000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806340c10f191161007157806340c10f191461014157806370a082311461015657806395d89b411461017f578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce919061074c565b60405180910390f35b6100ea6100e53660046107bd565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a3660046107e7565b61026a565b604051601281526020016100ce565b6100ea61013c3660046107bd565b610277565b61015461014f3660046107bd565b610299565b005b6100fe610164366004610823565b6001600160a01b031660009081526020819052604090205490565b6100c16102a7565b6100ea6101953660046107bd565b6102b6565b6100ea6101a83660046107bd565b610341565b6100fe6101bb366004610845565b61034f565b6060600380546101cf90610878565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb90610878565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b60003361026081858561037a565b5060019392505050565b600061026084848461049e565b60003361026081858561028a838361034f565b61029491906108b3565b61037a565b6102a3828261066d565b5050565b6060600480546101cf90610878565b600033816102c4828661034f565b9050838110156103295760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b610336828686840361037a565b506001949350505050565b60003361026081858561049e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103dc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610320565b6001600160a01b03821661043d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610320565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166105025760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610320565b6001600160a01b0382166105645760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610320565b6001600160a01b038316600090815260208190526040902054818110156105dc5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610320565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106139084906108b3565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161065f91815260200190565b60405180910390a350505050565b6001600160a01b0382166106c35760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610320565b80600260008282546106d591906108b3565b90915550506001600160a01b038216600090815260208190526040812080548392906107029084906108b3565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600060208083528351808285015260005b818110156107795785810183015185820160400152820161075d565b8181111561078b576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146107b857600080fd5b919050565b600080604083850312156107d057600080fd5b6107d9836107a1565b946020939093013593505050565b6000806000606084860312156107fc57600080fd5b610805846107a1565b9250610813602085016107a1565b9150604084013590509250925092565b60006020828403121561083557600080fd5b61083e826107a1565b9392505050565b6000806040838503121561085857600080fd5b610861836107a1565b915061086f602084016107a1565b90509250929050565b600181811c9082168061088c57607f821691505b602082108114156108ad57634e487b7160e01b600052602260045260246000fd5b50919050565b600082198211156108d457634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220cdd5dacf8932073a3caffc72e84d1bc1b5bd6191303c553cc00319f525760ef364736f6c634300080c0033608060405260405162000e8138038062000e81833981016040819052620000269162000490565b828162000036828260006200004d565b50620000449050826200008a565b505050620005c3565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e5a60279139620002f8565b9392505050565b60006200018060008051602062000e3a83398151915260001b620003de60201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e3a83398151915260001b620003de60201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200028c1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620002081760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000570565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f191906200058e565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b83811115620000835750506000910152565b600080600060608486031215620004a657600080fd5b620004b1846200042e565b9250620004c1602085016200042e565b60408501519092506001600160401b0380821115620004df57600080fd5b818601915086601f830112620004f457600080fd5b8151818111156200050957620005096200044b565b604051601f8201601f19908116603f011681019083821181831017156200053457620005346200044b565b816040528281528960208487010111156200054e57600080fd5b6200056183602083016020880162000461565b80955050505050509250925092565b600082516200058481846020870162000461565b9190910192915050565b6020815260008251806020840152620005af81604085016020870162000461565b601f01601f19169190910160400192915050565b61086780620005d36000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212207420b9d3a17a9b4b1279482aea62855b38b1f3c36865e13712f5632f3a487f3764736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65642e6164647265737365732e626173655374726174656779496d706c656d656e746174696f6e2e6164647265737365732e6f70657261746f725374617465526574726965766572885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d746f6b656e5f616e645f73747261746567795f6465706c6f796d656e745f6f7574707574a26469706673582212200dbe016138a8dd2d2fcf2d0cef7338ef81fa33f72fcb950f4a666e059cc89e9e64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`\x046\x10b\0\0:W`\x005`\xE0\x1C\x80c\xC0@b&\x14b\0\0?W\x80c\xF8\xCC\xBFG\x14b\0\0KW[`\0\x80\xFD[b\0\0Ib\0\0sV[\0[`\x0CTb\0\0_\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3[s_\xBD\xB21Vx\xAF\xEC\xB3g\xF02\xD9?d/d\x18\n\xA3`\0b\0\0\x94b\0\x03lV[\x90P`\0b\0\0\xA2b\0\x05\xFAV[\x90P`\0\x80`\0\x80Q` b\x001\r\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\0\xF5W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x01\nW=`\0\x80>=`\0\xFD[PPPP`\0`\0\x80Q` b\x001\r\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cB\xCB\xB1\\`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x01aW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01\x87\x91\x90b\0\x12\x97V[\x90PFazi\x14\x80b\0\x01\x9BWPFa\x059\x14[\x15b\0\x02RWb\0\x01\xBF\x85`\0\x01Q\x86` \x01Q\x87`\xE0\x01Q\x88`@\x01Qb\0\x08\xB6V[`@\x80Qc\x0F\xE7\x85\x85`\xE3\x1B\x81R`\x04\x81\x01\x91\x90\x91R`\x11`D\x82\x01Rperc20MockStrategy`x\x1B`d\x82\x01R`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`$\x83\x01R\x91\x95P\x91\x93P\x87\x16\x90c\x7F<,(\x90`\x84\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x023W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x02HW=`\0\x80>=`\0\xFD[PPPPb\0\x02\xEDV[FaBh\x14\x15b\0\x02\x91Ws\\\x8BUr/B\x15V\xA2\xAA\xFBz>\xA6=L>QC\x12\x92Ps?\x1CT{!\xF6^\x10H\r\xE3\xAD\x8E\x19\xFA\xACF\xC9P4\x91Pb\0\x02\xEDV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FConfigure Token and Strategy for`D\x82\x01Re\x10!\xB40\xB4\xB7`\xD1\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[b\0\x02\xFD\x84` \x01Q\x84b\0\r\x16V[`\0\x80Q` b\x001\r\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x03KW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x03`W=`\0\x80>=`\0\xFD[PPPPPPPPPPV[`@\x80Qa\x01\0\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x82\x90R`\x80\x81\x01\x82\x90R`\xA0\x81\x01\x82\x90R`\xC0\x81\x01\x82\x90R`\xE0\x81\x01\x91\x90\x91R`\0b\0\x03\xEF`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7Feigenlayer_deployment_output\0\0\0\0\x81RPb\0\x0E8V[\x90P`\0b\0\x044\x82`@Q\x80`@\x01`@R\x80`\x1F\x81R` \x01\x7F.addresses.eigenLayerProxyAdmin\0\x81RPb\0\x10OV[\x90P`\0b\0\x04y\x83`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7F.addresses.eigenLayerPauserReg\0\0\x81RPb\0\x10OV[\x90P`\0b\0\x04\xBE\x84`@Q\x80`@\x01`@R\x80`\x1A\x81R` \x01\x7F.addresses.strategyManager\0\0\0\0\0\0\x81RPb\0\x10OV[\x90P`\0b\0\x04\xFB\x85`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01t\x170\xB2292\xB9\xB9\xB2\xB9\x9722\xB62\xB3\xB0\xBA4\xB7\xB7`Y\x1B\x81RPb\0\x10OV[\x90P`\0b\0\x05@\x86`@Q\x80`@\x01`@R\x80`\x17\x81R` \x01\x7F.addresses.avsDirectory\0\0\0\0\0\0\0\0\0\x81RPb\0\x10OV[\x90P`\0b\0\x05z\x87`@Q\x80`@\x01`@R\x80`\x12\x81R` \x01q\x170\xB2292\xB9\xB9\xB2\xB9\x979\xB60\xB9\xB42\xB9`q\x1B\x81RPb\0\x10OV[\x90P`\0b\0\x05\xA3\x88`@Q\x80``\x01`@R\x80`%\x81R` \x01b\x000\xC7`%\x919b\0\x10OV[`@\x80Qa\x01\0\x81\x01\x82R`\x01`\x01`\xA0\x1B\x03\x99\x8A\x16\x81R\x97\x89\x16` \x89\x01R\x95\x88\x16\x95\x87\x01\x95\x90\x95RP\x91\x85\x16``\x85\x01R\x90\x84\x16`\x80\x84\x01R\x83\x16`\xA0\x83\x01R`\0`\xC0\x83\x01R\x90\x91\x16`\xE0\x82\x01R\x92\x91PPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`\0b\0\x06Y`@Q\x80`@\x01`@R\x80`\x19\x81R` \x01\x7Fmockavs_deployment_output\0\0\0\0\0\0\0\x81RPb\0\x0E8V[\x90P`\0b\0\x06\x9E\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7F.addresses.mockAvsServiceManager\x81RPb\0\x10OV[\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16b\0\x07\x1EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FMockAvsContractsParser: mockAvsS`D\x82\x01R\x7FerviceManager address is 0\0\0\0\0\0\0`d\x82\x01R`\x84\x01b\0\x02\xE4V[`\0b\0\x07a\x83`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7F.addresses.registryCoordinator\0\0\x81RPb\0\x10OV[\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16b\0\x07\xE1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FMockAvsContractsParser: registry`D\x82\x01R\x7FCoordinator address is 0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01b\0\x02\xE4V[`\0b\0\x08\x08\x84`@Q\x80``\x01`@R\x80`!\x81R` \x01b\x000\xEC`!\x919b\0\x10OV[\x90P`\x01`\x01`\xA0\x1B\x03\x81\x16b\0\x08\x88W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`;`$\x82\x01R\x7FMockAvsContractsParser: operator`D\x82\x01R\x7FStateRetriever address is 0\0\0\0\0\0`d\x82\x01R`\x84\x01b\0\x02\xE4V[`@\x80Q``\x81\x01\x82R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16\x91\x81\x01\x91\x90\x91R\x92\x91PPV[`\0\x80`\0`@Qb\0\x08\xC9\x90b\0\x12{V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\x08\xE6W=`\0\x80>=`\0\xFD[P`\rT`@Qc@\xC1\x0F\x19`\xE0\x1B\x81R2`\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c@\xC1\x0F\x19\x90`D\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\t7W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\tLW=`\0\x80>=`\0\xFD[PP`@\x80Qh65\xC9\xAD\xC5\xDE\xA0\0\0`$\x82\x01\x81\x90R`D\x82\x01R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`d\x83\x01R\x8A\x16`\x84\x80\x83\x01\x91\x90\x91R\x82Q\x80\x83\x03\x90\x91\x01\x81R`\xA4\x90\x91\x01\x82R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\x01\x9E')`\xE0\x1B\x17\x90R\x90Q`\0\x93P\x88\x92P\x8A\x91\x90b\0\t\xC5\x90b\0\x12\x89V[b\0\t\xD3\x93\x92\x91\x90b\0\x13\x12V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15b\0\t\xF0W=`\0\x80>=`\0\xFD[P`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x91\x92P`\0\x91\x90` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P\x81\x81`\0\x81Q\x81\x10b\0\n.Wb\0\n.b\0\x13VV[`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01` \x82\x02\x806\x837\x01\x90PP\x90P`\0\x81`\0\x81Q\x81\x10b\0\n\x83Wb\0\n\x83b\0\x13VV[\x91\x15\x15` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`@Qc\xDF[5G`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x88\x16\x90c\xDF[5G\x90b\0\n\xC3\x90\x85\x90\x85\x90`\x04\x01b\0\x13lV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\n\xDEW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\n\xF3W=`\0\x80>=`\0\xFD[PP`@\x80Q\x80\x82\x01\x82R`\r\x81Rl\x1C\x18\\\x99[\x9D\x08\x1B\xD8\x9A\x99X\xDD`\x9A\x1B` \x80\x83\x01\x91\x90\x91R\x82Q\x80\x84\x01\x84R`\t\x81Rhaddresses`\xB8\x1B\x91\x81\x01\x91\x90\x91R\x91QcK\x9601`\xE1\x1B\x81R\x90\x93P\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x97,`b\x90b\0\x0B{\x90\x84\x90\x8A\x90`\x04\x01b\0\x13\xF6V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x0B\x9BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x0B\xC5\x91\x90\x81\x01\x90b\0\x14EV[P`@QcK\x9601`\xE1\x1B\x81R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x97,`b\x90b\0\x0C\x04\x90\x85\x90\x8A\x90`\x04\x01b\0\x14\xFEV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x0C$W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x0CN\x91\x90\x81\x01\x90b\0\x14EV[`@Qc\x88\xDAm5`\xE0\x1B\x81R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x88\xDAm5\x90b\0\x0C\x91\x90\x87\x90\x87\x90\x87\x90`\x04\x01b\0\x15UV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15b\0\x0C\xB1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x0C\xDB\x91\x90\x81\x01\x90b\0\x14EV[\x90Pb\0\r\x02\x81`@Q\x80``\x01`@R\x80`$\x81R` \x01b\x001-`$\x919b\0\x10\xD8V[P\x95\x9C\x94\x9BP\x93\x99PPPPPPPPPPV[`@\x80Q``\x81\x01\x82Ra'\x10\x81Ra:\x98` \x82\x01R`d\x81\x83\x01R\x81Q`\x01\x80\x82R\x81\x84\x01\x90\x93R\x90\x91`\0\x91\x82\x91\x81` \x01[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\rLW\x90PP\x90P`@Q\x80`@\x01`@R\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01g\r\xE0\xB6\xB3\xA7d\0\0k\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x81`\0\x81Q\x81\x10b\0\r\xC0Wb\0\r\xC0b\0\x13VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x1A\xEBi\x91`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x16\x90c\xD7[L\x88\x90b\0\r\xFD\x90\x86\x90\x86\x90\x86\x90`\x04\x01b\0\x15\x9EV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x0E\x18W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x0E-W=`\0\x80>=`\0\xFD[PPPPPPPPPV[```\0`\0\x80Q` b\x001\r\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16c\xD90\xA0\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x0E\x8DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x0E\xB7\x91\x90\x81\x01\x90b\0\x14EV[`@Q` \x01b\0\x0E\xC9\x91\x90b\0\x16?V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x90\x82\x90Rc4\x80Q\xD7`\xE1\x1B\x82RF`\x04\x83\x01R\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x0F,W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x0FV\x91\x90\x81\x01\x90b\0\x14EV[`@Q` \x01b\0\x0Fh\x91\x90b\0\x16tV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x84`@Q` \x01b\0\x0F\x8E\x91\x90b\0\x16\x9BV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c`\xF9\xBB\x11\x90b\0\x0F\xD1\x90\x86\x90\x86\x90\x86\x90` \x01b\0\x16\xC6V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01b\0\x0F\xFE\x91\x90b\0\x17\x0FV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x10\x1CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x10F\x91\x90\x81\x01\x90b\0\x14EV[\x95\x94PPPPPV[`@Qc\x1E\x19\xE6W`\xE0\x1B\x81R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x1E\x19\xE6W\x90b\0\x10\x8D\x90\x86\x90\x86\x90`\x04\x01b\0\x17$V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x10\xABW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x10\xD1\x91\x90b\0\x17MV[\x93\x92PPPV[`\0`\0\x80Q` b\x001\r\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16c\xD90\xA0\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x11+W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x11U\x91\x90\x81\x01\x90b\0\x14EV[`@Q` \x01b\0\x11g\x91\x90b\0\x16?V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x90\x82\x90Rc4\x80Q\xD7`\xE1\x1B\x82RF`\x04\x83\x01R\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x11\xCAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Rb\0\x11\xF4\x91\x90\x81\x01\x90b\0\x14EV[`@Q` \x01b\0\x12\x06\x91\x90b\0\x16tV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x82\x82\x85`@Q` \x01b\0\x120\x93\x92\x91\x90b\0\x17xV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Rc\xE2<\xD1\x9F`\xE0\x1B\x82R\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xE2<\xD1\x9F\x90b\0\r\xFD\x90\x88\x90\x85\x90`\x04\x01b\0\x17$V[a\nt\x80b\0\x17\xD2\x839\x01\x90V[a\x0E\x81\x80b\0\"F\x839\x01\x90V[`\0` \x82\x84\x03\x12\x15b\0\x12\xAAW`\0\x80\xFD[PQ\x91\x90PV[`\0[\x83\x81\x10\x15b\0\x12\xCEW\x81\x81\x01Q\x83\x82\x01R` \x01b\0\x12\xB4V[\x83\x81\x11\x15b\0\x12\xDEW`\0\x84\x84\x01R[PPPPV[`\0\x81Q\x80\x84Rb\0\x12\xFE\x81` \x86\x01` \x86\x01b\0\x12\xB1V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x82R\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90b\0\x10F\x90\x83\x01\x84b\0\x12\xE4V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`@\x80\x82R\x83Q\x90\x82\x01\x81\x90R`\0\x90` \x90``\x84\x01\x90\x82\x87\x01\x84[\x82\x81\x10\x15b\0\x13\xB0W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01b\0\x13\x89V[PPP\x83\x81\x03\x82\x85\x01R\x84Q\x80\x82R\x85\x83\x01\x91\x83\x01\x90`\0[\x81\x81\x10\x15b\0\x13\xE9W\x83Q\x15\x15\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01b\0\x13\xC9V[P\x90\x97\x96PPPPPPPV[``\x81R`\0b\0\x14\x0B``\x83\x01\x85b\0\x12\xE4V[\x82\x81\x03` \x80\x85\x01\x91\x90\x91R`\t\x82Rherc20mock`\xB8\x1B\x90\x82\x01R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16`@\x92\x83\x01RP\x01\x91\x90PV[`\0` \x82\x84\x03\x12\x15b\0\x14XW`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15b\0\x14qW`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12b\0\x14\x86W`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\0\x14\x9BWb\0\x14\x9Bb\0\x13@V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15b\0\x14\xC6Wb\0\x14\xC6b\0\x13@V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15b\0\x14\xE0W`\0\x80\xFD[b\0\x14\xF3\x83` \x83\x01` \x88\x01b\0\x12\xB1V[\x97\x96PPPPPPPV[``\x81R`\0b\0\x15\x13``\x83\x01\x85b\0\x12\xE4V[\x82\x81\x03` \x80\x85\x01\x91\x90\x91R`\x11\x82Rperc20mockstrategy`x\x1B\x90\x82\x01R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16`@\x92\x83\x01RP\x01\x91\x90PV[``\x81R`\0b\0\x15j``\x83\x01\x86b\0\x12\xE4V[\x82\x81\x03` \x84\x01Rb\0\x15~\x81\x86b\0\x12\xE4V[\x90P\x82\x81\x03`@\x84\x01Rb\0\x15\x94\x81\x85b\0\x12\xE4V[\x96\x95PPPPPPV[`\0`\xA0\x82\x01c\xFF\xFF\xFF\xFF\x86Q\x16\x83R` \x80\x87\x01Qa\xFF\xFF\x80\x82\x16\x83\x87\x01R`@\x91P\x80\x82\x8A\x01Q\x16\x82\x87\x01RPk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x88\x16``\x87\x01R`\xA0`\x80\x87\x01R\x83\x87Q\x80\x86R`\xC0\x88\x01\x91P\x84\x89\x01\x95P`\0[\x81\x81\x10\x15b\0\x16/W\x86Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x86\x01Q\x84\x16\x86\x84\x01R\x95\x85\x01\x95\x91\x84\x01\x91`\x01\x01b\0\x15\xFDV[P\x90\x9A\x99PPPPPPPPPPV[`\0\x82Qb\0\x16S\x81\x84` \x87\x01b\0\x12\xB1V[n/script/output/`\x88\x1B\x92\x01\x91\x82RP`\x0F\x01\x91\x90PV[`\0\x82Qb\0\x16\x88\x81\x84` \x87\x01b\0\x12\xB1V[`/`\xF8\x1B\x92\x01\x91\x82RP`\x01\x01\x91\x90PV[`\0\x82Qb\0\x16\xAF\x81\x84` \x87\x01b\0\x12\xB1V[d\x1759\xB7\xB7`\xD9\x1B\x92\x01\x91\x82RP`\x05\x01\x91\x90PV[`\0\x84Qb\0\x16\xDA\x81\x84` \x89\x01b\0\x12\xB1V[\x84Q\x90\x83\x01\x90b\0\x16\xF0\x81\x83` \x89\x01b\0\x12\xB1V[\x84Q\x91\x01\x90b\0\x17\x05\x81\x83` \x88\x01b\0\x12\xB1V[\x01\x95\x94PPPPPV[` \x81R`\0b\0\x10\xD1` \x83\x01\x84b\0\x12\xE4V[`@\x81R`\0b\0\x179`@\x83\x01\x85b\0\x12\xE4V[\x82\x81\x03` \x84\x01Rb\0\x10F\x81\x85b\0\x12\xE4V[`\0` \x82\x84\x03\x12\x15b\0\x17`W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x10\xD1W`\0\x80\xFD[`\0\x84Qb\0\x17\x8C\x81\x84` \x89\x01b\0\x12\xB1V[\x84Q\x90\x83\x01\x90b\0\x17\xA2\x81\x83` \x89\x01b\0\x12\xB1V[\x84Q\x91\x01\x90b\0\x17\xB7\x81\x83` \x88\x01b\0\x12\xB1V[d\x1759\xB7\xB7`\xD9\x1B\x91\x01\x90\x81R`\x05\x01\x95\x94PPPPPV\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Q\x80`@\x01`@R\x80`\n\x81R` \x01i&\xB7\xB1\xB5\x90*7\xB5\xB2\xB7`\xB1\x1B\x81RP`@Q\x80`@\x01`@R\x80`\x03\x81R` \x01bMCK`\xE8\x1B\x81RP\x81`\x03\x90\x80Q\x90` \x01\x90a\0f\x92\x91\x90a\0\x82V[P\x80Qa\0z\x90`\x04\x90` \x84\x01\x90a\0\x82V[PPPa\x01VV[\x82\x80Ta\0\x8E\x90a\x01\x1BV[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82a\0\xB0W`\0\x85Ua\0\xF6V[\x82`\x1F\x10a\0\xC9W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ua\0\xF6V[\x82\x80\x01`\x01\x01\x85U\x82\x15a\0\xF6W\x91\x82\x01[\x82\x81\x11\x15a\0\xF6W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90a\0\xDBV[Pa\x01\x02\x92\x91Pa\x01\x06V[P\x90V[[\x80\x82\x11\x15a\x01\x02W`\0\x81U`\x01\x01a\x01\x07V[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x01/W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x01PWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[a\t\x0F\x80a\x01e`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xB4W`\x005`\xE0\x1C\x80c@\xC1\x0F\x19\x11a\0qW\x80c@\xC1\x0F\x19\x14a\x01AW\x80cp\xA0\x821\x14a\x01VW\x80c\x95\xD8\x9BA\x14a\x01\x7FW\x80c\xA4W\xC2\xD7\x14a\x01\x87W\x80c\xA9\x05\x9C\xBB\x14a\x01\x9AW\x80c\xDDb\xED>\x14a\x01\xADW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xB9W\x80c\t^\xA7\xB3\x14a\0\xD7W\x80c\x18\x16\r\xDD\x14a\0\xFAW\x80c#\xB8r\xDD\x14a\x01\x0CW\x80c1<\xE5g\x14a\x01\x1FW\x80c9P\x93Q\x14a\x01.W[`\0\x80\xFD[a\0\xC1a\x01\xC0V[`@Qa\0\xCE\x91\x90a\x07LV[`@Q\x80\x91\x03\x90\xF3[a\0\xEAa\0\xE56`\x04a\x07\xBDV[a\x02RV[`@Q\x90\x15\x15\x81R` \x01a\0\xCEV[`\x02T[`@Q\x90\x81R` \x01a\0\xCEV[a\0\xEAa\x01\x1A6`\x04a\x07\xE7V[a\x02jV[`@Q`\x12\x81R` \x01a\0\xCEV[a\0\xEAa\x01<6`\x04a\x07\xBDV[a\x02wV[a\x01Ta\x01O6`\x04a\x07\xBDV[a\x02\x99V[\0[a\0\xFEa\x01d6`\x04a\x08#V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\0\xC1a\x02\xA7V[a\0\xEAa\x01\x956`\x04a\x07\xBDV[a\x02\xB6V[a\0\xEAa\x01\xA86`\x04a\x07\xBDV[a\x03AV[a\0\xFEa\x01\xBB6`\x04a\x08EV[a\x03OV[```\x03\x80Ta\x01\xCF\x90a\x08xV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01\xFB\x90a\x08xV[\x80\x15a\x02HW\x80`\x1F\x10a\x02\x1DWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02HV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02+W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02`\x81\x85\x85a\x03zV[P`\x01\x93\x92PPPV[`\0a\x02`\x84\x84\x84a\x04\x9EV[`\x003a\x02`\x81\x85\x85a\x02\x8A\x83\x83a\x03OV[a\x02\x94\x91\x90a\x08\xB3V[a\x03zV[a\x02\xA3\x82\x82a\x06mV[PPV[```\x04\x80Ta\x01\xCF\x90a\x08xV[`\x003\x81a\x02\xC4\x82\x86a\x03OV[\x90P\x83\x81\x10\x15a\x03)W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: decreased allowance below`D\x82\x01Rd zero`\xD8\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x036\x82\x86\x86\x84\x03a\x03zV[P`\x01\x94\x93PPPPV[`\x003a\x02`\x81\x85\x85a\x04\x9EV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x03\xDCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FERC20: approve from the zero add`D\x82\x01Rcress`\xE0\x1B`d\x82\x01R`\x84\x01a\x03 V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x04=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: approve to the zero addre`D\x82\x01Rass`\xF0\x1B`d\x82\x01R`\x84\x01a\x03 V[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x81\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x87\x16\x80\x84R\x94\x82R\x91\x82\x90 \x85\x90U\x90Q\x84\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x05\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: transfer from the zero ad`D\x82\x01Rddress`\xD8\x1B`d\x82\x01R`\x84\x01a\x03 V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x05dW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7FERC20: transfer to the zero addr`D\x82\x01Rbess`\xE8\x1B`d\x82\x01R`\x84\x01a\x03 V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x05\xDCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC20: transfer amount exceeds b`D\x82\x01Realance`\xD0\x1B`d\x82\x01R`\x84\x01a\x03 V[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R` \x81\x90R`@\x80\x82 \x85\x85\x03\x90U\x91\x85\x16\x81R\x90\x81 \x80T\x84\x92\x90a\x06\x13\x90\x84\x90a\x08\xB3V[\x92PP\x81\x90UP\x82`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x84`@Qa\x06_\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x06\xC3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FERC20: mint to the zero address\0`D\x82\x01R`d\x01a\x03 V[\x80`\x02`\0\x82\x82Ta\x06\xD5\x91\x90a\x08\xB3V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x83\x92\x90a\x07\x02\x90\x84\x90a\x08\xB3V[\x90\x91UPP`@Q\x81\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90`\0\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90` \x01`@Q\x80\x91\x03\x90\xA3PPV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x07yW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x07]V[\x81\x81\x11\x15a\x07\x8BW`\0`@\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\xB8W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x07\xD0W`\0\x80\xFD[a\x07\xD9\x83a\x07\xA1V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x07\xFCW`\0\x80\xFD[a\x08\x05\x84a\x07\xA1V[\x92Pa\x08\x13` \x85\x01a\x07\xA1V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x085W`\0\x80\xFD[a\x08>\x82a\x07\xA1V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x08XW`\0\x80\xFD[a\x08a\x83a\x07\xA1V[\x91Pa\x08o` \x84\x01a\x07\xA1V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x08\x8CW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x08\xADWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0\x82\x19\x82\x11\x15a\x08\xD4WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P\x01\x90V\xFE\xA2dipfsX\"\x12 \xCD\xD5\xDA\xCF\x892\x07:<\xAF\xFCr\xE8M\x1B\xC1\xB5\xBDa\x910 v\xCC75\xA9 \xA3\xCAP]8+\xBC`\0\x1Bb\0\x03\xDE` \x1Bb\0\x02\x08\x17` \x1CV[```\x01`\x01`\xA0\x1B\x03\x84\x16;b\0\x03bW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FAddress: delegate call to non-co`D\x82\x01Re\x1B\x9D\x1C\x98X\xDD`\xD2\x1B`d\x82\x01R`\x84\x01b\0\x01\xF1V[`\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qb\0\x03\x7F\x91\x90b\0\x05pV[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14b\0\x03\xBCW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x03\xC1V[``\x91P[P\x90\x92P\x90Pb\0\x03\xD4\x82\x82\x86b\0\x03\xF0V[\x96\x95PPPPPPV[\x90V[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[``\x83\x15b\0\x04\x01WP\x81b\0\x01OV[\x82Q\x15b\0\x04\x12W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01b\0\x01\xF1\x91\x90b\0\x05\x8EV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x04FW`\0\x80\xFD[\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15b\0\x04~W\x81\x81\x01Q\x83\x82\x01R` \x01b\0\x04dV[\x83\x81\x11\x15b\0\0\x83WPP`\0\x91\x01RV[`\0\x80`\0``\x84\x86\x03\x12\x15b\0\x04\xA6W`\0\x80\xFD[b\0\x04\xB1\x84b\0\x04.V[\x92Pb\0\x04\xC1` \x85\x01b\0\x04.V[`@\x85\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x04\xDFW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12b\0\x04\xF4W`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\0\x05\tWb\0\x05\tb\0\x04KV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15b\0\x054Wb\0\x054b\0\x04KV[\x81`@R\x82\x81R\x89` \x84\x87\x01\x01\x11\x15b\0\x05NW`\0\x80\xFD[b\0\x05a\x83` \x83\x01` \x88\x01b\0\x04aV[\x80\x95PPPPPP\x92P\x92P\x92V[`\0\x82Qb\0\x05\x84\x81\x84` \x87\x01b\0\x04aV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Rb\0\x05\xAF\x81`@\x85\x01` \x87\x01b\0\x04aV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[a\x08g\x80b\0\x05\xD3`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\0NW`\x005`\xE0\x1C\x80c6Y\xCF\xE6\x14a\0eW\x80cO\x1E\xF2\x86\x14a\0\x85W\x80c\\`\xDA\x1B\x14a\0\x98W\x80c\x8F(9p\x14a\0\xC9W\x80c\xF8Q\xA4@\x14a\0\xE9Wa\0]V[6a\0]Wa\0[a\0\xFEV[\0[a\0[a\0\xFEV[4\x80\x15a\0qW`\0\x80\xFD[Pa\0[a\0\x806`\x04a\x06\xF1V[a\x01\x18V[a\0[a\0\x936`\x04a\x07\x0CV[a\x01_V[4\x80\x15a\0\xA4W`\0\x80\xFD[Pa\0\xADa\x01\xD0V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xD5W`\0\x80\xFD[Pa\0[a\0\xE46`\x04a\x06\xF1V[a\x02\x0BV[4\x80\x15a\0\xF5W`\0\x80\xFD[Pa\0\xADa\x025V[a\x01\x06a\x02\x9BV[a\x01\x16a\x01\x11a\x03:V[a\x03DV[V[a\x01 a\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x01WWa\x01T\x81`@Q\x80` \x01`@R\x80`\0\x81RP`\0a\x03\x9BV[PV[a\x01Ta\0\xFEV[a\x01ga\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x01\xC8Wa\x01\xC3\x83\x83\x83\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RP`\x01\x92Pa\x03\x9B\x91PPV[PPPV[a\x01\xC3a\0\xFEV[`\0a\x01\xDAa\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x02\0Wa\x01\xFBa\x03:V[\x90P\x90V[a\x02\x08a\0\xFEV[\x90V[a\x02\x13a\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x01WWa\x01T\x81a\x03\xC6V[`\0a\x02?a\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x02\0Wa\x01\xFBa\x03hV[``a\x02\x85\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x08\x0B`'\x919a\x04\x1AV[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[a\x02\xA3a\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x01\x16W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R\x7FTransparentUpgradeableProxy: adm`D\x82\x01R\x7Fin cannot fallback to proxy targ`d\x82\x01Ra\x19]`\xF2\x1B`\x84\x82\x01R`\xA4\x01[`@Q\x80\x91\x03\x90\xFD[`\0a\x01\xFBa\x04\xF7V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15a\x03cW=`\0\xF3[=`\0\xFD[`\0\x7F\xB51'hJV\x8B1s\xAE\x13\xB9\xF8\xA6\x01n$>c\xB6\xE8\xEE\x11x\xD6\xA7\x17\x85\x0B]a\x03[T`\x01`\x01`\xA0\x1B\x03\x16\x91\x90PV[a\x03\xA4\x83a\x05\x1FV[`\0\x82Q\x11\x80a\x03\xB1WP\x80[\x15a\x01\xC3Wa\x03\xC0\x83\x83a\x02`V[PPPPV[\x7F~dMyB/\x17\xC0\x1EH\x94\xB5\xF4\xF5\x88\xD31\xEB\xFA(e=B\xAE\x83-\xC5\x9E8\xC9y\x8Fa\x03\xEFa\x03hV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x84\x16` \x83\x01R\x01`@Q\x80\x91\x03\x90\xA1a\x01T\x81a\x05_V[```\x01`\x01`\xA0\x1B\x03\x84\x16;a\x04\x82W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FAddress: delegate call to non-co`D\x82\x01Re\x1B\x9D\x1C\x98X\xDD`\xD2\x1B`d\x82\x01R`\x84\x01a\x031V[`\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x04\x9D\x91\x90a\x07\xBBV[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x04\xD8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x04\xDDV[``\x91P[P\x91P\x91Pa\x04\xED\x82\x82\x86a\x06\x08V[\x96\x95PPPPPPV[`\0\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x03\x8CV[a\x05(\x81a\x06AV[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90`\0\x90\xA2PV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xC4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC1967: new admin is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x031V[\x80\x7F\xB51'hJV\x8B1s\xAE\x13\xB9\xF8\xA6\x01n$>c\xB6\xE8\xEE\x11x\xD6\xA7\x17\x85\x0B]a\x03[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UPV[``\x83\x15a\x06\x17WP\x81a\x02\x85V[\x82Q\x15a\x06'W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x031\x91\x90a\x07\xD7V[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x06\xAEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FERC1967: new implementation is n`D\x82\x01Rl\x1B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x9A\x1B`d\x82\x01R`\x84\x01a\x031V[\x80\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x05\xE7V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x06\xECW`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x07\x03W`\0\x80\xFD[a\x02\x85\x82a\x06\xD5V[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x07!W`\0\x80\xFD[a\x07*\x84a\x06\xD5V[\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x07GW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x07[W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x07jW`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x07|W`\0\x80\xFD[` \x83\x01\x94P\x80\x93PPPP\x92P\x92P\x92V[`\0[\x83\x81\x10\x15a\x07\xAAW\x81\x81\x01Q\x83\x82\x01R` \x01a\x07\x92V[\x83\x81\x11\x15a\x03\xC0WPP`\0\x91\x01RV[`\0\x82Qa\x07\xCD\x81\x84` \x87\x01a\x07\x8FV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x07\xF6\x81`@\x85\x01` \x87\x01a\x07\x8FV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 t \xB9\xD3\xA1z\x9BK\x12yH*\xEAb\x85[8\xB1\xF3\xC3he\xE17\x12\xF5c/:H\x7F7dsolcC\0\x08\x0C\x003\xB51'hJV\x8B1s\xAE\x13\xB9\xF8\xA6\x01n$>c\xB6\xE8\xEE\x11x\xD6\xA7\x17\x85\x0B]a\x03Address: low-level delegate call failed.addresses.baseStrategyImplementation.addresses.operatorStateRetriever\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-token_and_strategy_deployment_output\xA2dipfsX\"\x12 \r\xBE\x01a8\xA8\xDD-/\xCF-\x0C\xEFs8\xEF\x81\xFA3\xF7/\xCB\x95\x0FJfn\x05\x9C\xC8\x9E\x9EdsolcC\0\x08\x0C\x003", + ); + /**Function with signature `IS_SCRIPT()` and selector `0xf8ccbf47`. + ```solidity + function IS_SCRIPT() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_SCRIPTCall {} + ///Container type for the return parameters of the [`IS_SCRIPT()`](IS_SCRIPTCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_SCRIPTReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_SCRIPTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_SCRIPTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_SCRIPT()"; + const SELECTOR: [u8; 4] = [248u8, 204u8, 191u8, 71u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `run()` and selector `0xc0406226`. + ```solidity + function run() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct runCall {} + ///Container type for the return parameters of the [`run()`](runCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct runReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: runCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for runCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: runReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for runReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for runCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = runReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "run()"; + const SELECTOR: [u8; 4] = [192u8, 64u8, 98u8, 38u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`DeployTokensStrategiesCreateQuorums`](self) function calls. + pub enum DeployTokensStrategiesCreateQuorumsCalls { + IS_SCRIPT(IS_SCRIPTCall), + run(runCall), + } + #[automatically_derived] + impl DeployTokensStrategiesCreateQuorumsCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = + &[[192u8, 64u8, 98u8, 38u8], [248u8, 204u8, 191u8, 71u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for DeployTokensStrategiesCreateQuorumsCalls { + const NAME: &'static str = "DeployTokensStrategiesCreateQuorumsCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 2usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_SCRIPT(_) => ::SELECTOR, + Self::run(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result< + DeployTokensStrategiesCreateQuorumsCalls, + >] = &[ + { + fn run( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(DeployTokensStrategiesCreateQuorumsCalls::run) + } + run + }, + { + fn IS_SCRIPT( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(DeployTokensStrategiesCreateQuorumsCalls::IS_SCRIPT) + } + IS_SCRIPT + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encoded_size(inner) + } + Self::run(inner) => ::abi_encoded_size(inner), + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encode_raw(inner, out) + } + Self::run(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`DeployTokensStrategiesCreateQuorums`](self) contract instance. + + See the [wrapper's documentation](`DeployTokensStrategiesCreateQuorumsInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> DeployTokensStrategiesCreateQuorumsInstance { + DeployTokensStrategiesCreateQuorumsInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + DeployTokensStrategiesCreateQuorumsInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + DeployTokensStrategiesCreateQuorumsInstance::::deploy_builder(provider) + } + /**A [`DeployTokensStrategiesCreateQuorums`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`DeployTokensStrategiesCreateQuorums`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct DeployTokensStrategiesCreateQuorumsInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for DeployTokensStrategiesCreateQuorumsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("DeployTokensStrategiesCreateQuorumsInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployTokensStrategiesCreateQuorumsInstance + { + /**Creates a new wrapper around an on-chain [`DeployTokensStrategiesCreateQuorums`](self) contract instance. + + See the [wrapper's documentation](`DeployTokensStrategiesCreateQuorumsInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl DeployTokensStrategiesCreateQuorumsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> DeployTokensStrategiesCreateQuorumsInstance { + DeployTokensStrategiesCreateQuorumsInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployTokensStrategiesCreateQuorumsInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`IS_SCRIPT`] function. + pub fn IS_SCRIPT(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_SCRIPTCall {}) + } + ///Creates a new call builder for the [`run`] function. + pub fn run(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&runCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployTokensStrategiesCreateQuorumsInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/ecdsa.rs b/crates/utils/src/ecdsa.rs new file mode 100644 index 00000000..f52ff679 --- /dev/null +++ b/crates/utils/src/ecdsa.rs @@ -0,0 +1,216 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ECDSA {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ECDSA { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b57a97c6bccc5d94a4f5d703d9c2b21a45484037d80c0492c4b44b3d1327665f64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xB5z\x97\xC6\xBC\xCC]\x94\xA4\xF5\xD7\x03\xD9\xC2\xB2\x1AEH@7\xD8\x0C\x04\x92\xC4\xB4K=\x13'f_dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b57a97c6bccc5d94a4f5d703d9c2b21a45484037d80c0492c4b44b3d1327665f64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xB5z\x97\xC6\xBC\xCC]\x94\xA4\xF5\xD7\x03\xD9\xC2\xB2\x1AEH@7\xD8\x0C\x04\x92\xC4\xB4K=\x13'f_dsolcC\0\x08\x0C\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ECDSA`](self) contract instance. + + See the [wrapper's documentation](`ECDSAInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ECDSAInstance { + ECDSAInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> { + ECDSAInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + ECDSAInstance::::deploy_builder(provider) + } + /**A [`ECDSA`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ECDSA`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ECDSAInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ECDSAInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ECDSAInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ECDSAInstance + { + /**Creates a new wrapper around an on-chain [`ECDSA`](self) contract instance. + + See the [wrapper's documentation](`ECDSAInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ECDSAInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ECDSAInstance { + ECDSAInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ECDSAInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ECDSAInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/ecdsaservicemanagerbase.rs b/crates/utils/src/ecdsaservicemanagerbase.rs new file mode 100644 index 00000000..cab35d5d --- /dev/null +++ b/crates/utils/src/ecdsaservicemanagerbase.rs @@ -0,0 +1,3829 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library IRewardsCoordinator { + struct RewardsSubmission { StrategyAndMultiplier[] strategiesAndMultipliers; address token; uint256 amount; uint32 startTimestamp; uint32 duration; } + struct StrategyAndMultiplier { address strategy; uint96 multiplier; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IRewardsCoordinator { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct RewardsSubmission { StrategyAndMultiplier[] strategiesAndMultipliers; address token; uint256 amount; uint32 startTimestamp; uint32 duration; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct RewardsSubmission { + pub strategiesAndMultipliers: alloy::sol_types::private::Vec< + ::RustType, + >, + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::primitives::aliases::U256, + pub startTimestamp: u32, + pub duration: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + u32, + u32, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: RewardsSubmission) -> Self { + ( + value.strategiesAndMultipliers, + value.token, + value.amount, + value.startTimestamp, + value.duration, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for RewardsSubmission { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategiesAndMultipliers: tuple.0, + token: tuple.1, + amount: tuple.2, + startTimestamp: tuple.3, + duration: tuple.4, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for RewardsSubmission { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for RewardsSubmission { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.strategiesAndMultipliers, + ), + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.startTimestamp), + as alloy_sol_types::SolType>::tokenize(&self.duration), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for RewardsSubmission { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for RewardsSubmission { + const NAME: &'static str = "RewardsSubmission"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "RewardsSubmission(StrategyAndMultiplier[] strategiesAndMultipliers,address token,uint256 amount,uint32 startTimestamp,uint32 duration)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + let mut components = alloy_sol_types::private::Vec::with_capacity(1); + components.push( + ::eip712_root_type(), + ); + components.extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word( + &self.strategiesAndMultipliers, + ) + .0, + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.startTimestamp, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.duration) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for RewardsSubmission { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.strategiesAndMultipliers, + ) + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.startTimestamp, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.duration, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.strategiesAndMultipliers, + out, + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.startTimestamp, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.duration, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct StrategyAndMultiplier { address strategy; uint96 multiplier; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct StrategyAndMultiplier { + pub strategy: alloy::sol_types::private::Address, + pub multiplier: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<96>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U96, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: StrategyAndMultiplier) -> Self { + (value.strategy, value.multiplier) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for StrategyAndMultiplier { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategy: tuple.0, + multiplier: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for StrategyAndMultiplier { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for StrategyAndMultiplier { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.multiplier, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for StrategyAndMultiplier { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for StrategyAndMultiplier { + const NAME: &'static str = "StrategyAndMultiplier"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "StrategyAndMultiplier(address strategy,uint96 multiplier)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.strategy, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.multiplier) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for StrategyAndMultiplier { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.strategy, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.multiplier, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.strategy, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.multiplier, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IRewardsCoordinator`](self) contract instance. + + See the [wrapper's documentation](`IRewardsCoordinatorInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IRewardsCoordinatorInstance { + IRewardsCoordinatorInstance::::new(address, provider) + } + /**A [`IRewardsCoordinator`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IRewardsCoordinator`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IRewardsCoordinatorInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IRewardsCoordinatorInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IRewardsCoordinatorInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IRewardsCoordinatorInstance + { + /**Creates a new wrapper around an on-chain [`IRewardsCoordinator`](self) contract instance. + + See the [wrapper's documentation](`IRewardsCoordinatorInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IRewardsCoordinatorInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IRewardsCoordinatorInstance { + IRewardsCoordinatorInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IRewardsCoordinatorInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IRewardsCoordinatorInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library ISignatureUtils { + struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ISignatureUtils { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SignatureWithSaltAndExpiry { + pub signature: alloy::sol_types::private::Bytes, + pub salt: alloy::sol_types::private::FixedBytes<32>, + pub expiry: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: SignatureWithSaltAndExpiry) -> Self { + (value.signature, value.salt, value.expiry) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for SignatureWithSaltAndExpiry { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + signature: tuple.0, + salt: tuple.1, + expiry: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for SignatureWithSaltAndExpiry { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for SignatureWithSaltAndExpiry { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.signature, + ), + as alloy_sol_types::SolType>::tokenize(&self.salt), + as alloy_sol_types::SolType>::tokenize(&self.expiry), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for SignatureWithSaltAndExpiry { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for SignatureWithSaltAndExpiry { + const NAME: &'static str = "SignatureWithSaltAndExpiry"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "SignatureWithSaltAndExpiry(bytes signature,bytes32 salt,uint256 expiry)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.signature, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.salt) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.expiry) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for SignatureWithSaltAndExpiry { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.signature, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.salt) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.expiry, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.signature, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.salt, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.expiry, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ISignatureUtilsInstance { + ISignatureUtilsInstance::::new(address, provider) + } + /**A [`ISignatureUtils`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ISignatureUtils`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ISignatureUtilsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ISignatureUtilsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ISignatureUtilsInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ISignatureUtilsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ISignatureUtilsInstance { + ISignatureUtilsInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library IRewardsCoordinator { + struct RewardsSubmission { + StrategyAndMultiplier[] strategiesAndMultipliers; + address token; + uint256 amount; + uint32 startTimestamp; + uint32 duration; + } + struct StrategyAndMultiplier { + address strategy; + uint96 multiplier; + } +} + +library ISignatureUtils { + struct SignatureWithSaltAndExpiry { + bytes signature; + bytes32 salt; + uint256 expiry; + } +} + +interface ECDSAServiceManagerBase { + event Initialized(uint8 version); + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + event RewardsInitiatorUpdated(address prevRewardsInitiator, address newRewardsInitiator); + + function avsDirectory() external view returns (address); + function createAVSRewardsSubmission(IRewardsCoordinator.RewardsSubmission[] memory rewardsSubmissions) external; + function deregisterOperatorFromAVS(address operator) external; + function getOperatorRestakedStrategies(address _operator) external view returns (address[] memory); + function getRestakeableStrategies() external view returns (address[] memory); + function owner() external view returns (address); + function registerOperatorToAVS(address operator, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external; + function renounceOwnership() external; + function rewardsInitiator() external view returns (address); + function setRewardsInitiator(address newRewardsInitiator) external; + function stakeRegistry() external view returns (address); + function transferOwnership(address newOwner) external; + function updateAVSMetadataURI(string memory _metadataURI) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "avsDirectory", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "createAVSRewardsSubmission", + "inputs": [ + { + "name": "rewardsSubmissions", + "type": "tuple[]", + "internalType": "struct IRewardsCoordinator.RewardsSubmission[]", + "components": [ + { + "name": "strategiesAndMultipliers", + "type": "tuple[]", + "internalType": "struct IRewardsCoordinator.StrategyAndMultiplier[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "startTimestamp", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "duration", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "deregisterOperatorFromAVS", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getOperatorRestakedStrategies", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getRestakeableStrategies", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registerOperatorToAVS", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "operatorSignature", + "type": "tuple", + "internalType": "struct ISignatureUtils.SignatureWithSaltAndExpiry", + "components": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "salt", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "rewardsInitiator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setRewardsInitiator", + "inputs": [ + { + "name": "newRewardsInitiator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "stakeRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateAVSMetadataURI", + "inputs": [ + { + "name": "_metadataURI", + "type": "string", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RewardsInitiatorUpdated", + "inputs": [ + { + "name": "prevRewardsInitiator", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newRewardsInitiator", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ECDSAServiceManagerBase { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`. + ```solidity + event Initialized(uint8 version); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Initialized { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "Initialized(uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, + 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, + 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { version: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.version, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Initialized { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Initialized> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Initialized) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. + ```solidity + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub previousOwner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, + 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, + 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + previousOwner: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.previousOwner.clone(), + self.newOwner.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.previousOwner, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `RewardsInitiatorUpdated(address,address)` and selector `0xe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3`. + ```solidity + event RewardsInitiatorUpdated(address prevRewardsInitiator, address newRewardsInitiator); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct RewardsInitiatorUpdated { + #[allow(missing_docs)] + pub prevRewardsInitiator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newRewardsInitiator: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for RewardsInitiatorUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "RewardsInitiatorUpdated(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 225u8, 28u8, 221u8, 241u8, 129u8, 106u8, 67u8, 49u8, 140u8, 161u8, 117u8, + 187u8, 197u8, 44u8, 208u8, 24u8, 84u8, 54u8, 233u8, 203u8, 234u8, 215u8, 200u8, + 58u8, 204u8, 84u8, 167u8, 62u8, 70u8, 23u8, 23u8, 227u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + prevRewardsInitiator: data.0, + newRewardsInitiator: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.prevRewardsInitiator, + ), + ::tokenize( + &self.newRewardsInitiator, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for RewardsInitiatorUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&RewardsInitiatorUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &RewardsInitiatorUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `avsDirectory()` and selector `0x6b3aa72e`. + ```solidity + function avsDirectory() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct avsDirectoryCall {} + ///Container type for the return parameters of the [`avsDirectory()`](avsDirectoryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct avsDirectoryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: avsDirectoryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for avsDirectoryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: avsDirectoryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for avsDirectoryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for avsDirectoryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = avsDirectoryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "avsDirectory()"; + const SELECTOR: [u8; 4] = [107u8, 58u8, 167u8, 46u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])` and selector `0xfce36c7d`. + ```solidity + function createAVSRewardsSubmission(IRewardsCoordinator.RewardsSubmission[] memory rewardsSubmissions) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct createAVSRewardsSubmissionCall { + pub rewardsSubmissions: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])`](createAVSRewardsSubmissionCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct createAVSRewardsSubmissionReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: createAVSRewardsSubmissionCall) -> Self { + (value.rewardsSubmissions,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for createAVSRewardsSubmissionCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + rewardsSubmissions: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: createAVSRewardsSubmissionReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for createAVSRewardsSubmissionReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for createAVSRewardsSubmissionCall { + type Parameters<'a> = + (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = createAVSRewardsSubmissionReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])"; + const SELECTOR: [u8; 4] = [252u8, 227u8, 108u8, 125u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( as alloy_sol_types::SolType>::tokenize( + &self.rewardsSubmissions, + ),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `deregisterOperatorFromAVS(address)` and selector `0xa364f4da`. + ```solidity + function deregisterOperatorFromAVS(address operator) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorFromAVSCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`deregisterOperatorFromAVS(address)`](deregisterOperatorFromAVSCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorFromAVSReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorFromAVSCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorFromAVSCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorFromAVSReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorFromAVSReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for deregisterOperatorFromAVSCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = deregisterOperatorFromAVSReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "deregisterOperatorFromAVS(address)"; + const SELECTOR: [u8; 4] = [163u8, 100u8, 244u8, 218u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorRestakedStrategies(address)` and selector `0x33cfb7b7`. + ```solidity + function getOperatorRestakedStrategies(address _operator) external view returns (address[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorRestakedStrategiesCall { + pub _operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getOperatorRestakedStrategies(address)`](getOperatorRestakedStrategiesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorRestakedStrategiesReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorRestakedStrategiesCall) -> Self { + (value._operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorRestakedStrategiesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorRestakedStrategiesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorRestakedStrategiesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorRestakedStrategiesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorRestakedStrategiesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorRestakedStrategies(address)"; + const SELECTOR: [u8; 4] = [51u8, 207u8, 183u8, 183u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getRestakeableStrategies()` and selector `0xe481af9d`. + ```solidity + function getRestakeableStrategies() external view returns (address[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getRestakeableStrategiesCall {} + ///Container type for the return parameters of the [`getRestakeableStrategies()`](getRestakeableStrategiesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getRestakeableStrategiesReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getRestakeableStrategiesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getRestakeableStrategiesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getRestakeableStrategiesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getRestakeableStrategiesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getRestakeableStrategiesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getRestakeableStrategiesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getRestakeableStrategies()"; + const SELECTOR: [u8; 4] = [228u8, 129u8, 175u8, 157u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. + ```solidity + function owner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registerOperatorToAVS(address,(bytes,bytes32,uint256))` and selector `0x9926ee7d`. + ```solidity + function registerOperatorToAVS(address operator, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorToAVSCall { + pub operator: alloy::sol_types::private::Address, + pub operatorSignature: + ::RustType, + } + ///Container type for the return parameters of the [`registerOperatorToAVS(address,(bytes,bytes32,uint256))`](registerOperatorToAVSCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorToAVSReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithSaltAndExpiry, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorToAVSCall) -> Self { + (value.operator, value.operatorSignature) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorToAVSCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + operatorSignature: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorToAVSReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorToAVSReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registerOperatorToAVSCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithSaltAndExpiry, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registerOperatorToAVSReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "registerOperatorToAVS(address,(bytes,bytes32,uint256))"; + const SELECTOR: [u8; 4] = [153u8, 38u8, 238u8, 125u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.operatorSignature, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `renounceOwnership()` and selector `0x715018a6`. + ```solidity + function renounceOwnership() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct renounceOwnershipCall {} + ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct renounceOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for renounceOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for renounceOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for renounceOwnershipCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = renounceOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "renounceOwnership()"; + const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `rewardsInitiator()` and selector `0xfc299dee`. + ```solidity + function rewardsInitiator() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct rewardsInitiatorCall {} + ///Container type for the return parameters of the [`rewardsInitiator()`](rewardsInitiatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct rewardsInitiatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: rewardsInitiatorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for rewardsInitiatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: rewardsInitiatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for rewardsInitiatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for rewardsInitiatorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = rewardsInitiatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "rewardsInitiator()"; + const SELECTOR: [u8; 4] = [252u8, 41u8, 157u8, 238u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setRewardsInitiator(address)` and selector `0x3bc28c8c`. + ```solidity + function setRewardsInitiator(address newRewardsInitiator) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setRewardsInitiatorCall { + pub newRewardsInitiator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setRewardsInitiator(address)`](setRewardsInitiatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setRewardsInitiatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setRewardsInitiatorCall) -> Self { + (value.newRewardsInitiator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setRewardsInitiatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newRewardsInitiator: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setRewardsInitiatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setRewardsInitiatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setRewardsInitiatorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setRewardsInitiatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setRewardsInitiator(address)"; + const SELECTOR: [u8; 4] = [59u8, 194u8, 140u8, 140u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newRewardsInitiator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `stakeRegistry()` and selector `0x68304835`. + ```solidity + function stakeRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakeRegistryCall {} + ///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakeRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakeRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakeRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakeRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakeRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for stakeRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = stakeRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "stakeRegistry()"; + const SELECTOR: [u8; 4] = [104u8, 48u8, 72u8, 53u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. + ```solidity + function transferOwnership(address newOwner) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateAVSMetadataURI(string)` and selector `0xa98fb355`. + ```solidity + function updateAVSMetadataURI(string memory _metadataURI) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateAVSMetadataURICall { + pub _metadataURI: alloy::sol_types::private::String, + } + ///Container type for the return parameters of the [`updateAVSMetadataURI(string)`](updateAVSMetadataURICall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateAVSMetadataURIReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateAVSMetadataURICall) -> Self { + (value._metadataURI,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateAVSMetadataURICall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _metadataURI: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateAVSMetadataURIReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateAVSMetadataURIReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateAVSMetadataURICall { + type Parameters<'a> = (alloy::sol_types::sol_data::String,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateAVSMetadataURIReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateAVSMetadataURI(string)"; + const SELECTOR: [u8; 4] = [169u8, 143u8, 179u8, 85u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._metadataURI, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`ECDSAServiceManagerBase`](self) function calls. + pub enum ECDSAServiceManagerBaseCalls { + avsDirectory(avsDirectoryCall), + createAVSRewardsSubmission(createAVSRewardsSubmissionCall), + deregisterOperatorFromAVS(deregisterOperatorFromAVSCall), + getOperatorRestakedStrategies(getOperatorRestakedStrategiesCall), + getRestakeableStrategies(getRestakeableStrategiesCall), + owner(ownerCall), + registerOperatorToAVS(registerOperatorToAVSCall), + renounceOwnership(renounceOwnershipCall), + rewardsInitiator(rewardsInitiatorCall), + setRewardsInitiator(setRewardsInitiatorCall), + stakeRegistry(stakeRegistryCall), + transferOwnership(transferOwnershipCall), + updateAVSMetadataURI(updateAVSMetadataURICall), + } + #[automatically_derived] + impl ECDSAServiceManagerBaseCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [51u8, 207u8, 183u8, 183u8], + [59u8, 194u8, 140u8, 140u8], + [104u8, 48u8, 72u8, 53u8], + [107u8, 58u8, 167u8, 46u8], + [113u8, 80u8, 24u8, 166u8], + [141u8, 165u8, 203u8, 91u8], + [153u8, 38u8, 238u8, 125u8], + [163u8, 100u8, 244u8, 218u8], + [169u8, 143u8, 179u8, 85u8], + [228u8, 129u8, 175u8, 157u8], + [242u8, 253u8, 227u8, 139u8], + [252u8, 41u8, 157u8, 238u8], + [252u8, 227u8, 108u8, 125u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ECDSAServiceManagerBaseCalls { + const NAME: &'static str = "ECDSAServiceManagerBaseCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 13usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::avsDirectory(_) => ::SELECTOR, + Self::createAVSRewardsSubmission(_) => { + ::SELECTOR + } + Self::deregisterOperatorFromAVS(_) => { + ::SELECTOR + } + Self::getOperatorRestakedStrategies(_) => { + ::SELECTOR + } + Self::getRestakeableStrategies(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::registerOperatorToAVS(_) => { + ::SELECTOR + } + Self::renounceOwnership(_) => { + ::SELECTOR + } + Self::rewardsInitiator(_) => { + ::SELECTOR + } + Self::setRewardsInitiator(_) => { + ::SELECTOR + } + Self::stakeRegistry(_) => ::SELECTOR, + Self::transferOwnership(_) => { + ::SELECTOR + } + Self::updateAVSMetadataURI(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn getOperatorRestakedStrategies( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + ECDSAServiceManagerBaseCalls::getOperatorRestakedStrategies, + ) + } + getOperatorRestakedStrategies + }, + { + fn setRewardsInitiator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAServiceManagerBaseCalls::setRewardsInitiator) + } + setRewardsInitiator + }, + { + fn stakeRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAServiceManagerBaseCalls::stakeRegistry) + } + stakeRegistry + }, + { + fn avsDirectory( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAServiceManagerBaseCalls::avsDirectory) + } + avsDirectory + }, + { + fn renounceOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAServiceManagerBaseCalls::renounceOwnership) + } + renounceOwnership + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ECDSAServiceManagerBaseCalls::owner) + } + owner + }, + { + fn registerOperatorToAVS( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAServiceManagerBaseCalls::registerOperatorToAVS) + } + registerOperatorToAVS + }, + { + fn deregisterOperatorFromAVS( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAServiceManagerBaseCalls::deregisterOperatorFromAVS) + } + deregisterOperatorFromAVS + }, + { + fn updateAVSMetadataURI( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAServiceManagerBaseCalls::updateAVSMetadataURI) + } + updateAVSMetadataURI + }, + { + fn getRestakeableStrategies( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAServiceManagerBaseCalls::getRestakeableStrategies) + } + getRestakeableStrategies + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAServiceManagerBaseCalls::transferOwnership) + } + transferOwnership + }, + { + fn rewardsInitiator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAServiceManagerBaseCalls::rewardsInitiator) + } + rewardsInitiator + }, + { + fn createAVSRewardsSubmission( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + ECDSAServiceManagerBaseCalls::createAVSRewardsSubmission, + ) + } + createAVSRewardsSubmission + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::avsDirectory(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::createAVSRewardsSubmission(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::deregisterOperatorFromAVS(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorRestakedStrategies(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getRestakeableStrategies(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::registerOperatorToAVS(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::renounceOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::rewardsInitiator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setRewardsInitiator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::stakeRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::updateAVSMetadataURI(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::avsDirectory(inner) => { + ::abi_encode_raw(inner, out) + } + Self::createAVSRewardsSubmission(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::deregisterOperatorFromAVS(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getOperatorRestakedStrategies(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getRestakeableStrategies(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::registerOperatorToAVS(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::renounceOwnership(inner) => { + ::abi_encode_raw(inner, out) + } + Self::rewardsInitiator(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setRewardsInitiator(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::stakeRegistry(inner) => { + ::abi_encode_raw(inner, out) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw(inner, out) + } + Self::updateAVSMetadataURI(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + } + } + } + ///Container for all the [`ECDSAServiceManagerBase`](self) events. + pub enum ECDSAServiceManagerBaseEvents { + Initialized(Initialized), + OwnershipTransferred(OwnershipTransferred), + RewardsInitiatorUpdated(RewardsInitiatorUpdated), + } + #[automatically_derived] + impl ECDSAServiceManagerBaseEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, 56u8, + 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, 96u8, + 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ], + [ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, 208u8, + 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, 175u8, 227u8, + 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ], + [ + 225u8, 28u8, 221u8, 241u8, 129u8, 106u8, 67u8, 49u8, 140u8, 161u8, 117u8, 187u8, + 197u8, 44u8, 208u8, 24u8, 84u8, 54u8, 233u8, 203u8, 234u8, 215u8, 200u8, 58u8, + 204u8, 84u8, 167u8, 62u8, 70u8, 23u8, 23u8, 227u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for ECDSAServiceManagerBaseEvents { + const NAME: &'static str = "ECDSAServiceManagerBaseEvents"; + const COUNT: usize = 3usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::Initialized) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OwnershipTransferred) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::RewardsInitiatorUpdated) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ECDSAServiceManagerBaseEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::RewardsInitiatorUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::RewardsInitiatorUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ECDSAServiceManagerBase`](self) contract instance. + + See the [wrapper's documentation](`ECDSAServiceManagerBaseInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ECDSAServiceManagerBaseInstance { + ECDSAServiceManagerBaseInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + ECDSAServiceManagerBaseInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + ECDSAServiceManagerBaseInstance::::deploy_builder(provider) + } + /**A [`ECDSAServiceManagerBase`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ECDSAServiceManagerBase`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ECDSAServiceManagerBaseInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ECDSAServiceManagerBaseInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ECDSAServiceManagerBaseInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ECDSAServiceManagerBaseInstance + { + /**Creates a new wrapper around an on-chain [`ECDSAServiceManagerBase`](self) contract instance. + + See the [wrapper's documentation](`ECDSAServiceManagerBaseInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ECDSAServiceManagerBaseInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ECDSAServiceManagerBaseInstance { + ECDSAServiceManagerBaseInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ECDSAServiceManagerBaseInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`avsDirectory`] function. + pub fn avsDirectory(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&avsDirectoryCall {}) + } + ///Creates a new call builder for the [`createAVSRewardsSubmission`] function. + pub fn createAVSRewardsSubmission( + &self, + rewardsSubmissions: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&createAVSRewardsSubmissionCall { rewardsSubmissions }) + } + ///Creates a new call builder for the [`deregisterOperatorFromAVS`] function. + pub fn deregisterOperatorFromAVS( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&deregisterOperatorFromAVSCall { operator }) + } + ///Creates a new call builder for the [`getOperatorRestakedStrategies`] function. + pub fn getOperatorRestakedStrategies( + &self, + _operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorRestakedStrategiesCall { _operator }) + } + ///Creates a new call builder for the [`getRestakeableStrategies`] function. + pub fn getRestakeableStrategies( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getRestakeableStrategiesCall {}) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`registerOperatorToAVS`] function. + pub fn registerOperatorToAVS( + &self, + operator: alloy::sol_types::private::Address, + operatorSignature: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterOperatorToAVSCall { + operator, + operatorSignature, + }) + } + ///Creates a new call builder for the [`renounceOwnership`] function. + pub fn renounceOwnership( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&renounceOwnershipCall {}) + } + ///Creates a new call builder for the [`rewardsInitiator`] function. + pub fn rewardsInitiator( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&rewardsInitiatorCall {}) + } + ///Creates a new call builder for the [`setRewardsInitiator`] function. + pub fn setRewardsInitiator( + &self, + newRewardsInitiator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setRewardsInitiatorCall { + newRewardsInitiator, + }) + } + ///Creates a new call builder for the [`stakeRegistry`] function. + pub fn stakeRegistry(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&stakeRegistryCall {}) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + ///Creates a new call builder for the [`updateAVSMetadataURI`] function. + pub fn updateAVSMetadataURI( + &self, + _metadataURI: alloy::sol_types::private::String, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateAVSMetadataURICall { _metadataURI }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ECDSAServiceManagerBaseInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Initialized`] event. + pub fn Initialized_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`RewardsInitiatorUpdated`] event. + pub fn RewardsInitiatorUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/ecdsastakeregistry.rs b/crates/utils/src/ecdsastakeregistry.rs new file mode 100644 index 00000000..7ad619f8 --- /dev/null +++ b/crates/utils/src/ecdsastakeregistry.rs @@ -0,0 +1,8203 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library ISignatureUtils { + struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ISignatureUtils { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SignatureWithSaltAndExpiry { + pub signature: alloy::sol_types::private::Bytes, + pub salt: alloy::sol_types::private::FixedBytes<32>, + pub expiry: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: SignatureWithSaltAndExpiry) -> Self { + (value.signature, value.salt, value.expiry) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for SignatureWithSaltAndExpiry { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + signature: tuple.0, + salt: tuple.1, + expiry: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for SignatureWithSaltAndExpiry { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for SignatureWithSaltAndExpiry { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.signature, + ), + as alloy_sol_types::SolType>::tokenize(&self.salt), + as alloy_sol_types::SolType>::tokenize(&self.expiry), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for SignatureWithSaltAndExpiry { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for SignatureWithSaltAndExpiry { + const NAME: &'static str = "SignatureWithSaltAndExpiry"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "SignatureWithSaltAndExpiry(bytes signature,bytes32 salt,uint256 expiry)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.signature, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.salt) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.expiry) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for SignatureWithSaltAndExpiry { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.signature, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.salt) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.expiry, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.signature, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.salt, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.expiry, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ISignatureUtilsInstance { + ISignatureUtilsInstance::::new(address, provider) + } + /**A [`ISignatureUtils`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ISignatureUtils`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ISignatureUtilsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ISignatureUtilsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ISignatureUtilsInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ISignatureUtilsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ISignatureUtilsInstance { + ISignatureUtilsInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library ISignatureUtils { + struct SignatureWithSaltAndExpiry { + bytes signature; + bytes32 salt; + uint256 expiry; + } +} + +interface ECDSAStakeRegistry { + struct Quorum { + StrategyParams[] strategies; + } + struct StrategyParams { + address strategy; + uint96 multiplier; + } + + error InsufficientSignedStake(); + error InsufficientWeight(); + error InvalidLength(); + error InvalidQuorum(); + error InvalidReferenceBlock(); + error InvalidSignature(); + error InvalidSignedWeight(); + error InvalidThreshold(); + error LengthMismatch(); + error MustUpdateAllOperators(); + error NotSorted(); + error OperatorAlreadyRegistered(); + error OperatorNotRegistered(); + + event Initialized(uint8 version); + event MinimumWeightUpdated(uint256 _old, uint256 _new); + event OperatorDeregistered(address indexed _operator, address indexed _avs); + event OperatorRegistered(address indexed _operator, address indexed _avs); + event OperatorWeightUpdated(address indexed _operator, uint256 oldWeight, uint256 newWeight); + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + event QuorumUpdated(Quorum _old, Quorum _new); + event SigningKeyUpdate(address indexed operator, uint256 indexed updateBlock, address indexed newSigningKey, address oldSigningKey); + event ThresholdWeightUpdated(uint256 _thresholdWeight); + event TotalWeightUpdated(uint256 oldTotalWeight, uint256 newTotalWeight); + event UpdateMinimumWeight(uint256 oldMinimumWeight, uint256 newMinimumWeight); + + constructor(address _delegationManager); + + function deregisterOperator() external; + function getLastCheckpointOperatorWeight(address _operator) external view returns (uint256); + function getLastCheckpointThresholdWeight() external view returns (uint256); + function getLastCheckpointThresholdWeightAtBlock(uint32 _blockNumber) external view returns (uint256); + function getLastCheckpointTotalWeight() external view returns (uint256); + function getLastCheckpointTotalWeightAtBlock(uint32 _blockNumber) external view returns (uint256); + function getLastestOperatorSigningKey(address _operator) external view returns (address); + function getOperatorSigningKeyAtBlock(address _operator, uint256 _blockNumber) external view returns (address); + function getOperatorWeight(address _operator) external view returns (uint256); + function getOperatorWeightAtBlock(address _operator, uint32 _blockNumber) external view returns (uint256); + function initialize(address _serviceManager, uint256 _thresholdWeight, Quorum memory _quorum) external; + function isValidSignature(bytes32 _dataHash, bytes memory _signatureData) external view returns (bytes4); + function minimumWeight() external view returns (uint256); + function operatorRegistered(address _operator) external view returns (bool); + function owner() external view returns (address); + function quorum() external view returns (Quorum memory); + function registerOperatorWithSignature(ISignatureUtils.SignatureWithSaltAndExpiry memory _operatorSignature, address _signingKey) external; + function renounceOwnership() external; + function transferOwnership(address newOwner) external; + function updateMinimumWeight(uint256 _newMinimumWeight, address[] memory _operators) external; + function updateOperatorSigningKey(address _newSigningKey) external; + function updateOperators(address[] memory _operators) external; + function updateOperatorsForQuorum(address[][] memory operatorsPerQuorum, bytes memory) external; + function updateQuorumConfig(Quorum memory _quorum, address[] memory _operators) external; + function updateStakeThreshold(uint256 _thresholdWeight) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_delegationManager", + "type": "address", + "internalType": "contract IDelegationManager" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "deregisterOperator", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getLastCheckpointOperatorWeight", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getLastCheckpointThresholdWeight", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getLastCheckpointThresholdWeightAtBlock", + "inputs": [ + { + "name": "_blockNumber", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getLastCheckpointTotalWeight", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getLastCheckpointTotalWeightAtBlock", + "inputs": [ + { + "name": "_blockNumber", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getLastestOperatorSigningKey", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorSigningKeyAtBlock", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + }, + { + "name": "_blockNumber", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorWeight", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorWeightAtBlock", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + }, + { + "name": "_blockNumber", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "_serviceManager", + "type": "address", + "internalType": "address" + }, + { + "name": "_thresholdWeight", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_quorum", + "type": "tuple", + "internalType": "struct Quorum", + "components": [ + { + "name": "strategies", + "type": "tuple[]", + "internalType": "struct StrategyParams[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "isValidSignature", + "inputs": [ + { + "name": "_dataHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "_signatureData", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "minimumWeight", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "operatorRegistered", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "quorum", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct Quorum", + "components": [ + { + "name": "strategies", + "type": "tuple[]", + "internalType": "struct StrategyParams[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registerOperatorWithSignature", + "inputs": [ + { + "name": "_operatorSignature", + "type": "tuple", + "internalType": "struct ISignatureUtils.SignatureWithSaltAndExpiry", + "components": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "salt", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "_signingKey", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateMinimumWeight", + "inputs": [ + { + "name": "_newMinimumWeight", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_operators", + "type": "address[]", + "internalType": "address[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateOperatorSigningKey", + "inputs": [ + { + "name": "_newSigningKey", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateOperators", + "inputs": [ + { + "name": "_operators", + "type": "address[]", + "internalType": "address[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateOperatorsForQuorum", + "inputs": [ + { + "name": "operatorsPerQuorum", + "type": "address[][]", + "internalType": "address[][]" + }, + { + "name": "", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateQuorumConfig", + "inputs": [ + { + "name": "_quorum", + "type": "tuple", + "internalType": "struct Quorum", + "components": [ + { + "name": "strategies", + "type": "tuple[]", + "internalType": "struct StrategyParams[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ] + }, + { + "name": "_operators", + "type": "address[]", + "internalType": "address[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateStakeThreshold", + "inputs": [ + { + "name": "_thresholdWeight", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "MinimumWeightUpdated", + "inputs": [ + { + "name": "_old", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "_new", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorDeregistered", + "inputs": [ + { + "name": "_operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_avs", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorRegistered", + "inputs": [ + { + "name": "_operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_avs", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorWeightUpdated", + "inputs": [ + { + "name": "_operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "oldWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "newWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "QuorumUpdated", + "inputs": [ + { + "name": "_old", + "type": "tuple", + "indexed": false, + "internalType": "struct Quorum", + "components": [ + { + "name": "strategies", + "type": "tuple[]", + "internalType": "struct StrategyParams[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ] + }, + { + "name": "_new", + "type": "tuple", + "indexed": false, + "internalType": "struct Quorum", + "components": [ + { + "name": "strategies", + "type": "tuple[]", + "internalType": "struct StrategyParams[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "SigningKeyUpdate", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "updateBlock", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "newSigningKey", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "oldSigningKey", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ThresholdWeightUpdated", + "inputs": [ + { + "name": "_thresholdWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "TotalWeightUpdated", + "inputs": [ + { + "name": "oldTotalWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "newTotalWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "UpdateMinimumWeight", + "inputs": [ + { + "name": "oldMinimumWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "newMinimumWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "InsufficientSignedStake", + "inputs": [] + }, + { + "type": "error", + "name": "InsufficientWeight", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidLength", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidQuorum", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidReferenceBlock", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidSignature", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidSignedWeight", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidThreshold", + "inputs": [] + }, + { + "type": "error", + "name": "LengthMismatch", + "inputs": [] + }, + { + "type": "error", + "name": "MustUpdateAllOperators", + "inputs": [] + }, + { + "type": "error", + "name": "NotSorted", + "inputs": [] + }, + { + "type": "error", + "name": "OperatorAlreadyRegistered", + "inputs": [] + }, + { + "type": "error", + "name": "OperatorNotRegistered", + "inputs": [] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ECDSAStakeRegistry { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60a06040523480156200001157600080fd5b506040516200299538038062002995833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b60805161290162000094600039600061071901526129016000f3fe608060405234801561001057600080fd5b50600436106101725760003560e01c8063696255be116100de57806398ec1ac911610097578063cdcd358111610071578063cdcd358114610315578063dec5d1f614610328578063ec7fbb311461033b578063f2fde38b1461037757600080fd5b806398ec1ac9146102e7578063ab118995146102fa578063b933fa741461030d57600080fd5b8063696255be1461028d578063715018a6146102a0578063743c31f4146102a8578063857dc190146102bb5780638da5cb5b146102c3578063955f2d90146102d457600080fd5b80633b242e4a116101305780633b242e4a1461020e5780633d5611f61461022157806340bf2fb7146102345780635140a5481461023c5780635e1042e81461024f5780635ef533291461027a57600080fd5b8062cf2ab5146101775780630dba33941461018c5780631626ba7e146101b25780631703a018146101de5780631e4cd85e146101f3578063314f3a4914610206575b600080fd5b61018a610185366004611dee565b61038a565b005b61019f61019a366004611e3c565b610396565b6040519081526020015b60405180910390f35b6101c56101c0366004611ed1565b6103b2565b6040516001600160e01b031990911681526020016101a9565b6101e66103f0565b6040516101a99190611f7a565b61019f610201366004611e3c565b610483565b61019f610499565b61019f61021c366004611f8d565b6104aa565b61018a61022f366004611faa565b6104cb565b60675461019f565b61018a61024a366004612057565b6104da565b61026261025d366004612120565b6104fd565b6040516001600160a01b0390911681526020016101a9565b61018a61028836600461214c565b610526565b61018a61029b366004612165565b610537565b61018a610551565b61018a6102b6366004611f8d565b610565565b61018a61059f565b6033546001600160a01b0316610262565b61019f6102e23660046121a1565b6105a8565b61019f6102f5366004611f8d565b6105d3565b61018a6103083660046122b0565b61083a565b61019f610956565b610262610323366004611f8d565b610962565b61018a610336366004612308565b610983565b610367610349366004611f8d565b6001600160a01b03166000908152606e602052604090205460ff1690565b60405190151581526020016101a9565b61018a610385366004611f8d565b610994565b61039381610a0a565b50565b60006103ac606b63ffffffff80851690610a6116565b92915050565b600080600080848060200190518101906103cc9190612458565b9250925092506103de86848484610b70565b50630b135d3f60e11b95945050505050565b6040805160208101909152606081526040805160668054602081810284018501855283018181529293919284929091849160009085015b8282101561047657600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101610427565b5050505081525050905090565b60006103ac606c63ffffffff80851690610a6116565b60006104a5606b610c2f565b905090565b6001600160a01b0381166000908152606d602052604081206103ac90610c2f565b6104d6338383610c8b565b5050565b6104d6826000815181106104f0576104f061252c565b6020026020010151610dc3565b6001600160a01b0382166000908152606a6020526040812061051f9083610a61565b9392505050565b61052e610de6565b61039381610e40565b61053f610de6565b61054882610e83565b6104d681610a0a565b610559610de6565b6105636000610ec9565b565b336000908152606e602052604090205460ff16610595576040516325ec6c1f60e01b815260040160405180910390fd5b6103933382610f1b565b61056333610fce565b6001600160a01b0382166000908152606d6020526040812061051f9063ffffffff80851690610a6116565b6000806066600001805480602002602001604051908101604052809291908181526020016000905b8282101561064a57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b0316818301528252600190920191016105fb565b50505050905060008082516001600160401b0381111561066c5761066c611cb2565b604051908082528060200260200182016040528015610695578160200160208202803683370190505b50905060005b83518110156106fe578381815181106106b6576106b661252c565b6020026020010151600001518282815181106106d4576106d461252c565b6001600160a01b0390921660209283029190910190910152806106f681612558565b91505061069b565b50604051639004134760e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906390041347906107509089908690600401612573565b600060405180830381865afa15801561076d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261079591908101906125cf565b905060005b845181101561080c578481815181106107b5576107b561252c565b6020026020010151602001516001600160601b03168282815181106107dc576107dc61252c565b60200260200101516107ee919061265f565b6107f8908561267e565b93508061080481612558565b91505061079a565b5061081961271084612696565b9250606754831061082e575090949350505050565b50600095945050505050565b600054610100900460ff161580801561085a5750600054600160ff909116105b806108745750303b158015610874575060005460ff166001145b6108dc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156108ff576000805461ff0019166101001790555b61090a8484846110f1565b8015610950576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60006104a5606c610c2f565b6001600160a01b0381166000908152606a602052604081206103ac90610c2f565b61098b610de6565b61054882611152565b61099c610de6565b6001600160a01b038116610a015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108d3565b61039381610ec9565b6000805b8251811015610a5757610a39838281518110610a2c57610a2c61252c565b60200260200101516112b1565b610a4390836126b8565b915080610a4f81612558565b915050610a0e565b50610950816113d4565b6000438210610ab25760405162461bcd60e51b815260206004820181905260248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e656460448201526064016108d3565b825460005b81811015610b17576000610acb8284611440565b905084866000018281548110610ae357610ae361252c565b60009182526020909120015463ffffffff161115610b0357809250610b11565b610b0e81600161267e565b91505b50610ab7565b8115610b5b5784610b296001846126f9565b81548110610b3957610b3961252c565b60009182526020909120015464010000000090046001600160e01b0316610b5e565b60005b6001600160e01b031695945050505050565b600083519050600080600080610b8785885161145b565b60005b85811015610c1957888181518110610ba457610ba461252c565b60200260200101519450610bb8858861149c565b9250610bc484866114ef565b610be8838b8a8481518110610bdb57610bdb61252c565b6020026020010151611521565b8493506000610bf78689611552565b9050610c03818461267e565b9250508080610c1190612558565b915050610b8a565b50610c2481876115a5565b505050505050505050565b80546000908015610c785782610c466001836126f9565b81548110610c5657610c5661252c565b60009182526020909120015464010000000090046001600160e01b0316610c7b565b60005b6001600160e01b03169392505050565b6001600160a01b0383166000908152606e602052604090205460ff1615610cc5576040516342ee68b560e01b815260040160405180910390fd5b60658054906000610cd583612558565b90915550506001600160a01b0383166000908152606e60205260408120805460ff19166001179055610d06846112b1565b9050610d11816113d4565b5050610d1d8483610f1b565b606854604051639926ee7d60e01b81526001600160a01b0390911690639926ee7d90610d4f908790879060040161273c565b600060405180830381600087803b158015610d6957600080fd5b505af1158015610d7d573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090871691507fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c190600090a350505050565b60655481511461038a5760405163169efb5b60e11b815260040160405180910390fd5b6033546001600160a01b031633146105635760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108d3565b610e4b606c82611601565b50506040518181527f9324f7e5a7c0288808a634ccde44b8e979676474b22e29ee9dd569b55e791a4b9060200160405180910390a150565b606780549082905560408051828152602081018490527f713ca53b88d6eb63f5b1854cb8cbdd736ec51eda225e46791aa9298b0160648f91015b60405180910390a15050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000908152606a60205260408120610f3c90610c2f565b9050806001600160a01b0316826001600160a01b03161415610f5d57505050565b6001600160a01b038381166000908152606a60205260409020610f81918416611601565b50506040516001600160a01b0382811682528084169143918616907fd061168252f441733658f09e4d8f5b2d998ed4ef24a2bbfd6ceca52ea13150029060200160405180910390a4505050565b6001600160a01b0381166000908152606e602052604090205460ff16611007576040516325ec6c1f60e01b815260040160405180910390fd5b6065805490600061101783612787565b90915550506001600160a01b0381166000908152606e60205260408120805460ff19169055611045826112b1565b9050611050816113d4565b50506068546040516351b27a6d60e11b81526001600160a01b0384811660048301529091169063a364f4da90602401600060405180830381600087803b15801561109957600080fd5b505af11580156110ad573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090851691507f31e0adfec71bccee37b6e83a90c2fedb17d8f1693fee863c4771e7bfe2aed58090600090a35050565b600054610100900460ff166111185760405162461bcd60e51b81526004016108d39061279e565b606880546001600160a01b0319166001600160a01b03851617905561113c82610e40565b61114581611152565b61114d61172c565b505050565b61115b8161175b565b6111785760405163d173577960e01b815260040160405180910390fd5b60408051606680546020818102840185018552830181815260009484928491879085015b828210156111eb57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b03168183015282526001909201910161119c565b5050509152509091506066905060006112048282611c84565b505060005b82515181101561127f5782518051606691908390811061122b5761122b61252c565b6020908102919091018101518254600181018455600093845292829020815191909201516001600160601b0316600160a01b026001600160a01b03909116179101558061127781612558565b915050611209565b507f23aad4e61744ece164130aa415c1616e80136b0f0770e56589438b90b269265e8183604051610ebd9291906127e9565b6001600160a01b0381166000908152606d602052604081208190819081906112d890610c2f565b6001600160a01b0386166000908152606e602052604090205490915060ff1661133d576113058184612817565b9250826113155750909392505050565b6001600160a01b0385166000908152606d6020526040812061133691611601565b5050611387565b611346856105d3565b91506113528183612817565b9250826113625750909392505050565b6001600160a01b0385166000908152606d602052604090206113849083611601565b50505b60408051828152602081018490526001600160a01b038716917f88770dc862e47a7ed586907857eb1b75e4c5ffc8b707c7ee10eb74d6885fe594910160405180910390a250909392505050565b6000806113e1606b610c2f565b915060006113ef84846126b8565b91508190506113ff606b82611601565b505060408051848152602081018490527f86dcf86b12dfeedea74ae9300dbdaa193bcce5809369c8177ea2f4eaaa65729b910160405180910390a150915091565b600061144f6002848418612696565b61051f9084841661267e565b80821461147e576040516001621398b960e31b0319815260040160405180910390fd5b816104d65760405163251f56a160e21b815260040160405180910390fd5b6000438263ffffffff16106114c45760405163e64f180f60e01b815260040160405180910390fd5b6001600160a01b0383166000908152606a6020526040902061051f9063ffffffff80851690610a6116565b806001600160a01b0316826001600160a01b0316106104d65760405163ba50f91160e01b815260040160405180910390fd5b6115356001600160a01b038416838361182b565b61114d57604051638baa579f60e01b815260040160405180910390fd5b6000438263ffffffff161061157a5760405163e64f180f60e01b815260040160405180910390fd5b6001600160a01b0383166000908152606d6020526040902061051f9063ffffffff80851690610a6116565b60006115b082611977565b9050808311156115d357604051634b05a0f760e11b815260040160405180910390fd5b60006115de836119b3565b9050838111156109505760405163e121632f60e01b815260040160405180910390fd5b815460009081908161161286610c2f565b90506000821180156116505750438661162c6001856126f9565b8154811061163c5761163c61252c565b60009182526020909120015463ffffffff16145b156116b05761165e856119ef565b8661166a6001856126f9565b8154811061167a5761167a61252c565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b0316021790555061171e565b8560000160405180604001604052806116c843611a5c565b63ffffffff1681526020016116dc886119ef565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b9250839150505b9250929050565b600054610100900460ff166117535760405162461bcd60e51b81526004016108d39061279e565b610563611ac1565b8051600090818080805b8451811015611809578481815181106117805761178061252c565b6020026020010151600001519250826001600160a01b0316846001600160a01b0316106117c05760405163ba50f91160e01b815260040160405180910390fd5b8293508481815181106117d5576117d561252c565b6020026020010151602001516001600160601b0316826117f5919061267e565b91508061180181612558565b915050611765565b50612710811461181f5750600095945050505050565b50600195945050505050565b600080600061183a8585611af1565b9092509050600081600481111561185357611853612856565b1480156118715750856001600160a01b0316826001600160a01b0316145b156118815760019250505061051f565b600080876001600160a01b0316631626ba7e60e01b88886040516024016118a992919061286c565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516118e79190612885565b600060405180830381855afa9150503d8060008114611922576040519150601f19603f3d011682016040523d82523d6000602084013e611927565b606091505b509150915081801561193a575080516020145b801561196b57508051630b135d3f60e11b9061195f90830160209081019084016128a1565b6001600160e01b031916145b98975050505050505050565b6000438263ffffffff161061199f5760405163e64f180f60e01b815260040160405180910390fd5b6103ac606b63ffffffff80851690610a6116565b6000438263ffffffff16106119db5760405163e64f180f60e01b815260040160405180910390fd5b6103ac606c63ffffffff80851690610a6116565b60006001600160e01b03821115611a585760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016108d3565b5090565b600063ffffffff821115611a585760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016108d3565b600054610100900460ff16611ae85760405162461bcd60e51b81526004016108d39061279e565b61056333610ec9565b600080825160411415611b285760208301516040840151606085015160001a611b1c87828585611b5e565b94509450505050611725565b825160401415611b525760208301516040840151611b47868383611c4b565b935093505050611725565b50600090506002611725565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611b955750600090506003611c42565b8460ff16601b14158015611bad57508460ff16601c14155b15611bbe5750600090506004611c42565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611c12573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611c3b57600060019250925050611c42565b9150600090505b94509492505050565b6000806001600160ff1b03831681611c6860ff86901c601b61267e565b9050611c7687828885611b5e565b935093505050935093915050565b508054600082559060005260206000209081019061039391905b80821115611a585760008155600101611c9e565b634e487b7160e01b600052604160045260246000fd5b604051602081016001600160401b0381118282101715611cea57611cea611cb2565b60405290565b604080519081016001600160401b0381118282101715611cea57611cea611cb2565b604051601f8201601f191681016001600160401b0381118282101715611d3a57611d3a611cb2565b604052919050565b60006001600160401b03821115611d5b57611d5b611cb2565b5060051b60200190565b6001600160a01b038116811461039357600080fd5b600082601f830112611d8b57600080fd5b81356020611da0611d9b83611d42565b611d12565b82815260059290921b84018101918181019086841115611dbf57600080fd5b8286015b84811015611de3578035611dd681611d65565b8352918301918301611dc3565b509695505050505050565b600060208284031215611e0057600080fd5b81356001600160401b03811115611e1657600080fd5b611e2284828501611d7a565b949350505050565b63ffffffff8116811461039357600080fd5b600060208284031215611e4e57600080fd5b813561051f81611e2a565b60006001600160401b03821115611e7257611e72611cb2565b50601f01601f191660200190565b600082601f830112611e9157600080fd5b8135611e9f611d9b82611e59565b818152846020838601011115611eb457600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215611ee457600080fd5b8235915060208301356001600160401b03811115611f0157600080fd5b611f0d85828601611e80565b9150509250929050565b8051602080845281518482018190526000926040919083019082870190855b81811015611f6d57835180516001600160a01b031684528601516001600160601b0316868401529285019291840191600101611f36565b5090979650505050505050565b60208152600061051f6020830184611f17565b600060208284031215611f9f57600080fd5b813561051f81611d65565b60008060408385031215611fbd57600080fd5b82356001600160401b0380821115611fd457600080fd5b9084019060608287031215611fe857600080fd5b60405160608101818110838211171561200357612003611cb2565b60405282358281111561201557600080fd5b61202188828601611e80565b8252506020830135602082015260408301356040820152809450505050602083013561204c81611d65565b809150509250929050565b6000806040838503121561206a57600080fd5b82356001600160401b038082111561208157600080fd5b818501915085601f83011261209557600080fd5b813560206120a5611d9b83611d42565b82815260059290921b840181019181810190898411156120c457600080fd5b8286015b848110156120fc578035868111156120e05760008081fd5b6120ee8c86838b0101611d7a565b8452509183019183016120c8565b509650508601359250508082111561211357600080fd5b50611f0d85828601611e80565b6000806040838503121561213357600080fd5b823561213e81611d65565b946020939093013593505050565b60006020828403121561215e57600080fd5b5035919050565b6000806040838503121561217857600080fd5b8235915060208301356001600160401b0381111561219557600080fd5b611f0d85828601611d7a565b600080604083850312156121b457600080fd5b82356121bf81611d65565b9150602083013561204c81611e2a565b600060208083850312156121e257600080fd5b6121ea611cc8565b915082356001600160401b0381111561220257600080fd5b8301601f8101851361221357600080fd5b8035612221611d9b82611d42565b81815260069190911b8201830190838101908783111561224057600080fd5b928401925b828410156122a3576040848903121561225e5760008081fd5b612266611cf0565b843561227181611d65565b8152848601356001600160601b038116811461228d5760008081fd5b8187015282526040939093019290840190612245565b8552509295945050505050565b6000806000606084860312156122c557600080fd5b83356122d081611d65565b92506020840135915060408401356001600160401b038111156122f257600080fd5b6122fe868287016121cf565b9150509250925092565b6000806040838503121561231b57600080fd5b82356001600160401b038082111561233257600080fd5b61233e868387016121cf565b9350602085013591508082111561235457600080fd5b50611f0d85828601611d7a565b60005b8381101561237c578181015183820152602001612364565b838111156109505750506000910152565b600082601f83011261239e57600080fd5b815160206123ae611d9b83611d42565b82815260059290921b840181019181810190868411156123cd57600080fd5b8286015b84811015611de35780516001600160401b038111156123f05760008081fd5b8701603f810189136124025760008081fd5b848101516040612414611d9b83611e59565b8281528b828486010111156124295760008081fd5b61243883898301848701612361565b86525050509183019183016123d1565b805161245381611e2a565b919050565b60008060006060848603121561246d57600080fd5b83516001600160401b038082111561248457600080fd5b818601915086601f83011261249857600080fd5b815160206124a8611d9b83611d42565b82815260059290921b8401810191818101908a8411156124c757600080fd5b948201945b838610156124ee5785516124df81611d65565b825294820194908201906124cc565b9189015191975090935050508082111561250757600080fd5b506125148682870161238d565b92505061252360408501612448565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561256c5761256c612542565b5060010190565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b818110156125c15785518516835294830194918301916001016125a3565b509098975050505050505050565b600060208083850312156125e257600080fd5b82516001600160401b038111156125f857600080fd5b8301601f8101851361260957600080fd5b8051612617611d9b82611d42565b81815260059190911b8201830190838101908783111561263657600080fd5b928401925b828410156126545783518252928401929084019061263b565b979650505050505050565b600081600019048311821515161561267957612679612542565b500290565b6000821982111561269157612691612542565b500190565b6000826126b357634e487b7160e01b600052601260045260246000fd5b500490565b600080821280156001600160ff1b03849003851316156126da576126da612542565b600160ff1b83900384128116156126f3576126f3612542565b50500190565b60008282101561270b5761270b612542565b500390565b60008151808452612728816020860160208601612361565b601f01601f19169290920160200192915050565b60018060a01b038316815260406020820152600082516060604084015261276660a0840182612710565b90506020840151606084015260408401516080840152809150509392505050565b60008161279657612796612542565b506000190190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6040815260006127fc6040830185611f17565b828103602084015261280e8185611f17565b95945050505050565b60008083128015600160ff1b85018412161561283557612835612542565b6001600160ff1b038401831381161561285057612850612542565b50500390565b634e487b7160e01b600052602160045260246000fd5b828152604060208201526000611e226040830184612710565b60008251612897818460208701612361565b9190910192915050565b6000602082840312156128b357600080fd5b81516001600160e01b03198116811461051f57600080fdfea264697066735822122041a1848da3a333d4821839e44ee9cccc30bf436bcb37f47a0d3f0d7c8247493364736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0)\x958\x03\x80b\0)\x95\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0FV[`\x01`\x01`\xA0\x1B\x03\x16`\x80Rb\0\0xV[`\0` \x82\x84\x03\x12\x15b\0\0YW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0qW`\0\x80\xFD[\x93\x92PPPV[`\x80Qa)\x01b\0\0\x94`\09`\0a\x07\x19\x01Ra)\x01`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01rW`\x005`\xE0\x1C\x80cibU\xBE\x11a\0\xDEW\x80c\x98\xEC\x1A\xC9\x11a\0\x97W\x80c\xCD\xCD5\x81\x11a\0qW\x80c\xCD\xCD5\x81\x14a\x03\x15W\x80c\xDE\xC5\xD1\xF6\x14a\x03(W\x80c\xEC\x7F\xBB1\x14a\x03;W\x80c\xF2\xFD\xE3\x8B\x14a\x03wW`\0\x80\xFD[\x80c\x98\xEC\x1A\xC9\x14a\x02\xE7W\x80c\xAB\x11\x89\x95\x14a\x02\xFAW\x80c\xB93\xFAt\x14a\x03\rW`\0\x80\xFD[\x80cibU\xBE\x14a\x02\x8DW\x80cqP\x18\xA6\x14a\x02\xA0W\x80ct<1\xF4\x14a\x02\xA8W\x80c\x85}\xC1\x90\x14a\x02\xBBW\x80c\x8D\xA5\xCB[\x14a\x02\xC3W\x80c\x95_-\x90\x14a\x02\xD4W`\0\x80\xFD[\x80c;$.J\x11a\x010W\x80c;$.J\x14a\x02\x0EW\x80c=V\x11\xF6\x14a\x02!W\x80c@\xBF/\xB7\x14a\x024W\x80cQ@\xA5H\x14a\x02=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x07\x95\x91\x90\x81\x01\x90a%\xCFV[\x90P`\0[\x84Q\x81\x10\x15a\x08\x0CW\x84\x81\x81Q\x81\x10a\x07\xB5Wa\x07\xB5a%,V[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x07\xDCWa\x07\xDCa%,V[` \x02` \x01\x01Qa\x07\xEE\x91\x90a&_V[a\x07\xF8\x90\x85a&~V[\x93P\x80a\x08\x04\x81a%XV[\x91PPa\x07\x9AV[Pa\x08\x19a'\x10\x84a&\x96V[\x92P`gT\x83\x10a\x08.WP\x90\x94\x93PPPPV[P`\0\x95\x94PPPPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x08ZWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x08tWP0;\x15\x80\x15a\x08tWP`\0T`\xFF\x16`\x01\x14[a\x08\xDCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x08\xFFW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\t\n\x84\x84\x84a\x10\xF1V[\x80\x15a\tPW`\0\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPV[`\0a\x04\xA5`la\x0C/V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`j` R`@\x81 a\x03\xAC\x90a\x0C/V[a\t\x8Ba\r\xE6V[a\x05H\x82a\x11RV[a\t\x9Ca\r\xE6V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\n\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x08\xD3V[a\x03\x93\x81a\x0E\xC9V[`\0\x80[\x82Q\x81\x10\x15a\nWWa\n9\x83\x82\x81Q\x81\x10a\n,Wa\n,a%,V[` \x02` \x01\x01Qa\x12\xB1V[a\nC\x90\x83a&\xB8V[\x91P\x80a\nO\x81a%XV[\x91PPa\n\x0EV[Pa\tP\x81a\x13\xD4V[`\0C\x82\x10a\n\xB2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FCheckpoints: block not yet mined`D\x82\x01R`d\x01a\x08\xD3V[\x82T`\0[\x81\x81\x10\x15a\x0B\x17W`\0a\n\xCB\x82\x84a\x14@V[\x90P\x84\x86`\0\x01\x82\x81T\x81\x10a\n\xE3Wa\n\xE3a%,V[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x0B\x03W\x80\x92Pa\x0B\x11V[a\x0B\x0E\x81`\x01a&~V[\x91P[Pa\n\xB7V[\x81\x15a\x0B[W\x84a\x0B)`\x01\x84a&\xF9V[\x81T\x81\x10a\x0B9Wa\x0B9a%,V[`\0\x91\x82R` \x90\x91 \x01Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\x0B^V[`\0[`\x01`\x01`\xE0\x1B\x03\x16\x95\x94PPPPPV[`\0\x83Q\x90P`\0\x80`\0\x80a\x0B\x87\x85\x88Qa\x14[V[`\0[\x85\x81\x10\x15a\x0C\x19W\x88\x81\x81Q\x81\x10a\x0B\xA4Wa\x0B\xA4a%,V[` \x02` \x01\x01Q\x94Pa\x0B\xB8\x85\x88a\x14\x9CV[\x92Pa\x0B\xC4\x84\x86a\x14\xEFV[a\x0B\xE8\x83\x8B\x8A\x84\x81Q\x81\x10a\x0B\xDBWa\x0B\xDBa%,V[` \x02` \x01\x01Qa\x15!V[\x84\x93P`\0a\x0B\xF7\x86\x89a\x15RV[\x90Pa\x0C\x03\x81\x84a&~V[\x92PP\x80\x80a\x0C\x11\x90a%XV[\x91PPa\x0B\x8AV[Pa\x0C$\x81\x87a\x15\xA5V[PPPPPPPPPV[\x80T`\0\x90\x80\x15a\x0CxW\x82a\x0CF`\x01\x83a&\xF9V[\x81T\x81\x10a\x0CVWa\x0CVa%,V[`\0\x91\x82R` \x90\x91 \x01Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\x0C{V[`\0[`\x01`\x01`\xE0\x1B\x03\x16\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`n` R`@\x90 T`\xFF\x16\x15a\x0C\xC5W`@QcB\xEEh\xB5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`e\x80T\x90`\0a\x0C\xD5\x83a%XV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`n` R`@\x81 \x80T`\xFF\x19\x16`\x01\x17\x90Ua\r\x06\x84a\x12\xB1V[\x90Pa\r\x11\x81a\x13\xD4V[PPa\r\x1D\x84\x83a\x0F\x1BV[`hT`@Qc\x99&\xEE}`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x99&\xEE}\x90a\rO\x90\x87\x90\x87\x90`\x04\x01a'=`\0\xFD[PP`hT`@Q`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x93P\x90\x87\x16\x91P\x7F\xA4S\xDBa*\xF5\x9EU!\xD6\xAB\x92\x84\xDC>-\x06\xAF(n\xB1\xB1\xB7\xB7q\xFC\xE4ql\x19\xF2\xC1\x90`\0\x90\xA3PPPPV[`eT\x81Q\x14a\x03\x8AW`@Qc\x16\x9E\xFB[`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x05cW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x08\xD3V[a\x0EK`l\x82a\x16\x01V[PP`@Q\x81\x81R\x7F\x93$\xF7\xE5\xA7\xC0(\x88\x08\xA64\xCC\xDED\xB8\xE9ygdt\xB2.)\xEE\x9D\xD5i\xB5^y\x1AK\x90` \x01`@Q\x80\x91\x03\x90\xA1PV[`g\x80T\x90\x82\x90U`@\x80Q\x82\x81R` \x81\x01\x84\x90R\x7Fq<\xA5;\x88\xD6\xEBc\xF5\xB1\x85L\xB8\xCB\xDDsn\xC5\x1E\xDA\"^Fy\x1A\xA9)\x8B\x01`d\x8F\x91\x01[`@Q\x80\x91\x03\x90\xA1PPV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`j` R`@\x81 a\x0F<\x90a\x0C/V[\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x0F]WPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x90\x81R`j` R`@\x90 a\x0F\x81\x91\x84\x16a\x16\x01V[PP`@Q`\x01`\x01`\xA0\x1B\x03\x82\x81\x16\x82R\x80\x84\x16\x91C\x91\x86\x16\x90\x7F\xD0a\x16\x82R\xF4As6X\xF0\x9EM\x8F[-\x99\x8E\xD4\xEF$\xA2\xBB\xFDl\xEC\xA5.\xA11P\x02\x90` \x01`@Q\x80\x91\x03\x90\xA4PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`n` R`@\x90 T`\xFF\x16a\x10\x07W`@Qc%\xECl\x1F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`e\x80T\x90`\0a\x10\x17\x83a'\x87V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`n` R`@\x81 \x80T`\xFF\x19\x16\x90Ua\x10E\x82a\x12\xB1V[\x90Pa\x10P\x81a\x13\xD4V[PP`hT`@QcQ\xB2zm`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R\x90\x91\x16\x90c\xA3d\xF4\xDA\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x10\x99W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x10\xADW=`\0\x80>=`\0\xFD[PP`hT`@Q`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x93P\x90\x85\x16\x91P\x7F1\xE0\xAD\xFE\xC7\x1B\xCC\xEE7\xB6\xE8:\x90\xC2\xFE\xDB\x17\xD8\xF1i?\xEE\x86a\x19'V[``\x91P[P\x91P\x91P\x81\x80\x15a\x19:WP\x80Q` \x14[\x80\x15a\x19kWP\x80Qc\x0B\x13]?`\xE1\x1B\x90a\x19_\x90\x83\x01` \x90\x81\x01\x90\x84\x01a(\xA1V[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[\x98\x97PPPPPPPPV[`\0C\x82c\xFF\xFF\xFF\xFF\x16\x10a\x19\x9FW`@Qc\xE6O\x18\x0F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x03\xAC`kc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\na\x16V[`\0C\x82c\xFF\xFF\xFF\xFF\x16\x10a\x19\xDBW`@Qc\xE6O\x18\x0F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x03\xAC`lc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\na\x16V[`\0`\x01`\x01`\xE0\x1B\x03\x82\x11\x15a\x1AXW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FSafeCast: value doesn't fit in 2`D\x82\x01Rf24 bits`\xC8\x1B`d\x82\x01R`\x84\x01a\x08\xD3V[P\x90V[`\0c\xFF\xFF\xFF\xFF\x82\x11\x15a\x1AXW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FSafeCast: value doesn't fit in 3`D\x82\x01Re2 bits`\xD0\x1B`d\x82\x01R`\x84\x01a\x08\xD3V[`\0Ta\x01\0\x90\x04`\xFF\x16a\x1A\xE8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xD3\x90a'\x9EV[a\x05c3a\x0E\xC9V[`\0\x80\x82Q`A\x14\x15a\x1B(W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1Aa\x1B\x1C\x87\x82\x85\x85a\x1B^V[\x94P\x94PPPPa\x17%V[\x82Q`@\x14\x15a\x1BRW` \x83\x01Q`@\x84\x01Qa\x1BG\x86\x83\x83a\x1CKV[\x93P\x93PPPa\x17%V[P`\0\x90P`\x02a\x17%V[`\0\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x83\x11\x15a\x1B\x95WP`\0\x90P`\x03a\x1CBV[\x84`\xFF\x16`\x1B\x14\x15\x80\x15a\x1B\xADWP\x84`\xFF\x16`\x1C\x14\x15[\x15a\x1B\xBEWP`\0\x90P`\x04a\x1CBV[`@\x80Q`\0\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x1C\x12W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1C;W`\0`\x01\x92P\x92PPa\x1CBV[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81a\x1Ch`\xFF\x86\x90\x1C`\x1Ba&~V[\x90Pa\x1Cv\x87\x82\x88\x85a\x1B^V[\x93P\x93PPP\x93P\x93\x91PPV[P\x80T`\0\x82U\x90`\0R` `\0 \x90\x81\x01\x90a\x03\x93\x91\x90[\x80\x82\x11\x15a\x1AXW`\0\x81U`\x01\x01a\x1C\x9EV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q` \x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1C\xEAWa\x1C\xEAa\x1C\xB2V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1C\xEAWa\x1C\xEAa\x1C\xB2V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1D:Wa\x1D:a\x1C\xB2V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x1D[Wa\x1D[a\x1C\xB2V[P`\x05\x1B` \x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x93W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a\x1D\x8BW`\0\x80\xFD[\x815` a\x1D\xA0a\x1D\x9B\x83a\x1DBV[a\x1D\x12V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\x1D\xBFW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x1D\xE3W\x805a\x1D\xD6\x81a\x1DeV[\x83R\x91\x83\x01\x91\x83\x01a\x1D\xC3V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a\x1E\0W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\x16W`\0\x80\xFD[a\x1E\"\x84\x82\x85\x01a\x1DzV[\x94\x93PPPPV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x03\x93W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x1ENW`\0\x80\xFD[\x815a\x05\x1F\x81a\x1E*V[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x1ErWa\x1Era\x1C\xB2V[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x1E\x91W`\0\x80\xFD[\x815a\x1E\x9Fa\x1D\x9B\x82a\x1EYV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x1E\xB4W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x1E\xE4W`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1F\x01W`\0\x80\xFD[a\x1F\r\x85\x82\x86\x01a\x1E\x80V[\x91PP\x92P\x92\x90PV[\x80Q` \x80\x84R\x81Q\x84\x82\x01\x81\x90R`\0\x92`@\x91\x90\x83\x01\x90\x82\x87\x01\x90\x85[\x81\x81\x10\x15a\x1FmW\x83Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x86\x01Q`\x01`\x01``\x1B\x03\x16\x86\x84\x01R\x92\x85\x01\x92\x91\x84\x01\x91`\x01\x01a\x1F6V[P\x90\x97\x96PPPPPPPV[` \x81R`\0a\x05\x1F` \x83\x01\x84a\x1F\x17V[`\0` \x82\x84\x03\x12\x15a\x1F\x9FW`\0\x80\xFD[\x815a\x05\x1F\x81a\x1DeV[`\0\x80`@\x83\x85\x03\x12\x15a\x1F\xBDW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x1F\xD4W`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a\x1F\xE8W`\0\x80\xFD[`@Q``\x81\x01\x81\x81\x10\x83\x82\x11\x17\x15a \x03Wa \x03a\x1C\xB2V[`@R\x825\x82\x81\x11\x15a \x15W`\0\x80\xFD[a !\x88\x82\x86\x01a\x1E\x80V[\x82RP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x94PPPP` \x83\x015a L\x81a\x1DeV[\x80\x91PP\x92P\x92\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a jW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a \x81W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a \x95W`\0\x80\xFD[\x815` a \xA5a\x1D\x9B\x83a\x1DBV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a \xC4W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a \xFCW\x805\x86\x81\x11\x15a \xE0W`\0\x80\x81\xFD[a \xEE\x8C\x86\x83\x8B\x01\x01a\x1DzV[\x84RP\x91\x83\x01\x91\x83\x01a \xC8V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a!\x13W`\0\x80\xFD[Pa\x1F\r\x85\x82\x86\x01a\x1E\x80V[`\0\x80`@\x83\x85\x03\x12\x15a!3W`\0\x80\xFD[\x825a!>\x81a\x1DeV[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a!^W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a!xW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a!\x95W`\0\x80\xFD[a\x1F\r\x85\x82\x86\x01a\x1DzV[`\0\x80`@\x83\x85\x03\x12\x15a!\xB4W`\0\x80\xFD[\x825a!\xBF\x81a\x1DeV[\x91P` \x83\x015a L\x81a\x1E*V[`\0` \x80\x83\x85\x03\x12\x15a!\xE2W`\0\x80\xFD[a!\xEAa\x1C\xC8V[\x91P\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\x02W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\"\x13W`\0\x80\xFD[\x805a\"!a\x1D\x9B\x82a\x1DBV[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\"@W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\"\xA3W`@\x84\x89\x03\x12\x15a\"^W`\0\x80\x81\xFD[a\"fa\x1C\xF0V[\x845a\"q\x81a\x1DeV[\x81R\x84\x86\x015`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\"\x8DW`\0\x80\x81\xFD[\x81\x87\x01R\x82R`@\x93\x90\x93\x01\x92\x90\x84\x01\x90a\"EV[\x85RP\x92\x95\x94PPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\"\xC5W`\0\x80\xFD[\x835a\"\xD0\x81a\x1DeV[\x92P` \x84\x015\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\xF2W`\0\x80\xFD[a\"\xFE\x86\x82\x87\x01a!\xCFV[\x91PP\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a#\x1BW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a#2W`\0\x80\xFD[a#>\x86\x83\x87\x01a!\xCFV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a#TW`\0\x80\xFD[Pa\x1F\r\x85\x82\x86\x01a\x1DzV[`\0[\x83\x81\x10\x15a#|W\x81\x81\x01Q\x83\x82\x01R` \x01a#dV[\x83\x81\x11\x15a\tPWPP`\0\x91\x01RV[`\0\x82`\x1F\x83\x01\x12a#\x9EW`\0\x80\xFD[\x81Q` a#\xAEa\x1D\x9B\x83a\x1DBV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a#\xCDW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x1D\xE3W\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a#\xF0W`\0\x80\x81\xFD[\x87\x01`?\x81\x01\x89\x13a$\x02W`\0\x80\x81\xFD[\x84\x81\x01Q`@a$\x14a\x1D\x9B\x83a\x1EYV[\x82\x81R\x8B\x82\x84\x86\x01\x01\x11\x15a$)W`\0\x80\x81\xFD[a$8\x83\x89\x83\x01\x84\x87\x01a#aV[\x86RPPP\x91\x83\x01\x91\x83\x01a#\xD1V[\x80Qa$S\x81a\x1E*V[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a$mW`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a$\x84W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a$\x98W`\0\x80\xFD[\x81Q` a$\xA8a\x1D\x9B\x83a\x1DBV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x8A\x84\x11\x15a$\xC7W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a$\xEEW\x85Qa$\xDF\x81a\x1DeV[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a$\xCCV[\x91\x89\x01Q\x91\x97P\x90\x93PPP\x80\x82\x11\x15a%\x07W`\0\x80\xFD[Pa%\x14\x86\x82\x87\x01a#\x8DV[\x92PPa%#`@\x85\x01a$HV[\x90P\x92P\x92P\x92V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a%lWa%la%BV[P`\x01\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x82R`@` \x80\x84\x01\x82\x90R\x84Q\x91\x84\x01\x82\x90R`\0\x92\x85\x82\x01\x92\x90\x91\x90``\x86\x01\x90\x85[\x81\x81\x10\x15a%\xC1W\x85Q\x85\x16\x83R\x94\x83\x01\x94\x91\x83\x01\x91`\x01\x01a%\xA3V[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a%\xE2W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a%\xF8W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a&\tW`\0\x80\xFD[\x80Qa&\x17a\x1D\x9B\x82a\x1DBV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a&6W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a&TW\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a&;V[\x97\x96PPPPPPPV[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a&yWa&ya%BV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a&\x91Wa&\x91a%BV[P\x01\x90V[`\0\x82a&\xB3WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0\x80\x82\x12\x80\x15`\x01`\x01`\xFF\x1B\x03\x84\x90\x03\x85\x13\x16\x15a&\xDAWa&\xDAa%BV[`\x01`\xFF\x1B\x83\x90\x03\x84\x12\x81\x16\x15a&\xF3Wa&\xF3a%BV[PP\x01\x90V[`\0\x82\x82\x10\x15a'\x0BWa'\x0Ba%BV[P\x03\x90V[`\0\x81Q\x80\x84Ra'(\x81` \x86\x01` \x86\x01a#aV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01R`\0\x82Q```@\x84\x01Ra'f`\xA0\x84\x01\x82a'\x10V[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[`\0\x81a'\x96Wa'\x96a%BV[P`\0\x19\x01\x90V[` \x80\x82R`+\x90\x82\x01R\x7FInitializable: contract is not i`@\x82\x01Rjnitializing`\xA8\x1B``\x82\x01R`\x80\x01\x90V[`@\x81R`\0a'\xFC`@\x83\x01\x85a\x1F\x17V[\x82\x81\x03` \x84\x01Ra(\x0E\x81\x85a\x1F\x17V[\x95\x94PPPPPV[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a(5Wa(5a%BV[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a(PWa(Pa%BV[PP\x03\x90V[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x82\x81R`@` \x82\x01R`\0a\x1E\"`@\x83\x01\x84a'\x10V[`\0\x82Qa(\x97\x81\x84` \x87\x01a#aV[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a(\xB3W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x05\x1FW`\0\x80\xFD\xFE\xA2dipfsX\"\x12 A\xA1\x84\x8D\xA3\xA33\xD4\x82\x189\xE4N\xE9\xCC\xCC0\xBFCk\xCB7\xF4z\r?\r|\x82GI3dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106101725760003560e01c8063696255be116100de57806398ec1ac911610097578063cdcd358111610071578063cdcd358114610315578063dec5d1f614610328578063ec7fbb311461033b578063f2fde38b1461037757600080fd5b806398ec1ac9146102e7578063ab118995146102fa578063b933fa741461030d57600080fd5b8063696255be1461028d578063715018a6146102a0578063743c31f4146102a8578063857dc190146102bb5780638da5cb5b146102c3578063955f2d90146102d457600080fd5b80633b242e4a116101305780633b242e4a1461020e5780633d5611f61461022157806340bf2fb7146102345780635140a5481461023c5780635e1042e81461024f5780635ef533291461027a57600080fd5b8062cf2ab5146101775780630dba33941461018c5780631626ba7e146101b25780631703a018146101de5780631e4cd85e146101f3578063314f3a4914610206575b600080fd5b61018a610185366004611dee565b61038a565b005b61019f61019a366004611e3c565b610396565b6040519081526020015b60405180910390f35b6101c56101c0366004611ed1565b6103b2565b6040516001600160e01b031990911681526020016101a9565b6101e66103f0565b6040516101a99190611f7a565b61019f610201366004611e3c565b610483565b61019f610499565b61019f61021c366004611f8d565b6104aa565b61018a61022f366004611faa565b6104cb565b60675461019f565b61018a61024a366004612057565b6104da565b61026261025d366004612120565b6104fd565b6040516001600160a01b0390911681526020016101a9565b61018a61028836600461214c565b610526565b61018a61029b366004612165565b610537565b61018a610551565b61018a6102b6366004611f8d565b610565565b61018a61059f565b6033546001600160a01b0316610262565b61019f6102e23660046121a1565b6105a8565b61019f6102f5366004611f8d565b6105d3565b61018a6103083660046122b0565b61083a565b61019f610956565b610262610323366004611f8d565b610962565b61018a610336366004612308565b610983565b610367610349366004611f8d565b6001600160a01b03166000908152606e602052604090205460ff1690565b60405190151581526020016101a9565b61018a610385366004611f8d565b610994565b61039381610a0a565b50565b60006103ac606b63ffffffff80851690610a6116565b92915050565b600080600080848060200190518101906103cc9190612458565b9250925092506103de86848484610b70565b50630b135d3f60e11b95945050505050565b6040805160208101909152606081526040805160668054602081810284018501855283018181529293919284929091849160009085015b8282101561047657600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101610427565b5050505081525050905090565b60006103ac606c63ffffffff80851690610a6116565b60006104a5606b610c2f565b905090565b6001600160a01b0381166000908152606d602052604081206103ac90610c2f565b6104d6338383610c8b565b5050565b6104d6826000815181106104f0576104f061252c565b6020026020010151610dc3565b6001600160a01b0382166000908152606a6020526040812061051f9083610a61565b9392505050565b61052e610de6565b61039381610e40565b61053f610de6565b61054882610e83565b6104d681610a0a565b610559610de6565b6105636000610ec9565b565b336000908152606e602052604090205460ff16610595576040516325ec6c1f60e01b815260040160405180910390fd5b6103933382610f1b565b61056333610fce565b6001600160a01b0382166000908152606d6020526040812061051f9063ffffffff80851690610a6116565b6000806066600001805480602002602001604051908101604052809291908181526020016000905b8282101561064a57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b0316818301528252600190920191016105fb565b50505050905060008082516001600160401b0381111561066c5761066c611cb2565b604051908082528060200260200182016040528015610695578160200160208202803683370190505b50905060005b83518110156106fe578381815181106106b6576106b661252c565b6020026020010151600001518282815181106106d4576106d461252c565b6001600160a01b0390921660209283029190910190910152806106f681612558565b91505061069b565b50604051639004134760e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906390041347906107509089908690600401612573565b600060405180830381865afa15801561076d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261079591908101906125cf565b905060005b845181101561080c578481815181106107b5576107b561252c565b6020026020010151602001516001600160601b03168282815181106107dc576107dc61252c565b60200260200101516107ee919061265f565b6107f8908561267e565b93508061080481612558565b91505061079a565b5061081961271084612696565b9250606754831061082e575090949350505050565b50600095945050505050565b600054610100900460ff161580801561085a5750600054600160ff909116105b806108745750303b158015610874575060005460ff166001145b6108dc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156108ff576000805461ff0019166101001790555b61090a8484846110f1565b8015610950576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60006104a5606c610c2f565b6001600160a01b0381166000908152606a602052604081206103ac90610c2f565b61098b610de6565b61054882611152565b61099c610de6565b6001600160a01b038116610a015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108d3565b61039381610ec9565b6000805b8251811015610a5757610a39838281518110610a2c57610a2c61252c565b60200260200101516112b1565b610a4390836126b8565b915080610a4f81612558565b915050610a0e565b50610950816113d4565b6000438210610ab25760405162461bcd60e51b815260206004820181905260248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e656460448201526064016108d3565b825460005b81811015610b17576000610acb8284611440565b905084866000018281548110610ae357610ae361252c565b60009182526020909120015463ffffffff161115610b0357809250610b11565b610b0e81600161267e565b91505b50610ab7565b8115610b5b5784610b296001846126f9565b81548110610b3957610b3961252c565b60009182526020909120015464010000000090046001600160e01b0316610b5e565b60005b6001600160e01b031695945050505050565b600083519050600080600080610b8785885161145b565b60005b85811015610c1957888181518110610ba457610ba461252c565b60200260200101519450610bb8858861149c565b9250610bc484866114ef565b610be8838b8a8481518110610bdb57610bdb61252c565b6020026020010151611521565b8493506000610bf78689611552565b9050610c03818461267e565b9250508080610c1190612558565b915050610b8a565b50610c2481876115a5565b505050505050505050565b80546000908015610c785782610c466001836126f9565b81548110610c5657610c5661252c565b60009182526020909120015464010000000090046001600160e01b0316610c7b565b60005b6001600160e01b03169392505050565b6001600160a01b0383166000908152606e602052604090205460ff1615610cc5576040516342ee68b560e01b815260040160405180910390fd5b60658054906000610cd583612558565b90915550506001600160a01b0383166000908152606e60205260408120805460ff19166001179055610d06846112b1565b9050610d11816113d4565b5050610d1d8483610f1b565b606854604051639926ee7d60e01b81526001600160a01b0390911690639926ee7d90610d4f908790879060040161273c565b600060405180830381600087803b158015610d6957600080fd5b505af1158015610d7d573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090871691507fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c190600090a350505050565b60655481511461038a5760405163169efb5b60e11b815260040160405180910390fd5b6033546001600160a01b031633146105635760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108d3565b610e4b606c82611601565b50506040518181527f9324f7e5a7c0288808a634ccde44b8e979676474b22e29ee9dd569b55e791a4b9060200160405180910390a150565b606780549082905560408051828152602081018490527f713ca53b88d6eb63f5b1854cb8cbdd736ec51eda225e46791aa9298b0160648f91015b60405180910390a15050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000908152606a60205260408120610f3c90610c2f565b9050806001600160a01b0316826001600160a01b03161415610f5d57505050565b6001600160a01b038381166000908152606a60205260409020610f81918416611601565b50506040516001600160a01b0382811682528084169143918616907fd061168252f441733658f09e4d8f5b2d998ed4ef24a2bbfd6ceca52ea13150029060200160405180910390a4505050565b6001600160a01b0381166000908152606e602052604090205460ff16611007576040516325ec6c1f60e01b815260040160405180910390fd5b6065805490600061101783612787565b90915550506001600160a01b0381166000908152606e60205260408120805460ff19169055611045826112b1565b9050611050816113d4565b50506068546040516351b27a6d60e11b81526001600160a01b0384811660048301529091169063a364f4da90602401600060405180830381600087803b15801561109957600080fd5b505af11580156110ad573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090851691507f31e0adfec71bccee37b6e83a90c2fedb17d8f1693fee863c4771e7bfe2aed58090600090a35050565b600054610100900460ff166111185760405162461bcd60e51b81526004016108d39061279e565b606880546001600160a01b0319166001600160a01b03851617905561113c82610e40565b61114581611152565b61114d61172c565b505050565b61115b8161175b565b6111785760405163d173577960e01b815260040160405180910390fd5b60408051606680546020818102840185018552830181815260009484928491879085015b828210156111eb57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b03168183015282526001909201910161119c565b5050509152509091506066905060006112048282611c84565b505060005b82515181101561127f5782518051606691908390811061122b5761122b61252c565b6020908102919091018101518254600181018455600093845292829020815191909201516001600160601b0316600160a01b026001600160a01b03909116179101558061127781612558565b915050611209565b507f23aad4e61744ece164130aa415c1616e80136b0f0770e56589438b90b269265e8183604051610ebd9291906127e9565b6001600160a01b0381166000908152606d602052604081208190819081906112d890610c2f565b6001600160a01b0386166000908152606e602052604090205490915060ff1661133d576113058184612817565b9250826113155750909392505050565b6001600160a01b0385166000908152606d6020526040812061133691611601565b5050611387565b611346856105d3565b91506113528183612817565b9250826113625750909392505050565b6001600160a01b0385166000908152606d602052604090206113849083611601565b50505b60408051828152602081018490526001600160a01b038716917f88770dc862e47a7ed586907857eb1b75e4c5ffc8b707c7ee10eb74d6885fe594910160405180910390a250909392505050565b6000806113e1606b610c2f565b915060006113ef84846126b8565b91508190506113ff606b82611601565b505060408051848152602081018490527f86dcf86b12dfeedea74ae9300dbdaa193bcce5809369c8177ea2f4eaaa65729b910160405180910390a150915091565b600061144f6002848418612696565b61051f9084841661267e565b80821461147e576040516001621398b960e31b0319815260040160405180910390fd5b816104d65760405163251f56a160e21b815260040160405180910390fd5b6000438263ffffffff16106114c45760405163e64f180f60e01b815260040160405180910390fd5b6001600160a01b0383166000908152606a6020526040902061051f9063ffffffff80851690610a6116565b806001600160a01b0316826001600160a01b0316106104d65760405163ba50f91160e01b815260040160405180910390fd5b6115356001600160a01b038416838361182b565b61114d57604051638baa579f60e01b815260040160405180910390fd5b6000438263ffffffff161061157a5760405163e64f180f60e01b815260040160405180910390fd5b6001600160a01b0383166000908152606d6020526040902061051f9063ffffffff80851690610a6116565b60006115b082611977565b9050808311156115d357604051634b05a0f760e11b815260040160405180910390fd5b60006115de836119b3565b9050838111156109505760405163e121632f60e01b815260040160405180910390fd5b815460009081908161161286610c2f565b90506000821180156116505750438661162c6001856126f9565b8154811061163c5761163c61252c565b60009182526020909120015463ffffffff16145b156116b05761165e856119ef565b8661166a6001856126f9565b8154811061167a5761167a61252c565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b0316021790555061171e565b8560000160405180604001604052806116c843611a5c565b63ffffffff1681526020016116dc886119ef565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b9250839150505b9250929050565b600054610100900460ff166117535760405162461bcd60e51b81526004016108d39061279e565b610563611ac1565b8051600090818080805b8451811015611809578481815181106117805761178061252c565b6020026020010151600001519250826001600160a01b0316846001600160a01b0316106117c05760405163ba50f91160e01b815260040160405180910390fd5b8293508481815181106117d5576117d561252c565b6020026020010151602001516001600160601b0316826117f5919061267e565b91508061180181612558565b915050611765565b50612710811461181f5750600095945050505050565b50600195945050505050565b600080600061183a8585611af1565b9092509050600081600481111561185357611853612856565b1480156118715750856001600160a01b0316826001600160a01b0316145b156118815760019250505061051f565b600080876001600160a01b0316631626ba7e60e01b88886040516024016118a992919061286c565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516118e79190612885565b600060405180830381855afa9150503d8060008114611922576040519150601f19603f3d011682016040523d82523d6000602084013e611927565b606091505b509150915081801561193a575080516020145b801561196b57508051630b135d3f60e11b9061195f90830160209081019084016128a1565b6001600160e01b031916145b98975050505050505050565b6000438263ffffffff161061199f5760405163e64f180f60e01b815260040160405180910390fd5b6103ac606b63ffffffff80851690610a6116565b6000438263ffffffff16106119db5760405163e64f180f60e01b815260040160405180910390fd5b6103ac606c63ffffffff80851690610a6116565b60006001600160e01b03821115611a585760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016108d3565b5090565b600063ffffffff821115611a585760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016108d3565b600054610100900460ff16611ae85760405162461bcd60e51b81526004016108d39061279e565b61056333610ec9565b600080825160411415611b285760208301516040840151606085015160001a611b1c87828585611b5e565b94509450505050611725565b825160401415611b525760208301516040840151611b47868383611c4b565b935093505050611725565b50600090506002611725565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611b955750600090506003611c42565b8460ff16601b14158015611bad57508460ff16601c14155b15611bbe5750600090506004611c42565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611c12573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611c3b57600060019250925050611c42565b9150600090505b94509492505050565b6000806001600160ff1b03831681611c6860ff86901c601b61267e565b9050611c7687828885611b5e565b935093505050935093915050565b508054600082559060005260206000209081019061039391905b80821115611a585760008155600101611c9e565b634e487b7160e01b600052604160045260246000fd5b604051602081016001600160401b0381118282101715611cea57611cea611cb2565b60405290565b604080519081016001600160401b0381118282101715611cea57611cea611cb2565b604051601f8201601f191681016001600160401b0381118282101715611d3a57611d3a611cb2565b604052919050565b60006001600160401b03821115611d5b57611d5b611cb2565b5060051b60200190565b6001600160a01b038116811461039357600080fd5b600082601f830112611d8b57600080fd5b81356020611da0611d9b83611d42565b611d12565b82815260059290921b84018101918181019086841115611dbf57600080fd5b8286015b84811015611de3578035611dd681611d65565b8352918301918301611dc3565b509695505050505050565b600060208284031215611e0057600080fd5b81356001600160401b03811115611e1657600080fd5b611e2284828501611d7a565b949350505050565b63ffffffff8116811461039357600080fd5b600060208284031215611e4e57600080fd5b813561051f81611e2a565b60006001600160401b03821115611e7257611e72611cb2565b50601f01601f191660200190565b600082601f830112611e9157600080fd5b8135611e9f611d9b82611e59565b818152846020838601011115611eb457600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215611ee457600080fd5b8235915060208301356001600160401b03811115611f0157600080fd5b611f0d85828601611e80565b9150509250929050565b8051602080845281518482018190526000926040919083019082870190855b81811015611f6d57835180516001600160a01b031684528601516001600160601b0316868401529285019291840191600101611f36565b5090979650505050505050565b60208152600061051f6020830184611f17565b600060208284031215611f9f57600080fd5b813561051f81611d65565b60008060408385031215611fbd57600080fd5b82356001600160401b0380821115611fd457600080fd5b9084019060608287031215611fe857600080fd5b60405160608101818110838211171561200357612003611cb2565b60405282358281111561201557600080fd5b61202188828601611e80565b8252506020830135602082015260408301356040820152809450505050602083013561204c81611d65565b809150509250929050565b6000806040838503121561206a57600080fd5b82356001600160401b038082111561208157600080fd5b818501915085601f83011261209557600080fd5b813560206120a5611d9b83611d42565b82815260059290921b840181019181810190898411156120c457600080fd5b8286015b848110156120fc578035868111156120e05760008081fd5b6120ee8c86838b0101611d7a565b8452509183019183016120c8565b509650508601359250508082111561211357600080fd5b50611f0d85828601611e80565b6000806040838503121561213357600080fd5b823561213e81611d65565b946020939093013593505050565b60006020828403121561215e57600080fd5b5035919050565b6000806040838503121561217857600080fd5b8235915060208301356001600160401b0381111561219557600080fd5b611f0d85828601611d7a565b600080604083850312156121b457600080fd5b82356121bf81611d65565b9150602083013561204c81611e2a565b600060208083850312156121e257600080fd5b6121ea611cc8565b915082356001600160401b0381111561220257600080fd5b8301601f8101851361221357600080fd5b8035612221611d9b82611d42565b81815260069190911b8201830190838101908783111561224057600080fd5b928401925b828410156122a3576040848903121561225e5760008081fd5b612266611cf0565b843561227181611d65565b8152848601356001600160601b038116811461228d5760008081fd5b8187015282526040939093019290840190612245565b8552509295945050505050565b6000806000606084860312156122c557600080fd5b83356122d081611d65565b92506020840135915060408401356001600160401b038111156122f257600080fd5b6122fe868287016121cf565b9150509250925092565b6000806040838503121561231b57600080fd5b82356001600160401b038082111561233257600080fd5b61233e868387016121cf565b9350602085013591508082111561235457600080fd5b50611f0d85828601611d7a565b60005b8381101561237c578181015183820152602001612364565b838111156109505750506000910152565b600082601f83011261239e57600080fd5b815160206123ae611d9b83611d42565b82815260059290921b840181019181810190868411156123cd57600080fd5b8286015b84811015611de35780516001600160401b038111156123f05760008081fd5b8701603f810189136124025760008081fd5b848101516040612414611d9b83611e59565b8281528b828486010111156124295760008081fd5b61243883898301848701612361565b86525050509183019183016123d1565b805161245381611e2a565b919050565b60008060006060848603121561246d57600080fd5b83516001600160401b038082111561248457600080fd5b818601915086601f83011261249857600080fd5b815160206124a8611d9b83611d42565b82815260059290921b8401810191818101908a8411156124c757600080fd5b948201945b838610156124ee5785516124df81611d65565b825294820194908201906124cc565b9189015191975090935050508082111561250757600080fd5b506125148682870161238d565b92505061252360408501612448565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561256c5761256c612542565b5060010190565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b818110156125c15785518516835294830194918301916001016125a3565b509098975050505050505050565b600060208083850312156125e257600080fd5b82516001600160401b038111156125f857600080fd5b8301601f8101851361260957600080fd5b8051612617611d9b82611d42565b81815260059190911b8201830190838101908783111561263657600080fd5b928401925b828410156126545783518252928401929084019061263b565b979650505050505050565b600081600019048311821515161561267957612679612542565b500290565b6000821982111561269157612691612542565b500190565b6000826126b357634e487b7160e01b600052601260045260246000fd5b500490565b600080821280156001600160ff1b03849003851316156126da576126da612542565b600160ff1b83900384128116156126f3576126f3612542565b50500190565b60008282101561270b5761270b612542565b500390565b60008151808452612728816020860160208601612361565b601f01601f19169290920160200192915050565b60018060a01b038316815260406020820152600082516060604084015261276660a0840182612710565b90506020840151606084015260408401516080840152809150509392505050565b60008161279657612796612542565b506000190190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6040815260006127fc6040830185611f17565b828103602084015261280e8185611f17565b95945050505050565b60008083128015600160ff1b85018412161561283557612835612542565b6001600160ff1b038401831381161561285057612850612542565b50500390565b634e487b7160e01b600052602160045260246000fd5b828152604060208201526000611e226040830184612710565b60008251612897818460208701612361565b9190910192915050565b6000602082840312156128b357600080fd5b81516001600160e01b03198116811461051f57600080fdfea264697066735822122041a1848da3a333d4821839e44ee9cccc30bf436bcb37f47a0d3f0d7c8247493364736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01rW`\x005`\xE0\x1C\x80cibU\xBE\x11a\0\xDEW\x80c\x98\xEC\x1A\xC9\x11a\0\x97W\x80c\xCD\xCD5\x81\x11a\0qW\x80c\xCD\xCD5\x81\x14a\x03\x15W\x80c\xDE\xC5\xD1\xF6\x14a\x03(W\x80c\xEC\x7F\xBB1\x14a\x03;W\x80c\xF2\xFD\xE3\x8B\x14a\x03wW`\0\x80\xFD[\x80c\x98\xEC\x1A\xC9\x14a\x02\xE7W\x80c\xAB\x11\x89\x95\x14a\x02\xFAW\x80c\xB93\xFAt\x14a\x03\rW`\0\x80\xFD[\x80cibU\xBE\x14a\x02\x8DW\x80cqP\x18\xA6\x14a\x02\xA0W\x80ct<1\xF4\x14a\x02\xA8W\x80c\x85}\xC1\x90\x14a\x02\xBBW\x80c\x8D\xA5\xCB[\x14a\x02\xC3W\x80c\x95_-\x90\x14a\x02\xD4W`\0\x80\xFD[\x80c;$.J\x11a\x010W\x80c;$.J\x14a\x02\x0EW\x80c=V\x11\xF6\x14a\x02!W\x80c@\xBF/\xB7\x14a\x024W\x80cQ@\xA5H\x14a\x02=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x07\x95\x91\x90\x81\x01\x90a%\xCFV[\x90P`\0[\x84Q\x81\x10\x15a\x08\x0CW\x84\x81\x81Q\x81\x10a\x07\xB5Wa\x07\xB5a%,V[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x07\xDCWa\x07\xDCa%,V[` \x02` \x01\x01Qa\x07\xEE\x91\x90a&_V[a\x07\xF8\x90\x85a&~V[\x93P\x80a\x08\x04\x81a%XV[\x91PPa\x07\x9AV[Pa\x08\x19a'\x10\x84a&\x96V[\x92P`gT\x83\x10a\x08.WP\x90\x94\x93PPPPV[P`\0\x95\x94PPPPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x08ZWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x08tWP0;\x15\x80\x15a\x08tWP`\0T`\xFF\x16`\x01\x14[a\x08\xDCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x08\xFFW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\t\n\x84\x84\x84a\x10\xF1V[\x80\x15a\tPW`\0\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPV[`\0a\x04\xA5`la\x0C/V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`j` R`@\x81 a\x03\xAC\x90a\x0C/V[a\t\x8Ba\r\xE6V[a\x05H\x82a\x11RV[a\t\x9Ca\r\xE6V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\n\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x08\xD3V[a\x03\x93\x81a\x0E\xC9V[`\0\x80[\x82Q\x81\x10\x15a\nWWa\n9\x83\x82\x81Q\x81\x10a\n,Wa\n,a%,V[` \x02` \x01\x01Qa\x12\xB1V[a\nC\x90\x83a&\xB8V[\x91P\x80a\nO\x81a%XV[\x91PPa\n\x0EV[Pa\tP\x81a\x13\xD4V[`\0C\x82\x10a\n\xB2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FCheckpoints: block not yet mined`D\x82\x01R`d\x01a\x08\xD3V[\x82T`\0[\x81\x81\x10\x15a\x0B\x17W`\0a\n\xCB\x82\x84a\x14@V[\x90P\x84\x86`\0\x01\x82\x81T\x81\x10a\n\xE3Wa\n\xE3a%,V[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x0B\x03W\x80\x92Pa\x0B\x11V[a\x0B\x0E\x81`\x01a&~V[\x91P[Pa\n\xB7V[\x81\x15a\x0B[W\x84a\x0B)`\x01\x84a&\xF9V[\x81T\x81\x10a\x0B9Wa\x0B9a%,V[`\0\x91\x82R` \x90\x91 \x01Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\x0B^V[`\0[`\x01`\x01`\xE0\x1B\x03\x16\x95\x94PPPPPV[`\0\x83Q\x90P`\0\x80`\0\x80a\x0B\x87\x85\x88Qa\x14[V[`\0[\x85\x81\x10\x15a\x0C\x19W\x88\x81\x81Q\x81\x10a\x0B\xA4Wa\x0B\xA4a%,V[` \x02` \x01\x01Q\x94Pa\x0B\xB8\x85\x88a\x14\x9CV[\x92Pa\x0B\xC4\x84\x86a\x14\xEFV[a\x0B\xE8\x83\x8B\x8A\x84\x81Q\x81\x10a\x0B\xDBWa\x0B\xDBa%,V[` \x02` \x01\x01Qa\x15!V[\x84\x93P`\0a\x0B\xF7\x86\x89a\x15RV[\x90Pa\x0C\x03\x81\x84a&~V[\x92PP\x80\x80a\x0C\x11\x90a%XV[\x91PPa\x0B\x8AV[Pa\x0C$\x81\x87a\x15\xA5V[PPPPPPPPPV[\x80T`\0\x90\x80\x15a\x0CxW\x82a\x0CF`\x01\x83a&\xF9V[\x81T\x81\x10a\x0CVWa\x0CVa%,V[`\0\x91\x82R` \x90\x91 \x01Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\x0C{V[`\0[`\x01`\x01`\xE0\x1B\x03\x16\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`n` R`@\x90 T`\xFF\x16\x15a\x0C\xC5W`@QcB\xEEh\xB5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`e\x80T\x90`\0a\x0C\xD5\x83a%XV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`n` R`@\x81 \x80T`\xFF\x19\x16`\x01\x17\x90Ua\r\x06\x84a\x12\xB1V[\x90Pa\r\x11\x81a\x13\xD4V[PPa\r\x1D\x84\x83a\x0F\x1BV[`hT`@Qc\x99&\xEE}`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x99&\xEE}\x90a\rO\x90\x87\x90\x87\x90`\x04\x01a'=`\0\xFD[PP`hT`@Q`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x93P\x90\x87\x16\x91P\x7F\xA4S\xDBa*\xF5\x9EU!\xD6\xAB\x92\x84\xDC>-\x06\xAF(n\xB1\xB1\xB7\xB7q\xFC\xE4ql\x19\xF2\xC1\x90`\0\x90\xA3PPPPV[`eT\x81Q\x14a\x03\x8AW`@Qc\x16\x9E\xFB[`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x05cW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x08\xD3V[a\x0EK`l\x82a\x16\x01V[PP`@Q\x81\x81R\x7F\x93$\xF7\xE5\xA7\xC0(\x88\x08\xA64\xCC\xDED\xB8\xE9ygdt\xB2.)\xEE\x9D\xD5i\xB5^y\x1AK\x90` \x01`@Q\x80\x91\x03\x90\xA1PV[`g\x80T\x90\x82\x90U`@\x80Q\x82\x81R` \x81\x01\x84\x90R\x7Fq<\xA5;\x88\xD6\xEBc\xF5\xB1\x85L\xB8\xCB\xDDsn\xC5\x1E\xDA\"^Fy\x1A\xA9)\x8B\x01`d\x8F\x91\x01[`@Q\x80\x91\x03\x90\xA1PPV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`j` R`@\x81 a\x0F<\x90a\x0C/V[\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x0F]WPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x90\x81R`j` R`@\x90 a\x0F\x81\x91\x84\x16a\x16\x01V[PP`@Q`\x01`\x01`\xA0\x1B\x03\x82\x81\x16\x82R\x80\x84\x16\x91C\x91\x86\x16\x90\x7F\xD0a\x16\x82R\xF4As6X\xF0\x9EM\x8F[-\x99\x8E\xD4\xEF$\xA2\xBB\xFDl\xEC\xA5.\xA11P\x02\x90` \x01`@Q\x80\x91\x03\x90\xA4PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`n` R`@\x90 T`\xFF\x16a\x10\x07W`@Qc%\xECl\x1F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`e\x80T\x90`\0a\x10\x17\x83a'\x87V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`n` R`@\x81 \x80T`\xFF\x19\x16\x90Ua\x10E\x82a\x12\xB1V[\x90Pa\x10P\x81a\x13\xD4V[PP`hT`@QcQ\xB2zm`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R\x90\x91\x16\x90c\xA3d\xF4\xDA\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x10\x99W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x10\xADW=`\0\x80>=`\0\xFD[PP`hT`@Q`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x93P\x90\x85\x16\x91P\x7F1\xE0\xAD\xFE\xC7\x1B\xCC\xEE7\xB6\xE8:\x90\xC2\xFE\xDB\x17\xD8\xF1i?\xEE\x86a\x19'V[``\x91P[P\x91P\x91P\x81\x80\x15a\x19:WP\x80Q` \x14[\x80\x15a\x19kWP\x80Qc\x0B\x13]?`\xE1\x1B\x90a\x19_\x90\x83\x01` \x90\x81\x01\x90\x84\x01a(\xA1V[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[\x98\x97PPPPPPPPV[`\0C\x82c\xFF\xFF\xFF\xFF\x16\x10a\x19\x9FW`@Qc\xE6O\x18\x0F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x03\xAC`kc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\na\x16V[`\0C\x82c\xFF\xFF\xFF\xFF\x16\x10a\x19\xDBW`@Qc\xE6O\x18\x0F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x03\xAC`lc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\na\x16V[`\0`\x01`\x01`\xE0\x1B\x03\x82\x11\x15a\x1AXW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FSafeCast: value doesn't fit in 2`D\x82\x01Rf24 bits`\xC8\x1B`d\x82\x01R`\x84\x01a\x08\xD3V[P\x90V[`\0c\xFF\xFF\xFF\xFF\x82\x11\x15a\x1AXW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FSafeCast: value doesn't fit in 3`D\x82\x01Re2 bits`\xD0\x1B`d\x82\x01R`\x84\x01a\x08\xD3V[`\0Ta\x01\0\x90\x04`\xFF\x16a\x1A\xE8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xD3\x90a'\x9EV[a\x05c3a\x0E\xC9V[`\0\x80\x82Q`A\x14\x15a\x1B(W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1Aa\x1B\x1C\x87\x82\x85\x85a\x1B^V[\x94P\x94PPPPa\x17%V[\x82Q`@\x14\x15a\x1BRW` \x83\x01Q`@\x84\x01Qa\x1BG\x86\x83\x83a\x1CKV[\x93P\x93PPPa\x17%V[P`\0\x90P`\x02a\x17%V[`\0\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x83\x11\x15a\x1B\x95WP`\0\x90P`\x03a\x1CBV[\x84`\xFF\x16`\x1B\x14\x15\x80\x15a\x1B\xADWP\x84`\xFF\x16`\x1C\x14\x15[\x15a\x1B\xBEWP`\0\x90P`\x04a\x1CBV[`@\x80Q`\0\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x1C\x12W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1C;W`\0`\x01\x92P\x92PPa\x1CBV[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81a\x1Ch`\xFF\x86\x90\x1C`\x1Ba&~V[\x90Pa\x1Cv\x87\x82\x88\x85a\x1B^V[\x93P\x93PPP\x93P\x93\x91PPV[P\x80T`\0\x82U\x90`\0R` `\0 \x90\x81\x01\x90a\x03\x93\x91\x90[\x80\x82\x11\x15a\x1AXW`\0\x81U`\x01\x01a\x1C\x9EV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q` \x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1C\xEAWa\x1C\xEAa\x1C\xB2V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1C\xEAWa\x1C\xEAa\x1C\xB2V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1D:Wa\x1D:a\x1C\xB2V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x1D[Wa\x1D[a\x1C\xB2V[P`\x05\x1B` \x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x93W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a\x1D\x8BW`\0\x80\xFD[\x815` a\x1D\xA0a\x1D\x9B\x83a\x1DBV[a\x1D\x12V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\x1D\xBFW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x1D\xE3W\x805a\x1D\xD6\x81a\x1DeV[\x83R\x91\x83\x01\x91\x83\x01a\x1D\xC3V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a\x1E\0W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\x16W`\0\x80\xFD[a\x1E\"\x84\x82\x85\x01a\x1DzV[\x94\x93PPPPV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x03\x93W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x1ENW`\0\x80\xFD[\x815a\x05\x1F\x81a\x1E*V[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x1ErWa\x1Era\x1C\xB2V[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x1E\x91W`\0\x80\xFD[\x815a\x1E\x9Fa\x1D\x9B\x82a\x1EYV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x1E\xB4W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x1E\xE4W`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1F\x01W`\0\x80\xFD[a\x1F\r\x85\x82\x86\x01a\x1E\x80V[\x91PP\x92P\x92\x90PV[\x80Q` \x80\x84R\x81Q\x84\x82\x01\x81\x90R`\0\x92`@\x91\x90\x83\x01\x90\x82\x87\x01\x90\x85[\x81\x81\x10\x15a\x1FmW\x83Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x86\x01Q`\x01`\x01``\x1B\x03\x16\x86\x84\x01R\x92\x85\x01\x92\x91\x84\x01\x91`\x01\x01a\x1F6V[P\x90\x97\x96PPPPPPPV[` \x81R`\0a\x05\x1F` \x83\x01\x84a\x1F\x17V[`\0` \x82\x84\x03\x12\x15a\x1F\x9FW`\0\x80\xFD[\x815a\x05\x1F\x81a\x1DeV[`\0\x80`@\x83\x85\x03\x12\x15a\x1F\xBDW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x1F\xD4W`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a\x1F\xE8W`\0\x80\xFD[`@Q``\x81\x01\x81\x81\x10\x83\x82\x11\x17\x15a \x03Wa \x03a\x1C\xB2V[`@R\x825\x82\x81\x11\x15a \x15W`\0\x80\xFD[a !\x88\x82\x86\x01a\x1E\x80V[\x82RP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x94PPPP` \x83\x015a L\x81a\x1DeV[\x80\x91PP\x92P\x92\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a jW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a \x81W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a \x95W`\0\x80\xFD[\x815` a \xA5a\x1D\x9B\x83a\x1DBV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a \xC4W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a \xFCW\x805\x86\x81\x11\x15a \xE0W`\0\x80\x81\xFD[a \xEE\x8C\x86\x83\x8B\x01\x01a\x1DzV[\x84RP\x91\x83\x01\x91\x83\x01a \xC8V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a!\x13W`\0\x80\xFD[Pa\x1F\r\x85\x82\x86\x01a\x1E\x80V[`\0\x80`@\x83\x85\x03\x12\x15a!3W`\0\x80\xFD[\x825a!>\x81a\x1DeV[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a!^W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a!xW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a!\x95W`\0\x80\xFD[a\x1F\r\x85\x82\x86\x01a\x1DzV[`\0\x80`@\x83\x85\x03\x12\x15a!\xB4W`\0\x80\xFD[\x825a!\xBF\x81a\x1DeV[\x91P` \x83\x015a L\x81a\x1E*V[`\0` \x80\x83\x85\x03\x12\x15a!\xE2W`\0\x80\xFD[a!\xEAa\x1C\xC8V[\x91P\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\x02W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\"\x13W`\0\x80\xFD[\x805a\"!a\x1D\x9B\x82a\x1DBV[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a\"@W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\"\xA3W`@\x84\x89\x03\x12\x15a\"^W`\0\x80\x81\xFD[a\"fa\x1C\xF0V[\x845a\"q\x81a\x1DeV[\x81R\x84\x86\x015`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\"\x8DW`\0\x80\x81\xFD[\x81\x87\x01R\x82R`@\x93\x90\x93\x01\x92\x90\x84\x01\x90a\"EV[\x85RP\x92\x95\x94PPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\"\xC5W`\0\x80\xFD[\x835a\"\xD0\x81a\x1DeV[\x92P` \x84\x015\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\xF2W`\0\x80\xFD[a\"\xFE\x86\x82\x87\x01a!\xCFV[\x91PP\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a#\x1BW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a#2W`\0\x80\xFD[a#>\x86\x83\x87\x01a!\xCFV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a#TW`\0\x80\xFD[Pa\x1F\r\x85\x82\x86\x01a\x1DzV[`\0[\x83\x81\x10\x15a#|W\x81\x81\x01Q\x83\x82\x01R` \x01a#dV[\x83\x81\x11\x15a\tPWPP`\0\x91\x01RV[`\0\x82`\x1F\x83\x01\x12a#\x9EW`\0\x80\xFD[\x81Q` a#\xAEa\x1D\x9B\x83a\x1DBV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a#\xCDW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x1D\xE3W\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a#\xF0W`\0\x80\x81\xFD[\x87\x01`?\x81\x01\x89\x13a$\x02W`\0\x80\x81\xFD[\x84\x81\x01Q`@a$\x14a\x1D\x9B\x83a\x1EYV[\x82\x81R\x8B\x82\x84\x86\x01\x01\x11\x15a$)W`\0\x80\x81\xFD[a$8\x83\x89\x83\x01\x84\x87\x01a#aV[\x86RPPP\x91\x83\x01\x91\x83\x01a#\xD1V[\x80Qa$S\x81a\x1E*V[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a$mW`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a$\x84W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a$\x98W`\0\x80\xFD[\x81Q` a$\xA8a\x1D\x9B\x83a\x1DBV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x8A\x84\x11\x15a$\xC7W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a$\xEEW\x85Qa$\xDF\x81a\x1DeV[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a$\xCCV[\x91\x89\x01Q\x91\x97P\x90\x93PPP\x80\x82\x11\x15a%\x07W`\0\x80\xFD[Pa%\x14\x86\x82\x87\x01a#\x8DV[\x92PPa%#`@\x85\x01a$HV[\x90P\x92P\x92P\x92V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a%lWa%la%BV[P`\x01\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x82R`@` \x80\x84\x01\x82\x90R\x84Q\x91\x84\x01\x82\x90R`\0\x92\x85\x82\x01\x92\x90\x91\x90``\x86\x01\x90\x85[\x81\x81\x10\x15a%\xC1W\x85Q\x85\x16\x83R\x94\x83\x01\x94\x91\x83\x01\x91`\x01\x01a%\xA3V[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a%\xE2W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a%\xF8W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a&\tW`\0\x80\xFD[\x80Qa&\x17a\x1D\x9B\x82a\x1DBV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a&6W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a&TW\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a&;V[\x97\x96PPPPPPPV[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a&yWa&ya%BV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a&\x91Wa&\x91a%BV[P\x01\x90V[`\0\x82a&\xB3WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0\x80\x82\x12\x80\x15`\x01`\x01`\xFF\x1B\x03\x84\x90\x03\x85\x13\x16\x15a&\xDAWa&\xDAa%BV[`\x01`\xFF\x1B\x83\x90\x03\x84\x12\x81\x16\x15a&\xF3Wa&\xF3a%BV[PP\x01\x90V[`\0\x82\x82\x10\x15a'\x0BWa'\x0Ba%BV[P\x03\x90V[`\0\x81Q\x80\x84Ra'(\x81` \x86\x01` \x86\x01a#aV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01R`\0\x82Q```@\x84\x01Ra'f`\xA0\x84\x01\x82a'\x10V[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[`\0\x81a'\x96Wa'\x96a%BV[P`\0\x19\x01\x90V[` \x80\x82R`+\x90\x82\x01R\x7FInitializable: contract is not i`@\x82\x01Rjnitializing`\xA8\x1B``\x82\x01R`\x80\x01\x90V[`@\x81R`\0a'\xFC`@\x83\x01\x85a\x1F\x17V[\x82\x81\x03` \x84\x01Ra(\x0E\x81\x85a\x1F\x17V[\x95\x94PPPPPV[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a(5Wa(5a%BV[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a(PWa(Pa%BV[PP\x03\x90V[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x82\x81R`@` \x82\x01R`\0a\x1E\"`@\x83\x01\x84a'\x10V[`\0\x82Qa(\x97\x81\x84` \x87\x01a#aV[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a(\xB3W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x05\x1FW`\0\x80\xFD\xFE\xA2dipfsX\"\x12 A\xA1\x84\x8D\xA3\xA33\xD4\x82\x189\xE4N\xE9\xCC\xCC0\xBFCk\xCB7\xF4z\r?\r|\x82GI3dsolcC\0\x08\x0C\x003", + ); + /**```solidity + struct Quorum { StrategyParams[] strategies; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct Quorum { + pub strategies: + alloy::sol_types::private::Vec<::RustType>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec<::RustType>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: Quorum) -> Self { + (value.strategies,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for Quorum { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategies: tuple.0, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for Quorum { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for Quorum { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.strategies), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Quorum { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for Quorum { + const NAME: &'static str = "Quorum"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed("Quorum(StrategyParams[] strategies)") + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + let mut components = alloy_sol_types::private::Vec::with_capacity(1); + components.push(::eip712_root_type()); + components + .extend(::eip712_components()); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + as alloy_sol_types::SolType>::eip712_data_word(&self.strategies) + .0 + .to_vec() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Quorum { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.strategies, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.strategies, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct StrategyParams { address strategy; uint96 multiplier; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct StrategyParams { + pub strategy: alloy::sol_types::private::Address, + pub multiplier: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<96>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U96, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: StrategyParams) -> Self { + (value.strategy, value.multiplier) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for StrategyParams { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategy: tuple.0, + multiplier: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for StrategyParams { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for StrategyParams { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.multiplier, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for StrategyParams { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for StrategyParams { + const NAME: &'static str = "StrategyParams"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "StrategyParams(address strategy,uint96 multiplier)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.strategy, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.multiplier) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for StrategyParams { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.strategy, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.multiplier, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.strategy, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.multiplier, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**Custom error with signature `InsufficientSignedStake()` and selector `0xe121632f`. + ```solidity + error InsufficientSignedStake(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InsufficientSignedStake {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InsufficientSignedStake) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InsufficientSignedStake { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InsufficientSignedStake { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InsufficientSignedStake()"; + const SELECTOR: [u8; 4] = [225u8, 33u8, 99u8, 47u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InsufficientWeight()` and selector `0xa8792fd1`. + ```solidity + error InsufficientWeight(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InsufficientWeight {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InsufficientWeight) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InsufficientWeight { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InsufficientWeight { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InsufficientWeight()"; + const SELECTOR: [u8; 4] = [168u8, 121u8, 47u8, 209u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidLength()` and selector `0x947d5a84`. + ```solidity + error InvalidLength(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidLength {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidLength) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidLength { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidLength { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidLength()"; + const SELECTOR: [u8; 4] = [148u8, 125u8, 90u8, 132u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidQuorum()` and selector `0xd1735779`. + ```solidity + error InvalidQuorum(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidQuorum {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidQuorum) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidQuorum { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidQuorum { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidQuorum()"; + const SELECTOR: [u8; 4] = [209u8, 115u8, 87u8, 121u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidReferenceBlock()` and selector `0xe64f180f`. + ```solidity + error InvalidReferenceBlock(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidReferenceBlock {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidReferenceBlock) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidReferenceBlock { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidReferenceBlock { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidReferenceBlock()"; + const SELECTOR: [u8; 4] = [230u8, 79u8, 24u8, 15u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidSignature()` and selector `0x8baa579f`. + ```solidity + error InvalidSignature(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidSignature {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidSignature) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidSignature { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidSignature { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidSignature()"; + const SELECTOR: [u8; 4] = [139u8, 170u8, 87u8, 159u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidSignedWeight()` and selector `0x960b41ee`. + ```solidity + error InvalidSignedWeight(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidSignedWeight {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidSignedWeight) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidSignedWeight { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidSignedWeight { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidSignedWeight()"; + const SELECTOR: [u8; 4] = [150u8, 11u8, 65u8, 238u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidThreshold()` and selector `0xaabd5a09`. + ```solidity + error InvalidThreshold(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidThreshold {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidThreshold) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidThreshold { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidThreshold { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidThreshold()"; + const SELECTOR: [u8; 4] = [170u8, 189u8, 90u8, 9u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `LengthMismatch()` and selector `0xff633a38`. + ```solidity + error LengthMismatch(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct LengthMismatch {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: LengthMismatch) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for LengthMismatch { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for LengthMismatch { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "LengthMismatch()"; + const SELECTOR: [u8; 4] = [255u8, 99u8, 58u8, 56u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `MustUpdateAllOperators()` and selector `0x2d3df6b6`. + ```solidity + error MustUpdateAllOperators(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct MustUpdateAllOperators {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: MustUpdateAllOperators) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for MustUpdateAllOperators { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for MustUpdateAllOperators { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "MustUpdateAllOperators()"; + const SELECTOR: [u8; 4] = [45u8, 61u8, 246u8, 182u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `NotSorted()` and selector `0xba50f911`. + ```solidity + error NotSorted(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct NotSorted {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: NotSorted) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for NotSorted { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for NotSorted { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "NotSorted()"; + const SELECTOR: [u8; 4] = [186u8, 80u8, 249u8, 17u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `OperatorAlreadyRegistered()` and selector `0x42ee68b5`. + ```solidity + error OperatorAlreadyRegistered(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OperatorAlreadyRegistered {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OperatorAlreadyRegistered) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OperatorAlreadyRegistered { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for OperatorAlreadyRegistered { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "OperatorAlreadyRegistered()"; + const SELECTOR: [u8; 4] = [66u8, 238u8, 104u8, 181u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `OperatorNotRegistered()` and selector `0x25ec6c1f`. + ```solidity + error OperatorNotRegistered(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OperatorNotRegistered {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OperatorNotRegistered) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OperatorNotRegistered { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for OperatorNotRegistered { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "OperatorNotRegistered()"; + const SELECTOR: [u8; 4] = [37u8, 236u8, 108u8, 31u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`. + ```solidity + event Initialized(uint8 version); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Initialized { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "Initialized(uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, + 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, + 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { version: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.version, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Initialized { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Initialized> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Initialized) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `MinimumWeightUpdated(uint256,uint256)` and selector `0x713ca53b88d6eb63f5b1854cb8cbdd736ec51eda225e46791aa9298b0160648f`. + ```solidity + event MinimumWeightUpdated(uint256 _old, uint256 _new); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct MinimumWeightUpdated { + #[allow(missing_docs)] + pub _old: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub _new: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for MinimumWeightUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "MinimumWeightUpdated(uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 113u8, 60u8, 165u8, 59u8, 136u8, 214u8, 235u8, 99u8, 245u8, 177u8, 133u8, 76u8, + 184u8, 203u8, 221u8, 115u8, 110u8, 197u8, 30u8, 218u8, 34u8, 94u8, 70u8, 121u8, + 26u8, 169u8, 41u8, 139u8, 1u8, 96u8, 100u8, 143u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _old: data.0, + _new: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._old, + ), + as alloy_sol_types::SolType>::tokenize( + &self._new, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for MinimumWeightUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&MinimumWeightUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &MinimumWeightUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorDeregistered(address,address)` and selector `0x31e0adfec71bccee37b6e83a90c2fedb17d8f1693fee863c4771e7bfe2aed580`. + ```solidity + event OperatorDeregistered(address indexed _operator, address indexed _avs); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorDeregistered { + #[allow(missing_docs)] + pub _operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _avs: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorDeregistered { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OperatorDeregistered(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 49u8, 224u8, 173u8, 254u8, 199u8, 27u8, 204u8, 238u8, 55u8, 182u8, 232u8, 58u8, + 144u8, 194u8, 254u8, 219u8, 23u8, 216u8, 241u8, 105u8, 63u8, 238u8, 134u8, + 60u8, 71u8, 113u8, 231u8, 191u8, 226u8, 174u8, 213u8, 128u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _operator: topics.1, + _avs: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._operator.clone(), + self._avs.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self._operator, + ); + out[2usize] = ::encode_topic( + &self._avs, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorDeregistered { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorDeregistered> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorDeregistered) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorRegistered(address,address)` and selector `0xa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c1`. + ```solidity + event OperatorRegistered(address indexed _operator, address indexed _avs); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorRegistered { + #[allow(missing_docs)] + pub _operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _avs: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorRegistered { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OperatorRegistered(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 164u8, 83u8, 219u8, 97u8, 42u8, 245u8, 158u8, 85u8, 33u8, 214u8, 171u8, 146u8, + 132u8, 220u8, 62u8, 45u8, 6u8, 175u8, 40u8, 110u8, 177u8, 177u8, 183u8, 183u8, + 113u8, 252u8, 228u8, 113u8, 108u8, 25u8, 242u8, 193u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _operator: topics.1, + _avs: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._operator.clone(), + self._avs.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self._operator, + ); + out[2usize] = ::encode_topic( + &self._avs, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorRegistered { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorRegistered> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorRegistered) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorWeightUpdated(address,uint256,uint256)` and selector `0x88770dc862e47a7ed586907857eb1b75e4c5ffc8b707c7ee10eb74d6885fe594`. + ```solidity + event OperatorWeightUpdated(address indexed _operator, uint256 oldWeight, uint256 newWeight); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorWeightUpdated { + #[allow(missing_docs)] + pub _operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub oldWeight: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub newWeight: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorWeightUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OperatorWeightUpdated(address,uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 136u8, 119u8, 13u8, 200u8, 98u8, 228u8, 122u8, 126u8, 213u8, 134u8, 144u8, + 120u8, 87u8, 235u8, 27u8, 117u8, 228u8, 197u8, 255u8, 200u8, 183u8, 7u8, 199u8, + 238u8, 16u8, 235u8, 116u8, 214u8, 136u8, 95u8, 229u8, 148u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _operator: topics.1, + oldWeight: data.0, + newWeight: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.oldWeight, + ), + as alloy_sol_types::SolType>::tokenize( + &self.newWeight, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self._operator.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self._operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorWeightUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorWeightUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorWeightUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. + ```solidity + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub previousOwner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, + 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, + 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + previousOwner: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.previousOwner.clone(), + self.newOwner.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.previousOwner, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `QuorumUpdated(((address,uint96)[]),((address,uint96)[]))` and selector `0x23aad4e61744ece164130aa415c1616e80136b0f0770e56589438b90b269265e`. + ```solidity + event QuorumUpdated(Quorum _old, Quorum _new); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct QuorumUpdated { + #[allow(missing_docs)] + pub _old: ::RustType, + #[allow(missing_docs)] + pub _new: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for QuorumUpdated { + type DataTuple<'a> = (Quorum, Quorum); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = + "QuorumUpdated(((address,uint96)[]),((address,uint96)[]))"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 35u8, 170u8, 212u8, 230u8, 23u8, 68u8, 236u8, 225u8, 100u8, 19u8, 10u8, 164u8, + 21u8, 193u8, 97u8, 110u8, 128u8, 19u8, 107u8, 15u8, 7u8, 112u8, 229u8, 101u8, + 137u8, 67u8, 139u8, 144u8, 178u8, 105u8, 38u8, 94u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _old: data.0, + _new: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize(&self._old), + ::tokenize(&self._new), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for QuorumUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&QuorumUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &QuorumUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `SigningKeyUpdate(address,uint256,address,address)` and selector `0xd061168252f441733658f09e4d8f5b2d998ed4ef24a2bbfd6ceca52ea1315002`. + ```solidity + event SigningKeyUpdate(address indexed operator, uint256 indexed updateBlock, address indexed newSigningKey, address oldSigningKey); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct SigningKeyUpdate { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub updateBlock: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub newSigningKey: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub oldSigningKey: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for SigningKeyUpdate { + type DataTuple<'a> = (alloy::sol_types::sol_data::Address,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "SigningKeyUpdate(address,uint256,address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 208u8, 97u8, 22u8, 130u8, 82u8, 244u8, 65u8, 115u8, 54u8, 88u8, 240u8, 158u8, + 77u8, 143u8, 91u8, 45u8, 153u8, 142u8, 212u8, 239u8, 36u8, 162u8, 187u8, 253u8, + 108u8, 236u8, 165u8, 46u8, 161u8, 49u8, 80u8, 2u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: topics.1, + updateBlock: topics.2, + newSigningKey: topics.3, + oldSigningKey: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.oldSigningKey, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.operator.clone(), + self.updateBlock.clone(), + self.newSigningKey.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + out[2usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.updateBlock); + out[3usize] = ::encode_topic( + &self.newSigningKey, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for SigningKeyUpdate { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&SigningKeyUpdate> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &SigningKeyUpdate) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `ThresholdWeightUpdated(uint256)` and selector `0x9324f7e5a7c0288808a634ccde44b8e979676474b22e29ee9dd569b55e791a4b`. + ```solidity + event ThresholdWeightUpdated(uint256 _thresholdWeight); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct ThresholdWeightUpdated { + #[allow(missing_docs)] + pub _thresholdWeight: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ThresholdWeightUpdated { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "ThresholdWeightUpdated(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 147u8, 36u8, 247u8, 229u8, 167u8, 192u8, 40u8, 136u8, 8u8, 166u8, 52u8, 204u8, + 222u8, 68u8, 184u8, 233u8, 121u8, 103u8, 100u8, 116u8, 178u8, 46u8, 41u8, + 238u8, 157u8, 213u8, 105u8, 181u8, 94u8, 121u8, 26u8, 75u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _thresholdWeight: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._thresholdWeight, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ThresholdWeightUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ThresholdWeightUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ThresholdWeightUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `TotalWeightUpdated(uint256,uint256)` and selector `0x86dcf86b12dfeedea74ae9300dbdaa193bcce5809369c8177ea2f4eaaa65729b`. + ```solidity + event TotalWeightUpdated(uint256 oldTotalWeight, uint256 newTotalWeight); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct TotalWeightUpdated { + #[allow(missing_docs)] + pub oldTotalWeight: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub newTotalWeight: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for TotalWeightUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "TotalWeightUpdated(uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 134u8, 220u8, 248u8, 107u8, 18u8, 223u8, 238u8, 222u8, 167u8, 74u8, 233u8, + 48u8, 13u8, 189u8, 170u8, 25u8, 59u8, 204u8, 229u8, 128u8, 147u8, 105u8, 200u8, + 23u8, 126u8, 162u8, 244u8, 234u8, 170u8, 101u8, 114u8, 155u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + oldTotalWeight: data.0, + newTotalWeight: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.oldTotalWeight, + ), + as alloy_sol_types::SolType>::tokenize( + &self.newTotalWeight, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for TotalWeightUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&TotalWeightUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &TotalWeightUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `UpdateMinimumWeight(uint256,uint256)` and selector `0x1ea42186b305fa37310450d9fb87ea1e8f0c7f447e771479e3b27634bfe84dc1`. + ```solidity + event UpdateMinimumWeight(uint256 oldMinimumWeight, uint256 newMinimumWeight); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct UpdateMinimumWeight { + #[allow(missing_docs)] + pub oldMinimumWeight: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub newMinimumWeight: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for UpdateMinimumWeight { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "UpdateMinimumWeight(uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 30u8, 164u8, 33u8, 134u8, 179u8, 5u8, 250u8, 55u8, 49u8, 4u8, 80u8, 217u8, + 251u8, 135u8, 234u8, 30u8, 143u8, 12u8, 127u8, 68u8, 126u8, 119u8, 20u8, 121u8, + 227u8, 178u8, 118u8, 52u8, 191u8, 232u8, 77u8, 193u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + oldMinimumWeight: data.0, + newMinimumWeight: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.oldMinimumWeight, + ), + as alloy_sol_types::SolType>::tokenize( + &self.newMinimumWeight, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for UpdateMinimumWeight { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&UpdateMinimumWeight> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &UpdateMinimumWeight) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. + ```solidity + constructor(address _delegationManager); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _delegationManager: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value._delegationManager,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _delegationManager: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._delegationManager, + ), + ) + } + } + }; + /**Function with signature `deregisterOperator()` and selector `0x857dc190`. + ```solidity + function deregisterOperator() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorCall {} + ///Container type for the return parameters of the [`deregisterOperator()`](deregisterOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for deregisterOperatorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = deregisterOperatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "deregisterOperator()"; + const SELECTOR: [u8; 4] = [133u8, 125u8, 193u8, 144u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getLastCheckpointOperatorWeight(address)` and selector `0x3b242e4a`. + ```solidity + function getLastCheckpointOperatorWeight(address _operator) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastCheckpointOperatorWeightCall { + pub _operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getLastCheckpointOperatorWeight(address)`](getLastCheckpointOperatorWeightCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastCheckpointOperatorWeightReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastCheckpointOperatorWeightCall) -> Self { + (value._operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLastCheckpointOperatorWeightCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastCheckpointOperatorWeightReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLastCheckpointOperatorWeightReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getLastCheckpointOperatorWeightCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getLastCheckpointOperatorWeightReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getLastCheckpointOperatorWeight(address)"; + const SELECTOR: [u8; 4] = [59u8, 36u8, 46u8, 74u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getLastCheckpointThresholdWeight()` and selector `0xb933fa74`. + ```solidity + function getLastCheckpointThresholdWeight() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastCheckpointThresholdWeightCall {} + ///Container type for the return parameters of the [`getLastCheckpointThresholdWeight()`](getLastCheckpointThresholdWeightCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastCheckpointThresholdWeightReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastCheckpointThresholdWeightCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLastCheckpointThresholdWeightCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastCheckpointThresholdWeightReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLastCheckpointThresholdWeightReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getLastCheckpointThresholdWeightCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getLastCheckpointThresholdWeightReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getLastCheckpointThresholdWeight()"; + const SELECTOR: [u8; 4] = [185u8, 51u8, 250u8, 116u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getLastCheckpointThresholdWeightAtBlock(uint32)` and selector `0x1e4cd85e`. + ```solidity + function getLastCheckpointThresholdWeightAtBlock(uint32 _blockNumber) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastCheckpointThresholdWeightAtBlockCall { + pub _blockNumber: u32, + } + ///Container type for the return parameters of the [`getLastCheckpointThresholdWeightAtBlock(uint32)`](getLastCheckpointThresholdWeightAtBlockCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastCheckpointThresholdWeightAtBlockReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: getLastCheckpointThresholdWeightAtBlockCall) -> Self { + (value._blockNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getLastCheckpointThresholdWeightAtBlockCall + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _blockNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: getLastCheckpointThresholdWeightAtBlockReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getLastCheckpointThresholdWeightAtBlockReturn + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getLastCheckpointThresholdWeightAtBlockCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getLastCheckpointThresholdWeightAtBlockReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getLastCheckpointThresholdWeightAtBlock(uint32)"; + const SELECTOR: [u8; 4] = [30u8, 76u8, 216u8, 94u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._blockNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getLastCheckpointTotalWeight()` and selector `0x314f3a49`. + ```solidity + function getLastCheckpointTotalWeight() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastCheckpointTotalWeightCall {} + ///Container type for the return parameters of the [`getLastCheckpointTotalWeight()`](getLastCheckpointTotalWeightCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastCheckpointTotalWeightReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastCheckpointTotalWeightCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLastCheckpointTotalWeightCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastCheckpointTotalWeightReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLastCheckpointTotalWeightReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getLastCheckpointTotalWeightCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getLastCheckpointTotalWeightReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getLastCheckpointTotalWeight()"; + const SELECTOR: [u8; 4] = [49u8, 79u8, 58u8, 73u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getLastCheckpointTotalWeightAtBlock(uint32)` and selector `0x0dba3394`. + ```solidity + function getLastCheckpointTotalWeightAtBlock(uint32 _blockNumber) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastCheckpointTotalWeightAtBlockCall { + pub _blockNumber: u32, + } + ///Container type for the return parameters of the [`getLastCheckpointTotalWeightAtBlock(uint32)`](getLastCheckpointTotalWeightAtBlockCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastCheckpointTotalWeightAtBlockReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastCheckpointTotalWeightAtBlockCall) -> Self { + (value._blockNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLastCheckpointTotalWeightAtBlockCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _blockNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastCheckpointTotalWeightAtBlockReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLastCheckpointTotalWeightAtBlockReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getLastCheckpointTotalWeightAtBlockCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getLastCheckpointTotalWeightAtBlockReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getLastCheckpointTotalWeightAtBlock(uint32)"; + const SELECTOR: [u8; 4] = [13u8, 186u8, 51u8, 148u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._blockNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getLastestOperatorSigningKey(address)` and selector `0xcdcd3581`. + ```solidity + function getLastestOperatorSigningKey(address _operator) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastestOperatorSigningKeyCall { + pub _operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getLastestOperatorSigningKey(address)`](getLastestOperatorSigningKeyCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastestOperatorSigningKeyReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastestOperatorSigningKeyCall) -> Self { + (value._operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLastestOperatorSigningKeyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastestOperatorSigningKeyReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLastestOperatorSigningKeyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getLastestOperatorSigningKeyCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getLastestOperatorSigningKeyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getLastestOperatorSigningKey(address)"; + const SELECTOR: [u8; 4] = [205u8, 205u8, 53u8, 129u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorSigningKeyAtBlock(address,uint256)` and selector `0x5e1042e8`. + ```solidity + function getOperatorSigningKeyAtBlock(address _operator, uint256 _blockNumber) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorSigningKeyAtBlockCall { + pub _operator: alloy::sol_types::private::Address, + pub _blockNumber: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getOperatorSigningKeyAtBlock(address,uint256)`](getOperatorSigningKeyAtBlockCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorSigningKeyAtBlockReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorSigningKeyAtBlockCall) -> Self { + (value._operator, value._blockNumber) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorSigningKeyAtBlockCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _operator: tuple.0, + _blockNumber: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorSigningKeyAtBlockReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorSigningKeyAtBlockReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorSigningKeyAtBlockCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorSigningKeyAtBlockReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorSigningKeyAtBlock(address,uint256)"; + const SELECTOR: [u8; 4] = [94u8, 16u8, 66u8, 232u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + as alloy_sol_types::SolType>::tokenize( + &self._blockNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorWeight(address)` and selector `0x98ec1ac9`. + ```solidity + function getOperatorWeight(address _operator) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorWeightCall { + pub _operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getOperatorWeight(address)`](getOperatorWeightCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorWeightReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorWeightCall) -> Self { + (value._operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorWeightCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorWeightReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorWeightReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorWeightCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorWeightReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorWeight(address)"; + const SELECTOR: [u8; 4] = [152u8, 236u8, 26u8, 201u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorWeightAtBlock(address,uint32)` and selector `0x955f2d90`. + ```solidity + function getOperatorWeightAtBlock(address _operator, uint32 _blockNumber) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorWeightAtBlockCall { + pub _operator: alloy::sol_types::private::Address, + pub _blockNumber: u32, + } + ///Container type for the return parameters of the [`getOperatorWeightAtBlock(address,uint32)`](getOperatorWeightAtBlockCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorWeightAtBlockReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorWeightAtBlockCall) -> Self { + (value._operator, value._blockNumber) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorWeightAtBlockCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _operator: tuple.0, + _blockNumber: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorWeightAtBlockReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorWeightAtBlockReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorWeightAtBlockCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorWeightAtBlockReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorWeightAtBlock(address,uint32)"; + const SELECTOR: [u8; 4] = [149u8, 95u8, 45u8, 144u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + as alloy_sol_types::SolType>::tokenize( + &self._blockNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `initialize(address,uint256,((address,uint96)[]))` and selector `0xab118995`. + ```solidity + function initialize(address _serviceManager, uint256 _thresholdWeight, Quorum memory _quorum) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeCall { + pub _serviceManager: alloy::sol_types::private::Address, + pub _thresholdWeight: alloy::sol_types::private::primitives::aliases::U256, + pub _quorum: ::RustType, + } + ///Container type for the return parameters of the [`initialize(address,uint256,((address,uint96)[]))`](initializeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + Quorum, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeCall) -> Self { + (value._serviceManager, value._thresholdWeight, value._quorum) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _serviceManager: tuple.0, + _thresholdWeight: tuple.1, + _quorum: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for initializeCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + Quorum, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = initializeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "initialize(address,uint256,((address,uint96)[]))"; + const SELECTOR: [u8; 4] = [171u8, 17u8, 137u8, 149u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._serviceManager, + ), + as alloy_sol_types::SolType>::tokenize( + &self._thresholdWeight, + ), + ::tokenize(&self._quorum), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `isValidSignature(bytes32,bytes)` and selector `0x1626ba7e`. + ```solidity + function isValidSignature(bytes32 _dataHash, bytes memory _signatureData) external view returns (bytes4); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isValidSignatureCall { + pub _dataHash: alloy::sol_types::private::FixedBytes<32>, + pub _signatureData: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`isValidSignature(bytes32,bytes)`](isValidSignatureCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isValidSignatureReturn { + pub _0: alloy::sol_types::private::FixedBytes<4>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isValidSignatureCall) -> Self { + (value._dataHash, value._signatureData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isValidSignatureCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _dataHash: tuple.0, + _signatureData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isValidSignatureReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isValidSignatureReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for isValidSignatureCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = isValidSignatureReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "isValidSignature(bytes32,bytes)"; + const SELECTOR: [u8; 4] = [22u8, 38u8, 186u8, 126u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._dataHash), + ::tokenize( + &self._signatureData, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `minimumWeight()` and selector `0x40bf2fb7`. + ```solidity + function minimumWeight() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct minimumWeightCall {} + ///Container type for the return parameters of the [`minimumWeight()`](minimumWeightCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct minimumWeightReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: minimumWeightCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for minimumWeightCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: minimumWeightReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for minimumWeightReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for minimumWeightCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = minimumWeightReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "minimumWeight()"; + const SELECTOR: [u8; 4] = [64u8, 191u8, 47u8, 183u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `operatorRegistered(address)` and selector `0xec7fbb31`. + ```solidity + function operatorRegistered(address _operator) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorRegisteredCall { + pub _operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`operatorRegistered(address)`](operatorRegisteredCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorRegisteredReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorRegisteredCall) -> Self { + (value._operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorRegisteredCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorRegisteredReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorRegisteredReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for operatorRegisteredCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = operatorRegisteredReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "operatorRegistered(address)"; + const SELECTOR: [u8; 4] = [236u8, 127u8, 187u8, 49u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. + ```solidity + function owner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `quorum()` and selector `0x1703a018`. + ```solidity + function quorum() external view returns (Quorum memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct quorumCall {} + ///Container type for the return parameters of the [`quorum()`](quorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct quorumReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: quorumCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for quorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Quorum,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: quorumReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for quorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for quorumCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = quorumReturn; + type ReturnTuple<'a> = (Quorum,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "quorum()"; + const SELECTOR: [u8; 4] = [23u8, 3u8, 160u8, 24u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registerOperatorWithSignature((bytes,bytes32,uint256),address)` and selector `0x3d5611f6`. + ```solidity + function registerOperatorWithSignature(ISignatureUtils.SignatureWithSaltAndExpiry memory _operatorSignature, address _signingKey) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorWithSignatureCall { + pub _operatorSignature: + ::RustType, + pub _signingKey: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`registerOperatorWithSignature((bytes,bytes32,uint256),address)`](registerOperatorWithSignatureCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorWithSignatureReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + ISignatureUtils::SignatureWithSaltAndExpiry, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorWithSignatureCall) -> Self { + (value._operatorSignature, value._signingKey) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorWithSignatureCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _operatorSignature: tuple.0, + _signingKey: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorWithSignatureReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorWithSignatureReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registerOperatorWithSignatureCall { + type Parameters<'a> = ( + ISignatureUtils::SignatureWithSaltAndExpiry, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registerOperatorWithSignatureReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "registerOperatorWithSignature((bytes,bytes32,uint256),address)"; + const SELECTOR: [u8; 4] = [61u8, 86u8, 17u8, 246u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operatorSignature, + ), + ::tokenize( + &self._signingKey, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `renounceOwnership()` and selector `0x715018a6`. + ```solidity + function renounceOwnership() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct renounceOwnershipCall {} + ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct renounceOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for renounceOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for renounceOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for renounceOwnershipCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = renounceOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "renounceOwnership()"; + const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. + ```solidity + function transferOwnership(address newOwner) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateMinimumWeight(uint256,address[])` and selector `0x696255be`. + ```solidity + function updateMinimumWeight(uint256 _newMinimumWeight, address[] memory _operators) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateMinimumWeightCall { + pub _newMinimumWeight: alloy::sol_types::private::primitives::aliases::U256, + pub _operators: alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`updateMinimumWeight(uint256,address[])`](updateMinimumWeightCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateMinimumWeightReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateMinimumWeightCall) -> Self { + (value._newMinimumWeight, value._operators) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateMinimumWeightCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _newMinimumWeight: tuple.0, + _operators: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateMinimumWeightReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateMinimumWeightReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateMinimumWeightCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Array, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateMinimumWeightReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateMinimumWeight(uint256,address[])"; + const SELECTOR: [u8; 4] = [105u8, 98u8, 85u8, 190u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._newMinimumWeight), + as alloy_sol_types::SolType>::tokenize(&self._operators), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateOperatorSigningKey(address)` and selector `0x743c31f4`. + ```solidity + function updateOperatorSigningKey(address _newSigningKey) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorSigningKeyCall { + pub _newSigningKey: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`updateOperatorSigningKey(address)`](updateOperatorSigningKeyCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorSigningKeyReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorSigningKeyCall) -> Self { + (value._newSigningKey,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorSigningKeyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _newSigningKey: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorSigningKeyReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorSigningKeyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateOperatorSigningKeyCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateOperatorSigningKeyReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateOperatorSigningKey(address)"; + const SELECTOR: [u8; 4] = [116u8, 60u8, 49u8, 244u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._newSigningKey, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateOperators(address[])` and selector `0x00cf2ab5`. + ```solidity + function updateOperators(address[] memory _operators) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorsCall { + pub _operators: alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`updateOperators(address[])`](updateOperatorsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorsReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorsCall) -> Self { + (value._operators,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _operators: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorsReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateOperatorsCall { + type Parameters<'a> = + (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateOperatorsReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateOperators(address[])"; + const SELECTOR: [u8; 4] = [0u8, 207u8, 42u8, 181u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( as alloy_sol_types::SolType>::tokenize( + &self._operators + ),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateOperatorsForQuorum(address[][],bytes)` and selector `0x5140a548`. + ```solidity + function updateOperatorsForQuorum(address[][] memory operatorsPerQuorum, bytes memory) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorsForQuorumCall { + pub operatorsPerQuorum: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec, + >, + pub _1: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`updateOperatorsForQuorum(address[][],bytes)`](updateOperatorsForQuorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorsForQuorumReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array, + >, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec, + >, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorsForQuorumCall) -> Self { + (value.operatorsPerQuorum, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorsForQuorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorsPerQuorum: tuple.0, + _1: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorsForQuorumReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorsForQuorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateOperatorsForQuorumCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array, + >, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateOperatorsForQuorumReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateOperatorsForQuorum(address[][],bytes)"; + const SELECTOR: [u8; 4] = [81u8, 64u8, 165u8, 72u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + , + > as alloy_sol_types::SolType>::tokenize( + &self.operatorsPerQuorum + ), + ::tokenize( + &self._1, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateQuorumConfig(((address,uint96)[]),address[])` and selector `0xdec5d1f6`. + ```solidity + function updateQuorumConfig(Quorum memory _quorum, address[] memory _operators) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateQuorumConfigCall { + pub _quorum: ::RustType, + pub _operators: alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`updateQuorumConfig(((address,uint96)[]),address[])`](updateQuorumConfigCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateQuorumConfigReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Quorum, + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateQuorumConfigCall) -> Self { + (value._quorum, value._operators) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateQuorumConfigCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _quorum: tuple.0, + _operators: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateQuorumConfigReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateQuorumConfigReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateQuorumConfigCall { + type Parameters<'a> = ( + Quorum, + alloy::sol_types::sol_data::Array, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateQuorumConfigReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateQuorumConfig(((address,uint96)[]),address[])"; + const SELECTOR: [u8; 4] = [222u8, 197u8, 209u8, 246u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self._quorum), + as alloy_sol_types::SolType>::tokenize(&self._operators), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateStakeThreshold(uint256)` and selector `0x5ef53329`. + ```solidity + function updateStakeThreshold(uint256 _thresholdWeight) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateStakeThresholdCall { + pub _thresholdWeight: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`updateStakeThreshold(uint256)`](updateStakeThresholdCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateStakeThresholdReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateStakeThresholdCall) -> Self { + (value._thresholdWeight,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateStakeThresholdCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _thresholdWeight: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateStakeThresholdReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateStakeThresholdReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateStakeThresholdCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateStakeThresholdReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateStakeThreshold(uint256)"; + const SELECTOR: [u8; 4] = [94u8, 245u8, 51u8, 41u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._thresholdWeight, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`ECDSAStakeRegistry`](self) function calls. + pub enum ECDSAStakeRegistryCalls { + deregisterOperator(deregisterOperatorCall), + getLastCheckpointOperatorWeight(getLastCheckpointOperatorWeightCall), + getLastCheckpointThresholdWeight(getLastCheckpointThresholdWeightCall), + getLastCheckpointThresholdWeightAtBlock(getLastCheckpointThresholdWeightAtBlockCall), + getLastCheckpointTotalWeight(getLastCheckpointTotalWeightCall), + getLastCheckpointTotalWeightAtBlock(getLastCheckpointTotalWeightAtBlockCall), + getLastestOperatorSigningKey(getLastestOperatorSigningKeyCall), + getOperatorSigningKeyAtBlock(getOperatorSigningKeyAtBlockCall), + getOperatorWeight(getOperatorWeightCall), + getOperatorWeightAtBlock(getOperatorWeightAtBlockCall), + initialize(initializeCall), + isValidSignature(isValidSignatureCall), + minimumWeight(minimumWeightCall), + operatorRegistered(operatorRegisteredCall), + owner(ownerCall), + quorum(quorumCall), + registerOperatorWithSignature(registerOperatorWithSignatureCall), + renounceOwnership(renounceOwnershipCall), + transferOwnership(transferOwnershipCall), + updateMinimumWeight(updateMinimumWeightCall), + updateOperatorSigningKey(updateOperatorSigningKeyCall), + updateOperators(updateOperatorsCall), + updateOperatorsForQuorum(updateOperatorsForQuorumCall), + updateQuorumConfig(updateQuorumConfigCall), + updateStakeThreshold(updateStakeThresholdCall), + } + #[automatically_derived] + impl ECDSAStakeRegistryCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [0u8, 207u8, 42u8, 181u8], + [13u8, 186u8, 51u8, 148u8], + [22u8, 38u8, 186u8, 126u8], + [23u8, 3u8, 160u8, 24u8], + [30u8, 76u8, 216u8, 94u8], + [49u8, 79u8, 58u8, 73u8], + [59u8, 36u8, 46u8, 74u8], + [61u8, 86u8, 17u8, 246u8], + [64u8, 191u8, 47u8, 183u8], + [81u8, 64u8, 165u8, 72u8], + [94u8, 16u8, 66u8, 232u8], + [94u8, 245u8, 51u8, 41u8], + [105u8, 98u8, 85u8, 190u8], + [113u8, 80u8, 24u8, 166u8], + [116u8, 60u8, 49u8, 244u8], + [133u8, 125u8, 193u8, 144u8], + [141u8, 165u8, 203u8, 91u8], + [149u8, 95u8, 45u8, 144u8], + [152u8, 236u8, 26u8, 201u8], + [171u8, 17u8, 137u8, 149u8], + [185u8, 51u8, 250u8, 116u8], + [205u8, 205u8, 53u8, 129u8], + [222u8, 197u8, 209u8, 246u8], + [236u8, 127u8, 187u8, 49u8], + [242u8, 253u8, 227u8, 139u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ECDSAStakeRegistryCalls { + const NAME: &'static str = "ECDSAStakeRegistryCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 25usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::deregisterOperator(_) => { + ::SELECTOR + } + Self::getLastCheckpointOperatorWeight(_) => { + ::SELECTOR + } + Self::getLastCheckpointThresholdWeight(_) => { + ::SELECTOR + } + Self::getLastCheckpointThresholdWeightAtBlock(_) => { + ::SELECTOR + } + Self::getLastCheckpointTotalWeight(_) => { + ::SELECTOR + } + Self::getLastCheckpointTotalWeightAtBlock(_) => { + ::SELECTOR + } + Self::getLastestOperatorSigningKey(_) => { + ::SELECTOR + } + Self::getOperatorSigningKeyAtBlock(_) => { + ::SELECTOR + } + Self::getOperatorWeight(_) => { + ::SELECTOR + } + Self::getOperatorWeightAtBlock(_) => { + ::SELECTOR + } + Self::initialize(_) => { + ::SELECTOR + } + Self::isValidSignature(_) => { + ::SELECTOR + } + Self::minimumWeight(_) => { + ::SELECTOR + } + Self::operatorRegistered(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::quorum(_) => ::SELECTOR, + Self::registerOperatorWithSignature(_) => { + ::SELECTOR + } + Self::renounceOwnership(_) => { + ::SELECTOR + } + Self::transferOwnership(_) => { + ::SELECTOR + } + Self::updateMinimumWeight(_) => { + ::SELECTOR + } + Self::updateOperatorSigningKey(_) => { + ::SELECTOR + } + Self::updateOperators(_) => { + ::SELECTOR + } + Self::updateOperatorsForQuorum(_) => { + ::SELECTOR + } + Self::updateQuorumConfig(_) => { + ::SELECTOR + } + Self::updateStakeThreshold(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn updateOperators( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryCalls::updateOperators) + } + updateOperators + }, + { + fn getLastCheckpointTotalWeightAtBlock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + ECDSAStakeRegistryCalls::getLastCheckpointTotalWeightAtBlock, + ) + } + getLastCheckpointTotalWeightAtBlock + }, + { + fn isValidSignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryCalls::isValidSignature) + } + isValidSignature + }, + { + fn quorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ECDSAStakeRegistryCalls::quorum) + } + quorum + }, + { + fn getLastCheckpointThresholdWeightAtBlock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + ECDSAStakeRegistryCalls::getLastCheckpointThresholdWeightAtBlock, + ) + } + getLastCheckpointThresholdWeightAtBlock + }, + { + fn getLastCheckpointTotalWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ECDSAStakeRegistryCalls::getLastCheckpointTotalWeight) + } + getLastCheckpointTotalWeight + }, + { + fn getLastCheckpointOperatorWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + ECDSAStakeRegistryCalls::getLastCheckpointOperatorWeight, + ) + } + getLastCheckpointOperatorWeight + }, + { + fn registerOperatorWithSignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ECDSAStakeRegistryCalls::registerOperatorWithSignature) + } + registerOperatorWithSignature + }, + { + fn minimumWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryCalls::minimumWeight) + } + minimumWeight + }, + { + fn updateOperatorsForQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryCalls::updateOperatorsForQuorum) + } + updateOperatorsForQuorum + }, + { + fn getOperatorSigningKeyAtBlock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ECDSAStakeRegistryCalls::getOperatorSigningKeyAtBlock) + } + getOperatorSigningKeyAtBlock + }, + { + fn updateStakeThreshold( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryCalls::updateStakeThreshold) + } + updateStakeThreshold + }, + { + fn updateMinimumWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryCalls::updateMinimumWeight) + } + updateMinimumWeight + }, + { + fn renounceOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryCalls::renounceOwnership) + } + renounceOwnership + }, + { + fn updateOperatorSigningKey( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryCalls::updateOperatorSigningKey) + } + updateOperatorSigningKey + }, + { + fn deregisterOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryCalls::deregisterOperator) + } + deregisterOperator + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ECDSAStakeRegistryCalls::owner) + } + owner + }, + { + fn getOperatorWeightAtBlock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryCalls::getOperatorWeightAtBlock) + } + getOperatorWeightAtBlock + }, + { + fn getOperatorWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryCalls::getOperatorWeight) + } + getOperatorWeight + }, + { + fn initialize( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ECDSAStakeRegistryCalls::initialize) + } + initialize + }, + { + fn getLastCheckpointThresholdWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + ECDSAStakeRegistryCalls::getLastCheckpointThresholdWeight, + ) + } + getLastCheckpointThresholdWeight + }, + { + fn getLastestOperatorSigningKey( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ECDSAStakeRegistryCalls::getLastestOperatorSigningKey) + } + getLastestOperatorSigningKey + }, + { + fn updateQuorumConfig( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryCalls::updateQuorumConfig) + } + updateQuorumConfig + }, + { + fn operatorRegistered( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryCalls::operatorRegistered) + } + operatorRegistered + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryCalls::transferOwnership) + } + transferOwnership + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::deregisterOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getLastCheckpointOperatorWeight(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getLastCheckpointThresholdWeight(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getLastCheckpointThresholdWeightAtBlock(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getLastCheckpointTotalWeight(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getLastCheckpointTotalWeightAtBlock(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getLastestOperatorSigningKey(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorSigningKeyAtBlock(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorWeight(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorWeightAtBlock(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::initialize(inner) => { + ::abi_encoded_size(inner) + } + Self::isValidSignature(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::minimumWeight(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::operatorRegistered(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::quorum(inner) => { + ::abi_encoded_size(inner) + } + Self::registerOperatorWithSignature(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::renounceOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::updateMinimumWeight(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::updateOperatorSigningKey(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::updateOperators(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::updateOperatorsForQuorum(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::updateQuorumConfig(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::updateStakeThreshold(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::deregisterOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getLastCheckpointOperatorWeight(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getLastCheckpointThresholdWeight(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getLastCheckpointThresholdWeightAtBlock(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getLastCheckpointTotalWeight(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getLastCheckpointTotalWeightAtBlock(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getLastestOperatorSigningKey(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperatorSigningKeyAtBlock(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperatorWeight(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperatorWeightAtBlock(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::initialize(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::isValidSignature(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::minimumWeight(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::operatorRegistered(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::quorum(inner) => { + ::abi_encode_raw(inner, out) + } + Self::registerOperatorWithSignature(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::renounceOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::updateMinimumWeight(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::updateOperatorSigningKey(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::updateOperators(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::updateOperatorsForQuorum(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::updateQuorumConfig(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::updateStakeThreshold(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`ECDSAStakeRegistry`](self) custom errors. + pub enum ECDSAStakeRegistryErrors { + InsufficientSignedStake(InsufficientSignedStake), + InsufficientWeight(InsufficientWeight), + InvalidLength(InvalidLength), + InvalidQuorum(InvalidQuorum), + InvalidReferenceBlock(InvalidReferenceBlock), + InvalidSignature(InvalidSignature), + InvalidSignedWeight(InvalidSignedWeight), + InvalidThreshold(InvalidThreshold), + LengthMismatch(LengthMismatch), + MustUpdateAllOperators(MustUpdateAllOperators), + NotSorted(NotSorted), + OperatorAlreadyRegistered(OperatorAlreadyRegistered), + OperatorNotRegistered(OperatorNotRegistered), + } + #[automatically_derived] + impl ECDSAStakeRegistryErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [37u8, 236u8, 108u8, 31u8], + [45u8, 61u8, 246u8, 182u8], + [66u8, 238u8, 104u8, 181u8], + [139u8, 170u8, 87u8, 159u8], + [148u8, 125u8, 90u8, 132u8], + [150u8, 11u8, 65u8, 238u8], + [168u8, 121u8, 47u8, 209u8], + [170u8, 189u8, 90u8, 9u8], + [186u8, 80u8, 249u8, 17u8], + [209u8, 115u8, 87u8, 121u8], + [225u8, 33u8, 99u8, 47u8], + [230u8, 79u8, 24u8, 15u8], + [255u8, 99u8, 58u8, 56u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ECDSAStakeRegistryErrors { + const NAME: &'static str = "ECDSAStakeRegistryErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 13usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::InsufficientSignedStake(_) => { + ::SELECTOR + } + Self::InsufficientWeight(_) => { + ::SELECTOR + } + Self::InvalidLength(_) => ::SELECTOR, + Self::InvalidQuorum(_) => ::SELECTOR, + Self::InvalidReferenceBlock(_) => { + ::SELECTOR + } + Self::InvalidSignature(_) => { + ::SELECTOR + } + Self::InvalidSignedWeight(_) => { + ::SELECTOR + } + Self::InvalidThreshold(_) => { + ::SELECTOR + } + Self::LengthMismatch(_) => ::SELECTOR, + Self::MustUpdateAllOperators(_) => { + ::SELECTOR + } + Self::NotSorted(_) => ::SELECTOR, + Self::OperatorAlreadyRegistered(_) => { + ::SELECTOR + } + Self::OperatorNotRegistered(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn OperatorNotRegistered( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryErrors::OperatorNotRegistered) + } + OperatorNotRegistered + }, + { + fn MustUpdateAllOperators( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryErrors::MustUpdateAllOperators) + } + MustUpdateAllOperators + }, + { + fn OperatorAlreadyRegistered( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryErrors::OperatorAlreadyRegistered) + } + OperatorAlreadyRegistered + }, + { + fn InvalidSignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryErrors::InvalidSignature) + } + InvalidSignature + }, + { + fn InvalidLength( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ECDSAStakeRegistryErrors::InvalidLength) + } + InvalidLength + }, + { + fn InvalidSignedWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryErrors::InvalidSignedWeight) + } + InvalidSignedWeight + }, + { + fn InsufficientWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryErrors::InsufficientWeight) + } + InsufficientWeight + }, + { + fn InvalidThreshold( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryErrors::InvalidThreshold) + } + InvalidThreshold + }, + { + fn NotSorted( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ECDSAStakeRegistryErrors::NotSorted) + } + NotSorted + }, + { + fn InvalidQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ECDSAStakeRegistryErrors::InvalidQuorum) + } + InvalidQuorum + }, + { + fn InsufficientSignedStake( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryErrors::InsufficientSignedStake) + } + InsufficientSignedStake + }, + { + fn InvalidReferenceBlock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryErrors::InvalidReferenceBlock) + } + InvalidReferenceBlock + }, + { + fn LengthMismatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryErrors::LengthMismatch) + } + LengthMismatch + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::InsufficientSignedStake(inner) => { + ::abi_encoded_size(inner) + } + Self::InsufficientWeight(inner) => { + ::abi_encoded_size(inner) + } + Self::InvalidLength(inner) => { + ::abi_encoded_size(inner) + } + Self::InvalidQuorum(inner) => { + ::abi_encoded_size(inner) + } + Self::InvalidReferenceBlock(inner) => { + ::abi_encoded_size(inner) + } + Self::InvalidSignature(inner) => { + ::abi_encoded_size(inner) + } + Self::InvalidSignedWeight(inner) => { + ::abi_encoded_size(inner) + } + Self::InvalidThreshold(inner) => { + ::abi_encoded_size(inner) + } + Self::LengthMismatch(inner) => { + ::abi_encoded_size(inner) + } + Self::MustUpdateAllOperators(inner) => { + ::abi_encoded_size(inner) + } + Self::NotSorted(inner) => { + ::abi_encoded_size(inner) + } + Self::OperatorAlreadyRegistered(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::OperatorNotRegistered(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::InsufficientSignedStake(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::InsufficientWeight(inner) => { + ::abi_encode_raw(inner, out) + } + Self::InvalidLength(inner) => { + ::abi_encode_raw(inner, out) + } + Self::InvalidQuorum(inner) => { + ::abi_encode_raw(inner, out) + } + Self::InvalidReferenceBlock(inner) => { + ::abi_encode_raw(inner, out) + } + Self::InvalidSignature(inner) => { + ::abi_encode_raw(inner, out) + } + Self::InvalidSignedWeight(inner) => { + ::abi_encode_raw(inner, out) + } + Self::InvalidThreshold(inner) => { + ::abi_encode_raw(inner, out) + } + Self::LengthMismatch(inner) => { + ::abi_encode_raw(inner, out) + } + Self::MustUpdateAllOperators(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::NotSorted(inner) => { + ::abi_encode_raw(inner, out) + } + Self::OperatorAlreadyRegistered(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::OperatorNotRegistered(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`ECDSAStakeRegistry`](self) events. + pub enum ECDSAStakeRegistryEvents { + Initialized(Initialized), + MinimumWeightUpdated(MinimumWeightUpdated), + OperatorDeregistered(OperatorDeregistered), + OperatorRegistered(OperatorRegistered), + OperatorWeightUpdated(OperatorWeightUpdated), + OwnershipTransferred(OwnershipTransferred), + QuorumUpdated(QuorumUpdated), + SigningKeyUpdate(SigningKeyUpdate), + ThresholdWeightUpdated(ThresholdWeightUpdated), + TotalWeightUpdated(TotalWeightUpdated), + UpdateMinimumWeight(UpdateMinimumWeight), + } + #[automatically_derived] + impl ECDSAStakeRegistryEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 30u8, 164u8, 33u8, 134u8, 179u8, 5u8, 250u8, 55u8, 49u8, 4u8, 80u8, 217u8, 251u8, + 135u8, 234u8, 30u8, 143u8, 12u8, 127u8, 68u8, 126u8, 119u8, 20u8, 121u8, 227u8, + 178u8, 118u8, 52u8, 191u8, 232u8, 77u8, 193u8, + ], + [ + 35u8, 170u8, 212u8, 230u8, 23u8, 68u8, 236u8, 225u8, 100u8, 19u8, 10u8, 164u8, + 21u8, 193u8, 97u8, 110u8, 128u8, 19u8, 107u8, 15u8, 7u8, 112u8, 229u8, 101u8, + 137u8, 67u8, 139u8, 144u8, 178u8, 105u8, 38u8, 94u8, + ], + [ + 49u8, 224u8, 173u8, 254u8, 199u8, 27u8, 204u8, 238u8, 55u8, 182u8, 232u8, 58u8, + 144u8, 194u8, 254u8, 219u8, 23u8, 216u8, 241u8, 105u8, 63u8, 238u8, 134u8, 60u8, + 71u8, 113u8, 231u8, 191u8, 226u8, 174u8, 213u8, 128u8, + ], + [ + 113u8, 60u8, 165u8, 59u8, 136u8, 214u8, 235u8, 99u8, 245u8, 177u8, 133u8, 76u8, + 184u8, 203u8, 221u8, 115u8, 110u8, 197u8, 30u8, 218u8, 34u8, 94u8, 70u8, 121u8, + 26u8, 169u8, 41u8, 139u8, 1u8, 96u8, 100u8, 143u8, + ], + [ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, 56u8, + 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, 96u8, + 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ], + [ + 134u8, 220u8, 248u8, 107u8, 18u8, 223u8, 238u8, 222u8, 167u8, 74u8, 233u8, 48u8, + 13u8, 189u8, 170u8, 25u8, 59u8, 204u8, 229u8, 128u8, 147u8, 105u8, 200u8, 23u8, + 126u8, 162u8, 244u8, 234u8, 170u8, 101u8, 114u8, 155u8, + ], + [ + 136u8, 119u8, 13u8, 200u8, 98u8, 228u8, 122u8, 126u8, 213u8, 134u8, 144u8, 120u8, + 87u8, 235u8, 27u8, 117u8, 228u8, 197u8, 255u8, 200u8, 183u8, 7u8, 199u8, 238u8, + 16u8, 235u8, 116u8, 214u8, 136u8, 95u8, 229u8, 148u8, + ], + [ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, 208u8, + 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, 175u8, 227u8, + 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ], + [ + 147u8, 36u8, 247u8, 229u8, 167u8, 192u8, 40u8, 136u8, 8u8, 166u8, 52u8, 204u8, + 222u8, 68u8, 184u8, 233u8, 121u8, 103u8, 100u8, 116u8, 178u8, 46u8, 41u8, 238u8, + 157u8, 213u8, 105u8, 181u8, 94u8, 121u8, 26u8, 75u8, + ], + [ + 164u8, 83u8, 219u8, 97u8, 42u8, 245u8, 158u8, 85u8, 33u8, 214u8, 171u8, 146u8, + 132u8, 220u8, 62u8, 45u8, 6u8, 175u8, 40u8, 110u8, 177u8, 177u8, 183u8, 183u8, + 113u8, 252u8, 228u8, 113u8, 108u8, 25u8, 242u8, 193u8, + ], + [ + 208u8, 97u8, 22u8, 130u8, 82u8, 244u8, 65u8, 115u8, 54u8, 88u8, 240u8, 158u8, 77u8, + 143u8, 91u8, 45u8, 153u8, 142u8, 212u8, 239u8, 36u8, 162u8, 187u8, 253u8, 108u8, + 236u8, 165u8, 46u8, 161u8, 49u8, 80u8, 2u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for ECDSAStakeRegistryEvents { + const NAME: &'static str = "ECDSAStakeRegistryEvents"; + const COUNT: usize = 11usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::Initialized) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::MinimumWeightUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorDeregistered) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorRegistered) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorWeightUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OwnershipTransferred) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::QuorumUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::SigningKeyUpdate) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ThresholdWeightUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::TotalWeightUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::UpdateMinimumWeight) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ECDSAStakeRegistryEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::MinimumWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorDeregistered(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorRegistered(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::QuorumUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::SigningKeyUpdate(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ThresholdWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::TotalWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::UpdateMinimumWeight(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::MinimumWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorDeregistered(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorRegistered(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::QuorumUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::SigningKeyUpdate(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ThresholdWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::TotalWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::UpdateMinimumWeight(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ECDSAStakeRegistry`](self) contract instance. + + See the [wrapper's documentation](`ECDSAStakeRegistryInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ECDSAStakeRegistryInstance { + ECDSAStakeRegistryInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _delegationManager: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future>> + { + ECDSAStakeRegistryInstance::::deploy(provider, _delegationManager) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _delegationManager: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + ECDSAStakeRegistryInstance::::deploy_builder(provider, _delegationManager) + } + /**A [`ECDSAStakeRegistry`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ECDSAStakeRegistry`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ECDSAStakeRegistryInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ECDSAStakeRegistryInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ECDSAStakeRegistryInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ECDSAStakeRegistryInstance + { + /**Creates a new wrapper around an on-chain [`ECDSAStakeRegistry`](self) contract instance. + + See the [wrapper's documentation](`ECDSAStakeRegistryInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _delegationManager: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, _delegationManager); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _delegationManager: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode(&constructorCall { + _delegationManager, + })[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ECDSAStakeRegistryInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ECDSAStakeRegistryInstance { + ECDSAStakeRegistryInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ECDSAStakeRegistryInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`deregisterOperator`] function. + pub fn deregisterOperator( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&deregisterOperatorCall {}) + } + ///Creates a new call builder for the [`getLastCheckpointOperatorWeight`] function. + pub fn getLastCheckpointOperatorWeight( + &self, + _operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getLastCheckpointOperatorWeightCall { _operator }) + } + ///Creates a new call builder for the [`getLastCheckpointThresholdWeight`] function. + pub fn getLastCheckpointThresholdWeight( + &self, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&getLastCheckpointThresholdWeightCall {}) + } + ///Creates a new call builder for the [`getLastCheckpointThresholdWeightAtBlock`] function. + pub fn getLastCheckpointThresholdWeightAtBlock( + &self, + _blockNumber: u32, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&getLastCheckpointThresholdWeightAtBlockCall { _blockNumber }) + } + ///Creates a new call builder for the [`getLastCheckpointTotalWeight`] function. + pub fn getLastCheckpointTotalWeight( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getLastCheckpointTotalWeightCall {}) + } + ///Creates a new call builder for the [`getLastCheckpointTotalWeightAtBlock`] function. + pub fn getLastCheckpointTotalWeightAtBlock( + &self, + _blockNumber: u32, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&getLastCheckpointTotalWeightAtBlockCall { _blockNumber }) + } + ///Creates a new call builder for the [`getLastestOperatorSigningKey`] function. + pub fn getLastestOperatorSigningKey( + &self, + _operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getLastestOperatorSigningKeyCall { _operator }) + } + ///Creates a new call builder for the [`getOperatorSigningKeyAtBlock`] function. + pub fn getOperatorSigningKeyAtBlock( + &self, + _operator: alloy::sol_types::private::Address, + _blockNumber: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorSigningKeyAtBlockCall { + _operator, + _blockNumber, + }) + } + ///Creates a new call builder for the [`getOperatorWeight`] function. + pub fn getOperatorWeight( + &self, + _operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorWeightCall { _operator }) + } + ///Creates a new call builder for the [`getOperatorWeightAtBlock`] function. + pub fn getOperatorWeightAtBlock( + &self, + _operator: alloy::sol_types::private::Address, + _blockNumber: u32, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorWeightAtBlockCall { + _operator, + _blockNumber, + }) + } + ///Creates a new call builder for the [`initialize`] function. + pub fn initialize( + &self, + _serviceManager: alloy::sol_types::private::Address, + _thresholdWeight: alloy::sol_types::private::primitives::aliases::U256, + _quorum: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initializeCall { + _serviceManager, + _thresholdWeight, + _quorum, + }) + } + ///Creates a new call builder for the [`isValidSignature`] function. + pub fn isValidSignature( + &self, + _dataHash: alloy::sol_types::private::FixedBytes<32>, + _signatureData: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&isValidSignatureCall { + _dataHash, + _signatureData, + }) + } + ///Creates a new call builder for the [`minimumWeight`] function. + pub fn minimumWeight(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&minimumWeightCall {}) + } + ///Creates a new call builder for the [`operatorRegistered`] function. + pub fn operatorRegistered( + &self, + _operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&operatorRegisteredCall { _operator }) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`quorum`] function. + pub fn quorum(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&quorumCall {}) + } + ///Creates a new call builder for the [`registerOperatorWithSignature`] function. + pub fn registerOperatorWithSignature( + &self, + _operatorSignature: ::RustType, + _signingKey: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterOperatorWithSignatureCall { + _operatorSignature, + _signingKey, + }) + } + ///Creates a new call builder for the [`renounceOwnership`] function. + pub fn renounceOwnership( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&renounceOwnershipCall {}) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + ///Creates a new call builder for the [`updateMinimumWeight`] function. + pub fn updateMinimumWeight( + &self, + _newMinimumWeight: alloy::sol_types::private::primitives::aliases::U256, + _operators: alloy::sol_types::private::Vec, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateMinimumWeightCall { + _newMinimumWeight, + _operators, + }) + } + ///Creates a new call builder for the [`updateOperatorSigningKey`] function. + pub fn updateOperatorSigningKey( + &self, + _newSigningKey: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateOperatorSigningKeyCall { _newSigningKey }) + } + ///Creates a new call builder for the [`updateOperators`] function. + pub fn updateOperators( + &self, + _operators: alloy::sol_types::private::Vec, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateOperatorsCall { _operators }) + } + ///Creates a new call builder for the [`updateOperatorsForQuorum`] function. + pub fn updateOperatorsForQuorum( + &self, + operatorsPerQuorum: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec, + >, + _1: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateOperatorsForQuorumCall { + operatorsPerQuorum, + _1, + }) + } + ///Creates a new call builder for the [`updateQuorumConfig`] function. + pub fn updateQuorumConfig( + &self, + _quorum: ::RustType, + _operators: alloy::sol_types::private::Vec, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateQuorumConfigCall { + _quorum, + _operators, + }) + } + ///Creates a new call builder for the [`updateStakeThreshold`] function. + pub fn updateStakeThreshold( + &self, + _thresholdWeight: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateStakeThresholdCall { _thresholdWeight }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ECDSAStakeRegistryInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Initialized`] event. + pub fn Initialized_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`MinimumWeightUpdated`] event. + pub fn MinimumWeightUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorDeregistered`] event. + pub fn OperatorDeregistered_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorRegistered`] event. + pub fn OperatorRegistered_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorWeightUpdated`] event. + pub fn OperatorWeightUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`QuorumUpdated`] event. + pub fn QuorumUpdated_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`SigningKeyUpdate`] event. + pub fn SigningKeyUpdate_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ThresholdWeightUpdated`] event. + pub fn ThresholdWeightUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`TotalWeightUpdated`] event. + pub fn TotalWeightUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`UpdateMinimumWeight`] event. + pub fn UpdateMinimumWeight_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/ecdsastakeregistryequalweight.rs b/crates/utils/src/ecdsastakeregistryequalweight.rs new file mode 100644 index 00000000..e99272a6 --- /dev/null +++ b/crates/utils/src/ecdsastakeregistryequalweight.rs @@ -0,0 +1,9455 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library ISignatureUtils { + struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ISignatureUtils { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SignatureWithSaltAndExpiry { + pub signature: alloy::sol_types::private::Bytes, + pub salt: alloy::sol_types::private::FixedBytes<32>, + pub expiry: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: SignatureWithSaltAndExpiry) -> Self { + (value.signature, value.salt, value.expiry) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for SignatureWithSaltAndExpiry { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + signature: tuple.0, + salt: tuple.1, + expiry: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for SignatureWithSaltAndExpiry { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for SignatureWithSaltAndExpiry { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.signature, + ), + as alloy_sol_types::SolType>::tokenize(&self.salt), + as alloy_sol_types::SolType>::tokenize(&self.expiry), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for SignatureWithSaltAndExpiry { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for SignatureWithSaltAndExpiry { + const NAME: &'static str = "SignatureWithSaltAndExpiry"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "SignatureWithSaltAndExpiry(bytes signature,bytes32 salt,uint256 expiry)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.signature, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.salt) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.expiry) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for SignatureWithSaltAndExpiry { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.signature, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.salt) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.expiry, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.signature, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.salt, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.expiry, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ISignatureUtilsInstance { + ISignatureUtilsInstance::::new(address, provider) + } + /**A [`ISignatureUtils`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ISignatureUtils`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ISignatureUtilsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ISignatureUtilsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ISignatureUtilsInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ISignatureUtilsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ISignatureUtilsInstance { + ISignatureUtilsInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library ISignatureUtils { + struct SignatureWithSaltAndExpiry { + bytes signature; + bytes32 salt; + uint256 expiry; + } +} + +interface ECDSAStakeRegistryEqualWeight { + struct Quorum { + StrategyParams[] strategies; + } + struct StrategyParams { + address strategy; + uint96 multiplier; + } + + error InsufficientSignedStake(); + error InsufficientWeight(); + error InvalidLength(); + error InvalidQuorum(); + error InvalidReferenceBlock(); + error InvalidSignature(); + error InvalidSignedWeight(); + error InvalidThreshold(); + error LengthMismatch(); + error MustUpdateAllOperators(); + error NotSorted(); + error OperatorAlreadyAllowlisted(); + error OperatorAlreadyRegistered(); + error OperatorNotAllowlisted(); + error OperatorNotRegistered(); + + event Initialized(uint8 version); + event MinimumWeightUpdated(uint256 _old, uint256 _new); + event OperatorDeregistered(address indexed _operator, address indexed _avs); + event OperatorEjected(address indexed operator); + event OperatorPermitted(address indexed operator); + event OperatorRegistered(address indexed _operator, address indexed _avs); + event OperatorRevoked(address indexed operator); + event OperatorWeightUpdated(address indexed _operator, uint256 oldWeight, uint256 newWeight); + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + event QuorumUpdated(Quorum _old, Quorum _new); + event SigningKeyUpdate(address indexed operator, uint256 indexed updateBlock, address indexed newSigningKey, address oldSigningKey); + event ThresholdWeightUpdated(uint256 _thresholdWeight); + event TotalWeightUpdated(uint256 oldTotalWeight, uint256 newTotalWeight); + event UpdateMinimumWeight(uint256 oldMinimumWeight, uint256 newMinimumWeight); + + constructor(address _delegationManager); + + function allowlistedOperators(address) external view returns (bool); + function deregisterOperator() external; + function ejectOperator(address _operator) external; + function getLastCheckpointOperatorWeight(address _operator) external view returns (uint256); + function getLastCheckpointThresholdWeight() external view returns (uint256); + function getLastCheckpointThresholdWeightAtBlock(uint32 _blockNumber) external view returns (uint256); + function getLastCheckpointTotalWeight() external view returns (uint256); + function getLastCheckpointTotalWeightAtBlock(uint32 _blockNumber) external view returns (uint256); + function getLastestOperatorSigningKey(address _operator) external view returns (address); + function getOperatorSigningKeyAtBlock(address _operator, uint256 _blockNumber) external view returns (address); + function getOperatorWeight(address _operator) external view returns (uint256); + function getOperatorWeightAtBlock(address _operator, uint32 _blockNumber) external view returns (uint256); + function initialize(address _serviceManager, uint256 _thresholdWeight, Quorum memory _quorum) external; + function isValidSignature(bytes32 _dataHash, bytes memory _signatureData) external view returns (bytes4); + function minimumWeight() external view returns (uint256); + function operatorRegistered(address _operator) external view returns (bool); + function owner() external view returns (address); + function permitOperator(address _operator) external; + function quorum() external view returns (Quorum memory); + function registerOperatorWithSignature(ISignatureUtils.SignatureWithSaltAndExpiry memory _operatorSignature, address _signingKey) external; + function renounceOwnership() external; + function revokeOperator(address _operator) external; + function transferOwnership(address newOwner) external; + function updateMinimumWeight(uint256 _newMinimumWeight, address[] memory _operators) external; + function updateOperatorSigningKey(address _newSigningKey) external; + function updateOperators(address[] memory _operators) external; + function updateOperatorsForQuorum(address[][] memory operatorsPerQuorum, bytes memory) external; + function updateQuorumConfig(Quorum memory _quorum, address[] memory _operators) external; + function updateStakeThreshold(uint256 _thresholdWeight) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_delegationManager", + "type": "address", + "internalType": "contract IDelegationManager" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "allowlistedOperators", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "deregisterOperator", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "ejectOperator", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getLastCheckpointOperatorWeight", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getLastCheckpointThresholdWeight", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getLastCheckpointThresholdWeightAtBlock", + "inputs": [ + { + "name": "_blockNumber", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getLastCheckpointTotalWeight", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getLastCheckpointTotalWeightAtBlock", + "inputs": [ + { + "name": "_blockNumber", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getLastestOperatorSigningKey", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorSigningKeyAtBlock", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + }, + { + "name": "_blockNumber", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorWeight", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorWeightAtBlock", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + }, + { + "name": "_blockNumber", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "_serviceManager", + "type": "address", + "internalType": "address" + }, + { + "name": "_thresholdWeight", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_quorum", + "type": "tuple", + "internalType": "struct Quorum", + "components": [ + { + "name": "strategies", + "type": "tuple[]", + "internalType": "struct StrategyParams[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "isValidSignature", + "inputs": [ + { + "name": "_dataHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "_signatureData", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "minimumWeight", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "operatorRegistered", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "permitOperator", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "quorum", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct Quorum", + "components": [ + { + "name": "strategies", + "type": "tuple[]", + "internalType": "struct StrategyParams[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registerOperatorWithSignature", + "inputs": [ + { + "name": "_operatorSignature", + "type": "tuple", + "internalType": "struct ISignatureUtils.SignatureWithSaltAndExpiry", + "components": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "salt", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "_signingKey", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "revokeOperator", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateMinimumWeight", + "inputs": [ + { + "name": "_newMinimumWeight", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_operators", + "type": "address[]", + "internalType": "address[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateOperatorSigningKey", + "inputs": [ + { + "name": "_newSigningKey", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateOperators", + "inputs": [ + { + "name": "_operators", + "type": "address[]", + "internalType": "address[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateOperatorsForQuorum", + "inputs": [ + { + "name": "operatorsPerQuorum", + "type": "address[][]", + "internalType": "address[][]" + }, + { + "name": "", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateQuorumConfig", + "inputs": [ + { + "name": "_quorum", + "type": "tuple", + "internalType": "struct Quorum", + "components": [ + { + "name": "strategies", + "type": "tuple[]", + "internalType": "struct StrategyParams[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ] + }, + { + "name": "_operators", + "type": "address[]", + "internalType": "address[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateStakeThreshold", + "inputs": [ + { + "name": "_thresholdWeight", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "MinimumWeightUpdated", + "inputs": [ + { + "name": "_old", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "_new", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorDeregistered", + "inputs": [ + { + "name": "_operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_avs", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorEjected", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorPermitted", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorRegistered", + "inputs": [ + { + "name": "_operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_avs", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorRevoked", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorWeightUpdated", + "inputs": [ + { + "name": "_operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "oldWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "newWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "QuorumUpdated", + "inputs": [ + { + "name": "_old", + "type": "tuple", + "indexed": false, + "internalType": "struct Quorum", + "components": [ + { + "name": "strategies", + "type": "tuple[]", + "internalType": "struct StrategyParams[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ] + }, + { + "name": "_new", + "type": "tuple", + "indexed": false, + "internalType": "struct Quorum", + "components": [ + { + "name": "strategies", + "type": "tuple[]", + "internalType": "struct StrategyParams[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "SigningKeyUpdate", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "updateBlock", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "newSigningKey", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "oldSigningKey", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ThresholdWeightUpdated", + "inputs": [ + { + "name": "_thresholdWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "TotalWeightUpdated", + "inputs": [ + { + "name": "oldTotalWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "newTotalWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "UpdateMinimumWeight", + "inputs": [ + { + "name": "oldMinimumWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "newMinimumWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "InsufficientSignedStake", + "inputs": [] + }, + { + "type": "error", + "name": "InsufficientWeight", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidLength", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidQuorum", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidReferenceBlock", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidSignature", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidSignedWeight", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidThreshold", + "inputs": [] + }, + { + "type": "error", + "name": "LengthMismatch", + "inputs": [] + }, + { + "type": "error", + "name": "MustUpdateAllOperators", + "inputs": [] + }, + { + "type": "error", + "name": "NotSorted", + "inputs": [] + }, + { + "type": "error", + "name": "OperatorAlreadyAllowlisted", + "inputs": [] + }, + { + "type": "error", + "name": "OperatorAlreadyRegistered", + "inputs": [] + }, + { + "type": "error", + "name": "OperatorNotAllowlisted", + "inputs": [] + }, + { + "type": "error", + "name": "OperatorNotRegistered", + "inputs": [] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ECDSAStakeRegistryEqualWeight { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60a06040523480156200001157600080fd5b5060405162002bf238038062002bf2833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b608051612b5e6200009460003960006107e20152612b5e6000f3fe608060405234801561001057600080fd5b50600436106101ce5760003560e01c80636d5be92611610104578063ab118995116100a2578063e5d98f9411610071578063e5d98f94146103dd578063ec7fbb31146103f0578063f2fde38b1461041c578063fad8b32a1461042f57600080fd5b8063ab1189951461039c578063b933fa74146103af578063cdcd3581146103b7578063dec5d1f6146103ca57600080fd5b8063857dc190116100de578063857dc1901461035d5780638da5cb5b14610365578063955f2d901461037657806398ec1ac91461038957600080fd5b80636d5be9261461030f578063715018a614610342578063743c31f41461034a57600080fd5b80633d5611f61161017157806358c1eb171161014b57806358c1eb17146102ab5780635e1042e8146102be5780635ef53329146102e9578063696255be146102fc57600080fd5b80633d5611f61461027d57806340bf2fb7146102905780635140a5481461029857600080fd5b80631703a018116101ad5780631703a0181461023a5780631e4cd85e1461024f578063314f3a49146102625780633b242e4a1461026a57600080fd5b8062cf2ab5146101d35780630dba3394146101e85780631626ba7e1461020e575b600080fd5b6101e66101e136600461204b565b610442565b005b6101fb6101f6366004612099565b61044e565b6040519081526020015b60405180910390f35b61022161021c36600461212e565b61046a565b6040516001600160e01b03199091168152602001610205565b6102426104a8565b60405161020591906121d7565b6101fb61025d366004612099565b61053b565b6101fb610551565b6101fb6102783660046121ea565b610562565b6101e661028b366004612207565b610583565b6067546101fb565b6101e66102a63660046122b4565b610592565b6101e66102b93660046121ea565b6105b5565b6102d16102cc36600461237d565b6105c6565b6040516001600160a01b039091168152602001610205565b6101e66102f73660046123a9565b6105ef565b6101e661030a3660046123c2565b610600565b61033261031d3660046121ea565b60976020526000908152604090205460ff1681565b6040519015158152602001610205565b6101e661061a565b6101e66103583660046121ea565b61062e565b6101e6610668565b6033546001600160a01b03166102d1565b6101fb6103843660046123fe565b610671565b6101fb6103973660046121ea565b61069c565b6101e66103aa36600461250d565b610903565b6101fb610a1f565b6102d16103c53660046121ea565b610a2b565b6101e66103d8366004612565565b610a4c565b6101e66103eb3660046121ea565b610a5d565b6103326103fe3660046121ea565b6001600160a01b03166000908152606e602052604090205460ff1690565b6101e661042a3660046121ea565b610a6e565b6101e661043d3660046121ea565b610ae4565b61044b81610af5565b50565b6000610464606b63ffffffff80851690610b4c16565b92915050565b6000806000808480602001905181019061048491906126b5565b92509250925061049686848484610c5b565b50630b135d3f60e11b95945050505050565b6040805160208101909152606081526040805160668054602081810284018501855283018181529293919284929091849160009085015b8282101561052e57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b0316818301528252600190920191016104df565b5050505081525050905090565b6000610464606c63ffffffff80851690610b4c16565b600061055d606b610d1a565b905090565b6001600160a01b0381166000908152606d6020526040812061046490610d1a565b61058e338383610d76565b5050565b61058e826000815181106105a8576105a8612789565b6020026020010151610dc4565b6105bd610de7565b61044b81610e41565b6001600160a01b0382166000908152606a602052604081206105e89083610b4c565b9392505050565b6105f7610de7565b61044b81610ec7565b610608610de7565b61061182610f0a565b61058e81610af5565b610622610de7565b61062c6000610f50565b565b336000908152606e602052604090205460ff1661065e576040516325ec6c1f60e01b815260040160405180910390fd5b61044b3382610fa2565b61062c33611055565b6001600160a01b0382166000908152606d602052604081206105e89063ffffffff80851690610b4c16565b6000806066600001805480602002602001604051908101604052809291908181526020016000905b8282101561071357600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b0316818301528252600190920191016106c4565b50505050905060008082516001600160401b0381111561073557610735611f0f565b60405190808252806020026020018201604052801561075e578160200160208202803683370190505b50905060005b83518110156107c75783818151811061077f5761077f612789565b60200260200101516000015182828151811061079d5761079d612789565b6001600160a01b0390921660209283029190910190910152806107bf816127b5565b915050610764565b50604051639004134760e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063900413479061081990899086906004016127d0565b600060405180830381865afa158015610836573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261085e919081019061282c565b905060005b84518110156108d55784818151811061087e5761087e612789565b6020026020010151602001516001600160601b03168282815181106108a5576108a5612789565b60200260200101516108b791906128bc565b6108c190856128db565b9350806108cd816127b5565b915050610863565b506108e2612710846128f3565b925060675483106108f7575090949350505050565b50600095945050505050565b600054610100900460ff16158080156109235750600054600160ff909116105b8061093d5750303b15801561093d575060005460ff166001145b6109a55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156109c8576000805461ff0019166101001790555b6109d3848484611178565b8015610a19576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b600061055d606c610d1a565b6001600160a01b0381166000908152606a6020526040812061046490610d1a565b610a54610de7565b610611826111d4565b610a65610de7565b61044b81611333565b610a76610de7565b6001600160a01b038116610adb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161099c565b61044b81610f50565b610aec610de7565b61044b81611373565b6000805b8251811015610b4257610b24838281518110610b1757610b17612789565b602002602001015161141c565b610b2e9083612915565b915080610b3a816127b5565b915050610af9565b50610a19816114f9565b6000438210610b9d5760405162461bcd60e51b815260206004820181905260248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e6564604482015260640161099c565b825460005b81811015610c02576000610bb68284611565565b905084866000018281548110610bce57610bce612789565b60009182526020909120015463ffffffff161115610bee57809250610bfc565b610bf98160016128db565b91505b50610ba2565b8115610c465784610c14600184612956565b81548110610c2457610c24612789565b60009182526020909120015464010000000090046001600160e01b0316610c49565b60005b6001600160e01b031695945050505050565b600083519050600080600080610c72858851611580565b60005b85811015610d0457888181518110610c8f57610c8f612789565b60200260200101519450610ca385886115c1565b9250610caf8486611614565b610cd3838b8a8481518110610cc657610cc6612789565b6020026020010151611646565b8493506000610ce28689611677565b9050610cee81846128db565b9250508080610cfc906127b5565b915050610c75565b50610d0f81876116ca565b505050505050505050565b80546000908015610d635782610d31600183612956565b81548110610d4157610d41612789565b60009182526020909120015464010000000090046001600160e01b0316610d66565b60005b6001600160e01b03169392505050565b6001600160a01b03831660009081526097602052604090205460ff161515600114610db45760405163380fa21360e11b815260040160405180910390fd5b610dbf838383611726565b505050565b6065548151146104425760405163169efb5b60e11b815260040160405180910390fd5b6033546001600160a01b0316331461062c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161099c565b6001600160a01b03811660009081526097602052604090205460ff1615610e7b576040516378f5ee6160e11b815260040160405180910390fd5b6001600160a01b038116600081815260976020526040808220805460ff19166001179055517fe9bc8eb00c0766d789ecba000f585406075b053bf1842aa19d4af52c52bc69209190a250565b610ed2606c8261185e565b50506040518181527f9324f7e5a7c0288808a634ccde44b8e979676474b22e29ee9dd569b55e791a4b9060200160405180910390a150565b606780549082905560408051828152602081018490527f713ca53b88d6eb63f5b1854cb8cbdd736ec51eda225e46791aa9298b0160648f91015b60405180910390a15050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000908152606a60205260408120610fc390610d1a565b9050806001600160a01b0316826001600160a01b03161415610fe457505050565b6001600160a01b038381166000908152606a6020526040902061100891841661185e565b50506040516001600160a01b0382811682528084169143918616907fd061168252f441733658f09e4d8f5b2d998ed4ef24a2bbfd6ceca52ea13150029060200160405180910390a4505050565b6001600160a01b0381166000908152606e602052604090205460ff1661108e576040516325ec6c1f60e01b815260040160405180910390fd5b6065805490600061109e8361296d565b90915550506001600160a01b0381166000908152606e60205260408120805460ff191690556110cc8261141c565b90506110d7816114f9565b50506068546040516351b27a6d60e11b81526001600160a01b0384811660048301529091169063a364f4da90602401600060405180830381600087803b15801561112057600080fd5b505af1158015611134573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090851691507f31e0adfec71bccee37b6e83a90c2fedb17d8f1693fee863c4771e7bfe2aed58090600090a35050565b600054610100900460ff1661119f5760405162461bcd60e51b815260040161099c90612984565b606880546001600160a01b0319166001600160a01b0385161790556111c382610ec7565b6111cc816111d4565b610dbf611989565b6111dd816119b8565b6111fa5760405163d173577960e01b815260040160405180910390fd5b60408051606680546020818102840185018552830181815260009484928491879085015b8282101561126d57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b03168183015282526001909201910161121e565b5050509152509091506066905060006112868282611ee1565b505060005b825151811015611301578251805160669190839081106112ad576112ad612789565b6020908102919091018101518254600181018455600093845292829020815191909201516001600160601b0316600160a01b026001600160a01b0390911617910155806112f9816127b5565b91505061128b565b507f23aad4e61744ece164130aa415c1616e80136b0f0770e56589438b90b269265e8183604051610f449291906129cf565b61133c81611055565b6040516001600160a01b038216907f44cc80141b47717cc60edd3ad54b38b00efe9fe23b2898f15bcf884b0f3ad49590600090a250565b6001600160a01b03811660009081526097602052604090205460ff166113ac5760405163380fa21360e11b815260040160405180910390fd5b6001600160a01b038116600081815260976020526040808220805460ff19169055517fa5f3b7626fd86ff989f1d22cf3d41d74591ea6eb99241079400b0c332a9a8f119190a26001600160a01b0381166000908152606e602052604090205460ff161561044b5761044b81611333565b6001600160a01b0381166000908152606e602052604081205481908190819060ff161561147b576001600160a01b0385166000908152606d6020526040902061146690600161185e565b5092506114748360016129fd565b90506114ad565b6001600160a01b0385166000908152606d6020526040812061149c9161185e565b5092506114aa8360006129fd565b90505b60408051848152602081018490526001600160a01b038716917f88770dc862e47a7ed586907857eb1b75e4c5ffc8b707c7ee10eb74d6885fe594910160405180910390a2949350505050565b600080611506606b610d1a565b915060006115148484612915565b9150819050611524606b8261185e565b505060408051848152602081018490527f86dcf86b12dfeedea74ae9300dbdaa193bcce5809369c8177ea2f4eaaa65729b910160405180910390a150915091565b600061157460028484186128f3565b6105e8908484166128db565b8082146115a3576040516001621398b960e31b0319815260040160405180910390fd5b8161058e5760405163251f56a160e21b815260040160405180910390fd5b6000438263ffffffff16106115e95760405163e64f180f60e01b815260040160405180910390fd5b6001600160a01b0383166000908152606a602052604090206105e89063ffffffff80851690610b4c16565b806001600160a01b0316826001600160a01b03161061058e5760405163ba50f91160e01b815260040160405180910390fd5b61165a6001600160a01b0384168383611a88565b610dbf57604051638baa579f60e01b815260040160405180910390fd5b6000438263ffffffff161061169f5760405163e64f180f60e01b815260040160405180910390fd5b6001600160a01b0383166000908152606d602052604090206105e89063ffffffff80851690610b4c16565b60006116d582611bd4565b9050808311156116f857604051634b05a0f760e11b815260040160405180910390fd5b600061170383611c10565b905083811115610a195760405163e121632f60e01b815260040160405180910390fd5b6001600160a01b0383166000908152606e602052604090205460ff1615611760576040516342ee68b560e01b815260040160405180910390fd5b60658054906000611770836127b5565b90915550506001600160a01b0383166000908152606e60205260408120805460ff191660011790556117a18461141c565b90506117ac816114f9565b50506117b88483610fa2565b606854604051639926ee7d60e01b81526001600160a01b0390911690639926ee7d906117ea9087908790600401612a68565b600060405180830381600087803b15801561180457600080fd5b505af1158015611818573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090871691507fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c190600090a350505050565b815460009081908161186f86610d1a565b90506000821180156118ad57504386611889600185612956565b8154811061189957611899612789565b60009182526020909120015463ffffffff16145b1561190d576118bb85611c4c565b866118c7600185612956565b815481106118d7576118d7612789565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b0316021790555061197b565b85600001604051806040016040528061192543611cb9565b63ffffffff16815260200161193988611c4c565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b9250839150505b9250929050565b600054610100900460ff166119b05760405162461bcd60e51b815260040161099c90612984565b61062c611d1e565b8051600090818080805b8451811015611a66578481815181106119dd576119dd612789565b6020026020010151600001519250826001600160a01b0316846001600160a01b031610611a1d5760405163ba50f91160e01b815260040160405180910390fd5b829350848181518110611a3257611a32612789565b6020026020010151602001516001600160601b031682611a5291906128db565b915080611a5e816127b5565b9150506119c2565b506127108114611a7c5750600095945050505050565b50600195945050505050565b6000806000611a978585611d4e565b90925090506000816004811115611ab057611ab0612ab3565b148015611ace5750856001600160a01b0316826001600160a01b0316145b15611ade576001925050506105e8565b600080876001600160a01b0316631626ba7e60e01b8888604051602401611b06929190612ac9565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611b449190612ae2565b600060405180830381855afa9150503d8060008114611b7f576040519150601f19603f3d011682016040523d82523d6000602084013e611b84565b606091505b5091509150818015611b97575080516020145b8015611bc857508051630b135d3f60e11b90611bbc9083016020908101908401612afe565b6001600160e01b031916145b98975050505050505050565b6000438263ffffffff1610611bfc5760405163e64f180f60e01b815260040160405180910390fd5b610464606b63ffffffff80851690610b4c16565b6000438263ffffffff1610611c385760405163e64f180f60e01b815260040160405180910390fd5b610464606c63ffffffff80851690610b4c16565b60006001600160e01b03821115611cb55760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b606482015260840161099c565b5090565b600063ffffffff821115611cb55760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840161099c565b600054610100900460ff16611d455760405162461bcd60e51b815260040161099c90612984565b61062c33610f50565b600080825160411415611d855760208301516040840151606085015160001a611d7987828585611dbb565b94509450505050611982565b825160401415611daf5760208301516040840151611da4868383611ea8565b935093505050611982565b50600090506002611982565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611df25750600090506003611e9f565b8460ff16601b14158015611e0a57508460ff16601c14155b15611e1b5750600090506004611e9f565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611e6f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611e9857600060019250925050611e9f565b9150600090505b94509492505050565b6000806001600160ff1b03831681611ec560ff86901c601b6128db565b9050611ed387828885611dbb565b935093505050935093915050565b508054600082559060005260206000209081019061044b91905b80821115611cb55760008155600101611efb565b634e487b7160e01b600052604160045260246000fd5b604051602081016001600160401b0381118282101715611f4757611f47611f0f565b60405290565b604080519081016001600160401b0381118282101715611f4757611f47611f0f565b604051601f8201601f191681016001600160401b0381118282101715611f9757611f97611f0f565b604052919050565b60006001600160401b03821115611fb857611fb8611f0f565b5060051b60200190565b6001600160a01b038116811461044b57600080fd5b600082601f830112611fe857600080fd5b81356020611ffd611ff883611f9f565b611f6f565b82815260059290921b8401810191818101908684111561201c57600080fd5b8286015b8481101561204057803561203381611fc2565b8352918301918301612020565b509695505050505050565b60006020828403121561205d57600080fd5b81356001600160401b0381111561207357600080fd5b61207f84828501611fd7565b949350505050565b63ffffffff8116811461044b57600080fd5b6000602082840312156120ab57600080fd5b81356105e881612087565b60006001600160401b038211156120cf576120cf611f0f565b50601f01601f191660200190565b600082601f8301126120ee57600080fd5b81356120fc611ff8826120b6565b81815284602083860101111561211157600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561214157600080fd5b8235915060208301356001600160401b0381111561215e57600080fd5b61216a858286016120dd565b9150509250929050565b8051602080845281518482018190526000926040919083019082870190855b818110156121ca57835180516001600160a01b031684528601516001600160601b0316868401529285019291840191600101612193565b5090979650505050505050565b6020815260006105e86020830184612174565b6000602082840312156121fc57600080fd5b81356105e881611fc2565b6000806040838503121561221a57600080fd5b82356001600160401b038082111561223157600080fd5b908401906060828703121561224557600080fd5b60405160608101818110838211171561226057612260611f0f565b60405282358281111561227257600080fd5b61227e888286016120dd565b825250602083013560208201526040830135604082015280945050505060208301356122a981611fc2565b809150509250929050565b600080604083850312156122c757600080fd5b82356001600160401b03808211156122de57600080fd5b818501915085601f8301126122f257600080fd5b81356020612302611ff883611f9f565b82815260059290921b8401810191818101908984111561232157600080fd5b8286015b848110156123595780358681111561233d5760008081fd5b61234b8c86838b0101611fd7565b845250918301918301612325565b509650508601359250508082111561237057600080fd5b5061216a858286016120dd565b6000806040838503121561239057600080fd5b823561239b81611fc2565b946020939093013593505050565b6000602082840312156123bb57600080fd5b5035919050565b600080604083850312156123d557600080fd5b8235915060208301356001600160401b038111156123f257600080fd5b61216a85828601611fd7565b6000806040838503121561241157600080fd5b823561241c81611fc2565b915060208301356122a981612087565b6000602080838503121561243f57600080fd5b612447611f25565b915082356001600160401b0381111561245f57600080fd5b8301601f8101851361247057600080fd5b803561247e611ff882611f9f565b81815260069190911b8201830190838101908783111561249d57600080fd5b928401925b8284101561250057604084890312156124bb5760008081fd5b6124c3611f4d565b84356124ce81611fc2565b8152848601356001600160601b03811681146124ea5760008081fd5b81870152825260409390930192908401906124a2565b8552509295945050505050565b60008060006060848603121561252257600080fd5b833561252d81611fc2565b92506020840135915060408401356001600160401b0381111561254f57600080fd5b61255b8682870161242c565b9150509250925092565b6000806040838503121561257857600080fd5b82356001600160401b038082111561258f57600080fd5b61259b8683870161242c565b935060208501359150808211156125b157600080fd5b5061216a85828601611fd7565b60005b838110156125d95781810151838201526020016125c1565b83811115610a195750506000910152565b600082601f8301126125fb57600080fd5b8151602061260b611ff883611f9f565b82815260059290921b8401810191818101908684111561262a57600080fd5b8286015b848110156120405780516001600160401b0381111561264d5760008081fd5b8701603f8101891361265f5760008081fd5b848101516040612671611ff8836120b6565b8281528b828486010111156126865760008081fd5b612695838983018487016125be565b865250505091830191830161262e565b80516126b081612087565b919050565b6000806000606084860312156126ca57600080fd5b83516001600160401b03808211156126e157600080fd5b818601915086601f8301126126f557600080fd5b81516020612705611ff883611f9f565b82815260059290921b8401810191818101908a84111561272457600080fd5b948201945b8386101561274b57855161273c81611fc2565b82529482019490820190612729565b9189015191975090935050508082111561276457600080fd5b50612771868287016125ea565b925050612780604085016126a5565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156127c9576127c961279f565b5060010190565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b8181101561281e578551851683529483019491830191600101612800565b509098975050505050505050565b6000602080838503121561283f57600080fd5b82516001600160401b0381111561285557600080fd5b8301601f8101851361286657600080fd5b8051612874611ff882611f9f565b81815260059190911b8201830190838101908783111561289357600080fd5b928401925b828410156128b157835182529284019290840190612898565b979650505050505050565b60008160001904831182151516156128d6576128d661279f565b500290565b600082198211156128ee576128ee61279f565b500190565b60008261291057634e487b7160e01b600052601260045260246000fd5b500490565b600080821280156001600160ff1b03849003851316156129375761293761279f565b600160ff1b83900384128116156129505761295061279f565b50500190565b6000828210156129685761296861279f565b500390565b60008161297c5761297c61279f565b506000190190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6040815260006129e26040830185612174565b82810360208401526129f48185612174565b95945050505050565b60008083128015600160ff1b850184121615612a1b57612a1b61279f565b6001600160ff1b0384018313811615612a3657612a3661279f565b50500390565b60008151808452612a548160208601602086016125be565b601f01601f19169290920160200192915050565b60018060a01b0383168152604060208201526000825160606040840152612a9260a0840182612a3c565b90506020840151606084015260408401516080840152809150509392505050565b634e487b7160e01b600052602160045260246000fd5b82815260406020820152600061207f6040830184612a3c565b60008251612af48184602087016125be565b9190910192915050565b600060208284031215612b1057600080fd5b81516001600160e01b0319811681146105e857600080fdfea2646970667358221220b95c53e7bdb08bad2c036a6f3b2e7420831a22990f595c81699a978669137b7f64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0+\xF28\x03\x80b\0+\xF2\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0FV[`\x01`\x01`\xA0\x1B\x03\x16`\x80Rb\0\0xV[`\0` \x82\x84\x03\x12\x15b\0\0YW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0qW`\0\x80\xFD[\x93\x92PPPV[`\x80Qa+^b\0\0\x94`\09`\0a\x07\xE2\x01Ra+^`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\xCEW`\x005`\xE0\x1C\x80cm[\xE9&\x11a\x01\x04W\x80c\xAB\x11\x89\x95\x11a\0\xA2W\x80c\xE5\xD9\x8F\x94\x11a\0qW\x80c\xE5\xD9\x8F\x94\x14a\x03\xDDW\x80c\xEC\x7F\xBB1\x14a\x03\xF0W\x80c\xF2\xFD\xE3\x8B\x14a\x04\x1CW\x80c\xFA\xD8\xB3*\x14a\x04/W`\0\x80\xFD[\x80c\xAB\x11\x89\x95\x14a\x03\x9CW\x80c\xB93\xFAt\x14a\x03\xAFW\x80c\xCD\xCD5\x81\x14a\x03\xB7W\x80c\xDE\xC5\xD1\xF6\x14a\x03\xCAW`\0\x80\xFD[\x80c\x85}\xC1\x90\x11a\0\xDEW\x80c\x85}\xC1\x90\x14a\x03]W\x80c\x8D\xA5\xCB[\x14a\x03eW\x80c\x95_-\x90\x14a\x03vW\x80c\x98\xEC\x1A\xC9\x14a\x03\x89W`\0\x80\xFD[\x80cm[\xE9&\x14a\x03\x0FW\x80cqP\x18\xA6\x14a\x03BW\x80ct<1\xF4\x14a\x03JW`\0\x80\xFD[\x80c=V\x11\xF6\x11a\x01qW\x80cX\xC1\xEB\x17\x11a\x01KW\x80cX\xC1\xEB\x17\x14a\x02\xABW\x80c^\x10B\xE8\x14a\x02\xBEW\x80c^\xF53)\x14a\x02\xE9W\x80cibU\xBE\x14a\x02\xFCW`\0\x80\xFD[\x80c=V\x11\xF6\x14a\x02}W\x80c@\xBF/\xB7\x14a\x02\x90W\x80cQ@\xA5H\x14a\x02\x98W`\0\x80\xFD[\x80c\x17\x03\xA0\x18\x11a\x01\xADW\x80c\x17\x03\xA0\x18\x14a\x02:W\x80c\x1EL\xD8^\x14a\x02OW\x80c1O:I\x14a\x02bW\x80c;$.J\x14a\x02jW`\0\x80\xFD[\x80b\xCF*\xB5\x14a\x01\xD3W\x80c\r\xBA3\x94\x14a\x01\xE8W\x80c\x16&\xBA~\x14a\x02\x0EW[`\0\x80\xFD[a\x01\xE6a\x01\xE16`\x04a KV[a\x04BV[\0[a\x01\xFBa\x01\xF66`\x04a \x99V[a\x04NV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02!a\x02\x1C6`\x04a!.V[a\x04jV[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x02\x05V[a\x02Ba\x04\xA8V[`@Qa\x02\x05\x91\x90a!\xD7V[a\x01\xFBa\x02]6`\x04a \x99V[a\x05;V[a\x01\xFBa\x05QV[a\x01\xFBa\x02x6`\x04a!\xEAV[a\x05bV[a\x01\xE6a\x02\x8B6`\x04a\"\x07V[a\x05\x83V[`gTa\x01\xFBV[a\x01\xE6a\x02\xA66`\x04a\"\xB4V[a\x05\x92V[a\x01\xE6a\x02\xB96`\x04a!\xEAV[a\x05\xB5V[a\x02\xD1a\x02\xCC6`\x04a#}V[a\x05\xC6V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x05V[a\x01\xE6a\x02\xF76`\x04a#\xA9V[a\x05\xEFV[a\x01\xE6a\x03\n6`\x04a#\xC2V[a\x06\0V[a\x032a\x03\x1D6`\x04a!\xEAV[`\x97` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x02\x05V[a\x01\xE6a\x06\x1AV[a\x01\xE6a\x03X6`\x04a!\xEAV[a\x06.V[a\x01\xE6a\x06hV[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xD1V[a\x01\xFBa\x03\x846`\x04a#\xFEV[a\x06qV[a\x01\xFBa\x03\x976`\x04a!\xEAV[a\x06\x9CV[a\x01\xE6a\x03\xAA6`\x04a%\rV[a\t\x03V[a\x01\xFBa\n\x1FV[a\x02\xD1a\x03\xC56`\x04a!\xEAV[a\n+V[a\x01\xE6a\x03\xD86`\x04a%eV[a\nLV[a\x01\xE6a\x03\xEB6`\x04a!\xEAV[a\n]V[a\x032a\x03\xFE6`\x04a!\xEAV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`n` R`@\x90 T`\xFF\x16\x90V[a\x01\xE6a\x04*6`\x04a!\xEAV[a\nnV[a\x01\xE6a\x04=6`\x04a!\xEAV[a\n\xE4V[a\x04K\x81a\n\xF5V[PV[`\0a\x04d`kc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\x0BL\x16V[\x92\x91PPV[`\0\x80`\0\x80\x84\x80` \x01\x90Q\x81\x01\x90a\x04\x84\x91\x90a&\xB5V[\x92P\x92P\x92Pa\x04\x96\x86\x84\x84\x84a\x0C[V[Pc\x0B\x13]?`\xE1\x1B\x95\x94PPPPPV[`@\x80Q` \x81\x01\x90\x91R``\x81R`@\x80Q`f\x80T` \x81\x81\x02\x84\x01\x85\x01\x85R\x83\x01\x81\x81R\x92\x93\x91\x92\x84\x92\x90\x91\x84\x91`\0\x90\x85\x01[\x82\x82\x10\x15a\x05.W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x90\x91R\x90\x84\x01T`\x01`\x01`\xA0\x1B\x03\x81\x16\x82R`\x01`\xA0\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x81\x83\x01R\x82R`\x01\x90\x92\x01\x91\x01a\x04\xDFV[PPPP\x81RPP\x90P\x90V[`\0a\x04d`lc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\x0BL\x16V[`\0a\x05]`ka\r\x1AV[\x90P\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`m` R`@\x81 a\x04d\x90a\r\x1AV[a\x05\x8E3\x83\x83a\rvV[PPV[a\x05\x8E\x82`\0\x81Q\x81\x10a\x05\xA8Wa\x05\xA8a'\x89V[` \x02` \x01\x01Qa\r\xC4V[a\x05\xBDa\r\xE7V[a\x04K\x81a\x0EAV[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`j` R`@\x81 a\x05\xE8\x90\x83a\x0BLV[\x93\x92PPPV[a\x05\xF7a\r\xE7V[a\x04K\x81a\x0E\xC7V[a\x06\x08a\r\xE7V[a\x06\x11\x82a\x0F\nV[a\x05\x8E\x81a\n\xF5V[a\x06\"a\r\xE7V[a\x06,`\0a\x0FPV[V[3`\0\x90\x81R`n` R`@\x90 T`\xFF\x16a\x06^W`@Qc%\xECl\x1F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x04K3\x82a\x0F\xA2V[a\x06,3a\x10UV[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`m` R`@\x81 a\x05\xE8\x90c\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\x0BL\x16V[`\0\x80`f`\0\x01\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x07\x13W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x90\x91R\x90\x84\x01T`\x01`\x01`\xA0\x1B\x03\x81\x16\x82R`\x01`\xA0\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x81\x83\x01R\x82R`\x01\x90\x92\x01\x91\x01a\x06\xC4V[PPPP\x90P`\0\x80\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x075Wa\x075a\x1F\x0FV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07^W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x07\xC7W\x83\x81\x81Q\x81\x10a\x07\x7FWa\x07\x7Fa'\x89V[` \x02` \x01\x01Q`\0\x01Q\x82\x82\x81Q\x81\x10a\x07\x9DWa\x07\x9Da'\x89V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x07\xBF\x81a'\xB5V[\x91PPa\x07dV[P`@Qc\x90\x04\x13G`\xE0\x1B\x81R`\0\x90`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x90\x04\x13G\x90a\x08\x19\x90\x89\x90\x86\x90`\x04\x01a'\xD0V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x086W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x08^\x91\x90\x81\x01\x90a(,V[\x90P`\0[\x84Q\x81\x10\x15a\x08\xD5W\x84\x81\x81Q\x81\x10a\x08~Wa\x08~a'\x89V[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x08\xA5Wa\x08\xA5a'\x89V[` \x02` \x01\x01Qa\x08\xB7\x91\x90a(\xBCV[a\x08\xC1\x90\x85a(\xDBV[\x93P\x80a\x08\xCD\x81a'\xB5V[\x91PPa\x08cV[Pa\x08\xE2a'\x10\x84a(\xF3V[\x92P`gT\x83\x10a\x08\xF7WP\x90\x94\x93PPPPV[P`\0\x95\x94PPPPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\t#WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\t=WP0;\x15\x80\x15a\t=WP`\0T`\xFF\x16`\x01\x14[a\t\xA5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\t\xC8W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\t\xD3\x84\x84\x84a\x11xV[\x80\x15a\n\x19W`\0\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPV[`\0a\x05]`la\r\x1AV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`j` R`@\x81 a\x04d\x90a\r\x1AV[a\nTa\r\xE7V[a\x06\x11\x82a\x11\xD4V[a\nea\r\xE7V[a\x04K\x81a\x133V[a\nva\r\xE7V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\n\xDBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\t\x9CV[a\x04K\x81a\x0FPV[a\n\xECa\r\xE7V[a\x04K\x81a\x13sV[`\0\x80[\x82Q\x81\x10\x15a\x0BBWa\x0B$\x83\x82\x81Q\x81\x10a\x0B\x17Wa\x0B\x17a'\x89V[` \x02` \x01\x01Qa\x14\x1CV[a\x0B.\x90\x83a)\x15V[\x91P\x80a\x0B:\x81a'\xB5V[\x91PPa\n\xF9V[Pa\n\x19\x81a\x14\xF9V[`\0C\x82\x10a\x0B\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FCheckpoints: block not yet mined`D\x82\x01R`d\x01a\t\x9CV[\x82T`\0[\x81\x81\x10\x15a\x0C\x02W`\0a\x0B\xB6\x82\x84a\x15eV[\x90P\x84\x86`\0\x01\x82\x81T\x81\x10a\x0B\xCEWa\x0B\xCEa'\x89V[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x0B\xEEW\x80\x92Pa\x0B\xFCV[a\x0B\xF9\x81`\x01a(\xDBV[\x91P[Pa\x0B\xA2V[\x81\x15a\x0CFW\x84a\x0C\x14`\x01\x84a)VV[\x81T\x81\x10a\x0C$Wa\x0C$a'\x89V[`\0\x91\x82R` \x90\x91 \x01Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\x0CIV[`\0[`\x01`\x01`\xE0\x1B\x03\x16\x95\x94PPPPPV[`\0\x83Q\x90P`\0\x80`\0\x80a\x0Cr\x85\x88Qa\x15\x80V[`\0[\x85\x81\x10\x15a\r\x04W\x88\x81\x81Q\x81\x10a\x0C\x8FWa\x0C\x8Fa'\x89V[` \x02` \x01\x01Q\x94Pa\x0C\xA3\x85\x88a\x15\xC1V[\x92Pa\x0C\xAF\x84\x86a\x16\x14V[a\x0C\xD3\x83\x8B\x8A\x84\x81Q\x81\x10a\x0C\xC6Wa\x0C\xC6a'\x89V[` \x02` \x01\x01Qa\x16FV[\x84\x93P`\0a\x0C\xE2\x86\x89a\x16wV[\x90Pa\x0C\xEE\x81\x84a(\xDBV[\x92PP\x80\x80a\x0C\xFC\x90a'\xB5V[\x91PPa\x0CuV[Pa\r\x0F\x81\x87a\x16\xCAV[PPPPPPPPPV[\x80T`\0\x90\x80\x15a\rcW\x82a\r1`\x01\x83a)VV[\x81T\x81\x10a\rAWa\rAa'\x89V[`\0\x91\x82R` \x90\x91 \x01Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\rfV[`\0[`\x01`\x01`\xE0\x1B\x03\x16\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x97` R`@\x90 T`\xFF\x16\x15\x15`\x01\x14a\r\xB4W`@Qc8\x0F\xA2\x13`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\r\xBF\x83\x83\x83a\x17&V[PPPV[`eT\x81Q\x14a\x04BW`@Qc\x16\x9E\xFB[`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x06,W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\x97` R`@\x90 T`\xFF\x16\x15a\x0E{W`@Qcx\xF5\xEEa`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x81\x81R`\x97` R`@\x80\x82 \x80T`\xFF\x19\x16`\x01\x17\x90UQ\x7F\xE9\xBC\x8E\xB0\x0C\x07f\xD7\x89\xEC\xBA\0\x0FXT\x06\x07[\x05;\xF1\x84*\xA1\x9DJ\xF5,R\xBCi \x91\x90\xA2PV[a\x0E\xD2`l\x82a\x18^V[PP`@Q\x81\x81R\x7F\x93$\xF7\xE5\xA7\xC0(\x88\x08\xA64\xCC\xDED\xB8\xE9ygdt\xB2.)\xEE\x9D\xD5i\xB5^y\x1AK\x90` \x01`@Q\x80\x91\x03\x90\xA1PV[`g\x80T\x90\x82\x90U`@\x80Q\x82\x81R` \x81\x01\x84\x90R\x7Fq<\xA5;\x88\xD6\xEBc\xF5\xB1\x85L\xB8\xCB\xDDsn\xC5\x1E\xDA\"^Fy\x1A\xA9)\x8B\x01`d\x8F\x91\x01[`@Q\x80\x91\x03\x90\xA1PPV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`j` R`@\x81 a\x0F\xC3\x90a\r\x1AV[\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x0F\xE4WPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x90\x81R`j` R`@\x90 a\x10\x08\x91\x84\x16a\x18^V[PP`@Q`\x01`\x01`\xA0\x1B\x03\x82\x81\x16\x82R\x80\x84\x16\x91C\x91\x86\x16\x90\x7F\xD0a\x16\x82R\xF4As6X\xF0\x9EM\x8F[-\x99\x8E\xD4\xEF$\xA2\xBB\xFDl\xEC\xA5.\xA11P\x02\x90` \x01`@Q\x80\x91\x03\x90\xA4PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`n` R`@\x90 T`\xFF\x16a\x10\x8EW`@Qc%\xECl\x1F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`e\x80T\x90`\0a\x10\x9E\x83a)mV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`n` R`@\x81 \x80T`\xFF\x19\x16\x90Ua\x10\xCC\x82a\x14\x1CV[\x90Pa\x10\xD7\x81a\x14\xF9V[PP`hT`@QcQ\xB2zm`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R\x90\x91\x16\x90c\xA3d\xF4\xDA\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x11 W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x114W=`\0\x80>=`\0\xFD[PP`hT`@Q`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x93P\x90\x85\x16\x91P\x7F1\xE0\xAD\xFE\xC7\x1B\xCC\xEE7\xB6\xE8:\x90\xC2\xFE\xDB\x17\xD8\xF1i?\xEE\x86=`\0\xFD[PP`hT`@Q`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x93P\x90\x87\x16\x91P\x7F\xA4S\xDBa*\xF5\x9EU!\xD6\xAB\x92\x84\xDC>-\x06\xAF(n\xB1\xB1\xB7\xB7q\xFC\xE4ql\x19\xF2\xC1\x90`\0\x90\xA3PPPPV[\x81T`\0\x90\x81\x90\x81a\x18o\x86a\r\x1AV[\x90P`\0\x82\x11\x80\x15a\x18\xADWPC\x86a\x18\x89`\x01\x85a)VV[\x81T\x81\x10a\x18\x99Wa\x18\x99a'\x89V[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x14[\x15a\x19\rWa\x18\xBB\x85a\x1CLV[\x86a\x18\xC7`\x01\x85a)VV[\x81T\x81\x10a\x18\xD7Wa\x18\xD7a'\x89V[\x90`\0R` `\0 \x01`\0\x01`\x04a\x01\0\n\x81T\x81`\x01`\x01`\xE0\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`\xE0\x1B\x03\x16\x02\x17\x90UPa\x19{V[\x85`\0\x01`@Q\x80`@\x01`@R\x80a\x19%Ca\x1C\xB9V[c\xFF\xFF\xFF\xFF\x16\x81R` \x01a\x199\x88a\x1CLV[`\x01`\x01`\xE0\x1B\x03\x90\x81\x16\x90\x91R\x82T`\x01\x81\x01\x84U`\0\x93\x84R` \x93\x84\x90 \x83Q\x94\x90\x93\x01Q\x90\x91\x16d\x01\0\0\0\0\x02c\xFF\xFF\xFF\xFF\x90\x93\x16\x92\x90\x92\x17\x91\x01U[\x92P\x83\x91PP[\x92P\x92\x90PV[`\0Ta\x01\0\x90\x04`\xFF\x16a\x19\xB0W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\t\x9C\x90a)\x84V[a\x06,a\x1D\x1EV[\x80Q`\0\x90\x81\x80\x80\x80[\x84Q\x81\x10\x15a\x1AfW\x84\x81\x81Q\x81\x10a\x19\xDDWa\x19\xDDa'\x89V[` \x02` \x01\x01Q`\0\x01Q\x92P\x82`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x10a\x1A\x1DW`@Qc\xBAP\xF9\x11`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82\x93P\x84\x81\x81Q\x81\x10a\x1A2Wa\x1A2a'\x89V[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x82a\x1AR\x91\x90a(\xDBV[\x91P\x80a\x1A^\x81a'\xB5V[\x91PPa\x19\xC2V[Pa'\x10\x81\x14a\x1A|WP`\0\x95\x94PPPPPV[P`\x01\x95\x94PPPPPV[`\0\x80`\0a\x1A\x97\x85\x85a\x1DNV[\x90\x92P\x90P`\0\x81`\x04\x81\x11\x15a\x1A\xB0Wa\x1A\xB0a*\xB3V[\x14\x80\x15a\x1A\xCEWP\x85`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14[\x15a\x1A\xDEW`\x01\x92PPPa\x05\xE8V[`\0\x80\x87`\x01`\x01`\xA0\x1B\x03\x16c\x16&\xBA~`\xE0\x1B\x88\x88`@Q`$\x01a\x1B\x06\x92\x91\x90a*\xC9V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16`\x01`\x01`\xE0\x1B\x03\x19\x90\x94\x16\x93\x90\x93\x17\x90\x92R\x90Qa\x1BD\x91\x90a*\xE2V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x1B\x7FW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1B\x84V[``\x91P[P\x91P\x91P\x81\x80\x15a\x1B\x97WP\x80Q` \x14[\x80\x15a\x1B\xC8WP\x80Qc\x0B\x13]?`\xE1\x1B\x90a\x1B\xBC\x90\x83\x01` \x90\x81\x01\x90\x84\x01a*\xFEV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[\x98\x97PPPPPPPPV[`\0C\x82c\xFF\xFF\xFF\xFF\x16\x10a\x1B\xFCW`@Qc\xE6O\x18\x0F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x04d`kc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\x0BL\x16V[`\0C\x82c\xFF\xFF\xFF\xFF\x16\x10a\x1C8W`@Qc\xE6O\x18\x0F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x04d`lc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\x0BL\x16V[`\0`\x01`\x01`\xE0\x1B\x03\x82\x11\x15a\x1C\xB5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FSafeCast: value doesn't fit in 2`D\x82\x01Rf24 bits`\xC8\x1B`d\x82\x01R`\x84\x01a\t\x9CV[P\x90V[`\0c\xFF\xFF\xFF\xFF\x82\x11\x15a\x1C\xB5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FSafeCast: value doesn't fit in 3`D\x82\x01Re2 bits`\xD0\x1B`d\x82\x01R`\x84\x01a\t\x9CV[`\0Ta\x01\0\x90\x04`\xFF\x16a\x1DEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\t\x9C\x90a)\x84V[a\x06,3a\x0FPV[`\0\x80\x82Q`A\x14\x15a\x1D\x85W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1Aa\x1Dy\x87\x82\x85\x85a\x1D\xBBV[\x94P\x94PPPPa\x19\x82V[\x82Q`@\x14\x15a\x1D\xAFW` \x83\x01Q`@\x84\x01Qa\x1D\xA4\x86\x83\x83a\x1E\xA8V[\x93P\x93PPPa\x19\x82V[P`\0\x90P`\x02a\x19\x82V[`\0\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x83\x11\x15a\x1D\xF2WP`\0\x90P`\x03a\x1E\x9FV[\x84`\xFF\x16`\x1B\x14\x15\x80\x15a\x1E\nWP\x84`\xFF\x16`\x1C\x14\x15[\x15a\x1E\x1BWP`\0\x90P`\x04a\x1E\x9FV[`@\x80Q`\0\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x1EoW=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1E\x98W`\0`\x01\x92P\x92PPa\x1E\x9FV[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81a\x1E\xC5`\xFF\x86\x90\x1C`\x1Ba(\xDBV[\x90Pa\x1E\xD3\x87\x82\x88\x85a\x1D\xBBV[\x93P\x93PPP\x93P\x93\x91PPV[P\x80T`\0\x82U\x90`\0R` `\0 \x90\x81\x01\x90a\x04K\x91\x90[\x80\x82\x11\x15a\x1C\xB5W`\0\x81U`\x01\x01a\x1E\xFBV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q` \x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1FGWa\x1FGa\x1F\x0FV[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1FGWa\x1FGa\x1F\x0FV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1F\x97Wa\x1F\x97a\x1F\x0FV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x1F\xB8Wa\x1F\xB8a\x1F\x0FV[P`\x05\x1B` \x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04KW`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a\x1F\xE8W`\0\x80\xFD[\x815` a\x1F\xFDa\x1F\xF8\x83a\x1F\x9FV[a\x1FoV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a \x1CW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a @W\x805a 3\x81a\x1F\xC2V[\x83R\x91\x83\x01\x91\x83\x01a V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a ]W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a sW`\0\x80\xFD[a \x7F\x84\x82\x85\x01a\x1F\xD7V[\x94\x93PPPPV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x04KW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a \xABW`\0\x80\xFD[\x815a\x05\xE8\x81a \x87V[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a \xCFWa \xCFa\x1F\x0FV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a \xEEW`\0\x80\xFD[\x815a \xFCa\x1F\xF8\x82a \xB6V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a!\x11W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a!AW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a!^W`\0\x80\xFD[a!j\x85\x82\x86\x01a \xDDV[\x91PP\x92P\x92\x90PV[\x80Q` \x80\x84R\x81Q\x84\x82\x01\x81\x90R`\0\x92`@\x91\x90\x83\x01\x90\x82\x87\x01\x90\x85[\x81\x81\x10\x15a!\xCAW\x83Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x86\x01Q`\x01`\x01``\x1B\x03\x16\x86\x84\x01R\x92\x85\x01\x92\x91\x84\x01\x91`\x01\x01a!\x93V[P\x90\x97\x96PPPPPPPV[` \x81R`\0a\x05\xE8` \x83\x01\x84a!tV[`\0` \x82\x84\x03\x12\x15a!\xFCW`\0\x80\xFD[\x815a\x05\xE8\x81a\x1F\xC2V[`\0\x80`@\x83\x85\x03\x12\x15a\"\x1AW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\"1W`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a\"EW`\0\x80\xFD[`@Q``\x81\x01\x81\x81\x10\x83\x82\x11\x17\x15a\"`Wa\"`a\x1F\x0FV[`@R\x825\x82\x81\x11\x15a\"rW`\0\x80\xFD[a\"~\x88\x82\x86\x01a \xDDV[\x82RP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x94PPPP` \x83\x015a\"\xA9\x81a\x1F\xC2V[\x80\x91PP\x92P\x92\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\"\xC7W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\"\xDEW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\"\xF2W`\0\x80\xFD[\x815` a#\x02a\x1F\xF8\x83a\x1F\x9FV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a#!W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a#YW\x805\x86\x81\x11\x15a#=W`\0\x80\x81\xFD[a#K\x8C\x86\x83\x8B\x01\x01a\x1F\xD7V[\x84RP\x91\x83\x01\x91\x83\x01a#%V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a#pW`\0\x80\xFD[Pa!j\x85\x82\x86\x01a \xDDV[`\0\x80`@\x83\x85\x03\x12\x15a#\x90W`\0\x80\xFD[\x825a#\x9B\x81a\x1F\xC2V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a#\xBBW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a#\xD5W`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a#\xF2W`\0\x80\xFD[a!j\x85\x82\x86\x01a\x1F\xD7V[`\0\x80`@\x83\x85\x03\x12\x15a$\x11W`\0\x80\xFD[\x825a$\x1C\x81a\x1F\xC2V[\x91P` \x83\x015a\"\xA9\x81a \x87V[`\0` \x80\x83\x85\x03\x12\x15a$?W`\0\x80\xFD[a$Ga\x1F%V[\x91P\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a$_W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a$pW`\0\x80\xFD[\x805a$~a\x1F\xF8\x82a\x1F\x9FV[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a$\x9DW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a%\0W`@\x84\x89\x03\x12\x15a$\xBBW`\0\x80\x81\xFD[a$\xC3a\x1FMV[\x845a$\xCE\x81a\x1F\xC2V[\x81R\x84\x86\x015`\x01`\x01``\x1B\x03\x81\x16\x81\x14a$\xEAW`\0\x80\x81\xFD[\x81\x87\x01R\x82R`@\x93\x90\x93\x01\x92\x90\x84\x01\x90a$\xA2V[\x85RP\x92\x95\x94PPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a%\"W`\0\x80\xFD[\x835a%-\x81a\x1F\xC2V[\x92P` \x84\x015\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a%OW`\0\x80\xFD[a%[\x86\x82\x87\x01a$,V[\x91PP\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a%xW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a%\x8FW`\0\x80\xFD[a%\x9B\x86\x83\x87\x01a$,V[\x93P` \x85\x015\x91P\x80\x82\x11\x15a%\xB1W`\0\x80\xFD[Pa!j\x85\x82\x86\x01a\x1F\xD7V[`\0[\x83\x81\x10\x15a%\xD9W\x81\x81\x01Q\x83\x82\x01R` \x01a%\xC1V[\x83\x81\x11\x15a\n\x19WPP`\0\x91\x01RV[`\0\x82`\x1F\x83\x01\x12a%\xFBW`\0\x80\xFD[\x81Q` a&\x0Ba\x1F\xF8\x83a\x1F\x9FV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a&*W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a @W\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a&MW`\0\x80\x81\xFD[\x87\x01`?\x81\x01\x89\x13a&_W`\0\x80\x81\xFD[\x84\x81\x01Q`@a&qa\x1F\xF8\x83a \xB6V[\x82\x81R\x8B\x82\x84\x86\x01\x01\x11\x15a&\x86W`\0\x80\x81\xFD[a&\x95\x83\x89\x83\x01\x84\x87\x01a%\xBEV[\x86RPPP\x91\x83\x01\x91\x83\x01a&.V[\x80Qa&\xB0\x81a \x87V[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a&\xCAW`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a&\xE1W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a&\xF5W`\0\x80\xFD[\x81Q` a'\x05a\x1F\xF8\x83a\x1F\x9FV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x8A\x84\x11\x15a'$W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a'KW\x85Qa'<\x81a\x1F\xC2V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a')V[\x91\x89\x01Q\x91\x97P\x90\x93PPP\x80\x82\x11\x15a'dW`\0\x80\xFD[Pa'q\x86\x82\x87\x01a%\xEAV[\x92PPa'\x80`@\x85\x01a&\xA5V[\x90P\x92P\x92P\x92V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a'\xC9Wa'\xC9a'\x9FV[P`\x01\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x82R`@` \x80\x84\x01\x82\x90R\x84Q\x91\x84\x01\x82\x90R`\0\x92\x85\x82\x01\x92\x90\x91\x90``\x86\x01\x90\x85[\x81\x81\x10\x15a(\x1EW\x85Q\x85\x16\x83R\x94\x83\x01\x94\x91\x83\x01\x91`\x01\x01a(\0V[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a(?W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a(UW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a(fW`\0\x80\xFD[\x80Qa(ta\x1F\xF8\x82a\x1F\x9FV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a(\x93W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a(\xB1W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a(\x98V[\x97\x96PPPPPPPV[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a(\xD6Wa(\xD6a'\x9FV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a(\xEEWa(\xEEa'\x9FV[P\x01\x90V[`\0\x82a)\x10WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0\x80\x82\x12\x80\x15`\x01`\x01`\xFF\x1B\x03\x84\x90\x03\x85\x13\x16\x15a)7Wa)7a'\x9FV[`\x01`\xFF\x1B\x83\x90\x03\x84\x12\x81\x16\x15a)PWa)Pa'\x9FV[PP\x01\x90V[`\0\x82\x82\x10\x15a)hWa)ha'\x9FV[P\x03\x90V[`\0\x81a)|Wa)|a'\x9FV[P`\0\x19\x01\x90V[` \x80\x82R`+\x90\x82\x01R\x7FInitializable: contract is not i`@\x82\x01Rjnitializing`\xA8\x1B``\x82\x01R`\x80\x01\x90V[`@\x81R`\0a)\xE2`@\x83\x01\x85a!tV[\x82\x81\x03` \x84\x01Ra)\xF4\x81\x85a!tV[\x95\x94PPPPPV[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a*\x1BWa*\x1Ba'\x9FV[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a*6Wa*6a'\x9FV[PP\x03\x90V[`\0\x81Q\x80\x84Ra*T\x81` \x86\x01` \x86\x01a%\xBEV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01R`\0\x82Q```@\x84\x01Ra*\x92`\xA0\x84\x01\x82a*=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x08^\x91\x90\x81\x01\x90a(,V[\x90P`\0[\x84Q\x81\x10\x15a\x08\xD5W\x84\x81\x81Q\x81\x10a\x08~Wa\x08~a'\x89V[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x08\xA5Wa\x08\xA5a'\x89V[` \x02` \x01\x01Qa\x08\xB7\x91\x90a(\xBCV[a\x08\xC1\x90\x85a(\xDBV[\x93P\x80a\x08\xCD\x81a'\xB5V[\x91PPa\x08cV[Pa\x08\xE2a'\x10\x84a(\xF3V[\x92P`gT\x83\x10a\x08\xF7WP\x90\x94\x93PPPPV[P`\0\x95\x94PPPPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\t#WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\t=WP0;\x15\x80\x15a\t=WP`\0T`\xFF\x16`\x01\x14[a\t\xA5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\t\xC8W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\t\xD3\x84\x84\x84a\x11xV[\x80\x15a\n\x19W`\0\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPV[`\0a\x05]`la\r\x1AV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`j` R`@\x81 a\x04d\x90a\r\x1AV[a\nTa\r\xE7V[a\x06\x11\x82a\x11\xD4V[a\nea\r\xE7V[a\x04K\x81a\x133V[a\nva\r\xE7V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\n\xDBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\t\x9CV[a\x04K\x81a\x0FPV[a\n\xECa\r\xE7V[a\x04K\x81a\x13sV[`\0\x80[\x82Q\x81\x10\x15a\x0BBWa\x0B$\x83\x82\x81Q\x81\x10a\x0B\x17Wa\x0B\x17a'\x89V[` \x02` \x01\x01Qa\x14\x1CV[a\x0B.\x90\x83a)\x15V[\x91P\x80a\x0B:\x81a'\xB5V[\x91PPa\n\xF9V[Pa\n\x19\x81a\x14\xF9V[`\0C\x82\x10a\x0B\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FCheckpoints: block not yet mined`D\x82\x01R`d\x01a\t\x9CV[\x82T`\0[\x81\x81\x10\x15a\x0C\x02W`\0a\x0B\xB6\x82\x84a\x15eV[\x90P\x84\x86`\0\x01\x82\x81T\x81\x10a\x0B\xCEWa\x0B\xCEa'\x89V[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x0B\xEEW\x80\x92Pa\x0B\xFCV[a\x0B\xF9\x81`\x01a(\xDBV[\x91P[Pa\x0B\xA2V[\x81\x15a\x0CFW\x84a\x0C\x14`\x01\x84a)VV[\x81T\x81\x10a\x0C$Wa\x0C$a'\x89V[`\0\x91\x82R` \x90\x91 \x01Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\x0CIV[`\0[`\x01`\x01`\xE0\x1B\x03\x16\x95\x94PPPPPV[`\0\x83Q\x90P`\0\x80`\0\x80a\x0Cr\x85\x88Qa\x15\x80V[`\0[\x85\x81\x10\x15a\r\x04W\x88\x81\x81Q\x81\x10a\x0C\x8FWa\x0C\x8Fa'\x89V[` \x02` \x01\x01Q\x94Pa\x0C\xA3\x85\x88a\x15\xC1V[\x92Pa\x0C\xAF\x84\x86a\x16\x14V[a\x0C\xD3\x83\x8B\x8A\x84\x81Q\x81\x10a\x0C\xC6Wa\x0C\xC6a'\x89V[` \x02` \x01\x01Qa\x16FV[\x84\x93P`\0a\x0C\xE2\x86\x89a\x16wV[\x90Pa\x0C\xEE\x81\x84a(\xDBV[\x92PP\x80\x80a\x0C\xFC\x90a'\xB5V[\x91PPa\x0CuV[Pa\r\x0F\x81\x87a\x16\xCAV[PPPPPPPPPV[\x80T`\0\x90\x80\x15a\rcW\x82a\r1`\x01\x83a)VV[\x81T\x81\x10a\rAWa\rAa'\x89V[`\0\x91\x82R` \x90\x91 \x01Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\rfV[`\0[`\x01`\x01`\xE0\x1B\x03\x16\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x97` R`@\x90 T`\xFF\x16\x15\x15`\x01\x14a\r\xB4W`@Qc8\x0F\xA2\x13`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\r\xBF\x83\x83\x83a\x17&V[PPPV[`eT\x81Q\x14a\x04BW`@Qc\x16\x9E\xFB[`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x06,W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\x97` R`@\x90 T`\xFF\x16\x15a\x0E{W`@Qcx\xF5\xEEa`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x81\x81R`\x97` R`@\x80\x82 \x80T`\xFF\x19\x16`\x01\x17\x90UQ\x7F\xE9\xBC\x8E\xB0\x0C\x07f\xD7\x89\xEC\xBA\0\x0FXT\x06\x07[\x05;\xF1\x84*\xA1\x9DJ\xF5,R\xBCi \x91\x90\xA2PV[a\x0E\xD2`l\x82a\x18^V[PP`@Q\x81\x81R\x7F\x93$\xF7\xE5\xA7\xC0(\x88\x08\xA64\xCC\xDED\xB8\xE9ygdt\xB2.)\xEE\x9D\xD5i\xB5^y\x1AK\x90` \x01`@Q\x80\x91\x03\x90\xA1PV[`g\x80T\x90\x82\x90U`@\x80Q\x82\x81R` \x81\x01\x84\x90R\x7Fq<\xA5;\x88\xD6\xEBc\xF5\xB1\x85L\xB8\xCB\xDDsn\xC5\x1E\xDA\"^Fy\x1A\xA9)\x8B\x01`d\x8F\x91\x01[`@Q\x80\x91\x03\x90\xA1PPV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`j` R`@\x81 a\x0F\xC3\x90a\r\x1AV[\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x0F\xE4WPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x90\x81R`j` R`@\x90 a\x10\x08\x91\x84\x16a\x18^V[PP`@Q`\x01`\x01`\xA0\x1B\x03\x82\x81\x16\x82R\x80\x84\x16\x91C\x91\x86\x16\x90\x7F\xD0a\x16\x82R\xF4As6X\xF0\x9EM\x8F[-\x99\x8E\xD4\xEF$\xA2\xBB\xFDl\xEC\xA5.\xA11P\x02\x90` \x01`@Q\x80\x91\x03\x90\xA4PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`n` R`@\x90 T`\xFF\x16a\x10\x8EW`@Qc%\xECl\x1F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`e\x80T\x90`\0a\x10\x9E\x83a)mV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`n` R`@\x81 \x80T`\xFF\x19\x16\x90Ua\x10\xCC\x82a\x14\x1CV[\x90Pa\x10\xD7\x81a\x14\xF9V[PP`hT`@QcQ\xB2zm`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R\x90\x91\x16\x90c\xA3d\xF4\xDA\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x11 W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x114W=`\0\x80>=`\0\xFD[PP`hT`@Q`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x93P\x90\x85\x16\x91P\x7F1\xE0\xAD\xFE\xC7\x1B\xCC\xEE7\xB6\xE8:\x90\xC2\xFE\xDB\x17\xD8\xF1i?\xEE\x86=`\0\xFD[PP`hT`@Q`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x93P\x90\x87\x16\x91P\x7F\xA4S\xDBa*\xF5\x9EU!\xD6\xAB\x92\x84\xDC>-\x06\xAF(n\xB1\xB1\xB7\xB7q\xFC\xE4ql\x19\xF2\xC1\x90`\0\x90\xA3PPPPV[\x81T`\0\x90\x81\x90\x81a\x18o\x86a\r\x1AV[\x90P`\0\x82\x11\x80\x15a\x18\xADWPC\x86a\x18\x89`\x01\x85a)VV[\x81T\x81\x10a\x18\x99Wa\x18\x99a'\x89V[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x14[\x15a\x19\rWa\x18\xBB\x85a\x1CLV[\x86a\x18\xC7`\x01\x85a)VV[\x81T\x81\x10a\x18\xD7Wa\x18\xD7a'\x89V[\x90`\0R` `\0 \x01`\0\x01`\x04a\x01\0\n\x81T\x81`\x01`\x01`\xE0\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`\xE0\x1B\x03\x16\x02\x17\x90UPa\x19{V[\x85`\0\x01`@Q\x80`@\x01`@R\x80a\x19%Ca\x1C\xB9V[c\xFF\xFF\xFF\xFF\x16\x81R` \x01a\x199\x88a\x1CLV[`\x01`\x01`\xE0\x1B\x03\x90\x81\x16\x90\x91R\x82T`\x01\x81\x01\x84U`\0\x93\x84R` \x93\x84\x90 \x83Q\x94\x90\x93\x01Q\x90\x91\x16d\x01\0\0\0\0\x02c\xFF\xFF\xFF\xFF\x90\x93\x16\x92\x90\x92\x17\x91\x01U[\x92P\x83\x91PP[\x92P\x92\x90PV[`\0Ta\x01\0\x90\x04`\xFF\x16a\x19\xB0W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\t\x9C\x90a)\x84V[a\x06,a\x1D\x1EV[\x80Q`\0\x90\x81\x80\x80\x80[\x84Q\x81\x10\x15a\x1AfW\x84\x81\x81Q\x81\x10a\x19\xDDWa\x19\xDDa'\x89V[` \x02` \x01\x01Q`\0\x01Q\x92P\x82`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x10a\x1A\x1DW`@Qc\xBAP\xF9\x11`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82\x93P\x84\x81\x81Q\x81\x10a\x1A2Wa\x1A2a'\x89V[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x82a\x1AR\x91\x90a(\xDBV[\x91P\x80a\x1A^\x81a'\xB5V[\x91PPa\x19\xC2V[Pa'\x10\x81\x14a\x1A|WP`\0\x95\x94PPPPPV[P`\x01\x95\x94PPPPPV[`\0\x80`\0a\x1A\x97\x85\x85a\x1DNV[\x90\x92P\x90P`\0\x81`\x04\x81\x11\x15a\x1A\xB0Wa\x1A\xB0a*\xB3V[\x14\x80\x15a\x1A\xCEWP\x85`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14[\x15a\x1A\xDEW`\x01\x92PPPa\x05\xE8V[`\0\x80\x87`\x01`\x01`\xA0\x1B\x03\x16c\x16&\xBA~`\xE0\x1B\x88\x88`@Q`$\x01a\x1B\x06\x92\x91\x90a*\xC9V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16`\x01`\x01`\xE0\x1B\x03\x19\x90\x94\x16\x93\x90\x93\x17\x90\x92R\x90Qa\x1BD\x91\x90a*\xE2V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x1B\x7FW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1B\x84V[``\x91P[P\x91P\x91P\x81\x80\x15a\x1B\x97WP\x80Q` \x14[\x80\x15a\x1B\xC8WP\x80Qc\x0B\x13]?`\xE1\x1B\x90a\x1B\xBC\x90\x83\x01` \x90\x81\x01\x90\x84\x01a*\xFEV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[\x98\x97PPPPPPPPV[`\0C\x82c\xFF\xFF\xFF\xFF\x16\x10a\x1B\xFCW`@Qc\xE6O\x18\x0F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x04d`kc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\x0BL\x16V[`\0C\x82c\xFF\xFF\xFF\xFF\x16\x10a\x1C8W`@Qc\xE6O\x18\x0F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x04d`lc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\x0BL\x16V[`\0`\x01`\x01`\xE0\x1B\x03\x82\x11\x15a\x1C\xB5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FSafeCast: value doesn't fit in 2`D\x82\x01Rf24 bits`\xC8\x1B`d\x82\x01R`\x84\x01a\t\x9CV[P\x90V[`\0c\xFF\xFF\xFF\xFF\x82\x11\x15a\x1C\xB5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FSafeCast: value doesn't fit in 3`D\x82\x01Re2 bits`\xD0\x1B`d\x82\x01R`\x84\x01a\t\x9CV[`\0Ta\x01\0\x90\x04`\xFF\x16a\x1DEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\t\x9C\x90a)\x84V[a\x06,3a\x0FPV[`\0\x80\x82Q`A\x14\x15a\x1D\x85W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1Aa\x1Dy\x87\x82\x85\x85a\x1D\xBBV[\x94P\x94PPPPa\x19\x82V[\x82Q`@\x14\x15a\x1D\xAFW` \x83\x01Q`@\x84\x01Qa\x1D\xA4\x86\x83\x83a\x1E\xA8V[\x93P\x93PPPa\x19\x82V[P`\0\x90P`\x02a\x19\x82V[`\0\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x83\x11\x15a\x1D\xF2WP`\0\x90P`\x03a\x1E\x9FV[\x84`\xFF\x16`\x1B\x14\x15\x80\x15a\x1E\nWP\x84`\xFF\x16`\x1C\x14\x15[\x15a\x1E\x1BWP`\0\x90P`\x04a\x1E\x9FV[`@\x80Q`\0\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x1EoW=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1E\x98W`\0`\x01\x92P\x92PPa\x1E\x9FV[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81a\x1E\xC5`\xFF\x86\x90\x1C`\x1Ba(\xDBV[\x90Pa\x1E\xD3\x87\x82\x88\x85a\x1D\xBBV[\x93P\x93PPP\x93P\x93\x91PPV[P\x80T`\0\x82U\x90`\0R` `\0 \x90\x81\x01\x90a\x04K\x91\x90[\x80\x82\x11\x15a\x1C\xB5W`\0\x81U`\x01\x01a\x1E\xFBV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q` \x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1FGWa\x1FGa\x1F\x0FV[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1FGWa\x1FGa\x1F\x0FV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1F\x97Wa\x1F\x97a\x1F\x0FV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x1F\xB8Wa\x1F\xB8a\x1F\x0FV[P`\x05\x1B` \x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04KW`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a\x1F\xE8W`\0\x80\xFD[\x815` a\x1F\xFDa\x1F\xF8\x83a\x1F\x9FV[a\x1FoV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a \x1CW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a @W\x805a 3\x81a\x1F\xC2V[\x83R\x91\x83\x01\x91\x83\x01a V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a ]W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a sW`\0\x80\xFD[a \x7F\x84\x82\x85\x01a\x1F\xD7V[\x94\x93PPPPV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x04KW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a \xABW`\0\x80\xFD[\x815a\x05\xE8\x81a \x87V[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a \xCFWa \xCFa\x1F\x0FV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a \xEEW`\0\x80\xFD[\x815a \xFCa\x1F\xF8\x82a \xB6V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a!\x11W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a!AW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a!^W`\0\x80\xFD[a!j\x85\x82\x86\x01a \xDDV[\x91PP\x92P\x92\x90PV[\x80Q` \x80\x84R\x81Q\x84\x82\x01\x81\x90R`\0\x92`@\x91\x90\x83\x01\x90\x82\x87\x01\x90\x85[\x81\x81\x10\x15a!\xCAW\x83Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x86\x01Q`\x01`\x01``\x1B\x03\x16\x86\x84\x01R\x92\x85\x01\x92\x91\x84\x01\x91`\x01\x01a!\x93V[P\x90\x97\x96PPPPPPPV[` \x81R`\0a\x05\xE8` \x83\x01\x84a!tV[`\0` \x82\x84\x03\x12\x15a!\xFCW`\0\x80\xFD[\x815a\x05\xE8\x81a\x1F\xC2V[`\0\x80`@\x83\x85\x03\x12\x15a\"\x1AW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\"1W`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a\"EW`\0\x80\xFD[`@Q``\x81\x01\x81\x81\x10\x83\x82\x11\x17\x15a\"`Wa\"`a\x1F\x0FV[`@R\x825\x82\x81\x11\x15a\"rW`\0\x80\xFD[a\"~\x88\x82\x86\x01a \xDDV[\x82RP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x94PPPP` \x83\x015a\"\xA9\x81a\x1F\xC2V[\x80\x91PP\x92P\x92\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\"\xC7W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\"\xDEW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\"\xF2W`\0\x80\xFD[\x815` a#\x02a\x1F\xF8\x83a\x1F\x9FV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a#!W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a#YW\x805\x86\x81\x11\x15a#=W`\0\x80\x81\xFD[a#K\x8C\x86\x83\x8B\x01\x01a\x1F\xD7V[\x84RP\x91\x83\x01\x91\x83\x01a#%V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a#pW`\0\x80\xFD[Pa!j\x85\x82\x86\x01a \xDDV[`\0\x80`@\x83\x85\x03\x12\x15a#\x90W`\0\x80\xFD[\x825a#\x9B\x81a\x1F\xC2V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a#\xBBW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a#\xD5W`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a#\xF2W`\0\x80\xFD[a!j\x85\x82\x86\x01a\x1F\xD7V[`\0\x80`@\x83\x85\x03\x12\x15a$\x11W`\0\x80\xFD[\x825a$\x1C\x81a\x1F\xC2V[\x91P` \x83\x015a\"\xA9\x81a \x87V[`\0` \x80\x83\x85\x03\x12\x15a$?W`\0\x80\xFD[a$Ga\x1F%V[\x91P\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a$_W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a$pW`\0\x80\xFD[\x805a$~a\x1F\xF8\x82a\x1F\x9FV[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a$\x9DW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a%\0W`@\x84\x89\x03\x12\x15a$\xBBW`\0\x80\x81\xFD[a$\xC3a\x1FMV[\x845a$\xCE\x81a\x1F\xC2V[\x81R\x84\x86\x015`\x01`\x01``\x1B\x03\x81\x16\x81\x14a$\xEAW`\0\x80\x81\xFD[\x81\x87\x01R\x82R`@\x93\x90\x93\x01\x92\x90\x84\x01\x90a$\xA2V[\x85RP\x92\x95\x94PPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a%\"W`\0\x80\xFD[\x835a%-\x81a\x1F\xC2V[\x92P` \x84\x015\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a%OW`\0\x80\xFD[a%[\x86\x82\x87\x01a$,V[\x91PP\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a%xW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a%\x8FW`\0\x80\xFD[a%\x9B\x86\x83\x87\x01a$,V[\x93P` \x85\x015\x91P\x80\x82\x11\x15a%\xB1W`\0\x80\xFD[Pa!j\x85\x82\x86\x01a\x1F\xD7V[`\0[\x83\x81\x10\x15a%\xD9W\x81\x81\x01Q\x83\x82\x01R` \x01a%\xC1V[\x83\x81\x11\x15a\n\x19WPP`\0\x91\x01RV[`\0\x82`\x1F\x83\x01\x12a%\xFBW`\0\x80\xFD[\x81Q` a&\x0Ba\x1F\xF8\x83a\x1F\x9FV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a&*W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a @W\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a&MW`\0\x80\x81\xFD[\x87\x01`?\x81\x01\x89\x13a&_W`\0\x80\x81\xFD[\x84\x81\x01Q`@a&qa\x1F\xF8\x83a \xB6V[\x82\x81R\x8B\x82\x84\x86\x01\x01\x11\x15a&\x86W`\0\x80\x81\xFD[a&\x95\x83\x89\x83\x01\x84\x87\x01a%\xBEV[\x86RPPP\x91\x83\x01\x91\x83\x01a&.V[\x80Qa&\xB0\x81a \x87V[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a&\xCAW`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a&\xE1W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a&\xF5W`\0\x80\xFD[\x81Q` a'\x05a\x1F\xF8\x83a\x1F\x9FV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x8A\x84\x11\x15a'$W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a'KW\x85Qa'<\x81a\x1F\xC2V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a')V[\x91\x89\x01Q\x91\x97P\x90\x93PPP\x80\x82\x11\x15a'dW`\0\x80\xFD[Pa'q\x86\x82\x87\x01a%\xEAV[\x92PPa'\x80`@\x85\x01a&\xA5V[\x90P\x92P\x92P\x92V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a'\xC9Wa'\xC9a'\x9FV[P`\x01\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x82R`@` \x80\x84\x01\x82\x90R\x84Q\x91\x84\x01\x82\x90R`\0\x92\x85\x82\x01\x92\x90\x91\x90``\x86\x01\x90\x85[\x81\x81\x10\x15a(\x1EW\x85Q\x85\x16\x83R\x94\x83\x01\x94\x91\x83\x01\x91`\x01\x01a(\0V[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a(?W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a(UW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a(fW`\0\x80\xFD[\x80Qa(ta\x1F\xF8\x82a\x1F\x9FV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a(\x93W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a(\xB1W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a(\x98V[\x97\x96PPPPPPPV[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a(\xD6Wa(\xD6a'\x9FV[P\x02\x90V[`\0\x82\x19\x82\x11\x15a(\xEEWa(\xEEa'\x9FV[P\x01\x90V[`\0\x82a)\x10WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0\x80\x82\x12\x80\x15`\x01`\x01`\xFF\x1B\x03\x84\x90\x03\x85\x13\x16\x15a)7Wa)7a'\x9FV[`\x01`\xFF\x1B\x83\x90\x03\x84\x12\x81\x16\x15a)PWa)Pa'\x9FV[PP\x01\x90V[`\0\x82\x82\x10\x15a)hWa)ha'\x9FV[P\x03\x90V[`\0\x81a)|Wa)|a'\x9FV[P`\0\x19\x01\x90V[` \x80\x82R`+\x90\x82\x01R\x7FInitializable: contract is not i`@\x82\x01Rjnitializing`\xA8\x1B``\x82\x01R`\x80\x01\x90V[`@\x81R`\0a)\xE2`@\x83\x01\x85a!tV[\x82\x81\x03` \x84\x01Ra)\xF4\x81\x85a!tV[\x95\x94PPPPPV[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a*\x1BWa*\x1Ba'\x9FV[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a*6Wa*6a'\x9FV[PP\x03\x90V[`\0\x81Q\x80\x84Ra*T\x81` \x86\x01` \x86\x01a%\xBEV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01R`\0\x82Q```@\x84\x01Ra*\x92`\xA0\x84\x01\x82a*::RustType>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec<::RustType>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: Quorum) -> Self { + (value.strategies,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for Quorum { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategies: tuple.0, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for Quorum { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for Quorum { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.strategies), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Quorum { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for Quorum { + const NAME: &'static str = "Quorum"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed("Quorum(StrategyParams[] strategies)") + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + let mut components = alloy_sol_types::private::Vec::with_capacity(1); + components.push(::eip712_root_type()); + components + .extend(::eip712_components()); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + as alloy_sol_types::SolType>::eip712_data_word(&self.strategies) + .0 + .to_vec() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Quorum { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.strategies, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.strategies, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct StrategyParams { address strategy; uint96 multiplier; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct StrategyParams { + pub strategy: alloy::sol_types::private::Address, + pub multiplier: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<96>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U96, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: StrategyParams) -> Self { + (value.strategy, value.multiplier) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for StrategyParams { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategy: tuple.0, + multiplier: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for StrategyParams { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for StrategyParams { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.multiplier, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for StrategyParams { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for StrategyParams { + const NAME: &'static str = "StrategyParams"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "StrategyParams(address strategy,uint96 multiplier)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.strategy, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.multiplier) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for StrategyParams { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.strategy, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.multiplier, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.strategy, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.multiplier, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**Custom error with signature `InsufficientSignedStake()` and selector `0xe121632f`. + ```solidity + error InsufficientSignedStake(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InsufficientSignedStake {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InsufficientSignedStake) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InsufficientSignedStake { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InsufficientSignedStake { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InsufficientSignedStake()"; + const SELECTOR: [u8; 4] = [225u8, 33u8, 99u8, 47u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InsufficientWeight()` and selector `0xa8792fd1`. + ```solidity + error InsufficientWeight(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InsufficientWeight {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InsufficientWeight) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InsufficientWeight { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InsufficientWeight { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InsufficientWeight()"; + const SELECTOR: [u8; 4] = [168u8, 121u8, 47u8, 209u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidLength()` and selector `0x947d5a84`. + ```solidity + error InvalidLength(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidLength {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidLength) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidLength { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidLength { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidLength()"; + const SELECTOR: [u8; 4] = [148u8, 125u8, 90u8, 132u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidQuorum()` and selector `0xd1735779`. + ```solidity + error InvalidQuorum(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidQuorum {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidQuorum) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidQuorum { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidQuorum { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidQuorum()"; + const SELECTOR: [u8; 4] = [209u8, 115u8, 87u8, 121u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidReferenceBlock()` and selector `0xe64f180f`. + ```solidity + error InvalidReferenceBlock(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidReferenceBlock {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidReferenceBlock) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidReferenceBlock { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidReferenceBlock { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidReferenceBlock()"; + const SELECTOR: [u8; 4] = [230u8, 79u8, 24u8, 15u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidSignature()` and selector `0x8baa579f`. + ```solidity + error InvalidSignature(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidSignature {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidSignature) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidSignature { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidSignature { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidSignature()"; + const SELECTOR: [u8; 4] = [139u8, 170u8, 87u8, 159u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidSignedWeight()` and selector `0x960b41ee`. + ```solidity + error InvalidSignedWeight(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidSignedWeight {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidSignedWeight) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidSignedWeight { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidSignedWeight { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidSignedWeight()"; + const SELECTOR: [u8; 4] = [150u8, 11u8, 65u8, 238u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidThreshold()` and selector `0xaabd5a09`. + ```solidity + error InvalidThreshold(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidThreshold {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidThreshold) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidThreshold { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidThreshold { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidThreshold()"; + const SELECTOR: [u8; 4] = [170u8, 189u8, 90u8, 9u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `LengthMismatch()` and selector `0xff633a38`. + ```solidity + error LengthMismatch(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct LengthMismatch {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: LengthMismatch) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for LengthMismatch { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for LengthMismatch { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "LengthMismatch()"; + const SELECTOR: [u8; 4] = [255u8, 99u8, 58u8, 56u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `MustUpdateAllOperators()` and selector `0x2d3df6b6`. + ```solidity + error MustUpdateAllOperators(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct MustUpdateAllOperators {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: MustUpdateAllOperators) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for MustUpdateAllOperators { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for MustUpdateAllOperators { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "MustUpdateAllOperators()"; + const SELECTOR: [u8; 4] = [45u8, 61u8, 246u8, 182u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `NotSorted()` and selector `0xba50f911`. + ```solidity + error NotSorted(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct NotSorted {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: NotSorted) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for NotSorted { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for NotSorted { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "NotSorted()"; + const SELECTOR: [u8; 4] = [186u8, 80u8, 249u8, 17u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `OperatorAlreadyAllowlisted()` and selector `0xf1ebdcc2`. + ```solidity + error OperatorAlreadyAllowlisted(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OperatorAlreadyAllowlisted {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OperatorAlreadyAllowlisted) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OperatorAlreadyAllowlisted { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for OperatorAlreadyAllowlisted { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "OperatorAlreadyAllowlisted()"; + const SELECTOR: [u8; 4] = [241u8, 235u8, 220u8, 194u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `OperatorAlreadyRegistered()` and selector `0x42ee68b5`. + ```solidity + error OperatorAlreadyRegistered(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OperatorAlreadyRegistered {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OperatorAlreadyRegistered) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OperatorAlreadyRegistered { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for OperatorAlreadyRegistered { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "OperatorAlreadyRegistered()"; + const SELECTOR: [u8; 4] = [66u8, 238u8, 104u8, 181u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `OperatorNotAllowlisted()` and selector `0x701f4426`. + ```solidity + error OperatorNotAllowlisted(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OperatorNotAllowlisted {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OperatorNotAllowlisted) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OperatorNotAllowlisted { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for OperatorNotAllowlisted { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "OperatorNotAllowlisted()"; + const SELECTOR: [u8; 4] = [112u8, 31u8, 68u8, 38u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `OperatorNotRegistered()` and selector `0x25ec6c1f`. + ```solidity + error OperatorNotRegistered(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OperatorNotRegistered {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OperatorNotRegistered) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OperatorNotRegistered { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for OperatorNotRegistered { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "OperatorNotRegistered()"; + const SELECTOR: [u8; 4] = [37u8, 236u8, 108u8, 31u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`. + ```solidity + event Initialized(uint8 version); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Initialized { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "Initialized(uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, + 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, + 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { version: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.version, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Initialized { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Initialized> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Initialized) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `MinimumWeightUpdated(uint256,uint256)` and selector `0x713ca53b88d6eb63f5b1854cb8cbdd736ec51eda225e46791aa9298b0160648f`. + ```solidity + event MinimumWeightUpdated(uint256 _old, uint256 _new); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct MinimumWeightUpdated { + #[allow(missing_docs)] + pub _old: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub _new: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for MinimumWeightUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "MinimumWeightUpdated(uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 113u8, 60u8, 165u8, 59u8, 136u8, 214u8, 235u8, 99u8, 245u8, 177u8, 133u8, 76u8, + 184u8, 203u8, 221u8, 115u8, 110u8, 197u8, 30u8, 218u8, 34u8, 94u8, 70u8, 121u8, + 26u8, 169u8, 41u8, 139u8, 1u8, 96u8, 100u8, 143u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _old: data.0, + _new: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._old, + ), + as alloy_sol_types::SolType>::tokenize( + &self._new, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for MinimumWeightUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&MinimumWeightUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &MinimumWeightUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorDeregistered(address,address)` and selector `0x31e0adfec71bccee37b6e83a90c2fedb17d8f1693fee863c4771e7bfe2aed580`. + ```solidity + event OperatorDeregistered(address indexed _operator, address indexed _avs); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorDeregistered { + #[allow(missing_docs)] + pub _operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _avs: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorDeregistered { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OperatorDeregistered(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 49u8, 224u8, 173u8, 254u8, 199u8, 27u8, 204u8, 238u8, 55u8, 182u8, 232u8, 58u8, + 144u8, 194u8, 254u8, 219u8, 23u8, 216u8, 241u8, 105u8, 63u8, 238u8, 134u8, + 60u8, 71u8, 113u8, 231u8, 191u8, 226u8, 174u8, 213u8, 128u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _operator: topics.1, + _avs: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._operator.clone(), + self._avs.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self._operator, + ); + out[2usize] = ::encode_topic( + &self._avs, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorDeregistered { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorDeregistered> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorDeregistered) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorEjected(address)` and selector `0x44cc80141b47717cc60edd3ad54b38b00efe9fe23b2898f15bcf884b0f3ad495`. + ```solidity + event OperatorEjected(address indexed operator); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorEjected { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorEjected { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OperatorEjected(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 68u8, 204u8, 128u8, 20u8, 27u8, 71u8, 113u8, 124u8, 198u8, 14u8, 221u8, 58u8, + 213u8, 75u8, 56u8, 176u8, 14u8, 254u8, 159u8, 226u8, 59u8, 40u8, 152u8, 241u8, + 91u8, 207u8, 136u8, 75u8, 15u8, 58u8, 212u8, 149u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { operator: topics.1 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.operator.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorEjected { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorEjected> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorEjected) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorPermitted(address)` and selector `0xe9bc8eb00c0766d789ecba000f585406075b053bf1842aa19d4af52c52bc6920`. + ```solidity + event OperatorPermitted(address indexed operator); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorPermitted { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorPermitted { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OperatorPermitted(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 233u8, 188u8, 142u8, 176u8, 12u8, 7u8, 102u8, 215u8, 137u8, 236u8, 186u8, 0u8, + 15u8, 88u8, 84u8, 6u8, 7u8, 91u8, 5u8, 59u8, 241u8, 132u8, 42u8, 161u8, 157u8, + 74u8, 245u8, 44u8, 82u8, 188u8, 105u8, 32u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { operator: topics.1 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.operator.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorPermitted { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorPermitted> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorPermitted) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorRegistered(address,address)` and selector `0xa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c1`. + ```solidity + event OperatorRegistered(address indexed _operator, address indexed _avs); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorRegistered { + #[allow(missing_docs)] + pub _operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _avs: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorRegistered { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OperatorRegistered(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 164u8, 83u8, 219u8, 97u8, 42u8, 245u8, 158u8, 85u8, 33u8, 214u8, 171u8, 146u8, + 132u8, 220u8, 62u8, 45u8, 6u8, 175u8, 40u8, 110u8, 177u8, 177u8, 183u8, 183u8, + 113u8, 252u8, 228u8, 113u8, 108u8, 25u8, 242u8, 193u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _operator: topics.1, + _avs: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._operator.clone(), + self._avs.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self._operator, + ); + out[2usize] = ::encode_topic( + &self._avs, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorRegistered { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorRegistered> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorRegistered) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorRevoked(address)` and selector `0xa5f3b7626fd86ff989f1d22cf3d41d74591ea6eb99241079400b0c332a9a8f11`. + ```solidity + event OperatorRevoked(address indexed operator); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorRevoked { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorRevoked { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OperatorRevoked(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 165u8, 243u8, 183u8, 98u8, 111u8, 216u8, 111u8, 249u8, 137u8, 241u8, 210u8, + 44u8, 243u8, 212u8, 29u8, 116u8, 89u8, 30u8, 166u8, 235u8, 153u8, 36u8, 16u8, + 121u8, 64u8, 11u8, 12u8, 51u8, 42u8, 154u8, 143u8, 17u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { operator: topics.1 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.operator.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorRevoked { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorRevoked> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorRevoked) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorWeightUpdated(address,uint256,uint256)` and selector `0x88770dc862e47a7ed586907857eb1b75e4c5ffc8b707c7ee10eb74d6885fe594`. + ```solidity + event OperatorWeightUpdated(address indexed _operator, uint256 oldWeight, uint256 newWeight); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorWeightUpdated { + #[allow(missing_docs)] + pub _operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub oldWeight: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub newWeight: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorWeightUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OperatorWeightUpdated(address,uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 136u8, 119u8, 13u8, 200u8, 98u8, 228u8, 122u8, 126u8, 213u8, 134u8, 144u8, + 120u8, 87u8, 235u8, 27u8, 117u8, 228u8, 197u8, 255u8, 200u8, 183u8, 7u8, 199u8, + 238u8, 16u8, 235u8, 116u8, 214u8, 136u8, 95u8, 229u8, 148u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _operator: topics.1, + oldWeight: data.0, + newWeight: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.oldWeight, + ), + as alloy_sol_types::SolType>::tokenize( + &self.newWeight, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self._operator.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self._operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorWeightUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorWeightUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorWeightUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. + ```solidity + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub previousOwner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, + 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, + 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + previousOwner: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.previousOwner.clone(), + self.newOwner.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.previousOwner, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `QuorumUpdated(((address,uint96)[]),((address,uint96)[]))` and selector `0x23aad4e61744ece164130aa415c1616e80136b0f0770e56589438b90b269265e`. + ```solidity + event QuorumUpdated(Quorum _old, Quorum _new); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct QuorumUpdated { + #[allow(missing_docs)] + pub _old: ::RustType, + #[allow(missing_docs)] + pub _new: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for QuorumUpdated { + type DataTuple<'a> = (Quorum, Quorum); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = + "QuorumUpdated(((address,uint96)[]),((address,uint96)[]))"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 35u8, 170u8, 212u8, 230u8, 23u8, 68u8, 236u8, 225u8, 100u8, 19u8, 10u8, 164u8, + 21u8, 193u8, 97u8, 110u8, 128u8, 19u8, 107u8, 15u8, 7u8, 112u8, 229u8, 101u8, + 137u8, 67u8, 139u8, 144u8, 178u8, 105u8, 38u8, 94u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _old: data.0, + _new: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize(&self._old), + ::tokenize(&self._new), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for QuorumUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&QuorumUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &QuorumUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `SigningKeyUpdate(address,uint256,address,address)` and selector `0xd061168252f441733658f09e4d8f5b2d998ed4ef24a2bbfd6ceca52ea1315002`. + ```solidity + event SigningKeyUpdate(address indexed operator, uint256 indexed updateBlock, address indexed newSigningKey, address oldSigningKey); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct SigningKeyUpdate { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub updateBlock: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub newSigningKey: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub oldSigningKey: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for SigningKeyUpdate { + type DataTuple<'a> = (alloy::sol_types::sol_data::Address,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "SigningKeyUpdate(address,uint256,address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 208u8, 97u8, 22u8, 130u8, 82u8, 244u8, 65u8, 115u8, 54u8, 88u8, 240u8, 158u8, + 77u8, 143u8, 91u8, 45u8, 153u8, 142u8, 212u8, 239u8, 36u8, 162u8, 187u8, 253u8, + 108u8, 236u8, 165u8, 46u8, 161u8, 49u8, 80u8, 2u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: topics.1, + updateBlock: topics.2, + newSigningKey: topics.3, + oldSigningKey: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.oldSigningKey, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.operator.clone(), + self.updateBlock.clone(), + self.newSigningKey.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + out[2usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.updateBlock); + out[3usize] = ::encode_topic( + &self.newSigningKey, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for SigningKeyUpdate { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&SigningKeyUpdate> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &SigningKeyUpdate) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `ThresholdWeightUpdated(uint256)` and selector `0x9324f7e5a7c0288808a634ccde44b8e979676474b22e29ee9dd569b55e791a4b`. + ```solidity + event ThresholdWeightUpdated(uint256 _thresholdWeight); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct ThresholdWeightUpdated { + #[allow(missing_docs)] + pub _thresholdWeight: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ThresholdWeightUpdated { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "ThresholdWeightUpdated(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 147u8, 36u8, 247u8, 229u8, 167u8, 192u8, 40u8, 136u8, 8u8, 166u8, 52u8, 204u8, + 222u8, 68u8, 184u8, 233u8, 121u8, 103u8, 100u8, 116u8, 178u8, 46u8, 41u8, + 238u8, 157u8, 213u8, 105u8, 181u8, 94u8, 121u8, 26u8, 75u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _thresholdWeight: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._thresholdWeight, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ThresholdWeightUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ThresholdWeightUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ThresholdWeightUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `TotalWeightUpdated(uint256,uint256)` and selector `0x86dcf86b12dfeedea74ae9300dbdaa193bcce5809369c8177ea2f4eaaa65729b`. + ```solidity + event TotalWeightUpdated(uint256 oldTotalWeight, uint256 newTotalWeight); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct TotalWeightUpdated { + #[allow(missing_docs)] + pub oldTotalWeight: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub newTotalWeight: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for TotalWeightUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "TotalWeightUpdated(uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 134u8, 220u8, 248u8, 107u8, 18u8, 223u8, 238u8, 222u8, 167u8, 74u8, 233u8, + 48u8, 13u8, 189u8, 170u8, 25u8, 59u8, 204u8, 229u8, 128u8, 147u8, 105u8, 200u8, + 23u8, 126u8, 162u8, 244u8, 234u8, 170u8, 101u8, 114u8, 155u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + oldTotalWeight: data.0, + newTotalWeight: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.oldTotalWeight, + ), + as alloy_sol_types::SolType>::tokenize( + &self.newTotalWeight, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for TotalWeightUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&TotalWeightUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &TotalWeightUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `UpdateMinimumWeight(uint256,uint256)` and selector `0x1ea42186b305fa37310450d9fb87ea1e8f0c7f447e771479e3b27634bfe84dc1`. + ```solidity + event UpdateMinimumWeight(uint256 oldMinimumWeight, uint256 newMinimumWeight); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct UpdateMinimumWeight { + #[allow(missing_docs)] + pub oldMinimumWeight: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub newMinimumWeight: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for UpdateMinimumWeight { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "UpdateMinimumWeight(uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 30u8, 164u8, 33u8, 134u8, 179u8, 5u8, 250u8, 55u8, 49u8, 4u8, 80u8, 217u8, + 251u8, 135u8, 234u8, 30u8, 143u8, 12u8, 127u8, 68u8, 126u8, 119u8, 20u8, 121u8, + 227u8, 178u8, 118u8, 52u8, 191u8, 232u8, 77u8, 193u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + oldMinimumWeight: data.0, + newMinimumWeight: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.oldMinimumWeight, + ), + as alloy_sol_types::SolType>::tokenize( + &self.newMinimumWeight, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for UpdateMinimumWeight { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&UpdateMinimumWeight> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &UpdateMinimumWeight) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. + ```solidity + constructor(address _delegationManager); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _delegationManager: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value._delegationManager,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _delegationManager: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._delegationManager, + ), + ) + } + } + }; + /**Function with signature `allowlistedOperators(address)` and selector `0x6d5be926`. + ```solidity + function allowlistedOperators(address) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct allowlistedOperatorsCall { + pub _0: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`allowlistedOperators(address)`](allowlistedOperatorsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct allowlistedOperatorsReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: allowlistedOperatorsCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for allowlistedOperatorsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: allowlistedOperatorsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for allowlistedOperatorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for allowlistedOperatorsCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = allowlistedOperatorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "allowlistedOperators(address)"; + const SELECTOR: [u8; 4] = [109u8, 91u8, 233u8, 38u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `deregisterOperator()` and selector `0x857dc190`. + ```solidity + function deregisterOperator() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorCall {} + ///Container type for the return parameters of the [`deregisterOperator()`](deregisterOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for deregisterOperatorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = deregisterOperatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "deregisterOperator()"; + const SELECTOR: [u8; 4] = [133u8, 125u8, 193u8, 144u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `ejectOperator(address)` and selector `0xe5d98f94`. + ```solidity + function ejectOperator(address _operator) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ejectOperatorCall { + pub _operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`ejectOperator(address)`](ejectOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ejectOperatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ejectOperatorCall) -> Self { + (value._operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ejectOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ejectOperatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ejectOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ejectOperatorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ejectOperatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ejectOperator(address)"; + const SELECTOR: [u8; 4] = [229u8, 217u8, 143u8, 148u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getLastCheckpointOperatorWeight(address)` and selector `0x3b242e4a`. + ```solidity + function getLastCheckpointOperatorWeight(address _operator) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastCheckpointOperatorWeightCall { + pub _operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getLastCheckpointOperatorWeight(address)`](getLastCheckpointOperatorWeightCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastCheckpointOperatorWeightReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastCheckpointOperatorWeightCall) -> Self { + (value._operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLastCheckpointOperatorWeightCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastCheckpointOperatorWeightReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLastCheckpointOperatorWeightReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getLastCheckpointOperatorWeightCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getLastCheckpointOperatorWeightReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getLastCheckpointOperatorWeight(address)"; + const SELECTOR: [u8; 4] = [59u8, 36u8, 46u8, 74u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getLastCheckpointThresholdWeight()` and selector `0xb933fa74`. + ```solidity + function getLastCheckpointThresholdWeight() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastCheckpointThresholdWeightCall {} + ///Container type for the return parameters of the [`getLastCheckpointThresholdWeight()`](getLastCheckpointThresholdWeightCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastCheckpointThresholdWeightReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastCheckpointThresholdWeightCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLastCheckpointThresholdWeightCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastCheckpointThresholdWeightReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLastCheckpointThresholdWeightReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getLastCheckpointThresholdWeightCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getLastCheckpointThresholdWeightReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getLastCheckpointThresholdWeight()"; + const SELECTOR: [u8; 4] = [185u8, 51u8, 250u8, 116u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getLastCheckpointThresholdWeightAtBlock(uint32)` and selector `0x1e4cd85e`. + ```solidity + function getLastCheckpointThresholdWeightAtBlock(uint32 _blockNumber) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastCheckpointThresholdWeightAtBlockCall { + pub _blockNumber: u32, + } + ///Container type for the return parameters of the [`getLastCheckpointThresholdWeightAtBlock(uint32)`](getLastCheckpointThresholdWeightAtBlockCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastCheckpointThresholdWeightAtBlockReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: getLastCheckpointThresholdWeightAtBlockCall) -> Self { + (value._blockNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getLastCheckpointThresholdWeightAtBlockCall + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _blockNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: getLastCheckpointThresholdWeightAtBlockReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getLastCheckpointThresholdWeightAtBlockReturn + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getLastCheckpointThresholdWeightAtBlockCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getLastCheckpointThresholdWeightAtBlockReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getLastCheckpointThresholdWeightAtBlock(uint32)"; + const SELECTOR: [u8; 4] = [30u8, 76u8, 216u8, 94u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._blockNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getLastCheckpointTotalWeight()` and selector `0x314f3a49`. + ```solidity + function getLastCheckpointTotalWeight() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastCheckpointTotalWeightCall {} + ///Container type for the return parameters of the [`getLastCheckpointTotalWeight()`](getLastCheckpointTotalWeightCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastCheckpointTotalWeightReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastCheckpointTotalWeightCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLastCheckpointTotalWeightCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastCheckpointTotalWeightReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLastCheckpointTotalWeightReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getLastCheckpointTotalWeightCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getLastCheckpointTotalWeightReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getLastCheckpointTotalWeight()"; + const SELECTOR: [u8; 4] = [49u8, 79u8, 58u8, 73u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getLastCheckpointTotalWeightAtBlock(uint32)` and selector `0x0dba3394`. + ```solidity + function getLastCheckpointTotalWeightAtBlock(uint32 _blockNumber) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastCheckpointTotalWeightAtBlockCall { + pub _blockNumber: u32, + } + ///Container type for the return parameters of the [`getLastCheckpointTotalWeightAtBlock(uint32)`](getLastCheckpointTotalWeightAtBlockCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastCheckpointTotalWeightAtBlockReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastCheckpointTotalWeightAtBlockCall) -> Self { + (value._blockNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLastCheckpointTotalWeightAtBlockCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _blockNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastCheckpointTotalWeightAtBlockReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLastCheckpointTotalWeightAtBlockReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getLastCheckpointTotalWeightAtBlockCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getLastCheckpointTotalWeightAtBlockReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getLastCheckpointTotalWeightAtBlock(uint32)"; + const SELECTOR: [u8; 4] = [13u8, 186u8, 51u8, 148u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._blockNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getLastestOperatorSigningKey(address)` and selector `0xcdcd3581`. + ```solidity + function getLastestOperatorSigningKey(address _operator) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastestOperatorSigningKeyCall { + pub _operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getLastestOperatorSigningKey(address)`](getLastestOperatorSigningKeyCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastestOperatorSigningKeyReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastestOperatorSigningKeyCall) -> Self { + (value._operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLastestOperatorSigningKeyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastestOperatorSigningKeyReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLastestOperatorSigningKeyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getLastestOperatorSigningKeyCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getLastestOperatorSigningKeyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getLastestOperatorSigningKey(address)"; + const SELECTOR: [u8; 4] = [205u8, 205u8, 53u8, 129u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorSigningKeyAtBlock(address,uint256)` and selector `0x5e1042e8`. + ```solidity + function getOperatorSigningKeyAtBlock(address _operator, uint256 _blockNumber) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorSigningKeyAtBlockCall { + pub _operator: alloy::sol_types::private::Address, + pub _blockNumber: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getOperatorSigningKeyAtBlock(address,uint256)`](getOperatorSigningKeyAtBlockCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorSigningKeyAtBlockReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorSigningKeyAtBlockCall) -> Self { + (value._operator, value._blockNumber) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorSigningKeyAtBlockCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _operator: tuple.0, + _blockNumber: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorSigningKeyAtBlockReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorSigningKeyAtBlockReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorSigningKeyAtBlockCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorSigningKeyAtBlockReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorSigningKeyAtBlock(address,uint256)"; + const SELECTOR: [u8; 4] = [94u8, 16u8, 66u8, 232u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + as alloy_sol_types::SolType>::tokenize( + &self._blockNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorWeight(address)` and selector `0x98ec1ac9`. + ```solidity + function getOperatorWeight(address _operator) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorWeightCall { + pub _operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getOperatorWeight(address)`](getOperatorWeightCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorWeightReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorWeightCall) -> Self { + (value._operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorWeightCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorWeightReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorWeightReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorWeightCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorWeightReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorWeight(address)"; + const SELECTOR: [u8; 4] = [152u8, 236u8, 26u8, 201u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorWeightAtBlock(address,uint32)` and selector `0x955f2d90`. + ```solidity + function getOperatorWeightAtBlock(address _operator, uint32 _blockNumber) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorWeightAtBlockCall { + pub _operator: alloy::sol_types::private::Address, + pub _blockNumber: u32, + } + ///Container type for the return parameters of the [`getOperatorWeightAtBlock(address,uint32)`](getOperatorWeightAtBlockCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorWeightAtBlockReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorWeightAtBlockCall) -> Self { + (value._operator, value._blockNumber) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorWeightAtBlockCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _operator: tuple.0, + _blockNumber: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorWeightAtBlockReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorWeightAtBlockReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorWeightAtBlockCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorWeightAtBlockReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorWeightAtBlock(address,uint32)"; + const SELECTOR: [u8; 4] = [149u8, 95u8, 45u8, 144u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + as alloy_sol_types::SolType>::tokenize( + &self._blockNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `initialize(address,uint256,((address,uint96)[]))` and selector `0xab118995`. + ```solidity + function initialize(address _serviceManager, uint256 _thresholdWeight, Quorum memory _quorum) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeCall { + pub _serviceManager: alloy::sol_types::private::Address, + pub _thresholdWeight: alloy::sol_types::private::primitives::aliases::U256, + pub _quorum: ::RustType, + } + ///Container type for the return parameters of the [`initialize(address,uint256,((address,uint96)[]))`](initializeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + Quorum, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeCall) -> Self { + (value._serviceManager, value._thresholdWeight, value._quorum) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _serviceManager: tuple.0, + _thresholdWeight: tuple.1, + _quorum: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for initializeCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + Quorum, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = initializeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "initialize(address,uint256,((address,uint96)[]))"; + const SELECTOR: [u8; 4] = [171u8, 17u8, 137u8, 149u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._serviceManager, + ), + as alloy_sol_types::SolType>::tokenize( + &self._thresholdWeight, + ), + ::tokenize(&self._quorum), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `isValidSignature(bytes32,bytes)` and selector `0x1626ba7e`. + ```solidity + function isValidSignature(bytes32 _dataHash, bytes memory _signatureData) external view returns (bytes4); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isValidSignatureCall { + pub _dataHash: alloy::sol_types::private::FixedBytes<32>, + pub _signatureData: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`isValidSignature(bytes32,bytes)`](isValidSignatureCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isValidSignatureReturn { + pub _0: alloy::sol_types::private::FixedBytes<4>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isValidSignatureCall) -> Self { + (value._dataHash, value._signatureData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isValidSignatureCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _dataHash: tuple.0, + _signatureData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isValidSignatureReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isValidSignatureReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for isValidSignatureCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = isValidSignatureReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "isValidSignature(bytes32,bytes)"; + const SELECTOR: [u8; 4] = [22u8, 38u8, 186u8, 126u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._dataHash), + ::tokenize( + &self._signatureData, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `minimumWeight()` and selector `0x40bf2fb7`. + ```solidity + function minimumWeight() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct minimumWeightCall {} + ///Container type for the return parameters of the [`minimumWeight()`](minimumWeightCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct minimumWeightReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: minimumWeightCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for minimumWeightCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: minimumWeightReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for minimumWeightReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for minimumWeightCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = minimumWeightReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "minimumWeight()"; + const SELECTOR: [u8; 4] = [64u8, 191u8, 47u8, 183u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `operatorRegistered(address)` and selector `0xec7fbb31`. + ```solidity + function operatorRegistered(address _operator) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorRegisteredCall { + pub _operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`operatorRegistered(address)`](operatorRegisteredCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorRegisteredReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorRegisteredCall) -> Self { + (value._operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorRegisteredCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorRegisteredReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorRegisteredReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for operatorRegisteredCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = operatorRegisteredReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "operatorRegistered(address)"; + const SELECTOR: [u8; 4] = [236u8, 127u8, 187u8, 49u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. + ```solidity + function owner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `permitOperator(address)` and selector `0x58c1eb17`. + ```solidity + function permitOperator(address _operator) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permitOperatorCall { + pub _operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`permitOperator(address)`](permitOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permitOperatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permitOperatorCall) -> Self { + (value._operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permitOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permitOperatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permitOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for permitOperatorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = permitOperatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "permitOperator(address)"; + const SELECTOR: [u8; 4] = [88u8, 193u8, 235u8, 23u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `quorum()` and selector `0x1703a018`. + ```solidity + function quorum() external view returns (Quorum memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct quorumCall {} + ///Container type for the return parameters of the [`quorum()`](quorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct quorumReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: quorumCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for quorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Quorum,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: quorumReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for quorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for quorumCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = quorumReturn; + type ReturnTuple<'a> = (Quorum,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "quorum()"; + const SELECTOR: [u8; 4] = [23u8, 3u8, 160u8, 24u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registerOperatorWithSignature((bytes,bytes32,uint256),address)` and selector `0x3d5611f6`. + ```solidity + function registerOperatorWithSignature(ISignatureUtils.SignatureWithSaltAndExpiry memory _operatorSignature, address _signingKey) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorWithSignatureCall { + pub _operatorSignature: + ::RustType, + pub _signingKey: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`registerOperatorWithSignature((bytes,bytes32,uint256),address)`](registerOperatorWithSignatureCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorWithSignatureReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + ISignatureUtils::SignatureWithSaltAndExpiry, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorWithSignatureCall) -> Self { + (value._operatorSignature, value._signingKey) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorWithSignatureCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _operatorSignature: tuple.0, + _signingKey: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorWithSignatureReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorWithSignatureReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registerOperatorWithSignatureCall { + type Parameters<'a> = ( + ISignatureUtils::SignatureWithSaltAndExpiry, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registerOperatorWithSignatureReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "registerOperatorWithSignature((bytes,bytes32,uint256),address)"; + const SELECTOR: [u8; 4] = [61u8, 86u8, 17u8, 246u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operatorSignature, + ), + ::tokenize( + &self._signingKey, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `renounceOwnership()` and selector `0x715018a6`. + ```solidity + function renounceOwnership() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct renounceOwnershipCall {} + ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct renounceOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for renounceOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for renounceOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for renounceOwnershipCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = renounceOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "renounceOwnership()"; + const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `revokeOperator(address)` and selector `0xfad8b32a`. + ```solidity + function revokeOperator(address _operator) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct revokeOperatorCall { + pub _operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`revokeOperator(address)`](revokeOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct revokeOperatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: revokeOperatorCall) -> Self { + (value._operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for revokeOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: revokeOperatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for revokeOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for revokeOperatorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = revokeOperatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "revokeOperator(address)"; + const SELECTOR: [u8; 4] = [250u8, 216u8, 179u8, 42u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. + ```solidity + function transferOwnership(address newOwner) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateMinimumWeight(uint256,address[])` and selector `0x696255be`. + ```solidity + function updateMinimumWeight(uint256 _newMinimumWeight, address[] memory _operators) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateMinimumWeightCall { + pub _newMinimumWeight: alloy::sol_types::private::primitives::aliases::U256, + pub _operators: alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`updateMinimumWeight(uint256,address[])`](updateMinimumWeightCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateMinimumWeightReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateMinimumWeightCall) -> Self { + (value._newMinimumWeight, value._operators) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateMinimumWeightCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _newMinimumWeight: tuple.0, + _operators: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateMinimumWeightReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateMinimumWeightReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateMinimumWeightCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Array, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateMinimumWeightReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateMinimumWeight(uint256,address[])"; + const SELECTOR: [u8; 4] = [105u8, 98u8, 85u8, 190u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._newMinimumWeight), + as alloy_sol_types::SolType>::tokenize(&self._operators), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateOperatorSigningKey(address)` and selector `0x743c31f4`. + ```solidity + function updateOperatorSigningKey(address _newSigningKey) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorSigningKeyCall { + pub _newSigningKey: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`updateOperatorSigningKey(address)`](updateOperatorSigningKeyCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorSigningKeyReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorSigningKeyCall) -> Self { + (value._newSigningKey,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorSigningKeyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _newSigningKey: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorSigningKeyReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorSigningKeyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateOperatorSigningKeyCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateOperatorSigningKeyReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateOperatorSigningKey(address)"; + const SELECTOR: [u8; 4] = [116u8, 60u8, 49u8, 244u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._newSigningKey, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateOperators(address[])` and selector `0x00cf2ab5`. + ```solidity + function updateOperators(address[] memory _operators) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorsCall { + pub _operators: alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`updateOperators(address[])`](updateOperatorsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorsReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorsCall) -> Self { + (value._operators,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _operators: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorsReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateOperatorsCall { + type Parameters<'a> = + (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateOperatorsReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateOperators(address[])"; + const SELECTOR: [u8; 4] = [0u8, 207u8, 42u8, 181u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( as alloy_sol_types::SolType>::tokenize( + &self._operators + ),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateOperatorsForQuorum(address[][],bytes)` and selector `0x5140a548`. + ```solidity + function updateOperatorsForQuorum(address[][] memory operatorsPerQuorum, bytes memory) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorsForQuorumCall { + pub operatorsPerQuorum: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec, + >, + pub _1: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`updateOperatorsForQuorum(address[][],bytes)`](updateOperatorsForQuorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorsForQuorumReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array, + >, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec, + >, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorsForQuorumCall) -> Self { + (value.operatorsPerQuorum, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorsForQuorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorsPerQuorum: tuple.0, + _1: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorsForQuorumReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorsForQuorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateOperatorsForQuorumCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array, + >, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateOperatorsForQuorumReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateOperatorsForQuorum(address[][],bytes)"; + const SELECTOR: [u8; 4] = [81u8, 64u8, 165u8, 72u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + , + > as alloy_sol_types::SolType>::tokenize( + &self.operatorsPerQuorum + ), + ::tokenize( + &self._1, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateQuorumConfig(((address,uint96)[]),address[])` and selector `0xdec5d1f6`. + ```solidity + function updateQuorumConfig(Quorum memory _quorum, address[] memory _operators) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateQuorumConfigCall { + pub _quorum: ::RustType, + pub _operators: alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`updateQuorumConfig(((address,uint96)[]),address[])`](updateQuorumConfigCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateQuorumConfigReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Quorum, + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateQuorumConfigCall) -> Self { + (value._quorum, value._operators) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateQuorumConfigCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _quorum: tuple.0, + _operators: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateQuorumConfigReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateQuorumConfigReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateQuorumConfigCall { + type Parameters<'a> = ( + Quorum, + alloy::sol_types::sol_data::Array, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateQuorumConfigReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateQuorumConfig(((address,uint96)[]),address[])"; + const SELECTOR: [u8; 4] = [222u8, 197u8, 209u8, 246u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self._quorum), + as alloy_sol_types::SolType>::tokenize(&self._operators), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateStakeThreshold(uint256)` and selector `0x5ef53329`. + ```solidity + function updateStakeThreshold(uint256 _thresholdWeight) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateStakeThresholdCall { + pub _thresholdWeight: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`updateStakeThreshold(uint256)`](updateStakeThresholdCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateStakeThresholdReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateStakeThresholdCall) -> Self { + (value._thresholdWeight,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateStakeThresholdCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _thresholdWeight: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateStakeThresholdReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateStakeThresholdReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateStakeThresholdCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateStakeThresholdReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateStakeThreshold(uint256)"; + const SELECTOR: [u8; 4] = [94u8, 245u8, 51u8, 41u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._thresholdWeight, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`ECDSAStakeRegistryEqualWeight`](self) function calls. + pub enum ECDSAStakeRegistryEqualWeightCalls { + allowlistedOperators(allowlistedOperatorsCall), + deregisterOperator(deregisterOperatorCall), + ejectOperator(ejectOperatorCall), + getLastCheckpointOperatorWeight(getLastCheckpointOperatorWeightCall), + getLastCheckpointThresholdWeight(getLastCheckpointThresholdWeightCall), + getLastCheckpointThresholdWeightAtBlock(getLastCheckpointThresholdWeightAtBlockCall), + getLastCheckpointTotalWeight(getLastCheckpointTotalWeightCall), + getLastCheckpointTotalWeightAtBlock(getLastCheckpointTotalWeightAtBlockCall), + getLastestOperatorSigningKey(getLastestOperatorSigningKeyCall), + getOperatorSigningKeyAtBlock(getOperatorSigningKeyAtBlockCall), + getOperatorWeight(getOperatorWeightCall), + getOperatorWeightAtBlock(getOperatorWeightAtBlockCall), + initialize(initializeCall), + isValidSignature(isValidSignatureCall), + minimumWeight(minimumWeightCall), + operatorRegistered(operatorRegisteredCall), + owner(ownerCall), + permitOperator(permitOperatorCall), + quorum(quorumCall), + registerOperatorWithSignature(registerOperatorWithSignatureCall), + renounceOwnership(renounceOwnershipCall), + revokeOperator(revokeOperatorCall), + transferOwnership(transferOwnershipCall), + updateMinimumWeight(updateMinimumWeightCall), + updateOperatorSigningKey(updateOperatorSigningKeyCall), + updateOperators(updateOperatorsCall), + updateOperatorsForQuorum(updateOperatorsForQuorumCall), + updateQuorumConfig(updateQuorumConfigCall), + updateStakeThreshold(updateStakeThresholdCall), + } + #[automatically_derived] + impl ECDSAStakeRegistryEqualWeightCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [0u8, 207u8, 42u8, 181u8], + [13u8, 186u8, 51u8, 148u8], + [22u8, 38u8, 186u8, 126u8], + [23u8, 3u8, 160u8, 24u8], + [30u8, 76u8, 216u8, 94u8], + [49u8, 79u8, 58u8, 73u8], + [59u8, 36u8, 46u8, 74u8], + [61u8, 86u8, 17u8, 246u8], + [64u8, 191u8, 47u8, 183u8], + [81u8, 64u8, 165u8, 72u8], + [88u8, 193u8, 235u8, 23u8], + [94u8, 16u8, 66u8, 232u8], + [94u8, 245u8, 51u8, 41u8], + [105u8, 98u8, 85u8, 190u8], + [109u8, 91u8, 233u8, 38u8], + [113u8, 80u8, 24u8, 166u8], + [116u8, 60u8, 49u8, 244u8], + [133u8, 125u8, 193u8, 144u8], + [141u8, 165u8, 203u8, 91u8], + [149u8, 95u8, 45u8, 144u8], + [152u8, 236u8, 26u8, 201u8], + [171u8, 17u8, 137u8, 149u8], + [185u8, 51u8, 250u8, 116u8], + [205u8, 205u8, 53u8, 129u8], + [222u8, 197u8, 209u8, 246u8], + [229u8, 217u8, 143u8, 148u8], + [236u8, 127u8, 187u8, 49u8], + [242u8, 253u8, 227u8, 139u8], + [250u8, 216u8, 179u8, 42u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ECDSAStakeRegistryEqualWeightCalls { + const NAME: &'static str = "ECDSAStakeRegistryEqualWeightCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 29usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::allowlistedOperators(_) => { + ::SELECTOR + } + Self::deregisterOperator(_) => { + ::SELECTOR + } + Self::ejectOperator(_) => { + ::SELECTOR + } + Self::getLastCheckpointOperatorWeight(_) => { + ::SELECTOR + } + Self::getLastCheckpointThresholdWeight(_) => { + ::SELECTOR + } + Self::getLastCheckpointThresholdWeightAtBlock(_) => { + ::SELECTOR + } + Self::getLastCheckpointTotalWeight(_) => { + ::SELECTOR + } + Self::getLastCheckpointTotalWeightAtBlock(_) => { + ::SELECTOR + } + Self::getLastestOperatorSigningKey(_) => { + ::SELECTOR + } + Self::getOperatorSigningKeyAtBlock(_) => { + ::SELECTOR + } + Self::getOperatorWeight(_) => { + ::SELECTOR + } + Self::getOperatorWeightAtBlock(_) => { + ::SELECTOR + } + Self::initialize(_) => { + ::SELECTOR + } + Self::isValidSignature(_) => { + ::SELECTOR + } + Self::minimumWeight(_) => { + ::SELECTOR + } + Self::operatorRegistered(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::permitOperator(_) => { + ::SELECTOR + } + Self::quorum(_) => ::SELECTOR, + Self::registerOperatorWithSignature(_) => { + ::SELECTOR + } + Self::renounceOwnership(_) => { + ::SELECTOR + } + Self::revokeOperator(_) => { + ::SELECTOR + } + Self::transferOwnership(_) => { + ::SELECTOR + } + Self::updateMinimumWeight(_) => { + ::SELECTOR + } + Self::updateOperatorSigningKey(_) => { + ::SELECTOR + } + Self::updateOperators(_) => { + ::SELECTOR + } + Self::updateOperatorsForQuorum(_) => { + ::SELECTOR + } + Self::updateQuorumConfig(_) => { + ::SELECTOR + } + Self::updateStakeThreshold(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result< + ECDSAStakeRegistryEqualWeightCalls, + >] = &[ + { + fn updateOperators( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEqualWeightCalls::updateOperators) + } + updateOperators + }, + { + fn getLastCheckpointTotalWeightAtBlock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + ECDSAStakeRegistryEqualWeightCalls::getLastCheckpointTotalWeightAtBlock, + ) + } + getLastCheckpointTotalWeightAtBlock + }, + { + fn isValidSignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEqualWeightCalls::isValidSignature) + } + isValidSignature + }, + { + fn quorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(ECDSAStakeRegistryEqualWeightCalls::quorum) + } + quorum + }, + { + fn getLastCheckpointThresholdWeightAtBlock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + ECDSAStakeRegistryEqualWeightCalls::getLastCheckpointThresholdWeightAtBlock, + ) + } + getLastCheckpointThresholdWeightAtBlock + }, + { + fn getLastCheckpointTotalWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + ECDSAStakeRegistryEqualWeightCalls::getLastCheckpointTotalWeight, + ) + } + getLastCheckpointTotalWeight + }, + { + fn getLastCheckpointOperatorWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + ECDSAStakeRegistryEqualWeightCalls::getLastCheckpointOperatorWeight, + ) + } + getLastCheckpointOperatorWeight + }, + { + fn registerOperatorWithSignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + ECDSAStakeRegistryEqualWeightCalls::registerOperatorWithSignature, + ) + } + registerOperatorWithSignature + }, + { + fn minimumWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEqualWeightCalls::minimumWeight) + } + minimumWeight + }, + { + fn updateOperatorsForQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEqualWeightCalls::updateOperatorsForQuorum) + } + updateOperatorsForQuorum + }, + { + fn permitOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEqualWeightCalls::permitOperator) + } + permitOperator + }, + { + fn getOperatorSigningKeyAtBlock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + ECDSAStakeRegistryEqualWeightCalls::getOperatorSigningKeyAtBlock, + ) + } + getOperatorSigningKeyAtBlock + }, + { + fn updateStakeThreshold( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEqualWeightCalls::updateStakeThreshold) + } + updateStakeThreshold + }, + { + fn updateMinimumWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEqualWeightCalls::updateMinimumWeight) + } + updateMinimumWeight + }, + { + fn allowlistedOperators( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEqualWeightCalls::allowlistedOperators) + } + allowlistedOperators + }, + { + fn renounceOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEqualWeightCalls::renounceOwnership) + } + renounceOwnership + }, + { + fn updateOperatorSigningKey( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEqualWeightCalls::updateOperatorSigningKey) + } + updateOperatorSigningKey + }, + { + fn deregisterOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEqualWeightCalls::deregisterOperator) + } + deregisterOperator + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(ECDSAStakeRegistryEqualWeightCalls::owner) + } + owner + }, + { + fn getOperatorWeightAtBlock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEqualWeightCalls::getOperatorWeightAtBlock) + } + getOperatorWeightAtBlock + }, + { + fn getOperatorWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEqualWeightCalls::getOperatorWeight) + } + getOperatorWeight + }, + { + fn initialize( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(ECDSAStakeRegistryEqualWeightCalls::initialize) + } + initialize + }, + { + fn getLastCheckpointThresholdWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + ECDSAStakeRegistryEqualWeightCalls::getLastCheckpointThresholdWeight, + ) + } + getLastCheckpointThresholdWeight + }, + { + fn getLastestOperatorSigningKey( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + ECDSAStakeRegistryEqualWeightCalls::getLastestOperatorSigningKey, + ) + } + getLastestOperatorSigningKey + }, + { + fn updateQuorumConfig( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEqualWeightCalls::updateQuorumConfig) + } + updateQuorumConfig + }, + { + fn ejectOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEqualWeightCalls::ejectOperator) + } + ejectOperator + }, + { + fn operatorRegistered( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEqualWeightCalls::operatorRegistered) + } + operatorRegistered + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEqualWeightCalls::transferOwnership) + } + transferOwnership + }, + { + fn revokeOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEqualWeightCalls::revokeOperator) + } + revokeOperator + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::allowlistedOperators(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::deregisterOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::ejectOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getLastCheckpointOperatorWeight(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getLastCheckpointThresholdWeight(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getLastCheckpointThresholdWeightAtBlock(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getLastCheckpointTotalWeight(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getLastCheckpointTotalWeightAtBlock(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getLastestOperatorSigningKey(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorSigningKeyAtBlock(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorWeight(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorWeightAtBlock(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::initialize(inner) => { + ::abi_encoded_size(inner) + } + Self::isValidSignature(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::minimumWeight(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::operatorRegistered(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::permitOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::quorum(inner) => { + ::abi_encoded_size(inner) + } + Self::registerOperatorWithSignature(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::renounceOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::revokeOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::updateMinimumWeight(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::updateOperatorSigningKey(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::updateOperators(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::updateOperatorsForQuorum(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::updateQuorumConfig(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::updateStakeThreshold(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::allowlistedOperators(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::deregisterOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::ejectOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getLastCheckpointOperatorWeight(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getLastCheckpointThresholdWeight(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getLastCheckpointThresholdWeightAtBlock(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getLastCheckpointTotalWeight(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getLastCheckpointTotalWeightAtBlock(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getLastestOperatorSigningKey(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperatorSigningKeyAtBlock(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperatorWeight(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperatorWeightAtBlock(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::initialize(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::isValidSignature(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::minimumWeight(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::operatorRegistered(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::permitOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::quorum(inner) => { + ::abi_encode_raw(inner, out) + } + Self::registerOperatorWithSignature(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::renounceOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::revokeOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::updateMinimumWeight(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::updateOperatorSigningKey(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::updateOperators(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::updateOperatorsForQuorum(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::updateQuorumConfig(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::updateStakeThreshold(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`ECDSAStakeRegistryEqualWeight`](self) custom errors. + pub enum ECDSAStakeRegistryEqualWeightErrors { + InsufficientSignedStake(InsufficientSignedStake), + InsufficientWeight(InsufficientWeight), + InvalidLength(InvalidLength), + InvalidQuorum(InvalidQuorum), + InvalidReferenceBlock(InvalidReferenceBlock), + InvalidSignature(InvalidSignature), + InvalidSignedWeight(InvalidSignedWeight), + InvalidThreshold(InvalidThreshold), + LengthMismatch(LengthMismatch), + MustUpdateAllOperators(MustUpdateAllOperators), + NotSorted(NotSorted), + OperatorAlreadyAllowlisted(OperatorAlreadyAllowlisted), + OperatorAlreadyRegistered(OperatorAlreadyRegistered), + OperatorNotAllowlisted(OperatorNotAllowlisted), + OperatorNotRegistered(OperatorNotRegistered), + } + #[automatically_derived] + impl ECDSAStakeRegistryEqualWeightErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [37u8, 236u8, 108u8, 31u8], + [45u8, 61u8, 246u8, 182u8], + [66u8, 238u8, 104u8, 181u8], + [112u8, 31u8, 68u8, 38u8], + [139u8, 170u8, 87u8, 159u8], + [148u8, 125u8, 90u8, 132u8], + [150u8, 11u8, 65u8, 238u8], + [168u8, 121u8, 47u8, 209u8], + [170u8, 189u8, 90u8, 9u8], + [186u8, 80u8, 249u8, 17u8], + [209u8, 115u8, 87u8, 121u8], + [225u8, 33u8, 99u8, 47u8], + [230u8, 79u8, 24u8, 15u8], + [241u8, 235u8, 220u8, 194u8], + [255u8, 99u8, 58u8, 56u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ECDSAStakeRegistryEqualWeightErrors { + const NAME: &'static str = "ECDSAStakeRegistryEqualWeightErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 15usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::InsufficientSignedStake(_) => { + ::SELECTOR + } + Self::InsufficientWeight(_) => { + ::SELECTOR + } + Self::InvalidLength(_) => ::SELECTOR, + Self::InvalidQuorum(_) => ::SELECTOR, + Self::InvalidReferenceBlock(_) => { + ::SELECTOR + } + Self::InvalidSignature(_) => { + ::SELECTOR + } + Self::InvalidSignedWeight(_) => { + ::SELECTOR + } + Self::InvalidThreshold(_) => { + ::SELECTOR + } + Self::LengthMismatch(_) => ::SELECTOR, + Self::MustUpdateAllOperators(_) => { + ::SELECTOR + } + Self::NotSorted(_) => ::SELECTOR, + Self::OperatorAlreadyAllowlisted(_) => { + ::SELECTOR + } + Self::OperatorAlreadyRegistered(_) => { + ::SELECTOR + } + Self::OperatorNotAllowlisted(_) => { + ::SELECTOR + } + Self::OperatorNotRegistered(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result< + ECDSAStakeRegistryEqualWeightErrors, + >] = &[ + { + fn OperatorNotRegistered( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEqualWeightErrors::OperatorNotRegistered) + } + OperatorNotRegistered + }, + { + fn MustUpdateAllOperators( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEqualWeightErrors::MustUpdateAllOperators) + } + MustUpdateAllOperators + }, + { + fn OperatorAlreadyRegistered( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEqualWeightErrors::OperatorAlreadyRegistered) + } + OperatorAlreadyRegistered + }, + { + fn OperatorNotAllowlisted( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEqualWeightErrors::OperatorNotAllowlisted) + } + OperatorNotAllowlisted + }, + { + fn InvalidSignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEqualWeightErrors::InvalidSignature) + } + InvalidSignature + }, + { + fn InvalidLength( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(ECDSAStakeRegistryEqualWeightErrors::InvalidLength) + } + InvalidLength + }, + { + fn InvalidSignedWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEqualWeightErrors::InvalidSignedWeight) + } + InvalidSignedWeight + }, + { + fn InsufficientWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEqualWeightErrors::InsufficientWeight) + } + InsufficientWeight + }, + { + fn InvalidThreshold( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEqualWeightErrors::InvalidThreshold) + } + InvalidThreshold + }, + { + fn NotSorted( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(ECDSAStakeRegistryEqualWeightErrors::NotSorted) + } + NotSorted + }, + { + fn InvalidQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(ECDSAStakeRegistryEqualWeightErrors::InvalidQuorum) + } + InvalidQuorum + }, + { + fn InsufficientSignedStake( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEqualWeightErrors::InsufficientSignedStake) + } + InsufficientSignedStake + }, + { + fn InvalidReferenceBlock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEqualWeightErrors::InvalidReferenceBlock) + } + InvalidReferenceBlock + }, + { + fn OperatorAlreadyAllowlisted( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEqualWeightErrors::OperatorAlreadyAllowlisted) + } + OperatorAlreadyAllowlisted + }, + { + fn LengthMismatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEqualWeightErrors::LengthMismatch) + } + LengthMismatch + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::InsufficientSignedStake(inner) => { + ::abi_encoded_size(inner) + } + Self::InsufficientWeight(inner) => { + ::abi_encoded_size(inner) + } + Self::InvalidLength(inner) => { + ::abi_encoded_size(inner) + } + Self::InvalidQuorum(inner) => { + ::abi_encoded_size(inner) + } + Self::InvalidReferenceBlock(inner) => { + ::abi_encoded_size(inner) + } + Self::InvalidSignature(inner) => { + ::abi_encoded_size(inner) + } + Self::InvalidSignedWeight(inner) => { + ::abi_encoded_size(inner) + } + Self::InvalidThreshold(inner) => { + ::abi_encoded_size(inner) + } + Self::LengthMismatch(inner) => { + ::abi_encoded_size(inner) + } + Self::MustUpdateAllOperators(inner) => { + ::abi_encoded_size(inner) + } + Self::NotSorted(inner) => { + ::abi_encoded_size(inner) + } + Self::OperatorAlreadyAllowlisted(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::OperatorAlreadyRegistered(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::OperatorNotAllowlisted(inner) => { + ::abi_encoded_size(inner) + } + Self::OperatorNotRegistered(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::InsufficientSignedStake(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::InsufficientWeight(inner) => { + ::abi_encode_raw(inner, out) + } + Self::InvalidLength(inner) => { + ::abi_encode_raw(inner, out) + } + Self::InvalidQuorum(inner) => { + ::abi_encode_raw(inner, out) + } + Self::InvalidReferenceBlock(inner) => { + ::abi_encode_raw(inner, out) + } + Self::InvalidSignature(inner) => { + ::abi_encode_raw(inner, out) + } + Self::InvalidSignedWeight(inner) => { + ::abi_encode_raw(inner, out) + } + Self::InvalidThreshold(inner) => { + ::abi_encode_raw(inner, out) + } + Self::LengthMismatch(inner) => { + ::abi_encode_raw(inner, out) + } + Self::MustUpdateAllOperators(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::NotSorted(inner) => { + ::abi_encode_raw(inner, out) + } + Self::OperatorAlreadyAllowlisted(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::OperatorAlreadyRegistered(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::OperatorNotAllowlisted(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::OperatorNotRegistered(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`ECDSAStakeRegistryEqualWeight`](self) events. + pub enum ECDSAStakeRegistryEqualWeightEvents { + Initialized(Initialized), + MinimumWeightUpdated(MinimumWeightUpdated), + OperatorDeregistered(OperatorDeregistered), + OperatorEjected(OperatorEjected), + OperatorPermitted(OperatorPermitted), + OperatorRegistered(OperatorRegistered), + OperatorRevoked(OperatorRevoked), + OperatorWeightUpdated(OperatorWeightUpdated), + OwnershipTransferred(OwnershipTransferred), + QuorumUpdated(QuorumUpdated), + SigningKeyUpdate(SigningKeyUpdate), + ThresholdWeightUpdated(ThresholdWeightUpdated), + TotalWeightUpdated(TotalWeightUpdated), + UpdateMinimumWeight(UpdateMinimumWeight), + } + #[automatically_derived] + impl ECDSAStakeRegistryEqualWeightEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 30u8, 164u8, 33u8, 134u8, 179u8, 5u8, 250u8, 55u8, 49u8, 4u8, 80u8, 217u8, 251u8, + 135u8, 234u8, 30u8, 143u8, 12u8, 127u8, 68u8, 126u8, 119u8, 20u8, 121u8, 227u8, + 178u8, 118u8, 52u8, 191u8, 232u8, 77u8, 193u8, + ], + [ + 35u8, 170u8, 212u8, 230u8, 23u8, 68u8, 236u8, 225u8, 100u8, 19u8, 10u8, 164u8, + 21u8, 193u8, 97u8, 110u8, 128u8, 19u8, 107u8, 15u8, 7u8, 112u8, 229u8, 101u8, + 137u8, 67u8, 139u8, 144u8, 178u8, 105u8, 38u8, 94u8, + ], + [ + 49u8, 224u8, 173u8, 254u8, 199u8, 27u8, 204u8, 238u8, 55u8, 182u8, 232u8, 58u8, + 144u8, 194u8, 254u8, 219u8, 23u8, 216u8, 241u8, 105u8, 63u8, 238u8, 134u8, 60u8, + 71u8, 113u8, 231u8, 191u8, 226u8, 174u8, 213u8, 128u8, + ], + [ + 68u8, 204u8, 128u8, 20u8, 27u8, 71u8, 113u8, 124u8, 198u8, 14u8, 221u8, 58u8, + 213u8, 75u8, 56u8, 176u8, 14u8, 254u8, 159u8, 226u8, 59u8, 40u8, 152u8, 241u8, + 91u8, 207u8, 136u8, 75u8, 15u8, 58u8, 212u8, 149u8, + ], + [ + 113u8, 60u8, 165u8, 59u8, 136u8, 214u8, 235u8, 99u8, 245u8, 177u8, 133u8, 76u8, + 184u8, 203u8, 221u8, 115u8, 110u8, 197u8, 30u8, 218u8, 34u8, 94u8, 70u8, 121u8, + 26u8, 169u8, 41u8, 139u8, 1u8, 96u8, 100u8, 143u8, + ], + [ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, 56u8, + 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, 96u8, + 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ], + [ + 134u8, 220u8, 248u8, 107u8, 18u8, 223u8, 238u8, 222u8, 167u8, 74u8, 233u8, 48u8, + 13u8, 189u8, 170u8, 25u8, 59u8, 204u8, 229u8, 128u8, 147u8, 105u8, 200u8, 23u8, + 126u8, 162u8, 244u8, 234u8, 170u8, 101u8, 114u8, 155u8, + ], + [ + 136u8, 119u8, 13u8, 200u8, 98u8, 228u8, 122u8, 126u8, 213u8, 134u8, 144u8, 120u8, + 87u8, 235u8, 27u8, 117u8, 228u8, 197u8, 255u8, 200u8, 183u8, 7u8, 199u8, 238u8, + 16u8, 235u8, 116u8, 214u8, 136u8, 95u8, 229u8, 148u8, + ], + [ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, 208u8, + 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, 175u8, 227u8, + 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ], + [ + 147u8, 36u8, 247u8, 229u8, 167u8, 192u8, 40u8, 136u8, 8u8, 166u8, 52u8, 204u8, + 222u8, 68u8, 184u8, 233u8, 121u8, 103u8, 100u8, 116u8, 178u8, 46u8, 41u8, 238u8, + 157u8, 213u8, 105u8, 181u8, 94u8, 121u8, 26u8, 75u8, + ], + [ + 164u8, 83u8, 219u8, 97u8, 42u8, 245u8, 158u8, 85u8, 33u8, 214u8, 171u8, 146u8, + 132u8, 220u8, 62u8, 45u8, 6u8, 175u8, 40u8, 110u8, 177u8, 177u8, 183u8, 183u8, + 113u8, 252u8, 228u8, 113u8, 108u8, 25u8, 242u8, 193u8, + ], + [ + 165u8, 243u8, 183u8, 98u8, 111u8, 216u8, 111u8, 249u8, 137u8, 241u8, 210u8, 44u8, + 243u8, 212u8, 29u8, 116u8, 89u8, 30u8, 166u8, 235u8, 153u8, 36u8, 16u8, 121u8, + 64u8, 11u8, 12u8, 51u8, 42u8, 154u8, 143u8, 17u8, + ], + [ + 208u8, 97u8, 22u8, 130u8, 82u8, 244u8, 65u8, 115u8, 54u8, 88u8, 240u8, 158u8, 77u8, + 143u8, 91u8, 45u8, 153u8, 142u8, 212u8, 239u8, 36u8, 162u8, 187u8, 253u8, 108u8, + 236u8, 165u8, 46u8, 161u8, 49u8, 80u8, 2u8, + ], + [ + 233u8, 188u8, 142u8, 176u8, 12u8, 7u8, 102u8, 215u8, 137u8, 236u8, 186u8, 0u8, + 15u8, 88u8, 84u8, 6u8, 7u8, 91u8, 5u8, 59u8, 241u8, 132u8, 42u8, 161u8, 157u8, + 74u8, 245u8, 44u8, 82u8, 188u8, 105u8, 32u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for ECDSAStakeRegistryEqualWeightEvents { + const NAME: &'static str = "ECDSAStakeRegistryEqualWeightEvents"; + const COUNT: usize = 14usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::Initialized) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::MinimumWeightUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorDeregistered) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorEjected) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorPermitted) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorRegistered) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorRevoked) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorWeightUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OwnershipTransferred) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::QuorumUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::SigningKeyUpdate) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ThresholdWeightUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::TotalWeightUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::UpdateMinimumWeight) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ECDSAStakeRegistryEqualWeightEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::MinimumWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorDeregistered(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorEjected(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorPermitted(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorRegistered(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorRevoked(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::QuorumUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::SigningKeyUpdate(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ThresholdWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::TotalWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::UpdateMinimumWeight(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::MinimumWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorDeregistered(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorEjected(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorPermitted(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorRegistered(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorRevoked(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::QuorumUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::SigningKeyUpdate(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ThresholdWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::TotalWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::UpdateMinimumWeight(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ECDSAStakeRegistryEqualWeight`](self) contract instance. + + See the [wrapper's documentation](`ECDSAStakeRegistryEqualWeightInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ECDSAStakeRegistryEqualWeightInstance { + ECDSAStakeRegistryEqualWeightInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _delegationManager: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + ECDSAStakeRegistryEqualWeightInstance::::deploy(provider, _delegationManager) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _delegationManager: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + ECDSAStakeRegistryEqualWeightInstance::::deploy_builder( + provider, + _delegationManager, + ) + } + /**A [`ECDSAStakeRegistryEqualWeight`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ECDSAStakeRegistryEqualWeight`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ECDSAStakeRegistryEqualWeightInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ECDSAStakeRegistryEqualWeightInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ECDSAStakeRegistryEqualWeightInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ECDSAStakeRegistryEqualWeightInstance + { + /**Creates a new wrapper around an on-chain [`ECDSAStakeRegistryEqualWeight`](self) contract instance. + + See the [wrapper's documentation](`ECDSAStakeRegistryEqualWeightInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _delegationManager: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, _delegationManager); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _delegationManager: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode(&constructorCall { + _delegationManager, + })[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ECDSAStakeRegistryEqualWeightInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ECDSAStakeRegistryEqualWeightInstance { + ECDSAStakeRegistryEqualWeightInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ECDSAStakeRegistryEqualWeightInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`allowlistedOperators`] function. + pub fn allowlistedOperators( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&allowlistedOperatorsCall { _0 }) + } + ///Creates a new call builder for the [`deregisterOperator`] function. + pub fn deregisterOperator( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&deregisterOperatorCall {}) + } + ///Creates a new call builder for the [`ejectOperator`] function. + pub fn ejectOperator( + &self, + _operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&ejectOperatorCall { _operator }) + } + ///Creates a new call builder for the [`getLastCheckpointOperatorWeight`] function. + pub fn getLastCheckpointOperatorWeight( + &self, + _operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getLastCheckpointOperatorWeightCall { _operator }) + } + ///Creates a new call builder for the [`getLastCheckpointThresholdWeight`] function. + pub fn getLastCheckpointThresholdWeight( + &self, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&getLastCheckpointThresholdWeightCall {}) + } + ///Creates a new call builder for the [`getLastCheckpointThresholdWeightAtBlock`] function. + pub fn getLastCheckpointThresholdWeightAtBlock( + &self, + _blockNumber: u32, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&getLastCheckpointThresholdWeightAtBlockCall { _blockNumber }) + } + ///Creates a new call builder for the [`getLastCheckpointTotalWeight`] function. + pub fn getLastCheckpointTotalWeight( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getLastCheckpointTotalWeightCall {}) + } + ///Creates a new call builder for the [`getLastCheckpointTotalWeightAtBlock`] function. + pub fn getLastCheckpointTotalWeightAtBlock( + &self, + _blockNumber: u32, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&getLastCheckpointTotalWeightAtBlockCall { _blockNumber }) + } + ///Creates a new call builder for the [`getLastestOperatorSigningKey`] function. + pub fn getLastestOperatorSigningKey( + &self, + _operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getLastestOperatorSigningKeyCall { _operator }) + } + ///Creates a new call builder for the [`getOperatorSigningKeyAtBlock`] function. + pub fn getOperatorSigningKeyAtBlock( + &self, + _operator: alloy::sol_types::private::Address, + _blockNumber: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorSigningKeyAtBlockCall { + _operator, + _blockNumber, + }) + } + ///Creates a new call builder for the [`getOperatorWeight`] function. + pub fn getOperatorWeight( + &self, + _operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorWeightCall { _operator }) + } + ///Creates a new call builder for the [`getOperatorWeightAtBlock`] function. + pub fn getOperatorWeightAtBlock( + &self, + _operator: alloy::sol_types::private::Address, + _blockNumber: u32, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorWeightAtBlockCall { + _operator, + _blockNumber, + }) + } + ///Creates a new call builder for the [`initialize`] function. + pub fn initialize( + &self, + _serviceManager: alloy::sol_types::private::Address, + _thresholdWeight: alloy::sol_types::private::primitives::aliases::U256, + _quorum: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initializeCall { + _serviceManager, + _thresholdWeight, + _quorum, + }) + } + ///Creates a new call builder for the [`isValidSignature`] function. + pub fn isValidSignature( + &self, + _dataHash: alloy::sol_types::private::FixedBytes<32>, + _signatureData: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&isValidSignatureCall { + _dataHash, + _signatureData, + }) + } + ///Creates a new call builder for the [`minimumWeight`] function. + pub fn minimumWeight(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&minimumWeightCall {}) + } + ///Creates a new call builder for the [`operatorRegistered`] function. + pub fn operatorRegistered( + &self, + _operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&operatorRegisteredCall { _operator }) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`permitOperator`] function. + pub fn permitOperator( + &self, + _operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&permitOperatorCall { _operator }) + } + ///Creates a new call builder for the [`quorum`] function. + pub fn quorum(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&quorumCall {}) + } + ///Creates a new call builder for the [`registerOperatorWithSignature`] function. + pub fn registerOperatorWithSignature( + &self, + _operatorSignature: ::RustType, + _signingKey: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterOperatorWithSignatureCall { + _operatorSignature, + _signingKey, + }) + } + ///Creates a new call builder for the [`renounceOwnership`] function. + pub fn renounceOwnership( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&renounceOwnershipCall {}) + } + ///Creates a new call builder for the [`revokeOperator`] function. + pub fn revokeOperator( + &self, + _operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&revokeOperatorCall { _operator }) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + ///Creates a new call builder for the [`updateMinimumWeight`] function. + pub fn updateMinimumWeight( + &self, + _newMinimumWeight: alloy::sol_types::private::primitives::aliases::U256, + _operators: alloy::sol_types::private::Vec, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateMinimumWeightCall { + _newMinimumWeight, + _operators, + }) + } + ///Creates a new call builder for the [`updateOperatorSigningKey`] function. + pub fn updateOperatorSigningKey( + &self, + _newSigningKey: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateOperatorSigningKeyCall { _newSigningKey }) + } + ///Creates a new call builder for the [`updateOperators`] function. + pub fn updateOperators( + &self, + _operators: alloy::sol_types::private::Vec, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateOperatorsCall { _operators }) + } + ///Creates a new call builder for the [`updateOperatorsForQuorum`] function. + pub fn updateOperatorsForQuorum( + &self, + operatorsPerQuorum: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec, + >, + _1: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateOperatorsForQuorumCall { + operatorsPerQuorum, + _1, + }) + } + ///Creates a new call builder for the [`updateQuorumConfig`] function. + pub fn updateQuorumConfig( + &self, + _quorum: ::RustType, + _operators: alloy::sol_types::private::Vec, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateQuorumConfigCall { + _quorum, + _operators, + }) + } + ///Creates a new call builder for the [`updateStakeThreshold`] function. + pub fn updateStakeThreshold( + &self, + _thresholdWeight: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateStakeThresholdCall { _thresholdWeight }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ECDSAStakeRegistryEqualWeightInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Initialized`] event. + pub fn Initialized_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`MinimumWeightUpdated`] event. + pub fn MinimumWeightUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorDeregistered`] event. + pub fn OperatorDeregistered_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorEjected`] event. + pub fn OperatorEjected_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorPermitted`] event. + pub fn OperatorPermitted_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorRegistered`] event. + pub fn OperatorRegistered_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorRevoked`] event. + pub fn OperatorRevoked_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorWeightUpdated`] event. + pub fn OperatorWeightUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`QuorumUpdated`] event. + pub fn QuorumUpdated_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`SigningKeyUpdate`] event. + pub fn SigningKeyUpdate_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ThresholdWeightUpdated`] event. + pub fn ThresholdWeightUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`TotalWeightUpdated`] event. + pub fn TotalWeightUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`UpdateMinimumWeight`] event. + pub fn UpdateMinimumWeight_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/ecdsastakeregistryeventsanderrors.rs b/crates/utils/src/ecdsastakeregistryeventsanderrors.rs new file mode 100644 index 00000000..d9e8ff3e --- /dev/null +++ b/crates/utils/src/ecdsastakeregistryeventsanderrors.rs @@ -0,0 +1,3159 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ECDSAStakeRegistryEventsAndErrors { + struct Quorum { + StrategyParams[] strategies; + } + struct StrategyParams { + address strategy; + uint96 multiplier; + } + + error InsufficientSignedStake(); + error InsufficientWeight(); + error InvalidLength(); + error InvalidQuorum(); + error InvalidReferenceBlock(); + error InvalidSignature(); + error InvalidSignedWeight(); + error InvalidThreshold(); + error LengthMismatch(); + error MustUpdateAllOperators(); + error NotSorted(); + error OperatorAlreadyRegistered(); + error OperatorNotRegistered(); + + event MinimumWeightUpdated(uint256 _old, uint256 _new); + event OperatorDeregistered(address indexed _operator, address indexed _avs); + event OperatorRegistered(address indexed _operator, address indexed _avs); + event OperatorWeightUpdated(address indexed _operator, uint256 oldWeight, uint256 newWeight); + event QuorumUpdated(Quorum _old, Quorum _new); + event SigningKeyUpdate(address indexed operator, uint256 indexed updateBlock, address indexed newSigningKey, address oldSigningKey); + event ThresholdWeightUpdated(uint256 _thresholdWeight); + event TotalWeightUpdated(uint256 oldTotalWeight, uint256 newTotalWeight); + event UpdateMinimumWeight(uint256 oldMinimumWeight, uint256 newMinimumWeight); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "event", + "name": "MinimumWeightUpdated", + "inputs": [ + { + "name": "_old", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "_new", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorDeregistered", + "inputs": [ + { + "name": "_operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_avs", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorRegistered", + "inputs": [ + { + "name": "_operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_avs", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorWeightUpdated", + "inputs": [ + { + "name": "_operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "oldWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "newWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "QuorumUpdated", + "inputs": [ + { + "name": "_old", + "type": "tuple", + "indexed": false, + "internalType": "struct Quorum", + "components": [ + { + "name": "strategies", + "type": "tuple[]", + "internalType": "struct StrategyParams[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ] + }, + { + "name": "_new", + "type": "tuple", + "indexed": false, + "internalType": "struct Quorum", + "components": [ + { + "name": "strategies", + "type": "tuple[]", + "internalType": "struct StrategyParams[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "SigningKeyUpdate", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "updateBlock", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "newSigningKey", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "oldSigningKey", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ThresholdWeightUpdated", + "inputs": [ + { + "name": "_thresholdWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "TotalWeightUpdated", + "inputs": [ + { + "name": "oldTotalWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "newTotalWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "UpdateMinimumWeight", + "inputs": [ + { + "name": "oldMinimumWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "newMinimumWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "InsufficientSignedStake", + "inputs": [] + }, + { + "type": "error", + "name": "InsufficientWeight", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidLength", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidQuorum", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidReferenceBlock", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidSignature", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidSignedWeight", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidThreshold", + "inputs": [] + }, + { + "type": "error", + "name": "LengthMismatch", + "inputs": [] + }, + { + "type": "error", + "name": "MustUpdateAllOperators", + "inputs": [] + }, + { + "type": "error", + "name": "NotSorted", + "inputs": [] + }, + { + "type": "error", + "name": "OperatorAlreadyRegistered", + "inputs": [] + }, + { + "type": "error", + "name": "OperatorNotRegistered", + "inputs": [] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ECDSAStakeRegistryEventsAndErrors { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**```solidity + struct Quorum { StrategyParams[] strategies; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct Quorum { + pub strategies: + alloy::sol_types::private::Vec<::RustType>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec<::RustType>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: Quorum) -> Self { + (value.strategies,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for Quorum { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategies: tuple.0, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for Quorum { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for Quorum { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.strategies), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Quorum { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for Quorum { + const NAME: &'static str = "Quorum"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed("Quorum(StrategyParams[] strategies)") + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + let mut components = alloy_sol_types::private::Vec::with_capacity(1); + components.push(::eip712_root_type()); + components + .extend(::eip712_components()); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + as alloy_sol_types::SolType>::eip712_data_word(&self.strategies) + .0 + .to_vec() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Quorum { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.strategies, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.strategies, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct StrategyParams { address strategy; uint96 multiplier; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct StrategyParams { + pub strategy: alloy::sol_types::private::Address, + pub multiplier: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<96>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U96, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: StrategyParams) -> Self { + (value.strategy, value.multiplier) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for StrategyParams { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategy: tuple.0, + multiplier: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for StrategyParams { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for StrategyParams { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.multiplier, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for StrategyParams { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for StrategyParams { + const NAME: &'static str = "StrategyParams"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "StrategyParams(address strategy,uint96 multiplier)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.strategy, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.multiplier) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for StrategyParams { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.strategy, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.multiplier, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.strategy, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.multiplier, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**Custom error with signature `InsufficientSignedStake()` and selector `0xe121632f`. + ```solidity + error InsufficientSignedStake(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InsufficientSignedStake {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InsufficientSignedStake) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InsufficientSignedStake { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InsufficientSignedStake { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InsufficientSignedStake()"; + const SELECTOR: [u8; 4] = [225u8, 33u8, 99u8, 47u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InsufficientWeight()` and selector `0xa8792fd1`. + ```solidity + error InsufficientWeight(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InsufficientWeight {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InsufficientWeight) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InsufficientWeight { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InsufficientWeight { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InsufficientWeight()"; + const SELECTOR: [u8; 4] = [168u8, 121u8, 47u8, 209u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidLength()` and selector `0x947d5a84`. + ```solidity + error InvalidLength(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidLength {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidLength) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidLength { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidLength { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidLength()"; + const SELECTOR: [u8; 4] = [148u8, 125u8, 90u8, 132u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidQuorum()` and selector `0xd1735779`. + ```solidity + error InvalidQuorum(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidQuorum {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidQuorum) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidQuorum { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidQuorum { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidQuorum()"; + const SELECTOR: [u8; 4] = [209u8, 115u8, 87u8, 121u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidReferenceBlock()` and selector `0xe64f180f`. + ```solidity + error InvalidReferenceBlock(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidReferenceBlock {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidReferenceBlock) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidReferenceBlock { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidReferenceBlock { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidReferenceBlock()"; + const SELECTOR: [u8; 4] = [230u8, 79u8, 24u8, 15u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidSignature()` and selector `0x8baa579f`. + ```solidity + error InvalidSignature(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidSignature {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidSignature) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidSignature { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidSignature { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidSignature()"; + const SELECTOR: [u8; 4] = [139u8, 170u8, 87u8, 159u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidSignedWeight()` and selector `0x960b41ee`. + ```solidity + error InvalidSignedWeight(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidSignedWeight {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidSignedWeight) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidSignedWeight { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidSignedWeight { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidSignedWeight()"; + const SELECTOR: [u8; 4] = [150u8, 11u8, 65u8, 238u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidThreshold()` and selector `0xaabd5a09`. + ```solidity + error InvalidThreshold(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidThreshold {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidThreshold) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidThreshold { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidThreshold { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidThreshold()"; + const SELECTOR: [u8; 4] = [170u8, 189u8, 90u8, 9u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `LengthMismatch()` and selector `0xff633a38`. + ```solidity + error LengthMismatch(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct LengthMismatch {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: LengthMismatch) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for LengthMismatch { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for LengthMismatch { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "LengthMismatch()"; + const SELECTOR: [u8; 4] = [255u8, 99u8, 58u8, 56u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `MustUpdateAllOperators()` and selector `0x2d3df6b6`. + ```solidity + error MustUpdateAllOperators(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct MustUpdateAllOperators {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: MustUpdateAllOperators) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for MustUpdateAllOperators { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for MustUpdateAllOperators { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "MustUpdateAllOperators()"; + const SELECTOR: [u8; 4] = [45u8, 61u8, 246u8, 182u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `NotSorted()` and selector `0xba50f911`. + ```solidity + error NotSorted(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct NotSorted {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: NotSorted) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for NotSorted { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for NotSorted { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "NotSorted()"; + const SELECTOR: [u8; 4] = [186u8, 80u8, 249u8, 17u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `OperatorAlreadyRegistered()` and selector `0x42ee68b5`. + ```solidity + error OperatorAlreadyRegistered(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OperatorAlreadyRegistered {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OperatorAlreadyRegistered) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OperatorAlreadyRegistered { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for OperatorAlreadyRegistered { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "OperatorAlreadyRegistered()"; + const SELECTOR: [u8; 4] = [66u8, 238u8, 104u8, 181u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `OperatorNotRegistered()` and selector `0x25ec6c1f`. + ```solidity + error OperatorNotRegistered(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OperatorNotRegistered {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OperatorNotRegistered) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OperatorNotRegistered { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for OperatorNotRegistered { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "OperatorNotRegistered()"; + const SELECTOR: [u8; 4] = [37u8, 236u8, 108u8, 31u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Event with signature `MinimumWeightUpdated(uint256,uint256)` and selector `0x713ca53b88d6eb63f5b1854cb8cbdd736ec51eda225e46791aa9298b0160648f`. + ```solidity + event MinimumWeightUpdated(uint256 _old, uint256 _new); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct MinimumWeightUpdated { + #[allow(missing_docs)] + pub _old: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub _new: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for MinimumWeightUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "MinimumWeightUpdated(uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 113u8, 60u8, 165u8, 59u8, 136u8, 214u8, 235u8, 99u8, 245u8, 177u8, 133u8, 76u8, + 184u8, 203u8, 221u8, 115u8, 110u8, 197u8, 30u8, 218u8, 34u8, 94u8, 70u8, 121u8, + 26u8, 169u8, 41u8, 139u8, 1u8, 96u8, 100u8, 143u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _old: data.0, + _new: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._old, + ), + as alloy_sol_types::SolType>::tokenize( + &self._new, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for MinimumWeightUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&MinimumWeightUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &MinimumWeightUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorDeregistered(address,address)` and selector `0x31e0adfec71bccee37b6e83a90c2fedb17d8f1693fee863c4771e7bfe2aed580`. + ```solidity + event OperatorDeregistered(address indexed _operator, address indexed _avs); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorDeregistered { + #[allow(missing_docs)] + pub _operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _avs: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorDeregistered { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OperatorDeregistered(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 49u8, 224u8, 173u8, 254u8, 199u8, 27u8, 204u8, 238u8, 55u8, 182u8, 232u8, 58u8, + 144u8, 194u8, 254u8, 219u8, 23u8, 216u8, 241u8, 105u8, 63u8, 238u8, 134u8, + 60u8, 71u8, 113u8, 231u8, 191u8, 226u8, 174u8, 213u8, 128u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _operator: topics.1, + _avs: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._operator.clone(), + self._avs.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self._operator, + ); + out[2usize] = ::encode_topic( + &self._avs, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorDeregistered { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorDeregistered> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorDeregistered) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorRegistered(address,address)` and selector `0xa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c1`. + ```solidity + event OperatorRegistered(address indexed _operator, address indexed _avs); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorRegistered { + #[allow(missing_docs)] + pub _operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _avs: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorRegistered { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OperatorRegistered(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 164u8, 83u8, 219u8, 97u8, 42u8, 245u8, 158u8, 85u8, 33u8, 214u8, 171u8, 146u8, + 132u8, 220u8, 62u8, 45u8, 6u8, 175u8, 40u8, 110u8, 177u8, 177u8, 183u8, 183u8, + 113u8, 252u8, 228u8, 113u8, 108u8, 25u8, 242u8, 193u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _operator: topics.1, + _avs: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._operator.clone(), + self._avs.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self._operator, + ); + out[2usize] = ::encode_topic( + &self._avs, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorRegistered { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorRegistered> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorRegistered) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorWeightUpdated(address,uint256,uint256)` and selector `0x88770dc862e47a7ed586907857eb1b75e4c5ffc8b707c7ee10eb74d6885fe594`. + ```solidity + event OperatorWeightUpdated(address indexed _operator, uint256 oldWeight, uint256 newWeight); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorWeightUpdated { + #[allow(missing_docs)] + pub _operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub oldWeight: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub newWeight: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorWeightUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OperatorWeightUpdated(address,uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 136u8, 119u8, 13u8, 200u8, 98u8, 228u8, 122u8, 126u8, 213u8, 134u8, 144u8, + 120u8, 87u8, 235u8, 27u8, 117u8, 228u8, 197u8, 255u8, 200u8, 183u8, 7u8, 199u8, + 238u8, 16u8, 235u8, 116u8, 214u8, 136u8, 95u8, 229u8, 148u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _operator: topics.1, + oldWeight: data.0, + newWeight: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.oldWeight, + ), + as alloy_sol_types::SolType>::tokenize( + &self.newWeight, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self._operator.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self._operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorWeightUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorWeightUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorWeightUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `QuorumUpdated(((address,uint96)[]),((address,uint96)[]))` and selector `0x23aad4e61744ece164130aa415c1616e80136b0f0770e56589438b90b269265e`. + ```solidity + event QuorumUpdated(Quorum _old, Quorum _new); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct QuorumUpdated { + #[allow(missing_docs)] + pub _old: ::RustType, + #[allow(missing_docs)] + pub _new: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for QuorumUpdated { + type DataTuple<'a> = (Quorum, Quorum); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = + "QuorumUpdated(((address,uint96)[]),((address,uint96)[]))"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 35u8, 170u8, 212u8, 230u8, 23u8, 68u8, 236u8, 225u8, 100u8, 19u8, 10u8, 164u8, + 21u8, 193u8, 97u8, 110u8, 128u8, 19u8, 107u8, 15u8, 7u8, 112u8, 229u8, 101u8, + 137u8, 67u8, 139u8, 144u8, 178u8, 105u8, 38u8, 94u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _old: data.0, + _new: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize(&self._old), + ::tokenize(&self._new), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for QuorumUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&QuorumUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &QuorumUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `SigningKeyUpdate(address,uint256,address,address)` and selector `0xd061168252f441733658f09e4d8f5b2d998ed4ef24a2bbfd6ceca52ea1315002`. + ```solidity + event SigningKeyUpdate(address indexed operator, uint256 indexed updateBlock, address indexed newSigningKey, address oldSigningKey); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct SigningKeyUpdate { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub updateBlock: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub newSigningKey: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub oldSigningKey: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for SigningKeyUpdate { + type DataTuple<'a> = (alloy::sol_types::sol_data::Address,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "SigningKeyUpdate(address,uint256,address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 208u8, 97u8, 22u8, 130u8, 82u8, 244u8, 65u8, 115u8, 54u8, 88u8, 240u8, 158u8, + 77u8, 143u8, 91u8, 45u8, 153u8, 142u8, 212u8, 239u8, 36u8, 162u8, 187u8, 253u8, + 108u8, 236u8, 165u8, 46u8, 161u8, 49u8, 80u8, 2u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: topics.1, + updateBlock: topics.2, + newSigningKey: topics.3, + oldSigningKey: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.oldSigningKey, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.operator.clone(), + self.updateBlock.clone(), + self.newSigningKey.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + out[2usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.updateBlock); + out[3usize] = ::encode_topic( + &self.newSigningKey, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for SigningKeyUpdate { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&SigningKeyUpdate> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &SigningKeyUpdate) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `ThresholdWeightUpdated(uint256)` and selector `0x9324f7e5a7c0288808a634ccde44b8e979676474b22e29ee9dd569b55e791a4b`. + ```solidity + event ThresholdWeightUpdated(uint256 _thresholdWeight); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct ThresholdWeightUpdated { + #[allow(missing_docs)] + pub _thresholdWeight: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ThresholdWeightUpdated { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "ThresholdWeightUpdated(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 147u8, 36u8, 247u8, 229u8, 167u8, 192u8, 40u8, 136u8, 8u8, 166u8, 52u8, 204u8, + 222u8, 68u8, 184u8, 233u8, 121u8, 103u8, 100u8, 116u8, 178u8, 46u8, 41u8, + 238u8, 157u8, 213u8, 105u8, 181u8, 94u8, 121u8, 26u8, 75u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _thresholdWeight: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._thresholdWeight, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ThresholdWeightUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ThresholdWeightUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ThresholdWeightUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `TotalWeightUpdated(uint256,uint256)` and selector `0x86dcf86b12dfeedea74ae9300dbdaa193bcce5809369c8177ea2f4eaaa65729b`. + ```solidity + event TotalWeightUpdated(uint256 oldTotalWeight, uint256 newTotalWeight); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct TotalWeightUpdated { + #[allow(missing_docs)] + pub oldTotalWeight: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub newTotalWeight: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for TotalWeightUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "TotalWeightUpdated(uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 134u8, 220u8, 248u8, 107u8, 18u8, 223u8, 238u8, 222u8, 167u8, 74u8, 233u8, + 48u8, 13u8, 189u8, 170u8, 25u8, 59u8, 204u8, 229u8, 128u8, 147u8, 105u8, 200u8, + 23u8, 126u8, 162u8, 244u8, 234u8, 170u8, 101u8, 114u8, 155u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + oldTotalWeight: data.0, + newTotalWeight: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.oldTotalWeight, + ), + as alloy_sol_types::SolType>::tokenize( + &self.newTotalWeight, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for TotalWeightUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&TotalWeightUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &TotalWeightUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `UpdateMinimumWeight(uint256,uint256)` and selector `0x1ea42186b305fa37310450d9fb87ea1e8f0c7f447e771479e3b27634bfe84dc1`. + ```solidity + event UpdateMinimumWeight(uint256 oldMinimumWeight, uint256 newMinimumWeight); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct UpdateMinimumWeight { + #[allow(missing_docs)] + pub oldMinimumWeight: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub newMinimumWeight: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for UpdateMinimumWeight { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "UpdateMinimumWeight(uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 30u8, 164u8, 33u8, 134u8, 179u8, 5u8, 250u8, 55u8, 49u8, 4u8, 80u8, 217u8, + 251u8, 135u8, 234u8, 30u8, 143u8, 12u8, 127u8, 68u8, 126u8, 119u8, 20u8, 121u8, + 227u8, 178u8, 118u8, 52u8, 191u8, 232u8, 77u8, 193u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + oldMinimumWeight: data.0, + newMinimumWeight: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.oldMinimumWeight, + ), + as alloy_sol_types::SolType>::tokenize( + &self.newMinimumWeight, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for UpdateMinimumWeight { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&UpdateMinimumWeight> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &UpdateMinimumWeight) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + ///Container for all the [`ECDSAStakeRegistryEventsAndErrors`](self) custom errors. + pub enum ECDSAStakeRegistryEventsAndErrorsErrors { + InsufficientSignedStake(InsufficientSignedStake), + InsufficientWeight(InsufficientWeight), + InvalidLength(InvalidLength), + InvalidQuorum(InvalidQuorum), + InvalidReferenceBlock(InvalidReferenceBlock), + InvalidSignature(InvalidSignature), + InvalidSignedWeight(InvalidSignedWeight), + InvalidThreshold(InvalidThreshold), + LengthMismatch(LengthMismatch), + MustUpdateAllOperators(MustUpdateAllOperators), + NotSorted(NotSorted), + OperatorAlreadyRegistered(OperatorAlreadyRegistered), + OperatorNotRegistered(OperatorNotRegistered), + } + #[automatically_derived] + impl ECDSAStakeRegistryEventsAndErrorsErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [37u8, 236u8, 108u8, 31u8], + [45u8, 61u8, 246u8, 182u8], + [66u8, 238u8, 104u8, 181u8], + [139u8, 170u8, 87u8, 159u8], + [148u8, 125u8, 90u8, 132u8], + [150u8, 11u8, 65u8, 238u8], + [168u8, 121u8, 47u8, 209u8], + [170u8, 189u8, 90u8, 9u8], + [186u8, 80u8, 249u8, 17u8], + [209u8, 115u8, 87u8, 121u8], + [225u8, 33u8, 99u8, 47u8], + [230u8, 79u8, 24u8, 15u8], + [255u8, 99u8, 58u8, 56u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ECDSAStakeRegistryEventsAndErrorsErrors { + const NAME: &'static str = "ECDSAStakeRegistryEventsAndErrorsErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 13usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::InsufficientSignedStake(_) => { + ::SELECTOR + } + Self::InsufficientWeight(_) => { + ::SELECTOR + } + Self::InvalidLength(_) => ::SELECTOR, + Self::InvalidQuorum(_) => ::SELECTOR, + Self::InvalidReferenceBlock(_) => { + ::SELECTOR + } + Self::InvalidSignature(_) => { + ::SELECTOR + } + Self::InvalidSignedWeight(_) => { + ::SELECTOR + } + Self::InvalidThreshold(_) => { + ::SELECTOR + } + Self::LengthMismatch(_) => ::SELECTOR, + Self::MustUpdateAllOperators(_) => { + ::SELECTOR + } + Self::NotSorted(_) => ::SELECTOR, + Self::OperatorAlreadyRegistered(_) => { + ::SELECTOR + } + Self::OperatorNotRegistered(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result< + ECDSAStakeRegistryEventsAndErrorsErrors, + >] = &[ + { + fn OperatorNotRegistered( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEventsAndErrorsErrors::OperatorNotRegistered) + } + OperatorNotRegistered + }, + { + fn MustUpdateAllOperators( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEventsAndErrorsErrors::MustUpdateAllOperators) + } + MustUpdateAllOperators + }, + { + fn OperatorAlreadyRegistered( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEventsAndErrorsErrors::OperatorAlreadyRegistered) + } + OperatorAlreadyRegistered + }, + { + fn InvalidSignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEventsAndErrorsErrors::InvalidSignature) + } + InvalidSignature + }, + { + fn InvalidLength( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(ECDSAStakeRegistryEventsAndErrorsErrors::InvalidLength) + } + InvalidLength + }, + { + fn InvalidSignedWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEventsAndErrorsErrors::InvalidSignedWeight) + } + InvalidSignedWeight + }, + { + fn InsufficientWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEventsAndErrorsErrors::InsufficientWeight) + } + InsufficientWeight + }, + { + fn InvalidThreshold( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEventsAndErrorsErrors::InvalidThreshold) + } + InvalidThreshold + }, + { + fn NotSorted( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(ECDSAStakeRegistryEventsAndErrorsErrors::NotSorted) + } + NotSorted + }, + { + fn InvalidQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(ECDSAStakeRegistryEventsAndErrorsErrors::InvalidQuorum) + } + InvalidQuorum + }, + { + fn InsufficientSignedStake( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEventsAndErrorsErrors::InsufficientSignedStake) + } + InsufficientSignedStake + }, + { + fn InvalidReferenceBlock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEventsAndErrorsErrors::InvalidReferenceBlock) + } + InvalidReferenceBlock + }, + { + fn LengthMismatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryEventsAndErrorsErrors::LengthMismatch) + } + LengthMismatch + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::InsufficientSignedStake(inner) => { + ::abi_encoded_size(inner) + } + Self::InsufficientWeight(inner) => { + ::abi_encoded_size(inner) + } + Self::InvalidLength(inner) => { + ::abi_encoded_size(inner) + } + Self::InvalidQuorum(inner) => { + ::abi_encoded_size(inner) + } + Self::InvalidReferenceBlock(inner) => { + ::abi_encoded_size(inner) + } + Self::InvalidSignature(inner) => { + ::abi_encoded_size(inner) + } + Self::InvalidSignedWeight(inner) => { + ::abi_encoded_size(inner) + } + Self::InvalidThreshold(inner) => { + ::abi_encoded_size(inner) + } + Self::LengthMismatch(inner) => { + ::abi_encoded_size(inner) + } + Self::MustUpdateAllOperators(inner) => { + ::abi_encoded_size(inner) + } + Self::NotSorted(inner) => { + ::abi_encoded_size(inner) + } + Self::OperatorAlreadyRegistered(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::OperatorNotRegistered(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::InsufficientSignedStake(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::InsufficientWeight(inner) => { + ::abi_encode_raw(inner, out) + } + Self::InvalidLength(inner) => { + ::abi_encode_raw(inner, out) + } + Self::InvalidQuorum(inner) => { + ::abi_encode_raw(inner, out) + } + Self::InvalidReferenceBlock(inner) => { + ::abi_encode_raw(inner, out) + } + Self::InvalidSignature(inner) => { + ::abi_encode_raw(inner, out) + } + Self::InvalidSignedWeight(inner) => { + ::abi_encode_raw(inner, out) + } + Self::InvalidThreshold(inner) => { + ::abi_encode_raw(inner, out) + } + Self::LengthMismatch(inner) => { + ::abi_encode_raw(inner, out) + } + Self::MustUpdateAllOperators(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::NotSorted(inner) => { + ::abi_encode_raw(inner, out) + } + Self::OperatorAlreadyRegistered(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::OperatorNotRegistered(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`ECDSAStakeRegistryEventsAndErrors`](self) events. + pub enum ECDSAStakeRegistryEventsAndErrorsEvents { + MinimumWeightUpdated(MinimumWeightUpdated), + OperatorDeregistered(OperatorDeregistered), + OperatorRegistered(OperatorRegistered), + OperatorWeightUpdated(OperatorWeightUpdated), + QuorumUpdated(QuorumUpdated), + SigningKeyUpdate(SigningKeyUpdate), + ThresholdWeightUpdated(ThresholdWeightUpdated), + TotalWeightUpdated(TotalWeightUpdated), + UpdateMinimumWeight(UpdateMinimumWeight), + } + #[automatically_derived] + impl ECDSAStakeRegistryEventsAndErrorsEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 30u8, 164u8, 33u8, 134u8, 179u8, 5u8, 250u8, 55u8, 49u8, 4u8, 80u8, 217u8, 251u8, + 135u8, 234u8, 30u8, 143u8, 12u8, 127u8, 68u8, 126u8, 119u8, 20u8, 121u8, 227u8, + 178u8, 118u8, 52u8, 191u8, 232u8, 77u8, 193u8, + ], + [ + 35u8, 170u8, 212u8, 230u8, 23u8, 68u8, 236u8, 225u8, 100u8, 19u8, 10u8, 164u8, + 21u8, 193u8, 97u8, 110u8, 128u8, 19u8, 107u8, 15u8, 7u8, 112u8, 229u8, 101u8, + 137u8, 67u8, 139u8, 144u8, 178u8, 105u8, 38u8, 94u8, + ], + [ + 49u8, 224u8, 173u8, 254u8, 199u8, 27u8, 204u8, 238u8, 55u8, 182u8, 232u8, 58u8, + 144u8, 194u8, 254u8, 219u8, 23u8, 216u8, 241u8, 105u8, 63u8, 238u8, 134u8, 60u8, + 71u8, 113u8, 231u8, 191u8, 226u8, 174u8, 213u8, 128u8, + ], + [ + 113u8, 60u8, 165u8, 59u8, 136u8, 214u8, 235u8, 99u8, 245u8, 177u8, 133u8, 76u8, + 184u8, 203u8, 221u8, 115u8, 110u8, 197u8, 30u8, 218u8, 34u8, 94u8, 70u8, 121u8, + 26u8, 169u8, 41u8, 139u8, 1u8, 96u8, 100u8, 143u8, + ], + [ + 134u8, 220u8, 248u8, 107u8, 18u8, 223u8, 238u8, 222u8, 167u8, 74u8, 233u8, 48u8, + 13u8, 189u8, 170u8, 25u8, 59u8, 204u8, 229u8, 128u8, 147u8, 105u8, 200u8, 23u8, + 126u8, 162u8, 244u8, 234u8, 170u8, 101u8, 114u8, 155u8, + ], + [ + 136u8, 119u8, 13u8, 200u8, 98u8, 228u8, 122u8, 126u8, 213u8, 134u8, 144u8, 120u8, + 87u8, 235u8, 27u8, 117u8, 228u8, 197u8, 255u8, 200u8, 183u8, 7u8, 199u8, 238u8, + 16u8, 235u8, 116u8, 214u8, 136u8, 95u8, 229u8, 148u8, + ], + [ + 147u8, 36u8, 247u8, 229u8, 167u8, 192u8, 40u8, 136u8, 8u8, 166u8, 52u8, 204u8, + 222u8, 68u8, 184u8, 233u8, 121u8, 103u8, 100u8, 116u8, 178u8, 46u8, 41u8, 238u8, + 157u8, 213u8, 105u8, 181u8, 94u8, 121u8, 26u8, 75u8, + ], + [ + 164u8, 83u8, 219u8, 97u8, 42u8, 245u8, 158u8, 85u8, 33u8, 214u8, 171u8, 146u8, + 132u8, 220u8, 62u8, 45u8, 6u8, 175u8, 40u8, 110u8, 177u8, 177u8, 183u8, 183u8, + 113u8, 252u8, 228u8, 113u8, 108u8, 25u8, 242u8, 193u8, + ], + [ + 208u8, 97u8, 22u8, 130u8, 82u8, 244u8, 65u8, 115u8, 54u8, 88u8, 240u8, 158u8, 77u8, + 143u8, 91u8, 45u8, 153u8, 142u8, 212u8, 239u8, 36u8, 162u8, 187u8, 253u8, 108u8, + 236u8, 165u8, 46u8, 161u8, 49u8, 80u8, 2u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for ECDSAStakeRegistryEventsAndErrorsEvents { + const NAME: &'static str = "ECDSAStakeRegistryEventsAndErrorsEvents"; + const COUNT: usize = 9usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::MinimumWeightUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorDeregistered) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorRegistered) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorWeightUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::QuorumUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::SigningKeyUpdate) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ThresholdWeightUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::TotalWeightUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::UpdateMinimumWeight) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ECDSAStakeRegistryEventsAndErrorsEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::MinimumWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorDeregistered(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorRegistered(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::QuorumUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::SigningKeyUpdate(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ThresholdWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::TotalWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::UpdateMinimumWeight(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::MinimumWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorDeregistered(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorRegistered(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::QuorumUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::SigningKeyUpdate(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ThresholdWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::TotalWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::UpdateMinimumWeight(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ECDSAStakeRegistryEventsAndErrors`](self) contract instance. + + See the [wrapper's documentation](`ECDSAStakeRegistryEventsAndErrorsInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ECDSAStakeRegistryEventsAndErrorsInstance { + ECDSAStakeRegistryEventsAndErrorsInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + ECDSAStakeRegistryEventsAndErrorsInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + ECDSAStakeRegistryEventsAndErrorsInstance::::deploy_builder(provider) + } + /**A [`ECDSAStakeRegistryEventsAndErrors`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ECDSAStakeRegistryEventsAndErrors`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ECDSAStakeRegistryEventsAndErrorsInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ECDSAStakeRegistryEventsAndErrorsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ECDSAStakeRegistryEventsAndErrorsInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ECDSAStakeRegistryEventsAndErrorsInstance + { + /**Creates a new wrapper around an on-chain [`ECDSAStakeRegistryEventsAndErrors`](self) contract instance. + + See the [wrapper's documentation](`ECDSAStakeRegistryEventsAndErrorsInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ECDSAStakeRegistryEventsAndErrorsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ECDSAStakeRegistryEventsAndErrorsInstance { + ECDSAStakeRegistryEventsAndErrorsInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ECDSAStakeRegistryEventsAndErrorsInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ECDSAStakeRegistryEventsAndErrorsInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`MinimumWeightUpdated`] event. + pub fn MinimumWeightUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorDeregistered`] event. + pub fn OperatorDeregistered_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorRegistered`] event. + pub fn OperatorRegistered_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorWeightUpdated`] event. + pub fn OperatorWeightUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`QuorumUpdated`] event. + pub fn QuorumUpdated_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`SigningKeyUpdate`] event. + pub fn SigningKeyUpdate_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ThresholdWeightUpdated`] event. + pub fn ThresholdWeightUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`TotalWeightUpdated`] event. + pub fn TotalWeightUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`UpdateMinimumWeight`] event. + pub fn UpdateMinimumWeight_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/ecdsastakeregistrypermissioned.rs b/crates/utils/src/ecdsastakeregistrypermissioned.rs new file mode 100644 index 00000000..13e6ee5e --- /dev/null +++ b/crates/utils/src/ecdsastakeregistrypermissioned.rs @@ -0,0 +1,9455 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library ISignatureUtils { + struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ISignatureUtils { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SignatureWithSaltAndExpiry { + pub signature: alloy::sol_types::private::Bytes, + pub salt: alloy::sol_types::private::FixedBytes<32>, + pub expiry: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: SignatureWithSaltAndExpiry) -> Self { + (value.signature, value.salt, value.expiry) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for SignatureWithSaltAndExpiry { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + signature: tuple.0, + salt: tuple.1, + expiry: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for SignatureWithSaltAndExpiry { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for SignatureWithSaltAndExpiry { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.signature, + ), + as alloy_sol_types::SolType>::tokenize(&self.salt), + as alloy_sol_types::SolType>::tokenize(&self.expiry), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for SignatureWithSaltAndExpiry { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for SignatureWithSaltAndExpiry { + const NAME: &'static str = "SignatureWithSaltAndExpiry"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "SignatureWithSaltAndExpiry(bytes signature,bytes32 salt,uint256 expiry)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.signature, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.salt) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.expiry) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for SignatureWithSaltAndExpiry { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.signature, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.salt) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.expiry, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.signature, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.salt, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.expiry, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ISignatureUtilsInstance { + ISignatureUtilsInstance::::new(address, provider) + } + /**A [`ISignatureUtils`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ISignatureUtils`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ISignatureUtilsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ISignatureUtilsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ISignatureUtilsInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ISignatureUtilsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ISignatureUtilsInstance { + ISignatureUtilsInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library ISignatureUtils { + struct SignatureWithSaltAndExpiry { + bytes signature; + bytes32 salt; + uint256 expiry; + } +} + +interface ECDSAStakeRegistryPermissioned { + struct Quorum { + StrategyParams[] strategies; + } + struct StrategyParams { + address strategy; + uint96 multiplier; + } + + error InsufficientSignedStake(); + error InsufficientWeight(); + error InvalidLength(); + error InvalidQuorum(); + error InvalidReferenceBlock(); + error InvalidSignature(); + error InvalidSignedWeight(); + error InvalidThreshold(); + error LengthMismatch(); + error MustUpdateAllOperators(); + error NotSorted(); + error OperatorAlreadyAllowlisted(); + error OperatorAlreadyRegistered(); + error OperatorNotAllowlisted(); + error OperatorNotRegistered(); + + event Initialized(uint8 version); + event MinimumWeightUpdated(uint256 _old, uint256 _new); + event OperatorDeregistered(address indexed _operator, address indexed _avs); + event OperatorEjected(address indexed operator); + event OperatorPermitted(address indexed operator); + event OperatorRegistered(address indexed _operator, address indexed _avs); + event OperatorRevoked(address indexed operator); + event OperatorWeightUpdated(address indexed _operator, uint256 oldWeight, uint256 newWeight); + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + event QuorumUpdated(Quorum _old, Quorum _new); + event SigningKeyUpdate(address indexed operator, uint256 indexed updateBlock, address indexed newSigningKey, address oldSigningKey); + event ThresholdWeightUpdated(uint256 _thresholdWeight); + event TotalWeightUpdated(uint256 oldTotalWeight, uint256 newTotalWeight); + event UpdateMinimumWeight(uint256 oldMinimumWeight, uint256 newMinimumWeight); + + constructor(address _delegationManager); + + function allowlistedOperators(address) external view returns (bool); + function deregisterOperator() external; + function ejectOperator(address _operator) external; + function getLastCheckpointOperatorWeight(address _operator) external view returns (uint256); + function getLastCheckpointThresholdWeight() external view returns (uint256); + function getLastCheckpointThresholdWeightAtBlock(uint32 _blockNumber) external view returns (uint256); + function getLastCheckpointTotalWeight() external view returns (uint256); + function getLastCheckpointTotalWeightAtBlock(uint32 _blockNumber) external view returns (uint256); + function getLastestOperatorSigningKey(address _operator) external view returns (address); + function getOperatorSigningKeyAtBlock(address _operator, uint256 _blockNumber) external view returns (address); + function getOperatorWeight(address _operator) external view returns (uint256); + function getOperatorWeightAtBlock(address _operator, uint32 _blockNumber) external view returns (uint256); + function initialize(address _serviceManager, uint256 _thresholdWeight, Quorum memory _quorum) external; + function isValidSignature(bytes32 _dataHash, bytes memory _signatureData) external view returns (bytes4); + function minimumWeight() external view returns (uint256); + function operatorRegistered(address _operator) external view returns (bool); + function owner() external view returns (address); + function permitOperator(address _operator) external; + function quorum() external view returns (Quorum memory); + function registerOperatorWithSignature(ISignatureUtils.SignatureWithSaltAndExpiry memory _operatorSignature, address _signingKey) external; + function renounceOwnership() external; + function revokeOperator(address _operator) external; + function transferOwnership(address newOwner) external; + function updateMinimumWeight(uint256 _newMinimumWeight, address[] memory _operators) external; + function updateOperatorSigningKey(address _newSigningKey) external; + function updateOperators(address[] memory _operators) external; + function updateOperatorsForQuorum(address[][] memory operatorsPerQuorum, bytes memory) external; + function updateQuorumConfig(Quorum memory _quorum, address[] memory _operators) external; + function updateStakeThreshold(uint256 _thresholdWeight) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_delegationManager", + "type": "address", + "internalType": "contract IDelegationManager" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "allowlistedOperators", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "deregisterOperator", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "ejectOperator", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getLastCheckpointOperatorWeight", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getLastCheckpointThresholdWeight", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getLastCheckpointThresholdWeightAtBlock", + "inputs": [ + { + "name": "_blockNumber", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getLastCheckpointTotalWeight", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getLastCheckpointTotalWeightAtBlock", + "inputs": [ + { + "name": "_blockNumber", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getLastestOperatorSigningKey", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorSigningKeyAtBlock", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + }, + { + "name": "_blockNumber", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorWeight", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorWeightAtBlock", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + }, + { + "name": "_blockNumber", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "_serviceManager", + "type": "address", + "internalType": "address" + }, + { + "name": "_thresholdWeight", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_quorum", + "type": "tuple", + "internalType": "struct Quorum", + "components": [ + { + "name": "strategies", + "type": "tuple[]", + "internalType": "struct StrategyParams[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "isValidSignature", + "inputs": [ + { + "name": "_dataHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "_signatureData", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "minimumWeight", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "operatorRegistered", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "permitOperator", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "quorum", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct Quorum", + "components": [ + { + "name": "strategies", + "type": "tuple[]", + "internalType": "struct StrategyParams[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registerOperatorWithSignature", + "inputs": [ + { + "name": "_operatorSignature", + "type": "tuple", + "internalType": "struct ISignatureUtils.SignatureWithSaltAndExpiry", + "components": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "salt", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "_signingKey", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "revokeOperator", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateMinimumWeight", + "inputs": [ + { + "name": "_newMinimumWeight", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_operators", + "type": "address[]", + "internalType": "address[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateOperatorSigningKey", + "inputs": [ + { + "name": "_newSigningKey", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateOperators", + "inputs": [ + { + "name": "_operators", + "type": "address[]", + "internalType": "address[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateOperatorsForQuorum", + "inputs": [ + { + "name": "operatorsPerQuorum", + "type": "address[][]", + "internalType": "address[][]" + }, + { + "name": "", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateQuorumConfig", + "inputs": [ + { + "name": "_quorum", + "type": "tuple", + "internalType": "struct Quorum", + "components": [ + { + "name": "strategies", + "type": "tuple[]", + "internalType": "struct StrategyParams[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ] + }, + { + "name": "_operators", + "type": "address[]", + "internalType": "address[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateStakeThreshold", + "inputs": [ + { + "name": "_thresholdWeight", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "MinimumWeightUpdated", + "inputs": [ + { + "name": "_old", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "_new", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorDeregistered", + "inputs": [ + { + "name": "_operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_avs", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorEjected", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorPermitted", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorRegistered", + "inputs": [ + { + "name": "_operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_avs", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorRevoked", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorWeightUpdated", + "inputs": [ + { + "name": "_operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "oldWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "newWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "QuorumUpdated", + "inputs": [ + { + "name": "_old", + "type": "tuple", + "indexed": false, + "internalType": "struct Quorum", + "components": [ + { + "name": "strategies", + "type": "tuple[]", + "internalType": "struct StrategyParams[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ] + }, + { + "name": "_new", + "type": "tuple", + "indexed": false, + "internalType": "struct Quorum", + "components": [ + { + "name": "strategies", + "type": "tuple[]", + "internalType": "struct StrategyParams[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "SigningKeyUpdate", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "updateBlock", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "newSigningKey", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "oldSigningKey", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ThresholdWeightUpdated", + "inputs": [ + { + "name": "_thresholdWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "TotalWeightUpdated", + "inputs": [ + { + "name": "oldTotalWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "newTotalWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "UpdateMinimumWeight", + "inputs": [ + { + "name": "oldMinimumWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "newMinimumWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "InsufficientSignedStake", + "inputs": [] + }, + { + "type": "error", + "name": "InsufficientWeight", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidLength", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidQuorum", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidReferenceBlock", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidSignature", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidSignedWeight", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidThreshold", + "inputs": [] + }, + { + "type": "error", + "name": "LengthMismatch", + "inputs": [] + }, + { + "type": "error", + "name": "MustUpdateAllOperators", + "inputs": [] + }, + { + "type": "error", + "name": "NotSorted", + "inputs": [] + }, + { + "type": "error", + "name": "OperatorAlreadyAllowlisted", + "inputs": [] + }, + { + "type": "error", + "name": "OperatorAlreadyRegistered", + "inputs": [] + }, + { + "type": "error", + "name": "OperatorNotAllowlisted", + "inputs": [] + }, + { + "type": "error", + "name": "OperatorNotRegistered", + "inputs": [] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ECDSAStakeRegistryPermissioned { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60a06040523480156200001157600080fd5b5060405162002c3838038062002c38833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b608051612ba46200009460003960006107e20152612ba46000f3fe608060405234801561001057600080fd5b50600436106101ce5760003560e01c80636d5be92611610104578063ab118995116100a2578063e5d98f9411610071578063e5d98f94146103dd578063ec7fbb31146103f0578063f2fde38b1461041c578063fad8b32a1461042f57600080fd5b8063ab1189951461039c578063b933fa74146103af578063cdcd3581146103b7578063dec5d1f6146103ca57600080fd5b8063857dc190116100de578063857dc1901461035d5780638da5cb5b14610365578063955f2d901461037657806398ec1ac91461038957600080fd5b80636d5be9261461030f578063715018a614610342578063743c31f41461034a57600080fd5b80633d5611f61161017157806358c1eb171161014b57806358c1eb17146102ab5780635e1042e8146102be5780635ef53329146102e9578063696255be146102fc57600080fd5b80633d5611f61461027d57806340bf2fb7146102905780635140a5481461029857600080fd5b80631703a018116101ad5780631703a0181461023a5780631e4cd85e1461024f578063314f3a49146102625780633b242e4a1461026a57600080fd5b8062cf2ab5146101d35780630dba3394146101e85780631626ba7e1461020e575b600080fd5b6101e66101e1366004612091565b610442565b005b6101fb6101f63660046120df565b61044e565b6040519081526020015b60405180910390f35b61022161021c366004612174565b61046a565b6040516001600160e01b03199091168152602001610205565b6102426104a8565b604051610205919061221d565b6101fb61025d3660046120df565b61053b565b6101fb610551565b6101fb610278366004612230565b610562565b6101e661028b36600461224d565b610583565b6067546101fb565b6101e66102a63660046122fa565b610592565b6101e66102b9366004612230565b6105b5565b6102d16102cc3660046123c3565b6105c6565b6040516001600160a01b039091168152602001610205565b6101e66102f73660046123ef565b6105ef565b6101e661030a366004612408565b610600565b61033261031d366004612230565b60976020526000908152604090205460ff1681565b6040519015158152602001610205565b6101e661061a565b6101e6610358366004612230565b61062e565b6101e6610668565b6033546001600160a01b03166102d1565b6101fb610384366004612444565b610671565b6101fb610397366004612230565b61069c565b6101e66103aa366004612553565b610903565b6101fb610a1f565b6102d16103c5366004612230565b610a2b565b6101e66103d83660046125ab565b610a4c565b6101e66103eb366004612230565b610a5d565b6103326103fe366004612230565b6001600160a01b03166000908152606e602052604090205460ff1690565b6101e661042a366004612230565b610a6e565b6101e661043d366004612230565b610ae4565b61044b81610af5565b50565b6000610464606b63ffffffff80851690610b4c16565b92915050565b6000806000808480602001905181019061048491906126fb565b92509250925061049686848484610c5b565b50630b135d3f60e11b95945050505050565b6040805160208101909152606081526040805160668054602081810284018501855283018181529293919284929091849160009085015b8282101561052e57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b0316818301528252600190920191016104df565b5050505081525050905090565b6000610464606c63ffffffff80851690610b4c16565b600061055d606b610d1a565b905090565b6001600160a01b0381166000908152606d6020526040812061046490610d1a565b61058e338383610d76565b5050565b61058e826000815181106105a8576105a86127cf565b6020026020010151610dc4565b6105bd610de7565b61044b81610e41565b6001600160a01b0382166000908152606a602052604081206105e89083610b4c565b9392505050565b6105f7610de7565b61044b81610ec7565b610608610de7565b61061182610f0a565b61058e81610af5565b610622610de7565b61062c6000610f50565b565b336000908152606e602052604090205460ff1661065e576040516325ec6c1f60e01b815260040160405180910390fd5b61044b3382610fa2565b61062c33611055565b6001600160a01b0382166000908152606d602052604081206105e89063ffffffff80851690610b4c16565b6000806066600001805480602002602001604051908101604052809291908181526020016000905b8282101561071357600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b0316818301528252600190920191016106c4565b50505050905060008082516001600160401b0381111561073557610735611f55565b60405190808252806020026020018201604052801561075e578160200160208202803683370190505b50905060005b83518110156107c75783818151811061077f5761077f6127cf565b60200260200101516000015182828151811061079d5761079d6127cf565b6001600160a01b0390921660209283029190910190910152806107bf816127fb565b915050610764565b50604051639004134760e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906390041347906108199089908690600401612816565b600060405180830381865afa158015610836573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261085e9190810190612872565b905060005b84518110156108d55784818151811061087e5761087e6127cf565b6020026020010151602001516001600160601b03168282815181106108a5576108a56127cf565b60200260200101516108b79190612902565b6108c19085612921565b9350806108cd816127fb565b915050610863565b506108e261271084612939565b925060675483106108f7575090949350505050565b50600095945050505050565b600054610100900460ff16158080156109235750600054600160ff909116105b8061093d5750303b15801561093d575060005460ff166001145b6109a55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156109c8576000805461ff0019166101001790555b6109d3848484611178565b8015610a19576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b600061055d606c610d1a565b6001600160a01b0381166000908152606a6020526040812061046490610d1a565b610a54610de7565b610611826111d4565b610a65610de7565b61044b81611333565b610a76610de7565b6001600160a01b038116610adb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161099c565b61044b81610f50565b610aec610de7565b61044b81611373565b6000805b8251811015610b4257610b24838281518110610b1757610b176127cf565b602002602001015161141c565b610b2e908361295b565b915080610b3a816127fb565b915050610af9565b50610a198161153f565b6000438210610b9d5760405162461bcd60e51b815260206004820181905260248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e6564604482015260640161099c565b825460005b81811015610c02576000610bb682846115ab565b905084866000018281548110610bce57610bce6127cf565b60009182526020909120015463ffffffff161115610bee57809250610bfc565b610bf9816001612921565b91505b50610ba2565b8115610c465784610c1460018461299c565b81548110610c2457610c246127cf565b60009182526020909120015464010000000090046001600160e01b0316610c49565b60005b6001600160e01b031695945050505050565b600083519050600080600080610c728588516115c6565b60005b85811015610d0457888181518110610c8f57610c8f6127cf565b60200260200101519450610ca38588611607565b9250610caf848661165a565b610cd3838b8a8481518110610cc657610cc66127cf565b602002602001015161168c565b8493506000610ce286896116bd565b9050610cee8184612921565b9250508080610cfc906127fb565b915050610c75565b50610d0f8187611710565b505050505050505050565b80546000908015610d635782610d3160018361299c565b81548110610d4157610d416127cf565b60009182526020909120015464010000000090046001600160e01b0316610d66565b60005b6001600160e01b03169392505050565b6001600160a01b03831660009081526097602052604090205460ff161515600114610db45760405163380fa21360e11b815260040160405180910390fd5b610dbf83838361176c565b505050565b6065548151146104425760405163169efb5b60e11b815260040160405180910390fd5b6033546001600160a01b0316331461062c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161099c565b6001600160a01b03811660009081526097602052604090205460ff1615610e7b576040516378f5ee6160e11b815260040160405180910390fd5b6001600160a01b038116600081815260976020526040808220805460ff19166001179055517fe9bc8eb00c0766d789ecba000f585406075b053bf1842aa19d4af52c52bc69209190a250565b610ed2606c826118a4565b50506040518181527f9324f7e5a7c0288808a634ccde44b8e979676474b22e29ee9dd569b55e791a4b9060200160405180910390a150565b606780549082905560408051828152602081018490527f713ca53b88d6eb63f5b1854cb8cbdd736ec51eda225e46791aa9298b0160648f91015b60405180910390a15050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000908152606a60205260408120610fc390610d1a565b9050806001600160a01b0316826001600160a01b03161415610fe457505050565b6001600160a01b038381166000908152606a602052604090206110089184166118a4565b50506040516001600160a01b0382811682528084169143918616907fd061168252f441733658f09e4d8f5b2d998ed4ef24a2bbfd6ceca52ea13150029060200160405180910390a4505050565b6001600160a01b0381166000908152606e602052604090205460ff1661108e576040516325ec6c1f60e01b815260040160405180910390fd5b6065805490600061109e836129b3565b90915550506001600160a01b0381166000908152606e60205260408120805460ff191690556110cc8261141c565b90506110d78161153f565b50506068546040516351b27a6d60e11b81526001600160a01b0384811660048301529091169063a364f4da90602401600060405180830381600087803b15801561112057600080fd5b505af1158015611134573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090851691507f31e0adfec71bccee37b6e83a90c2fedb17d8f1693fee863c4771e7bfe2aed58090600090a35050565b600054610100900460ff1661119f5760405162461bcd60e51b815260040161099c906129ca565b606880546001600160a01b0319166001600160a01b0385161790556111c382610ec7565b6111cc816111d4565b610dbf6119cf565b6111dd816119fe565b6111fa5760405163d173577960e01b815260040160405180910390fd5b60408051606680546020818102840185018552830181815260009484928491879085015b8282101561126d57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b03168183015282526001909201910161121e565b5050509152509091506066905060006112868282611f27565b505060005b825151811015611301578251805160669190839081106112ad576112ad6127cf565b6020908102919091018101518254600181018455600093845292829020815191909201516001600160601b0316600160a01b026001600160a01b0390911617910155806112f9816127fb565b91505061128b565b507f23aad4e61744ece164130aa415c1616e80136b0f0770e56589438b90b269265e8183604051610f44929190612a15565b61133c81611055565b6040516001600160a01b038216907f44cc80141b47717cc60edd3ad54b38b00efe9fe23b2898f15bcf884b0f3ad49590600090a250565b6001600160a01b03811660009081526097602052604090205460ff166113ac5760405163380fa21360e11b815260040160405180910390fd5b6001600160a01b038116600081815260976020526040808220805460ff19169055517fa5f3b7626fd86ff989f1d22cf3d41d74591ea6eb99241079400b0c332a9a8f119190a26001600160a01b0381166000908152606e602052604090205460ff161561044b5761044b81611333565b6001600160a01b0381166000908152606d6020526040812081908190819061144390610d1a565b6001600160a01b0386166000908152606e602052604090205490915060ff166114a8576114708184612a43565b9250826114805750909392505050565b6001600160a01b0385166000908152606d602052604081206114a1916118a4565b50506114f2565b6114b18561069c565b91506114bd8183612a43565b9250826114cd5750909392505050565b6001600160a01b0385166000908152606d602052604090206114ef90836118a4565b50505b60408051828152602081018490526001600160a01b038716917f88770dc862e47a7ed586907857eb1b75e4c5ffc8b707c7ee10eb74d6885fe594910160405180910390a250909392505050565b60008061154c606b610d1a565b9150600061155a848461295b565b915081905061156a606b826118a4565b505060408051848152602081018490527f86dcf86b12dfeedea74ae9300dbdaa193bcce5809369c8177ea2f4eaaa65729b910160405180910390a150915091565b60006115ba6002848418612939565b6105e890848416612921565b8082146115e9576040516001621398b960e31b0319815260040160405180910390fd5b8161058e5760405163251f56a160e21b815260040160405180910390fd5b6000438263ffffffff161061162f5760405163e64f180f60e01b815260040160405180910390fd5b6001600160a01b0383166000908152606a602052604090206105e89063ffffffff80851690610b4c16565b806001600160a01b0316826001600160a01b03161061058e5760405163ba50f91160e01b815260040160405180910390fd5b6116a06001600160a01b0384168383611ace565b610dbf57604051638baa579f60e01b815260040160405180910390fd5b6000438263ffffffff16106116e55760405163e64f180f60e01b815260040160405180910390fd5b6001600160a01b0383166000908152606d602052604090206105e89063ffffffff80851690610b4c16565b600061171b82611c1a565b90508083111561173e57604051634b05a0f760e11b815260040160405180910390fd5b600061174983611c56565b905083811115610a195760405163e121632f60e01b815260040160405180910390fd5b6001600160a01b0383166000908152606e602052604090205460ff16156117a6576040516342ee68b560e01b815260040160405180910390fd5b606580549060006117b6836127fb565b90915550506001600160a01b0383166000908152606e60205260408120805460ff191660011790556117e78461141c565b90506117f28161153f565b50506117fe8483610fa2565b606854604051639926ee7d60e01b81526001600160a01b0390911690639926ee7d906118309087908790600401612aae565b600060405180830381600087803b15801561184a57600080fd5b505af115801561185e573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090871691507fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c190600090a350505050565b81546000908190816118b586610d1a565b90506000821180156118f3575043866118cf60018561299c565b815481106118df576118df6127cf565b60009182526020909120015463ffffffff16145b156119535761190185611c92565b8661190d60018561299c565b8154811061191d5761191d6127cf565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b031602179055506119c1565b85600001604051806040016040528061196b43611cff565b63ffffffff16815260200161197f88611c92565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b9250839150505b9250929050565b600054610100900460ff166119f65760405162461bcd60e51b815260040161099c906129ca565b61062c611d64565b8051600090818080805b8451811015611aac57848181518110611a2357611a236127cf565b6020026020010151600001519250826001600160a01b0316846001600160a01b031610611a635760405163ba50f91160e01b815260040160405180910390fd5b829350848181518110611a7857611a786127cf565b6020026020010151602001516001600160601b031682611a989190612921565b915080611aa4816127fb565b915050611a08565b506127108114611ac25750600095945050505050565b50600195945050505050565b6000806000611add8585611d94565b90925090506000816004811115611af657611af6612af9565b148015611b145750856001600160a01b0316826001600160a01b0316145b15611b24576001925050506105e8565b600080876001600160a01b0316631626ba7e60e01b8888604051602401611b4c929190612b0f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611b8a9190612b28565b600060405180830381855afa9150503d8060008114611bc5576040519150601f19603f3d011682016040523d82523d6000602084013e611bca565b606091505b5091509150818015611bdd575080516020145b8015611c0e57508051630b135d3f60e11b90611c029083016020908101908401612b44565b6001600160e01b031916145b98975050505050505050565b6000438263ffffffff1610611c425760405163e64f180f60e01b815260040160405180910390fd5b610464606b63ffffffff80851690610b4c16565b6000438263ffffffff1610611c7e5760405163e64f180f60e01b815260040160405180910390fd5b610464606c63ffffffff80851690610b4c16565b60006001600160e01b03821115611cfb5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b606482015260840161099c565b5090565b600063ffffffff821115611cfb5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840161099c565b600054610100900460ff16611d8b5760405162461bcd60e51b815260040161099c906129ca565b61062c33610f50565b600080825160411415611dcb5760208301516040840151606085015160001a611dbf87828585611e01565b945094505050506119c8565b825160401415611df55760208301516040840151611dea868383611eee565b9350935050506119c8565b506000905060026119c8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611e385750600090506003611ee5565b8460ff16601b14158015611e5057508460ff16601c14155b15611e615750600090506004611ee5565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611eb5573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611ede57600060019250925050611ee5565b9150600090505b94509492505050565b6000806001600160ff1b03831681611f0b60ff86901c601b612921565b9050611f1987828885611e01565b935093505050935093915050565b508054600082559060005260206000209081019061044b91905b80821115611cfb5760008155600101611f41565b634e487b7160e01b600052604160045260246000fd5b604051602081016001600160401b0381118282101715611f8d57611f8d611f55565b60405290565b604080519081016001600160401b0381118282101715611f8d57611f8d611f55565b604051601f8201601f191681016001600160401b0381118282101715611fdd57611fdd611f55565b604052919050565b60006001600160401b03821115611ffe57611ffe611f55565b5060051b60200190565b6001600160a01b038116811461044b57600080fd5b600082601f83011261202e57600080fd5b8135602061204361203e83611fe5565b611fb5565b82815260059290921b8401810191818101908684111561206257600080fd5b8286015b8481101561208657803561207981612008565b8352918301918301612066565b509695505050505050565b6000602082840312156120a357600080fd5b81356001600160401b038111156120b957600080fd5b6120c58482850161201d565b949350505050565b63ffffffff8116811461044b57600080fd5b6000602082840312156120f157600080fd5b81356105e8816120cd565b60006001600160401b0382111561211557612115611f55565b50601f01601f191660200190565b600082601f83011261213457600080fd5b813561214261203e826120fc565b81815284602083860101111561215757600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561218757600080fd5b8235915060208301356001600160401b038111156121a457600080fd5b6121b085828601612123565b9150509250929050565b8051602080845281518482018190526000926040919083019082870190855b8181101561221057835180516001600160a01b031684528601516001600160601b03168684015292850192918401916001016121d9565b5090979650505050505050565b6020815260006105e860208301846121ba565b60006020828403121561224257600080fd5b81356105e881612008565b6000806040838503121561226057600080fd5b82356001600160401b038082111561227757600080fd5b908401906060828703121561228b57600080fd5b6040516060810181811083821117156122a6576122a6611f55565b6040528235828111156122b857600080fd5b6122c488828601612123565b825250602083013560208201526040830135604082015280945050505060208301356122ef81612008565b809150509250929050565b6000806040838503121561230d57600080fd5b82356001600160401b038082111561232457600080fd5b818501915085601f83011261233857600080fd5b8135602061234861203e83611fe5565b82815260059290921b8401810191818101908984111561236757600080fd5b8286015b8481101561239f578035868111156123835760008081fd5b6123918c86838b010161201d565b84525091830191830161236b565b50965050860135925050808211156123b657600080fd5b506121b085828601612123565b600080604083850312156123d657600080fd5b82356123e181612008565b946020939093013593505050565b60006020828403121561240157600080fd5b5035919050565b6000806040838503121561241b57600080fd5b8235915060208301356001600160401b0381111561243857600080fd5b6121b08582860161201d565b6000806040838503121561245757600080fd5b823561246281612008565b915060208301356122ef816120cd565b6000602080838503121561248557600080fd5b61248d611f6b565b915082356001600160401b038111156124a557600080fd5b8301601f810185136124b657600080fd5b80356124c461203e82611fe5565b81815260069190911b820183019083810190878311156124e357600080fd5b928401925b8284101561254657604084890312156125015760008081fd5b612509611f93565b843561251481612008565b8152848601356001600160601b03811681146125305760008081fd5b81870152825260409390930192908401906124e8565b8552509295945050505050565b60008060006060848603121561256857600080fd5b833561257381612008565b92506020840135915060408401356001600160401b0381111561259557600080fd5b6125a186828701612472565b9150509250925092565b600080604083850312156125be57600080fd5b82356001600160401b03808211156125d557600080fd5b6125e186838701612472565b935060208501359150808211156125f757600080fd5b506121b08582860161201d565b60005b8381101561261f578181015183820152602001612607565b83811115610a195750506000910152565b600082601f83011261264157600080fd5b8151602061265161203e83611fe5565b82815260059290921b8401810191818101908684111561267057600080fd5b8286015b848110156120865780516001600160401b038111156126935760008081fd5b8701603f810189136126a55760008081fd5b8481015160406126b761203e836120fc565b8281528b828486010111156126cc5760008081fd5b6126db83898301848701612604565b8652505050918301918301612674565b80516126f6816120cd565b919050565b60008060006060848603121561271057600080fd5b83516001600160401b038082111561272757600080fd5b818601915086601f83011261273b57600080fd5b8151602061274b61203e83611fe5565b82815260059290921b8401810191818101908a84111561276a57600080fd5b948201945b8386101561279157855161278281612008565b8252948201949082019061276f565b918901519197509093505050808211156127aa57600080fd5b506127b786828701612630565b9250506127c6604085016126eb565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561280f5761280f6127e5565b5060010190565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b81811015612864578551851683529483019491830191600101612846565b509098975050505050505050565b6000602080838503121561288557600080fd5b82516001600160401b0381111561289b57600080fd5b8301601f810185136128ac57600080fd5b80516128ba61203e82611fe5565b81815260059190911b820183019083810190878311156128d957600080fd5b928401925b828410156128f7578351825292840192908401906128de565b979650505050505050565b600081600019048311821515161561291c5761291c6127e5565b500290565b60008219821115612934576129346127e5565b500190565b60008261295657634e487b7160e01b600052601260045260246000fd5b500490565b600080821280156001600160ff1b038490038513161561297d5761297d6127e5565b600160ff1b8390038412811615612996576129966127e5565b50500190565b6000828210156129ae576129ae6127e5565b500390565b6000816129c2576129c26127e5565b506000190190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b604081526000612a2860408301856121ba565b8281036020840152612a3a81856121ba565b95945050505050565b60008083128015600160ff1b850184121615612a6157612a616127e5565b6001600160ff1b0384018313811615612a7c57612a7c6127e5565b50500390565b60008151808452612a9a816020860160208601612604565b601f01601f19169290920160200192915050565b60018060a01b0383168152604060208201526000825160606040840152612ad860a0840182612a82565b90506020840151606084015260408401516080840152809150509392505050565b634e487b7160e01b600052602160045260246000fd5b8281526040602082015260006120c56040830184612a82565b60008251612b3a818460208701612604565b9190910192915050565b600060208284031215612b5657600080fd5b81516001600160e01b0319811681146105e857600080fdfea2646970667358221220fb651b57e776142777e9aae7db2e48d2fc0d78d97fb6470ad55e40786970e05264736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0,88\x03\x80b\0,8\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0FV[`\x01`\x01`\xA0\x1B\x03\x16`\x80Rb\0\0xV[`\0` \x82\x84\x03\x12\x15b\0\0YW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0qW`\0\x80\xFD[\x93\x92PPPV[`\x80Qa+\xA4b\0\0\x94`\09`\0a\x07\xE2\x01Ra+\xA4`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\xCEW`\x005`\xE0\x1C\x80cm[\xE9&\x11a\x01\x04W\x80c\xAB\x11\x89\x95\x11a\0\xA2W\x80c\xE5\xD9\x8F\x94\x11a\0qW\x80c\xE5\xD9\x8F\x94\x14a\x03\xDDW\x80c\xEC\x7F\xBB1\x14a\x03\xF0W\x80c\xF2\xFD\xE3\x8B\x14a\x04\x1CW\x80c\xFA\xD8\xB3*\x14a\x04/W`\0\x80\xFD[\x80c\xAB\x11\x89\x95\x14a\x03\x9CW\x80c\xB93\xFAt\x14a\x03\xAFW\x80c\xCD\xCD5\x81\x14a\x03\xB7W\x80c\xDE\xC5\xD1\xF6\x14a\x03\xCAW`\0\x80\xFD[\x80c\x85}\xC1\x90\x11a\0\xDEW\x80c\x85}\xC1\x90\x14a\x03]W\x80c\x8D\xA5\xCB[\x14a\x03eW\x80c\x95_-\x90\x14a\x03vW\x80c\x98\xEC\x1A\xC9\x14a\x03\x89W`\0\x80\xFD[\x80cm[\xE9&\x14a\x03\x0FW\x80cqP\x18\xA6\x14a\x03BW\x80ct<1\xF4\x14a\x03JW`\0\x80\xFD[\x80c=V\x11\xF6\x11a\x01qW\x80cX\xC1\xEB\x17\x11a\x01KW\x80cX\xC1\xEB\x17\x14a\x02\xABW\x80c^\x10B\xE8\x14a\x02\xBEW\x80c^\xF53)\x14a\x02\xE9W\x80cibU\xBE\x14a\x02\xFCW`\0\x80\xFD[\x80c=V\x11\xF6\x14a\x02}W\x80c@\xBF/\xB7\x14a\x02\x90W\x80cQ@\xA5H\x14a\x02\x98W`\0\x80\xFD[\x80c\x17\x03\xA0\x18\x11a\x01\xADW\x80c\x17\x03\xA0\x18\x14a\x02:W\x80c\x1EL\xD8^\x14a\x02OW\x80c1O:I\x14a\x02bW\x80c;$.J\x14a\x02jW`\0\x80\xFD[\x80b\xCF*\xB5\x14a\x01\xD3W\x80c\r\xBA3\x94\x14a\x01\xE8W\x80c\x16&\xBA~\x14a\x02\x0EW[`\0\x80\xFD[a\x01\xE6a\x01\xE16`\x04a \x91V[a\x04BV[\0[a\x01\xFBa\x01\xF66`\x04a \xDFV[a\x04NV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02!a\x02\x1C6`\x04a!tV[a\x04jV[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x02\x05V[a\x02Ba\x04\xA8V[`@Qa\x02\x05\x91\x90a\"\x1DV[a\x01\xFBa\x02]6`\x04a \xDFV[a\x05;V[a\x01\xFBa\x05QV[a\x01\xFBa\x02x6`\x04a\"0V[a\x05bV[a\x01\xE6a\x02\x8B6`\x04a\"MV[a\x05\x83V[`gTa\x01\xFBV[a\x01\xE6a\x02\xA66`\x04a\"\xFAV[a\x05\x92V[a\x01\xE6a\x02\xB96`\x04a\"0V[a\x05\xB5V[a\x02\xD1a\x02\xCC6`\x04a#\xC3V[a\x05\xC6V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x05V[a\x01\xE6a\x02\xF76`\x04a#\xEFV[a\x05\xEFV[a\x01\xE6a\x03\n6`\x04a$\x08V[a\x06\0V[a\x032a\x03\x1D6`\x04a\"0V[`\x97` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x02\x05V[a\x01\xE6a\x06\x1AV[a\x01\xE6a\x03X6`\x04a\"0V[a\x06.V[a\x01\xE6a\x06hV[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xD1V[a\x01\xFBa\x03\x846`\x04a$DV[a\x06qV[a\x01\xFBa\x03\x976`\x04a\"0V[a\x06\x9CV[a\x01\xE6a\x03\xAA6`\x04a%SV[a\t\x03V[a\x01\xFBa\n\x1FV[a\x02\xD1a\x03\xC56`\x04a\"0V[a\n+V[a\x01\xE6a\x03\xD86`\x04a%\xABV[a\nLV[a\x01\xE6a\x03\xEB6`\x04a\"0V[a\n]V[a\x032a\x03\xFE6`\x04a\"0V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`n` R`@\x90 T`\xFF\x16\x90V[a\x01\xE6a\x04*6`\x04a\"0V[a\nnV[a\x01\xE6a\x04=6`\x04a\"0V[a\n\xE4V[a\x04K\x81a\n\xF5V[PV[`\0a\x04d`kc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\x0BL\x16V[\x92\x91PPV[`\0\x80`\0\x80\x84\x80` \x01\x90Q\x81\x01\x90a\x04\x84\x91\x90a&\xFBV[\x92P\x92P\x92Pa\x04\x96\x86\x84\x84\x84a\x0C[V[Pc\x0B\x13]?`\xE1\x1B\x95\x94PPPPPV[`@\x80Q` \x81\x01\x90\x91R``\x81R`@\x80Q`f\x80T` \x81\x81\x02\x84\x01\x85\x01\x85R\x83\x01\x81\x81R\x92\x93\x91\x92\x84\x92\x90\x91\x84\x91`\0\x90\x85\x01[\x82\x82\x10\x15a\x05.W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x90\x91R\x90\x84\x01T`\x01`\x01`\xA0\x1B\x03\x81\x16\x82R`\x01`\xA0\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x81\x83\x01R\x82R`\x01\x90\x92\x01\x91\x01a\x04\xDFV[PPPP\x81RPP\x90P\x90V[`\0a\x04d`lc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\x0BL\x16V[`\0a\x05]`ka\r\x1AV[\x90P\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`m` R`@\x81 a\x04d\x90a\r\x1AV[a\x05\x8E3\x83\x83a\rvV[PPV[a\x05\x8E\x82`\0\x81Q\x81\x10a\x05\xA8Wa\x05\xA8a'\xCFV[` \x02` \x01\x01Qa\r\xC4V[a\x05\xBDa\r\xE7V[a\x04K\x81a\x0EAV[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`j` R`@\x81 a\x05\xE8\x90\x83a\x0BLV[\x93\x92PPPV[a\x05\xF7a\r\xE7V[a\x04K\x81a\x0E\xC7V[a\x06\x08a\r\xE7V[a\x06\x11\x82a\x0F\nV[a\x05\x8E\x81a\n\xF5V[a\x06\"a\r\xE7V[a\x06,`\0a\x0FPV[V[3`\0\x90\x81R`n` R`@\x90 T`\xFF\x16a\x06^W`@Qc%\xECl\x1F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x04K3\x82a\x0F\xA2V[a\x06,3a\x10UV[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`m` R`@\x81 a\x05\xE8\x90c\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\x0BL\x16V[`\0\x80`f`\0\x01\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x07\x13W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x90\x91R\x90\x84\x01T`\x01`\x01`\xA0\x1B\x03\x81\x16\x82R`\x01`\xA0\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x81\x83\x01R\x82R`\x01\x90\x92\x01\x91\x01a\x06\xC4V[PPPP\x90P`\0\x80\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x075Wa\x075a\x1FUV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07^W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x07\xC7W\x83\x81\x81Q\x81\x10a\x07\x7FWa\x07\x7Fa'\xCFV[` \x02` \x01\x01Q`\0\x01Q\x82\x82\x81Q\x81\x10a\x07\x9DWa\x07\x9Da'\xCFV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x07\xBF\x81a'\xFBV[\x91PPa\x07dV[P`@Qc\x90\x04\x13G`\xE0\x1B\x81R`\0\x90`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x90\x04\x13G\x90a\x08\x19\x90\x89\x90\x86\x90`\x04\x01a(\x16V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x086W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x08^\x91\x90\x81\x01\x90a(rV[\x90P`\0[\x84Q\x81\x10\x15a\x08\xD5W\x84\x81\x81Q\x81\x10a\x08~Wa\x08~a'\xCFV[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x08\xA5Wa\x08\xA5a'\xCFV[` \x02` \x01\x01Qa\x08\xB7\x91\x90a)\x02V[a\x08\xC1\x90\x85a)!V[\x93P\x80a\x08\xCD\x81a'\xFBV[\x91PPa\x08cV[Pa\x08\xE2a'\x10\x84a)9V[\x92P`gT\x83\x10a\x08\xF7WP\x90\x94\x93PPPPV[P`\0\x95\x94PPPPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\t#WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\t=WP0;\x15\x80\x15a\t=WP`\0T`\xFF\x16`\x01\x14[a\t\xA5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\t\xC8W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\t\xD3\x84\x84\x84a\x11xV[\x80\x15a\n\x19W`\0\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPV[`\0a\x05]`la\r\x1AV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`j` R`@\x81 a\x04d\x90a\r\x1AV[a\nTa\r\xE7V[a\x06\x11\x82a\x11\xD4V[a\nea\r\xE7V[a\x04K\x81a\x133V[a\nva\r\xE7V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\n\xDBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\t\x9CV[a\x04K\x81a\x0FPV[a\n\xECa\r\xE7V[a\x04K\x81a\x13sV[`\0\x80[\x82Q\x81\x10\x15a\x0BBWa\x0B$\x83\x82\x81Q\x81\x10a\x0B\x17Wa\x0B\x17a'\xCFV[` \x02` \x01\x01Qa\x14\x1CV[a\x0B.\x90\x83a)[V[\x91P\x80a\x0B:\x81a'\xFBV[\x91PPa\n\xF9V[Pa\n\x19\x81a\x15?V[`\0C\x82\x10a\x0B\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FCheckpoints: block not yet mined`D\x82\x01R`d\x01a\t\x9CV[\x82T`\0[\x81\x81\x10\x15a\x0C\x02W`\0a\x0B\xB6\x82\x84a\x15\xABV[\x90P\x84\x86`\0\x01\x82\x81T\x81\x10a\x0B\xCEWa\x0B\xCEa'\xCFV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x0B\xEEW\x80\x92Pa\x0B\xFCV[a\x0B\xF9\x81`\x01a)!V[\x91P[Pa\x0B\xA2V[\x81\x15a\x0CFW\x84a\x0C\x14`\x01\x84a)\x9CV[\x81T\x81\x10a\x0C$Wa\x0C$a'\xCFV[`\0\x91\x82R` \x90\x91 \x01Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\x0CIV[`\0[`\x01`\x01`\xE0\x1B\x03\x16\x95\x94PPPPPV[`\0\x83Q\x90P`\0\x80`\0\x80a\x0Cr\x85\x88Qa\x15\xC6V[`\0[\x85\x81\x10\x15a\r\x04W\x88\x81\x81Q\x81\x10a\x0C\x8FWa\x0C\x8Fa'\xCFV[` \x02` \x01\x01Q\x94Pa\x0C\xA3\x85\x88a\x16\x07V[\x92Pa\x0C\xAF\x84\x86a\x16ZV[a\x0C\xD3\x83\x8B\x8A\x84\x81Q\x81\x10a\x0C\xC6Wa\x0C\xC6a'\xCFV[` \x02` \x01\x01Qa\x16\x8CV[\x84\x93P`\0a\x0C\xE2\x86\x89a\x16\xBDV[\x90Pa\x0C\xEE\x81\x84a)!V[\x92PP\x80\x80a\x0C\xFC\x90a'\xFBV[\x91PPa\x0CuV[Pa\r\x0F\x81\x87a\x17\x10V[PPPPPPPPPV[\x80T`\0\x90\x80\x15a\rcW\x82a\r1`\x01\x83a)\x9CV[\x81T\x81\x10a\rAWa\rAa'\xCFV[`\0\x91\x82R` \x90\x91 \x01Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\rfV[`\0[`\x01`\x01`\xE0\x1B\x03\x16\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x97` R`@\x90 T`\xFF\x16\x15\x15`\x01\x14a\r\xB4W`@Qc8\x0F\xA2\x13`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\r\xBF\x83\x83\x83a\x17lV[PPPV[`eT\x81Q\x14a\x04BW`@Qc\x16\x9E\xFB[`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x06,W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\x97` R`@\x90 T`\xFF\x16\x15a\x0E{W`@Qcx\xF5\xEEa`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x81\x81R`\x97` R`@\x80\x82 \x80T`\xFF\x19\x16`\x01\x17\x90UQ\x7F\xE9\xBC\x8E\xB0\x0C\x07f\xD7\x89\xEC\xBA\0\x0FXT\x06\x07[\x05;\xF1\x84*\xA1\x9DJ\xF5,R\xBCi \x91\x90\xA2PV[a\x0E\xD2`l\x82a\x18\xA4V[PP`@Q\x81\x81R\x7F\x93$\xF7\xE5\xA7\xC0(\x88\x08\xA64\xCC\xDED\xB8\xE9ygdt\xB2.)\xEE\x9D\xD5i\xB5^y\x1AK\x90` \x01`@Q\x80\x91\x03\x90\xA1PV[`g\x80T\x90\x82\x90U`@\x80Q\x82\x81R` \x81\x01\x84\x90R\x7Fq<\xA5;\x88\xD6\xEBc\xF5\xB1\x85L\xB8\xCB\xDDsn\xC5\x1E\xDA\"^Fy\x1A\xA9)\x8B\x01`d\x8F\x91\x01[`@Q\x80\x91\x03\x90\xA1PPV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`j` R`@\x81 a\x0F\xC3\x90a\r\x1AV[\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x0F\xE4WPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x90\x81R`j` R`@\x90 a\x10\x08\x91\x84\x16a\x18\xA4V[PP`@Q`\x01`\x01`\xA0\x1B\x03\x82\x81\x16\x82R\x80\x84\x16\x91C\x91\x86\x16\x90\x7F\xD0a\x16\x82R\xF4As6X\xF0\x9EM\x8F[-\x99\x8E\xD4\xEF$\xA2\xBB\xFDl\xEC\xA5.\xA11P\x02\x90` \x01`@Q\x80\x91\x03\x90\xA4PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`n` R`@\x90 T`\xFF\x16a\x10\x8EW`@Qc%\xECl\x1F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`e\x80T\x90`\0a\x10\x9E\x83a)\xB3V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`n` R`@\x81 \x80T`\xFF\x19\x16\x90Ua\x10\xCC\x82a\x14\x1CV[\x90Pa\x10\xD7\x81a\x15?V[PP`hT`@QcQ\xB2zm`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R\x90\x91\x16\x90c\xA3d\xF4\xDA\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x11 W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x114W=`\0\x80>=`\0\xFD[PP`hT`@Q`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x93P\x90\x85\x16\x91P\x7F1\xE0\xAD\xFE\xC7\x1B\xCC\xEE7\xB6\xE8:\x90\xC2\xFE\xDB\x17\xD8\xF1i?\xEE\x86W`@QcK\x05\xA0\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x17I\x83a\x1CVV[\x90P\x83\x81\x11\x15a\n\x19W`@Qc\xE1!c/`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`n` R`@\x90 T`\xFF\x16\x15a\x17\xA6W`@QcB\xEEh\xB5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`e\x80T\x90`\0a\x17\xB6\x83a'\xFBV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`n` R`@\x81 \x80T`\xFF\x19\x16`\x01\x17\x90Ua\x17\xE7\x84a\x14\x1CV[\x90Pa\x17\xF2\x81a\x15?V[PPa\x17\xFE\x84\x83a\x0F\xA2V[`hT`@Qc\x99&\xEE}`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x99&\xEE}\x90a\x180\x90\x87\x90\x87\x90`\x04\x01a*\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18JW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18^W=`\0\x80>=`\0\xFD[PP`hT`@Q`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x93P\x90\x87\x16\x91P\x7F\xA4S\xDBa*\xF5\x9EU!\xD6\xAB\x92\x84\xDC>-\x06\xAF(n\xB1\xB1\xB7\xB7q\xFC\xE4ql\x19\xF2\xC1\x90`\0\x90\xA3PPPPV[\x81T`\0\x90\x81\x90\x81a\x18\xB5\x86a\r\x1AV[\x90P`\0\x82\x11\x80\x15a\x18\xF3WPC\x86a\x18\xCF`\x01\x85a)\x9CV[\x81T\x81\x10a\x18\xDFWa\x18\xDFa'\xCFV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x14[\x15a\x19SWa\x19\x01\x85a\x1C\x92V[\x86a\x19\r`\x01\x85a)\x9CV[\x81T\x81\x10a\x19\x1DWa\x19\x1Da'\xCFV[\x90`\0R` `\0 \x01`\0\x01`\x04a\x01\0\n\x81T\x81`\x01`\x01`\xE0\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`\xE0\x1B\x03\x16\x02\x17\x90UPa\x19\xC1V[\x85`\0\x01`@Q\x80`@\x01`@R\x80a\x19kCa\x1C\xFFV[c\xFF\xFF\xFF\xFF\x16\x81R` \x01a\x19\x7F\x88a\x1C\x92V[`\x01`\x01`\xE0\x1B\x03\x90\x81\x16\x90\x91R\x82T`\x01\x81\x01\x84U`\0\x93\x84R` \x93\x84\x90 \x83Q\x94\x90\x93\x01Q\x90\x91\x16d\x01\0\0\0\0\x02c\xFF\xFF\xFF\xFF\x90\x93\x16\x92\x90\x92\x17\x91\x01U[\x92P\x83\x91PP[\x92P\x92\x90PV[`\0Ta\x01\0\x90\x04`\xFF\x16a\x19\xF6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\t\x9C\x90a)\xCAV[a\x06,a\x1DdV[\x80Q`\0\x90\x81\x80\x80\x80[\x84Q\x81\x10\x15a\x1A\xACW\x84\x81\x81Q\x81\x10a\x1A#Wa\x1A#a'\xCFV[` \x02` \x01\x01Q`\0\x01Q\x92P\x82`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x10a\x1AcW`@Qc\xBAP\xF9\x11`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82\x93P\x84\x81\x81Q\x81\x10a\x1AxWa\x1Axa'\xCFV[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x82a\x1A\x98\x91\x90a)!V[\x91P\x80a\x1A\xA4\x81a'\xFBV[\x91PPa\x1A\x08V[Pa'\x10\x81\x14a\x1A\xC2WP`\0\x95\x94PPPPPV[P`\x01\x95\x94PPPPPV[`\0\x80`\0a\x1A\xDD\x85\x85a\x1D\x94V[\x90\x92P\x90P`\0\x81`\x04\x81\x11\x15a\x1A\xF6Wa\x1A\xF6a*\xF9V[\x14\x80\x15a\x1B\x14WP\x85`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14[\x15a\x1B$W`\x01\x92PPPa\x05\xE8V[`\0\x80\x87`\x01`\x01`\xA0\x1B\x03\x16c\x16&\xBA~`\xE0\x1B\x88\x88`@Q`$\x01a\x1BL\x92\x91\x90a+\x0FV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16`\x01`\x01`\xE0\x1B\x03\x19\x90\x94\x16\x93\x90\x93\x17\x90\x92R\x90Qa\x1B\x8A\x91\x90a+(V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x1B\xC5W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1B\xCAV[``\x91P[P\x91P\x91P\x81\x80\x15a\x1B\xDDWP\x80Q` \x14[\x80\x15a\x1C\x0EWP\x80Qc\x0B\x13]?`\xE1\x1B\x90a\x1C\x02\x90\x83\x01` \x90\x81\x01\x90\x84\x01a+DV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[\x98\x97PPPPPPPPV[`\0C\x82c\xFF\xFF\xFF\xFF\x16\x10a\x1CBW`@Qc\xE6O\x18\x0F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x04d`kc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\x0BL\x16V[`\0C\x82c\xFF\xFF\xFF\xFF\x16\x10a\x1C~W`@Qc\xE6O\x18\x0F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x04d`lc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\x0BL\x16V[`\0`\x01`\x01`\xE0\x1B\x03\x82\x11\x15a\x1C\xFBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FSafeCast: value doesn't fit in 2`D\x82\x01Rf24 bits`\xC8\x1B`d\x82\x01R`\x84\x01a\t\x9CV[P\x90V[`\0c\xFF\xFF\xFF\xFF\x82\x11\x15a\x1C\xFBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FSafeCast: value doesn't fit in 3`D\x82\x01Re2 bits`\xD0\x1B`d\x82\x01R`\x84\x01a\t\x9CV[`\0Ta\x01\0\x90\x04`\xFF\x16a\x1D\x8BW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\t\x9C\x90a)\xCAV[a\x06,3a\x0FPV[`\0\x80\x82Q`A\x14\x15a\x1D\xCBW` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1Aa\x1D\xBF\x87\x82\x85\x85a\x1E\x01V[\x94P\x94PPPPa\x19\xC8V[\x82Q`@\x14\x15a\x1D\xF5W` \x83\x01Q`@\x84\x01Qa\x1D\xEA\x86\x83\x83a\x1E\xEEV[\x93P\x93PPPa\x19\xC8V[P`\0\x90P`\x02a\x19\xC8V[`\0\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x83\x11\x15a\x1E8WP`\0\x90P`\x03a\x1E\xE5V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15a\x1EPWP\x84`\xFF\x16`\x1C\x14\x15[\x15a\x1EaWP`\0\x90P`\x04a\x1E\xE5V[`@\x80Q`\0\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x1E\xB5W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1E\xDEW`\0`\x01\x92P\x92PPa\x1E\xE5V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81a\x1F\x0B`\xFF\x86\x90\x1C`\x1Ba)!V[\x90Pa\x1F\x19\x87\x82\x88\x85a\x1E\x01V[\x93P\x93PPP\x93P\x93\x91PPV[P\x80T`\0\x82U\x90`\0R` `\0 \x90\x81\x01\x90a\x04K\x91\x90[\x80\x82\x11\x15a\x1C\xFBW`\0\x81U`\x01\x01a\x1FAV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q` \x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1F\x8DWa\x1F\x8Da\x1FUV[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1F\x8DWa\x1F\x8Da\x1FUV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1F\xDDWa\x1F\xDDa\x1FUV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x1F\xFEWa\x1F\xFEa\x1FUV[P`\x05\x1B` \x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04KW`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a .W`\0\x80\xFD[\x815` a Ca >\x83a\x1F\xE5V[a\x1F\xB5V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a bW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a \x86W\x805a y\x81a \x08V[\x83R\x91\x83\x01\x91\x83\x01a fV[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a \xA3W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a \xB9W`\0\x80\xFD[a \xC5\x84\x82\x85\x01a \x1DV[\x94\x93PPPPV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x04KW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a \xF1W`\0\x80\xFD[\x815a\x05\xE8\x81a \xCDV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a!\x15Wa!\x15a\x1FUV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a!4W`\0\x80\xFD[\x815a!Ba >\x82a \xFCV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a!WW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a!\x87W`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a!\xA4W`\0\x80\xFD[a!\xB0\x85\x82\x86\x01a!#V[\x91PP\x92P\x92\x90PV[\x80Q` \x80\x84R\x81Q\x84\x82\x01\x81\x90R`\0\x92`@\x91\x90\x83\x01\x90\x82\x87\x01\x90\x85[\x81\x81\x10\x15a\"\x10W\x83Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x86\x01Q`\x01`\x01``\x1B\x03\x16\x86\x84\x01R\x92\x85\x01\x92\x91\x84\x01\x91`\x01\x01a!\xD9V[P\x90\x97\x96PPPPPPPV[` \x81R`\0a\x05\xE8` \x83\x01\x84a!\xBAV[`\0` \x82\x84\x03\x12\x15a\"BW`\0\x80\xFD[\x815a\x05\xE8\x81a \x08V[`\0\x80`@\x83\x85\x03\x12\x15a\"`W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\"wW`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a\"\x8BW`\0\x80\xFD[`@Q``\x81\x01\x81\x81\x10\x83\x82\x11\x17\x15a\"\xA6Wa\"\xA6a\x1FUV[`@R\x825\x82\x81\x11\x15a\"\xB8W`\0\x80\xFD[a\"\xC4\x88\x82\x86\x01a!#V[\x82RP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x94PPPP` \x83\x015a\"\xEF\x81a \x08V[\x80\x91PP\x92P\x92\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a#\rW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a#$W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a#8W`\0\x80\xFD[\x815` a#Ha >\x83a\x1F\xE5V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a#gW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a#\x9FW\x805\x86\x81\x11\x15a#\x83W`\0\x80\x81\xFD[a#\x91\x8C\x86\x83\x8B\x01\x01a \x1DV[\x84RP\x91\x83\x01\x91\x83\x01a#kV[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a#\xB6W`\0\x80\xFD[Pa!\xB0\x85\x82\x86\x01a!#V[`\0\x80`@\x83\x85\x03\x12\x15a#\xD6W`\0\x80\xFD[\x825a#\xE1\x81a \x08V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a$\x01W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a$\x1BW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a$8W`\0\x80\xFD[a!\xB0\x85\x82\x86\x01a \x1DV[`\0\x80`@\x83\x85\x03\x12\x15a$WW`\0\x80\xFD[\x825a$b\x81a \x08V[\x91P` \x83\x015a\"\xEF\x81a \xCDV[`\0` \x80\x83\x85\x03\x12\x15a$\x85W`\0\x80\xFD[a$\x8Da\x1FkV[\x91P\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a$\xA5W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a$\xB6W`\0\x80\xFD[\x805a$\xC4a >\x82a\x1F\xE5V[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a$\xE3W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a%FW`@\x84\x89\x03\x12\x15a%\x01W`\0\x80\x81\xFD[a%\ta\x1F\x93V[\x845a%\x14\x81a \x08V[\x81R\x84\x86\x015`\x01`\x01``\x1B\x03\x81\x16\x81\x14a%0W`\0\x80\x81\xFD[\x81\x87\x01R\x82R`@\x93\x90\x93\x01\x92\x90\x84\x01\x90a$\xE8V[\x85RP\x92\x95\x94PPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a%hW`\0\x80\xFD[\x835a%s\x81a \x08V[\x92P` \x84\x015\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a%\x95W`\0\x80\xFD[a%\xA1\x86\x82\x87\x01a$rV[\x91PP\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a%\xBEW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a%\xD5W`\0\x80\xFD[a%\xE1\x86\x83\x87\x01a$rV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a%\xF7W`\0\x80\xFD[Pa!\xB0\x85\x82\x86\x01a \x1DV[`\0[\x83\x81\x10\x15a&\x1FW\x81\x81\x01Q\x83\x82\x01R` \x01a&\x07V[\x83\x81\x11\x15a\n\x19WPP`\0\x91\x01RV[`\0\x82`\x1F\x83\x01\x12a&AW`\0\x80\xFD[\x81Q` a&Qa >\x83a\x1F\xE5V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a&pW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a \x86W\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a&\x93W`\0\x80\x81\xFD[\x87\x01`?\x81\x01\x89\x13a&\xA5W`\0\x80\x81\xFD[\x84\x81\x01Q`@a&\xB7a >\x83a \xFCV[\x82\x81R\x8B\x82\x84\x86\x01\x01\x11\x15a&\xCCW`\0\x80\x81\xFD[a&\xDB\x83\x89\x83\x01\x84\x87\x01a&\x04V[\x86RPPP\x91\x83\x01\x91\x83\x01a&tV[\x80Qa&\xF6\x81a \xCDV[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a'\x10W`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a''W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a';W`\0\x80\xFD[\x81Q` a'Ka >\x83a\x1F\xE5V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x8A\x84\x11\x15a'jW`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a'\x91W\x85Qa'\x82\x81a \x08V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a'oV[\x91\x89\x01Q\x91\x97P\x90\x93PPP\x80\x82\x11\x15a'\xAAW`\0\x80\xFD[Pa'\xB7\x86\x82\x87\x01a&0V[\x92PPa'\xC6`@\x85\x01a&\xEBV[\x90P\x92P\x92P\x92V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a(\x0FWa(\x0Fa'\xE5V[P`\x01\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x82R`@` \x80\x84\x01\x82\x90R\x84Q\x91\x84\x01\x82\x90R`\0\x92\x85\x82\x01\x92\x90\x91\x90``\x86\x01\x90\x85[\x81\x81\x10\x15a(dW\x85Q\x85\x16\x83R\x94\x83\x01\x94\x91\x83\x01\x91`\x01\x01a(FV[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a(\x85W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a(\x9BW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a(\xACW`\0\x80\xFD[\x80Qa(\xBAa >\x82a\x1F\xE5V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a(\xD9W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a(\xF7W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a(\xDEV[\x97\x96PPPPPPPV[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a)\x1CWa)\x1Ca'\xE5V[P\x02\x90V[`\0\x82\x19\x82\x11\x15a)4Wa)4a'\xE5V[P\x01\x90V[`\0\x82a)VWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0\x80\x82\x12\x80\x15`\x01`\x01`\xFF\x1B\x03\x84\x90\x03\x85\x13\x16\x15a)}Wa)}a'\xE5V[`\x01`\xFF\x1B\x83\x90\x03\x84\x12\x81\x16\x15a)\x96Wa)\x96a'\xE5V[PP\x01\x90V[`\0\x82\x82\x10\x15a)\xAEWa)\xAEa'\xE5V[P\x03\x90V[`\0\x81a)\xC2Wa)\xC2a'\xE5V[P`\0\x19\x01\x90V[` \x80\x82R`+\x90\x82\x01R\x7FInitializable: contract is not i`@\x82\x01Rjnitializing`\xA8\x1B``\x82\x01R`\x80\x01\x90V[`@\x81R`\0a*(`@\x83\x01\x85a!\xBAV[\x82\x81\x03` \x84\x01Ra*:\x81\x85a!\xBAV[\x95\x94PPPPPV[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a*aWa*aa'\xE5V[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a*|Wa*|a'\xE5V[PP\x03\x90V[`\0\x81Q\x80\x84Ra*\x9A\x81` \x86\x01` \x86\x01a&\x04V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01R`\0\x82Q```@\x84\x01Ra*\xD8`\xA0\x84\x01\x82a*\x82V[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x82\x81R`@` \x82\x01R`\0a \xC5`@\x83\x01\x84a*\x82V[`\0\x82Qa+:\x81\x84` \x87\x01a&\x04V[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a+VW`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x05\xE8W`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xFBe\x1BW\xE7v\x14'w\xE9\xAA\xE7\xDB.H\xD2\xFC\rx\xD9\x7F\xB6G\n\xD5^@xip\xE0RdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106101ce5760003560e01c80636d5be92611610104578063ab118995116100a2578063e5d98f9411610071578063e5d98f94146103dd578063ec7fbb31146103f0578063f2fde38b1461041c578063fad8b32a1461042f57600080fd5b8063ab1189951461039c578063b933fa74146103af578063cdcd3581146103b7578063dec5d1f6146103ca57600080fd5b8063857dc190116100de578063857dc1901461035d5780638da5cb5b14610365578063955f2d901461037657806398ec1ac91461038957600080fd5b80636d5be9261461030f578063715018a614610342578063743c31f41461034a57600080fd5b80633d5611f61161017157806358c1eb171161014b57806358c1eb17146102ab5780635e1042e8146102be5780635ef53329146102e9578063696255be146102fc57600080fd5b80633d5611f61461027d57806340bf2fb7146102905780635140a5481461029857600080fd5b80631703a018116101ad5780631703a0181461023a5780631e4cd85e1461024f578063314f3a49146102625780633b242e4a1461026a57600080fd5b8062cf2ab5146101d35780630dba3394146101e85780631626ba7e1461020e575b600080fd5b6101e66101e1366004612091565b610442565b005b6101fb6101f63660046120df565b61044e565b6040519081526020015b60405180910390f35b61022161021c366004612174565b61046a565b6040516001600160e01b03199091168152602001610205565b6102426104a8565b604051610205919061221d565b6101fb61025d3660046120df565b61053b565b6101fb610551565b6101fb610278366004612230565b610562565b6101e661028b36600461224d565b610583565b6067546101fb565b6101e66102a63660046122fa565b610592565b6101e66102b9366004612230565b6105b5565b6102d16102cc3660046123c3565b6105c6565b6040516001600160a01b039091168152602001610205565b6101e66102f73660046123ef565b6105ef565b6101e661030a366004612408565b610600565b61033261031d366004612230565b60976020526000908152604090205460ff1681565b6040519015158152602001610205565b6101e661061a565b6101e6610358366004612230565b61062e565b6101e6610668565b6033546001600160a01b03166102d1565b6101fb610384366004612444565b610671565b6101fb610397366004612230565b61069c565b6101e66103aa366004612553565b610903565b6101fb610a1f565b6102d16103c5366004612230565b610a2b565b6101e66103d83660046125ab565b610a4c565b6101e66103eb366004612230565b610a5d565b6103326103fe366004612230565b6001600160a01b03166000908152606e602052604090205460ff1690565b6101e661042a366004612230565b610a6e565b6101e661043d366004612230565b610ae4565b61044b81610af5565b50565b6000610464606b63ffffffff80851690610b4c16565b92915050565b6000806000808480602001905181019061048491906126fb565b92509250925061049686848484610c5b565b50630b135d3f60e11b95945050505050565b6040805160208101909152606081526040805160668054602081810284018501855283018181529293919284929091849160009085015b8282101561052e57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b0316818301528252600190920191016104df565b5050505081525050905090565b6000610464606c63ffffffff80851690610b4c16565b600061055d606b610d1a565b905090565b6001600160a01b0381166000908152606d6020526040812061046490610d1a565b61058e338383610d76565b5050565b61058e826000815181106105a8576105a86127cf565b6020026020010151610dc4565b6105bd610de7565b61044b81610e41565b6001600160a01b0382166000908152606a602052604081206105e89083610b4c565b9392505050565b6105f7610de7565b61044b81610ec7565b610608610de7565b61061182610f0a565b61058e81610af5565b610622610de7565b61062c6000610f50565b565b336000908152606e602052604090205460ff1661065e576040516325ec6c1f60e01b815260040160405180910390fd5b61044b3382610fa2565b61062c33611055565b6001600160a01b0382166000908152606d602052604081206105e89063ffffffff80851690610b4c16565b6000806066600001805480602002602001604051908101604052809291908181526020016000905b8282101561071357600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b0316818301528252600190920191016106c4565b50505050905060008082516001600160401b0381111561073557610735611f55565b60405190808252806020026020018201604052801561075e578160200160208202803683370190505b50905060005b83518110156107c75783818151811061077f5761077f6127cf565b60200260200101516000015182828151811061079d5761079d6127cf565b6001600160a01b0390921660209283029190910190910152806107bf816127fb565b915050610764565b50604051639004134760e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906390041347906108199089908690600401612816565b600060405180830381865afa158015610836573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261085e9190810190612872565b905060005b84518110156108d55784818151811061087e5761087e6127cf565b6020026020010151602001516001600160601b03168282815181106108a5576108a56127cf565b60200260200101516108b79190612902565b6108c19085612921565b9350806108cd816127fb565b915050610863565b506108e261271084612939565b925060675483106108f7575090949350505050565b50600095945050505050565b600054610100900460ff16158080156109235750600054600160ff909116105b8061093d5750303b15801561093d575060005460ff166001145b6109a55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156109c8576000805461ff0019166101001790555b6109d3848484611178565b8015610a19576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b600061055d606c610d1a565b6001600160a01b0381166000908152606a6020526040812061046490610d1a565b610a54610de7565b610611826111d4565b610a65610de7565b61044b81611333565b610a76610de7565b6001600160a01b038116610adb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161099c565b61044b81610f50565b610aec610de7565b61044b81611373565b6000805b8251811015610b4257610b24838281518110610b1757610b176127cf565b602002602001015161141c565b610b2e908361295b565b915080610b3a816127fb565b915050610af9565b50610a198161153f565b6000438210610b9d5760405162461bcd60e51b815260206004820181905260248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e6564604482015260640161099c565b825460005b81811015610c02576000610bb682846115ab565b905084866000018281548110610bce57610bce6127cf565b60009182526020909120015463ffffffff161115610bee57809250610bfc565b610bf9816001612921565b91505b50610ba2565b8115610c465784610c1460018461299c565b81548110610c2457610c246127cf565b60009182526020909120015464010000000090046001600160e01b0316610c49565b60005b6001600160e01b031695945050505050565b600083519050600080600080610c728588516115c6565b60005b85811015610d0457888181518110610c8f57610c8f6127cf565b60200260200101519450610ca38588611607565b9250610caf848661165a565b610cd3838b8a8481518110610cc657610cc66127cf565b602002602001015161168c565b8493506000610ce286896116bd565b9050610cee8184612921565b9250508080610cfc906127fb565b915050610c75565b50610d0f8187611710565b505050505050505050565b80546000908015610d635782610d3160018361299c565b81548110610d4157610d416127cf565b60009182526020909120015464010000000090046001600160e01b0316610d66565b60005b6001600160e01b03169392505050565b6001600160a01b03831660009081526097602052604090205460ff161515600114610db45760405163380fa21360e11b815260040160405180910390fd5b610dbf83838361176c565b505050565b6065548151146104425760405163169efb5b60e11b815260040160405180910390fd5b6033546001600160a01b0316331461062c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161099c565b6001600160a01b03811660009081526097602052604090205460ff1615610e7b576040516378f5ee6160e11b815260040160405180910390fd5b6001600160a01b038116600081815260976020526040808220805460ff19166001179055517fe9bc8eb00c0766d789ecba000f585406075b053bf1842aa19d4af52c52bc69209190a250565b610ed2606c826118a4565b50506040518181527f9324f7e5a7c0288808a634ccde44b8e979676474b22e29ee9dd569b55e791a4b9060200160405180910390a150565b606780549082905560408051828152602081018490527f713ca53b88d6eb63f5b1854cb8cbdd736ec51eda225e46791aa9298b0160648f91015b60405180910390a15050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000908152606a60205260408120610fc390610d1a565b9050806001600160a01b0316826001600160a01b03161415610fe457505050565b6001600160a01b038381166000908152606a602052604090206110089184166118a4565b50506040516001600160a01b0382811682528084169143918616907fd061168252f441733658f09e4d8f5b2d998ed4ef24a2bbfd6ceca52ea13150029060200160405180910390a4505050565b6001600160a01b0381166000908152606e602052604090205460ff1661108e576040516325ec6c1f60e01b815260040160405180910390fd5b6065805490600061109e836129b3565b90915550506001600160a01b0381166000908152606e60205260408120805460ff191690556110cc8261141c565b90506110d78161153f565b50506068546040516351b27a6d60e11b81526001600160a01b0384811660048301529091169063a364f4da90602401600060405180830381600087803b15801561112057600080fd5b505af1158015611134573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090851691507f31e0adfec71bccee37b6e83a90c2fedb17d8f1693fee863c4771e7bfe2aed58090600090a35050565b600054610100900460ff1661119f5760405162461bcd60e51b815260040161099c906129ca565b606880546001600160a01b0319166001600160a01b0385161790556111c382610ec7565b6111cc816111d4565b610dbf6119cf565b6111dd816119fe565b6111fa5760405163d173577960e01b815260040160405180910390fd5b60408051606680546020818102840185018552830181815260009484928491879085015b8282101561126d57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b03168183015282526001909201910161121e565b5050509152509091506066905060006112868282611f27565b505060005b825151811015611301578251805160669190839081106112ad576112ad6127cf565b6020908102919091018101518254600181018455600093845292829020815191909201516001600160601b0316600160a01b026001600160a01b0390911617910155806112f9816127fb565b91505061128b565b507f23aad4e61744ece164130aa415c1616e80136b0f0770e56589438b90b269265e8183604051610f44929190612a15565b61133c81611055565b6040516001600160a01b038216907f44cc80141b47717cc60edd3ad54b38b00efe9fe23b2898f15bcf884b0f3ad49590600090a250565b6001600160a01b03811660009081526097602052604090205460ff166113ac5760405163380fa21360e11b815260040160405180910390fd5b6001600160a01b038116600081815260976020526040808220805460ff19169055517fa5f3b7626fd86ff989f1d22cf3d41d74591ea6eb99241079400b0c332a9a8f119190a26001600160a01b0381166000908152606e602052604090205460ff161561044b5761044b81611333565b6001600160a01b0381166000908152606d6020526040812081908190819061144390610d1a565b6001600160a01b0386166000908152606e602052604090205490915060ff166114a8576114708184612a43565b9250826114805750909392505050565b6001600160a01b0385166000908152606d602052604081206114a1916118a4565b50506114f2565b6114b18561069c565b91506114bd8183612a43565b9250826114cd5750909392505050565b6001600160a01b0385166000908152606d602052604090206114ef90836118a4565b50505b60408051828152602081018490526001600160a01b038716917f88770dc862e47a7ed586907857eb1b75e4c5ffc8b707c7ee10eb74d6885fe594910160405180910390a250909392505050565b60008061154c606b610d1a565b9150600061155a848461295b565b915081905061156a606b826118a4565b505060408051848152602081018490527f86dcf86b12dfeedea74ae9300dbdaa193bcce5809369c8177ea2f4eaaa65729b910160405180910390a150915091565b60006115ba6002848418612939565b6105e890848416612921565b8082146115e9576040516001621398b960e31b0319815260040160405180910390fd5b8161058e5760405163251f56a160e21b815260040160405180910390fd5b6000438263ffffffff161061162f5760405163e64f180f60e01b815260040160405180910390fd5b6001600160a01b0383166000908152606a602052604090206105e89063ffffffff80851690610b4c16565b806001600160a01b0316826001600160a01b03161061058e5760405163ba50f91160e01b815260040160405180910390fd5b6116a06001600160a01b0384168383611ace565b610dbf57604051638baa579f60e01b815260040160405180910390fd5b6000438263ffffffff16106116e55760405163e64f180f60e01b815260040160405180910390fd5b6001600160a01b0383166000908152606d602052604090206105e89063ffffffff80851690610b4c16565b600061171b82611c1a565b90508083111561173e57604051634b05a0f760e11b815260040160405180910390fd5b600061174983611c56565b905083811115610a195760405163e121632f60e01b815260040160405180910390fd5b6001600160a01b0383166000908152606e602052604090205460ff16156117a6576040516342ee68b560e01b815260040160405180910390fd5b606580549060006117b6836127fb565b90915550506001600160a01b0383166000908152606e60205260408120805460ff191660011790556117e78461141c565b90506117f28161153f565b50506117fe8483610fa2565b606854604051639926ee7d60e01b81526001600160a01b0390911690639926ee7d906118309087908790600401612aae565b600060405180830381600087803b15801561184a57600080fd5b505af115801561185e573d6000803e3d6000fd5b50506068546040516001600160a01b03918216935090871691507fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c190600090a350505050565b81546000908190816118b586610d1a565b90506000821180156118f3575043866118cf60018561299c565b815481106118df576118df6127cf565b60009182526020909120015463ffffffff16145b156119535761190185611c92565b8661190d60018561299c565b8154811061191d5761191d6127cf565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b031602179055506119c1565b85600001604051806040016040528061196b43611cff565b63ffffffff16815260200161197f88611c92565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b9250839150505b9250929050565b600054610100900460ff166119f65760405162461bcd60e51b815260040161099c906129ca565b61062c611d64565b8051600090818080805b8451811015611aac57848181518110611a2357611a236127cf565b6020026020010151600001519250826001600160a01b0316846001600160a01b031610611a635760405163ba50f91160e01b815260040160405180910390fd5b829350848181518110611a7857611a786127cf565b6020026020010151602001516001600160601b031682611a989190612921565b915080611aa4816127fb565b915050611a08565b506127108114611ac25750600095945050505050565b50600195945050505050565b6000806000611add8585611d94565b90925090506000816004811115611af657611af6612af9565b148015611b145750856001600160a01b0316826001600160a01b0316145b15611b24576001925050506105e8565b600080876001600160a01b0316631626ba7e60e01b8888604051602401611b4c929190612b0f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611b8a9190612b28565b600060405180830381855afa9150503d8060008114611bc5576040519150601f19603f3d011682016040523d82523d6000602084013e611bca565b606091505b5091509150818015611bdd575080516020145b8015611c0e57508051630b135d3f60e11b90611c029083016020908101908401612b44565b6001600160e01b031916145b98975050505050505050565b6000438263ffffffff1610611c425760405163e64f180f60e01b815260040160405180910390fd5b610464606b63ffffffff80851690610b4c16565b6000438263ffffffff1610611c7e5760405163e64f180f60e01b815260040160405180910390fd5b610464606c63ffffffff80851690610b4c16565b60006001600160e01b03821115611cfb5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b606482015260840161099c565b5090565b600063ffffffff821115611cfb5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840161099c565b600054610100900460ff16611d8b5760405162461bcd60e51b815260040161099c906129ca565b61062c33610f50565b600080825160411415611dcb5760208301516040840151606085015160001a611dbf87828585611e01565b945094505050506119c8565b825160401415611df55760208301516040840151611dea868383611eee565b9350935050506119c8565b506000905060026119c8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611e385750600090506003611ee5565b8460ff16601b14158015611e5057508460ff16601c14155b15611e615750600090506004611ee5565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611eb5573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611ede57600060019250925050611ee5565b9150600090505b94509492505050565b6000806001600160ff1b03831681611f0b60ff86901c601b612921565b9050611f1987828885611e01565b935093505050935093915050565b508054600082559060005260206000209081019061044b91905b80821115611cfb5760008155600101611f41565b634e487b7160e01b600052604160045260246000fd5b604051602081016001600160401b0381118282101715611f8d57611f8d611f55565b60405290565b604080519081016001600160401b0381118282101715611f8d57611f8d611f55565b604051601f8201601f191681016001600160401b0381118282101715611fdd57611fdd611f55565b604052919050565b60006001600160401b03821115611ffe57611ffe611f55565b5060051b60200190565b6001600160a01b038116811461044b57600080fd5b600082601f83011261202e57600080fd5b8135602061204361203e83611fe5565b611fb5565b82815260059290921b8401810191818101908684111561206257600080fd5b8286015b8481101561208657803561207981612008565b8352918301918301612066565b509695505050505050565b6000602082840312156120a357600080fd5b81356001600160401b038111156120b957600080fd5b6120c58482850161201d565b949350505050565b63ffffffff8116811461044b57600080fd5b6000602082840312156120f157600080fd5b81356105e8816120cd565b60006001600160401b0382111561211557612115611f55565b50601f01601f191660200190565b600082601f83011261213457600080fd5b813561214261203e826120fc565b81815284602083860101111561215757600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561218757600080fd5b8235915060208301356001600160401b038111156121a457600080fd5b6121b085828601612123565b9150509250929050565b8051602080845281518482018190526000926040919083019082870190855b8181101561221057835180516001600160a01b031684528601516001600160601b03168684015292850192918401916001016121d9565b5090979650505050505050565b6020815260006105e860208301846121ba565b60006020828403121561224257600080fd5b81356105e881612008565b6000806040838503121561226057600080fd5b82356001600160401b038082111561227757600080fd5b908401906060828703121561228b57600080fd5b6040516060810181811083821117156122a6576122a6611f55565b6040528235828111156122b857600080fd5b6122c488828601612123565b825250602083013560208201526040830135604082015280945050505060208301356122ef81612008565b809150509250929050565b6000806040838503121561230d57600080fd5b82356001600160401b038082111561232457600080fd5b818501915085601f83011261233857600080fd5b8135602061234861203e83611fe5565b82815260059290921b8401810191818101908984111561236757600080fd5b8286015b8481101561239f578035868111156123835760008081fd5b6123918c86838b010161201d565b84525091830191830161236b565b50965050860135925050808211156123b657600080fd5b506121b085828601612123565b600080604083850312156123d657600080fd5b82356123e181612008565b946020939093013593505050565b60006020828403121561240157600080fd5b5035919050565b6000806040838503121561241b57600080fd5b8235915060208301356001600160401b0381111561243857600080fd5b6121b08582860161201d565b6000806040838503121561245757600080fd5b823561246281612008565b915060208301356122ef816120cd565b6000602080838503121561248557600080fd5b61248d611f6b565b915082356001600160401b038111156124a557600080fd5b8301601f810185136124b657600080fd5b80356124c461203e82611fe5565b81815260069190911b820183019083810190878311156124e357600080fd5b928401925b8284101561254657604084890312156125015760008081fd5b612509611f93565b843561251481612008565b8152848601356001600160601b03811681146125305760008081fd5b81870152825260409390930192908401906124e8565b8552509295945050505050565b60008060006060848603121561256857600080fd5b833561257381612008565b92506020840135915060408401356001600160401b0381111561259557600080fd5b6125a186828701612472565b9150509250925092565b600080604083850312156125be57600080fd5b82356001600160401b03808211156125d557600080fd5b6125e186838701612472565b935060208501359150808211156125f757600080fd5b506121b08582860161201d565b60005b8381101561261f578181015183820152602001612607565b83811115610a195750506000910152565b600082601f83011261264157600080fd5b8151602061265161203e83611fe5565b82815260059290921b8401810191818101908684111561267057600080fd5b8286015b848110156120865780516001600160401b038111156126935760008081fd5b8701603f810189136126a55760008081fd5b8481015160406126b761203e836120fc565b8281528b828486010111156126cc5760008081fd5b6126db83898301848701612604565b8652505050918301918301612674565b80516126f6816120cd565b919050565b60008060006060848603121561271057600080fd5b83516001600160401b038082111561272757600080fd5b818601915086601f83011261273b57600080fd5b8151602061274b61203e83611fe5565b82815260059290921b8401810191818101908a84111561276a57600080fd5b948201945b8386101561279157855161278281612008565b8252948201949082019061276f565b918901519197509093505050808211156127aa57600080fd5b506127b786828701612630565b9250506127c6604085016126eb565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561280f5761280f6127e5565b5060010190565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b81811015612864578551851683529483019491830191600101612846565b509098975050505050505050565b6000602080838503121561288557600080fd5b82516001600160401b0381111561289b57600080fd5b8301601f810185136128ac57600080fd5b80516128ba61203e82611fe5565b81815260059190911b820183019083810190878311156128d957600080fd5b928401925b828410156128f7578351825292840192908401906128de565b979650505050505050565b600081600019048311821515161561291c5761291c6127e5565b500290565b60008219821115612934576129346127e5565b500190565b60008261295657634e487b7160e01b600052601260045260246000fd5b500490565b600080821280156001600160ff1b038490038513161561297d5761297d6127e5565b600160ff1b8390038412811615612996576129966127e5565b50500190565b6000828210156129ae576129ae6127e5565b500390565b6000816129c2576129c26127e5565b506000190190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b604081526000612a2860408301856121ba565b8281036020840152612a3a81856121ba565b95945050505050565b60008083128015600160ff1b850184121615612a6157612a616127e5565b6001600160ff1b0384018313811615612a7c57612a7c6127e5565b50500390565b60008151808452612a9a816020860160208601612604565b601f01601f19169290920160200192915050565b60018060a01b0383168152604060208201526000825160606040840152612ad860a0840182612a82565b90506020840151606084015260408401516080840152809150509392505050565b634e487b7160e01b600052602160045260246000fd5b8281526040602082015260006120c56040830184612a82565b60008251612b3a818460208701612604565b9190910192915050565b600060208284031215612b5657600080fd5b81516001600160e01b0319811681146105e857600080fdfea2646970667358221220fb651b57e776142777e9aae7db2e48d2fc0d78d97fb6470ad55e40786970e05264736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\xCEW`\x005`\xE0\x1C\x80cm[\xE9&\x11a\x01\x04W\x80c\xAB\x11\x89\x95\x11a\0\xA2W\x80c\xE5\xD9\x8F\x94\x11a\0qW\x80c\xE5\xD9\x8F\x94\x14a\x03\xDDW\x80c\xEC\x7F\xBB1\x14a\x03\xF0W\x80c\xF2\xFD\xE3\x8B\x14a\x04\x1CW\x80c\xFA\xD8\xB3*\x14a\x04/W`\0\x80\xFD[\x80c\xAB\x11\x89\x95\x14a\x03\x9CW\x80c\xB93\xFAt\x14a\x03\xAFW\x80c\xCD\xCD5\x81\x14a\x03\xB7W\x80c\xDE\xC5\xD1\xF6\x14a\x03\xCAW`\0\x80\xFD[\x80c\x85}\xC1\x90\x11a\0\xDEW\x80c\x85}\xC1\x90\x14a\x03]W\x80c\x8D\xA5\xCB[\x14a\x03eW\x80c\x95_-\x90\x14a\x03vW\x80c\x98\xEC\x1A\xC9\x14a\x03\x89W`\0\x80\xFD[\x80cm[\xE9&\x14a\x03\x0FW\x80cqP\x18\xA6\x14a\x03BW\x80ct<1\xF4\x14a\x03JW`\0\x80\xFD[\x80c=V\x11\xF6\x11a\x01qW\x80cX\xC1\xEB\x17\x11a\x01KW\x80cX\xC1\xEB\x17\x14a\x02\xABW\x80c^\x10B\xE8\x14a\x02\xBEW\x80c^\xF53)\x14a\x02\xE9W\x80cibU\xBE\x14a\x02\xFCW`\0\x80\xFD[\x80c=V\x11\xF6\x14a\x02}W\x80c@\xBF/\xB7\x14a\x02\x90W\x80cQ@\xA5H\x14a\x02\x98W`\0\x80\xFD[\x80c\x17\x03\xA0\x18\x11a\x01\xADW\x80c\x17\x03\xA0\x18\x14a\x02:W\x80c\x1EL\xD8^\x14a\x02OW\x80c1O:I\x14a\x02bW\x80c;$.J\x14a\x02jW`\0\x80\xFD[\x80b\xCF*\xB5\x14a\x01\xD3W\x80c\r\xBA3\x94\x14a\x01\xE8W\x80c\x16&\xBA~\x14a\x02\x0EW[`\0\x80\xFD[a\x01\xE6a\x01\xE16`\x04a \x91V[a\x04BV[\0[a\x01\xFBa\x01\xF66`\x04a \xDFV[a\x04NV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02!a\x02\x1C6`\x04a!tV[a\x04jV[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x02\x05V[a\x02Ba\x04\xA8V[`@Qa\x02\x05\x91\x90a\"\x1DV[a\x01\xFBa\x02]6`\x04a \xDFV[a\x05;V[a\x01\xFBa\x05QV[a\x01\xFBa\x02x6`\x04a\"0V[a\x05bV[a\x01\xE6a\x02\x8B6`\x04a\"MV[a\x05\x83V[`gTa\x01\xFBV[a\x01\xE6a\x02\xA66`\x04a\"\xFAV[a\x05\x92V[a\x01\xE6a\x02\xB96`\x04a\"0V[a\x05\xB5V[a\x02\xD1a\x02\xCC6`\x04a#\xC3V[a\x05\xC6V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x05V[a\x01\xE6a\x02\xF76`\x04a#\xEFV[a\x05\xEFV[a\x01\xE6a\x03\n6`\x04a$\x08V[a\x06\0V[a\x032a\x03\x1D6`\x04a\"0V[`\x97` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x02\x05V[a\x01\xE6a\x06\x1AV[a\x01\xE6a\x03X6`\x04a\"0V[a\x06.V[a\x01\xE6a\x06hV[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xD1V[a\x01\xFBa\x03\x846`\x04a$DV[a\x06qV[a\x01\xFBa\x03\x976`\x04a\"0V[a\x06\x9CV[a\x01\xE6a\x03\xAA6`\x04a%SV[a\t\x03V[a\x01\xFBa\n\x1FV[a\x02\xD1a\x03\xC56`\x04a\"0V[a\n+V[a\x01\xE6a\x03\xD86`\x04a%\xABV[a\nLV[a\x01\xE6a\x03\xEB6`\x04a\"0V[a\n]V[a\x032a\x03\xFE6`\x04a\"0V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`n` R`@\x90 T`\xFF\x16\x90V[a\x01\xE6a\x04*6`\x04a\"0V[a\nnV[a\x01\xE6a\x04=6`\x04a\"0V[a\n\xE4V[a\x04K\x81a\n\xF5V[PV[`\0a\x04d`kc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\x0BL\x16V[\x92\x91PPV[`\0\x80`\0\x80\x84\x80` \x01\x90Q\x81\x01\x90a\x04\x84\x91\x90a&\xFBV[\x92P\x92P\x92Pa\x04\x96\x86\x84\x84\x84a\x0C[V[Pc\x0B\x13]?`\xE1\x1B\x95\x94PPPPPV[`@\x80Q` \x81\x01\x90\x91R``\x81R`@\x80Q`f\x80T` \x81\x81\x02\x84\x01\x85\x01\x85R\x83\x01\x81\x81R\x92\x93\x91\x92\x84\x92\x90\x91\x84\x91`\0\x90\x85\x01[\x82\x82\x10\x15a\x05.W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x90\x91R\x90\x84\x01T`\x01`\x01`\xA0\x1B\x03\x81\x16\x82R`\x01`\xA0\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x81\x83\x01R\x82R`\x01\x90\x92\x01\x91\x01a\x04\xDFV[PPPP\x81RPP\x90P\x90V[`\0a\x04d`lc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\x0BL\x16V[`\0a\x05]`ka\r\x1AV[\x90P\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`m` R`@\x81 a\x04d\x90a\r\x1AV[a\x05\x8E3\x83\x83a\rvV[PPV[a\x05\x8E\x82`\0\x81Q\x81\x10a\x05\xA8Wa\x05\xA8a'\xCFV[` \x02` \x01\x01Qa\r\xC4V[a\x05\xBDa\r\xE7V[a\x04K\x81a\x0EAV[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`j` R`@\x81 a\x05\xE8\x90\x83a\x0BLV[\x93\x92PPPV[a\x05\xF7a\r\xE7V[a\x04K\x81a\x0E\xC7V[a\x06\x08a\r\xE7V[a\x06\x11\x82a\x0F\nV[a\x05\x8E\x81a\n\xF5V[a\x06\"a\r\xE7V[a\x06,`\0a\x0FPV[V[3`\0\x90\x81R`n` R`@\x90 T`\xFF\x16a\x06^W`@Qc%\xECl\x1F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x04K3\x82a\x0F\xA2V[a\x06,3a\x10UV[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`m` R`@\x81 a\x05\xE8\x90c\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\x0BL\x16V[`\0\x80`f`\0\x01\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x07\x13W`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x90\x91R\x90\x84\x01T`\x01`\x01`\xA0\x1B\x03\x81\x16\x82R`\x01`\xA0\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x81\x83\x01R\x82R`\x01\x90\x92\x01\x91\x01a\x06\xC4V[PPPP\x90P`\0\x80\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x075Wa\x075a\x1FUV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07^W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x07\xC7W\x83\x81\x81Q\x81\x10a\x07\x7FWa\x07\x7Fa'\xCFV[` \x02` \x01\x01Q`\0\x01Q\x82\x82\x81Q\x81\x10a\x07\x9DWa\x07\x9Da'\xCFV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x07\xBF\x81a'\xFBV[\x91PPa\x07dV[P`@Qc\x90\x04\x13G`\xE0\x1B\x81R`\0\x90`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x90\x04\x13G\x90a\x08\x19\x90\x89\x90\x86\x90`\x04\x01a(\x16V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x086W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x08^\x91\x90\x81\x01\x90a(rV[\x90P`\0[\x84Q\x81\x10\x15a\x08\xD5W\x84\x81\x81Q\x81\x10a\x08~Wa\x08~a'\xCFV[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x08\xA5Wa\x08\xA5a'\xCFV[` \x02` \x01\x01Qa\x08\xB7\x91\x90a)\x02V[a\x08\xC1\x90\x85a)!V[\x93P\x80a\x08\xCD\x81a'\xFBV[\x91PPa\x08cV[Pa\x08\xE2a'\x10\x84a)9V[\x92P`gT\x83\x10a\x08\xF7WP\x90\x94\x93PPPPV[P`\0\x95\x94PPPPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\t#WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\t=WP0;\x15\x80\x15a\t=WP`\0T`\xFF\x16`\x01\x14[a\t\xA5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\t\xC8W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\t\xD3\x84\x84\x84a\x11xV[\x80\x15a\n\x19W`\0\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPV[`\0a\x05]`la\r\x1AV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`j` R`@\x81 a\x04d\x90a\r\x1AV[a\nTa\r\xE7V[a\x06\x11\x82a\x11\xD4V[a\nea\r\xE7V[a\x04K\x81a\x133V[a\nva\r\xE7V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\n\xDBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\t\x9CV[a\x04K\x81a\x0FPV[a\n\xECa\r\xE7V[a\x04K\x81a\x13sV[`\0\x80[\x82Q\x81\x10\x15a\x0BBWa\x0B$\x83\x82\x81Q\x81\x10a\x0B\x17Wa\x0B\x17a'\xCFV[` \x02` \x01\x01Qa\x14\x1CV[a\x0B.\x90\x83a)[V[\x91P\x80a\x0B:\x81a'\xFBV[\x91PPa\n\xF9V[Pa\n\x19\x81a\x15?V[`\0C\x82\x10a\x0B\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FCheckpoints: block not yet mined`D\x82\x01R`d\x01a\t\x9CV[\x82T`\0[\x81\x81\x10\x15a\x0C\x02W`\0a\x0B\xB6\x82\x84a\x15\xABV[\x90P\x84\x86`\0\x01\x82\x81T\x81\x10a\x0B\xCEWa\x0B\xCEa'\xCFV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x0B\xEEW\x80\x92Pa\x0B\xFCV[a\x0B\xF9\x81`\x01a)!V[\x91P[Pa\x0B\xA2V[\x81\x15a\x0CFW\x84a\x0C\x14`\x01\x84a)\x9CV[\x81T\x81\x10a\x0C$Wa\x0C$a'\xCFV[`\0\x91\x82R` \x90\x91 \x01Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\x0CIV[`\0[`\x01`\x01`\xE0\x1B\x03\x16\x95\x94PPPPPV[`\0\x83Q\x90P`\0\x80`\0\x80a\x0Cr\x85\x88Qa\x15\xC6V[`\0[\x85\x81\x10\x15a\r\x04W\x88\x81\x81Q\x81\x10a\x0C\x8FWa\x0C\x8Fa'\xCFV[` \x02` \x01\x01Q\x94Pa\x0C\xA3\x85\x88a\x16\x07V[\x92Pa\x0C\xAF\x84\x86a\x16ZV[a\x0C\xD3\x83\x8B\x8A\x84\x81Q\x81\x10a\x0C\xC6Wa\x0C\xC6a'\xCFV[` \x02` \x01\x01Qa\x16\x8CV[\x84\x93P`\0a\x0C\xE2\x86\x89a\x16\xBDV[\x90Pa\x0C\xEE\x81\x84a)!V[\x92PP\x80\x80a\x0C\xFC\x90a'\xFBV[\x91PPa\x0CuV[Pa\r\x0F\x81\x87a\x17\x10V[PPPPPPPPPV[\x80T`\0\x90\x80\x15a\rcW\x82a\r1`\x01\x83a)\x9CV[\x81T\x81\x10a\rAWa\rAa'\xCFV[`\0\x91\x82R` \x90\x91 \x01Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\rfV[`\0[`\x01`\x01`\xE0\x1B\x03\x16\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x97` R`@\x90 T`\xFF\x16\x15\x15`\x01\x14a\r\xB4W`@Qc8\x0F\xA2\x13`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\r\xBF\x83\x83\x83a\x17lV[PPPV[`eT\x81Q\x14a\x04BW`@Qc\x16\x9E\xFB[`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x06,W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\x97` R`@\x90 T`\xFF\x16\x15a\x0E{W`@Qcx\xF5\xEEa`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x81\x81R`\x97` R`@\x80\x82 \x80T`\xFF\x19\x16`\x01\x17\x90UQ\x7F\xE9\xBC\x8E\xB0\x0C\x07f\xD7\x89\xEC\xBA\0\x0FXT\x06\x07[\x05;\xF1\x84*\xA1\x9DJ\xF5,R\xBCi \x91\x90\xA2PV[a\x0E\xD2`l\x82a\x18\xA4V[PP`@Q\x81\x81R\x7F\x93$\xF7\xE5\xA7\xC0(\x88\x08\xA64\xCC\xDED\xB8\xE9ygdt\xB2.)\xEE\x9D\xD5i\xB5^y\x1AK\x90` \x01`@Q\x80\x91\x03\x90\xA1PV[`g\x80T\x90\x82\x90U`@\x80Q\x82\x81R` \x81\x01\x84\x90R\x7Fq<\xA5;\x88\xD6\xEBc\xF5\xB1\x85L\xB8\xCB\xDDsn\xC5\x1E\xDA\"^Fy\x1A\xA9)\x8B\x01`d\x8F\x91\x01[`@Q\x80\x91\x03\x90\xA1PPV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`j` R`@\x81 a\x0F\xC3\x90a\r\x1AV[\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x0F\xE4WPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x90\x81R`j` R`@\x90 a\x10\x08\x91\x84\x16a\x18\xA4V[PP`@Q`\x01`\x01`\xA0\x1B\x03\x82\x81\x16\x82R\x80\x84\x16\x91C\x91\x86\x16\x90\x7F\xD0a\x16\x82R\xF4As6X\xF0\x9EM\x8F[-\x99\x8E\xD4\xEF$\xA2\xBB\xFDl\xEC\xA5.\xA11P\x02\x90` \x01`@Q\x80\x91\x03\x90\xA4PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`n` R`@\x90 T`\xFF\x16a\x10\x8EW`@Qc%\xECl\x1F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`e\x80T\x90`\0a\x10\x9E\x83a)\xB3V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`n` R`@\x81 \x80T`\xFF\x19\x16\x90Ua\x10\xCC\x82a\x14\x1CV[\x90Pa\x10\xD7\x81a\x15?V[PP`hT`@QcQ\xB2zm`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R\x90\x91\x16\x90c\xA3d\xF4\xDA\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x11 W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x114W=`\0\x80>=`\0\xFD[PP`hT`@Q`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x93P\x90\x85\x16\x91P\x7F1\xE0\xAD\xFE\xC7\x1B\xCC\xEE7\xB6\xE8:\x90\xC2\xFE\xDB\x17\xD8\xF1i?\xEE\x86W`@QcK\x05\xA0\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x17I\x83a\x1CVV[\x90P\x83\x81\x11\x15a\n\x19W`@Qc\xE1!c/`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`n` R`@\x90 T`\xFF\x16\x15a\x17\xA6W`@QcB\xEEh\xB5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`e\x80T\x90`\0a\x17\xB6\x83a'\xFBV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`n` R`@\x81 \x80T`\xFF\x19\x16`\x01\x17\x90Ua\x17\xE7\x84a\x14\x1CV[\x90Pa\x17\xF2\x81a\x15?V[PPa\x17\xFE\x84\x83a\x0F\xA2V[`hT`@Qc\x99&\xEE}`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x99&\xEE}\x90a\x180\x90\x87\x90\x87\x90`\x04\x01a*\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18JW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18^W=`\0\x80>=`\0\xFD[PP`hT`@Q`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x93P\x90\x87\x16\x91P\x7F\xA4S\xDBa*\xF5\x9EU!\xD6\xAB\x92\x84\xDC>-\x06\xAF(n\xB1\xB1\xB7\xB7q\xFC\xE4ql\x19\xF2\xC1\x90`\0\x90\xA3PPPPV[\x81T`\0\x90\x81\x90\x81a\x18\xB5\x86a\r\x1AV[\x90P`\0\x82\x11\x80\x15a\x18\xF3WPC\x86a\x18\xCF`\x01\x85a)\x9CV[\x81T\x81\x10a\x18\xDFWa\x18\xDFa'\xCFV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x14[\x15a\x19SWa\x19\x01\x85a\x1C\x92V[\x86a\x19\r`\x01\x85a)\x9CV[\x81T\x81\x10a\x19\x1DWa\x19\x1Da'\xCFV[\x90`\0R` `\0 \x01`\0\x01`\x04a\x01\0\n\x81T\x81`\x01`\x01`\xE0\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`\xE0\x1B\x03\x16\x02\x17\x90UPa\x19\xC1V[\x85`\0\x01`@Q\x80`@\x01`@R\x80a\x19kCa\x1C\xFFV[c\xFF\xFF\xFF\xFF\x16\x81R` \x01a\x19\x7F\x88a\x1C\x92V[`\x01`\x01`\xE0\x1B\x03\x90\x81\x16\x90\x91R\x82T`\x01\x81\x01\x84U`\0\x93\x84R` \x93\x84\x90 \x83Q\x94\x90\x93\x01Q\x90\x91\x16d\x01\0\0\0\0\x02c\xFF\xFF\xFF\xFF\x90\x93\x16\x92\x90\x92\x17\x91\x01U[\x92P\x83\x91PP[\x92P\x92\x90PV[`\0Ta\x01\0\x90\x04`\xFF\x16a\x19\xF6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\t\x9C\x90a)\xCAV[a\x06,a\x1DdV[\x80Q`\0\x90\x81\x80\x80\x80[\x84Q\x81\x10\x15a\x1A\xACW\x84\x81\x81Q\x81\x10a\x1A#Wa\x1A#a'\xCFV[` \x02` \x01\x01Q`\0\x01Q\x92P\x82`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x10a\x1AcW`@Qc\xBAP\xF9\x11`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82\x93P\x84\x81\x81Q\x81\x10a\x1AxWa\x1Axa'\xCFV[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x82a\x1A\x98\x91\x90a)!V[\x91P\x80a\x1A\xA4\x81a'\xFBV[\x91PPa\x1A\x08V[Pa'\x10\x81\x14a\x1A\xC2WP`\0\x95\x94PPPPPV[P`\x01\x95\x94PPPPPV[`\0\x80`\0a\x1A\xDD\x85\x85a\x1D\x94V[\x90\x92P\x90P`\0\x81`\x04\x81\x11\x15a\x1A\xF6Wa\x1A\xF6a*\xF9V[\x14\x80\x15a\x1B\x14WP\x85`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14[\x15a\x1B$W`\x01\x92PPPa\x05\xE8V[`\0\x80\x87`\x01`\x01`\xA0\x1B\x03\x16c\x16&\xBA~`\xE0\x1B\x88\x88`@Q`$\x01a\x1BL\x92\x91\x90a+\x0FV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16`\x01`\x01`\xE0\x1B\x03\x19\x90\x94\x16\x93\x90\x93\x17\x90\x92R\x90Qa\x1B\x8A\x91\x90a+(V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x1B\xC5W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1B\xCAV[``\x91P[P\x91P\x91P\x81\x80\x15a\x1B\xDDWP\x80Q` \x14[\x80\x15a\x1C\x0EWP\x80Qc\x0B\x13]?`\xE1\x1B\x90a\x1C\x02\x90\x83\x01` \x90\x81\x01\x90\x84\x01a+DV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[\x98\x97PPPPPPPPV[`\0C\x82c\xFF\xFF\xFF\xFF\x16\x10a\x1CBW`@Qc\xE6O\x18\x0F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x04d`kc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\x0BL\x16V[`\0C\x82c\xFF\xFF\xFF\xFF\x16\x10a\x1C~W`@Qc\xE6O\x18\x0F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x04d`lc\xFF\xFF\xFF\xFF\x80\x85\x16\x90a\x0BL\x16V[`\0`\x01`\x01`\xE0\x1B\x03\x82\x11\x15a\x1C\xFBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FSafeCast: value doesn't fit in 2`D\x82\x01Rf24 bits`\xC8\x1B`d\x82\x01R`\x84\x01a\t\x9CV[P\x90V[`\0c\xFF\xFF\xFF\xFF\x82\x11\x15a\x1C\xFBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FSafeCast: value doesn't fit in 3`D\x82\x01Re2 bits`\xD0\x1B`d\x82\x01R`\x84\x01a\t\x9CV[`\0Ta\x01\0\x90\x04`\xFF\x16a\x1D\x8BW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\t\x9C\x90a)\xCAV[a\x06,3a\x0FPV[`\0\x80\x82Q`A\x14\x15a\x1D\xCBW` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1Aa\x1D\xBF\x87\x82\x85\x85a\x1E\x01V[\x94P\x94PPPPa\x19\xC8V[\x82Q`@\x14\x15a\x1D\xF5W` \x83\x01Q`@\x84\x01Qa\x1D\xEA\x86\x83\x83a\x1E\xEEV[\x93P\x93PPPa\x19\xC8V[P`\0\x90P`\x02a\x19\xC8V[`\0\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x83\x11\x15a\x1E8WP`\0\x90P`\x03a\x1E\xE5V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15a\x1EPWP\x84`\xFF\x16`\x1C\x14\x15[\x15a\x1EaWP`\0\x90P`\x04a\x1E\xE5V[`@\x80Q`\0\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x1E\xB5W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1E\xDEW`\0`\x01\x92P\x92PPa\x1E\xE5V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81a\x1F\x0B`\xFF\x86\x90\x1C`\x1Ba)!V[\x90Pa\x1F\x19\x87\x82\x88\x85a\x1E\x01V[\x93P\x93PPP\x93P\x93\x91PPV[P\x80T`\0\x82U\x90`\0R` `\0 \x90\x81\x01\x90a\x04K\x91\x90[\x80\x82\x11\x15a\x1C\xFBW`\0\x81U`\x01\x01a\x1FAV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q` \x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1F\x8DWa\x1F\x8Da\x1FUV[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1F\x8DWa\x1F\x8Da\x1FUV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1F\xDDWa\x1F\xDDa\x1FUV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x1F\xFEWa\x1F\xFEa\x1FUV[P`\x05\x1B` \x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x04KW`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a .W`\0\x80\xFD[\x815` a Ca >\x83a\x1F\xE5V[a\x1F\xB5V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a bW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a \x86W\x805a y\x81a \x08V[\x83R\x91\x83\x01\x91\x83\x01a fV[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a \xA3W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a \xB9W`\0\x80\xFD[a \xC5\x84\x82\x85\x01a \x1DV[\x94\x93PPPPV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x04KW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a \xF1W`\0\x80\xFD[\x815a\x05\xE8\x81a \xCDV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a!\x15Wa!\x15a\x1FUV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a!4W`\0\x80\xFD[\x815a!Ba >\x82a \xFCV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a!WW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a!\x87W`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a!\xA4W`\0\x80\xFD[a!\xB0\x85\x82\x86\x01a!#V[\x91PP\x92P\x92\x90PV[\x80Q` \x80\x84R\x81Q\x84\x82\x01\x81\x90R`\0\x92`@\x91\x90\x83\x01\x90\x82\x87\x01\x90\x85[\x81\x81\x10\x15a\"\x10W\x83Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x86\x01Q`\x01`\x01``\x1B\x03\x16\x86\x84\x01R\x92\x85\x01\x92\x91\x84\x01\x91`\x01\x01a!\xD9V[P\x90\x97\x96PPPPPPPV[` \x81R`\0a\x05\xE8` \x83\x01\x84a!\xBAV[`\0` \x82\x84\x03\x12\x15a\"BW`\0\x80\xFD[\x815a\x05\xE8\x81a \x08V[`\0\x80`@\x83\x85\x03\x12\x15a\"`W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\"wW`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a\"\x8BW`\0\x80\xFD[`@Q``\x81\x01\x81\x81\x10\x83\x82\x11\x17\x15a\"\xA6Wa\"\xA6a\x1FUV[`@R\x825\x82\x81\x11\x15a\"\xB8W`\0\x80\xFD[a\"\xC4\x88\x82\x86\x01a!#V[\x82RP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x94PPPP` \x83\x015a\"\xEF\x81a \x08V[\x80\x91PP\x92P\x92\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a#\rW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a#$W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a#8W`\0\x80\xFD[\x815` a#Ha >\x83a\x1F\xE5V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a#gW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a#\x9FW\x805\x86\x81\x11\x15a#\x83W`\0\x80\x81\xFD[a#\x91\x8C\x86\x83\x8B\x01\x01a \x1DV[\x84RP\x91\x83\x01\x91\x83\x01a#kV[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a#\xB6W`\0\x80\xFD[Pa!\xB0\x85\x82\x86\x01a!#V[`\0\x80`@\x83\x85\x03\x12\x15a#\xD6W`\0\x80\xFD[\x825a#\xE1\x81a \x08V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a$\x01W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a$\x1BW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a$8W`\0\x80\xFD[a!\xB0\x85\x82\x86\x01a \x1DV[`\0\x80`@\x83\x85\x03\x12\x15a$WW`\0\x80\xFD[\x825a$b\x81a \x08V[\x91P` \x83\x015a\"\xEF\x81a \xCDV[`\0` \x80\x83\x85\x03\x12\x15a$\x85W`\0\x80\xFD[a$\x8Da\x1FkV[\x91P\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a$\xA5W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a$\xB6W`\0\x80\xFD[\x805a$\xC4a >\x82a\x1F\xE5V[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a$\xE3W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a%FW`@\x84\x89\x03\x12\x15a%\x01W`\0\x80\x81\xFD[a%\ta\x1F\x93V[\x845a%\x14\x81a \x08V[\x81R\x84\x86\x015`\x01`\x01``\x1B\x03\x81\x16\x81\x14a%0W`\0\x80\x81\xFD[\x81\x87\x01R\x82R`@\x93\x90\x93\x01\x92\x90\x84\x01\x90a$\xE8V[\x85RP\x92\x95\x94PPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a%hW`\0\x80\xFD[\x835a%s\x81a \x08V[\x92P` \x84\x015\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a%\x95W`\0\x80\xFD[a%\xA1\x86\x82\x87\x01a$rV[\x91PP\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a%\xBEW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a%\xD5W`\0\x80\xFD[a%\xE1\x86\x83\x87\x01a$rV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a%\xF7W`\0\x80\xFD[Pa!\xB0\x85\x82\x86\x01a \x1DV[`\0[\x83\x81\x10\x15a&\x1FW\x81\x81\x01Q\x83\x82\x01R` \x01a&\x07V[\x83\x81\x11\x15a\n\x19WPP`\0\x91\x01RV[`\0\x82`\x1F\x83\x01\x12a&AW`\0\x80\xFD[\x81Q` a&Qa >\x83a\x1F\xE5V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a&pW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a \x86W\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a&\x93W`\0\x80\x81\xFD[\x87\x01`?\x81\x01\x89\x13a&\xA5W`\0\x80\x81\xFD[\x84\x81\x01Q`@a&\xB7a >\x83a \xFCV[\x82\x81R\x8B\x82\x84\x86\x01\x01\x11\x15a&\xCCW`\0\x80\x81\xFD[a&\xDB\x83\x89\x83\x01\x84\x87\x01a&\x04V[\x86RPPP\x91\x83\x01\x91\x83\x01a&tV[\x80Qa&\xF6\x81a \xCDV[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a'\x10W`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a''W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a';W`\0\x80\xFD[\x81Q` a'Ka >\x83a\x1F\xE5V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x8A\x84\x11\x15a'jW`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a'\x91W\x85Qa'\x82\x81a \x08V[\x82R\x94\x82\x01\x94\x90\x82\x01\x90a'oV[\x91\x89\x01Q\x91\x97P\x90\x93PPP\x80\x82\x11\x15a'\xAAW`\0\x80\xFD[Pa'\xB7\x86\x82\x87\x01a&0V[\x92PPa'\xC6`@\x85\x01a&\xEBV[\x90P\x92P\x92P\x92V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a(\x0FWa(\x0Fa'\xE5V[P`\x01\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x82R`@` \x80\x84\x01\x82\x90R\x84Q\x91\x84\x01\x82\x90R`\0\x92\x85\x82\x01\x92\x90\x91\x90``\x86\x01\x90\x85[\x81\x81\x10\x15a(dW\x85Q\x85\x16\x83R\x94\x83\x01\x94\x91\x83\x01\x91`\x01\x01a(FV[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a(\x85W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a(\x9BW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a(\xACW`\0\x80\xFD[\x80Qa(\xBAa >\x82a\x1F\xE5V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a(\xD9W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a(\xF7W\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a(\xDEV[\x97\x96PPPPPPPV[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a)\x1CWa)\x1Ca'\xE5V[P\x02\x90V[`\0\x82\x19\x82\x11\x15a)4Wa)4a'\xE5V[P\x01\x90V[`\0\x82a)VWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0\x80\x82\x12\x80\x15`\x01`\x01`\xFF\x1B\x03\x84\x90\x03\x85\x13\x16\x15a)}Wa)}a'\xE5V[`\x01`\xFF\x1B\x83\x90\x03\x84\x12\x81\x16\x15a)\x96Wa)\x96a'\xE5V[PP\x01\x90V[`\0\x82\x82\x10\x15a)\xAEWa)\xAEa'\xE5V[P\x03\x90V[`\0\x81a)\xC2Wa)\xC2a'\xE5V[P`\0\x19\x01\x90V[` \x80\x82R`+\x90\x82\x01R\x7FInitializable: contract is not i`@\x82\x01Rjnitializing`\xA8\x1B``\x82\x01R`\x80\x01\x90V[`@\x81R`\0a*(`@\x83\x01\x85a!\xBAV[\x82\x81\x03` \x84\x01Ra*:\x81\x85a!\xBAV[\x95\x94PPPPPV[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a*aWa*aa'\xE5V[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a*|Wa*|a'\xE5V[PP\x03\x90V[`\0\x81Q\x80\x84Ra*\x9A\x81` \x86\x01` \x86\x01a&\x04V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01R`\0\x82Q```@\x84\x01Ra*\xD8`\xA0\x84\x01\x82a*\x82V[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x82\x81R`@` \x82\x01R`\0a \xC5`@\x83\x01\x84a*\x82V[`\0\x82Qa+:\x81\x84` \x87\x01a&\x04V[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a+VW`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x05\xE8W`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xFBe\x1BW\xE7v\x14'w\xE9\xAA\xE7\xDB.H\xD2\xFC\rx\xD9\x7F\xB6G\n\xD5^@xip\xE0RdsolcC\0\x08\x0C\x003", + ); + /**```solidity + struct Quorum { StrategyParams[] strategies; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct Quorum { + pub strategies: + alloy::sol_types::private::Vec<::RustType>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec<::RustType>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: Quorum) -> Self { + (value.strategies,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for Quorum { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategies: tuple.0, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for Quorum { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for Quorum { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.strategies), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Quorum { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for Quorum { + const NAME: &'static str = "Quorum"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed("Quorum(StrategyParams[] strategies)") + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + let mut components = alloy_sol_types::private::Vec::with_capacity(1); + components.push(::eip712_root_type()); + components + .extend(::eip712_components()); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + as alloy_sol_types::SolType>::eip712_data_word(&self.strategies) + .0 + .to_vec() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Quorum { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.strategies, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.strategies, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct StrategyParams { address strategy; uint96 multiplier; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct StrategyParams { + pub strategy: alloy::sol_types::private::Address, + pub multiplier: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<96>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U96, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: StrategyParams) -> Self { + (value.strategy, value.multiplier) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for StrategyParams { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategy: tuple.0, + multiplier: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for StrategyParams { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for StrategyParams { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.multiplier, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for StrategyParams { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for StrategyParams { + const NAME: &'static str = "StrategyParams"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "StrategyParams(address strategy,uint96 multiplier)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.strategy, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.multiplier) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for StrategyParams { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.strategy, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.multiplier, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.strategy, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.multiplier, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**Custom error with signature `InsufficientSignedStake()` and selector `0xe121632f`. + ```solidity + error InsufficientSignedStake(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InsufficientSignedStake {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InsufficientSignedStake) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InsufficientSignedStake { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InsufficientSignedStake { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InsufficientSignedStake()"; + const SELECTOR: [u8; 4] = [225u8, 33u8, 99u8, 47u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InsufficientWeight()` and selector `0xa8792fd1`. + ```solidity + error InsufficientWeight(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InsufficientWeight {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InsufficientWeight) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InsufficientWeight { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InsufficientWeight { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InsufficientWeight()"; + const SELECTOR: [u8; 4] = [168u8, 121u8, 47u8, 209u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidLength()` and selector `0x947d5a84`. + ```solidity + error InvalidLength(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidLength {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidLength) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidLength { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidLength { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidLength()"; + const SELECTOR: [u8; 4] = [148u8, 125u8, 90u8, 132u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidQuorum()` and selector `0xd1735779`. + ```solidity + error InvalidQuorum(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidQuorum {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidQuorum) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidQuorum { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidQuorum { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidQuorum()"; + const SELECTOR: [u8; 4] = [209u8, 115u8, 87u8, 121u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidReferenceBlock()` and selector `0xe64f180f`. + ```solidity + error InvalidReferenceBlock(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidReferenceBlock {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidReferenceBlock) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidReferenceBlock { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidReferenceBlock { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidReferenceBlock()"; + const SELECTOR: [u8; 4] = [230u8, 79u8, 24u8, 15u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidSignature()` and selector `0x8baa579f`. + ```solidity + error InvalidSignature(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidSignature {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidSignature) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidSignature { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidSignature { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidSignature()"; + const SELECTOR: [u8; 4] = [139u8, 170u8, 87u8, 159u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidSignedWeight()` and selector `0x960b41ee`. + ```solidity + error InvalidSignedWeight(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidSignedWeight {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidSignedWeight) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidSignedWeight { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidSignedWeight { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidSignedWeight()"; + const SELECTOR: [u8; 4] = [150u8, 11u8, 65u8, 238u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidThreshold()` and selector `0xaabd5a09`. + ```solidity + error InvalidThreshold(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidThreshold {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidThreshold) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidThreshold { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidThreshold { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidThreshold()"; + const SELECTOR: [u8; 4] = [170u8, 189u8, 90u8, 9u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `LengthMismatch()` and selector `0xff633a38`. + ```solidity + error LengthMismatch(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct LengthMismatch {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: LengthMismatch) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for LengthMismatch { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for LengthMismatch { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "LengthMismatch()"; + const SELECTOR: [u8; 4] = [255u8, 99u8, 58u8, 56u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `MustUpdateAllOperators()` and selector `0x2d3df6b6`. + ```solidity + error MustUpdateAllOperators(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct MustUpdateAllOperators {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: MustUpdateAllOperators) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for MustUpdateAllOperators { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for MustUpdateAllOperators { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "MustUpdateAllOperators()"; + const SELECTOR: [u8; 4] = [45u8, 61u8, 246u8, 182u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `NotSorted()` and selector `0xba50f911`. + ```solidity + error NotSorted(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct NotSorted {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: NotSorted) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for NotSorted { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for NotSorted { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "NotSorted()"; + const SELECTOR: [u8; 4] = [186u8, 80u8, 249u8, 17u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `OperatorAlreadyAllowlisted()` and selector `0xf1ebdcc2`. + ```solidity + error OperatorAlreadyAllowlisted(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OperatorAlreadyAllowlisted {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OperatorAlreadyAllowlisted) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OperatorAlreadyAllowlisted { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for OperatorAlreadyAllowlisted { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "OperatorAlreadyAllowlisted()"; + const SELECTOR: [u8; 4] = [241u8, 235u8, 220u8, 194u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `OperatorAlreadyRegistered()` and selector `0x42ee68b5`. + ```solidity + error OperatorAlreadyRegistered(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OperatorAlreadyRegistered {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OperatorAlreadyRegistered) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OperatorAlreadyRegistered { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for OperatorAlreadyRegistered { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "OperatorAlreadyRegistered()"; + const SELECTOR: [u8; 4] = [66u8, 238u8, 104u8, 181u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `OperatorNotAllowlisted()` and selector `0x701f4426`. + ```solidity + error OperatorNotAllowlisted(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OperatorNotAllowlisted {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OperatorNotAllowlisted) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OperatorNotAllowlisted { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for OperatorNotAllowlisted { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "OperatorNotAllowlisted()"; + const SELECTOR: [u8; 4] = [112u8, 31u8, 68u8, 38u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `OperatorNotRegistered()` and selector `0x25ec6c1f`. + ```solidity + error OperatorNotRegistered(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OperatorNotRegistered {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OperatorNotRegistered) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OperatorNotRegistered { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for OperatorNotRegistered { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "OperatorNotRegistered()"; + const SELECTOR: [u8; 4] = [37u8, 236u8, 108u8, 31u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`. + ```solidity + event Initialized(uint8 version); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Initialized { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "Initialized(uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, + 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, + 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { version: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.version, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Initialized { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Initialized> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Initialized) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `MinimumWeightUpdated(uint256,uint256)` and selector `0x713ca53b88d6eb63f5b1854cb8cbdd736ec51eda225e46791aa9298b0160648f`. + ```solidity + event MinimumWeightUpdated(uint256 _old, uint256 _new); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct MinimumWeightUpdated { + #[allow(missing_docs)] + pub _old: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub _new: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for MinimumWeightUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "MinimumWeightUpdated(uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 113u8, 60u8, 165u8, 59u8, 136u8, 214u8, 235u8, 99u8, 245u8, 177u8, 133u8, 76u8, + 184u8, 203u8, 221u8, 115u8, 110u8, 197u8, 30u8, 218u8, 34u8, 94u8, 70u8, 121u8, + 26u8, 169u8, 41u8, 139u8, 1u8, 96u8, 100u8, 143u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _old: data.0, + _new: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._old, + ), + as alloy_sol_types::SolType>::tokenize( + &self._new, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for MinimumWeightUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&MinimumWeightUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &MinimumWeightUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorDeregistered(address,address)` and selector `0x31e0adfec71bccee37b6e83a90c2fedb17d8f1693fee863c4771e7bfe2aed580`. + ```solidity + event OperatorDeregistered(address indexed _operator, address indexed _avs); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorDeregistered { + #[allow(missing_docs)] + pub _operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _avs: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorDeregistered { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OperatorDeregistered(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 49u8, 224u8, 173u8, 254u8, 199u8, 27u8, 204u8, 238u8, 55u8, 182u8, 232u8, 58u8, + 144u8, 194u8, 254u8, 219u8, 23u8, 216u8, 241u8, 105u8, 63u8, 238u8, 134u8, + 60u8, 71u8, 113u8, 231u8, 191u8, 226u8, 174u8, 213u8, 128u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _operator: topics.1, + _avs: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._operator.clone(), + self._avs.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self._operator, + ); + out[2usize] = ::encode_topic( + &self._avs, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorDeregistered { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorDeregistered> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorDeregistered) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorEjected(address)` and selector `0x44cc80141b47717cc60edd3ad54b38b00efe9fe23b2898f15bcf884b0f3ad495`. + ```solidity + event OperatorEjected(address indexed operator); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorEjected { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorEjected { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OperatorEjected(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 68u8, 204u8, 128u8, 20u8, 27u8, 71u8, 113u8, 124u8, 198u8, 14u8, 221u8, 58u8, + 213u8, 75u8, 56u8, 176u8, 14u8, 254u8, 159u8, 226u8, 59u8, 40u8, 152u8, 241u8, + 91u8, 207u8, 136u8, 75u8, 15u8, 58u8, 212u8, 149u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { operator: topics.1 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.operator.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorEjected { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorEjected> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorEjected) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorPermitted(address)` and selector `0xe9bc8eb00c0766d789ecba000f585406075b053bf1842aa19d4af52c52bc6920`. + ```solidity + event OperatorPermitted(address indexed operator); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorPermitted { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorPermitted { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OperatorPermitted(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 233u8, 188u8, 142u8, 176u8, 12u8, 7u8, 102u8, 215u8, 137u8, 236u8, 186u8, 0u8, + 15u8, 88u8, 84u8, 6u8, 7u8, 91u8, 5u8, 59u8, 241u8, 132u8, 42u8, 161u8, 157u8, + 74u8, 245u8, 44u8, 82u8, 188u8, 105u8, 32u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { operator: topics.1 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.operator.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorPermitted { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorPermitted> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorPermitted) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorRegistered(address,address)` and selector `0xa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c1`. + ```solidity + event OperatorRegistered(address indexed _operator, address indexed _avs); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorRegistered { + #[allow(missing_docs)] + pub _operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _avs: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorRegistered { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OperatorRegistered(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 164u8, 83u8, 219u8, 97u8, 42u8, 245u8, 158u8, 85u8, 33u8, 214u8, 171u8, 146u8, + 132u8, 220u8, 62u8, 45u8, 6u8, 175u8, 40u8, 110u8, 177u8, 177u8, 183u8, 183u8, + 113u8, 252u8, 228u8, 113u8, 108u8, 25u8, 242u8, 193u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _operator: topics.1, + _avs: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._operator.clone(), + self._avs.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self._operator, + ); + out[2usize] = ::encode_topic( + &self._avs, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorRegistered { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorRegistered> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorRegistered) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorRevoked(address)` and selector `0xa5f3b7626fd86ff989f1d22cf3d41d74591ea6eb99241079400b0c332a9a8f11`. + ```solidity + event OperatorRevoked(address indexed operator); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorRevoked { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorRevoked { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OperatorRevoked(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 165u8, 243u8, 183u8, 98u8, 111u8, 216u8, 111u8, 249u8, 137u8, 241u8, 210u8, + 44u8, 243u8, 212u8, 29u8, 116u8, 89u8, 30u8, 166u8, 235u8, 153u8, 36u8, 16u8, + 121u8, 64u8, 11u8, 12u8, 51u8, 42u8, 154u8, 143u8, 17u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { operator: topics.1 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.operator.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorRevoked { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorRevoked> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorRevoked) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorWeightUpdated(address,uint256,uint256)` and selector `0x88770dc862e47a7ed586907857eb1b75e4c5ffc8b707c7ee10eb74d6885fe594`. + ```solidity + event OperatorWeightUpdated(address indexed _operator, uint256 oldWeight, uint256 newWeight); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorWeightUpdated { + #[allow(missing_docs)] + pub _operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub oldWeight: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub newWeight: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorWeightUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OperatorWeightUpdated(address,uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 136u8, 119u8, 13u8, 200u8, 98u8, 228u8, 122u8, 126u8, 213u8, 134u8, 144u8, + 120u8, 87u8, 235u8, 27u8, 117u8, 228u8, 197u8, 255u8, 200u8, 183u8, 7u8, 199u8, + 238u8, 16u8, 235u8, 116u8, 214u8, 136u8, 95u8, 229u8, 148u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _operator: topics.1, + oldWeight: data.0, + newWeight: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.oldWeight, + ), + as alloy_sol_types::SolType>::tokenize( + &self.newWeight, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self._operator.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self._operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorWeightUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorWeightUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorWeightUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. + ```solidity + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub previousOwner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, + 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, + 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + previousOwner: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.previousOwner.clone(), + self.newOwner.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.previousOwner, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `QuorumUpdated(((address,uint96)[]),((address,uint96)[]))` and selector `0x23aad4e61744ece164130aa415c1616e80136b0f0770e56589438b90b269265e`. + ```solidity + event QuorumUpdated(Quorum _old, Quorum _new); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct QuorumUpdated { + #[allow(missing_docs)] + pub _old: ::RustType, + #[allow(missing_docs)] + pub _new: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for QuorumUpdated { + type DataTuple<'a> = (Quorum, Quorum); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = + "QuorumUpdated(((address,uint96)[]),((address,uint96)[]))"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 35u8, 170u8, 212u8, 230u8, 23u8, 68u8, 236u8, 225u8, 100u8, 19u8, 10u8, 164u8, + 21u8, 193u8, 97u8, 110u8, 128u8, 19u8, 107u8, 15u8, 7u8, 112u8, 229u8, 101u8, + 137u8, 67u8, 139u8, 144u8, 178u8, 105u8, 38u8, 94u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _old: data.0, + _new: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize(&self._old), + ::tokenize(&self._new), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for QuorumUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&QuorumUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &QuorumUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `SigningKeyUpdate(address,uint256,address,address)` and selector `0xd061168252f441733658f09e4d8f5b2d998ed4ef24a2bbfd6ceca52ea1315002`. + ```solidity + event SigningKeyUpdate(address indexed operator, uint256 indexed updateBlock, address indexed newSigningKey, address oldSigningKey); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct SigningKeyUpdate { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub updateBlock: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub newSigningKey: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub oldSigningKey: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for SigningKeyUpdate { + type DataTuple<'a> = (alloy::sol_types::sol_data::Address,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "SigningKeyUpdate(address,uint256,address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 208u8, 97u8, 22u8, 130u8, 82u8, 244u8, 65u8, 115u8, 54u8, 88u8, 240u8, 158u8, + 77u8, 143u8, 91u8, 45u8, 153u8, 142u8, 212u8, 239u8, 36u8, 162u8, 187u8, 253u8, + 108u8, 236u8, 165u8, 46u8, 161u8, 49u8, 80u8, 2u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: topics.1, + updateBlock: topics.2, + newSigningKey: topics.3, + oldSigningKey: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.oldSigningKey, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.operator.clone(), + self.updateBlock.clone(), + self.newSigningKey.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + out[2usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.updateBlock); + out[3usize] = ::encode_topic( + &self.newSigningKey, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for SigningKeyUpdate { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&SigningKeyUpdate> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &SigningKeyUpdate) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `ThresholdWeightUpdated(uint256)` and selector `0x9324f7e5a7c0288808a634ccde44b8e979676474b22e29ee9dd569b55e791a4b`. + ```solidity + event ThresholdWeightUpdated(uint256 _thresholdWeight); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct ThresholdWeightUpdated { + #[allow(missing_docs)] + pub _thresholdWeight: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ThresholdWeightUpdated { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "ThresholdWeightUpdated(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 147u8, 36u8, 247u8, 229u8, 167u8, 192u8, 40u8, 136u8, 8u8, 166u8, 52u8, 204u8, + 222u8, 68u8, 184u8, 233u8, 121u8, 103u8, 100u8, 116u8, 178u8, 46u8, 41u8, + 238u8, 157u8, 213u8, 105u8, 181u8, 94u8, 121u8, 26u8, 75u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _thresholdWeight: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._thresholdWeight, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ThresholdWeightUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ThresholdWeightUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ThresholdWeightUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `TotalWeightUpdated(uint256,uint256)` and selector `0x86dcf86b12dfeedea74ae9300dbdaa193bcce5809369c8177ea2f4eaaa65729b`. + ```solidity + event TotalWeightUpdated(uint256 oldTotalWeight, uint256 newTotalWeight); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct TotalWeightUpdated { + #[allow(missing_docs)] + pub oldTotalWeight: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub newTotalWeight: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for TotalWeightUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "TotalWeightUpdated(uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 134u8, 220u8, 248u8, 107u8, 18u8, 223u8, 238u8, 222u8, 167u8, 74u8, 233u8, + 48u8, 13u8, 189u8, 170u8, 25u8, 59u8, 204u8, 229u8, 128u8, 147u8, 105u8, 200u8, + 23u8, 126u8, 162u8, 244u8, 234u8, 170u8, 101u8, 114u8, 155u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + oldTotalWeight: data.0, + newTotalWeight: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.oldTotalWeight, + ), + as alloy_sol_types::SolType>::tokenize( + &self.newTotalWeight, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for TotalWeightUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&TotalWeightUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &TotalWeightUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `UpdateMinimumWeight(uint256,uint256)` and selector `0x1ea42186b305fa37310450d9fb87ea1e8f0c7f447e771479e3b27634bfe84dc1`. + ```solidity + event UpdateMinimumWeight(uint256 oldMinimumWeight, uint256 newMinimumWeight); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct UpdateMinimumWeight { + #[allow(missing_docs)] + pub oldMinimumWeight: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub newMinimumWeight: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for UpdateMinimumWeight { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "UpdateMinimumWeight(uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 30u8, 164u8, 33u8, 134u8, 179u8, 5u8, 250u8, 55u8, 49u8, 4u8, 80u8, 217u8, + 251u8, 135u8, 234u8, 30u8, 143u8, 12u8, 127u8, 68u8, 126u8, 119u8, 20u8, 121u8, + 227u8, 178u8, 118u8, 52u8, 191u8, 232u8, 77u8, 193u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + oldMinimumWeight: data.0, + newMinimumWeight: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.oldMinimumWeight, + ), + as alloy_sol_types::SolType>::tokenize( + &self.newMinimumWeight, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for UpdateMinimumWeight { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&UpdateMinimumWeight> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &UpdateMinimumWeight) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. + ```solidity + constructor(address _delegationManager); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _delegationManager: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value._delegationManager,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _delegationManager: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._delegationManager, + ), + ) + } + } + }; + /**Function with signature `allowlistedOperators(address)` and selector `0x6d5be926`. + ```solidity + function allowlistedOperators(address) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct allowlistedOperatorsCall { + pub _0: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`allowlistedOperators(address)`](allowlistedOperatorsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct allowlistedOperatorsReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: allowlistedOperatorsCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for allowlistedOperatorsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: allowlistedOperatorsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for allowlistedOperatorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for allowlistedOperatorsCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = allowlistedOperatorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "allowlistedOperators(address)"; + const SELECTOR: [u8; 4] = [109u8, 91u8, 233u8, 38u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `deregisterOperator()` and selector `0x857dc190`. + ```solidity + function deregisterOperator() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorCall {} + ///Container type for the return parameters of the [`deregisterOperator()`](deregisterOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for deregisterOperatorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = deregisterOperatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "deregisterOperator()"; + const SELECTOR: [u8; 4] = [133u8, 125u8, 193u8, 144u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `ejectOperator(address)` and selector `0xe5d98f94`. + ```solidity + function ejectOperator(address _operator) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ejectOperatorCall { + pub _operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`ejectOperator(address)`](ejectOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ejectOperatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ejectOperatorCall) -> Self { + (value._operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ejectOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ejectOperatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ejectOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ejectOperatorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ejectOperatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ejectOperator(address)"; + const SELECTOR: [u8; 4] = [229u8, 217u8, 143u8, 148u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getLastCheckpointOperatorWeight(address)` and selector `0x3b242e4a`. + ```solidity + function getLastCheckpointOperatorWeight(address _operator) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastCheckpointOperatorWeightCall { + pub _operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getLastCheckpointOperatorWeight(address)`](getLastCheckpointOperatorWeightCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastCheckpointOperatorWeightReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastCheckpointOperatorWeightCall) -> Self { + (value._operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLastCheckpointOperatorWeightCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastCheckpointOperatorWeightReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLastCheckpointOperatorWeightReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getLastCheckpointOperatorWeightCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getLastCheckpointOperatorWeightReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getLastCheckpointOperatorWeight(address)"; + const SELECTOR: [u8; 4] = [59u8, 36u8, 46u8, 74u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getLastCheckpointThresholdWeight()` and selector `0xb933fa74`. + ```solidity + function getLastCheckpointThresholdWeight() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastCheckpointThresholdWeightCall {} + ///Container type for the return parameters of the [`getLastCheckpointThresholdWeight()`](getLastCheckpointThresholdWeightCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastCheckpointThresholdWeightReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastCheckpointThresholdWeightCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLastCheckpointThresholdWeightCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastCheckpointThresholdWeightReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLastCheckpointThresholdWeightReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getLastCheckpointThresholdWeightCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getLastCheckpointThresholdWeightReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getLastCheckpointThresholdWeight()"; + const SELECTOR: [u8; 4] = [185u8, 51u8, 250u8, 116u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getLastCheckpointThresholdWeightAtBlock(uint32)` and selector `0x1e4cd85e`. + ```solidity + function getLastCheckpointThresholdWeightAtBlock(uint32 _blockNumber) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastCheckpointThresholdWeightAtBlockCall { + pub _blockNumber: u32, + } + ///Container type for the return parameters of the [`getLastCheckpointThresholdWeightAtBlock(uint32)`](getLastCheckpointThresholdWeightAtBlockCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastCheckpointThresholdWeightAtBlockReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: getLastCheckpointThresholdWeightAtBlockCall) -> Self { + (value._blockNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getLastCheckpointThresholdWeightAtBlockCall + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _blockNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: getLastCheckpointThresholdWeightAtBlockReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getLastCheckpointThresholdWeightAtBlockReturn + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getLastCheckpointThresholdWeightAtBlockCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getLastCheckpointThresholdWeightAtBlockReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getLastCheckpointThresholdWeightAtBlock(uint32)"; + const SELECTOR: [u8; 4] = [30u8, 76u8, 216u8, 94u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._blockNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getLastCheckpointTotalWeight()` and selector `0x314f3a49`. + ```solidity + function getLastCheckpointTotalWeight() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastCheckpointTotalWeightCall {} + ///Container type for the return parameters of the [`getLastCheckpointTotalWeight()`](getLastCheckpointTotalWeightCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastCheckpointTotalWeightReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastCheckpointTotalWeightCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLastCheckpointTotalWeightCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastCheckpointTotalWeightReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLastCheckpointTotalWeightReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getLastCheckpointTotalWeightCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getLastCheckpointTotalWeightReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getLastCheckpointTotalWeight()"; + const SELECTOR: [u8; 4] = [49u8, 79u8, 58u8, 73u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getLastCheckpointTotalWeightAtBlock(uint32)` and selector `0x0dba3394`. + ```solidity + function getLastCheckpointTotalWeightAtBlock(uint32 _blockNumber) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastCheckpointTotalWeightAtBlockCall { + pub _blockNumber: u32, + } + ///Container type for the return parameters of the [`getLastCheckpointTotalWeightAtBlock(uint32)`](getLastCheckpointTotalWeightAtBlockCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastCheckpointTotalWeightAtBlockReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastCheckpointTotalWeightAtBlockCall) -> Self { + (value._blockNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLastCheckpointTotalWeightAtBlockCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _blockNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastCheckpointTotalWeightAtBlockReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLastCheckpointTotalWeightAtBlockReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getLastCheckpointTotalWeightAtBlockCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getLastCheckpointTotalWeightAtBlockReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getLastCheckpointTotalWeightAtBlock(uint32)"; + const SELECTOR: [u8; 4] = [13u8, 186u8, 51u8, 148u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._blockNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getLastestOperatorSigningKey(address)` and selector `0xcdcd3581`. + ```solidity + function getLastestOperatorSigningKey(address _operator) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastestOperatorSigningKeyCall { + pub _operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getLastestOperatorSigningKey(address)`](getLastestOperatorSigningKeyCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLastestOperatorSigningKeyReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastestOperatorSigningKeyCall) -> Self { + (value._operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLastestOperatorSigningKeyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLastestOperatorSigningKeyReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLastestOperatorSigningKeyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getLastestOperatorSigningKeyCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getLastestOperatorSigningKeyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getLastestOperatorSigningKey(address)"; + const SELECTOR: [u8; 4] = [205u8, 205u8, 53u8, 129u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorSigningKeyAtBlock(address,uint256)` and selector `0x5e1042e8`. + ```solidity + function getOperatorSigningKeyAtBlock(address _operator, uint256 _blockNumber) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorSigningKeyAtBlockCall { + pub _operator: alloy::sol_types::private::Address, + pub _blockNumber: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getOperatorSigningKeyAtBlock(address,uint256)`](getOperatorSigningKeyAtBlockCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorSigningKeyAtBlockReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorSigningKeyAtBlockCall) -> Self { + (value._operator, value._blockNumber) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorSigningKeyAtBlockCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _operator: tuple.0, + _blockNumber: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorSigningKeyAtBlockReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorSigningKeyAtBlockReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorSigningKeyAtBlockCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorSigningKeyAtBlockReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorSigningKeyAtBlock(address,uint256)"; + const SELECTOR: [u8; 4] = [94u8, 16u8, 66u8, 232u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + as alloy_sol_types::SolType>::tokenize( + &self._blockNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorWeight(address)` and selector `0x98ec1ac9`. + ```solidity + function getOperatorWeight(address _operator) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorWeightCall { + pub _operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getOperatorWeight(address)`](getOperatorWeightCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorWeightReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorWeightCall) -> Self { + (value._operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorWeightCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorWeightReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorWeightReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorWeightCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorWeightReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorWeight(address)"; + const SELECTOR: [u8; 4] = [152u8, 236u8, 26u8, 201u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorWeightAtBlock(address,uint32)` and selector `0x955f2d90`. + ```solidity + function getOperatorWeightAtBlock(address _operator, uint32 _blockNumber) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorWeightAtBlockCall { + pub _operator: alloy::sol_types::private::Address, + pub _blockNumber: u32, + } + ///Container type for the return parameters of the [`getOperatorWeightAtBlock(address,uint32)`](getOperatorWeightAtBlockCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorWeightAtBlockReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorWeightAtBlockCall) -> Self { + (value._operator, value._blockNumber) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorWeightAtBlockCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _operator: tuple.0, + _blockNumber: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorWeightAtBlockReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorWeightAtBlockReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorWeightAtBlockCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorWeightAtBlockReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorWeightAtBlock(address,uint32)"; + const SELECTOR: [u8; 4] = [149u8, 95u8, 45u8, 144u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + as alloy_sol_types::SolType>::tokenize( + &self._blockNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `initialize(address,uint256,((address,uint96)[]))` and selector `0xab118995`. + ```solidity + function initialize(address _serviceManager, uint256 _thresholdWeight, Quorum memory _quorum) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeCall { + pub _serviceManager: alloy::sol_types::private::Address, + pub _thresholdWeight: alloy::sol_types::private::primitives::aliases::U256, + pub _quorum: ::RustType, + } + ///Container type for the return parameters of the [`initialize(address,uint256,((address,uint96)[]))`](initializeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + Quorum, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeCall) -> Self { + (value._serviceManager, value._thresholdWeight, value._quorum) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _serviceManager: tuple.0, + _thresholdWeight: tuple.1, + _quorum: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for initializeCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + Quorum, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = initializeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "initialize(address,uint256,((address,uint96)[]))"; + const SELECTOR: [u8; 4] = [171u8, 17u8, 137u8, 149u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._serviceManager, + ), + as alloy_sol_types::SolType>::tokenize( + &self._thresholdWeight, + ), + ::tokenize(&self._quorum), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `isValidSignature(bytes32,bytes)` and selector `0x1626ba7e`. + ```solidity + function isValidSignature(bytes32 _dataHash, bytes memory _signatureData) external view returns (bytes4); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isValidSignatureCall { + pub _dataHash: alloy::sol_types::private::FixedBytes<32>, + pub _signatureData: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`isValidSignature(bytes32,bytes)`](isValidSignatureCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isValidSignatureReturn { + pub _0: alloy::sol_types::private::FixedBytes<4>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isValidSignatureCall) -> Self { + (value._dataHash, value._signatureData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isValidSignatureCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _dataHash: tuple.0, + _signatureData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isValidSignatureReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isValidSignatureReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for isValidSignatureCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = isValidSignatureReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "isValidSignature(bytes32,bytes)"; + const SELECTOR: [u8; 4] = [22u8, 38u8, 186u8, 126u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._dataHash), + ::tokenize( + &self._signatureData, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `minimumWeight()` and selector `0x40bf2fb7`. + ```solidity + function minimumWeight() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct minimumWeightCall {} + ///Container type for the return parameters of the [`minimumWeight()`](minimumWeightCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct minimumWeightReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: minimumWeightCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for minimumWeightCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: minimumWeightReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for minimumWeightReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for minimumWeightCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = minimumWeightReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "minimumWeight()"; + const SELECTOR: [u8; 4] = [64u8, 191u8, 47u8, 183u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `operatorRegistered(address)` and selector `0xec7fbb31`. + ```solidity + function operatorRegistered(address _operator) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorRegisteredCall { + pub _operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`operatorRegistered(address)`](operatorRegisteredCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorRegisteredReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorRegisteredCall) -> Self { + (value._operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorRegisteredCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorRegisteredReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorRegisteredReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for operatorRegisteredCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = operatorRegisteredReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "operatorRegistered(address)"; + const SELECTOR: [u8; 4] = [236u8, 127u8, 187u8, 49u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. + ```solidity + function owner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `permitOperator(address)` and selector `0x58c1eb17`. + ```solidity + function permitOperator(address _operator) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permitOperatorCall { + pub _operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`permitOperator(address)`](permitOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permitOperatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permitOperatorCall) -> Self { + (value._operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permitOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permitOperatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permitOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for permitOperatorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = permitOperatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "permitOperator(address)"; + const SELECTOR: [u8; 4] = [88u8, 193u8, 235u8, 23u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `quorum()` and selector `0x1703a018`. + ```solidity + function quorum() external view returns (Quorum memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct quorumCall {} + ///Container type for the return parameters of the [`quorum()`](quorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct quorumReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: quorumCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for quorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Quorum,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: quorumReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for quorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for quorumCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = quorumReturn; + type ReturnTuple<'a> = (Quorum,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "quorum()"; + const SELECTOR: [u8; 4] = [23u8, 3u8, 160u8, 24u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registerOperatorWithSignature((bytes,bytes32,uint256),address)` and selector `0x3d5611f6`. + ```solidity + function registerOperatorWithSignature(ISignatureUtils.SignatureWithSaltAndExpiry memory _operatorSignature, address _signingKey) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorWithSignatureCall { + pub _operatorSignature: + ::RustType, + pub _signingKey: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`registerOperatorWithSignature((bytes,bytes32,uint256),address)`](registerOperatorWithSignatureCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorWithSignatureReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + ISignatureUtils::SignatureWithSaltAndExpiry, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorWithSignatureCall) -> Self { + (value._operatorSignature, value._signingKey) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorWithSignatureCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _operatorSignature: tuple.0, + _signingKey: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorWithSignatureReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorWithSignatureReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registerOperatorWithSignatureCall { + type Parameters<'a> = ( + ISignatureUtils::SignatureWithSaltAndExpiry, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registerOperatorWithSignatureReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "registerOperatorWithSignature((bytes,bytes32,uint256),address)"; + const SELECTOR: [u8; 4] = [61u8, 86u8, 17u8, 246u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operatorSignature, + ), + ::tokenize( + &self._signingKey, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `renounceOwnership()` and selector `0x715018a6`. + ```solidity + function renounceOwnership() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct renounceOwnershipCall {} + ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct renounceOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for renounceOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for renounceOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for renounceOwnershipCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = renounceOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "renounceOwnership()"; + const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `revokeOperator(address)` and selector `0xfad8b32a`. + ```solidity + function revokeOperator(address _operator) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct revokeOperatorCall { + pub _operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`revokeOperator(address)`](revokeOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct revokeOperatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: revokeOperatorCall) -> Self { + (value._operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for revokeOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: revokeOperatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for revokeOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for revokeOperatorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = revokeOperatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "revokeOperator(address)"; + const SELECTOR: [u8; 4] = [250u8, 216u8, 179u8, 42u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. + ```solidity + function transferOwnership(address newOwner) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateMinimumWeight(uint256,address[])` and selector `0x696255be`. + ```solidity + function updateMinimumWeight(uint256 _newMinimumWeight, address[] memory _operators) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateMinimumWeightCall { + pub _newMinimumWeight: alloy::sol_types::private::primitives::aliases::U256, + pub _operators: alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`updateMinimumWeight(uint256,address[])`](updateMinimumWeightCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateMinimumWeightReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateMinimumWeightCall) -> Self { + (value._newMinimumWeight, value._operators) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateMinimumWeightCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _newMinimumWeight: tuple.0, + _operators: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateMinimumWeightReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateMinimumWeightReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateMinimumWeightCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Array, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateMinimumWeightReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateMinimumWeight(uint256,address[])"; + const SELECTOR: [u8; 4] = [105u8, 98u8, 85u8, 190u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._newMinimumWeight), + as alloy_sol_types::SolType>::tokenize(&self._operators), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateOperatorSigningKey(address)` and selector `0x743c31f4`. + ```solidity + function updateOperatorSigningKey(address _newSigningKey) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorSigningKeyCall { + pub _newSigningKey: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`updateOperatorSigningKey(address)`](updateOperatorSigningKeyCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorSigningKeyReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorSigningKeyCall) -> Self { + (value._newSigningKey,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorSigningKeyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _newSigningKey: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorSigningKeyReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorSigningKeyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateOperatorSigningKeyCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateOperatorSigningKeyReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateOperatorSigningKey(address)"; + const SELECTOR: [u8; 4] = [116u8, 60u8, 49u8, 244u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._newSigningKey, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateOperators(address[])` and selector `0x00cf2ab5`. + ```solidity + function updateOperators(address[] memory _operators) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorsCall { + pub _operators: alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`updateOperators(address[])`](updateOperatorsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorsReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorsCall) -> Self { + (value._operators,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _operators: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorsReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateOperatorsCall { + type Parameters<'a> = + (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateOperatorsReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateOperators(address[])"; + const SELECTOR: [u8; 4] = [0u8, 207u8, 42u8, 181u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( as alloy_sol_types::SolType>::tokenize( + &self._operators + ),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateOperatorsForQuorum(address[][],bytes)` and selector `0x5140a548`. + ```solidity + function updateOperatorsForQuorum(address[][] memory operatorsPerQuorum, bytes memory) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorsForQuorumCall { + pub operatorsPerQuorum: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec, + >, + pub _1: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`updateOperatorsForQuorum(address[][],bytes)`](updateOperatorsForQuorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorsForQuorumReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array, + >, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec, + >, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorsForQuorumCall) -> Self { + (value.operatorsPerQuorum, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorsForQuorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorsPerQuorum: tuple.0, + _1: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorsForQuorumReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorsForQuorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateOperatorsForQuorumCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array, + >, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateOperatorsForQuorumReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateOperatorsForQuorum(address[][],bytes)"; + const SELECTOR: [u8; 4] = [81u8, 64u8, 165u8, 72u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + , + > as alloy_sol_types::SolType>::tokenize( + &self.operatorsPerQuorum + ), + ::tokenize( + &self._1, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateQuorumConfig(((address,uint96)[]),address[])` and selector `0xdec5d1f6`. + ```solidity + function updateQuorumConfig(Quorum memory _quorum, address[] memory _operators) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateQuorumConfigCall { + pub _quorum: ::RustType, + pub _operators: alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`updateQuorumConfig(((address,uint96)[]),address[])`](updateQuorumConfigCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateQuorumConfigReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Quorum, + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateQuorumConfigCall) -> Self { + (value._quorum, value._operators) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateQuorumConfigCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _quorum: tuple.0, + _operators: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateQuorumConfigReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateQuorumConfigReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateQuorumConfigCall { + type Parameters<'a> = ( + Quorum, + alloy::sol_types::sol_data::Array, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateQuorumConfigReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateQuorumConfig(((address,uint96)[]),address[])"; + const SELECTOR: [u8; 4] = [222u8, 197u8, 209u8, 246u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self._quorum), + as alloy_sol_types::SolType>::tokenize(&self._operators), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateStakeThreshold(uint256)` and selector `0x5ef53329`. + ```solidity + function updateStakeThreshold(uint256 _thresholdWeight) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateStakeThresholdCall { + pub _thresholdWeight: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`updateStakeThreshold(uint256)`](updateStakeThresholdCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateStakeThresholdReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateStakeThresholdCall) -> Self { + (value._thresholdWeight,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateStakeThresholdCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _thresholdWeight: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateStakeThresholdReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateStakeThresholdReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateStakeThresholdCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateStakeThresholdReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateStakeThreshold(uint256)"; + const SELECTOR: [u8; 4] = [94u8, 245u8, 51u8, 41u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._thresholdWeight, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`ECDSAStakeRegistryPermissioned`](self) function calls. + pub enum ECDSAStakeRegistryPermissionedCalls { + allowlistedOperators(allowlistedOperatorsCall), + deregisterOperator(deregisterOperatorCall), + ejectOperator(ejectOperatorCall), + getLastCheckpointOperatorWeight(getLastCheckpointOperatorWeightCall), + getLastCheckpointThresholdWeight(getLastCheckpointThresholdWeightCall), + getLastCheckpointThresholdWeightAtBlock(getLastCheckpointThresholdWeightAtBlockCall), + getLastCheckpointTotalWeight(getLastCheckpointTotalWeightCall), + getLastCheckpointTotalWeightAtBlock(getLastCheckpointTotalWeightAtBlockCall), + getLastestOperatorSigningKey(getLastestOperatorSigningKeyCall), + getOperatorSigningKeyAtBlock(getOperatorSigningKeyAtBlockCall), + getOperatorWeight(getOperatorWeightCall), + getOperatorWeightAtBlock(getOperatorWeightAtBlockCall), + initialize(initializeCall), + isValidSignature(isValidSignatureCall), + minimumWeight(minimumWeightCall), + operatorRegistered(operatorRegisteredCall), + owner(ownerCall), + permitOperator(permitOperatorCall), + quorum(quorumCall), + registerOperatorWithSignature(registerOperatorWithSignatureCall), + renounceOwnership(renounceOwnershipCall), + revokeOperator(revokeOperatorCall), + transferOwnership(transferOwnershipCall), + updateMinimumWeight(updateMinimumWeightCall), + updateOperatorSigningKey(updateOperatorSigningKeyCall), + updateOperators(updateOperatorsCall), + updateOperatorsForQuorum(updateOperatorsForQuorumCall), + updateQuorumConfig(updateQuorumConfigCall), + updateStakeThreshold(updateStakeThresholdCall), + } + #[automatically_derived] + impl ECDSAStakeRegistryPermissionedCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [0u8, 207u8, 42u8, 181u8], + [13u8, 186u8, 51u8, 148u8], + [22u8, 38u8, 186u8, 126u8], + [23u8, 3u8, 160u8, 24u8], + [30u8, 76u8, 216u8, 94u8], + [49u8, 79u8, 58u8, 73u8], + [59u8, 36u8, 46u8, 74u8], + [61u8, 86u8, 17u8, 246u8], + [64u8, 191u8, 47u8, 183u8], + [81u8, 64u8, 165u8, 72u8], + [88u8, 193u8, 235u8, 23u8], + [94u8, 16u8, 66u8, 232u8], + [94u8, 245u8, 51u8, 41u8], + [105u8, 98u8, 85u8, 190u8], + [109u8, 91u8, 233u8, 38u8], + [113u8, 80u8, 24u8, 166u8], + [116u8, 60u8, 49u8, 244u8], + [133u8, 125u8, 193u8, 144u8], + [141u8, 165u8, 203u8, 91u8], + [149u8, 95u8, 45u8, 144u8], + [152u8, 236u8, 26u8, 201u8], + [171u8, 17u8, 137u8, 149u8], + [185u8, 51u8, 250u8, 116u8], + [205u8, 205u8, 53u8, 129u8], + [222u8, 197u8, 209u8, 246u8], + [229u8, 217u8, 143u8, 148u8], + [236u8, 127u8, 187u8, 49u8], + [242u8, 253u8, 227u8, 139u8], + [250u8, 216u8, 179u8, 42u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ECDSAStakeRegistryPermissionedCalls { + const NAME: &'static str = "ECDSAStakeRegistryPermissionedCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 29usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::allowlistedOperators(_) => { + ::SELECTOR + } + Self::deregisterOperator(_) => { + ::SELECTOR + } + Self::ejectOperator(_) => { + ::SELECTOR + } + Self::getLastCheckpointOperatorWeight(_) => { + ::SELECTOR + } + Self::getLastCheckpointThresholdWeight(_) => { + ::SELECTOR + } + Self::getLastCheckpointThresholdWeightAtBlock(_) => { + ::SELECTOR + } + Self::getLastCheckpointTotalWeight(_) => { + ::SELECTOR + } + Self::getLastCheckpointTotalWeightAtBlock(_) => { + ::SELECTOR + } + Self::getLastestOperatorSigningKey(_) => { + ::SELECTOR + } + Self::getOperatorSigningKeyAtBlock(_) => { + ::SELECTOR + } + Self::getOperatorWeight(_) => { + ::SELECTOR + } + Self::getOperatorWeightAtBlock(_) => { + ::SELECTOR + } + Self::initialize(_) => { + ::SELECTOR + } + Self::isValidSignature(_) => { + ::SELECTOR + } + Self::minimumWeight(_) => { + ::SELECTOR + } + Self::operatorRegistered(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::permitOperator(_) => { + ::SELECTOR + } + Self::quorum(_) => ::SELECTOR, + Self::registerOperatorWithSignature(_) => { + ::SELECTOR + } + Self::renounceOwnership(_) => { + ::SELECTOR + } + Self::revokeOperator(_) => { + ::SELECTOR + } + Self::transferOwnership(_) => { + ::SELECTOR + } + Self::updateMinimumWeight(_) => { + ::SELECTOR + } + Self::updateOperatorSigningKey(_) => { + ::SELECTOR + } + Self::updateOperators(_) => { + ::SELECTOR + } + Self::updateOperatorsForQuorum(_) => { + ::SELECTOR + } + Self::updateQuorumConfig(_) => { + ::SELECTOR + } + Self::updateStakeThreshold(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result< + ECDSAStakeRegistryPermissionedCalls, + >] = &[ + { + fn updateOperators( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryPermissionedCalls::updateOperators) + } + updateOperators + }, + { + fn getLastCheckpointTotalWeightAtBlock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + ECDSAStakeRegistryPermissionedCalls::getLastCheckpointTotalWeightAtBlock, + ) + } + getLastCheckpointTotalWeightAtBlock + }, + { + fn isValidSignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryPermissionedCalls::isValidSignature) + } + isValidSignature + }, + { + fn quorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(ECDSAStakeRegistryPermissionedCalls::quorum) + } + quorum + }, + { + fn getLastCheckpointThresholdWeightAtBlock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + ECDSAStakeRegistryPermissionedCalls::getLastCheckpointThresholdWeightAtBlock, + ) + } + getLastCheckpointThresholdWeightAtBlock + }, + { + fn getLastCheckpointTotalWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + ECDSAStakeRegistryPermissionedCalls::getLastCheckpointTotalWeight, + ) + } + getLastCheckpointTotalWeight + }, + { + fn getLastCheckpointOperatorWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + ECDSAStakeRegistryPermissionedCalls::getLastCheckpointOperatorWeight, + ) + } + getLastCheckpointOperatorWeight + }, + { + fn registerOperatorWithSignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + ECDSAStakeRegistryPermissionedCalls::registerOperatorWithSignature, + ) + } + registerOperatorWithSignature + }, + { + fn minimumWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryPermissionedCalls::minimumWeight) + } + minimumWeight + }, + { + fn updateOperatorsForQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryPermissionedCalls::updateOperatorsForQuorum) + } + updateOperatorsForQuorum + }, + { + fn permitOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryPermissionedCalls::permitOperator) + } + permitOperator + }, + { + fn getOperatorSigningKeyAtBlock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + ECDSAStakeRegistryPermissionedCalls::getOperatorSigningKeyAtBlock, + ) + } + getOperatorSigningKeyAtBlock + }, + { + fn updateStakeThreshold( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryPermissionedCalls::updateStakeThreshold) + } + updateStakeThreshold + }, + { + fn updateMinimumWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryPermissionedCalls::updateMinimumWeight) + } + updateMinimumWeight + }, + { + fn allowlistedOperators( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryPermissionedCalls::allowlistedOperators) + } + allowlistedOperators + }, + { + fn renounceOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryPermissionedCalls::renounceOwnership) + } + renounceOwnership + }, + { + fn updateOperatorSigningKey( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryPermissionedCalls::updateOperatorSigningKey) + } + updateOperatorSigningKey + }, + { + fn deregisterOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryPermissionedCalls::deregisterOperator) + } + deregisterOperator + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(ECDSAStakeRegistryPermissionedCalls::owner) + } + owner + }, + { + fn getOperatorWeightAtBlock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryPermissionedCalls::getOperatorWeightAtBlock) + } + getOperatorWeightAtBlock + }, + { + fn getOperatorWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryPermissionedCalls::getOperatorWeight) + } + getOperatorWeight + }, + { + fn initialize( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(ECDSAStakeRegistryPermissionedCalls::initialize) + } + initialize + }, + { + fn getLastCheckpointThresholdWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + ECDSAStakeRegistryPermissionedCalls::getLastCheckpointThresholdWeight, + ) + } + getLastCheckpointThresholdWeight + }, + { + fn getLastestOperatorSigningKey( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + ECDSAStakeRegistryPermissionedCalls::getLastestOperatorSigningKey, + ) + } + getLastestOperatorSigningKey + }, + { + fn updateQuorumConfig( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryPermissionedCalls::updateQuorumConfig) + } + updateQuorumConfig + }, + { + fn ejectOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryPermissionedCalls::ejectOperator) + } + ejectOperator + }, + { + fn operatorRegistered( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryPermissionedCalls::operatorRegistered) + } + operatorRegistered + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryPermissionedCalls::transferOwnership) + } + transferOwnership + }, + { + fn revokeOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryPermissionedCalls::revokeOperator) + } + revokeOperator + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::allowlistedOperators(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::deregisterOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::ejectOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getLastCheckpointOperatorWeight(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getLastCheckpointThresholdWeight(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getLastCheckpointThresholdWeightAtBlock(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getLastCheckpointTotalWeight(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getLastCheckpointTotalWeightAtBlock(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getLastestOperatorSigningKey(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorSigningKeyAtBlock(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorWeight(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorWeightAtBlock(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::initialize(inner) => { + ::abi_encoded_size(inner) + } + Self::isValidSignature(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::minimumWeight(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::operatorRegistered(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::permitOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::quorum(inner) => { + ::abi_encoded_size(inner) + } + Self::registerOperatorWithSignature(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::renounceOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::revokeOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::updateMinimumWeight(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::updateOperatorSigningKey(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::updateOperators(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::updateOperatorsForQuorum(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::updateQuorumConfig(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::updateStakeThreshold(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::allowlistedOperators(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::deregisterOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::ejectOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getLastCheckpointOperatorWeight(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getLastCheckpointThresholdWeight(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getLastCheckpointThresholdWeightAtBlock(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getLastCheckpointTotalWeight(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getLastCheckpointTotalWeightAtBlock(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getLastestOperatorSigningKey(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperatorSigningKeyAtBlock(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperatorWeight(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperatorWeightAtBlock(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::initialize(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::isValidSignature(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::minimumWeight(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::operatorRegistered(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::permitOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::quorum(inner) => { + ::abi_encode_raw(inner, out) + } + Self::registerOperatorWithSignature(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::renounceOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::revokeOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::updateMinimumWeight(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::updateOperatorSigningKey(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::updateOperators(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::updateOperatorsForQuorum(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::updateQuorumConfig(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::updateStakeThreshold(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`ECDSAStakeRegistryPermissioned`](self) custom errors. + pub enum ECDSAStakeRegistryPermissionedErrors { + InsufficientSignedStake(InsufficientSignedStake), + InsufficientWeight(InsufficientWeight), + InvalidLength(InvalidLength), + InvalidQuorum(InvalidQuorum), + InvalidReferenceBlock(InvalidReferenceBlock), + InvalidSignature(InvalidSignature), + InvalidSignedWeight(InvalidSignedWeight), + InvalidThreshold(InvalidThreshold), + LengthMismatch(LengthMismatch), + MustUpdateAllOperators(MustUpdateAllOperators), + NotSorted(NotSorted), + OperatorAlreadyAllowlisted(OperatorAlreadyAllowlisted), + OperatorAlreadyRegistered(OperatorAlreadyRegistered), + OperatorNotAllowlisted(OperatorNotAllowlisted), + OperatorNotRegistered(OperatorNotRegistered), + } + #[automatically_derived] + impl ECDSAStakeRegistryPermissionedErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [37u8, 236u8, 108u8, 31u8], + [45u8, 61u8, 246u8, 182u8], + [66u8, 238u8, 104u8, 181u8], + [112u8, 31u8, 68u8, 38u8], + [139u8, 170u8, 87u8, 159u8], + [148u8, 125u8, 90u8, 132u8], + [150u8, 11u8, 65u8, 238u8], + [168u8, 121u8, 47u8, 209u8], + [170u8, 189u8, 90u8, 9u8], + [186u8, 80u8, 249u8, 17u8], + [209u8, 115u8, 87u8, 121u8], + [225u8, 33u8, 99u8, 47u8], + [230u8, 79u8, 24u8, 15u8], + [241u8, 235u8, 220u8, 194u8], + [255u8, 99u8, 58u8, 56u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ECDSAStakeRegistryPermissionedErrors { + const NAME: &'static str = "ECDSAStakeRegistryPermissionedErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 15usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::InsufficientSignedStake(_) => { + ::SELECTOR + } + Self::InsufficientWeight(_) => { + ::SELECTOR + } + Self::InvalidLength(_) => ::SELECTOR, + Self::InvalidQuorum(_) => ::SELECTOR, + Self::InvalidReferenceBlock(_) => { + ::SELECTOR + } + Self::InvalidSignature(_) => { + ::SELECTOR + } + Self::InvalidSignedWeight(_) => { + ::SELECTOR + } + Self::InvalidThreshold(_) => { + ::SELECTOR + } + Self::LengthMismatch(_) => ::SELECTOR, + Self::MustUpdateAllOperators(_) => { + ::SELECTOR + } + Self::NotSorted(_) => ::SELECTOR, + Self::OperatorAlreadyAllowlisted(_) => { + ::SELECTOR + } + Self::OperatorAlreadyRegistered(_) => { + ::SELECTOR + } + Self::OperatorNotAllowlisted(_) => { + ::SELECTOR + } + Self::OperatorNotRegistered(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result< + ECDSAStakeRegistryPermissionedErrors, + >] = &[ + { + fn OperatorNotRegistered( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryPermissionedErrors::OperatorNotRegistered) + } + OperatorNotRegistered + }, + { + fn MustUpdateAllOperators( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryPermissionedErrors::MustUpdateAllOperators) + } + MustUpdateAllOperators + }, + { + fn OperatorAlreadyRegistered( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryPermissionedErrors::OperatorAlreadyRegistered) + } + OperatorAlreadyRegistered + }, + { + fn OperatorNotAllowlisted( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryPermissionedErrors::OperatorNotAllowlisted) + } + OperatorNotAllowlisted + }, + { + fn InvalidSignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryPermissionedErrors::InvalidSignature) + } + InvalidSignature + }, + { + fn InvalidLength( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(ECDSAStakeRegistryPermissionedErrors::InvalidLength) + } + InvalidLength + }, + { + fn InvalidSignedWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryPermissionedErrors::InvalidSignedWeight) + } + InvalidSignedWeight + }, + { + fn InsufficientWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryPermissionedErrors::InsufficientWeight) + } + InsufficientWeight + }, + { + fn InvalidThreshold( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryPermissionedErrors::InvalidThreshold) + } + InvalidThreshold + }, + { + fn NotSorted( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(ECDSAStakeRegistryPermissionedErrors::NotSorted) + } + NotSorted + }, + { + fn InvalidQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(ECDSAStakeRegistryPermissionedErrors::InvalidQuorum) + } + InvalidQuorum + }, + { + fn InsufficientSignedStake( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryPermissionedErrors::InsufficientSignedStake) + } + InsufficientSignedStake + }, + { + fn InvalidReferenceBlock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryPermissionedErrors::InvalidReferenceBlock) + } + InvalidReferenceBlock + }, + { + fn OperatorAlreadyAllowlisted( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryPermissionedErrors::OperatorAlreadyAllowlisted) + } + OperatorAlreadyAllowlisted + }, + { + fn LengthMismatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryPermissionedErrors::LengthMismatch) + } + LengthMismatch + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::InsufficientSignedStake(inner) => { + ::abi_encoded_size(inner) + } + Self::InsufficientWeight(inner) => { + ::abi_encoded_size(inner) + } + Self::InvalidLength(inner) => { + ::abi_encoded_size(inner) + } + Self::InvalidQuorum(inner) => { + ::abi_encoded_size(inner) + } + Self::InvalidReferenceBlock(inner) => { + ::abi_encoded_size(inner) + } + Self::InvalidSignature(inner) => { + ::abi_encoded_size(inner) + } + Self::InvalidSignedWeight(inner) => { + ::abi_encoded_size(inner) + } + Self::InvalidThreshold(inner) => { + ::abi_encoded_size(inner) + } + Self::LengthMismatch(inner) => { + ::abi_encoded_size(inner) + } + Self::MustUpdateAllOperators(inner) => { + ::abi_encoded_size(inner) + } + Self::NotSorted(inner) => { + ::abi_encoded_size(inner) + } + Self::OperatorAlreadyAllowlisted(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::OperatorAlreadyRegistered(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::OperatorNotAllowlisted(inner) => { + ::abi_encoded_size(inner) + } + Self::OperatorNotRegistered(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::InsufficientSignedStake(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::InsufficientWeight(inner) => { + ::abi_encode_raw(inner, out) + } + Self::InvalidLength(inner) => { + ::abi_encode_raw(inner, out) + } + Self::InvalidQuorum(inner) => { + ::abi_encode_raw(inner, out) + } + Self::InvalidReferenceBlock(inner) => { + ::abi_encode_raw(inner, out) + } + Self::InvalidSignature(inner) => { + ::abi_encode_raw(inner, out) + } + Self::InvalidSignedWeight(inner) => { + ::abi_encode_raw(inner, out) + } + Self::InvalidThreshold(inner) => { + ::abi_encode_raw(inner, out) + } + Self::LengthMismatch(inner) => { + ::abi_encode_raw(inner, out) + } + Self::MustUpdateAllOperators(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::NotSorted(inner) => { + ::abi_encode_raw(inner, out) + } + Self::OperatorAlreadyAllowlisted(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::OperatorAlreadyRegistered(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::OperatorNotAllowlisted(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::OperatorNotRegistered(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`ECDSAStakeRegistryPermissioned`](self) events. + pub enum ECDSAStakeRegistryPermissionedEvents { + Initialized(Initialized), + MinimumWeightUpdated(MinimumWeightUpdated), + OperatorDeregistered(OperatorDeregistered), + OperatorEjected(OperatorEjected), + OperatorPermitted(OperatorPermitted), + OperatorRegistered(OperatorRegistered), + OperatorRevoked(OperatorRevoked), + OperatorWeightUpdated(OperatorWeightUpdated), + OwnershipTransferred(OwnershipTransferred), + QuorumUpdated(QuorumUpdated), + SigningKeyUpdate(SigningKeyUpdate), + ThresholdWeightUpdated(ThresholdWeightUpdated), + TotalWeightUpdated(TotalWeightUpdated), + UpdateMinimumWeight(UpdateMinimumWeight), + } + #[automatically_derived] + impl ECDSAStakeRegistryPermissionedEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 30u8, 164u8, 33u8, 134u8, 179u8, 5u8, 250u8, 55u8, 49u8, 4u8, 80u8, 217u8, 251u8, + 135u8, 234u8, 30u8, 143u8, 12u8, 127u8, 68u8, 126u8, 119u8, 20u8, 121u8, 227u8, + 178u8, 118u8, 52u8, 191u8, 232u8, 77u8, 193u8, + ], + [ + 35u8, 170u8, 212u8, 230u8, 23u8, 68u8, 236u8, 225u8, 100u8, 19u8, 10u8, 164u8, + 21u8, 193u8, 97u8, 110u8, 128u8, 19u8, 107u8, 15u8, 7u8, 112u8, 229u8, 101u8, + 137u8, 67u8, 139u8, 144u8, 178u8, 105u8, 38u8, 94u8, + ], + [ + 49u8, 224u8, 173u8, 254u8, 199u8, 27u8, 204u8, 238u8, 55u8, 182u8, 232u8, 58u8, + 144u8, 194u8, 254u8, 219u8, 23u8, 216u8, 241u8, 105u8, 63u8, 238u8, 134u8, 60u8, + 71u8, 113u8, 231u8, 191u8, 226u8, 174u8, 213u8, 128u8, + ], + [ + 68u8, 204u8, 128u8, 20u8, 27u8, 71u8, 113u8, 124u8, 198u8, 14u8, 221u8, 58u8, + 213u8, 75u8, 56u8, 176u8, 14u8, 254u8, 159u8, 226u8, 59u8, 40u8, 152u8, 241u8, + 91u8, 207u8, 136u8, 75u8, 15u8, 58u8, 212u8, 149u8, + ], + [ + 113u8, 60u8, 165u8, 59u8, 136u8, 214u8, 235u8, 99u8, 245u8, 177u8, 133u8, 76u8, + 184u8, 203u8, 221u8, 115u8, 110u8, 197u8, 30u8, 218u8, 34u8, 94u8, 70u8, 121u8, + 26u8, 169u8, 41u8, 139u8, 1u8, 96u8, 100u8, 143u8, + ], + [ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, 56u8, + 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, 96u8, + 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ], + [ + 134u8, 220u8, 248u8, 107u8, 18u8, 223u8, 238u8, 222u8, 167u8, 74u8, 233u8, 48u8, + 13u8, 189u8, 170u8, 25u8, 59u8, 204u8, 229u8, 128u8, 147u8, 105u8, 200u8, 23u8, + 126u8, 162u8, 244u8, 234u8, 170u8, 101u8, 114u8, 155u8, + ], + [ + 136u8, 119u8, 13u8, 200u8, 98u8, 228u8, 122u8, 126u8, 213u8, 134u8, 144u8, 120u8, + 87u8, 235u8, 27u8, 117u8, 228u8, 197u8, 255u8, 200u8, 183u8, 7u8, 199u8, 238u8, + 16u8, 235u8, 116u8, 214u8, 136u8, 95u8, 229u8, 148u8, + ], + [ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, 208u8, + 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, 175u8, 227u8, + 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ], + [ + 147u8, 36u8, 247u8, 229u8, 167u8, 192u8, 40u8, 136u8, 8u8, 166u8, 52u8, 204u8, + 222u8, 68u8, 184u8, 233u8, 121u8, 103u8, 100u8, 116u8, 178u8, 46u8, 41u8, 238u8, + 157u8, 213u8, 105u8, 181u8, 94u8, 121u8, 26u8, 75u8, + ], + [ + 164u8, 83u8, 219u8, 97u8, 42u8, 245u8, 158u8, 85u8, 33u8, 214u8, 171u8, 146u8, + 132u8, 220u8, 62u8, 45u8, 6u8, 175u8, 40u8, 110u8, 177u8, 177u8, 183u8, 183u8, + 113u8, 252u8, 228u8, 113u8, 108u8, 25u8, 242u8, 193u8, + ], + [ + 165u8, 243u8, 183u8, 98u8, 111u8, 216u8, 111u8, 249u8, 137u8, 241u8, 210u8, 44u8, + 243u8, 212u8, 29u8, 116u8, 89u8, 30u8, 166u8, 235u8, 153u8, 36u8, 16u8, 121u8, + 64u8, 11u8, 12u8, 51u8, 42u8, 154u8, 143u8, 17u8, + ], + [ + 208u8, 97u8, 22u8, 130u8, 82u8, 244u8, 65u8, 115u8, 54u8, 88u8, 240u8, 158u8, 77u8, + 143u8, 91u8, 45u8, 153u8, 142u8, 212u8, 239u8, 36u8, 162u8, 187u8, 253u8, 108u8, + 236u8, 165u8, 46u8, 161u8, 49u8, 80u8, 2u8, + ], + [ + 233u8, 188u8, 142u8, 176u8, 12u8, 7u8, 102u8, 215u8, 137u8, 236u8, 186u8, 0u8, + 15u8, 88u8, 84u8, 6u8, 7u8, 91u8, 5u8, 59u8, 241u8, 132u8, 42u8, 161u8, 157u8, + 74u8, 245u8, 44u8, 82u8, 188u8, 105u8, 32u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for ECDSAStakeRegistryPermissionedEvents { + const NAME: &'static str = "ECDSAStakeRegistryPermissionedEvents"; + const COUNT: usize = 14usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::Initialized) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::MinimumWeightUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorDeregistered) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorEjected) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorPermitted) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorRegistered) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorRevoked) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorWeightUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OwnershipTransferred) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::QuorumUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::SigningKeyUpdate) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ThresholdWeightUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::TotalWeightUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::UpdateMinimumWeight) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ECDSAStakeRegistryPermissionedEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::MinimumWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorDeregistered(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorEjected(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorPermitted(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorRegistered(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorRevoked(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::QuorumUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::SigningKeyUpdate(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ThresholdWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::TotalWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::UpdateMinimumWeight(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::MinimumWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorDeregistered(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorEjected(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorPermitted(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorRegistered(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorRevoked(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::QuorumUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::SigningKeyUpdate(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ThresholdWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::TotalWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::UpdateMinimumWeight(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ECDSAStakeRegistryPermissioned`](self) contract instance. + + See the [wrapper's documentation](`ECDSAStakeRegistryPermissionedInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ECDSAStakeRegistryPermissionedInstance { + ECDSAStakeRegistryPermissionedInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _delegationManager: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + ECDSAStakeRegistryPermissionedInstance::::deploy(provider, _delegationManager) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _delegationManager: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + ECDSAStakeRegistryPermissionedInstance::::deploy_builder( + provider, + _delegationManager, + ) + } + /**A [`ECDSAStakeRegistryPermissioned`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ECDSAStakeRegistryPermissioned`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ECDSAStakeRegistryPermissionedInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ECDSAStakeRegistryPermissionedInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ECDSAStakeRegistryPermissionedInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ECDSAStakeRegistryPermissionedInstance + { + /**Creates a new wrapper around an on-chain [`ECDSAStakeRegistryPermissioned`](self) contract instance. + + See the [wrapper's documentation](`ECDSAStakeRegistryPermissionedInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _delegationManager: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, _delegationManager); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _delegationManager: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode(&constructorCall { + _delegationManager, + })[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ECDSAStakeRegistryPermissionedInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ECDSAStakeRegistryPermissionedInstance { + ECDSAStakeRegistryPermissionedInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ECDSAStakeRegistryPermissionedInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`allowlistedOperators`] function. + pub fn allowlistedOperators( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&allowlistedOperatorsCall { _0 }) + } + ///Creates a new call builder for the [`deregisterOperator`] function. + pub fn deregisterOperator( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&deregisterOperatorCall {}) + } + ///Creates a new call builder for the [`ejectOperator`] function. + pub fn ejectOperator( + &self, + _operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&ejectOperatorCall { _operator }) + } + ///Creates a new call builder for the [`getLastCheckpointOperatorWeight`] function. + pub fn getLastCheckpointOperatorWeight( + &self, + _operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getLastCheckpointOperatorWeightCall { _operator }) + } + ///Creates a new call builder for the [`getLastCheckpointThresholdWeight`] function. + pub fn getLastCheckpointThresholdWeight( + &self, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&getLastCheckpointThresholdWeightCall {}) + } + ///Creates a new call builder for the [`getLastCheckpointThresholdWeightAtBlock`] function. + pub fn getLastCheckpointThresholdWeightAtBlock( + &self, + _blockNumber: u32, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&getLastCheckpointThresholdWeightAtBlockCall { _blockNumber }) + } + ///Creates a new call builder for the [`getLastCheckpointTotalWeight`] function. + pub fn getLastCheckpointTotalWeight( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getLastCheckpointTotalWeightCall {}) + } + ///Creates a new call builder for the [`getLastCheckpointTotalWeightAtBlock`] function. + pub fn getLastCheckpointTotalWeightAtBlock( + &self, + _blockNumber: u32, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&getLastCheckpointTotalWeightAtBlockCall { _blockNumber }) + } + ///Creates a new call builder for the [`getLastestOperatorSigningKey`] function. + pub fn getLastestOperatorSigningKey( + &self, + _operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getLastestOperatorSigningKeyCall { _operator }) + } + ///Creates a new call builder for the [`getOperatorSigningKeyAtBlock`] function. + pub fn getOperatorSigningKeyAtBlock( + &self, + _operator: alloy::sol_types::private::Address, + _blockNumber: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorSigningKeyAtBlockCall { + _operator, + _blockNumber, + }) + } + ///Creates a new call builder for the [`getOperatorWeight`] function. + pub fn getOperatorWeight( + &self, + _operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorWeightCall { _operator }) + } + ///Creates a new call builder for the [`getOperatorWeightAtBlock`] function. + pub fn getOperatorWeightAtBlock( + &self, + _operator: alloy::sol_types::private::Address, + _blockNumber: u32, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorWeightAtBlockCall { + _operator, + _blockNumber, + }) + } + ///Creates a new call builder for the [`initialize`] function. + pub fn initialize( + &self, + _serviceManager: alloy::sol_types::private::Address, + _thresholdWeight: alloy::sol_types::private::primitives::aliases::U256, + _quorum: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initializeCall { + _serviceManager, + _thresholdWeight, + _quorum, + }) + } + ///Creates a new call builder for the [`isValidSignature`] function. + pub fn isValidSignature( + &self, + _dataHash: alloy::sol_types::private::FixedBytes<32>, + _signatureData: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&isValidSignatureCall { + _dataHash, + _signatureData, + }) + } + ///Creates a new call builder for the [`minimumWeight`] function. + pub fn minimumWeight(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&minimumWeightCall {}) + } + ///Creates a new call builder for the [`operatorRegistered`] function. + pub fn operatorRegistered( + &self, + _operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&operatorRegisteredCall { _operator }) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`permitOperator`] function. + pub fn permitOperator( + &self, + _operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&permitOperatorCall { _operator }) + } + ///Creates a new call builder for the [`quorum`] function. + pub fn quorum(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&quorumCall {}) + } + ///Creates a new call builder for the [`registerOperatorWithSignature`] function. + pub fn registerOperatorWithSignature( + &self, + _operatorSignature: ::RustType, + _signingKey: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterOperatorWithSignatureCall { + _operatorSignature, + _signingKey, + }) + } + ///Creates a new call builder for the [`renounceOwnership`] function. + pub fn renounceOwnership( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&renounceOwnershipCall {}) + } + ///Creates a new call builder for the [`revokeOperator`] function. + pub fn revokeOperator( + &self, + _operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&revokeOperatorCall { _operator }) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + ///Creates a new call builder for the [`updateMinimumWeight`] function. + pub fn updateMinimumWeight( + &self, + _newMinimumWeight: alloy::sol_types::private::primitives::aliases::U256, + _operators: alloy::sol_types::private::Vec, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateMinimumWeightCall { + _newMinimumWeight, + _operators, + }) + } + ///Creates a new call builder for the [`updateOperatorSigningKey`] function. + pub fn updateOperatorSigningKey( + &self, + _newSigningKey: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateOperatorSigningKeyCall { _newSigningKey }) + } + ///Creates a new call builder for the [`updateOperators`] function. + pub fn updateOperators( + &self, + _operators: alloy::sol_types::private::Vec, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateOperatorsCall { _operators }) + } + ///Creates a new call builder for the [`updateOperatorsForQuorum`] function. + pub fn updateOperatorsForQuorum( + &self, + operatorsPerQuorum: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec, + >, + _1: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateOperatorsForQuorumCall { + operatorsPerQuorum, + _1, + }) + } + ///Creates a new call builder for the [`updateQuorumConfig`] function. + pub fn updateQuorumConfig( + &self, + _quorum: ::RustType, + _operators: alloy::sol_types::private::Vec, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateQuorumConfigCall { + _quorum, + _operators, + }) + } + ///Creates a new call builder for the [`updateStakeThreshold`] function. + pub fn updateStakeThreshold( + &self, + _thresholdWeight: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateStakeThresholdCall { _thresholdWeight }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ECDSAStakeRegistryPermissionedInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Initialized`] event. + pub fn Initialized_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`MinimumWeightUpdated`] event. + pub fn MinimumWeightUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorDeregistered`] event. + pub fn OperatorDeregistered_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorEjected`] event. + pub fn OperatorEjected_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorPermitted`] event. + pub fn OperatorPermitted_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorRegistered`] event. + pub fn OperatorRegistered_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorRevoked`] event. + pub fn OperatorRevoked_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorWeightUpdated`] event. + pub fn OperatorWeightUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`QuorumUpdated`] event. + pub fn QuorumUpdated_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`SigningKeyUpdate`] event. + pub fn SigningKeyUpdate_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ThresholdWeightUpdated`] event. + pub fn ThresholdWeightUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`TotalWeightUpdated`] event. + pub fn TotalWeightUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`UpdateMinimumWeight`] event. + pub fn UpdateMinimumWeight_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/ecdsastakeregistrystorage.rs b/crates/utils/src/ecdsastakeregistrystorage.rs new file mode 100644 index 00000000..ea900ad8 --- /dev/null +++ b/crates/utils/src/ecdsastakeregistrystorage.rs @@ -0,0 +1,3155 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ECDSAStakeRegistryStorage { + struct Quorum { + StrategyParams[] strategies; + } + struct StrategyParams { + address strategy; + uint96 multiplier; + } + + error InsufficientSignedStake(); + error InsufficientWeight(); + error InvalidLength(); + error InvalidQuorum(); + error InvalidReferenceBlock(); + error InvalidSignature(); + error InvalidSignedWeight(); + error InvalidThreshold(); + error LengthMismatch(); + error MustUpdateAllOperators(); + error NotSorted(); + error OperatorAlreadyRegistered(); + error OperatorNotRegistered(); + + event MinimumWeightUpdated(uint256 _old, uint256 _new); + event OperatorDeregistered(address indexed _operator, address indexed _avs); + event OperatorRegistered(address indexed _operator, address indexed _avs); + event OperatorWeightUpdated(address indexed _operator, uint256 oldWeight, uint256 newWeight); + event QuorumUpdated(Quorum _old, Quorum _new); + event SigningKeyUpdate(address indexed operator, uint256 indexed updateBlock, address indexed newSigningKey, address oldSigningKey); + event ThresholdWeightUpdated(uint256 _thresholdWeight); + event TotalWeightUpdated(uint256 oldTotalWeight, uint256 newTotalWeight); + event UpdateMinimumWeight(uint256 oldMinimumWeight, uint256 newMinimumWeight); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "event", + "name": "MinimumWeightUpdated", + "inputs": [ + { + "name": "_old", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "_new", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorDeregistered", + "inputs": [ + { + "name": "_operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_avs", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorRegistered", + "inputs": [ + { + "name": "_operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_avs", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorWeightUpdated", + "inputs": [ + { + "name": "_operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "oldWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "newWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "QuorumUpdated", + "inputs": [ + { + "name": "_old", + "type": "tuple", + "indexed": false, + "internalType": "struct Quorum", + "components": [ + { + "name": "strategies", + "type": "tuple[]", + "internalType": "struct StrategyParams[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ] + }, + { + "name": "_new", + "type": "tuple", + "indexed": false, + "internalType": "struct Quorum", + "components": [ + { + "name": "strategies", + "type": "tuple[]", + "internalType": "struct StrategyParams[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "SigningKeyUpdate", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "updateBlock", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "newSigningKey", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "oldSigningKey", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ThresholdWeightUpdated", + "inputs": [ + { + "name": "_thresholdWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "TotalWeightUpdated", + "inputs": [ + { + "name": "oldTotalWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "newTotalWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "UpdateMinimumWeight", + "inputs": [ + { + "name": "oldMinimumWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "newMinimumWeight", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "InsufficientSignedStake", + "inputs": [] + }, + { + "type": "error", + "name": "InsufficientWeight", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidLength", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidQuorum", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidReferenceBlock", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidSignature", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidSignedWeight", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidThreshold", + "inputs": [] + }, + { + "type": "error", + "name": "LengthMismatch", + "inputs": [] + }, + { + "type": "error", + "name": "MustUpdateAllOperators", + "inputs": [] + }, + { + "type": "error", + "name": "NotSorted", + "inputs": [] + }, + { + "type": "error", + "name": "OperatorAlreadyRegistered", + "inputs": [] + }, + { + "type": "error", + "name": "OperatorNotRegistered", + "inputs": [] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ECDSAStakeRegistryStorage { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**```solidity + struct Quorum { StrategyParams[] strategies; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct Quorum { + pub strategies: + alloy::sol_types::private::Vec<::RustType>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec<::RustType>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: Quorum) -> Self { + (value.strategies,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for Quorum { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategies: tuple.0, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for Quorum { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for Quorum { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.strategies), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Quorum { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for Quorum { + const NAME: &'static str = "Quorum"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed("Quorum(StrategyParams[] strategies)") + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + let mut components = alloy_sol_types::private::Vec::with_capacity(1); + components.push(::eip712_root_type()); + components + .extend(::eip712_components()); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + as alloy_sol_types::SolType>::eip712_data_word(&self.strategies) + .0 + .to_vec() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Quorum { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.strategies, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.strategies, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct StrategyParams { address strategy; uint96 multiplier; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct StrategyParams { + pub strategy: alloy::sol_types::private::Address, + pub multiplier: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<96>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U96, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: StrategyParams) -> Self { + (value.strategy, value.multiplier) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for StrategyParams { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategy: tuple.0, + multiplier: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for StrategyParams { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for StrategyParams { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.multiplier, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for StrategyParams { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for StrategyParams { + const NAME: &'static str = "StrategyParams"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "StrategyParams(address strategy,uint96 multiplier)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.strategy, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.multiplier) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for StrategyParams { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.strategy, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.multiplier, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.strategy, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.multiplier, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**Custom error with signature `InsufficientSignedStake()` and selector `0xe121632f`. + ```solidity + error InsufficientSignedStake(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InsufficientSignedStake {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InsufficientSignedStake) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InsufficientSignedStake { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InsufficientSignedStake { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InsufficientSignedStake()"; + const SELECTOR: [u8; 4] = [225u8, 33u8, 99u8, 47u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InsufficientWeight()` and selector `0xa8792fd1`. + ```solidity + error InsufficientWeight(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InsufficientWeight {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InsufficientWeight) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InsufficientWeight { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InsufficientWeight { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InsufficientWeight()"; + const SELECTOR: [u8; 4] = [168u8, 121u8, 47u8, 209u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidLength()` and selector `0x947d5a84`. + ```solidity + error InvalidLength(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidLength {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidLength) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidLength { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidLength { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidLength()"; + const SELECTOR: [u8; 4] = [148u8, 125u8, 90u8, 132u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidQuorum()` and selector `0xd1735779`. + ```solidity + error InvalidQuorum(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidQuorum {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidQuorum) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidQuorum { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidQuorum { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidQuorum()"; + const SELECTOR: [u8; 4] = [209u8, 115u8, 87u8, 121u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidReferenceBlock()` and selector `0xe64f180f`. + ```solidity + error InvalidReferenceBlock(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidReferenceBlock {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidReferenceBlock) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidReferenceBlock { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidReferenceBlock { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidReferenceBlock()"; + const SELECTOR: [u8; 4] = [230u8, 79u8, 24u8, 15u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidSignature()` and selector `0x8baa579f`. + ```solidity + error InvalidSignature(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidSignature {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidSignature) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidSignature { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidSignature { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidSignature()"; + const SELECTOR: [u8; 4] = [139u8, 170u8, 87u8, 159u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidSignedWeight()` and selector `0x960b41ee`. + ```solidity + error InvalidSignedWeight(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidSignedWeight {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidSignedWeight) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidSignedWeight { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidSignedWeight { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidSignedWeight()"; + const SELECTOR: [u8; 4] = [150u8, 11u8, 65u8, 238u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidThreshold()` and selector `0xaabd5a09`. + ```solidity + error InvalidThreshold(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidThreshold {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidThreshold) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidThreshold { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidThreshold { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidThreshold()"; + const SELECTOR: [u8; 4] = [170u8, 189u8, 90u8, 9u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `LengthMismatch()` and selector `0xff633a38`. + ```solidity + error LengthMismatch(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct LengthMismatch {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: LengthMismatch) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for LengthMismatch { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for LengthMismatch { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "LengthMismatch()"; + const SELECTOR: [u8; 4] = [255u8, 99u8, 58u8, 56u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `MustUpdateAllOperators()` and selector `0x2d3df6b6`. + ```solidity + error MustUpdateAllOperators(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct MustUpdateAllOperators {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: MustUpdateAllOperators) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for MustUpdateAllOperators { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for MustUpdateAllOperators { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "MustUpdateAllOperators()"; + const SELECTOR: [u8; 4] = [45u8, 61u8, 246u8, 182u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `NotSorted()` and selector `0xba50f911`. + ```solidity + error NotSorted(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct NotSorted {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: NotSorted) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for NotSorted { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for NotSorted { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "NotSorted()"; + const SELECTOR: [u8; 4] = [186u8, 80u8, 249u8, 17u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `OperatorAlreadyRegistered()` and selector `0x42ee68b5`. + ```solidity + error OperatorAlreadyRegistered(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OperatorAlreadyRegistered {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OperatorAlreadyRegistered) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OperatorAlreadyRegistered { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for OperatorAlreadyRegistered { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "OperatorAlreadyRegistered()"; + const SELECTOR: [u8; 4] = [66u8, 238u8, 104u8, 181u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `OperatorNotRegistered()` and selector `0x25ec6c1f`. + ```solidity + error OperatorNotRegistered(); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OperatorNotRegistered {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OperatorNotRegistered) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OperatorNotRegistered { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for OperatorNotRegistered { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "OperatorNotRegistered()"; + const SELECTOR: [u8; 4] = [37u8, 236u8, 108u8, 31u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Event with signature `MinimumWeightUpdated(uint256,uint256)` and selector `0x713ca53b88d6eb63f5b1854cb8cbdd736ec51eda225e46791aa9298b0160648f`. + ```solidity + event MinimumWeightUpdated(uint256 _old, uint256 _new); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct MinimumWeightUpdated { + #[allow(missing_docs)] + pub _old: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub _new: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for MinimumWeightUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "MinimumWeightUpdated(uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 113u8, 60u8, 165u8, 59u8, 136u8, 214u8, 235u8, 99u8, 245u8, 177u8, 133u8, 76u8, + 184u8, 203u8, 221u8, 115u8, 110u8, 197u8, 30u8, 218u8, 34u8, 94u8, 70u8, 121u8, + 26u8, 169u8, 41u8, 139u8, 1u8, 96u8, 100u8, 143u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _old: data.0, + _new: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._old, + ), + as alloy_sol_types::SolType>::tokenize( + &self._new, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for MinimumWeightUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&MinimumWeightUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &MinimumWeightUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorDeregistered(address,address)` and selector `0x31e0adfec71bccee37b6e83a90c2fedb17d8f1693fee863c4771e7bfe2aed580`. + ```solidity + event OperatorDeregistered(address indexed _operator, address indexed _avs); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorDeregistered { + #[allow(missing_docs)] + pub _operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _avs: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorDeregistered { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OperatorDeregistered(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 49u8, 224u8, 173u8, 254u8, 199u8, 27u8, 204u8, 238u8, 55u8, 182u8, 232u8, 58u8, + 144u8, 194u8, 254u8, 219u8, 23u8, 216u8, 241u8, 105u8, 63u8, 238u8, 134u8, + 60u8, 71u8, 113u8, 231u8, 191u8, 226u8, 174u8, 213u8, 128u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _operator: topics.1, + _avs: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._operator.clone(), + self._avs.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self._operator, + ); + out[2usize] = ::encode_topic( + &self._avs, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorDeregistered { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorDeregistered> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorDeregistered) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorRegistered(address,address)` and selector `0xa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c1`. + ```solidity + event OperatorRegistered(address indexed _operator, address indexed _avs); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorRegistered { + #[allow(missing_docs)] + pub _operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _avs: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorRegistered { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OperatorRegistered(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 164u8, 83u8, 219u8, 97u8, 42u8, 245u8, 158u8, 85u8, 33u8, 214u8, 171u8, 146u8, + 132u8, 220u8, 62u8, 45u8, 6u8, 175u8, 40u8, 110u8, 177u8, 177u8, 183u8, 183u8, + 113u8, 252u8, 228u8, 113u8, 108u8, 25u8, 242u8, 193u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _operator: topics.1, + _avs: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._operator.clone(), + self._avs.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self._operator, + ); + out[2usize] = ::encode_topic( + &self._avs, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorRegistered { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorRegistered> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorRegistered) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorWeightUpdated(address,uint256,uint256)` and selector `0x88770dc862e47a7ed586907857eb1b75e4c5ffc8b707c7ee10eb74d6885fe594`. + ```solidity + event OperatorWeightUpdated(address indexed _operator, uint256 oldWeight, uint256 newWeight); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorWeightUpdated { + #[allow(missing_docs)] + pub _operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub oldWeight: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub newWeight: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorWeightUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OperatorWeightUpdated(address,uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 136u8, 119u8, 13u8, 200u8, 98u8, 228u8, 122u8, 126u8, 213u8, 134u8, 144u8, + 120u8, 87u8, 235u8, 27u8, 117u8, 228u8, 197u8, 255u8, 200u8, 183u8, 7u8, 199u8, + 238u8, 16u8, 235u8, 116u8, 214u8, 136u8, 95u8, 229u8, 148u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _operator: topics.1, + oldWeight: data.0, + newWeight: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.oldWeight, + ), + as alloy_sol_types::SolType>::tokenize( + &self.newWeight, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self._operator.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self._operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorWeightUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorWeightUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorWeightUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `QuorumUpdated(((address,uint96)[]),((address,uint96)[]))` and selector `0x23aad4e61744ece164130aa415c1616e80136b0f0770e56589438b90b269265e`. + ```solidity + event QuorumUpdated(Quorum _old, Quorum _new); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct QuorumUpdated { + #[allow(missing_docs)] + pub _old: ::RustType, + #[allow(missing_docs)] + pub _new: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for QuorumUpdated { + type DataTuple<'a> = (Quorum, Quorum); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = + "QuorumUpdated(((address,uint96)[]),((address,uint96)[]))"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 35u8, 170u8, 212u8, 230u8, 23u8, 68u8, 236u8, 225u8, 100u8, 19u8, 10u8, 164u8, + 21u8, 193u8, 97u8, 110u8, 128u8, 19u8, 107u8, 15u8, 7u8, 112u8, 229u8, 101u8, + 137u8, 67u8, 139u8, 144u8, 178u8, 105u8, 38u8, 94u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _old: data.0, + _new: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize(&self._old), + ::tokenize(&self._new), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for QuorumUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&QuorumUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &QuorumUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `SigningKeyUpdate(address,uint256,address,address)` and selector `0xd061168252f441733658f09e4d8f5b2d998ed4ef24a2bbfd6ceca52ea1315002`. + ```solidity + event SigningKeyUpdate(address indexed operator, uint256 indexed updateBlock, address indexed newSigningKey, address oldSigningKey); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct SigningKeyUpdate { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub updateBlock: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub newSigningKey: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub oldSigningKey: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for SigningKeyUpdate { + type DataTuple<'a> = (alloy::sol_types::sol_data::Address,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "SigningKeyUpdate(address,uint256,address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 208u8, 97u8, 22u8, 130u8, 82u8, 244u8, 65u8, 115u8, 54u8, 88u8, 240u8, 158u8, + 77u8, 143u8, 91u8, 45u8, 153u8, 142u8, 212u8, 239u8, 36u8, 162u8, 187u8, 253u8, + 108u8, 236u8, 165u8, 46u8, 161u8, 49u8, 80u8, 2u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: topics.1, + updateBlock: topics.2, + newSigningKey: topics.3, + oldSigningKey: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.oldSigningKey, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.operator.clone(), + self.updateBlock.clone(), + self.newSigningKey.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + out[2usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.updateBlock); + out[3usize] = ::encode_topic( + &self.newSigningKey, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for SigningKeyUpdate { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&SigningKeyUpdate> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &SigningKeyUpdate) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `ThresholdWeightUpdated(uint256)` and selector `0x9324f7e5a7c0288808a634ccde44b8e979676474b22e29ee9dd569b55e791a4b`. + ```solidity + event ThresholdWeightUpdated(uint256 _thresholdWeight); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct ThresholdWeightUpdated { + #[allow(missing_docs)] + pub _thresholdWeight: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ThresholdWeightUpdated { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "ThresholdWeightUpdated(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 147u8, 36u8, 247u8, 229u8, 167u8, 192u8, 40u8, 136u8, 8u8, 166u8, 52u8, 204u8, + 222u8, 68u8, 184u8, 233u8, 121u8, 103u8, 100u8, 116u8, 178u8, 46u8, 41u8, + 238u8, 157u8, 213u8, 105u8, 181u8, 94u8, 121u8, 26u8, 75u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _thresholdWeight: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._thresholdWeight, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ThresholdWeightUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ThresholdWeightUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ThresholdWeightUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `TotalWeightUpdated(uint256,uint256)` and selector `0x86dcf86b12dfeedea74ae9300dbdaa193bcce5809369c8177ea2f4eaaa65729b`. + ```solidity + event TotalWeightUpdated(uint256 oldTotalWeight, uint256 newTotalWeight); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct TotalWeightUpdated { + #[allow(missing_docs)] + pub oldTotalWeight: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub newTotalWeight: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for TotalWeightUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "TotalWeightUpdated(uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 134u8, 220u8, 248u8, 107u8, 18u8, 223u8, 238u8, 222u8, 167u8, 74u8, 233u8, + 48u8, 13u8, 189u8, 170u8, 25u8, 59u8, 204u8, 229u8, 128u8, 147u8, 105u8, 200u8, + 23u8, 126u8, 162u8, 244u8, 234u8, 170u8, 101u8, 114u8, 155u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + oldTotalWeight: data.0, + newTotalWeight: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.oldTotalWeight, + ), + as alloy_sol_types::SolType>::tokenize( + &self.newTotalWeight, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for TotalWeightUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&TotalWeightUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &TotalWeightUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `UpdateMinimumWeight(uint256,uint256)` and selector `0x1ea42186b305fa37310450d9fb87ea1e8f0c7f447e771479e3b27634bfe84dc1`. + ```solidity + event UpdateMinimumWeight(uint256 oldMinimumWeight, uint256 newMinimumWeight); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct UpdateMinimumWeight { + #[allow(missing_docs)] + pub oldMinimumWeight: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub newMinimumWeight: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for UpdateMinimumWeight { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "UpdateMinimumWeight(uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 30u8, 164u8, 33u8, 134u8, 179u8, 5u8, 250u8, 55u8, 49u8, 4u8, 80u8, 217u8, + 251u8, 135u8, 234u8, 30u8, 143u8, 12u8, 127u8, 68u8, 126u8, 119u8, 20u8, 121u8, + 227u8, 178u8, 118u8, 52u8, 191u8, 232u8, 77u8, 193u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + oldMinimumWeight: data.0, + newMinimumWeight: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.oldMinimumWeight, + ), + as alloy_sol_types::SolType>::tokenize( + &self.newMinimumWeight, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for UpdateMinimumWeight { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&UpdateMinimumWeight> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &UpdateMinimumWeight) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + ///Container for all the [`ECDSAStakeRegistryStorage`](self) custom errors. + pub enum ECDSAStakeRegistryStorageErrors { + InsufficientSignedStake(InsufficientSignedStake), + InsufficientWeight(InsufficientWeight), + InvalidLength(InvalidLength), + InvalidQuorum(InvalidQuorum), + InvalidReferenceBlock(InvalidReferenceBlock), + InvalidSignature(InvalidSignature), + InvalidSignedWeight(InvalidSignedWeight), + InvalidThreshold(InvalidThreshold), + LengthMismatch(LengthMismatch), + MustUpdateAllOperators(MustUpdateAllOperators), + NotSorted(NotSorted), + OperatorAlreadyRegistered(OperatorAlreadyRegistered), + OperatorNotRegistered(OperatorNotRegistered), + } + #[automatically_derived] + impl ECDSAStakeRegistryStorageErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [37u8, 236u8, 108u8, 31u8], + [45u8, 61u8, 246u8, 182u8], + [66u8, 238u8, 104u8, 181u8], + [139u8, 170u8, 87u8, 159u8], + [148u8, 125u8, 90u8, 132u8], + [150u8, 11u8, 65u8, 238u8], + [168u8, 121u8, 47u8, 209u8], + [170u8, 189u8, 90u8, 9u8], + [186u8, 80u8, 249u8, 17u8], + [209u8, 115u8, 87u8, 121u8], + [225u8, 33u8, 99u8, 47u8], + [230u8, 79u8, 24u8, 15u8], + [255u8, 99u8, 58u8, 56u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ECDSAStakeRegistryStorageErrors { + const NAME: &'static str = "ECDSAStakeRegistryStorageErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 13usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::InsufficientSignedStake(_) => { + ::SELECTOR + } + Self::InsufficientWeight(_) => { + ::SELECTOR + } + Self::InvalidLength(_) => ::SELECTOR, + Self::InvalidQuorum(_) => ::SELECTOR, + Self::InvalidReferenceBlock(_) => { + ::SELECTOR + } + Self::InvalidSignature(_) => { + ::SELECTOR + } + Self::InvalidSignedWeight(_) => { + ::SELECTOR + } + Self::InvalidThreshold(_) => { + ::SELECTOR + } + Self::LengthMismatch(_) => ::SELECTOR, + Self::MustUpdateAllOperators(_) => { + ::SELECTOR + } + Self::NotSorted(_) => ::SELECTOR, + Self::OperatorAlreadyRegistered(_) => { + ::SELECTOR + } + Self::OperatorNotRegistered(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result< + ECDSAStakeRegistryStorageErrors, + >] = &[ + { + fn OperatorNotRegistered( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryStorageErrors::OperatorNotRegistered) + } + OperatorNotRegistered + }, + { + fn MustUpdateAllOperators( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryStorageErrors::MustUpdateAllOperators) + } + MustUpdateAllOperators + }, + { + fn OperatorAlreadyRegistered( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryStorageErrors::OperatorAlreadyRegistered) + } + OperatorAlreadyRegistered + }, + { + fn InvalidSignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryStorageErrors::InvalidSignature) + } + InvalidSignature + }, + { + fn InvalidLength( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(ECDSAStakeRegistryStorageErrors::InvalidLength) + } + InvalidLength + }, + { + fn InvalidSignedWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryStorageErrors::InvalidSignedWeight) + } + InvalidSignedWeight + }, + { + fn InsufficientWeight( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryStorageErrors::InsufficientWeight) + } + InsufficientWeight + }, + { + fn InvalidThreshold( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryStorageErrors::InvalidThreshold) + } + InvalidThreshold + }, + { + fn NotSorted( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(ECDSAStakeRegistryStorageErrors::NotSorted) + } + NotSorted + }, + { + fn InvalidQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(ECDSAStakeRegistryStorageErrors::InvalidQuorum) + } + InvalidQuorum + }, + { + fn InsufficientSignedStake( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryStorageErrors::InsufficientSignedStake) + } + InsufficientSignedStake + }, + { + fn InvalidReferenceBlock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryStorageErrors::InvalidReferenceBlock) + } + InvalidReferenceBlock + }, + { + fn LengthMismatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ECDSAStakeRegistryStorageErrors::LengthMismatch) + } + LengthMismatch + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::InsufficientSignedStake(inner) => { + ::abi_encoded_size(inner) + } + Self::InsufficientWeight(inner) => { + ::abi_encoded_size(inner) + } + Self::InvalidLength(inner) => { + ::abi_encoded_size(inner) + } + Self::InvalidQuorum(inner) => { + ::abi_encoded_size(inner) + } + Self::InvalidReferenceBlock(inner) => { + ::abi_encoded_size(inner) + } + Self::InvalidSignature(inner) => { + ::abi_encoded_size(inner) + } + Self::InvalidSignedWeight(inner) => { + ::abi_encoded_size(inner) + } + Self::InvalidThreshold(inner) => { + ::abi_encoded_size(inner) + } + Self::LengthMismatch(inner) => { + ::abi_encoded_size(inner) + } + Self::MustUpdateAllOperators(inner) => { + ::abi_encoded_size(inner) + } + Self::NotSorted(inner) => { + ::abi_encoded_size(inner) + } + Self::OperatorAlreadyRegistered(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::OperatorNotRegistered(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::InsufficientSignedStake(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::InsufficientWeight(inner) => { + ::abi_encode_raw(inner, out) + } + Self::InvalidLength(inner) => { + ::abi_encode_raw(inner, out) + } + Self::InvalidQuorum(inner) => { + ::abi_encode_raw(inner, out) + } + Self::InvalidReferenceBlock(inner) => { + ::abi_encode_raw(inner, out) + } + Self::InvalidSignature(inner) => { + ::abi_encode_raw(inner, out) + } + Self::InvalidSignedWeight(inner) => { + ::abi_encode_raw(inner, out) + } + Self::InvalidThreshold(inner) => { + ::abi_encode_raw(inner, out) + } + Self::LengthMismatch(inner) => { + ::abi_encode_raw(inner, out) + } + Self::MustUpdateAllOperators(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::NotSorted(inner) => { + ::abi_encode_raw(inner, out) + } + Self::OperatorAlreadyRegistered(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::OperatorNotRegistered(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`ECDSAStakeRegistryStorage`](self) events. + pub enum ECDSAStakeRegistryStorageEvents { + MinimumWeightUpdated(MinimumWeightUpdated), + OperatorDeregistered(OperatorDeregistered), + OperatorRegistered(OperatorRegistered), + OperatorWeightUpdated(OperatorWeightUpdated), + QuorumUpdated(QuorumUpdated), + SigningKeyUpdate(SigningKeyUpdate), + ThresholdWeightUpdated(ThresholdWeightUpdated), + TotalWeightUpdated(TotalWeightUpdated), + UpdateMinimumWeight(UpdateMinimumWeight), + } + #[automatically_derived] + impl ECDSAStakeRegistryStorageEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 30u8, 164u8, 33u8, 134u8, 179u8, 5u8, 250u8, 55u8, 49u8, 4u8, 80u8, 217u8, 251u8, + 135u8, 234u8, 30u8, 143u8, 12u8, 127u8, 68u8, 126u8, 119u8, 20u8, 121u8, 227u8, + 178u8, 118u8, 52u8, 191u8, 232u8, 77u8, 193u8, + ], + [ + 35u8, 170u8, 212u8, 230u8, 23u8, 68u8, 236u8, 225u8, 100u8, 19u8, 10u8, 164u8, + 21u8, 193u8, 97u8, 110u8, 128u8, 19u8, 107u8, 15u8, 7u8, 112u8, 229u8, 101u8, + 137u8, 67u8, 139u8, 144u8, 178u8, 105u8, 38u8, 94u8, + ], + [ + 49u8, 224u8, 173u8, 254u8, 199u8, 27u8, 204u8, 238u8, 55u8, 182u8, 232u8, 58u8, + 144u8, 194u8, 254u8, 219u8, 23u8, 216u8, 241u8, 105u8, 63u8, 238u8, 134u8, 60u8, + 71u8, 113u8, 231u8, 191u8, 226u8, 174u8, 213u8, 128u8, + ], + [ + 113u8, 60u8, 165u8, 59u8, 136u8, 214u8, 235u8, 99u8, 245u8, 177u8, 133u8, 76u8, + 184u8, 203u8, 221u8, 115u8, 110u8, 197u8, 30u8, 218u8, 34u8, 94u8, 70u8, 121u8, + 26u8, 169u8, 41u8, 139u8, 1u8, 96u8, 100u8, 143u8, + ], + [ + 134u8, 220u8, 248u8, 107u8, 18u8, 223u8, 238u8, 222u8, 167u8, 74u8, 233u8, 48u8, + 13u8, 189u8, 170u8, 25u8, 59u8, 204u8, 229u8, 128u8, 147u8, 105u8, 200u8, 23u8, + 126u8, 162u8, 244u8, 234u8, 170u8, 101u8, 114u8, 155u8, + ], + [ + 136u8, 119u8, 13u8, 200u8, 98u8, 228u8, 122u8, 126u8, 213u8, 134u8, 144u8, 120u8, + 87u8, 235u8, 27u8, 117u8, 228u8, 197u8, 255u8, 200u8, 183u8, 7u8, 199u8, 238u8, + 16u8, 235u8, 116u8, 214u8, 136u8, 95u8, 229u8, 148u8, + ], + [ + 147u8, 36u8, 247u8, 229u8, 167u8, 192u8, 40u8, 136u8, 8u8, 166u8, 52u8, 204u8, + 222u8, 68u8, 184u8, 233u8, 121u8, 103u8, 100u8, 116u8, 178u8, 46u8, 41u8, 238u8, + 157u8, 213u8, 105u8, 181u8, 94u8, 121u8, 26u8, 75u8, + ], + [ + 164u8, 83u8, 219u8, 97u8, 42u8, 245u8, 158u8, 85u8, 33u8, 214u8, 171u8, 146u8, + 132u8, 220u8, 62u8, 45u8, 6u8, 175u8, 40u8, 110u8, 177u8, 177u8, 183u8, 183u8, + 113u8, 252u8, 228u8, 113u8, 108u8, 25u8, 242u8, 193u8, + ], + [ + 208u8, 97u8, 22u8, 130u8, 82u8, 244u8, 65u8, 115u8, 54u8, 88u8, 240u8, 158u8, 77u8, + 143u8, 91u8, 45u8, 153u8, 142u8, 212u8, 239u8, 36u8, 162u8, 187u8, 253u8, 108u8, + 236u8, 165u8, 46u8, 161u8, 49u8, 80u8, 2u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for ECDSAStakeRegistryStorageEvents { + const NAME: &'static str = "ECDSAStakeRegistryStorageEvents"; + const COUNT: usize = 9usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::MinimumWeightUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorDeregistered) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorRegistered) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorWeightUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::QuorumUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::SigningKeyUpdate) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ThresholdWeightUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::TotalWeightUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::UpdateMinimumWeight) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ECDSAStakeRegistryStorageEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::MinimumWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorDeregistered(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorRegistered(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::QuorumUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::SigningKeyUpdate(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ThresholdWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::TotalWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::UpdateMinimumWeight(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::MinimumWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorDeregistered(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorRegistered(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::QuorumUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::SigningKeyUpdate(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ThresholdWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::TotalWeightUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::UpdateMinimumWeight(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ECDSAStakeRegistryStorage`](self) contract instance. + + See the [wrapper's documentation](`ECDSAStakeRegistryStorageInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ECDSAStakeRegistryStorageInstance { + ECDSAStakeRegistryStorageInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + ECDSAStakeRegistryStorageInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + ECDSAStakeRegistryStorageInstance::::deploy_builder(provider) + } + /**A [`ECDSAStakeRegistryStorage`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ECDSAStakeRegistryStorage`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ECDSAStakeRegistryStorageInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ECDSAStakeRegistryStorageInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ECDSAStakeRegistryStorageInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ECDSAStakeRegistryStorageInstance + { + /**Creates a new wrapper around an on-chain [`ECDSAStakeRegistryStorage`](self) contract instance. + + See the [wrapper's documentation](`ECDSAStakeRegistryStorageInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ECDSAStakeRegistryStorageInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ECDSAStakeRegistryStorageInstance { + ECDSAStakeRegistryStorageInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ECDSAStakeRegistryStorageInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ECDSAStakeRegistryStorageInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`MinimumWeightUpdated`] event. + pub fn MinimumWeightUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorDeregistered`] event. + pub fn OperatorDeregistered_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorRegistered`] event. + pub fn OperatorRegistered_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorWeightUpdated`] event. + pub fn OperatorWeightUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`QuorumUpdated`] event. + pub fn QuorumUpdated_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`SigningKeyUpdate`] event. + pub fn SigningKeyUpdate_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ThresholdWeightUpdated`] event. + pub fn ThresholdWeightUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`TotalWeightUpdated`] event. + pub fn TotalWeightUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`UpdateMinimumWeight`] event. + pub fn UpdateMinimumWeight_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/ecdsaupgradeable.rs b/crates/utils/src/ecdsaupgradeable.rs new file mode 100644 index 00000000..2bb4ec3e --- /dev/null +++ b/crates/utils/src/ecdsaupgradeable.rs @@ -0,0 +1,221 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ECDSAUpgradeable {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ECDSAUpgradeable { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c4834c367ffdb2039413b7e9d48672fd43f57e42d5671901dad059c3f5ae85f264736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xC4\x83L6\x7F\xFD\xB2\x03\x94\x13\xB7\xE9\xD4\x86r\xFDC\xF5~B\xD5g\x19\x01\xDA\xD0Y\xC3\xF5\xAE\x85\xF2dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c4834c367ffdb2039413b7e9d48672fd43f57e42d5671901dad059c3f5ae85f264736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xC4\x83L6\x7F\xFD\xB2\x03\x94\x13\xB7\xE9\xD4\x86r\xFDC\xF5~B\xD5g\x19\x01\xDA\xD0Y\xC3\xF5\xAE\x85\xF2dsolcC\0\x08\x0C\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ECDSAUpgradeable`](self) contract instance. + + See the [wrapper's documentation](`ECDSAUpgradeableInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ECDSAUpgradeableInstance { + ECDSAUpgradeableInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + ECDSAUpgradeableInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + ECDSAUpgradeableInstance::::deploy_builder(provider) + } + /**A [`ECDSAUpgradeable`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ECDSAUpgradeable`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ECDSAUpgradeableInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ECDSAUpgradeableInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ECDSAUpgradeableInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ECDSAUpgradeableInstance + { + /**Creates a new wrapper around an on-chain [`ECDSAUpgradeable`](self) contract instance. + + See the [wrapper's documentation](`ECDSAUpgradeableInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ECDSAUpgradeableInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ECDSAUpgradeableInstance { + ECDSAUpgradeableInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ECDSAUpgradeableInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ECDSAUpgradeableInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/eigenlayercontractsparser.rs b/crates/utils/src/eigenlayercontractsparser.rs new file mode 100644 index 00000000..96e753c9 --- /dev/null +++ b/crates/utils/src/eigenlayercontractsparser.rs @@ -0,0 +1,427 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface EigenlayerContractsParser { + function IS_SCRIPT() external view returns (bool); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_SCRIPT", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod EigenlayerContractsParser { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052600c805462ff00ff191662010001179055348015602057600080fd5b5060898061002f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063f8ccbf4714602d575b600080fd5b600c54603f9062010000900460ff1681565b604051901515815260200160405180910390f3fea26469706673582212208681bca6b411d1a81852fda5d6e404a4249013a0bd1f6194a58406f68097612564736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15` W`\0\x80\xFD[P`\x89\x80a\0/`\09`\0\xF3\xFE`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`(W`\x005`\xE0\x1C\x80c\xF8\xCC\xBFG\x14`-W[`\0\x80\xFD[`\x0CT`?\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3\xFE\xA2dipfsX\"\x12 \x86\x81\xBC\xA6\xB4\x11\xD1\xA8\x18R\xFD\xA5\xD6\xE4\x04\xA4$\x90\x13\xA0\xBD\x1Fa\x94\xA5\x84\x06\xF6\x80\x97a%dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063f8ccbf4714602d575b600080fd5b600c54603f9062010000900460ff1681565b604051901515815260200160405180910390f3fea26469706673582212208681bca6b411d1a81852fda5d6e404a4249013a0bd1f6194a58406f68097612564736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`(W`\x005`\xE0\x1C\x80c\xF8\xCC\xBFG\x14`-W[`\0\x80\xFD[`\x0CT`?\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3\xFE\xA2dipfsX\"\x12 \x86\x81\xBC\xA6\xB4\x11\xD1\xA8\x18R\xFD\xA5\xD6\xE4\x04\xA4$\x90\x13\xA0\xBD\x1Fa\x94\xA5\x84\x06\xF6\x80\x97a%dsolcC\0\x08\x0C\x003", + ); + /**Function with signature `IS_SCRIPT()` and selector `0xf8ccbf47`. + ```solidity + function IS_SCRIPT() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_SCRIPTCall {} + ///Container type for the return parameters of the [`IS_SCRIPT()`](IS_SCRIPTCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_SCRIPTReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_SCRIPTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_SCRIPTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_SCRIPT()"; + const SELECTOR: [u8; 4] = [248u8, 204u8, 191u8, 71u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`EigenlayerContractsParser`](self) function calls. + pub enum EigenlayerContractsParserCalls { + IS_SCRIPT(IS_SCRIPTCall), + } + #[automatically_derived] + impl EigenlayerContractsParserCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[248u8, 204u8, 191u8, 71u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for EigenlayerContractsParserCalls { + const NAME: &'static str = "EigenlayerContractsParserCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_SCRIPT(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result< + EigenlayerContractsParserCalls, + >] = &[{ + fn IS_SCRIPT( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EigenlayerContractsParserCalls::IS_SCRIPT) + } + IS_SCRIPT + }]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`EigenlayerContractsParser`](self) contract instance. + + See the [wrapper's documentation](`EigenlayerContractsParserInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> EigenlayerContractsParserInstance { + EigenlayerContractsParserInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + EigenlayerContractsParserInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + EigenlayerContractsParserInstance::::deploy_builder(provider) + } + /**A [`EigenlayerContractsParser`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`EigenlayerContractsParser`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct EigenlayerContractsParserInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for EigenlayerContractsParserInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("EigenlayerContractsParserInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > EigenlayerContractsParserInstance + { + /**Creates a new wrapper around an on-chain [`EigenlayerContractsParser`](self) contract instance. + + See the [wrapper's documentation](`EigenlayerContractsParserInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl EigenlayerContractsParserInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> EigenlayerContractsParserInstance { + EigenlayerContractsParserInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > EigenlayerContractsParserInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`IS_SCRIPT`] function. + pub fn IS_SCRIPT(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_SCRIPTCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > EigenlayerContractsParserInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/eip1271signatureutils.rs b/crates/utils/src/eip1271signatureutils.rs new file mode 100644 index 00000000..43175b6b --- /dev/null +++ b/crates/utils/src/eip1271signatureutils.rs @@ -0,0 +1,222 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface EIP1271SignatureUtils {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod EIP1271SignatureUtils { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122000867163d1d9af6962b975084f57abd381390b52d6d3acf2f18580d3388489bb64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \0\x86qc\xD1\xD9\xAFib\xB9u\x08OW\xAB\xD3\x819\x0BR\xD6\xD3\xAC\xF2\xF1\x85\x80\xD38\x84\x89\xBBdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122000867163d1d9af6962b975084f57abd381390b52d6d3acf2f18580d3388489bb64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \0\x86qc\xD1\xD9\xAFib\xB9u\x08OW\xAB\xD3\x819\x0BR\xD6\xD3\xAC\xF2\xF1\x85\x80\xD38\x84\x89\xBBdsolcC\0\x08\x0C\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`EIP1271SignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`EIP1271SignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> EIP1271SignatureUtilsInstance { + EIP1271SignatureUtilsInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + EIP1271SignatureUtilsInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + EIP1271SignatureUtilsInstance::::deploy_builder(provider) + } + /**A [`EIP1271SignatureUtils`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`EIP1271SignatureUtils`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct EIP1271SignatureUtilsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for EIP1271SignatureUtilsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("EIP1271SignatureUtilsInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > EIP1271SignatureUtilsInstance + { + /**Creates a new wrapper around an on-chain [`EIP1271SignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`EIP1271SignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl EIP1271SignatureUtilsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> EIP1271SignatureUtilsInstance { + EIP1271SignatureUtilsInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > EIP1271SignatureUtilsInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > EIP1271SignatureUtilsInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/eip712.rs b/crates/utils/src/eip712.rs new file mode 100644 index 00000000..941d4f1a --- /dev/null +++ b/crates/utils/src/eip712.rs @@ -0,0 +1,218 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface EIP712 {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod EIP712 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`EIP712`](self) contract instance. + + See the [wrapper's documentation](`EIP712Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> EIP712Instance { + EIP712Instance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> { + EIP712Instance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + EIP712Instance::::deploy_builder(provider) + } + /**A [`EIP712`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`EIP712`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct EIP712Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for EIP712Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("EIP712Instance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > EIP712Instance + { + /**Creates a new wrapper around an on-chain [`EIP712`](self) contract instance. + + See the [wrapper's documentation](`EIP712Instance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl EIP712Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> EIP712Instance { + EIP712Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > EIP712Instance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > EIP712Instance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/ejectionmanager.rs b/crates/utils/src/ejectionmanager.rs new file mode 100644 index 00000000..44ce05ce --- /dev/null +++ b/crates/utils/src/ejectionmanager.rs @@ -0,0 +1,3818 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library IEjectionManager { + struct QuorumEjectionParams { uint32 rateLimitWindow; uint16 ejectableStakePercent; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IEjectionManager { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct QuorumEjectionParams { uint32 rateLimitWindow; uint16 ejectableStakePercent; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct QuorumEjectionParams { + pub rateLimitWindow: u32, + pub ejectableStakePercent: u16, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<16>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32, u16); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: QuorumEjectionParams) -> Self { + (value.rateLimitWindow, value.ejectableStakePercent) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for QuorumEjectionParams { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + rateLimitWindow: tuple.0, + ejectableStakePercent: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for QuorumEjectionParams { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for QuorumEjectionParams { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.rateLimitWindow, + ), + as alloy_sol_types::SolType>::tokenize( + &self.ejectableStakePercent, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for QuorumEjectionParams { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for QuorumEjectionParams { + const NAME: &'static str = "QuorumEjectionParams"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "QuorumEjectionParams(uint32 rateLimitWindow,uint16 ejectableStakePercent)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word( + &self.rateLimitWindow, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.ejectableStakePercent, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for QuorumEjectionParams { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.rateLimitWindow, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.ejectableStakePercent, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.rateLimitWindow, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.ejectableStakePercent, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IEjectionManager`](self) contract instance. + + See the [wrapper's documentation](`IEjectionManagerInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IEjectionManagerInstance { + IEjectionManagerInstance::::new(address, provider) + } + /**A [`IEjectionManager`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IEjectionManager`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IEjectionManagerInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IEjectionManagerInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IEjectionManagerInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IEjectionManagerInstance + { + /**Creates a new wrapper around an on-chain [`IEjectionManager`](self) contract instance. + + See the [wrapper's documentation](`IEjectionManagerInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IEjectionManagerInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IEjectionManagerInstance { + IEjectionManagerInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IEjectionManagerInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IEjectionManagerInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library IEjectionManager { + struct QuorumEjectionParams { + uint32 rateLimitWindow; + uint16 ejectableStakePercent; + } +} + +interface EjectionManager { + event EjectorUpdated(address ejector, bool status); + event Initialized(uint8 version); + event OperatorEjected(bytes32 operatorId, uint8 quorumNumber); + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + event QuorumEjection(uint32 ejectedOperators, bool ratelimitHit); + event QuorumEjectionParamsSet(uint8 quorumNumber, uint32 rateLimitWindow, uint16 ejectableStakePercent); + + constructor(address _registryCoordinator, address _stakeRegistry); + + function amountEjectableForQuorum(uint8 _quorumNumber) external view returns (uint256); + function ejectOperators(bytes32[][] memory _operatorIds) external; + function initialize(address _owner, address[] memory _ejectors, IEjectionManager.QuorumEjectionParams[] memory _quorumEjectionParams) external; + function isEjector(address) external view returns (bool); + function owner() external view returns (address); + function quorumEjectionParams(uint8) external view returns (uint32 rateLimitWindow, uint16 ejectableStakePercent); + function registryCoordinator() external view returns (address); + function renounceOwnership() external; + function setEjector(address _ejector, bool _status) external; + function setQuorumEjectionParams(uint8 _quorumNumber, IEjectionManager.QuorumEjectionParams memory _quorumEjectionParams) external; + function stakeEjectedForQuorum(uint8, uint256) external view returns (uint256 timestamp, uint256 stakeEjected); + function stakeRegistry() external view returns (address); + function transferOwnership(address newOwner) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_registryCoordinator", + "type": "address", + "internalType": "contract IRegistryCoordinator" + }, + { + "name": "_stakeRegistry", + "type": "address", + "internalType": "contract IStakeRegistry" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "amountEjectableForQuorum", + "inputs": [ + { + "name": "_quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "ejectOperators", + "inputs": [ + { + "name": "_operatorIds", + "type": "bytes32[][]", + "internalType": "bytes32[][]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "_owner", + "type": "address", + "internalType": "address" + }, + { + "name": "_ejectors", + "type": "address[]", + "internalType": "address[]" + }, + { + "name": "_quorumEjectionParams", + "type": "tuple[]", + "internalType": "struct IEjectionManager.QuorumEjectionParams[]", + "components": [ + { + "name": "rateLimitWindow", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "ejectableStakePercent", + "type": "uint16", + "internalType": "uint16" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "isEjector", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "quorumEjectionParams", + "inputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "rateLimitWindow", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "ejectableStakePercent", + "type": "uint16", + "internalType": "uint16" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registryCoordinator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IRegistryCoordinator" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setEjector", + "inputs": [ + { + "name": "_ejector", + "type": "address", + "internalType": "address" + }, + { + "name": "_status", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setQuorumEjectionParams", + "inputs": [ + { + "name": "_quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "_quorumEjectionParams", + "type": "tuple", + "internalType": "struct IEjectionManager.QuorumEjectionParams", + "components": [ + { + "name": "rateLimitWindow", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "ejectableStakePercent", + "type": "uint16", + "internalType": "uint16" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "stakeEjectedForQuorum", + "inputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "timestamp", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "stakeEjected", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "stakeRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStakeRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "EjectorUpdated", + "inputs": [ + { + "name": "ejector", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "status", + "type": "bool", + "indexed": false, + "internalType": "bool" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorEjected", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "quorumNumber", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "QuorumEjection", + "inputs": [ + { + "name": "ejectedOperators", + "type": "uint32", + "indexed": false, + "internalType": "uint32" + }, + { + "name": "ratelimitHit", + "type": "bool", + "indexed": false, + "internalType": "bool" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "QuorumEjectionParamsSet", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + }, + { + "name": "rateLimitWindow", + "type": "uint32", + "indexed": false, + "internalType": "uint32" + }, + { + "name": "ejectableStakePercent", + "type": "uint16", + "indexed": false, + "internalType": "uint16" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod EjectionManager { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60c06040523480156200001157600080fd5b50604051620015a8380380620015a8833981016040819052620000349162000134565b6001600160a01b03808316608052811660a0526200005162000059565b505062000173565b600054610100900460ff1615620000c65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000119576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013157600080fd5b50565b600080604083850312156200014857600080fd5b825162000155816200011b565b602084015190925062000168816200011b565b809150509250929050565b60805160a0516113f3620001b5600039600081816101800152818161035a0152610a0a0152600081816101f2015281816104ef015261051e01526113f36000f3fe608060405234801561001057600080fd5b50600436106100ce5760003560e01c80636d14a9871161008c5780638b88a024116100665780638b88a0241461022f5780638da5cb5b14610242578063b13f450414610253578063f2fde38b1461027457600080fd5b80636d14a987146101ed578063715018a61461021457806377d175861461021c57600080fd5b8062482569146100d35780630a0593d11461012b57806310ea4f8a146101405780633a0b0ddd14610153578063683048351461017b5780636c08a879146101ba575b600080fd5b6101076100e1366004610de1565b60676020526000908152604090205463ffffffff811690640100000000900461ffff1682565b6040805163ffffffff909316835261ffff9091166020830152015b60405180910390f35b61013e610139366004610e6e565b610287565b005b61013e61014e366004610f8f565b6107a9565b610166610161366004610fcd565b6107bb565b60408051928352602083019190915201610122565b6101a27f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610122565b6101dd6101c8366004610ff7565b60656020526000908152604090205460ff1681565b6040519015158152602001610122565b6101a27f000000000000000000000000000000000000000000000000000000000000000081565b61013e6107f7565b61013e61022a366004611087565b61080b565b61013e61023d36600461112a565b61081d565b6033546001600160a01b03166101a2565b610266610261366004610de1565b6109c3565b604051908152602001610122565b61013e610282366004610ff7565b610bc5565b3360009081526065602052604090205460ff16806102af57506033546001600160a01b031633145b6103115760405162461bcd60e51b815260206004820152602860248201527f456a6563746f723a204f6e6c79206f776e6572206f7220656a6563746f722063604482015267185b88195a9958dd60c21b60648201526084015b60405180910390fd5b60005b81518110156107a557806000610329826109c3565b905060008080805b87878151811061034357610343611200565b6020026020010151518160ff1610156106e35760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635401ed278a8a8151811061039957610399611200565b60200260200101518460ff16815181106103b5576103b5611200565b6020026020010151896040518363ffffffff1660e01b81526004016103e792919091825260ff16602082015260400190565b602060405180830381865afa158015610404573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104289190611216565b336000908152606560205260409020546001600160601b0391909116915060ff16801561046c575060ff871660009081526067602052604090205463ffffffff1615155b801561048057508561047e8287611255565b115b156104d6575060ff861660009081526066602090815260408083208151808301909252428252818301888152815460018181018455928652939094209151600290930290910191825591519082015591506106e3565b6104e08186611255565b94506104eb8461126d565b93507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636e3b17db7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663296bb0648c8c8151811061055d5761055d611200565b60200260200101518660ff168151811061057957610579611200565b60200260200101516040518263ffffffff1660e01b815260040161059f91815260200190565b602060405180830381865afa1580156105bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e09190611291565b6040516001600160f81b031960f88c901b1660208201526021016040516020818303038152906040526040518363ffffffff1660e01b81526004016106269291906112ae565b600060405180830381600087803b15801561064057600080fd5b505af1158015610654573d6000803e3d6000fd5b505050507f97ddb711c61a9d2d7effcba3e042a33862297f898d555655cca39ec4451f53b489898151811061068b5761068b611200565b60200260200101518360ff16815181106106a7576106a7611200565b6020026020010151886040516106ca92919091825260ff16602082015260400190565b60405180910390a1506106dc81611313565b9050610331565b508015801561070157503360009081526065602052604090205460ff165b1561074f5760ff851660009081526066602090815260408083208151808301909252428252818301878152815460018181018455928652939094209151600290930290910191825591519101555b6040805163ffffffff8416815282151560208201527f19dd87ae49ed14a795f8c2d5e8055bf2a4a9d01641a00a2f8f0a5a7bf7f70249910160405180910390a150505050508061079e90611333565b9050610314565b5050565b6107b1610c3e565b6107a58282610c98565b606660205281600052604060002081815481106107d757600080fd5b600091825260209091206002909102018054600190910154909250905082565b6107ff610c3e565b6108096000610cfc565b565b610813610c3e565b6107a58282610d4e565b600054610100900460ff161580801561083d5750600054600160ff909116105b806108575750303b158015610857575060005460ff166001145b6108ba5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610308565b6000805460ff1916600117905580156108dd576000805461ff0019166101001790555b6108e684610cfc565b60005b83518160ff16101561092e5761091c848260ff168151811061090d5761090d611200565b60200260200101516001610c98565b8061092681611313565b9150506108e9565b5060005b82518160ff1610156109765761096481848360ff168151811061095757610957611200565b6020026020010151610d4e565b8061096e81611313565b915050610932565b5080156109bd576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60ff811660009081526067602052604081205481906109e89063ffffffff164261134e565b60405163d5eccc0560e01b815260ff85166004820152909150600090612710907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d5eccc0590602401602060405180830381865afa158015610a59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7d9190611216565b60ff8616600090815260676020526040902054610aaf916001600160601b031690640100000000900461ffff16611365565b610ab99190611384565b60ff8516600090815260666020526040812054919250908190610ae0575090949350505050565b60ff8616600090815260666020526040902054610aff9060019061134e565b90505b60ff86166000908152606660205260409020805485919083908110610b2957610b29611200565b9060005260206000209060020201600001541115610b9e5760ff86166000908152606660205260409020805482908110610b6557610b65611200565b90600052602060002090600202016001015482610b829190611255565b915080610b8e57610b9e565b610b97816113a6565b9050610b02565b828210610bb15750600095945050505050565b610bbb828461134e565b9695505050505050565b610bcd610c3e565b6001600160a01b038116610c325760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610308565b610c3b81610cfc565b50565b6033546001600160a01b031633146108095760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610308565b6001600160a01b038216600081815260656020908152604091829020805460ff19168515159081179091558251938452908301527f7676686b6d22e112412bd874d70177e011ab06602c26063f19f0386c9a3cee4291015b60405180910390a15050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60ff8216600081815260676020908152604091829020845181548684015163ffffffff90921665ffffffffffff19909116811764010000000061ffff90931692830217909255835194855291840152908201527fe69c2827a1e2fdd32265ebb4eeea5ee564f0551cf5dfed4150f8e116a67209eb90606001610cf0565b803560ff81168114610ddc57600080fd5b919050565b600060208284031215610df357600080fd5b610dfc82610dcb565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610e4257610e42610e03565b604052919050565b600067ffffffffffffffff821115610e6457610e64610e03565b5060051b60200190565b60006020808385031215610e8157600080fd5b823567ffffffffffffffff80821115610e9957600080fd5b818501915085601f830112610ead57600080fd5b8135610ec0610ebb82610e4a565b610e19565b818152600591821b8401850191858201919089841115610edf57600080fd5b8686015b84811015610f6b57803586811115610efb5760008081fd5b8701603f81018c13610f0d5760008081fd5b888101356040610f1f610ebb83610e4a565b82815291851b83018101918b8101908f841115610f3c5760008081fd5b938201935b83851015610f5a5784358252938c0193908c0190610f41565b885250505093880193508701610ee3565b50909998505050505050505050565b6001600160a01b0381168114610c3b57600080fd5b60008060408385031215610fa257600080fd5b8235610fad81610f7a565b915060208301358015158114610fc257600080fd5b809150509250929050565b60008060408385031215610fe057600080fd5b610fe983610dcb565b946020939093013593505050565b60006020828403121561100957600080fd5b8135610dfc81610f7a565b60006040828403121561102657600080fd5b6040516040810181811067ffffffffffffffff8211171561104957611049610e03565b604052905080823563ffffffff8116811461106357600080fd5b8152602083013561ffff8116811461107a57600080fd5b6020919091015292915050565b6000806060838503121561109a57600080fd5b6110a383610dcb565b91506110b28460208501611014565b90509250929050565b600082601f8301126110cc57600080fd5b813560206110dc610ebb83610e4a565b82815260069290921b840181019181810190868411156110fb57600080fd5b8286015b8481101561111f576111118882611014565b8352918301916040016110ff565b509695505050505050565b60008060006060848603121561113f57600080fd5b833561114a81610f7a565b925060208481013567ffffffffffffffff8082111561116857600080fd5b818701915087601f83011261117c57600080fd5b813561118a610ebb82610e4a565b81815260059190911b8301840190848101908a8311156111a957600080fd5b938501935b828510156111d05784356111c181610f7a565b825293850193908501906111ae565b9650505060408701359250808311156111e857600080fd5b50506111f6868287016110bb565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561122857600080fd5b81516001600160601b0381168114610dfc57600080fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156112685761126861123f565b500190565b600063ffffffff808316818114156112875761128761123f565b6001019392505050565b6000602082840312156112a357600080fd5b8151610dfc81610f7a565b60018060a01b038316815260006020604081840152835180604085015260005b818110156112ea578581018301518582016060015282016112ce565b818111156112fc576000606083870101525b50601f01601f191692909201606001949350505050565b600060ff821660ff81141561132a5761132a61123f565b60010192915050565b60006000198214156113475761134761123f565b5060010190565b6000828210156113605761136061123f565b500390565b600081600019048311821515161561137f5761137f61123f565b500290565b6000826113a157634e487b7160e01b600052601260045260246000fd5b500490565b6000816113b5576113b561123f565b50600019019056fea26469706673582212200491d577a31ceab4c00062e65e01bccefbfae29de7f1cac7f038acd3ec33f92c64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xC0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\x15\xA88\x03\x80b\0\x15\xA8\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x014V[`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\x80R\x81\x16`\xA0Rb\0\0Qb\0\0YV[PPb\0\x01sV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FInitializable: contract is initi`D\x82\x01Rfalizing`\xC8\x1B`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[`\0T`\xFF\x90\x81\x16\x10\x15b\0\x01\x19W`\0\x80T`\xFF\x19\x16`\xFF\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x011W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\x01HW`\0\x80\xFD[\x82Qb\0\x01U\x81b\0\x01\x1BV[` \x84\x01Q\x90\x92Pb\0\x01h\x81b\0\x01\x1BV[\x80\x91PP\x92P\x92\x90PV[`\x80Q`\xA0Qa\x13\xF3b\0\x01\xB5`\09`\0\x81\x81a\x01\x80\x01R\x81\x81a\x03Z\x01Ra\n\n\x01R`\0\x81\x81a\x01\xF2\x01R\x81\x81a\x04\xEF\x01Ra\x05\x1E\x01Ra\x13\xF3`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCEW`\x005`\xE0\x1C\x80cm\x14\xA9\x87\x11a\0\x8CW\x80c\x8B\x88\xA0$\x11a\0fW\x80c\x8B\x88\xA0$\x14a\x02/W\x80c\x8D\xA5\xCB[\x14a\x02BW\x80c\xB1?E\x04\x14a\x02SW\x80c\xF2\xFD\xE3\x8B\x14a\x02tW`\0\x80\xFD[\x80cm\x14\xA9\x87\x14a\x01\xEDW\x80cqP\x18\xA6\x14a\x02\x14W\x80cw\xD1u\x86\x14a\x02\x1CW`\0\x80\xFD[\x80bH%i\x14a\0\xD3W\x80c\n\x05\x93\xD1\x14a\x01+W\x80c\x10\xEAO\x8A\x14a\x01@W\x80c:\x0B\r\xDD\x14a\x01SW\x80ch0H5\x14a\x01{W\x80cl\x08\xA8y\x14a\x01\xBAW[`\0\x80\xFD[a\x01\x07a\0\xE16`\x04a\r\xE1V[`g` R`\0\x90\x81R`@\x90 Tc\xFF\xFF\xFF\xFF\x81\x16\x90d\x01\0\0\0\0\x90\x04a\xFF\xFF\x16\x82V[`@\x80Qc\xFF\xFF\xFF\xFF\x90\x93\x16\x83Ra\xFF\xFF\x90\x91\x16` \x83\x01R\x01[`@Q\x80\x91\x03\x90\xF3[a\x01>a\x0196`\x04a\x0EnV[a\x02\x87V[\0[a\x01>a\x01N6`\x04a\x0F\x8FV[a\x07\xA9V[a\x01fa\x01a6`\x04a\x0F\xCDV[a\x07\xBBV[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x01\"V[a\x01\xA2\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\"V[a\x01\xDDa\x01\xC86`\x04a\x0F\xF7V[`e` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x01\"V[a\x01\xA2\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x01>a\x07\xF7V[a\x01>a\x02*6`\x04a\x10\x87V[a\x08\x0BV[a\x01>a\x02=6`\x04a\x11*V[a\x08\x1DV[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x01\xA2V[a\x02fa\x02a6`\x04a\r\xE1V[a\t\xC3V[`@Q\x90\x81R` \x01a\x01\"V[a\x01>a\x02\x826`\x04a\x0F\xF7V[a\x0B\xC5V[3`\0\x90\x81R`e` R`@\x90 T`\xFF\x16\x80a\x02\xAFWP`3T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\x03\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`(`$\x82\x01R\x7FEjector: Only owner or ejector c`D\x82\x01Rg\x18[\x88\x19Z\x99X\xDD`\xC2\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\0[\x81Q\x81\x10\x15a\x07\xA5W\x80`\0a\x03)\x82a\t\xC3V[\x90P`\0\x80\x80\x80[\x87\x87\x81Q\x81\x10a\x03CWa\x03Ca\x12\0V[` \x02` \x01\x01QQ\x81`\xFF\x16\x10\x15a\x06\xE3W`\0\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16cT\x01\xED'\x8A\x8A\x81Q\x81\x10a\x03\x99Wa\x03\x99a\x12\0V[` \x02` \x01\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x03\xB5Wa\x03\xB5a\x12\0V[` \x02` \x01\x01Q\x89`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xE7\x92\x91\x90\x91\x82R`\xFF\x16` \x82\x01R`@\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\x04W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04(\x91\x90a\x12\x16V[3`\0\x90\x81R`e` R`@\x90 T`\x01`\x01``\x1B\x03\x91\x90\x91\x16\x91P`\xFF\x16\x80\x15a\x04lWP`\xFF\x87\x16`\0\x90\x81R`g` R`@\x90 Tc\xFF\xFF\xFF\xFF\x16\x15\x15[\x80\x15a\x04\x80WP\x85a\x04~\x82\x87a\x12UV[\x11[\x15a\x04\xD6WP`\xFF\x86\x16`\0\x90\x81R`f` \x90\x81R`@\x80\x83 \x81Q\x80\x83\x01\x90\x92RB\x82R\x81\x83\x01\x88\x81R\x81T`\x01\x81\x81\x01\x84U\x92\x86R\x93\x90\x94 \x91Q`\x02\x90\x93\x02\x90\x91\x01\x91\x82U\x91Q\x90\x82\x01U\x91Pa\x06\xE3V[a\x04\xE0\x81\x86a\x12UV[\x94Pa\x04\xEB\x84a\x12mV[\x93P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16cn;\x17\xDB\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c)k\xB0d\x8C\x8C\x81Q\x81\x10a\x05]Wa\x05]a\x12\0V[` \x02` \x01\x01Q\x86`\xFF\x16\x81Q\x81\x10a\x05yWa\x05ya\x12\0V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x05\x9F\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\xBCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xE0\x91\x90a\x12\x91V[`@Q`\x01`\x01`\xF8\x1B\x03\x19`\xF8\x8C\x90\x1B\x16` \x82\x01R`!\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x06&\x92\x91\x90a\x12\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06@W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06TW=`\0\x80>=`\0\xFD[PPPP\x7F\x97\xDD\xB7\x11\xC6\x1A\x9D-~\xFF\xCB\xA3\xE0B\xA38b)\x7F\x89\x8DUVU\xCC\xA3\x9E\xC4E\x1FS\xB4\x89\x89\x81Q\x81\x10a\x06\x8BWa\x06\x8Ba\x12\0V[` \x02` \x01\x01Q\x83`\xFF\x16\x81Q\x81\x10a\x06\xA7Wa\x06\xA7a\x12\0V[` \x02` \x01\x01Q\x88`@Qa\x06\xCA\x92\x91\x90\x91\x82R`\xFF\x16` \x82\x01R`@\x01\x90V[`@Q\x80\x91\x03\x90\xA1Pa\x06\xDC\x81a\x13\x13V[\x90Pa\x031V[P\x80\x15\x80\x15a\x07\x01WP3`\0\x90\x81R`e` R`@\x90 T`\xFF\x16[\x15a\x07OW`\xFF\x85\x16`\0\x90\x81R`f` \x90\x81R`@\x80\x83 \x81Q\x80\x83\x01\x90\x92RB\x82R\x81\x83\x01\x87\x81R\x81T`\x01\x81\x81\x01\x84U\x92\x86R\x93\x90\x94 \x91Q`\x02\x90\x93\x02\x90\x91\x01\x91\x82U\x91Q\x91\x01U[`@\x80Qc\xFF\xFF\xFF\xFF\x84\x16\x81R\x82\x15\x15` \x82\x01R\x7F\x19\xDD\x87\xAEI\xED\x14\xA7\x95\xF8\xC2\xD5\xE8\x05[\xF2\xA4\xA9\xD0\x16A\xA0\n/\x8F\nZ{\xF7\xF7\x02I\x91\x01`@Q\x80\x91\x03\x90\xA1PPPPP\x80a\x07\x9E\x90a\x133V[\x90Pa\x03\x14V[PPV[a\x07\xB1a\x0C>V[a\x07\xA5\x82\x82a\x0C\x98V[`f` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x07\xD7W`\0\x80\xFD[`\0\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T\x90\x92P\x90P\x82V[a\x07\xFFa\x0C>V[a\x08\t`\0a\x0C\xFCV[V[a\x08\x13a\x0C>V[a\x07\xA5\x82\x82a\rNV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x08=WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x08WWP0;\x15\x80\x15a\x08WWP`\0T`\xFF\x16`\x01\x14[a\x08\xBAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01a\x03\x08V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x08\xDDW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x08\xE6\x84a\x0C\xFCV[`\0[\x83Q\x81`\xFF\x16\x10\x15a\t.Wa\t\x1C\x84\x82`\xFF\x16\x81Q\x81\x10a\t\rWa\t\ra\x12\0V[` \x02` \x01\x01Q`\x01a\x0C\x98V[\x80a\t&\x81a\x13\x13V[\x91PPa\x08\xE9V[P`\0[\x82Q\x81`\xFF\x16\x10\x15a\tvWa\td\x81\x84\x83`\xFF\x16\x81Q\x81\x10a\tWWa\tWa\x12\0V[` \x02` \x01\x01Qa\rNV[\x80a\tn\x81a\x13\x13V[\x91PPa\t2V[P\x80\x15a\t\xBDW`\0\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPV[`\xFF\x81\x16`\0\x90\x81R`g` R`@\x81 T\x81\x90a\t\xE8\x90c\xFF\xFF\xFF\xFF\x16Ba\x13NV[`@Qc\xD5\xEC\xCC\x05`\xE0\x1B\x81R`\xFF\x85\x16`\x04\x82\x01R\x90\x91P`\0\x90a'\x10\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90c\xD5\xEC\xCC\x05\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\nYW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n}\x91\x90a\x12\x16V[`\xFF\x86\x16`\0\x90\x81R`g` R`@\x90 Ta\n\xAF\x91`\x01`\x01``\x1B\x03\x16\x90d\x01\0\0\0\0\x90\x04a\xFF\xFF\x16a\x13eV[a\n\xB9\x91\x90a\x13\x84V[`\xFF\x85\x16`\0\x90\x81R`f` R`@\x81 T\x91\x92P\x90\x81\x90a\n\xE0WP\x90\x94\x93PPPPV[`\xFF\x86\x16`\0\x90\x81R`f` R`@\x90 Ta\n\xFF\x90`\x01\x90a\x13NV[\x90P[`\xFF\x86\x16`\0\x90\x81R`f` R`@\x90 \x80T\x85\x91\x90\x83\x90\x81\x10a\x0B)Wa\x0B)a\x12\0V[\x90`\0R` `\0 \x90`\x02\x02\x01`\0\x01T\x11\x15a\x0B\x9EW`\xFF\x86\x16`\0\x90\x81R`f` R`@\x90 \x80T\x82\x90\x81\x10a\x0BeWa\x0Bea\x12\0V[\x90`\0R` `\0 \x90`\x02\x02\x01`\x01\x01T\x82a\x0B\x82\x91\x90a\x12UV[\x91P\x80a\x0B\x8EWa\x0B\x9EV[a\x0B\x97\x81a\x13\xA6V[\x90Pa\x0B\x02V[\x82\x82\x10a\x0B\xB1WP`\0\x95\x94PPPPPV[a\x0B\xBB\x82\x84a\x13NV[\x96\x95PPPPPPV[a\x0B\xCDa\x0C>V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x0C2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x03\x08V[a\x0C;\x81a\x0C\xFCV[PV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x08\tW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x03\x08V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x81\x81R`e` \x90\x81R`@\x91\x82\x90 \x80T`\xFF\x19\x16\x85\x15\x15\x90\x81\x17\x90\x91U\x82Q\x93\x84R\x90\x83\x01R\x7Fvvhkm\"\xE1\x12A+\xD8t\xD7\x01w\xE0\x11\xAB\x06`,&\x06?\x19\xF08l\x9A<\xEEB\x91\x01[`@Q\x80\x91\x03\x90\xA1PPV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[`\xFF\x82\x16`\0\x81\x81R`g` \x90\x81R`@\x91\x82\x90 \x84Q\x81T\x86\x84\x01Qc\xFF\xFF\xFF\xFF\x90\x92\x16e\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x91\x16\x81\x17d\x01\0\0\0\0a\xFF\xFF\x90\x93\x16\x92\x83\x02\x17\x90\x92U\x83Q\x94\x85R\x91\x84\x01R\x90\x82\x01R\x7F\xE6\x9C('\xA1\xE2\xFD\xD3\"e\xEB\xB4\xEE\xEA^\xE5d\xF0U\x1C\xF5\xDF\xEDAP\xF8\xE1\x16\xA6r\t\xEB\x90``\x01a\x0C\xF0V[\x805`\xFF\x81\x16\x81\x14a\r\xDCW`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\r\xF3W`\0\x80\xFD[a\r\xFC\x82a\r\xCBV[\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x0EBWa\x0EBa\x0E\x03V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x0EdWa\x0Eda\x0E\x03V[P`\x05\x1B` \x01\x90V[`\0` \x80\x83\x85\x03\x12\x15a\x0E\x81W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0E\x99W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x0E\xADW`\0\x80\xFD[\x815a\x0E\xC0a\x0E\xBB\x82a\x0EJV[a\x0E\x19V[\x81\x81R`\x05\x91\x82\x1B\x84\x01\x85\x01\x91\x85\x82\x01\x91\x90\x89\x84\x11\x15a\x0E\xDFW`\0\x80\xFD[\x86\x86\x01[\x84\x81\x10\x15a\x0FkW\x805\x86\x81\x11\x15a\x0E\xFBW`\0\x80\x81\xFD[\x87\x01`?\x81\x01\x8C\x13a\x0F\rW`\0\x80\x81\xFD[\x88\x81\x015`@a\x0F\x1Fa\x0E\xBB\x83a\x0EJV[\x82\x81R\x91\x85\x1B\x83\x01\x81\x01\x91\x8B\x81\x01\x90\x8F\x84\x11\x15a\x0Fa\x0196`\x04a\x0EnV[a\x02\x87V[\0[a\x01>a\x01N6`\x04a\x0F\x8FV[a\x07\xA9V[a\x01fa\x01a6`\x04a\x0F\xCDV[a\x07\xBBV[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x01\"V[a\x01\xA2\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\"V[a\x01\xDDa\x01\xC86`\x04a\x0F\xF7V[`e` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x01\"V[a\x01\xA2\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x01>a\x07\xF7V[a\x01>a\x02*6`\x04a\x10\x87V[a\x08\x0BV[a\x01>a\x02=6`\x04a\x11*V[a\x08\x1DV[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x01\xA2V[a\x02fa\x02a6`\x04a\r\xE1V[a\t\xC3V[`@Q\x90\x81R` \x01a\x01\"V[a\x01>a\x02\x826`\x04a\x0F\xF7V[a\x0B\xC5V[3`\0\x90\x81R`e` R`@\x90 T`\xFF\x16\x80a\x02\xAFWP`3T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\x03\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`(`$\x82\x01R\x7FEjector: Only owner or ejector c`D\x82\x01Rg\x18[\x88\x19Z\x99X\xDD`\xC2\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\0[\x81Q\x81\x10\x15a\x07\xA5W\x80`\0a\x03)\x82a\t\xC3V[\x90P`\0\x80\x80\x80[\x87\x87\x81Q\x81\x10a\x03CWa\x03Ca\x12\0V[` \x02` \x01\x01QQ\x81`\xFF\x16\x10\x15a\x06\xE3W`\0\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16cT\x01\xED'\x8A\x8A\x81Q\x81\x10a\x03\x99Wa\x03\x99a\x12\0V[` \x02` \x01\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x03\xB5Wa\x03\xB5a\x12\0V[` \x02` \x01\x01Q\x89`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x03\xE7\x92\x91\x90\x91\x82R`\xFF\x16` \x82\x01R`@\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\x04W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04(\x91\x90a\x12\x16V[3`\0\x90\x81R`e` R`@\x90 T`\x01`\x01``\x1B\x03\x91\x90\x91\x16\x91P`\xFF\x16\x80\x15a\x04lWP`\xFF\x87\x16`\0\x90\x81R`g` R`@\x90 Tc\xFF\xFF\xFF\xFF\x16\x15\x15[\x80\x15a\x04\x80WP\x85a\x04~\x82\x87a\x12UV[\x11[\x15a\x04\xD6WP`\xFF\x86\x16`\0\x90\x81R`f` \x90\x81R`@\x80\x83 \x81Q\x80\x83\x01\x90\x92RB\x82R\x81\x83\x01\x88\x81R\x81T`\x01\x81\x81\x01\x84U\x92\x86R\x93\x90\x94 \x91Q`\x02\x90\x93\x02\x90\x91\x01\x91\x82U\x91Q\x90\x82\x01U\x91Pa\x06\xE3V[a\x04\xE0\x81\x86a\x12UV[\x94Pa\x04\xEB\x84a\x12mV[\x93P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16cn;\x17\xDB\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c)k\xB0d\x8C\x8C\x81Q\x81\x10a\x05]Wa\x05]a\x12\0V[` \x02` \x01\x01Q\x86`\xFF\x16\x81Q\x81\x10a\x05yWa\x05ya\x12\0V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x05\x9F\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\xBCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xE0\x91\x90a\x12\x91V[`@Q`\x01`\x01`\xF8\x1B\x03\x19`\xF8\x8C\x90\x1B\x16` \x82\x01R`!\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x06&\x92\x91\x90a\x12\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06@W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06TW=`\0\x80>=`\0\xFD[PPPP\x7F\x97\xDD\xB7\x11\xC6\x1A\x9D-~\xFF\xCB\xA3\xE0B\xA38b)\x7F\x89\x8DUVU\xCC\xA3\x9E\xC4E\x1FS\xB4\x89\x89\x81Q\x81\x10a\x06\x8BWa\x06\x8Ba\x12\0V[` \x02` \x01\x01Q\x83`\xFF\x16\x81Q\x81\x10a\x06\xA7Wa\x06\xA7a\x12\0V[` \x02` \x01\x01Q\x88`@Qa\x06\xCA\x92\x91\x90\x91\x82R`\xFF\x16` \x82\x01R`@\x01\x90V[`@Q\x80\x91\x03\x90\xA1Pa\x06\xDC\x81a\x13\x13V[\x90Pa\x031V[P\x80\x15\x80\x15a\x07\x01WP3`\0\x90\x81R`e` R`@\x90 T`\xFF\x16[\x15a\x07OW`\xFF\x85\x16`\0\x90\x81R`f` \x90\x81R`@\x80\x83 \x81Q\x80\x83\x01\x90\x92RB\x82R\x81\x83\x01\x87\x81R\x81T`\x01\x81\x81\x01\x84U\x92\x86R\x93\x90\x94 \x91Q`\x02\x90\x93\x02\x90\x91\x01\x91\x82U\x91Q\x91\x01U[`@\x80Qc\xFF\xFF\xFF\xFF\x84\x16\x81R\x82\x15\x15` \x82\x01R\x7F\x19\xDD\x87\xAEI\xED\x14\xA7\x95\xF8\xC2\xD5\xE8\x05[\xF2\xA4\xA9\xD0\x16A\xA0\n/\x8F\nZ{\xF7\xF7\x02I\x91\x01`@Q\x80\x91\x03\x90\xA1PPPPP\x80a\x07\x9E\x90a\x133V[\x90Pa\x03\x14V[PPV[a\x07\xB1a\x0C>V[a\x07\xA5\x82\x82a\x0C\x98V[`f` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x07\xD7W`\0\x80\xFD[`\0\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T\x90\x92P\x90P\x82V[a\x07\xFFa\x0C>V[a\x08\t`\0a\x0C\xFCV[V[a\x08\x13a\x0C>V[a\x07\xA5\x82\x82a\rNV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x08=WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x08WWP0;\x15\x80\x15a\x08WWP`\0T`\xFF\x16`\x01\x14[a\x08\xBAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01a\x03\x08V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x08\xDDW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x08\xE6\x84a\x0C\xFCV[`\0[\x83Q\x81`\xFF\x16\x10\x15a\t.Wa\t\x1C\x84\x82`\xFF\x16\x81Q\x81\x10a\t\rWa\t\ra\x12\0V[` \x02` \x01\x01Q`\x01a\x0C\x98V[\x80a\t&\x81a\x13\x13V[\x91PPa\x08\xE9V[P`\0[\x82Q\x81`\xFF\x16\x10\x15a\tvWa\td\x81\x84\x83`\xFF\x16\x81Q\x81\x10a\tWWa\tWa\x12\0V[` \x02` \x01\x01Qa\rNV[\x80a\tn\x81a\x13\x13V[\x91PPa\t2V[P\x80\x15a\t\xBDW`\0\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPV[`\xFF\x81\x16`\0\x90\x81R`g` R`@\x81 T\x81\x90a\t\xE8\x90c\xFF\xFF\xFF\xFF\x16Ba\x13NV[`@Qc\xD5\xEC\xCC\x05`\xE0\x1B\x81R`\xFF\x85\x16`\x04\x82\x01R\x90\x91P`\0\x90a'\x10\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90c\xD5\xEC\xCC\x05\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\nYW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n}\x91\x90a\x12\x16V[`\xFF\x86\x16`\0\x90\x81R`g` R`@\x90 Ta\n\xAF\x91`\x01`\x01``\x1B\x03\x16\x90d\x01\0\0\0\0\x90\x04a\xFF\xFF\x16a\x13eV[a\n\xB9\x91\x90a\x13\x84V[`\xFF\x85\x16`\0\x90\x81R`f` R`@\x81 T\x91\x92P\x90\x81\x90a\n\xE0WP\x90\x94\x93PPPPV[`\xFF\x86\x16`\0\x90\x81R`f` R`@\x90 Ta\n\xFF\x90`\x01\x90a\x13NV[\x90P[`\xFF\x86\x16`\0\x90\x81R`f` R`@\x90 \x80T\x85\x91\x90\x83\x90\x81\x10a\x0B)Wa\x0B)a\x12\0V[\x90`\0R` `\0 \x90`\x02\x02\x01`\0\x01T\x11\x15a\x0B\x9EW`\xFF\x86\x16`\0\x90\x81R`f` R`@\x90 \x80T\x82\x90\x81\x10a\x0BeWa\x0Bea\x12\0V[\x90`\0R` `\0 \x90`\x02\x02\x01`\x01\x01T\x82a\x0B\x82\x91\x90a\x12UV[\x91P\x80a\x0B\x8EWa\x0B\x9EV[a\x0B\x97\x81a\x13\xA6V[\x90Pa\x0B\x02V[\x82\x82\x10a\x0B\xB1WP`\0\x95\x94PPPPPV[a\x0B\xBB\x82\x84a\x13NV[\x96\x95PPPPPPV[a\x0B\xCDa\x0C>V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x0C2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x03\x08V[a\x0C;\x81a\x0C\xFCV[PV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x08\tW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x03\x08V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x81\x81R`e` \x90\x81R`@\x91\x82\x90 \x80T`\xFF\x19\x16\x85\x15\x15\x90\x81\x17\x90\x91U\x82Q\x93\x84R\x90\x83\x01R\x7Fvvhkm\"\xE1\x12A+\xD8t\xD7\x01w\xE0\x11\xAB\x06`,&\x06?\x19\xF08l\x9A<\xEEB\x91\x01[`@Q\x80\x91\x03\x90\xA1PPV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[`\xFF\x82\x16`\0\x81\x81R`g` \x90\x81R`@\x91\x82\x90 \x84Q\x81T\x86\x84\x01Qc\xFF\xFF\xFF\xFF\x90\x92\x16e\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x91\x16\x81\x17d\x01\0\0\0\0a\xFF\xFF\x90\x93\x16\x92\x83\x02\x17\x90\x92U\x83Q\x94\x85R\x91\x84\x01R\x90\x82\x01R\x7F\xE6\x9C('\xA1\xE2\xFD\xD3\"e\xEB\xB4\xEE\xEA^\xE5d\xF0U\x1C\xF5\xDF\xEDAP\xF8\xE1\x16\xA6r\t\xEB\x90``\x01a\x0C\xF0V[\x805`\xFF\x81\x16\x81\x14a\r\xDCW`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\r\xF3W`\0\x80\xFD[a\r\xFC\x82a\r\xCBV[\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x0EBWa\x0EBa\x0E\x03V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x0EdWa\x0Eda\x0E\x03V[P`\x05\x1B` \x01\x90V[`\0` \x80\x83\x85\x03\x12\x15a\x0E\x81W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0E\x99W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x0E\xADW`\0\x80\xFD[\x815a\x0E\xC0a\x0E\xBB\x82a\x0EJV[a\x0E\x19V[\x81\x81R`\x05\x91\x82\x1B\x84\x01\x85\x01\x91\x85\x82\x01\x91\x90\x89\x84\x11\x15a\x0E\xDFW`\0\x80\xFD[\x86\x86\x01[\x84\x81\x10\x15a\x0FkW\x805\x86\x81\x11\x15a\x0E\xFBW`\0\x80\x81\xFD[\x87\x01`?\x81\x01\x8C\x13a\x0F\rW`\0\x80\x81\xFD[\x88\x81\x015`@a\x0F\x1Fa\x0E\xBB\x83a\x0EJV[\x82\x81R\x91\x85\x1B\x83\x01\x81\x01\x91\x8B\x81\x01\x90\x8F\x84\x11\x15a\x0F = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "EjectorUpdated(address,bool)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 118u8, 118u8, 104u8, 107u8, 109u8, 34u8, 225u8, 18u8, 65u8, 43u8, 216u8, 116u8, + 215u8, 1u8, 119u8, 224u8, 17u8, 171u8, 6u8, 96u8, 44u8, 38u8, 6u8, 63u8, 25u8, + 240u8, 56u8, 108u8, 154u8, 60u8, 238u8, 66u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + ejector: data.0, + status: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.ejector, + ), + ::tokenize( + &self.status, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for EjectorUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&EjectorUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &EjectorUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`. + ```solidity + event Initialized(uint8 version); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Initialized { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "Initialized(uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, + 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, + 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { version: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.version, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Initialized { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Initialized> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Initialized) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorEjected(bytes32,uint8)` and selector `0x97ddb711c61a9d2d7effcba3e042a33862297f898d555655cca39ec4451f53b4`. + ```solidity + event OperatorEjected(bytes32 operatorId, uint8 quorumNumber); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorEjected { + #[allow(missing_docs)] + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub quorumNumber: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorEjected { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "OperatorEjected(bytes32,uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 151u8, 221u8, 183u8, 17u8, 198u8, 26u8, 157u8, 45u8, 126u8, 255u8, 203u8, + 163u8, 224u8, 66u8, 163u8, 56u8, 98u8, 41u8, 127u8, 137u8, 141u8, 85u8, 86u8, + 85u8, 204u8, 163u8, 158u8, 196u8, 69u8, 31u8, 83u8, 180u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operatorId: data.0, + quorumNumber: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorEjected { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorEjected> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorEjected) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. + ```solidity + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub previousOwner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, + 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, + 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + previousOwner: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.previousOwner.clone(), + self.newOwner.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.previousOwner, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `QuorumEjection(uint32,bool)` and selector `0x19dd87ae49ed14a795f8c2d5e8055bf2a4a9d01641a00a2f8f0a5a7bf7f70249`. + ```solidity + event QuorumEjection(uint32 ejectedOperators, bool ratelimitHit); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct QuorumEjection { + #[allow(missing_docs)] + pub ejectedOperators: u32, + #[allow(missing_docs)] + pub ratelimitHit: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for QuorumEjection { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Bool, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "QuorumEjection(uint32,bool)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 25u8, 221u8, 135u8, 174u8, 73u8, 237u8, 20u8, 167u8, 149u8, 248u8, 194u8, + 213u8, 232u8, 5u8, 91u8, 242u8, 164u8, 169u8, 208u8, 22u8, 65u8, 160u8, 10u8, + 47u8, 143u8, 10u8, 90u8, 123u8, 247u8, 247u8, 2u8, 73u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + ejectedOperators: data.0, + ratelimitHit: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.ejectedOperators, + ), + ::tokenize( + &self.ratelimitHit, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for QuorumEjection { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&QuorumEjection> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &QuorumEjection) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `QuorumEjectionParamsSet(uint8,uint32,uint16)` and selector `0xe69c2827a1e2fdd32265ebb4eeea5ee564f0551cf5dfed4150f8e116a67209eb`. + ```solidity + event QuorumEjectionParamsSet(uint8 quorumNumber, uint32 rateLimitWindow, uint16 ejectableStakePercent); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct QuorumEjectionParamsSet { + #[allow(missing_docs)] + pub quorumNumber: u8, + #[allow(missing_docs)] + pub rateLimitWindow: u32, + #[allow(missing_docs)] + pub ejectableStakePercent: u16, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for QuorumEjectionParamsSet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<16>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "QuorumEjectionParamsSet(uint8,uint32,uint16)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 230u8, 156u8, 40u8, 39u8, 161u8, 226u8, 253u8, 211u8, 34u8, 101u8, 235u8, + 180u8, 238u8, 234u8, 94u8, 229u8, 100u8, 240u8, 85u8, 28u8, 245u8, 223u8, + 237u8, 65u8, 80u8, 248u8, 225u8, 22u8, 166u8, 114u8, 9u8, 235u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + quorumNumber: data.0, + rateLimitWindow: data.1, + ejectableStakePercent: data.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.rateLimitWindow, + ), + as alloy_sol_types::SolType>::tokenize( + &self.ejectableStakePercent, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for QuorumEjectionParamsSet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&QuorumEjectionParamsSet> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &QuorumEjectionParamsSet) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. + ```solidity + constructor(address _registryCoordinator, address _stakeRegistry); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _registryCoordinator: alloy::sol_types::private::Address, + pub _stakeRegistry: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value._registryCoordinator, value._stakeRegistry) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _registryCoordinator: tuple.0, + _stakeRegistry: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._registryCoordinator, + ), + ::tokenize( + &self._stakeRegistry, + ), + ) + } + } + }; + /**Function with signature `amountEjectableForQuorum(uint8)` and selector `0xb13f4504`. + ```solidity + function amountEjectableForQuorum(uint8 _quorumNumber) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct amountEjectableForQuorumCall { + pub _quorumNumber: u8, + } + ///Container type for the return parameters of the [`amountEjectableForQuorum(uint8)`](amountEjectableForQuorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct amountEjectableForQuorumReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: amountEjectableForQuorumCall) -> Self { + (value._quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for amountEjectableForQuorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: amountEjectableForQuorumReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for amountEjectableForQuorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for amountEjectableForQuorumCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = amountEjectableForQuorumReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "amountEjectableForQuorum(uint8)"; + const SELECTOR: [u8; 4] = [177u8, 63u8, 69u8, 4u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `ejectOperators(bytes32[][])` and selector `0x0a0593d1`. + ```solidity + function ejectOperators(bytes32[][] memory _operatorIds) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ejectOperatorsCall { + pub _operatorIds: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec>, + >, + } + ///Container type for the return parameters of the [`ejectOperators(bytes32[][])`](ejectOperatorsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ejectOperatorsReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array>, + >, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec>, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ejectOperatorsCall) -> Self { + (value._operatorIds,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ejectOperatorsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _operatorIds: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ejectOperatorsReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ejectOperatorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ejectOperatorsCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array>, + >, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ejectOperatorsReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ejectOperators(bytes32[][])"; + const SELECTOR: [u8; 4] = [10u8, 5u8, 147u8, 209u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (>, + > as alloy_sol_types::SolType>::tokenize( + &self._operatorIds + ),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `initialize(address,address[],(uint32,uint16)[])` and selector `0x8b88a024`. + ```solidity + function initialize(address _owner, address[] memory _ejectors, IEjectionManager.QuorumEjectionParams[] memory _quorumEjectionParams) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeCall { + pub _owner: alloy::sol_types::private::Address, + pub _ejectors: alloy::sol_types::private::Vec, + pub _quorumEjectionParams: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`initialize(address,address[],(uint32,uint16)[])`](initializeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeCall) -> Self { + (value._owner, value._ejectors, value._quorumEjectionParams) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _owner: tuple.0, + _ejectors: tuple.1, + _quorumEjectionParams: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for initializeCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = initializeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "initialize(address,address[],(uint32,uint16)[])"; + const SELECTOR: [u8; 4] = [139u8, 136u8, 160u8, 36u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._owner, + ), + as alloy_sol_types::SolType>::tokenize(&self._ejectors), + as alloy_sol_types::SolType>::tokenize(&self._quorumEjectionParams), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `isEjector(address)` and selector `0x6c08a879`. + ```solidity + function isEjector(address) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isEjectorCall { + pub _0: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`isEjector(address)`](isEjectorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isEjectorReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isEjectorCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isEjectorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isEjectorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isEjectorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for isEjectorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = isEjectorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "isEjector(address)"; + const SELECTOR: [u8; 4] = [108u8, 8u8, 168u8, 121u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. + ```solidity + function owner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `quorumEjectionParams(uint8)` and selector `0x00482569`. + ```solidity + function quorumEjectionParams(uint8) external view returns (uint32 rateLimitWindow, uint16 ejectableStakePercent); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct quorumEjectionParamsCall { + pub _0: u8, + } + ///Container type for the return parameters of the [`quorumEjectionParams(uint8)`](quorumEjectionParamsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct quorumEjectionParamsReturn { + pub rateLimitWindow: u32, + pub ejectableStakePercent: u16, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: quorumEjectionParamsCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for quorumEjectionParamsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<16>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32, u16); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: quorumEjectionParamsReturn) -> Self { + (value.rateLimitWindow, value.ejectableStakePercent) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for quorumEjectionParamsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + rateLimitWindow: tuple.0, + ejectableStakePercent: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for quorumEjectionParamsCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = quorumEjectionParamsReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<16>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "quorumEjectionParams(uint8)"; + const SELECTOR: [u8; 4] = [0u8, 72u8, 37u8, 105u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registryCoordinator()` and selector `0x6d14a987`. + ```solidity + function registryCoordinator() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registryCoordinatorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registryCoordinatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registryCoordinator()"; + const SELECTOR: [u8; 4] = [109u8, 20u8, 169u8, 135u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `renounceOwnership()` and selector `0x715018a6`. + ```solidity + function renounceOwnership() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct renounceOwnershipCall {} + ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct renounceOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for renounceOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for renounceOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for renounceOwnershipCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = renounceOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "renounceOwnership()"; + const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setEjector(address,bool)` and selector `0x10ea4f8a`. + ```solidity + function setEjector(address _ejector, bool _status) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setEjectorCall { + pub _ejector: alloy::sol_types::private::Address, + pub _status: bool, + } + ///Container type for the return parameters of the [`setEjector(address,bool)`](setEjectorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setEjectorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address, bool); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setEjectorCall) -> Self { + (value._ejector, value._status) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setEjectorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _ejector: tuple.0, + _status: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setEjectorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setEjectorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setEjectorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setEjectorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setEjector(address,bool)"; + const SELECTOR: [u8; 4] = [16u8, 234u8, 79u8, 138u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._ejector, + ), + ::tokenize( + &self._status, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setQuorumEjectionParams(uint8,(uint32,uint16))` and selector `0x77d17586`. + ```solidity + function setQuorumEjectionParams(uint8 _quorumNumber, IEjectionManager.QuorumEjectionParams memory _quorumEjectionParams) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setQuorumEjectionParamsCall { + pub _quorumNumber: u8, + pub _quorumEjectionParams: + ::RustType, + } + ///Container type for the return parameters of the [`setQuorumEjectionParams(uint8,(uint32,uint16))`](setQuorumEjectionParamsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setQuorumEjectionParamsReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + IEjectionManager::QuorumEjectionParams, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u8, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setQuorumEjectionParamsCall) -> Self { + (value._quorumNumber, value._quorumEjectionParams) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setQuorumEjectionParamsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _quorumNumber: tuple.0, + _quorumEjectionParams: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setQuorumEjectionParamsReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setQuorumEjectionParamsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setQuorumEjectionParamsCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + IEjectionManager::QuorumEjectionParams, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setQuorumEjectionParamsReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setQuorumEjectionParams(uint8,(uint32,uint16))"; + const SELECTOR: [u8; 4] = [119u8, 209u8, 117u8, 134u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._quorumNumber, + ), + ::tokenize( + &self._quorumEjectionParams, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `stakeEjectedForQuorum(uint8,uint256)` and selector `0x3a0b0ddd`. + ```solidity + function stakeEjectedForQuorum(uint8, uint256) external view returns (uint256 timestamp, uint256 stakeEjected); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakeEjectedForQuorumCall { + pub _0: u8, + pub _1: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`stakeEjectedForQuorum(uint8,uint256)`](stakeEjectedForQuorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakeEjectedForQuorumReturn { + pub timestamp: alloy::sol_types::private::primitives::aliases::U256, + pub stakeEjected: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (u8, alloy::sol_types::private::primitives::aliases::U256); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakeEjectedForQuorumCall) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakeEjectedForQuorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakeEjectedForQuorumReturn) -> Self { + (value.timestamp, value.stakeEjected) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakeEjectedForQuorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + timestamp: tuple.0, + stakeEjected: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for stakeEjectedForQuorumCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = stakeEjectedForQuorumReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "stakeEjectedForQuorum(uint8,uint256)"; + const SELECTOR: [u8; 4] = [58u8, 11u8, 13u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._0, + ), + as alloy_sol_types::SolType>::tokenize( + &self._1, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `stakeRegistry()` and selector `0x68304835`. + ```solidity + function stakeRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakeRegistryCall {} + ///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakeRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakeRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakeRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakeRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakeRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for stakeRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = stakeRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "stakeRegistry()"; + const SELECTOR: [u8; 4] = [104u8, 48u8, 72u8, 53u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. + ```solidity + function transferOwnership(address newOwner) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`EjectionManager`](self) function calls. + pub enum EjectionManagerCalls { + amountEjectableForQuorum(amountEjectableForQuorumCall), + ejectOperators(ejectOperatorsCall), + initialize(initializeCall), + isEjector(isEjectorCall), + owner(ownerCall), + quorumEjectionParams(quorumEjectionParamsCall), + registryCoordinator(registryCoordinatorCall), + renounceOwnership(renounceOwnershipCall), + setEjector(setEjectorCall), + setQuorumEjectionParams(setQuorumEjectionParamsCall), + stakeEjectedForQuorum(stakeEjectedForQuorumCall), + stakeRegistry(stakeRegistryCall), + transferOwnership(transferOwnershipCall), + } + #[automatically_derived] + impl EjectionManagerCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [0u8, 72u8, 37u8, 105u8], + [10u8, 5u8, 147u8, 209u8], + [16u8, 234u8, 79u8, 138u8], + [58u8, 11u8, 13u8, 221u8], + [104u8, 48u8, 72u8, 53u8], + [108u8, 8u8, 168u8, 121u8], + [109u8, 20u8, 169u8, 135u8], + [113u8, 80u8, 24u8, 166u8], + [119u8, 209u8, 117u8, 134u8], + [139u8, 136u8, 160u8, 36u8], + [141u8, 165u8, 203u8, 91u8], + [177u8, 63u8, 69u8, 4u8], + [242u8, 253u8, 227u8, 139u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for EjectionManagerCalls { + const NAME: &'static str = "EjectionManagerCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 13usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::amountEjectableForQuorum(_) => { + ::SELECTOR + } + Self::ejectOperators(_) => { + ::SELECTOR + } + Self::initialize(_) => ::SELECTOR, + Self::isEjector(_) => ::SELECTOR, + Self::owner(_) => ::SELECTOR, + Self::quorumEjectionParams(_) => { + ::SELECTOR + } + Self::registryCoordinator(_) => { + ::SELECTOR + } + Self::renounceOwnership(_) => { + ::SELECTOR + } + Self::setEjector(_) => ::SELECTOR, + Self::setQuorumEjectionParams(_) => { + ::SELECTOR + } + Self::stakeEjectedForQuorum(_) => { + ::SELECTOR + } + Self::stakeRegistry(_) => ::SELECTOR, + Self::transferOwnership(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn quorumEjectionParams( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EjectionManagerCalls::quorumEjectionParams) + } + quorumEjectionParams + }, + { + fn ejectOperators( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EjectionManagerCalls::ejectOperators) + } + ejectOperators + }, + { + fn setEjector( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EjectionManagerCalls::setEjector) + } + setEjector + }, + { + fn stakeEjectedForQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EjectionManagerCalls::stakeEjectedForQuorum) + } + stakeEjectedForQuorum + }, + { + fn stakeRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EjectionManagerCalls::stakeRegistry) + } + stakeRegistry + }, + { + fn isEjector( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EjectionManagerCalls::isEjector) + } + isEjector + }, + { + fn registryCoordinator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EjectionManagerCalls::registryCoordinator) + } + registryCoordinator + }, + { + fn renounceOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EjectionManagerCalls::renounceOwnership) + } + renounceOwnership + }, + { + fn setQuorumEjectionParams( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EjectionManagerCalls::setQuorumEjectionParams) + } + setQuorumEjectionParams + }, + { + fn initialize( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EjectionManagerCalls::initialize) + } + initialize + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EjectionManagerCalls::owner) + } + owner + }, + { + fn amountEjectableForQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EjectionManagerCalls::amountEjectableForQuorum) + } + amountEjectableForQuorum + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(EjectionManagerCalls::transferOwnership) + } + transferOwnership + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::amountEjectableForQuorum(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::ejectOperators(inner) => { + ::abi_encoded_size(inner) + } + Self::initialize(inner) => { + ::abi_encoded_size(inner) + } + Self::isEjector(inner) => { + ::abi_encoded_size(inner) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::quorumEjectionParams(inner) => { + ::abi_encoded_size(inner) + } + Self::registryCoordinator(inner) => { + ::abi_encoded_size(inner) + } + Self::renounceOwnership(inner) => { + ::abi_encoded_size(inner) + } + Self::setEjector(inner) => { + ::abi_encoded_size(inner) + } + Self::setQuorumEjectionParams(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::stakeEjectedForQuorum(inner) => { + ::abi_encoded_size(inner) + } + Self::stakeRegistry(inner) => { + ::abi_encoded_size(inner) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::amountEjectableForQuorum(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::ejectOperators(inner) => { + ::abi_encode_raw(inner, out) + } + Self::initialize(inner) => { + ::abi_encode_raw(inner, out) + } + Self::isEjector(inner) => { + ::abi_encode_raw(inner, out) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::quorumEjectionParams(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::registryCoordinator(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::renounceOwnership(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setEjector(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setQuorumEjectionParams(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::stakeEjectedForQuorum(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::stakeRegistry(inner) => { + ::abi_encode_raw(inner, out) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`EjectionManager`](self) events. + pub enum EjectionManagerEvents { + EjectorUpdated(EjectorUpdated), + Initialized(Initialized), + OperatorEjected(OperatorEjected), + OwnershipTransferred(OwnershipTransferred), + QuorumEjection(QuorumEjection), + QuorumEjectionParamsSet(QuorumEjectionParamsSet), + } + #[automatically_derived] + impl EjectionManagerEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 25u8, 221u8, 135u8, 174u8, 73u8, 237u8, 20u8, 167u8, 149u8, 248u8, 194u8, 213u8, + 232u8, 5u8, 91u8, 242u8, 164u8, 169u8, 208u8, 22u8, 65u8, 160u8, 10u8, 47u8, 143u8, + 10u8, 90u8, 123u8, 247u8, 247u8, 2u8, 73u8, + ], + [ + 118u8, 118u8, 104u8, 107u8, 109u8, 34u8, 225u8, 18u8, 65u8, 43u8, 216u8, 116u8, + 215u8, 1u8, 119u8, 224u8, 17u8, 171u8, 6u8, 96u8, 44u8, 38u8, 6u8, 63u8, 25u8, + 240u8, 56u8, 108u8, 154u8, 60u8, 238u8, 66u8, + ], + [ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, 56u8, + 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, 96u8, + 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ], + [ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, 208u8, + 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, 175u8, 227u8, + 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ], + [ + 151u8, 221u8, 183u8, 17u8, 198u8, 26u8, 157u8, 45u8, 126u8, 255u8, 203u8, 163u8, + 224u8, 66u8, 163u8, 56u8, 98u8, 41u8, 127u8, 137u8, 141u8, 85u8, 86u8, 85u8, 204u8, + 163u8, 158u8, 196u8, 69u8, 31u8, 83u8, 180u8, + ], + [ + 230u8, 156u8, 40u8, 39u8, 161u8, 226u8, 253u8, 211u8, 34u8, 101u8, 235u8, 180u8, + 238u8, 234u8, 94u8, 229u8, 100u8, 240u8, 85u8, 28u8, 245u8, 223u8, 237u8, 65u8, + 80u8, 248u8, 225u8, 22u8, 166u8, 114u8, 9u8, 235u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for EjectionManagerEvents { + const NAME: &'static str = "EjectionManagerEvents"; + const COUNT: usize = 6usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::EjectorUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::Initialized) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorEjected) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OwnershipTransferred) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::QuorumEjection) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::QuorumEjectionParamsSet) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for EjectionManagerEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::EjectorUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorEjected(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::QuorumEjection(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::QuorumEjectionParamsSet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::EjectorUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorEjected(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::QuorumEjection(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::QuorumEjectionParamsSet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`EjectionManager`](self) contract instance. + + See the [wrapper's documentation](`EjectionManagerInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> EjectionManagerInstance { + EjectionManagerInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _registryCoordinator: alloy::sol_types::private::Address, + _stakeRegistry: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future>> + { + EjectionManagerInstance::::deploy(provider, _registryCoordinator, _stakeRegistry) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _registryCoordinator: alloy::sol_types::private::Address, + _stakeRegistry: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + EjectionManagerInstance::::deploy_builder( + provider, + _registryCoordinator, + _stakeRegistry, + ) + } + /**A [`EjectionManager`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`EjectionManager`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct EjectionManagerInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for EjectionManagerInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("EjectionManagerInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > EjectionManagerInstance + { + /**Creates a new wrapper around an on-chain [`EjectionManager`](self) contract instance. + + See the [wrapper's documentation](`EjectionManagerInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _registryCoordinator: alloy::sol_types::private::Address, + _stakeRegistry: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, _registryCoordinator, _stakeRegistry); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _registryCoordinator: alloy::sol_types::private::Address, + _stakeRegistry: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode(&constructorCall { + _registryCoordinator, + _stakeRegistry, + })[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl EjectionManagerInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> EjectionManagerInstance { + EjectionManagerInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > EjectionManagerInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`amountEjectableForQuorum`] function. + pub fn amountEjectableForQuorum( + &self, + _quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&amountEjectableForQuorumCall { _quorumNumber }) + } + ///Creates a new call builder for the [`ejectOperators`] function. + pub fn ejectOperators( + &self, + _operatorIds: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec>, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&ejectOperatorsCall { _operatorIds }) + } + ///Creates a new call builder for the [`initialize`] function. + pub fn initialize( + &self, + _owner: alloy::sol_types::private::Address, + _ejectors: alloy::sol_types::private::Vec, + _quorumEjectionParams: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initializeCall { + _owner, + _ejectors, + _quorumEjectionParams, + }) + } + ///Creates a new call builder for the [`isEjector`] function. + pub fn isEjector( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&isEjectorCall { _0 }) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`quorumEjectionParams`] function. + pub fn quorumEjectionParams( + &self, + _0: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&quorumEjectionParamsCall { _0 }) + } + ///Creates a new call builder for the [`registryCoordinator`] function. + pub fn registryCoordinator( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®istryCoordinatorCall {}) + } + ///Creates a new call builder for the [`renounceOwnership`] function. + pub fn renounceOwnership( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&renounceOwnershipCall {}) + } + ///Creates a new call builder for the [`setEjector`] function. + pub fn setEjector( + &self, + _ejector: alloy::sol_types::private::Address, + _status: bool, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setEjectorCall { _ejector, _status }) + } + ///Creates a new call builder for the [`setQuorumEjectionParams`] function. + pub fn setQuorumEjectionParams( + &self, + _quorumNumber: u8, + _quorumEjectionParams: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setQuorumEjectionParamsCall { + _quorumNumber, + _quorumEjectionParams, + }) + } + ///Creates a new call builder for the [`stakeEjectedForQuorum`] function. + pub fn stakeEjectedForQuorum( + &self, + _0: u8, + _1: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&stakeEjectedForQuorumCall { _0, _1 }) + } + ///Creates a new call builder for the [`stakeRegistry`] function. + pub fn stakeRegistry(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&stakeRegistryCall {}) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > EjectionManagerInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`EjectorUpdated`] event. + pub fn EjectorUpdated_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Initialized`] event. + pub fn Initialized_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorEjected`] event. + pub fn OperatorEjected_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`QuorumEjection`] event. + pub fn QuorumEjection_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`QuorumEjectionParamsSet`] event. + pub fn QuorumEjectionParamsSet_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/emptycontract.rs b/crates/utils/src/emptycontract.rs new file mode 100644 index 00000000..b47ee898 --- /dev/null +++ b/crates/utils/src/emptycontract.rs @@ -0,0 +1,418 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface EmptyContract { + function foo() external pure returns (uint256); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "foo", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "pure" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod EmptyContract { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052348015600f57600080fd5b50607780601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea264697066735822122007c80e3ab75b64ab2851d22a863601e8064735da0ba4040cde0990cb0528b7c064736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`w\x80`\x1D`\09`\0\xF3\xFE`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`(W`\x005`\xE0\x1C\x80c\xC2\x98Ux\x14`-W[`\0\x80\xFD[`\0`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3\xFE\xA2dipfsX\"\x12 \x07\xC8\x0E:\xB7[d\xAB(Q\xD2*\x866\x01\xE8\x06G5\xDA\x0B\xA4\x04\x0C\xDE\t\x90\xCB\x05(\xB7\xC0dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea264697066735822122007c80e3ab75b64ab2851d22a863601e8064735da0ba4040cde0990cb0528b7c064736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`(W`\x005`\xE0\x1C\x80c\xC2\x98Ux\x14`-W[`\0\x80\xFD[`\0`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3\xFE\xA2dipfsX\"\x12 \x07\xC8\x0E:\xB7[d\xAB(Q\xD2*\x866\x01\xE8\x06G5\xDA\x0B\xA4\x04\x0C\xDE\t\x90\xCB\x05(\xB7\xC0dsolcC\0\x08\x0C\x003", + ); + /**Function with signature `foo()` and selector `0xc2985578`. + ```solidity + function foo() external pure returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct fooCall {} + ///Container type for the return parameters of the [`foo()`](fooCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct fooReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: fooCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for fooCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: fooReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for fooReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for fooCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = fooReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "foo()"; + const SELECTOR: [u8; 4] = [194u8, 152u8, 85u8, 120u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`EmptyContract`](self) function calls. + pub enum EmptyContractCalls { + foo(fooCall), + } + #[automatically_derived] + impl EmptyContractCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[194u8, 152u8, 85u8, 120u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for EmptyContractCalls { + const NAME: &'static str = "EmptyContractCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::foo(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[{ + fn foo(data: &[u8], validate: bool) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(EmptyContractCalls::foo) + } + foo + }]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::foo(inner) => ::abi_encoded_size(inner), + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::foo(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`EmptyContract`](self) contract instance. + + See the [wrapper's documentation](`EmptyContractInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> EmptyContractInstance { + EmptyContractInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + EmptyContractInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + EmptyContractInstance::::deploy_builder(provider) + } + /**A [`EmptyContract`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`EmptyContract`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct EmptyContractInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for EmptyContractInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("EmptyContractInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > EmptyContractInstance + { + /**Creates a new wrapper around an on-chain [`EmptyContract`](self) contract instance. + + See the [wrapper's documentation](`EmptyContractInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl EmptyContractInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> EmptyContractInstance { + EmptyContractInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > EmptyContractInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`foo`] function. + pub fn foo(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&fooCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > EmptyContractInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/endian.rs b/crates/utils/src/endian.rs new file mode 100644 index 00000000..2bb8af26 --- /dev/null +++ b/crates/utils/src/endian.rs @@ -0,0 +1,218 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface Endian {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod Endian { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122086bf1e0aacb39f5db00198393f7847d474baa4c4b60685593f1e795391754a8364736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x86\xBF\x1E\n\xAC\xB3\x9F]\xB0\x01\x989?xG\xD4t\xBA\xA4\xC4\xB6\x06\x85Y?\x1EyS\x91uJ\x83dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122086bf1e0aacb39f5db00198393f7847d474baa4c4b60685593f1e795391754a8364736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x86\xBF\x1E\n\xAC\xB3\x9F]\xB0\x01\x989?xG\xD4t\xBA\xA4\xC4\xB6\x06\x85Y?\x1EyS\x91uJ\x83dsolcC\0\x08\x0C\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Endian`](self) contract instance. + + See the [wrapper's documentation](`EndianInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> EndianInstance { + EndianInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> { + EndianInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + EndianInstance::::deploy_builder(provider) + } + /**A [`Endian`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`Endian`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct EndianInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for EndianInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("EndianInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > EndianInstance + { + /**Creates a new wrapper around an on-chain [`Endian`](self) contract instance. + + See the [wrapper's documentation](`EndianInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl EndianInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> EndianInstance { + EndianInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > EndianInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > EndianInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/erc1967proxy.rs b/crates/utils/src/erc1967proxy.rs new file mode 100644 index 00000000..25f4f111 --- /dev/null +++ b/crates/utils/src/erc1967proxy.rs @@ -0,0 +1,785 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ERC1967Proxy { + event AdminChanged(address previousAdmin, address newAdmin); + event BeaconUpgraded(address indexed beacon); + event Upgraded(address indexed implementation); + + constructor(address _logic, bytes _data) payable; + + fallback() external payable; + + receive() external payable; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_logic", + "type": "address", + "internalType": "address" + }, + { + "name": "_data", + "type": "bytes", + "internalType": "bytes" + } + ], + "stateMutability": "payable" + }, + { + "type": "fallback", + "stateMutability": "payable" + }, + { + "type": "receive", + "stateMutability": "payable" + }, + { + "type": "event", + "name": "AdminChanged", + "inputs": [ + { + "name": "previousAdmin", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newAdmin", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "BeaconUpgraded", + "inputs": [ + { + "name": "beacon", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Upgraded", + "inputs": [ + { + "name": "implementation", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ERC1967Proxy { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405260405161072138038061072183398101604081905261002291610314565b61002e82826000610035565b5050610431565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106fa602791396101a9565b9392505050565b6100ea8161028760201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61029660201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606001600160a01b0384163b6102115760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610148565b600080856001600160a01b03168560405161022c91906103e2565b600060405180830381855af49150503d8060008114610267576040519150601f19603f3d011682016040523d82523d6000602084013e61026c565b606091505b50909250905061027d828286610299565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a85750816100d0565b8251156102b85782518084602001fd5b8160405162461bcd60e51b815260040161014891906103fe565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103035781810151838201526020016102eb565b838111156100645750506000910152565b6000806040838503121561032757600080fd5b82516001600160a01b038116811461033e57600080fd5b60208401519092506001600160401b038082111561035b57600080fd5b818501915085601f83011261036f57600080fd5b815181811115610381576103816102d2565b604051601f8201601f19908116603f011681019083821181831017156103a9576103a96102d2565b816040528281528860208487010111156103c257600080fd5b6103d38360208301602088016102e8565b80955050505050509250929050565b600082516103f48184602087016102e8565b9190910192915050565b602081526000825180602084015261041d8160408501602087016102e8565b601f01601f19169190910160400192915050565b6102ba806104406000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025e602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b60606001600160a01b0384163b6101305760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161014b919061020e565b600060405180830381855af49150503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b509150915061019b8282866101a5565b9695505050505050565b606083156101b457508161004e565b8251156101c45782518084602001fd5b8160405162461bcd60e51b8152600401610127919061022a565b60005b838110156101f95781810151838201526020016101e1565b83811115610208576000848401525b50505050565b600082516102208184602087016101de565b9190910192915050565b60208152600082518060208401526102498160408501602087016101de565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122001c74ec5e53ef0395112bb62e82fffecb5db4051bfbfb6465874c4e43e445eff64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`@Qa\x07!8\x03\x80a\x07!\x839\x81\x01`@\x81\x90Ra\0\"\x91a\x03\x14V[a\0.\x82\x82`\0a\x005V[PPa\x041V[a\0>\x83a\0kV[`\0\x82Q\x11\x80a\0KWP\x80[\x15a\0fWa\0d\x83\x83a\0\xAB` \x1Ba\0)\x17` \x1CV[P[PPPV[a\0t\x81a\0\xD7V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90`\0\x90\xA2PV[``a\0\xD0\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x06\xFA`'\x919a\x01\xA9V[\x93\x92PPPV[a\0\xEA\x81a\x02\x87` \x1Ba\0U\x17` \x1CV[a\x01QW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FERC1967: new implementation is n`D\x82\x01Rl\x1B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x9A\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[\x80a\x01\x88\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC`\0\x1Ba\x02\x96` \x1Ba\0d\x17` \x1CV[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UPV[```\x01`\x01`\xA0\x1B\x03\x84\x16;a\x02\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FAddress: delegate call to non-co`D\x82\x01Re\x1B\x9D\x1C\x98X\xDD`\xD2\x1B`d\x82\x01R`\x84\x01a\x01HV[`\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x02,\x91\x90a\x03\xE2V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x02gW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x02lV[``\x91P[P\x90\x92P\x90Pa\x02}\x82\x82\x86a\x02\x99V[\x96\x95PPPPPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[``\x83\x15a\x02\xA8WP\x81a\0\xD0V[\x82Q\x15a\x02\xB8W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01H\x91\x90a\x03\xFEV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x03\x03W\x81\x81\x01Q\x83\x82\x01R` \x01a\x02\xEBV[\x83\x81\x11\x15a\0dWPP`\0\x91\x01RV[`\0\x80`@\x83\x85\x03\x12\x15a\x03'W`\0\x80\xFD[\x82Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03>W`\0\x80\xFD[` \x84\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x03[W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x03oW`\0\x80\xFD[\x81Q\x81\x81\x11\x15a\x03\x81Wa\x03\x81a\x02\xD2V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x03\xA9Wa\x03\xA9a\x02\xD2V[\x81`@R\x82\x81R\x88` \x84\x87\x01\x01\x11\x15a\x03\xC2W`\0\x80\xFD[a\x03\xD3\x83` \x83\x01` \x88\x01a\x02\xE8V[\x80\x95PPPPPP\x92P\x92\x90PV[`\0\x82Qa\x03\xF4\x81\x84` \x87\x01a\x02\xE8V[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x04\x1D\x81`@\x85\x01` \x87\x01a\x02\xE8V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[a\x02\xBA\x80a\x04@`\09`\0\xF3\xFE`\x80`@R6a\0\x13Wa\0\x11a\0\x17V[\0[a\0\x11[a\0'a\0\"a\0gV[a\0\x9FV[V[``a\0N\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x02^`'\x919a\0\xC3V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[`\0a\0\x9A\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90P\x90V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15a\0\xBEW=`\0\xF3[=`\0\xFD[```\x01`\x01`\xA0\x1B\x03\x84\x16;a\x010W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FAddress: delegate call to non-co`D\x82\x01Re\x1B\x9D\x1C\x98X\xDD`\xD2\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x01K\x91\x90a\x02\x0EV[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x01\x86W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\x8BV[``\x91P[P\x91P\x91Pa\x01\x9B\x82\x82\x86a\x01\xA5V[\x96\x95PPPPPPV[``\x83\x15a\x01\xB4WP\x81a\0NV[\x82Q\x15a\x01\xC4W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01'\x91\x90a\x02*V[`\0[\x83\x81\x10\x15a\x01\xF9W\x81\x81\x01Q\x83\x82\x01R` \x01a\x01\xE1V[\x83\x81\x11\x15a\x02\x08W`\0\x84\x84\x01R[PPPPV[`\0\x82Qa\x02 \x81\x84` \x87\x01a\x01\xDEV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x02I\x81`@\x85\x01` \x87\x01a\x01\xDEV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 \x01\xC7N\xC5\xE5>\xF09Q\x12\xBBb\xE8/\xFF\xEC\xB5\xDB@Q\xBF\xBF\xB6FXt\xC4\xE4>D^\xFFdsolcC\0\x08\x0C\x003Address: low-level delegate call failed", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025e602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b60606001600160a01b0384163b6101305760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161014b919061020e565b600060405180830381855af49150503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b509150915061019b8282866101a5565b9695505050505050565b606083156101b457508161004e565b8251156101c45782518084602001fd5b8160405162461bcd60e51b8152600401610127919061022a565b60005b838110156101f95781810151838201526020016101e1565b83811115610208576000848401525b50505050565b600082516102208184602087016101de565b9190910192915050565b60208152600082518060208401526102498160408501602087016101de565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122001c74ec5e53ef0395112bb62e82fffecb5db4051bfbfb6465874c4e43e445eff64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R6a\0\x13Wa\0\x11a\0\x17V[\0[a\0\x11[a\0'a\0\"a\0gV[a\0\x9FV[V[``a\0N\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x02^`'\x919a\0\xC3V[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[\x90V[`\0a\0\x9A\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90P\x90V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15a\0\xBEW=`\0\xF3[=`\0\xFD[```\x01`\x01`\xA0\x1B\x03\x84\x16;a\x010W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FAddress: delegate call to non-co`D\x82\x01Re\x1B\x9D\x1C\x98X\xDD`\xD2\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x01K\x91\x90a\x02\x0EV[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x01\x86W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\x8BV[``\x91P[P\x91P\x91Pa\x01\x9B\x82\x82\x86a\x01\xA5V[\x96\x95PPPPPPV[``\x83\x15a\x01\xB4WP\x81a\0NV[\x82Q\x15a\x01\xC4W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01'\x91\x90a\x02*V[`\0[\x83\x81\x10\x15a\x01\xF9W\x81\x81\x01Q\x83\x82\x01R` \x01a\x01\xE1V[\x83\x81\x11\x15a\x02\x08W`\0\x84\x84\x01R[PPPPV[`\0\x82Qa\x02 \x81\x84` \x87\x01a\x01\xDEV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x02I\x81`@\x85\x01` \x87\x01a\x01\xDEV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 \x01\xC7N\xC5\xE5>\xF09Q\x12\xBBb\xE8/\xFF\xEC\xB5\xDB@Q\xBF\xBF\xB6FXt\xC4\xE4>D^\xFFdsolcC\0\x08\x0C\x003", + ); + /**Event with signature `AdminChanged(address,address)` and selector `0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f`. + ```solidity + event AdminChanged(address previousAdmin, address newAdmin); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct AdminChanged { + #[allow(missing_docs)] + pub previousAdmin: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newAdmin: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for AdminChanged { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "AdminChanged(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 126u8, 100u8, 77u8, 121u8, 66u8, 47u8, 23u8, 192u8, 30u8, 72u8, 148u8, 181u8, + 244u8, 245u8, 136u8, 211u8, 49u8, 235u8, 250u8, 40u8, 101u8, 61u8, 66u8, 174u8, + 131u8, 45u8, 197u8, 158u8, 56u8, 201u8, 121u8, 143u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + previousAdmin: data.0, + newAdmin: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.previousAdmin, + ), + ::tokenize( + &self.newAdmin, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for AdminChanged { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&AdminChanged> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &AdminChanged) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `BeaconUpgraded(address)` and selector `0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e`. + ```solidity + event BeaconUpgraded(address indexed beacon); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct BeaconUpgraded { + #[allow(missing_docs)] + pub beacon: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for BeaconUpgraded { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "BeaconUpgraded(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 28u8, 243u8, 176u8, 58u8, 108u8, 241u8, 159u8, 162u8, 186u8, 186u8, 77u8, + 241u8, 72u8, 233u8, 220u8, 171u8, 237u8, 234u8, 127u8, 138u8, 92u8, 7u8, 132u8, + 14u8, 32u8, 126u8, 92u8, 8u8, 155u8, 233u8, 93u8, 62u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { beacon: topics.1 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.beacon.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.beacon, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for BeaconUpgraded { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&BeaconUpgraded> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &BeaconUpgraded) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`. + ```solidity + event Upgraded(address indexed implementation); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Upgraded { + #[allow(missing_docs)] + pub implementation: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Upgraded { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Upgraded(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8, + 179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8, 12u8, + 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + implementation: topics.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.implementation.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.implementation, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Upgraded { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Upgraded> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Upgraded) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. + ```solidity + constructor(address _logic, bytes _data) payable; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _logic: alloy::sol_types::private::Address, + pub _data: alloy::sol_types::private::Bytes, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value._logic, value._data) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _logic: tuple.0, + _data: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._logic, + ), + ::tokenize( + &self._data, + ), + ) + } + } + }; + ///Container for all the [`ERC1967Proxy`](self) events. + pub enum ERC1967ProxyEvents { + AdminChanged(AdminChanged), + BeaconUpgraded(BeaconUpgraded), + Upgraded(Upgraded), + } + #[automatically_derived] + impl ERC1967ProxyEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 28u8, 243u8, 176u8, 58u8, 108u8, 241u8, 159u8, 162u8, 186u8, 186u8, 77u8, 241u8, + 72u8, 233u8, 220u8, 171u8, 237u8, 234u8, 127u8, 138u8, 92u8, 7u8, 132u8, 14u8, + 32u8, 126u8, 92u8, 8u8, 155u8, 233u8, 93u8, 62u8, + ], + [ + 126u8, 100u8, 77u8, 121u8, 66u8, 47u8, 23u8, 192u8, 30u8, 72u8, 148u8, 181u8, + 244u8, 245u8, 136u8, 211u8, 49u8, 235u8, 250u8, 40u8, 101u8, 61u8, 66u8, 174u8, + 131u8, 45u8, 197u8, 158u8, 56u8, 201u8, 121u8, 143u8, + ], + [ + 188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8, 179u8, + 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8, 12u8, 192u8, 34u8, + 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for ERC1967ProxyEvents { + const NAME: &'static str = "ERC1967ProxyEvents"; + const COUNT: usize = 3usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::AdminChanged) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::BeaconUpgraded) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::Upgraded) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ERC1967ProxyEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::AdminChanged(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::BeaconUpgraded(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Upgraded(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::AdminChanged(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::BeaconUpgraded(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Upgraded(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ERC1967Proxy`](self) contract instance. + + See the [wrapper's documentation](`ERC1967ProxyInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ERC1967ProxyInstance { + ERC1967ProxyInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _logic: alloy::sol_types::private::Address, + _data: alloy::sol_types::private::Bytes, + ) -> impl ::core::future::Future>> + { + ERC1967ProxyInstance::::deploy(provider, _logic, _data) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _logic: alloy::sol_types::private::Address, + _data: alloy::sol_types::private::Bytes, + ) -> alloy_contract::RawCallBuilder { + ERC1967ProxyInstance::::deploy_builder(provider, _logic, _data) + } + /**A [`ERC1967Proxy`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ERC1967Proxy`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ERC1967ProxyInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ERC1967ProxyInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ERC1967ProxyInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ERC1967ProxyInstance + { + /**Creates a new wrapper around an on-chain [`ERC1967Proxy`](self) contract instance. + + See the [wrapper's documentation](`ERC1967ProxyInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _logic: alloy::sol_types::private::Address, + _data: alloy::sol_types::private::Bytes, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, _logic, _data); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _logic: alloy::sol_types::private::Address, + _data: alloy::sol_types::private::Bytes, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode(&constructorCall { + _logic, + _data, + })[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ERC1967ProxyInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ERC1967ProxyInstance { + ERC1967ProxyInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ERC1967ProxyInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ERC1967ProxyInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`AdminChanged`] event. + pub fn AdminChanged_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`BeaconUpgraded`] event. + pub fn BeaconUpgraded_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Upgraded`] event. + pub fn Upgraded_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/erc1967upgrade.rs b/crates/utils/src/erc1967upgrade.rs new file mode 100644 index 00000000..3f092a97 --- /dev/null +++ b/crates/utils/src/erc1967upgrade.rs @@ -0,0 +1,661 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ERC1967Upgrade { + event AdminChanged(address previousAdmin, address newAdmin); + event BeaconUpgraded(address indexed beacon); + event Upgraded(address indexed implementation); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "event", + "name": "AdminChanged", + "inputs": [ + { + "name": "previousAdmin", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newAdmin", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "BeaconUpgraded", + "inputs": [ + { + "name": "beacon", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Upgraded", + "inputs": [ + { + "name": "implementation", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ERC1967Upgrade { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Event with signature `AdminChanged(address,address)` and selector `0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f`. + ```solidity + event AdminChanged(address previousAdmin, address newAdmin); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct AdminChanged { + #[allow(missing_docs)] + pub previousAdmin: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newAdmin: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for AdminChanged { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "AdminChanged(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 126u8, 100u8, 77u8, 121u8, 66u8, 47u8, 23u8, 192u8, 30u8, 72u8, 148u8, 181u8, + 244u8, 245u8, 136u8, 211u8, 49u8, 235u8, 250u8, 40u8, 101u8, 61u8, 66u8, 174u8, + 131u8, 45u8, 197u8, 158u8, 56u8, 201u8, 121u8, 143u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + previousAdmin: data.0, + newAdmin: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.previousAdmin, + ), + ::tokenize( + &self.newAdmin, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for AdminChanged { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&AdminChanged> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &AdminChanged) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `BeaconUpgraded(address)` and selector `0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e`. + ```solidity + event BeaconUpgraded(address indexed beacon); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct BeaconUpgraded { + #[allow(missing_docs)] + pub beacon: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for BeaconUpgraded { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "BeaconUpgraded(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 28u8, 243u8, 176u8, 58u8, 108u8, 241u8, 159u8, 162u8, 186u8, 186u8, 77u8, + 241u8, 72u8, 233u8, 220u8, 171u8, 237u8, 234u8, 127u8, 138u8, 92u8, 7u8, 132u8, + 14u8, 32u8, 126u8, 92u8, 8u8, 155u8, 233u8, 93u8, 62u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { beacon: topics.1 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.beacon.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.beacon, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for BeaconUpgraded { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&BeaconUpgraded> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &BeaconUpgraded) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`. + ```solidity + event Upgraded(address indexed implementation); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Upgraded { + #[allow(missing_docs)] + pub implementation: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Upgraded { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Upgraded(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8, + 179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8, 12u8, + 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + implementation: topics.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.implementation.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.implementation, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Upgraded { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Upgraded> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Upgraded) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + ///Container for all the [`ERC1967Upgrade`](self) events. + pub enum ERC1967UpgradeEvents { + AdminChanged(AdminChanged), + BeaconUpgraded(BeaconUpgraded), + Upgraded(Upgraded), + } + #[automatically_derived] + impl ERC1967UpgradeEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 28u8, 243u8, 176u8, 58u8, 108u8, 241u8, 159u8, 162u8, 186u8, 186u8, 77u8, 241u8, + 72u8, 233u8, 220u8, 171u8, 237u8, 234u8, 127u8, 138u8, 92u8, 7u8, 132u8, 14u8, + 32u8, 126u8, 92u8, 8u8, 155u8, 233u8, 93u8, 62u8, + ], + [ + 126u8, 100u8, 77u8, 121u8, 66u8, 47u8, 23u8, 192u8, 30u8, 72u8, 148u8, 181u8, + 244u8, 245u8, 136u8, 211u8, 49u8, 235u8, 250u8, 40u8, 101u8, 61u8, 66u8, 174u8, + 131u8, 45u8, 197u8, 158u8, 56u8, 201u8, 121u8, 143u8, + ], + [ + 188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8, 179u8, + 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8, 12u8, 192u8, 34u8, + 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for ERC1967UpgradeEvents { + const NAME: &'static str = "ERC1967UpgradeEvents"; + const COUNT: usize = 3usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::AdminChanged) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::BeaconUpgraded) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::Upgraded) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ERC1967UpgradeEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::AdminChanged(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::BeaconUpgraded(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Upgraded(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::AdminChanged(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::BeaconUpgraded(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Upgraded(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ERC1967Upgrade`](self) contract instance. + + See the [wrapper's documentation](`ERC1967UpgradeInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ERC1967UpgradeInstance { + ERC1967UpgradeInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + ERC1967UpgradeInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + ERC1967UpgradeInstance::::deploy_builder(provider) + } + /**A [`ERC1967Upgrade`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ERC1967Upgrade`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ERC1967UpgradeInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ERC1967UpgradeInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ERC1967UpgradeInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ERC1967UpgradeInstance + { + /**Creates a new wrapper around an on-chain [`ERC1967Upgrade`](self) contract instance. + + See the [wrapper's documentation](`ERC1967UpgradeInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ERC1967UpgradeInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ERC1967UpgradeInstance { + ERC1967UpgradeInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ERC1967UpgradeInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ERC1967UpgradeInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`AdminChanged`] event. + pub fn AdminChanged_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`BeaconUpgraded`] event. + pub fn BeaconUpgraded_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Upgraded`] event. + pub fn Upgraded_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/erc20.rs b/crates/utils/src/erc20.rs new file mode 100644 index 00000000..660f7423 --- /dev/null +++ b/crates/utils/src/erc20.rs @@ -0,0 +1,2570 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ERC20 { + event Approval(address indexed owner, address indexed spender, uint256 value); + event Transfer(address indexed from, address indexed to, uint256 value); + + constructor(string name_, string symbol_); + + function allowance(address owner, address spender) external view returns (uint256); + function approve(address spender, uint256 amount) external returns (bool); + function balanceOf(address account) external view returns (uint256); + function decimals() external view returns (uint8); + function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool); + function increaseAllowance(address spender, uint256 addedValue) external returns (bool); + function name() external view returns (string memory); + function symbol() external view returns (string memory); + function totalSupply() external view returns (uint256); + function transfer(address to, uint256 amount) external returns (bool); + function transferFrom(address from, address to, uint256 amount) external returns (bool); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "name_", + "type": "string", + "internalType": "string" + }, + { + "name": "symbol_", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "allowance", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "approve", + "inputs": [ + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "balanceOf", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "decimals", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "decreaseAllowance", + "inputs": [ + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "subtractedValue", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "increaseAllowance", + "inputs": [ + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "addedValue", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "symbol", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "totalSupply", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transfer", + "inputs": [ + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Approval", + "inputs": [ + { + "name": "owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Transfer", + "inputs": [ + { + "name": "from", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ERC20 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60806040523480156200001157600080fd5b5060405162000b1938038062000b198339810160408190526200003491620001db565b81516200004990600390602085019062000068565b5080516200005f90600490602084019062000068565b50505062000282565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b602082108114156200027c57634e487b7160e01b600052602260045260246000fd5b50919050565b61088780620002926000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c391906106c4565b60405180910390f35b6100df6100da366004610735565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f36600461075f565b61024a565b604051601281526020016100c3565b6100df610131366004610735565b61026e565b6100f361014436600461079b565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df610175366004610735565b61029f565b6100df610188366004610735565b61031f565b6100f361019b3660046107bd565b61032d565b6060600380546101af906107f0565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107f0565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b919061082b565b610358565b6060600480546101af906107f0565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061066b90849061082b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106b791815260200190565b60405180910390a36104f0565b600060208083528351808285015260005b818110156106f1578581018301518582016040015282016106d5565b81811115610703576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461073057600080fd5b919050565b6000806040838503121561074857600080fd5b61075183610719565b946020939093013593505050565b60008060006060848603121561077457600080fd5b61077d84610719565b925061078b60208501610719565b9150604084013590509250925092565b6000602082840312156107ad57600080fd5b6107b682610719565b9392505050565b600080604083850312156107d057600080fd5b6107d983610719565b91506107e760208401610719565b90509250929050565b600181811c9082168061080457607f821691505b6020821081141561082557634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561084c57634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220ef5f3cfd62b14695c68a154fecf5fb4a74e8449b179776f0e11447388983c76464736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\x0B\x198\x03\x80b\0\x0B\x19\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01\xDBV[\x81Qb\0\0I\x90`\x03\x90` \x85\x01\x90b\0\0hV[P\x80Qb\0\0_\x90`\x04\x90` \x84\x01\x90b\0\0hV[PPPb\0\x02\x82V[\x82\x80Tb\0\0v\x90b\0\x02EV[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82b\0\0\x9AW`\0\x85Ub\0\0\xE5V[\x82`\x1F\x10b\0\0\xB5W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ub\0\0\xE5V[\x82\x80\x01`\x01\x01\x85U\x82\x15b\0\0\xE5W\x91\x82\x01[\x82\x81\x11\x15b\0\0\xE5W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90b\0\0\xC8V[Pb\0\0\xF3\x92\x91Pb\0\0\xF7V[P\x90V[[\x80\x82\x11\x15b\0\0\xF3W`\0\x81U`\x01\x01b\0\0\xF8V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12b\0\x016W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x01SWb\0\x01Sb\0\x01\x0EV[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15b\0\x01~Wb\0\x01~b\0\x01\x0EV[\x81`@R\x83\x81R` \x92P\x86\x83\x85\x88\x01\x01\x11\x15b\0\x01\x9BW`\0\x80\xFD[`\0\x91P[\x83\x82\x10\x15b\0\x01\xBFW\x85\x82\x01\x83\x01Q\x81\x83\x01\x84\x01R\x90\x82\x01\x90b\0\x01\xA0V[\x83\x82\x11\x15b\0\x01\xD1W`\0\x83\x85\x83\x01\x01R[\x96\x95PPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15b\0\x01\xEFW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x02\x07W`\0\x80\xFD[b\0\x02\x15\x86\x83\x87\x01b\0\x01$V[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15b\0\x02,W`\0\x80\xFD[Pb\0\x02;\x85\x82\x86\x01b\0\x01$V[\x91PP\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x02ZW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15b\0\x02|WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[a\x08\x87\x80b\0\x02\x92`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xA9W`\x005`\xE0\x1C\x80c9P\x93Q\x11a\0qW\x80c9P\x93Q\x14a\x01#W\x80cp\xA0\x821\x14a\x016W\x80c\x95\xD8\x9BA\x14a\x01_W\x80c\xA4W\xC2\xD7\x14a\x01gW\x80c\xA9\x05\x9C\xBB\x14a\x01zW\x80c\xDDb\xED>\x14a\x01\x8DW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xAEW\x80c\t^\xA7\xB3\x14a\0\xCCW\x80c\x18\x16\r\xDD\x14a\0\xEFW\x80c#\xB8r\xDD\x14a\x01\x01W\x80c1<\xE5g\x14a\x01\x14W[`\0\x80\xFD[a\0\xB6a\x01\xA0V[`@Qa\0\xC3\x91\x90a\x06\xC4V[`@Q\x80\x91\x03\x90\xF3[a\0\xDFa\0\xDA6`\x04a\x075V[a\x022V[`@Q\x90\x15\x15\x81R` \x01a\0\xC3V[`\x02T[`@Q\x90\x81R` \x01a\0\xC3V[a\0\xDFa\x01\x0F6`\x04a\x07_V[a\x02JV[`@Q`\x12\x81R` \x01a\0\xC3V[a\0\xDFa\x0116`\x04a\x075V[a\x02nV[a\0\xF3a\x01D6`\x04a\x07\x9BV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\0\xB6a\x02\x90V[a\0\xDFa\x01u6`\x04a\x075V[a\x02\x9FV[a\0\xDFa\x01\x886`\x04a\x075V[a\x03\x1FV[a\0\xF3a\x01\x9B6`\x04a\x07\xBDV[a\x03-V[```\x03\x80Ta\x01\xAF\x90a\x07\xF0V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01\xDB\x90a\x07\xF0V[\x80\x15a\x02(W\x80`\x1F\x10a\x01\xFDWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02(V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\x0BW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02@\x81\x85\x85a\x03XV[P`\x01\x93\x92PPPV[`\x003a\x02X\x85\x82\x85a\x04|V[a\x02c\x85\x85\x85a\x04\xF6V[P`\x01\x94\x93PPPPV[`\x003a\x02@\x81\x85\x85a\x02\x81\x83\x83a\x03-V[a\x02\x8B\x91\x90a\x08+V[a\x03XV[```\x04\x80Ta\x01\xAF\x90a\x07\xF0V[`\x003\x81a\x02\xAD\x82\x86a\x03-V[\x90P\x83\x81\x10\x15a\x03\x12W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: decreased allowance below`D\x82\x01Rd zero`\xD8\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x02c\x82\x86\x86\x84\x03a\x03XV[`\x003a\x02@\x81\x85\x85a\x04\xF6V[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x03\xBAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FERC20: approve from the zero add`D\x82\x01Rcress`\xE0\x1B`d\x82\x01R`\x84\x01a\x03\tV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x04\x1BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: approve to the zero addre`D\x82\x01Rass`\xF0\x1B`d\x82\x01R`\x84\x01a\x03\tV[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x81\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x87\x16\x80\x84R\x94\x82R\x91\x82\x90 \x85\x90U\x90Q\x84\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPV[`\0a\x04\x88\x84\x84a\x03-V[\x90P`\0\x19\x81\x14a\x04\xF0W\x81\x81\x10\x15a\x04\xE3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FERC20: insufficient allowance\0\0\0`D\x82\x01R`d\x01a\x03\tV[a\x04\xF0\x84\x84\x84\x84\x03a\x03XV[PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x05ZW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: transfer from the zero ad`D\x82\x01Rddress`\xD8\x1B`d\x82\x01R`\x84\x01a\x03\tV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x05\xBCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7FERC20: transfer to the zero addr`D\x82\x01Rbess`\xE8\x1B`d\x82\x01R`\x84\x01a\x03\tV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x064W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC20: transfer amount exceeds b`D\x82\x01Realance`\xD0\x1B`d\x82\x01R`\x84\x01a\x03\tV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R` \x81\x90R`@\x80\x82 \x85\x85\x03\x90U\x91\x85\x16\x81R\x90\x81 \x80T\x84\x92\x90a\x06k\x90\x84\x90a\x08+V[\x92PP\x81\x90UP\x82`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x84`@Qa\x06\xB7\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3a\x04\xF0V[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x06\xF1W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x06\xD5V[\x81\x81\x11\x15a\x07\x03W`\0`@\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x070W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x07HW`\0\x80\xFD[a\x07Q\x83a\x07\x19V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x07tW`\0\x80\xFD[a\x07}\x84a\x07\x19V[\x92Pa\x07\x8B` \x85\x01a\x07\x19V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x07\xADW`\0\x80\xFD[a\x07\xB6\x82a\x07\x19V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x07\xD0W`\0\x80\xFD[a\x07\xD9\x83a\x07\x19V[\x91Pa\x07\xE7` \x84\x01a\x07\x19V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x08\x04W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x08%WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0\x82\x19\x82\x11\x15a\x08LWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P\x01\x90V\xFE\xA2dipfsX\"\x12 \xEF_<\xFDb\xB1F\x95\xC6\x8A\x15O\xEC\xF5\xFBJt\xE8D\x9B\x17\x97v\xF0\xE1\x14G8\x89\x83\xC7ddsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c391906106c4565b60405180910390f35b6100df6100da366004610735565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f36600461075f565b61024a565b604051601281526020016100c3565b6100df610131366004610735565b61026e565b6100f361014436600461079b565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df610175366004610735565b61029f565b6100df610188366004610735565b61031f565b6100f361019b3660046107bd565b61032d565b6060600380546101af906107f0565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107f0565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b919061082b565b610358565b6060600480546101af906107f0565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061066b90849061082b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106b791815260200190565b60405180910390a36104f0565b600060208083528351808285015260005b818110156106f1578581018301518582016040015282016106d5565b81811115610703576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461073057600080fd5b919050565b6000806040838503121561074857600080fd5b61075183610719565b946020939093013593505050565b60008060006060848603121561077457600080fd5b61077d84610719565b925061078b60208501610719565b9150604084013590509250925092565b6000602082840312156107ad57600080fd5b6107b682610719565b9392505050565b600080604083850312156107d057600080fd5b6107d983610719565b91506107e760208401610719565b90509250929050565b600181811c9082168061080457607f821691505b6020821081141561082557634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561084c57634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220ef5f3cfd62b14695c68a154fecf5fb4a74e8449b179776f0e11447388983c76464736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xA9W`\x005`\xE0\x1C\x80c9P\x93Q\x11a\0qW\x80c9P\x93Q\x14a\x01#W\x80cp\xA0\x821\x14a\x016W\x80c\x95\xD8\x9BA\x14a\x01_W\x80c\xA4W\xC2\xD7\x14a\x01gW\x80c\xA9\x05\x9C\xBB\x14a\x01zW\x80c\xDDb\xED>\x14a\x01\x8DW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xAEW\x80c\t^\xA7\xB3\x14a\0\xCCW\x80c\x18\x16\r\xDD\x14a\0\xEFW\x80c#\xB8r\xDD\x14a\x01\x01W\x80c1<\xE5g\x14a\x01\x14W[`\0\x80\xFD[a\0\xB6a\x01\xA0V[`@Qa\0\xC3\x91\x90a\x06\xC4V[`@Q\x80\x91\x03\x90\xF3[a\0\xDFa\0\xDA6`\x04a\x075V[a\x022V[`@Q\x90\x15\x15\x81R` \x01a\0\xC3V[`\x02T[`@Q\x90\x81R` \x01a\0\xC3V[a\0\xDFa\x01\x0F6`\x04a\x07_V[a\x02JV[`@Q`\x12\x81R` \x01a\0\xC3V[a\0\xDFa\x0116`\x04a\x075V[a\x02nV[a\0\xF3a\x01D6`\x04a\x07\x9BV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\0\xB6a\x02\x90V[a\0\xDFa\x01u6`\x04a\x075V[a\x02\x9FV[a\0\xDFa\x01\x886`\x04a\x075V[a\x03\x1FV[a\0\xF3a\x01\x9B6`\x04a\x07\xBDV[a\x03-V[```\x03\x80Ta\x01\xAF\x90a\x07\xF0V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01\xDB\x90a\x07\xF0V[\x80\x15a\x02(W\x80`\x1F\x10a\x01\xFDWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02(V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\x0BW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02@\x81\x85\x85a\x03XV[P`\x01\x93\x92PPPV[`\x003a\x02X\x85\x82\x85a\x04|V[a\x02c\x85\x85\x85a\x04\xF6V[P`\x01\x94\x93PPPPV[`\x003a\x02@\x81\x85\x85a\x02\x81\x83\x83a\x03-V[a\x02\x8B\x91\x90a\x08+V[a\x03XV[```\x04\x80Ta\x01\xAF\x90a\x07\xF0V[`\x003\x81a\x02\xAD\x82\x86a\x03-V[\x90P\x83\x81\x10\x15a\x03\x12W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: decreased allowance below`D\x82\x01Rd zero`\xD8\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x02c\x82\x86\x86\x84\x03a\x03XV[`\x003a\x02@\x81\x85\x85a\x04\xF6V[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x03\xBAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FERC20: approve from the zero add`D\x82\x01Rcress`\xE0\x1B`d\x82\x01R`\x84\x01a\x03\tV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x04\x1BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: approve to the zero addre`D\x82\x01Rass`\xF0\x1B`d\x82\x01R`\x84\x01a\x03\tV[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x81\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x87\x16\x80\x84R\x94\x82R\x91\x82\x90 \x85\x90U\x90Q\x84\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPV[`\0a\x04\x88\x84\x84a\x03-V[\x90P`\0\x19\x81\x14a\x04\xF0W\x81\x81\x10\x15a\x04\xE3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FERC20: insufficient allowance\0\0\0`D\x82\x01R`d\x01a\x03\tV[a\x04\xF0\x84\x84\x84\x84\x03a\x03XV[PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x05ZW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: transfer from the zero ad`D\x82\x01Rddress`\xD8\x1B`d\x82\x01R`\x84\x01a\x03\tV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x05\xBCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7FERC20: transfer to the zero addr`D\x82\x01Rbess`\xE8\x1B`d\x82\x01R`\x84\x01a\x03\tV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x064W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC20: transfer amount exceeds b`D\x82\x01Realance`\xD0\x1B`d\x82\x01R`\x84\x01a\x03\tV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R` \x81\x90R`@\x80\x82 \x85\x85\x03\x90U\x91\x85\x16\x81R\x90\x81 \x80T\x84\x92\x90a\x06k\x90\x84\x90a\x08+V[\x92PP\x81\x90UP\x82`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x84`@Qa\x06\xB7\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3a\x04\xF0V[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x06\xF1W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x06\xD5V[\x81\x81\x11\x15a\x07\x03W`\0`@\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x070W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x07HW`\0\x80\xFD[a\x07Q\x83a\x07\x19V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x07tW`\0\x80\xFD[a\x07}\x84a\x07\x19V[\x92Pa\x07\x8B` \x85\x01a\x07\x19V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x07\xADW`\0\x80\xFD[a\x07\xB6\x82a\x07\x19V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x07\xD0W`\0\x80\xFD[a\x07\xD9\x83a\x07\x19V[\x91Pa\x07\xE7` \x84\x01a\x07\x19V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x08\x04W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x08%WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0\x82\x19\x82\x11\x15a\x08LWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P\x01\x90V\xFE\xA2dipfsX\"\x12 \xEF_<\xFDb\xB1F\x95\xC6\x8A\x15O\xEC\xF5\xFBJt\xE8D\x9B\x17\x97v\xF0\xE1\x14G8\x89\x83\xC7ddsolcC\0\x08\x0C\x003", + ); + /**Event with signature `Approval(address,address,uint256)` and selector `0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925`. + ```solidity + event Approval(address indexed owner, address indexed spender, uint256 value); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Approval { + #[allow(missing_docs)] + pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub spender: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub value: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Approval { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Approval(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 140u8, 91u8, 225u8, 229u8, 235u8, 236u8, 125u8, 91u8, 209u8, 79u8, 113u8, 66u8, + 125u8, 30u8, 132u8, 243u8, 221u8, 3u8, 20u8, 192u8, 247u8, 178u8, 41u8, 30u8, + 91u8, 32u8, 10u8, 200u8, 199u8, 195u8, 185u8, 37u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + owner: topics.1, + spender: topics.2, + value: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.value, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.owner.clone(), + self.spender.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.owner, + ); + out[2usize] = ::encode_topic( + &self.spender, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Approval { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Approval> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Approval) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Transfer(address,address,uint256)` and selector `0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef`. + ```solidity + event Transfer(address indexed from, address indexed to, uint256 value); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Transfer { + #[allow(missing_docs)] + pub from: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub to: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub value: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Transfer { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Transfer(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 221u8, 242u8, 82u8, 173u8, 27u8, 226u8, 200u8, 155u8, 105u8, 194u8, 176u8, + 104u8, 252u8, 55u8, 141u8, 170u8, 149u8, 43u8, 167u8, 241u8, 99u8, 196u8, + 161u8, 22u8, 40u8, 245u8, 90u8, 77u8, 245u8, 35u8, 179u8, 239u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + from: topics.1, + to: topics.2, + value: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.value, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.from.clone(), + self.to.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.from, + ); + out[2usize] = ::encode_topic( + &self.to, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Transfer { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Transfer> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Transfer) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. + ```solidity + constructor(string name_, string symbol_); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub name_: alloy::sol_types::private::String, + pub symbol_: alloy::sol_types::private::String, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::String, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::String, + alloy::sol_types::private::String, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value.name_, value.symbol_) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + name_: tuple.0, + symbol_: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::String, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.name_, + ), + ::tokenize( + &self.symbol_, + ), + ) + } + } + }; + /**Function with signature `allowance(address,address)` and selector `0xdd62ed3e`. + ```solidity + function allowance(address owner, address spender) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct allowanceCall { + pub owner: alloy::sol_types::private::Address, + pub spender: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`allowance(address,address)`](allowanceCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct allowanceReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: allowanceCall) -> Self { + (value.owner, value.spender) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for allowanceCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + owner: tuple.0, + spender: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: allowanceReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for allowanceReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for allowanceCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = allowanceReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "allowance(address,address)"; + const SELECTOR: [u8; 4] = [221u8, 98u8, 237u8, 62u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.owner, + ), + ::tokenize( + &self.spender, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `approve(address,uint256)` and selector `0x095ea7b3`. + ```solidity + function approve(address spender, uint256 amount) external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveCall { + pub spender: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`approve(address,uint256)`](approveCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveCall) -> Self { + (value.spender, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + spender: tuple.0, + amount: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for approveCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = approveReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "approve(address,uint256)"; + const SELECTOR: [u8; 4] = [9u8, 94u8, 167u8, 179u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.spender, + ), + as alloy_sol_types::SolType>::tokenize( + &self.amount, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `balanceOf(address)` and selector `0x70a08231`. + ```solidity + function balanceOf(address account) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfCall { + pub account: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`balanceOf(address)`](balanceOfCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfCall) -> Self { + (value.account,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { account: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for balanceOfCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = balanceOfReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "balanceOf(address)"; + const SELECTOR: [u8; 4] = [112u8, 160u8, 130u8, 49u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.account, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `decimals()` and selector `0x313ce567`. + ```solidity + function decimals() external view returns (uint8); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct decimalsCall {} + ///Container type for the return parameters of the [`decimals()`](decimalsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct decimalsReturn { + pub _0: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: decimalsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for decimalsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: decimalsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for decimalsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for decimalsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = decimalsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "decimals()"; + const SELECTOR: [u8; 4] = [49u8, 60u8, 229u8, 103u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `decreaseAllowance(address,uint256)` and selector `0xa457c2d7`. + ```solidity + function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct decreaseAllowanceCall { + pub spender: alloy::sol_types::private::Address, + pub subtractedValue: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`decreaseAllowance(address,uint256)`](decreaseAllowanceCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct decreaseAllowanceReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: decreaseAllowanceCall) -> Self { + (value.spender, value.subtractedValue) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for decreaseAllowanceCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + spender: tuple.0, + subtractedValue: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: decreaseAllowanceReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for decreaseAllowanceReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for decreaseAllowanceCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = decreaseAllowanceReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "decreaseAllowance(address,uint256)"; + const SELECTOR: [u8; 4] = [164u8, 87u8, 194u8, 215u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.spender, + ), + as alloy_sol_types::SolType>::tokenize( + &self.subtractedValue, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `increaseAllowance(address,uint256)` and selector `0x39509351`. + ```solidity + function increaseAllowance(address spender, uint256 addedValue) external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct increaseAllowanceCall { + pub spender: alloy::sol_types::private::Address, + pub addedValue: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`increaseAllowance(address,uint256)`](increaseAllowanceCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct increaseAllowanceReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: increaseAllowanceCall) -> Self { + (value.spender, value.addedValue) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for increaseAllowanceCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + spender: tuple.0, + addedValue: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: increaseAllowanceReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for increaseAllowanceReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for increaseAllowanceCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = increaseAllowanceReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "increaseAllowance(address,uint256)"; + const SELECTOR: [u8; 4] = [57u8, 80u8, 147u8, 81u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.spender, + ), + as alloy_sol_types::SolType>::tokenize( + &self.addedValue, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `name()` and selector `0x06fdde03`. + ```solidity + function name() external view returns (string memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct nameCall {} + ///Container type for the return parameters of the [`name()`](nameCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct nameReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: nameCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for nameCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: nameReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for nameReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for nameCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = nameReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "name()"; + const SELECTOR: [u8; 4] = [6u8, 253u8, 222u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `symbol()` and selector `0x95d89b41`. + ```solidity + function symbol() external view returns (string memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct symbolCall {} + ///Container type for the return parameters of the [`symbol()`](symbolCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct symbolReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: symbolCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for symbolCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: symbolReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for symbolReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for symbolCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = symbolReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "symbol()"; + const SELECTOR: [u8; 4] = [149u8, 216u8, 155u8, 65u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `totalSupply()` and selector `0x18160ddd`. + ```solidity + function totalSupply() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalSupplyCall {} + ///Container type for the return parameters of the [`totalSupply()`](totalSupplyCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalSupplyReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalSupplyCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalSupplyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalSupplyReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalSupplyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for totalSupplyCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = totalSupplyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "totalSupply()"; + const SELECTOR: [u8; 4] = [24u8, 22u8, 13u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `transfer(address,uint256)` and selector `0xa9059cbb`. + ```solidity + function transfer(address to, uint256 amount) external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferCall { + pub to: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`transfer(address,uint256)`](transferCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferCall) -> Self { + (value.to, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + to: tuple.0, + amount: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transfer(address,uint256)"; + const SELECTOR: [u8; 4] = [169u8, 5u8, 156u8, 187u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.to, + ), + as alloy_sol_types::SolType>::tokenize( + &self.amount, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd`. + ```solidity + function transferFrom(address from, address to, uint256 amount) external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromCall { + pub from: alloy::sol_types::private::Address, + pub to: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`transferFrom(address,address,uint256)`](transferFromCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromCall) -> Self { + (value.from, value.to, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + from: tuple.0, + to: tuple.1, + amount: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferFromCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferFromReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferFrom(address,address,uint256)"; + const SELECTOR: [u8; 4] = [35u8, 184u8, 114u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.from, + ), + ::tokenize( + &self.to, + ), + as alloy_sol_types::SolType>::tokenize( + &self.amount, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`ERC20`](self) function calls. + pub enum ERC20Calls { + allowance(allowanceCall), + approve(approveCall), + balanceOf(balanceOfCall), + decimals(decimalsCall), + decreaseAllowance(decreaseAllowanceCall), + increaseAllowance(increaseAllowanceCall), + name(nameCall), + symbol(symbolCall), + totalSupply(totalSupplyCall), + transfer(transferCall), + transferFrom(transferFromCall), + } + #[automatically_derived] + impl ERC20Calls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [6u8, 253u8, 222u8, 3u8], + [9u8, 94u8, 167u8, 179u8], + [24u8, 22u8, 13u8, 221u8], + [35u8, 184u8, 114u8, 221u8], + [49u8, 60u8, 229u8, 103u8], + [57u8, 80u8, 147u8, 81u8], + [112u8, 160u8, 130u8, 49u8], + [149u8, 216u8, 155u8, 65u8], + [164u8, 87u8, 194u8, 215u8], + [169u8, 5u8, 156u8, 187u8], + [221u8, 98u8, 237u8, 62u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ERC20Calls { + const NAME: &'static str = "ERC20Calls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 11usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::allowance(_) => ::SELECTOR, + Self::approve(_) => ::SELECTOR, + Self::balanceOf(_) => ::SELECTOR, + Self::decimals(_) => ::SELECTOR, + Self::decreaseAllowance(_) => { + ::SELECTOR + } + Self::increaseAllowance(_) => { + ::SELECTOR + } + Self::name(_) => ::SELECTOR, + Self::symbol(_) => ::SELECTOR, + Self::totalSupply(_) => ::SELECTOR, + Self::transfer(_) => ::SELECTOR, + Self::transferFrom(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn(&[u8], bool) -> alloy_sol_types::Result] = &[ + { + fn name(data: &[u8], validate: bool) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ERC20Calls::name) + } + name + }, + { + fn approve(data: &[u8], validate: bool) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ERC20Calls::approve) + } + approve + }, + { + fn totalSupply( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ERC20Calls::totalSupply) + } + totalSupply + }, + { + fn transferFrom( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ERC20Calls::transferFrom) + } + transferFrom + }, + { + fn decimals( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ERC20Calls::decimals) + } + decimals + }, + { + fn increaseAllowance( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ERC20Calls::increaseAllowance) + } + increaseAllowance + }, + { + fn balanceOf( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ERC20Calls::balanceOf) + } + balanceOf + }, + { + fn symbol(data: &[u8], validate: bool) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ERC20Calls::symbol) + } + symbol + }, + { + fn decreaseAllowance( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ERC20Calls::decreaseAllowance) + } + decreaseAllowance + }, + { + fn transfer( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ERC20Calls::transfer) + } + transfer + }, + { + fn allowance( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ERC20Calls::allowance) + } + allowance + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::allowance(inner) => { + ::abi_encoded_size(inner) + } + Self::approve(inner) => { + ::abi_encoded_size(inner) + } + Self::balanceOf(inner) => { + ::abi_encoded_size(inner) + } + Self::decimals(inner) => { + ::abi_encoded_size(inner) + } + Self::decreaseAllowance(inner) => { + ::abi_encoded_size(inner) + } + Self::increaseAllowance(inner) => { + ::abi_encoded_size(inner) + } + Self::name(inner) => { + ::abi_encoded_size(inner) + } + Self::symbol(inner) => { + ::abi_encoded_size(inner) + } + Self::totalSupply(inner) => { + ::abi_encoded_size(inner) + } + Self::transfer(inner) => { + ::abi_encoded_size(inner) + } + Self::transferFrom(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::allowance(inner) => { + ::abi_encode_raw(inner, out) + } + Self::approve(inner) => { + ::abi_encode_raw(inner, out) + } + Self::balanceOf(inner) => { + ::abi_encode_raw(inner, out) + } + Self::decimals(inner) => { + ::abi_encode_raw(inner, out) + } + Self::decreaseAllowance(inner) => { + ::abi_encode_raw(inner, out) + } + Self::increaseAllowance(inner) => { + ::abi_encode_raw(inner, out) + } + Self::name(inner) => { + ::abi_encode_raw(inner, out) + } + Self::symbol(inner) => { + ::abi_encode_raw(inner, out) + } + Self::totalSupply(inner) => { + ::abi_encode_raw(inner, out) + } + Self::transfer(inner) => { + ::abi_encode_raw(inner, out) + } + Self::transferFrom(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`ERC20`](self) events. + pub enum ERC20Events { + Approval(Approval), + Transfer(Transfer), + } + #[automatically_derived] + impl ERC20Events { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 140u8, 91u8, 225u8, 229u8, 235u8, 236u8, 125u8, 91u8, 209u8, 79u8, 113u8, 66u8, + 125u8, 30u8, 132u8, 243u8, 221u8, 3u8, 20u8, 192u8, 247u8, 178u8, 41u8, 30u8, 91u8, + 32u8, 10u8, 200u8, 199u8, 195u8, 185u8, 37u8, + ], + [ + 221u8, 242u8, 82u8, 173u8, 27u8, 226u8, 200u8, 155u8, 105u8, 194u8, 176u8, 104u8, + 252u8, 55u8, 141u8, 170u8, 149u8, 43u8, 167u8, 241u8, 99u8, 196u8, 161u8, 22u8, + 40u8, 245u8, 90u8, 77u8, 245u8, 35u8, 179u8, 239u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for ERC20Events { + const NAME: &'static str = "ERC20Events"; + const COUNT: usize = 2usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::Approval) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::Transfer) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ERC20Events { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::Transfer(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Transfer(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ERC20`](self) contract instance. + + See the [wrapper's documentation](`ERC20Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ERC20Instance { + ERC20Instance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + name_: alloy::sol_types::private::String, + symbol_: alloy::sol_types::private::String, + ) -> impl ::core::future::Future>> { + ERC20Instance::::deploy(provider, name_, symbol_) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + name_: alloy::sol_types::private::String, + symbol_: alloy::sol_types::private::String, + ) -> alloy_contract::RawCallBuilder { + ERC20Instance::::deploy_builder(provider, name_, symbol_) + } + /**A [`ERC20`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ERC20`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ERC20Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ERC20Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ERC20Instance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ERC20Instance + { + /**Creates a new wrapper around an on-chain [`ERC20`](self) contract instance. + + See the [wrapper's documentation](`ERC20Instance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + name_: alloy::sol_types::private::String, + symbol_: alloy::sol_types::private::String, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, name_, symbol_); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + name_: alloy::sol_types::private::String, + symbol_: alloy::sol_types::private::String, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode(&constructorCall { + name_, + symbol_, + })[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ERC20Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ERC20Instance { + ERC20Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ERC20Instance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`allowance`] function. + pub fn allowance( + &self, + owner: alloy::sol_types::private::Address, + spender: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&allowanceCall { owner, spender }) + } + ///Creates a new call builder for the [`approve`] function. + pub fn approve( + &self, + spender: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&approveCall { spender, amount }) + } + ///Creates a new call builder for the [`balanceOf`] function. + pub fn balanceOf( + &self, + account: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&balanceOfCall { account }) + } + ///Creates a new call builder for the [`decimals`] function. + pub fn decimals(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&decimalsCall {}) + } + ///Creates a new call builder for the [`decreaseAllowance`] function. + pub fn decreaseAllowance( + &self, + spender: alloy::sol_types::private::Address, + subtractedValue: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&decreaseAllowanceCall { + spender, + subtractedValue, + }) + } + ///Creates a new call builder for the [`increaseAllowance`] function. + pub fn increaseAllowance( + &self, + spender: alloy::sol_types::private::Address, + addedValue: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&increaseAllowanceCall { + spender, + addedValue, + }) + } + ///Creates a new call builder for the [`name`] function. + pub fn name(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&nameCall {}) + } + ///Creates a new call builder for the [`symbol`] function. + pub fn symbol(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&symbolCall {}) + } + ///Creates a new call builder for the [`totalSupply`] function. + pub fn totalSupply(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&totalSupplyCall {}) + } + ///Creates a new call builder for the [`transfer`] function. + pub fn transfer( + &self, + to: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferCall { to, amount }) + } + ///Creates a new call builder for the [`transferFrom`] function. + pub fn transferFrom( + &self, + from: alloy::sol_types::private::Address, + to: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferFromCall { from, to, amount }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ERC20Instance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Approval`] event. + pub fn Approval_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Transfer`] event. + pub fn Transfer_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/iavsdirectory.rs b/crates/utils/src/iavsdirectory.rs new file mode 100644 index 00000000..a468c131 --- /dev/null +++ b/crates/utils/src/iavsdirectory.rs @@ -0,0 +1,2217 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library ISignatureUtils { + struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ISignatureUtils { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SignatureWithSaltAndExpiry { + pub signature: alloy::sol_types::private::Bytes, + pub salt: alloy::sol_types::private::FixedBytes<32>, + pub expiry: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: SignatureWithSaltAndExpiry) -> Self { + (value.signature, value.salt, value.expiry) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for SignatureWithSaltAndExpiry { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + signature: tuple.0, + salt: tuple.1, + expiry: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for SignatureWithSaltAndExpiry { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for SignatureWithSaltAndExpiry { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.signature, + ), + as alloy_sol_types::SolType>::tokenize(&self.salt), + as alloy_sol_types::SolType>::tokenize(&self.expiry), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for SignatureWithSaltAndExpiry { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for SignatureWithSaltAndExpiry { + const NAME: &'static str = "SignatureWithSaltAndExpiry"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "SignatureWithSaltAndExpiry(bytes signature,bytes32 salt,uint256 expiry)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.signature, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.salt) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.expiry) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for SignatureWithSaltAndExpiry { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.signature, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.salt) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.expiry, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.signature, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.salt, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.expiry, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ISignatureUtilsInstance { + ISignatureUtilsInstance::::new(address, provider) + } + /**A [`ISignatureUtils`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ISignatureUtils`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ISignatureUtilsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ISignatureUtilsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ISignatureUtilsInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ISignatureUtilsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ISignatureUtilsInstance { + ISignatureUtilsInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library ISignatureUtils { + struct SignatureWithSaltAndExpiry { + bytes signature; + bytes32 salt; + uint256 expiry; + } +} + +interface IAVSDirectory { + type OperatorAVSRegistrationStatus is uint8; + + event AVSMetadataURIUpdated(address indexed avs, string metadataURI); + event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, OperatorAVSRegistrationStatus status); + + function OPERATOR_AVS_REGISTRATION_TYPEHASH() external view returns (bytes32); + function calculateOperatorAVSRegistrationDigestHash(address operator, address avs, bytes32 salt, uint256 expiry) external view returns (bytes32); + function deregisterOperatorFromAVS(address operator) external; + function operatorSaltIsSpent(address operator, bytes32 salt) external view returns (bool); + function registerOperatorToAVS(address operator, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external; + function updateAVSMetadataURI(string memory metadataURI) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "OPERATOR_AVS_REGISTRATION_TYPEHASH", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "calculateOperatorAVSRegistrationDigestHash", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "avs", + "type": "address", + "internalType": "address" + }, + { + "name": "salt", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "deregisterOperatorFromAVS", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "operatorSaltIsSpent", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "salt", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registerOperatorToAVS", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "operatorSignature", + "type": "tuple", + "internalType": "struct ISignatureUtils.SignatureWithSaltAndExpiry", + "components": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "salt", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateAVSMetadataURI", + "inputs": [ + { + "name": "metadataURI", + "type": "string", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "AVSMetadataURIUpdated", + "inputs": [ + { + "name": "avs", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "metadataURI", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorAVSRegistrationStatusUpdated", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "avs", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "status", + "type": "uint8", + "indexed": false, + "internalType": "enum IAVSDirectory.OperatorAVSRegistrationStatus" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IAVSDirectory { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OperatorAVSRegistrationStatus(u8); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for u8 { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> + { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::Uint<8>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self).0 + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size( + self, + ) + } + } + #[automatically_derived] + impl OperatorAVSRegistrationStatus { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: u8) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> u8 { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OperatorAVSRegistrationStatus { + type RustType = u8; + type Token<'a> = + as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OperatorAVSRegistrationStatus { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic( + rust, + ) + } + } + }; + /**Event with signature `AVSMetadataURIUpdated(address,string)` and selector `0xa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c943713`. + ```solidity + event AVSMetadataURIUpdated(address indexed avs, string metadataURI); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct AVSMetadataURIUpdated { + #[allow(missing_docs)] + pub avs: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub metadataURI: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for AVSMetadataURIUpdated { + type DataTuple<'a> = (alloy::sol_types::sol_data::String,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "AVSMetadataURIUpdated(address,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 168u8, 156u8, 29u8, 194u8, 67u8, 216u8, 144u8, 138u8, 150u8, 221u8, 132u8, + 148u8, 75u8, 204u8, 151u8, 214u8, 188u8, 106u8, 192u8, 13u8, 215u8, 142u8, + 32u8, 98u8, 21u8, 118u8, 190u8, 106u8, 60u8, 148u8, 55u8, 19u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + avs: topics.1, + metadataURI: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.metadataURI, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.avs.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.avs, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for AVSMetadataURIUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&AVSMetadataURIUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &AVSMetadataURIUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorAVSRegistrationStatusUpdated(address,address,uint8)` and selector `0xf0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41`. + ```solidity + event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, OperatorAVSRegistrationStatus status); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorAVSRegistrationStatusUpdated { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub avs: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub status: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorAVSRegistrationStatusUpdated { + type DataTuple<'a> = (OperatorAVSRegistrationStatus,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = + "OperatorAVSRegistrationStatusUpdated(address,address,uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 240u8, 149u8, 43u8, 28u8, 101u8, 39u8, 29u8, 129u8, 157u8, 57u8, 152u8, 61u8, + 42u8, 187u8, 4u8, 75u8, 156u8, 172u8, 229u8, 155u8, 204u8, 77u8, 77u8, 211u8, + 137u8, 245u8, 134u8, 235u8, 220u8, 177u8, 91u8, 65u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: topics.1, + avs: topics.2, + status: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.status, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.operator.clone(), + self.avs.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + out[2usize] = ::encode_topic( + &self.avs, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorAVSRegistrationStatusUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorAVSRegistrationStatusUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from( + this: &OperatorAVSRegistrationStatusUpdated, + ) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `OPERATOR_AVS_REGISTRATION_TYPEHASH()` and selector `0xd79aceab`. + ```solidity + function OPERATOR_AVS_REGISTRATION_TYPEHASH() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OPERATOR_AVS_REGISTRATION_TYPEHASHCall {} + ///Container type for the return parameters of the [`OPERATOR_AVS_REGISTRATION_TYPEHASH()`](OPERATOR_AVS_REGISTRATION_TYPEHASHCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OPERATOR_AVS_REGISTRATION_TYPEHASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OPERATOR_AVS_REGISTRATION_TYPEHASHCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OPERATOR_AVS_REGISTRATION_TYPEHASHCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OPERATOR_AVS_REGISTRATION_TYPEHASHReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OPERATOR_AVS_REGISTRATION_TYPEHASHReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for OPERATOR_AVS_REGISTRATION_TYPEHASHCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = OPERATOR_AVS_REGISTRATION_TYPEHASHReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "OPERATOR_AVS_REGISTRATION_TYPEHASH()"; + const SELECTOR: [u8; 4] = [215u8, 154u8, 206u8, 171u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)` and selector `0xa1060c88`. + ```solidity + function calculateOperatorAVSRegistrationDigestHash(address operator, address avs, bytes32 salt, uint256 expiry) external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct calculateOperatorAVSRegistrationDigestHashCall { + pub operator: alloy::sol_types::private::Address, + pub avs: alloy::sol_types::private::Address, + pub salt: alloy::sol_types::private::FixedBytes<32>, + pub expiry: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)`](calculateOperatorAVSRegistrationDigestHashCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct calculateOperatorAVSRegistrationDigestHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: calculateOperatorAVSRegistrationDigestHashCall) -> Self { + (value.operator, value.avs, value.salt, value.expiry) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for calculateOperatorAVSRegistrationDigestHashCall + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + avs: tuple.1, + salt: tuple.2, + expiry: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: calculateOperatorAVSRegistrationDigestHashReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for calculateOperatorAVSRegistrationDigestHashReturn + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for calculateOperatorAVSRegistrationDigestHashCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = calculateOperatorAVSRegistrationDigestHashReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)"; + const SELECTOR: [u8; 4] = [161u8, 6u8, 12u8, 136u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.avs, + ), + as alloy_sol_types::SolType>::tokenize(&self.salt), + as alloy_sol_types::SolType>::tokenize(&self.expiry), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `deregisterOperatorFromAVS(address)` and selector `0xa364f4da`. + ```solidity + function deregisterOperatorFromAVS(address operator) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorFromAVSCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`deregisterOperatorFromAVS(address)`](deregisterOperatorFromAVSCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorFromAVSReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorFromAVSCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorFromAVSCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorFromAVSReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorFromAVSReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for deregisterOperatorFromAVSCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = deregisterOperatorFromAVSReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "deregisterOperatorFromAVS(address)"; + const SELECTOR: [u8; 4] = [163u8, 100u8, 244u8, 218u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `operatorSaltIsSpent(address,bytes32)` and selector `0x374823b5`. + ```solidity + function operatorSaltIsSpent(address operator, bytes32 salt) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorSaltIsSpentCall { + pub operator: alloy::sol_types::private::Address, + pub salt: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`operatorSaltIsSpent(address,bytes32)`](operatorSaltIsSpentCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorSaltIsSpentReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorSaltIsSpentCall) -> Self { + (value.operator, value.salt) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorSaltIsSpentCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + salt: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorSaltIsSpentReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorSaltIsSpentReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for operatorSaltIsSpentCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = operatorSaltIsSpentReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "operatorSaltIsSpent(address,bytes32)"; + const SELECTOR: [u8; 4] = [55u8, 72u8, 35u8, 181u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + as alloy_sol_types::SolType>::tokenize(&self.salt), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registerOperatorToAVS(address,(bytes,bytes32,uint256))` and selector `0x9926ee7d`. + ```solidity + function registerOperatorToAVS(address operator, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorToAVSCall { + pub operator: alloy::sol_types::private::Address, + pub operatorSignature: + ::RustType, + } + ///Container type for the return parameters of the [`registerOperatorToAVS(address,(bytes,bytes32,uint256))`](registerOperatorToAVSCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorToAVSReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithSaltAndExpiry, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorToAVSCall) -> Self { + (value.operator, value.operatorSignature) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorToAVSCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + operatorSignature: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorToAVSReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorToAVSReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registerOperatorToAVSCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithSaltAndExpiry, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registerOperatorToAVSReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "registerOperatorToAVS(address,(bytes,bytes32,uint256))"; + const SELECTOR: [u8; 4] = [153u8, 38u8, 238u8, 125u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.operatorSignature, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateAVSMetadataURI(string)` and selector `0xa98fb355`. + ```solidity + function updateAVSMetadataURI(string memory metadataURI) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateAVSMetadataURICall { + pub metadataURI: alloy::sol_types::private::String, + } + ///Container type for the return parameters of the [`updateAVSMetadataURI(string)`](updateAVSMetadataURICall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateAVSMetadataURIReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateAVSMetadataURICall) -> Self { + (value.metadataURI,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateAVSMetadataURICall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + metadataURI: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateAVSMetadataURIReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateAVSMetadataURIReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateAVSMetadataURICall { + type Parameters<'a> = (alloy::sol_types::sol_data::String,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateAVSMetadataURIReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateAVSMetadataURI(string)"; + const SELECTOR: [u8; 4] = [169u8, 143u8, 179u8, 85u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.metadataURI, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IAVSDirectory`](self) function calls. + pub enum IAVSDirectoryCalls { + OPERATOR_AVS_REGISTRATION_TYPEHASH(OPERATOR_AVS_REGISTRATION_TYPEHASHCall), + calculateOperatorAVSRegistrationDigestHash(calculateOperatorAVSRegistrationDigestHashCall), + deregisterOperatorFromAVS(deregisterOperatorFromAVSCall), + operatorSaltIsSpent(operatorSaltIsSpentCall), + registerOperatorToAVS(registerOperatorToAVSCall), + updateAVSMetadataURI(updateAVSMetadataURICall), + } + #[automatically_derived] + impl IAVSDirectoryCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [55u8, 72u8, 35u8, 181u8], + [153u8, 38u8, 238u8, 125u8], + [161u8, 6u8, 12u8, 136u8], + [163u8, 100u8, 244u8, 218u8], + [169u8, 143u8, 179u8, 85u8], + [215u8, 154u8, 206u8, 171u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IAVSDirectoryCalls { + const NAME: &'static str = "IAVSDirectoryCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 6usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::OPERATOR_AVS_REGISTRATION_TYPEHASH(_) => { + ::SELECTOR + } + Self::calculateOperatorAVSRegistrationDigestHash(_) => { + ::SELECTOR + } + Self::deregisterOperatorFromAVS(_) => { + ::SELECTOR + } + Self::operatorSaltIsSpent(_) => { + ::SELECTOR + } + Self::registerOperatorToAVS(_) => { + ::SELECTOR + } + Self::updateAVSMetadataURI(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn operatorSaltIsSpent( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IAVSDirectoryCalls::operatorSaltIsSpent) + } + operatorSaltIsSpent + }, + { + fn registerOperatorToAVS( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IAVSDirectoryCalls::registerOperatorToAVS) + } + registerOperatorToAVS + }, + { + fn calculateOperatorAVSRegistrationDigestHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + IAVSDirectoryCalls::calculateOperatorAVSRegistrationDigestHash, + ) + } + calculateOperatorAVSRegistrationDigestHash + }, + { + fn deregisterOperatorFromAVS( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IAVSDirectoryCalls::deregisterOperatorFromAVS) + } + deregisterOperatorFromAVS + }, + { + fn updateAVSMetadataURI( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IAVSDirectoryCalls::updateAVSMetadataURI) + } + updateAVSMetadataURI + }, + { + fn OPERATOR_AVS_REGISTRATION_TYPEHASH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IAVSDirectoryCalls::OPERATOR_AVS_REGISTRATION_TYPEHASH) + } + OPERATOR_AVS_REGISTRATION_TYPEHASH + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::OPERATOR_AVS_REGISTRATION_TYPEHASH(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::calculateOperatorAVSRegistrationDigestHash(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::deregisterOperatorFromAVS(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::operatorSaltIsSpent(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registerOperatorToAVS(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::updateAVSMetadataURI(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::OPERATOR_AVS_REGISTRATION_TYPEHASH(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::calculateOperatorAVSRegistrationDigestHash(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::deregisterOperatorFromAVS(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::operatorSaltIsSpent(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registerOperatorToAVS(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::updateAVSMetadataURI(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`IAVSDirectory`](self) events. + pub enum IAVSDirectoryEvents { + AVSMetadataURIUpdated(AVSMetadataURIUpdated), + OperatorAVSRegistrationStatusUpdated(OperatorAVSRegistrationStatusUpdated), + } + #[automatically_derived] + impl IAVSDirectoryEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 168u8, 156u8, 29u8, 194u8, 67u8, 216u8, 144u8, 138u8, 150u8, 221u8, 132u8, 148u8, + 75u8, 204u8, 151u8, 214u8, 188u8, 106u8, 192u8, 13u8, 215u8, 142u8, 32u8, 98u8, + 21u8, 118u8, 190u8, 106u8, 60u8, 148u8, 55u8, 19u8, + ], + [ + 240u8, 149u8, 43u8, 28u8, 101u8, 39u8, 29u8, 129u8, 157u8, 57u8, 152u8, 61u8, 42u8, + 187u8, 4u8, 75u8, 156u8, 172u8, 229u8, 155u8, 204u8, 77u8, 77u8, 211u8, 137u8, + 245u8, 134u8, 235u8, 220u8, 177u8, 91u8, 65u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IAVSDirectoryEvents { + const NAME: &'static str = "IAVSDirectoryEvents"; + const COUNT: usize = 2usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::AVSMetadataURIUpdated) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::OperatorAVSRegistrationStatusUpdated) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for IAVSDirectoryEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::AVSMetadataURIUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorAVSRegistrationStatusUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::AVSMetadataURIUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorAVSRegistrationStatusUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IAVSDirectory`](self) contract instance. + + See the [wrapper's documentation](`IAVSDirectoryInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IAVSDirectoryInstance { + IAVSDirectoryInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + IAVSDirectoryInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IAVSDirectoryInstance::::deploy_builder(provider) + } + /**A [`IAVSDirectory`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IAVSDirectory`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IAVSDirectoryInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IAVSDirectoryInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IAVSDirectoryInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IAVSDirectoryInstance + { + /**Creates a new wrapper around an on-chain [`IAVSDirectory`](self) contract instance. + + See the [wrapper's documentation](`IAVSDirectoryInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IAVSDirectoryInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IAVSDirectoryInstance { + IAVSDirectoryInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IAVSDirectoryInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`OPERATOR_AVS_REGISTRATION_TYPEHASH`] function. + pub fn OPERATOR_AVS_REGISTRATION_TYPEHASH( + &self, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&OPERATOR_AVS_REGISTRATION_TYPEHASHCall {}) + } + ///Creates a new call builder for the [`calculateOperatorAVSRegistrationDigestHash`] function. + pub fn calculateOperatorAVSRegistrationDigestHash( + &self, + operator: alloy::sol_types::private::Address, + avs: alloy::sol_types::private::Address, + salt: alloy::sol_types::private::FixedBytes<32>, + expiry: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&calculateOperatorAVSRegistrationDigestHashCall { + operator, + avs, + salt, + expiry, + }) + } + ///Creates a new call builder for the [`deregisterOperatorFromAVS`] function. + pub fn deregisterOperatorFromAVS( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&deregisterOperatorFromAVSCall { operator }) + } + ///Creates a new call builder for the [`operatorSaltIsSpent`] function. + pub fn operatorSaltIsSpent( + &self, + operator: alloy::sol_types::private::Address, + salt: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&operatorSaltIsSpentCall { operator, salt }) + } + ///Creates a new call builder for the [`registerOperatorToAVS`] function. + pub fn registerOperatorToAVS( + &self, + operator: alloy::sol_types::private::Address, + operatorSignature: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterOperatorToAVSCall { + operator, + operatorSignature, + }) + } + ///Creates a new call builder for the [`updateAVSMetadataURI`] function. + pub fn updateAVSMetadataURI( + &self, + metadataURI: alloy::sol_types::private::String, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateAVSMetadataURICall { metadataURI }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IAVSDirectoryInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`AVSMetadataURIUpdated`] event. + pub fn AVSMetadataURIUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorAVSRegistrationStatusUpdated`] event. + pub fn OperatorAVSRegistrationStatusUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/ibeacon.rs b/crates/utils/src/ibeacon.rs new file mode 100644 index 00000000..e5d059e7 --- /dev/null +++ b/crates/utils/src/ibeacon.rs @@ -0,0 +1,423 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IBeacon { + function implementation() external view returns (address); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "implementation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IBeacon { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Function with signature `implementation()` and selector `0x5c60da1b`. + ```solidity + function implementation() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct implementationCall {} + ///Container type for the return parameters of the [`implementation()`](implementationCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct implementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: implementationCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for implementationCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: implementationReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for implementationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for implementationCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = implementationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "implementation()"; + const SELECTOR: [u8; 4] = [92u8, 96u8, 218u8, 27u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IBeacon`](self) function calls. + pub enum IBeaconCalls { + implementation(implementationCall), + } + #[automatically_derived] + impl IBeaconCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[92u8, 96u8, 218u8, 27u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IBeaconCalls { + const NAME: &'static str = "IBeaconCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::implementation(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn(&[u8], bool) -> alloy_sol_types::Result] = &[{ + fn implementation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IBeaconCalls::implementation) + } + implementation + }]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::implementation(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::implementation(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IBeacon`](self) contract instance. + + See the [wrapper's documentation](`IBeaconInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IBeaconInstance { + IBeaconInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + IBeaconInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IBeaconInstance::::deploy_builder(provider) + } + /**A [`IBeacon`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IBeacon`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IBeaconInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IBeaconInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IBeaconInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IBeaconInstance + { + /**Creates a new wrapper around an on-chain [`IBeacon`](self) contract instance. + + See the [wrapper's documentation](`IBeaconInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IBeaconInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IBeaconInstance { + IBeaconInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IBeaconInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`implementation`] function. + pub fn implementation( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&implementationCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IBeaconInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/ibeaconchainoracle.rs b/crates/utils/src/ibeaconchainoracle.rs new file mode 100644 index 00000000..be9ab570 --- /dev/null +++ b/crates/utils/src/ibeaconchainoracle.rs @@ -0,0 +1,446 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IBeaconChainOracle { + function timestampToBlockRoot(uint256 timestamp) external view returns (bytes32); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "timestampToBlockRoot", + "inputs": [ + { + "name": "timestamp", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IBeaconChainOracle { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Function with signature `timestampToBlockRoot(uint256)` and selector `0x643599f2`. + ```solidity + function timestampToBlockRoot(uint256 timestamp) external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct timestampToBlockRootCall { + pub timestamp: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`timestampToBlockRoot(uint256)`](timestampToBlockRootCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct timestampToBlockRootReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: timestampToBlockRootCall) -> Self { + (value.timestamp,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for timestampToBlockRootCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { timestamp: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: timestampToBlockRootReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for timestampToBlockRootReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for timestampToBlockRootCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = timestampToBlockRootReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "timestampToBlockRoot(uint256)"; + const SELECTOR: [u8; 4] = [100u8, 53u8, 153u8, 242u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.timestamp, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IBeaconChainOracle`](self) function calls. + pub enum IBeaconChainOracleCalls { + timestampToBlockRoot(timestampToBlockRootCall), + } + #[automatically_derived] + impl IBeaconChainOracleCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[100u8, 53u8, 153u8, 242u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IBeaconChainOracleCalls { + const NAME: &'static str = "IBeaconChainOracleCalls"; + const MIN_DATA_LENGTH: usize = 32usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::timestampToBlockRoot(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[{ + fn timestampToBlockRoot( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IBeaconChainOracleCalls::timestampToBlockRoot) + } + timestampToBlockRoot + }]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::timestampToBlockRoot(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::timestampToBlockRoot(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IBeaconChainOracle`](self) contract instance. + + See the [wrapper's documentation](`IBeaconChainOracleInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IBeaconChainOracleInstance { + IBeaconChainOracleInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + IBeaconChainOracleInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IBeaconChainOracleInstance::::deploy_builder(provider) + } + /**A [`IBeaconChainOracle`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IBeaconChainOracle`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IBeaconChainOracleInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IBeaconChainOracleInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IBeaconChainOracleInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IBeaconChainOracleInstance + { + /**Creates a new wrapper around an on-chain [`IBeaconChainOracle`](self) contract instance. + + See the [wrapper's documentation](`IBeaconChainOracleInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IBeaconChainOracleInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IBeaconChainOracleInstance { + IBeaconChainOracleInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IBeaconChainOracleInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`timestampToBlockRoot`] function. + pub fn timestampToBlockRoot( + &self, + timestamp: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(×tampToBlockRootCall { timestamp }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IBeaconChainOracleInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/iblsapkregistry.rs b/crates/utils/src/iblsapkregistry.rs new file mode 100644 index 00000000..5599aa7c --- /dev/null +++ b/crates/utils/src/iblsapkregistry.rs @@ -0,0 +1,4378 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library BN254 { + struct G1Point { uint256 X; uint256 Y; } + struct G2Point { uint256[2] X; uint256[2] Y; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod BN254 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct G1Point { uint256 X; uint256 Y; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct G1Point { + pub X: alloy::sol_types::private::primitives::aliases::U256, + pub Y: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: G1Point) -> Self { + (value.X, value.Y) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for G1Point { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + X: tuple.0, + Y: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for G1Point { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for G1Point { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.X, + ), + as alloy_sol_types::SolType>::tokenize( + &self.Y, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for G1Point { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for G1Point { + const NAME: &'static str = "G1Point"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 X,uint256 Y)") + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word(&self.X) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.Y) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for G1Point { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.X) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.Y) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.X, out); + as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.Y, out); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct G2Point { uint256[2] X; uint256[2] Y; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct G2Point { + pub X: [alloy::sol_types::private::primitives::aliases::U256; 2usize], + pub Y: [alloy::sol_types::private::primitives::aliases::U256; 2usize], + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedArray, 2usize>, + alloy::sol_types::sol_data::FixedArray, 2usize>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + [alloy::sol_types::private::primitives::aliases::U256; 2usize], + [alloy::sol_types::private::primitives::aliases::U256; 2usize], + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: G2Point) -> Self { + (value.X, value.Y) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for G2Point { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + X: tuple.0, + Y: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for G2Point { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for G2Point { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + , + 2usize, + > as alloy_sol_types::SolType>::tokenize(&self.X), + , + 2usize, + > as alloy_sol_types::SolType>::tokenize(&self.Y), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for G2Point { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for G2Point { + const NAME: &'static str = "G2Point"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed("G2Point(uint256[2] X,uint256[2] Y)") + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + , + 2usize, + > as alloy_sol_types::SolType>::eip712_data_word(&self.X) + .0, + , + 2usize, + > as alloy_sol_types::SolType>::eip712_data_word(&self.Y) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for G2Point { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + , + 2usize, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.X + ) + + , + 2usize, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.Y + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + , + 2usize, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.X, out + ); + , + 2usize, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.Y, out + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance. + + See the [wrapper's documentation](`BN254Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> BN254Instance { + BN254Instance::::new(address, provider) + } + /**A [`BN254`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`BN254`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct BN254Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for BN254Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("BN254Instance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BN254Instance + { + /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance. + + See the [wrapper's documentation](`BN254Instance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl BN254Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> BN254Instance { + BN254Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BN254Instance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BN254Instance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library BN254 { + struct G1Point { + uint256 X; + uint256 Y; + } + struct G2Point { + uint256[2] X; + uint256[2] Y; + } +} + +interface IBLSApkRegistry { + struct ApkUpdate { + bytes24 apkHash; + uint32 updateBlockNumber; + uint32 nextUpdateBlockNumber; + } + struct PubkeyRegistrationParams { + BN254.G1Point pubkeyRegistrationSignature; + BN254.G1Point pubkeyG1; + BN254.G2Point pubkeyG2; + } + + event NewPubkeyRegistration(address indexed operator, BN254.G1Point pubkeyG1, BN254.G2Point pubkeyG2); + event OperatorAddedToQuorums(address operator, bytes32 operatorId, bytes quorumNumbers); + event OperatorRemovedFromQuorums(address operator, bytes32 operatorId, bytes quorumNumbers); + + function deregisterOperator(address operator, bytes memory quorumNumbers) external; + function getApk(uint8 quorumNumber) external view returns (BN254.G1Point memory); + function getApkHashAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) external view returns (bytes24); + function getApkIndicesAtBlockNumber(bytes memory quorumNumbers, uint256 blockNumber) external view returns (uint32[] memory); + function getApkUpdateAtIndex(uint8 quorumNumber, uint256 index) external view returns (ApkUpdate memory); + function getOperatorFromPubkeyHash(bytes32 pubkeyHash) external view returns (address); + function getOperatorId(address operator) external view returns (bytes32); + function getRegisteredPubkey(address operator) external view returns (BN254.G1Point memory, bytes32); + function initializeQuorum(uint8 quorumNumber) external; + function operatorToPubkeyHash(address operator) external view returns (bytes32); + function pubkeyHashToOperator(bytes32 pubkeyHash) external view returns (address); + function registerBLSPublicKey(address operator, PubkeyRegistrationParams memory params, BN254.G1Point memory pubkeyRegistrationMessageHash) external returns (bytes32 operatorId); + function registerOperator(address operator, bytes memory quorumNumbers) external; + function registryCoordinator() external view returns (address); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "deregisterOperator", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getApk", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getApkHashAtBlockNumberAndIndex", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes24", + "internalType": "bytes24" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getApkIndicesAtBlockNumber", + "inputs": [ + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "blockNumber", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32[]", + "internalType": "uint32[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getApkUpdateAtIndex", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IBLSApkRegistry.ApkUpdate", + "components": [ + { + "name": "apkHash", + "type": "bytes24", + "internalType": "bytes24" + }, + { + "name": "updateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "nextUpdateBlockNumber", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorFromPubkeyHash", + "inputs": [ + { + "name": "pubkeyHash", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorId", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getRegisteredPubkey", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initializeQuorum", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "operatorToPubkeyHash", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pubkeyHashToOperator", + "inputs": [ + { + "name": "pubkeyHash", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registerBLSPublicKey", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "params", + "type": "tuple", + "internalType": "struct IBLSApkRegistry.PubkeyRegistrationParams", + "components": [ + { + "name": "pubkeyRegistrationSignature", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "pubkeyG1", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "pubkeyG2", + "type": "tuple", + "internalType": "struct BN254.G2Point", + "components": [ + { + "name": "X", + "type": "uint256[2]", + "internalType": "uint256[2]" + }, + { + "name": "Y", + "type": "uint256[2]", + "internalType": "uint256[2]" + } + ] + } + ] + }, + { + "name": "pubkeyRegistrationMessageHash", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ], + "outputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registerOperator", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registryCoordinator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "NewPubkeyRegistration", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "pubkeyG1", + "type": "tuple", + "indexed": false, + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "pubkeyG2", + "type": "tuple", + "indexed": false, + "internalType": "struct BN254.G2Point", + "components": [ + { + "name": "X", + "type": "uint256[2]", + "internalType": "uint256[2]" + }, + { + "name": "Y", + "type": "uint256[2]", + "internalType": "uint256[2]" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorAddedToQuorums", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "operatorId", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorRemovedFromQuorums", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "operatorId", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IBLSApkRegistry { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**```solidity + struct ApkUpdate { bytes24 apkHash; uint32 updateBlockNumber; uint32 nextUpdateBlockNumber; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ApkUpdate { + pub apkHash: alloy::sol_types::private::FixedBytes<24>, + pub updateBlockNumber: u32, + pub nextUpdateBlockNumber: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<24>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<24>, u32, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ApkUpdate) -> Self { + ( + value.apkHash, + value.updateBlockNumber, + value.nextUpdateBlockNumber, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ApkUpdate { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + apkHash: tuple.0, + updateBlockNumber: tuple.1, + nextUpdateBlockNumber: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ApkUpdate { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ApkUpdate { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.apkHash), + as alloy_sol_types::SolType>::tokenize(&self.updateBlockNumber), + as alloy_sol_types::SolType>::tokenize(&self.nextUpdateBlockNumber), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for ApkUpdate { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for ApkUpdate { + const NAME: &'static str = "ApkUpdate"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ApkUpdate(bytes24 apkHash,uint32 updateBlockNumber,uint32 nextUpdateBlockNumber)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word(&self.apkHash) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.updateBlockNumber, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.nextUpdateBlockNumber, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ApkUpdate { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.apkHash, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.updateBlockNumber, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.nextUpdateBlockNumber, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.apkHash, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.updateBlockNumber, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nextUpdateBlockNumber, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct PubkeyRegistrationParams { BN254.G1Point pubkeyRegistrationSignature; BN254.G1Point pubkeyG1; BN254.G2Point pubkeyG2; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct PubkeyRegistrationParams { + pub pubkeyRegistrationSignature: ::RustType, + pub pubkeyG1: ::RustType, + pub pubkeyG2: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (BN254::G1Point, BN254::G1Point, BN254::G2Point); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: PubkeyRegistrationParams) -> Self { + ( + value.pubkeyRegistrationSignature, + value.pubkeyG1, + value.pubkeyG2, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for PubkeyRegistrationParams { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + pubkeyRegistrationSignature: tuple.0, + pubkeyG1: tuple.1, + pubkeyG2: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for PubkeyRegistrationParams { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for PubkeyRegistrationParams { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.pubkeyRegistrationSignature, + ), + ::tokenize(&self.pubkeyG1), + ::tokenize(&self.pubkeyG2), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for PubkeyRegistrationParams { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for PubkeyRegistrationParams { + const NAME: &'static str = "PubkeyRegistrationParams"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "PubkeyRegistrationParams(BN254.G1Point pubkeyRegistrationSignature,BN254.G1Point pubkeyG1,BN254.G2Point pubkeyG2)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + let mut components = alloy_sol_types::private::Vec::with_capacity(3); + components.push(::eip712_root_type()); + components + .extend(::eip712_components()); + components.push(::eip712_root_type()); + components + .extend(::eip712_components()); + components.push(::eip712_root_type()); + components + .extend(::eip712_components()); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.pubkeyRegistrationSignature, + ) + .0, + ::eip712_data_word(&self.pubkeyG1) + .0, + ::eip712_data_word(&self.pubkeyG2) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for PubkeyRegistrationParams { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.pubkeyRegistrationSignature, + ) + + ::topic_preimage_length( + &rust.pubkeyG1, + ) + + ::topic_preimage_length( + &rust.pubkeyG2, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.pubkeyRegistrationSignature, + out, + ); + ::encode_topic_preimage( + &rust.pubkeyG1, + out, + ); + ::encode_topic_preimage( + &rust.pubkeyG2, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**Event with signature `NewPubkeyRegistration(address,(uint256,uint256),(uint256[2],uint256[2]))` and selector `0xe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba3828041`. + ```solidity + event NewPubkeyRegistration(address indexed operator, BN254.G1Point pubkeyG1, BN254.G2Point pubkeyG2); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct NewPubkeyRegistration { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub pubkeyG1: ::RustType, + #[allow(missing_docs)] + pub pubkeyG2: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for NewPubkeyRegistration { + type DataTuple<'a> = (BN254::G1Point, BN254::G2Point); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = + "NewPubkeyRegistration(address,(uint256,uint256),(uint256[2],uint256[2]))"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 227u8, 251u8, 102u8, 19u8, 175u8, 46u8, 137u8, 48u8, 207u8, 133u8, 212u8, + 127u8, 207u8, 109u8, 177u8, 1u8, 146u8, 34u8, 74u8, 100u8, 198u8, 203u8, 232u8, + 2u8, 62u8, 14u8, 238u8, 27u8, 163u8, 130u8, 128u8, 65u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: topics.1, + pubkeyG1: data.0, + pubkeyG2: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize(&self.pubkeyG1), + ::tokenize(&self.pubkeyG2), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.operator.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for NewPubkeyRegistration { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&NewPubkeyRegistration> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &NewPubkeyRegistration) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorAddedToQuorums(address,bytes32,bytes)` and selector `0x73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e`. + ```solidity + event OperatorAddedToQuorums(address operator, bytes32 operatorId, bytes quorumNumbers); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorAddedToQuorums { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorAddedToQuorums { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "OperatorAddedToQuorums(address,bytes32,bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 115u8, 162u8, 183u8, 251u8, 132u8, 71u8, 36u8, 185u8, 113u8, 128u8, 42u8, + 233u8, 177u8, 93u8, 176u8, 148u8, 212u8, 183u8, 25u8, 45u8, 249u8, 215u8, 53u8, + 14u8, 20u8, 235u8, 70u8, 107u8, 155u8, 34u8, 235u8, 78u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: data.0, + operatorId: data.1, + quorumNumbers: data.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.operator, + ), + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorAddedToQuorums { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorAddedToQuorums> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorAddedToQuorums) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorRemovedFromQuorums(address,bytes32,bytes)` and selector `0xf843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e`. + ```solidity + event OperatorRemovedFromQuorums(address operator, bytes32 operatorId, bytes quorumNumbers); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorRemovedFromQuorums { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorRemovedFromQuorums { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "OperatorRemovedFromQuorums(address,bytes32,bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 248u8, 67u8, 236u8, 213u8, 58u8, 86u8, 54u8, 117u8, 230u8, 33u8, 7u8, 190u8, + 20u8, 148u8, 253u8, 222u8, 74u8, 61u8, 73u8, 174u8, 237u8, 175u8, 141u8, 136u8, + 198u8, 22u8, 216u8, 83u8, 70u8, 227u8, 80u8, 14u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: data.0, + operatorId: data.1, + quorumNumbers: data.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.operator, + ), + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorRemovedFromQuorums { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorRemovedFromQuorums> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorRemovedFromQuorums) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `deregisterOperator(address,bytes)` and selector `0xf4e24fe5`. + ```solidity + function deregisterOperator(address operator, bytes memory quorumNumbers) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorCall { + pub operator: alloy::sol_types::private::Address, + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`deregisterOperator(address,bytes)`](deregisterOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorCall) -> Self { + (value.operator, value.quorumNumbers) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + quorumNumbers: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for deregisterOperatorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = deregisterOperatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "deregisterOperator(address,bytes)"; + const SELECTOR: [u8; 4] = [244u8, 226u8, 79u8, 229u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getApk(uint8)` and selector `0x5f61a884`. + ```solidity + function getApk(uint8 quorumNumber) external view returns (BN254.G1Point memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApkCall { + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`getApk(uint8)`](getApkCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApkReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApkCall) -> Self { + (value.quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApkCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (BN254::G1Point,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApkReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApkReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getApkCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getApkReturn; + type ReturnTuple<'a> = (BN254::G1Point,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getApk(uint8)"; + const SELECTOR: [u8; 4] = [95u8, 97u8, 168u8, 132u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getApkHashAtBlockNumberAndIndex(uint8,uint32,uint256)` and selector `0x68bccaac`. + ```solidity + function getApkHashAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) external view returns (bytes24); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApkHashAtBlockNumberAndIndexCall { + pub quorumNumber: u8, + pub blockNumber: u32, + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getApkHashAtBlockNumberAndIndex(uint8,uint32,uint256)`](getApkHashAtBlockNumberAndIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApkHashAtBlockNumberAndIndexReturn { + pub _0: alloy::sol_types::private::FixedBytes<24>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u8, + u32, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApkHashAtBlockNumberAndIndexCall) -> Self { + (value.quorumNumber, value.blockNumber, value.index) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApkHashAtBlockNumberAndIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + blockNumber: tuple.1, + index: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<24>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<24>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApkHashAtBlockNumberAndIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApkHashAtBlockNumberAndIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getApkHashAtBlockNumberAndIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getApkHashAtBlockNumberAndIndexReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<24>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getApkHashAtBlockNumberAndIndex(uint8,uint32,uint256)"; + const SELECTOR: [u8; 4] = [104u8, 188u8, 202u8, 172u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.blockNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getApkIndicesAtBlockNumber(bytes,uint256)` and selector `0xd5254a8c`. + ```solidity + function getApkIndicesAtBlockNumber(bytes memory quorumNumbers, uint256 blockNumber) external view returns (uint32[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApkIndicesAtBlockNumberCall { + pub quorumNumbers: alloy::sol_types::private::Bytes, + pub blockNumber: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getApkIndicesAtBlockNumber(bytes,uint256)`](getApkIndicesAtBlockNumberCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApkIndicesAtBlockNumberReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApkIndicesAtBlockNumberCall) -> Self { + (value.quorumNumbers, value.blockNumber) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApkIndicesAtBlockNumberCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumbers: tuple.0, + blockNumber: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApkIndicesAtBlockNumberReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApkIndicesAtBlockNumberReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getApkIndicesAtBlockNumberCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getApkIndicesAtBlockNumberReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getApkIndicesAtBlockNumber(bytes,uint256)"; + const SELECTOR: [u8; 4] = [213u8, 37u8, 74u8, 140u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.quorumNumbers, + ), + as alloy_sol_types::SolType>::tokenize( + &self.blockNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getApkUpdateAtIndex(uint8,uint256)` and selector `0x605747d5`. + ```solidity + function getApkUpdateAtIndex(uint8 quorumNumber, uint256 index) external view returns (ApkUpdate memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApkUpdateAtIndexCall { + pub quorumNumber: u8, + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getApkUpdateAtIndex(uint8,uint256)`](getApkUpdateAtIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApkUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (u8, alloy::sol_types::private::primitives::aliases::U256); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApkUpdateAtIndexCall) -> Self { + (value.quorumNumber, value.index) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApkUpdateAtIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + index: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (ApkUpdate,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApkUpdateAtIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApkUpdateAtIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getApkUpdateAtIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getApkUpdateAtIndexReturn; + type ReturnTuple<'a> = (ApkUpdate,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getApkUpdateAtIndex(uint8,uint256)"; + const SELECTOR: [u8; 4] = [96u8, 87u8, 71u8, 213u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorFromPubkeyHash(bytes32)` and selector `0x47b314e8`. + ```solidity + function getOperatorFromPubkeyHash(bytes32 pubkeyHash) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorFromPubkeyHashCall { + pub pubkeyHash: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`getOperatorFromPubkeyHash(bytes32)`](getOperatorFromPubkeyHashCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorFromPubkeyHashReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorFromPubkeyHashCall) -> Self { + (value.pubkeyHash,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorFromPubkeyHashCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + pubkeyHash: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorFromPubkeyHashReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorFromPubkeyHashReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorFromPubkeyHashCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorFromPubkeyHashReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorFromPubkeyHash(bytes32)"; + const SELECTOR: [u8; 4] = [71u8, 179u8, 20u8, 232u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.pubkeyHash), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorId(address)` and selector `0x13542a4e`. + ```solidity + function getOperatorId(address operator) external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorIdCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getOperatorId(address)`](getOperatorIdCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorIdReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorIdCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorIdCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorIdReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorIdReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorIdCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorIdReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorId(address)"; + const SELECTOR: [u8; 4] = [19u8, 84u8, 42u8, 78u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getRegisteredPubkey(address)` and selector `0x7ff81a87`. + ```solidity + function getRegisteredPubkey(address operator) external view returns (BN254.G1Point memory, bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getRegisteredPubkeyCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getRegisteredPubkey(address)`](getRegisteredPubkeyCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getRegisteredPubkeyReturn { + pub _0: ::RustType, + pub _1: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getRegisteredPubkeyCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getRegisteredPubkeyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (BN254::G1Point, alloy::sol_types::sol_data::FixedBytes<32>); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getRegisteredPubkeyReturn) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getRegisteredPubkeyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getRegisteredPubkeyCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getRegisteredPubkeyReturn; + type ReturnTuple<'a> = (BN254::G1Point, alloy::sol_types::sol_data::FixedBytes<32>); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getRegisteredPubkey(address)"; + const SELECTOR: [u8; 4] = [127u8, 248u8, 26u8, 135u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `initializeQuorum(uint8)` and selector `0x26d941f2`. + ```solidity + function initializeQuorum(uint8 quorumNumber) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeQuorumCall { + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`initializeQuorum(uint8)`](initializeQuorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeQuorumReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeQuorumCall) -> Self { + (value.quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeQuorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeQuorumReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeQuorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for initializeQuorumCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = initializeQuorumReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "initializeQuorum(uint8)"; + const SELECTOR: [u8; 4] = [38u8, 217u8, 65u8, 242u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `operatorToPubkeyHash(address)` and selector `0xde29fac0`. + ```solidity + function operatorToPubkeyHash(address operator) external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorToPubkeyHashCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`operatorToPubkeyHash(address)`](operatorToPubkeyHashCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorToPubkeyHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorToPubkeyHashCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorToPubkeyHashCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorToPubkeyHashReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorToPubkeyHashReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for operatorToPubkeyHashCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = operatorToPubkeyHashReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "operatorToPubkeyHash(address)"; + const SELECTOR: [u8; 4] = [222u8, 41u8, 250u8, 192u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pubkeyHashToOperator(bytes32)` and selector `0xe8bb9ae6`. + ```solidity + function pubkeyHashToOperator(bytes32 pubkeyHash) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pubkeyHashToOperatorCall { + pub pubkeyHash: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`pubkeyHashToOperator(bytes32)`](pubkeyHashToOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pubkeyHashToOperatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pubkeyHashToOperatorCall) -> Self { + (value.pubkeyHash,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pubkeyHashToOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + pubkeyHash: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pubkeyHashToOperatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pubkeyHashToOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pubkeyHashToOperatorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pubkeyHashToOperatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pubkeyHashToOperator(bytes32)"; + const SELECTOR: [u8; 4] = [232u8, 187u8, 154u8, 230u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.pubkeyHash), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registerBLSPublicKey(address,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(uint256,uint256))` and selector `0xbf79ce58`. + ```solidity + function registerBLSPublicKey(address operator, PubkeyRegistrationParams memory params, BN254.G1Point memory pubkeyRegistrationMessageHash) external returns (bytes32 operatorId); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerBLSPublicKeyCall { + pub operator: alloy::sol_types::private::Address, + pub params: ::RustType, + pub pubkeyRegistrationMessageHash: ::RustType, + } + ///Container type for the return parameters of the [`registerBLSPublicKey(address,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(uint256,uint256))`](registerBLSPublicKeyCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerBLSPublicKeyReturn { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + PubkeyRegistrationParams, + BN254::G1Point, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerBLSPublicKeyCall) -> Self { + ( + value.operator, + value.params, + value.pubkeyRegistrationMessageHash, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerBLSPublicKeyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + params: tuple.1, + pubkeyRegistrationMessageHash: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerBLSPublicKeyReturn) -> Self { + (value.operatorId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerBLSPublicKeyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registerBLSPublicKeyCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + PubkeyRegistrationParams, + BN254::G1Point, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registerBLSPublicKeyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registerBLSPublicKey(address,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(uint256,uint256))"; + const SELECTOR: [u8; 4] = [191u8, 121u8, 206u8, 88u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize(&self.params), + ::tokenize( + &self.pubkeyRegistrationMessageHash, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registerOperator(address,bytes)` and selector `0x3fb27952`. + ```solidity + function registerOperator(address operator, bytes memory quorumNumbers) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorCall { + pub operator: alloy::sol_types::private::Address, + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`registerOperator(address,bytes)`](registerOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorCall) -> Self { + (value.operator, value.quorumNumbers) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + quorumNumbers: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registerOperatorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registerOperatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registerOperator(address,bytes)"; + const SELECTOR: [u8; 4] = [63u8, 178u8, 121u8, 82u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registryCoordinator()` and selector `0x6d14a987`. + ```solidity + function registryCoordinator() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registryCoordinatorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registryCoordinatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registryCoordinator()"; + const SELECTOR: [u8; 4] = [109u8, 20u8, 169u8, 135u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IBLSApkRegistry`](self) function calls. + pub enum IBLSApkRegistryCalls { + deregisterOperator(deregisterOperatorCall), + getApk(getApkCall), + getApkHashAtBlockNumberAndIndex(getApkHashAtBlockNumberAndIndexCall), + getApkIndicesAtBlockNumber(getApkIndicesAtBlockNumberCall), + getApkUpdateAtIndex(getApkUpdateAtIndexCall), + getOperatorFromPubkeyHash(getOperatorFromPubkeyHashCall), + getOperatorId(getOperatorIdCall), + getRegisteredPubkey(getRegisteredPubkeyCall), + initializeQuorum(initializeQuorumCall), + operatorToPubkeyHash(operatorToPubkeyHashCall), + pubkeyHashToOperator(pubkeyHashToOperatorCall), + registerBLSPublicKey(registerBLSPublicKeyCall), + registerOperator(registerOperatorCall), + registryCoordinator(registryCoordinatorCall), + } + #[automatically_derived] + impl IBLSApkRegistryCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [19u8, 84u8, 42u8, 78u8], + [38u8, 217u8, 65u8, 242u8], + [63u8, 178u8, 121u8, 82u8], + [71u8, 179u8, 20u8, 232u8], + [95u8, 97u8, 168u8, 132u8], + [96u8, 87u8, 71u8, 213u8], + [104u8, 188u8, 202u8, 172u8], + [109u8, 20u8, 169u8, 135u8], + [127u8, 248u8, 26u8, 135u8], + [191u8, 121u8, 206u8, 88u8], + [213u8, 37u8, 74u8, 140u8], + [222u8, 41u8, 250u8, 192u8], + [232u8, 187u8, 154u8, 230u8], + [244u8, 226u8, 79u8, 229u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IBLSApkRegistryCalls { + const NAME: &'static str = "IBLSApkRegistryCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 14usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::deregisterOperator(_) => { + ::SELECTOR + } + Self::getApk(_) => ::SELECTOR, + Self::getApkHashAtBlockNumberAndIndex(_) => { + ::SELECTOR + } + Self::getApkIndicesAtBlockNumber(_) => { + ::SELECTOR + } + Self::getApkUpdateAtIndex(_) => { + ::SELECTOR + } + Self::getOperatorFromPubkeyHash(_) => { + ::SELECTOR + } + Self::getOperatorId(_) => ::SELECTOR, + Self::getRegisteredPubkey(_) => { + ::SELECTOR + } + Self::initializeQuorum(_) => { + ::SELECTOR + } + Self::operatorToPubkeyHash(_) => { + ::SELECTOR + } + Self::pubkeyHashToOperator(_) => { + ::SELECTOR + } + Self::registerBLSPublicKey(_) => { + ::SELECTOR + } + Self::registerOperator(_) => { + ::SELECTOR + } + Self::registryCoordinator(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn getOperatorId( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IBLSApkRegistryCalls::getOperatorId) + } + getOperatorId + }, + { + fn initializeQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IBLSApkRegistryCalls::initializeQuorum) + } + initializeQuorum + }, + { + fn registerOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IBLSApkRegistryCalls::registerOperator) + } + registerOperator + }, + { + fn getOperatorFromPubkeyHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IBLSApkRegistryCalls::getOperatorFromPubkeyHash) + } + getOperatorFromPubkeyHash + }, + { + fn getApk( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IBLSApkRegistryCalls::getApk) + } + getApk + }, + { + fn getApkUpdateAtIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IBLSApkRegistryCalls::getApkUpdateAtIndex) + } + getApkUpdateAtIndex + }, + { + fn getApkHashAtBlockNumberAndIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IBLSApkRegistryCalls::getApkHashAtBlockNumberAndIndex) + } + getApkHashAtBlockNumberAndIndex + }, + { + fn registryCoordinator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IBLSApkRegistryCalls::registryCoordinator) + } + registryCoordinator + }, + { + fn getRegisteredPubkey( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IBLSApkRegistryCalls::getRegisteredPubkey) + } + getRegisteredPubkey + }, + { + fn registerBLSPublicKey( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IBLSApkRegistryCalls::registerBLSPublicKey) + } + registerBLSPublicKey + }, + { + fn getApkIndicesAtBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IBLSApkRegistryCalls::getApkIndicesAtBlockNumber) + } + getApkIndicesAtBlockNumber + }, + { + fn operatorToPubkeyHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IBLSApkRegistryCalls::operatorToPubkeyHash) + } + operatorToPubkeyHash + }, + { + fn pubkeyHashToOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IBLSApkRegistryCalls::pubkeyHashToOperator) + } + pubkeyHashToOperator + }, + { + fn deregisterOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IBLSApkRegistryCalls::deregisterOperator) + } + deregisterOperator + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::deregisterOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getApk(inner) => { + ::abi_encoded_size(inner) + } + Self::getApkHashAtBlockNumberAndIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getApkIndicesAtBlockNumber(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getApkUpdateAtIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorFromPubkeyHash(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorId(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getRegisteredPubkey(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::initializeQuorum(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::operatorToPubkeyHash(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::pubkeyHashToOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registerBLSPublicKey(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registerOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registryCoordinator(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::deregisterOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getApk(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getApkHashAtBlockNumberAndIndex(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getApkIndicesAtBlockNumber(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getApkUpdateAtIndex(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperatorFromPubkeyHash(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperatorId(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getRegisteredPubkey(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::initializeQuorum(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::operatorToPubkeyHash(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::pubkeyHashToOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registerBLSPublicKey(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registerOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registryCoordinator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`IBLSApkRegistry`](self) events. + pub enum IBLSApkRegistryEvents { + NewPubkeyRegistration(NewPubkeyRegistration), + OperatorAddedToQuorums(OperatorAddedToQuorums), + OperatorRemovedFromQuorums(OperatorRemovedFromQuorums), + } + #[automatically_derived] + impl IBLSApkRegistryEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 115u8, 162u8, 183u8, 251u8, 132u8, 71u8, 36u8, 185u8, 113u8, 128u8, 42u8, 233u8, + 177u8, 93u8, 176u8, 148u8, 212u8, 183u8, 25u8, 45u8, 249u8, 215u8, 53u8, 14u8, + 20u8, 235u8, 70u8, 107u8, 155u8, 34u8, 235u8, 78u8, + ], + [ + 227u8, 251u8, 102u8, 19u8, 175u8, 46u8, 137u8, 48u8, 207u8, 133u8, 212u8, 127u8, + 207u8, 109u8, 177u8, 1u8, 146u8, 34u8, 74u8, 100u8, 198u8, 203u8, 232u8, 2u8, 62u8, + 14u8, 238u8, 27u8, 163u8, 130u8, 128u8, 65u8, + ], + [ + 248u8, 67u8, 236u8, 213u8, 58u8, 86u8, 54u8, 117u8, 230u8, 33u8, 7u8, 190u8, 20u8, + 148u8, 253u8, 222u8, 74u8, 61u8, 73u8, 174u8, 237u8, 175u8, 141u8, 136u8, 198u8, + 22u8, 216u8, 83u8, 70u8, 227u8, 80u8, 14u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IBLSApkRegistryEvents { + const NAME: &'static str = "IBLSApkRegistryEvents"; + const COUNT: usize = 3usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::NewPubkeyRegistration) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorAddedToQuorums) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorRemovedFromQuorums) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for IBLSApkRegistryEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::NewPubkeyRegistration(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorAddedToQuorums(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorRemovedFromQuorums(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::NewPubkeyRegistration(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorAddedToQuorums(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorRemovedFromQuorums(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IBLSApkRegistry`](self) contract instance. + + See the [wrapper's documentation](`IBLSApkRegistryInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IBLSApkRegistryInstance { + IBLSApkRegistryInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + IBLSApkRegistryInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IBLSApkRegistryInstance::::deploy_builder(provider) + } + /**A [`IBLSApkRegistry`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IBLSApkRegistry`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IBLSApkRegistryInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IBLSApkRegistryInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IBLSApkRegistryInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IBLSApkRegistryInstance + { + /**Creates a new wrapper around an on-chain [`IBLSApkRegistry`](self) contract instance. + + See the [wrapper's documentation](`IBLSApkRegistryInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IBLSApkRegistryInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IBLSApkRegistryInstance { + IBLSApkRegistryInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IBLSApkRegistryInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`deregisterOperator`] function. + pub fn deregisterOperator( + &self, + operator: alloy::sol_types::private::Address, + quorumNumbers: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&deregisterOperatorCall { + operator, + quorumNumbers, + }) + } + ///Creates a new call builder for the [`getApk`] function. + pub fn getApk( + &self, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getApkCall { quorumNumber }) + } + ///Creates a new call builder for the [`getApkHashAtBlockNumberAndIndex`] function. + pub fn getApkHashAtBlockNumberAndIndex( + &self, + quorumNumber: u8, + blockNumber: u32, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getApkHashAtBlockNumberAndIndexCall { + quorumNumber, + blockNumber, + index, + }) + } + ///Creates a new call builder for the [`getApkIndicesAtBlockNumber`] function. + pub fn getApkIndicesAtBlockNumber( + &self, + quorumNumbers: alloy::sol_types::private::Bytes, + blockNumber: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getApkIndicesAtBlockNumberCall { + quorumNumbers, + blockNumber, + }) + } + ///Creates a new call builder for the [`getApkUpdateAtIndex`] function. + pub fn getApkUpdateAtIndex( + &self, + quorumNumber: u8, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getApkUpdateAtIndexCall { + quorumNumber, + index, + }) + } + ///Creates a new call builder for the [`getOperatorFromPubkeyHash`] function. + pub fn getOperatorFromPubkeyHash( + &self, + pubkeyHash: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorFromPubkeyHashCall { pubkeyHash }) + } + ///Creates a new call builder for the [`getOperatorId`] function. + pub fn getOperatorId( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorIdCall { operator }) + } + ///Creates a new call builder for the [`getRegisteredPubkey`] function. + pub fn getRegisteredPubkey( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getRegisteredPubkeyCall { operator }) + } + ///Creates a new call builder for the [`initializeQuorum`] function. + pub fn initializeQuorum( + &self, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initializeQuorumCall { quorumNumber }) + } + ///Creates a new call builder for the [`operatorToPubkeyHash`] function. + pub fn operatorToPubkeyHash( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&operatorToPubkeyHashCall { operator }) + } + ///Creates a new call builder for the [`pubkeyHashToOperator`] function. + pub fn pubkeyHashToOperator( + &self, + pubkeyHash: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&pubkeyHashToOperatorCall { pubkeyHash }) + } + ///Creates a new call builder for the [`registerBLSPublicKey`] function. + pub fn registerBLSPublicKey( + &self, + operator: alloy::sol_types::private::Address, + params: ::RustType, + pubkeyRegistrationMessageHash: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterBLSPublicKeyCall { + operator, + params, + pubkeyRegistrationMessageHash, + }) + } + ///Creates a new call builder for the [`registerOperator`] function. + pub fn registerOperator( + &self, + operator: alloy::sol_types::private::Address, + quorumNumbers: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterOperatorCall { + operator, + quorumNumbers, + }) + } + ///Creates a new call builder for the [`registryCoordinator`] function. + pub fn registryCoordinator( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®istryCoordinatorCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IBLSApkRegistryInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`NewPubkeyRegistration`] event. + pub fn NewPubkeyRegistration_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorAddedToQuorums`] event. + pub fn OperatorAddedToQuorums_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorRemovedFromQuorums`] event. + pub fn OperatorRemovedFromQuorums_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/iblssignaturechecker.rs b/crates/utils/src/iblssignaturechecker.rs new file mode 100644 index 00000000..504fa889 --- /dev/null +++ b/crates/utils/src/iblssignaturechecker.rs @@ -0,0 +1,2488 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library BN254 { + struct G1Point { uint256 X; uint256 Y; } + struct G2Point { uint256[2] X; uint256[2] Y; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod BN254 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct G1Point { uint256 X; uint256 Y; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct G1Point { + pub X: alloy::sol_types::private::primitives::aliases::U256, + pub Y: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: G1Point) -> Self { + (value.X, value.Y) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for G1Point { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + X: tuple.0, + Y: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for G1Point { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for G1Point { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.X, + ), + as alloy_sol_types::SolType>::tokenize( + &self.Y, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for G1Point { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for G1Point { + const NAME: &'static str = "G1Point"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 X,uint256 Y)") + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word(&self.X) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.Y) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for G1Point { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.X) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.Y) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.X, out); + as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.Y, out); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct G2Point { uint256[2] X; uint256[2] Y; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct G2Point { + pub X: [alloy::sol_types::private::primitives::aliases::U256; 2usize], + pub Y: [alloy::sol_types::private::primitives::aliases::U256; 2usize], + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedArray, 2usize>, + alloy::sol_types::sol_data::FixedArray, 2usize>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + [alloy::sol_types::private::primitives::aliases::U256; 2usize], + [alloy::sol_types::private::primitives::aliases::U256; 2usize], + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: G2Point) -> Self { + (value.X, value.Y) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for G2Point { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + X: tuple.0, + Y: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for G2Point { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for G2Point { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + , + 2usize, + > as alloy_sol_types::SolType>::tokenize(&self.X), + , + 2usize, + > as alloy_sol_types::SolType>::tokenize(&self.Y), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for G2Point { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for G2Point { + const NAME: &'static str = "G2Point"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed("G2Point(uint256[2] X,uint256[2] Y)") + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + , + 2usize, + > as alloy_sol_types::SolType>::eip712_data_word(&self.X) + .0, + , + 2usize, + > as alloy_sol_types::SolType>::eip712_data_word(&self.Y) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for G2Point { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + , + 2usize, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.X + ) + + , + 2usize, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.Y + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + , + 2usize, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.X, out + ); + , + 2usize, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.Y, out + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance. + + See the [wrapper's documentation](`BN254Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> BN254Instance { + BN254Instance::::new(address, provider) + } + /**A [`BN254`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`BN254`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct BN254Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for BN254Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("BN254Instance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BN254Instance + { + /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance. + + See the [wrapper's documentation](`BN254Instance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl BN254Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> BN254Instance { + BN254Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BN254Instance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BN254Instance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library BN254 { + struct G1Point { + uint256 X; + uint256 Y; + } + struct G2Point { + uint256[2] X; + uint256[2] Y; + } +} + +interface IBLSSignatureChecker { + struct NonSignerStakesAndSignature { + uint32[] nonSignerQuorumBitmapIndices; + BN254.G1Point[] nonSignerPubkeys; + BN254.G1Point[] quorumApks; + BN254.G2Point apkG2; + BN254.G1Point sigma; + uint32[] quorumApkIndices; + uint32[] totalStakeIndices; + uint32[][] nonSignerStakeIndices; + } + struct QuorumStakeTotals { + uint96[] signedStakeForQuorum; + uint96[] totalStakeForQuorum; + } + + event StaleStakesForbiddenUpdate(bool value); + + function blsApkRegistry() external view returns (address); + function checkSignatures(bytes32 msgHash, bytes memory quorumNumbers, uint32 referenceBlockNumber, NonSignerStakesAndSignature memory nonSignerStakesAndSignature) external view returns (QuorumStakeTotals memory, bytes32); + function delegation() external view returns (address); + function registryCoordinator() external view returns (address); + function stakeRegistry() external view returns (address); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "blsApkRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IBLSApkRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "checkSignatures", + "inputs": [ + { + "name": "msgHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "referenceBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "nonSignerStakesAndSignature", + "type": "tuple", + "internalType": "struct IBLSSignatureChecker.NonSignerStakesAndSignature", + "components": [ + { + "name": "nonSignerQuorumBitmapIndices", + "type": "uint32[]", + "internalType": "uint32[]" + }, + { + "name": "nonSignerPubkeys", + "type": "tuple[]", + "internalType": "struct BN254.G1Point[]", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "quorumApks", + "type": "tuple[]", + "internalType": "struct BN254.G1Point[]", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "apkG2", + "type": "tuple", + "internalType": "struct BN254.G2Point", + "components": [ + { + "name": "X", + "type": "uint256[2]", + "internalType": "uint256[2]" + }, + { + "name": "Y", + "type": "uint256[2]", + "internalType": "uint256[2]" + } + ] + }, + { + "name": "sigma", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "quorumApkIndices", + "type": "uint32[]", + "internalType": "uint32[]" + }, + { + "name": "totalStakeIndices", + "type": "uint32[]", + "internalType": "uint32[]" + }, + { + "name": "nonSignerStakeIndices", + "type": "uint32[][]", + "internalType": "uint32[][]" + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IBLSSignatureChecker.QuorumStakeTotals", + "components": [ + { + "name": "signedStakeForQuorum", + "type": "uint96[]", + "internalType": "uint96[]" + }, + { + "name": "totalStakeForQuorum", + "type": "uint96[]", + "internalType": "uint96[]" + } + ] + }, + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "delegation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IDelegationManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registryCoordinator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IRegistryCoordinator" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "stakeRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStakeRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "StaleStakesForbiddenUpdate", + "inputs": [ + { + "name": "value", + "type": "bool", + "indexed": false, + "internalType": "bool" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IBLSSignatureChecker { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**```solidity + struct NonSignerStakesAndSignature { uint32[] nonSignerQuorumBitmapIndices; BN254.G1Point[] nonSignerPubkeys; BN254.G1Point[] quorumApks; BN254.G2Point apkG2; BN254.G1Point sigma; uint32[] quorumApkIndices; uint32[] totalStakeIndices; uint32[][] nonSignerStakeIndices; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct NonSignerStakesAndSignature { + pub nonSignerQuorumBitmapIndices: alloy::sol_types::private::Vec, + pub nonSignerPubkeys: + alloy::sol_types::private::Vec<::RustType>, + pub quorumApks: + alloy::sol_types::private::Vec<::RustType>, + pub apkG2: ::RustType, + pub sigma: ::RustType, + pub quorumApkIndices: alloy::sol_types::private::Vec, + pub totalStakeIndices: alloy::sol_types::private::Vec, + pub nonSignerStakeIndices: + alloy::sol_types::private::Vec>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array, + BN254::G2Point, + BN254::G1Point, + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array>, + >, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec<::RustType>, + alloy::sol_types::private::Vec<::RustType>, + ::RustType, + ::RustType, + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: NonSignerStakesAndSignature) -> Self { + ( + value.nonSignerQuorumBitmapIndices, + value.nonSignerPubkeys, + value.quorumApks, + value.apkG2, + value.sigma, + value.quorumApkIndices, + value.totalStakeIndices, + value.nonSignerStakeIndices, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for NonSignerStakesAndSignature { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + nonSignerQuorumBitmapIndices: tuple.0, + nonSignerPubkeys: tuple.1, + quorumApks: tuple.2, + apkG2: tuple.3, + sigma: tuple.4, + quorumApkIndices: tuple.5, + totalStakeIndices: tuple.6, + nonSignerStakeIndices: tuple.7, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for NonSignerStakesAndSignature { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for NonSignerStakesAndSignature { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + , + > as alloy_sol_types::SolType>::tokenize( + &self.nonSignerQuorumBitmapIndices, + ), + as alloy_sol_types::SolType>::tokenize(&self.nonSignerPubkeys), + as alloy_sol_types::SolType>::tokenize(&self.quorumApks), + ::tokenize(&self.apkG2), + ::tokenize(&self.sigma), + , + > as alloy_sol_types::SolType>::tokenize(&self.quorumApkIndices), + , + > as alloy_sol_types::SolType>::tokenize(&self.totalStakeIndices), + , + >, + > as alloy_sol_types::SolType>::tokenize(&self.nonSignerStakeIndices), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for NonSignerStakesAndSignature { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for NonSignerStakesAndSignature { + const NAME: &'static str = "NonSignerStakesAndSignature"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "NonSignerStakesAndSignature(uint32[] nonSignerQuorumBitmapIndices,BN254.G1Point[] nonSignerPubkeys,BN254.G1Point[] quorumApks,BN254.G2Point apkG2,BN254.G1Point sigma,uint32[] quorumApkIndices,uint32[] totalStakeIndices,uint32[][] nonSignerStakeIndices)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + let mut components = alloy_sol_types::private::Vec::with_capacity(4); + components.push(::eip712_root_type()); + components + .extend(::eip712_components()); + components.push(::eip712_root_type()); + components + .extend(::eip712_components()); + components.push(::eip712_root_type()); + components + .extend(::eip712_components()); + components.push(::eip712_root_type()); + components + .extend(::eip712_components()); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + , + > as alloy_sol_types::SolType>::eip712_data_word( + &self.nonSignerQuorumBitmapIndices, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.nonSignerPubkeys, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.quorumApks) + .0, + ::eip712_data_word( + &self.apkG2, + ) + .0, + ::eip712_data_word( + &self.sigma, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word( + &self.quorumApkIndices, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word( + &self.totalStakeIndices, + ) + .0, + , + >, + > as alloy_sol_types::SolType>::eip712_data_word( + &self.nonSignerStakeIndices, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for NonSignerStakesAndSignature { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.nonSignerQuorumBitmapIndices, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.nonSignerPubkeys, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.quorumApks, + ) + + ::topic_preimage_length( + &rust.apkG2, + ) + + ::topic_preimage_length( + &rust.sigma, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.quorumApkIndices, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.totalStakeIndices, + ) + + , + >, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.nonSignerStakeIndices, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonSignerQuorumBitmapIndices, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonSignerPubkeys, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.quorumApks, + out, + ); + ::encode_topic_preimage( + &rust.apkG2, + out, + ); + ::encode_topic_preimage( + &rust.sigma, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.quorumApkIndices, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.totalStakeIndices, + out, + ); + >, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonSignerStakeIndices, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct QuorumStakeTotals { uint96[] signedStakeForQuorum; uint96[] totalStakeForQuorum; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct QuorumStakeTotals { + pub signedStakeForQuorum: + alloy::sol_types::private::Vec, + pub totalStakeForQuorum: + alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: QuorumStakeTotals) -> Self { + (value.signedStakeForQuorum, value.totalStakeForQuorum) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for QuorumStakeTotals { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + signedStakeForQuorum: tuple.0, + totalStakeForQuorum: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for QuorumStakeTotals { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for QuorumStakeTotals { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + , + > as alloy_sol_types::SolType>::tokenize(&self.signedStakeForQuorum), + , + > as alloy_sol_types::SolType>::tokenize(&self.totalStakeForQuorum), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for QuorumStakeTotals { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for QuorumStakeTotals { + const NAME: &'static str = "QuorumStakeTotals"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "QuorumStakeTotals(uint96[] signedStakeForQuorum,uint96[] totalStakeForQuorum)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + , + > as alloy_sol_types::SolType>::eip712_data_word( + &self.signedStakeForQuorum, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word( + &self.totalStakeForQuorum, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for QuorumStakeTotals { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.signedStakeForQuorum, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.totalStakeForQuorum, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.signedStakeForQuorum, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.totalStakeForQuorum, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**Event with signature `StaleStakesForbiddenUpdate(bool)` and selector `0x40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc`. + ```solidity + event StaleStakesForbiddenUpdate(bool value); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct StaleStakesForbiddenUpdate { + #[allow(missing_docs)] + pub value: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for StaleStakesForbiddenUpdate { + type DataTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "StaleStakesForbiddenUpdate(bool)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 64u8, 228u8, 237u8, 136u8, 10u8, 41u8, 224u8, 246u8, 221u8, 206u8, 48u8, 116u8, + 87u8, 251u8, 117u8, 205u8, 223u8, 79u8, 238u8, 247u8, 211u8, 236u8, 176u8, + 48u8, 27u8, 253u8, 244u8, 151u8, 106u8, 14u8, 45u8, 252u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { value: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.value, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for StaleStakesForbiddenUpdate { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&StaleStakesForbiddenUpdate> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &StaleStakesForbiddenUpdate) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `blsApkRegistry()` and selector `0x5df45946`. + ```solidity + function blsApkRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct blsApkRegistryCall {} + ///Container type for the return parameters of the [`blsApkRegistry()`](blsApkRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct blsApkRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: blsApkRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for blsApkRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: blsApkRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for blsApkRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for blsApkRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = blsApkRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "blsApkRegistry()"; + const SELECTOR: [u8; 4] = [93u8, 244u8, 89u8, 70u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))` and selector `0x6efb4636`. + ```solidity + function checkSignatures(bytes32 msgHash, bytes memory quorumNumbers, uint32 referenceBlockNumber, NonSignerStakesAndSignature memory nonSignerStakesAndSignature) external view returns (QuorumStakeTotals memory, bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct checkSignaturesCall { + pub msgHash: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumbers: alloy::sol_types::private::Bytes, + pub referenceBlockNumber: u32, + pub nonSignerStakesAndSignature: + ::RustType, + } + ///Container type for the return parameters of the [`checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))`](checkSignaturesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct checkSignaturesReturn { + pub _0: ::RustType, + pub _1: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Uint<32>, + NonSignerStakesAndSignature, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::Bytes, + u32, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: checkSignaturesCall) -> Self { + ( + value.msgHash, + value.quorumNumbers, + value.referenceBlockNumber, + value.nonSignerStakesAndSignature, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for checkSignaturesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + msgHash: tuple.0, + quorumNumbers: tuple.1, + referenceBlockNumber: tuple.2, + nonSignerStakesAndSignature: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + QuorumStakeTotals, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: checkSignaturesReturn) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for checkSignaturesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for checkSignaturesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Uint<32>, + NonSignerStakesAndSignature, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = checkSignaturesReturn; + type ReturnTuple<'a> = ( + QuorumStakeTotals, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))"; + const SELECTOR: [u8; 4] = [110u8, 251u8, 70u8, 54u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.msgHash), + ::tokenize( + &self.quorumNumbers, + ), + as alloy_sol_types::SolType>::tokenize(&self.referenceBlockNumber), + ::tokenize( + &self.nonSignerStakesAndSignature, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `delegation()` and selector `0xdf5cf723`. + ```solidity + function delegation() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegationCall {} + ///Container type for the return parameters of the [`delegation()`](delegationCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for delegationCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = delegationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "delegation()"; + const SELECTOR: [u8; 4] = [223u8, 92u8, 247u8, 35u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registryCoordinator()` and selector `0x6d14a987`. + ```solidity + function registryCoordinator() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registryCoordinatorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registryCoordinatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registryCoordinator()"; + const SELECTOR: [u8; 4] = [109u8, 20u8, 169u8, 135u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `stakeRegistry()` and selector `0x68304835`. + ```solidity + function stakeRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakeRegistryCall {} + ///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakeRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakeRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakeRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakeRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakeRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for stakeRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = stakeRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "stakeRegistry()"; + const SELECTOR: [u8; 4] = [104u8, 48u8, 72u8, 53u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IBLSSignatureChecker`](self) function calls. + pub enum IBLSSignatureCheckerCalls { + blsApkRegistry(blsApkRegistryCall), + checkSignatures(checkSignaturesCall), + delegation(delegationCall), + registryCoordinator(registryCoordinatorCall), + stakeRegistry(stakeRegistryCall), + } + #[automatically_derived] + impl IBLSSignatureCheckerCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [93u8, 244u8, 89u8, 70u8], + [104u8, 48u8, 72u8, 53u8], + [109u8, 20u8, 169u8, 135u8], + [110u8, 251u8, 70u8, 54u8], + [223u8, 92u8, 247u8, 35u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IBLSSignatureCheckerCalls { + const NAME: &'static str = "IBLSSignatureCheckerCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 5usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::blsApkRegistry(_) => { + ::SELECTOR + } + Self::checkSignatures(_) => { + ::SELECTOR + } + Self::delegation(_) => ::SELECTOR, + Self::registryCoordinator(_) => { + ::SELECTOR + } + Self::stakeRegistry(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn blsApkRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IBLSSignatureCheckerCalls::blsApkRegistry) + } + blsApkRegistry + }, + { + fn stakeRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IBLSSignatureCheckerCalls::stakeRegistry) + } + stakeRegistry + }, + { + fn registryCoordinator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IBLSSignatureCheckerCalls::registryCoordinator) + } + registryCoordinator + }, + { + fn checkSignatures( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IBLSSignatureCheckerCalls::checkSignatures) + } + checkSignatures + }, + { + fn delegation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IBLSSignatureCheckerCalls::delegation) + } + delegation + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::blsApkRegistry(inner) => { + ::abi_encoded_size(inner) + } + Self::checkSignatures(inner) => { + ::abi_encoded_size(inner) + } + Self::delegation(inner) => { + ::abi_encoded_size(inner) + } + Self::registryCoordinator(inner) => { + ::abi_encoded_size(inner) + } + Self::stakeRegistry(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::blsApkRegistry(inner) => { + ::abi_encode_raw(inner, out) + } + Self::checkSignatures(inner) => { + ::abi_encode_raw(inner, out) + } + Self::delegation(inner) => { + ::abi_encode_raw(inner, out) + } + Self::registryCoordinator(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::stakeRegistry(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`IBLSSignatureChecker`](self) events. + pub enum IBLSSignatureCheckerEvents { + StaleStakesForbiddenUpdate(StaleStakesForbiddenUpdate), + } + #[automatically_derived] + impl IBLSSignatureCheckerEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[[ + 64u8, 228u8, 237u8, 136u8, 10u8, 41u8, 224u8, 246u8, 221u8, 206u8, 48u8, 116u8, 87u8, + 251u8, 117u8, 205u8, 223u8, 79u8, 238u8, 247u8, 211u8, 236u8, 176u8, 48u8, 27u8, 253u8, + 244u8, 151u8, 106u8, 14u8, 45u8, 252u8, + ]]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IBLSSignatureCheckerEvents { + const NAME: &'static str = "IBLSSignatureCheckerEvents"; + const COUNT: usize = 1usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::StaleStakesForbiddenUpdate) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for IBLSSignatureCheckerEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::StaleStakesForbiddenUpdate(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::StaleStakesForbiddenUpdate(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IBLSSignatureChecker`](self) contract instance. + + See the [wrapper's documentation](`IBLSSignatureCheckerInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IBLSSignatureCheckerInstance { + IBLSSignatureCheckerInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + IBLSSignatureCheckerInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IBLSSignatureCheckerInstance::::deploy_builder(provider) + } + /**A [`IBLSSignatureChecker`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IBLSSignatureChecker`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IBLSSignatureCheckerInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IBLSSignatureCheckerInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IBLSSignatureCheckerInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IBLSSignatureCheckerInstance + { + /**Creates a new wrapper around an on-chain [`IBLSSignatureChecker`](self) contract instance. + + See the [wrapper's documentation](`IBLSSignatureCheckerInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IBLSSignatureCheckerInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IBLSSignatureCheckerInstance { + IBLSSignatureCheckerInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IBLSSignatureCheckerInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`blsApkRegistry`] function. + pub fn blsApkRegistry( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&blsApkRegistryCall {}) + } + ///Creates a new call builder for the [`checkSignatures`] function. + pub fn checkSignatures( + &self, + msgHash: alloy::sol_types::private::FixedBytes<32>, + quorumNumbers: alloy::sol_types::private::Bytes, + referenceBlockNumber: u32, + nonSignerStakesAndSignature: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&checkSignaturesCall { + msgHash, + quorumNumbers, + referenceBlockNumber, + nonSignerStakesAndSignature, + }) + } + ///Creates a new call builder for the [`delegation`] function. + pub fn delegation(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&delegationCall {}) + } + ///Creates a new call builder for the [`registryCoordinator`] function. + pub fn registryCoordinator( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®istryCoordinatorCall {}) + } + ///Creates a new call builder for the [`stakeRegistry`] function. + pub fn stakeRegistry(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&stakeRegistryCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IBLSSignatureCheckerInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`StaleStakesForbiddenUpdate`] event. + pub fn StaleStakesForbiddenUpdate_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/idelegationmanager.rs b/crates/utils/src/idelegationmanager.rs new file mode 100644 index 00000000..cf993d57 --- /dev/null +++ b/crates/utils/src/idelegationmanager.rs @@ -0,0 +1,9646 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library ISignatureUtils { + struct SignatureWithExpiry { bytes signature; uint256 expiry; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ISignatureUtils { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct SignatureWithExpiry { bytes signature; uint256 expiry; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SignatureWithExpiry { + pub signature: alloy::sol_types::private::Bytes, + pub expiry: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: SignatureWithExpiry) -> Self { + (value.signature, value.expiry) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for SignatureWithExpiry { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + signature: tuple.0, + expiry: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for SignatureWithExpiry { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for SignatureWithExpiry { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.signature, + ), + as alloy_sol_types::SolType>::tokenize( + &self.expiry, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for SignatureWithExpiry { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for SignatureWithExpiry { + const NAME: &'static str = "SignatureWithExpiry"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "SignatureWithExpiry(bytes signature,uint256 expiry)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.signature, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.expiry) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for SignatureWithExpiry { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.signature, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.expiry, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.signature, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.expiry, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ISignatureUtilsInstance { + ISignatureUtilsInstance::::new(address, provider) + } + /**A [`ISignatureUtils`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ISignatureUtils`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ISignatureUtilsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ISignatureUtilsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ISignatureUtilsInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ISignatureUtilsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ISignatureUtilsInstance { + ISignatureUtilsInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library ISignatureUtils { + struct SignatureWithExpiry { + bytes signature; + uint256 expiry; + } +} + +interface IDelegationManager { + struct OperatorDetails { + address __deprecated_earningsReceiver; + address delegationApprover; + uint32 stakerOptOutWindowBlocks; + } + struct QueuedWithdrawalParams { + address[] strategies; + uint256[] shares; + address withdrawer; + } + struct Withdrawal { + address staker; + address delegatedTo; + address withdrawer; + uint256 nonce; + uint32 startBlock; + address[] strategies; + uint256[] shares; + } + + event MinWithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue); + event OperatorDetailsModified(address indexed operator, OperatorDetails newOperatorDetails); + event OperatorMetadataURIUpdated(address indexed operator, string metadataURI); + event OperatorRegistered(address indexed operator, OperatorDetails operatorDetails); + event OperatorSharesDecreased(address indexed operator, address staker, address strategy, uint256 shares); + event OperatorSharesIncreased(address indexed operator, address staker, address strategy, uint256 shares); + event StakerDelegated(address indexed staker, address indexed operator); + event StakerForceUndelegated(address indexed staker, address indexed operator); + event StakerUndelegated(address indexed staker, address indexed operator); + event StrategyWithdrawalDelayBlocksSet(address strategy, uint256 previousValue, uint256 newValue); + event WithdrawalCompleted(bytes32 withdrawalRoot); + event WithdrawalQueued(bytes32 withdrawalRoot, Withdrawal withdrawal); + + function DELEGATION_APPROVAL_TYPEHASH() external view returns (bytes32); + function DOMAIN_TYPEHASH() external view returns (bytes32); + function STAKER_DELEGATION_TYPEHASH() external view returns (bytes32); + function beaconChainETHStrategy() external view returns (address); + function calculateCurrentStakerDelegationDigestHash(address staker, address operator, uint256 expiry) external view returns (bytes32); + function calculateDelegationApprovalDigestHash(address staker, address operator, address _delegationApprover, bytes32 approverSalt, uint256 expiry) external view returns (bytes32); + function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) external view returns (bytes32); + function calculateWithdrawalRoot(Withdrawal memory withdrawal) external pure returns (bytes32); + function completeQueuedWithdrawal(Withdrawal memory withdrawal, address[] memory tokens, uint256 middlewareTimesIndex, bool receiveAsTokens) external; + function completeQueuedWithdrawals(Withdrawal[] memory withdrawals, address[][] memory tokens, uint256[] memory middlewareTimesIndexes, bool[] memory receiveAsTokens) external; + function cumulativeWithdrawalsQueued(address staker) external view returns (uint256); + function decreaseDelegatedShares(address staker, address strategy, uint256 shares) external; + function delegateTo(address operator, ISignatureUtils.SignatureWithExpiry memory approverSignatureAndExpiry, bytes32 approverSalt) external; + function delegateToBySignature(address staker, address operator, ISignatureUtils.SignatureWithExpiry memory stakerSignatureAndExpiry, ISignatureUtils.SignatureWithExpiry memory approverSignatureAndExpiry, bytes32 approverSalt) external; + function delegatedTo(address staker) external view returns (address); + function delegationApprover(address operator) external view returns (address); + function delegationApproverSaltIsSpent(address _delegationApprover, bytes32 salt) external view returns (bool); + function domainSeparator() external view returns (bytes32); + function getOperatorShares(address operator, address[] memory strategies) external view returns (uint256[] memory); + function getWithdrawalDelay(address[] memory strategies) external view returns (uint256); + function increaseDelegatedShares(address staker, address strategy, uint256 shares) external; + function isDelegated(address staker) external view returns (bool); + function isOperator(address operator) external view returns (bool); + function minWithdrawalDelayBlocks() external view returns (uint256); + function modifyOperatorDetails(OperatorDetails memory newOperatorDetails) external; + function operatorDetails(address operator) external view returns (OperatorDetails memory); + function operatorShares(address operator, address strategy) external view returns (uint256); + function queueWithdrawals(QueuedWithdrawalParams[] memory queuedWithdrawalParams) external returns (bytes32[] memory); + function registerAsOperator(OperatorDetails memory registeringOperatorDetails, string memory metadataURI) external; + function stakerNonce(address staker) external view returns (uint256); + function stakerOptOutWindowBlocks(address operator) external view returns (uint256); + function strategyWithdrawalDelayBlocks(address strategy) external view returns (uint256); + function undelegate(address staker) external returns (bytes32[] memory withdrawalRoot); + function updateOperatorMetadataURI(string memory metadataURI) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "DELEGATION_APPROVAL_TYPEHASH", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "DOMAIN_TYPEHASH", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "STAKER_DELEGATION_TYPEHASH", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "beaconChainETHStrategy", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStrategy" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "calculateCurrentStakerDelegationDigestHash", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "calculateDelegationApprovalDigestHash", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "_delegationApprover", + "type": "address", + "internalType": "address" + }, + { + "name": "approverSalt", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "calculateStakerDelegationDigestHash", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "_stakerNonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "calculateWithdrawalRoot", + "inputs": [ + { + "name": "withdrawal", + "type": "tuple", + "internalType": "struct IDelegationManager.Withdrawal", + "components": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "delegatedTo", + "type": "address", + "internalType": "address" + }, + { + "name": "withdrawer", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "startBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "completeQueuedWithdrawal", + "inputs": [ + { + "name": "withdrawal", + "type": "tuple", + "internalType": "struct IDelegationManager.Withdrawal", + "components": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "delegatedTo", + "type": "address", + "internalType": "address" + }, + { + "name": "withdrawer", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "startBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + } + ] + }, + { + "name": "tokens", + "type": "address[]", + "internalType": "contract IERC20[]" + }, + { + "name": "middlewareTimesIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "receiveAsTokens", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "completeQueuedWithdrawals", + "inputs": [ + { + "name": "withdrawals", + "type": "tuple[]", + "internalType": "struct IDelegationManager.Withdrawal[]", + "components": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "delegatedTo", + "type": "address", + "internalType": "address" + }, + { + "name": "withdrawer", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "startBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + } + ] + }, + { + "name": "tokens", + "type": "address[][]", + "internalType": "contract IERC20[][]" + }, + { + "name": "middlewareTimesIndexes", + "type": "uint256[]", + "internalType": "uint256[]" + }, + { + "name": "receiveAsTokens", + "type": "bool[]", + "internalType": "bool[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "cumulativeWithdrawalsQueued", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "decreaseDelegatedShares", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "delegateTo", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "approverSignatureAndExpiry", + "type": "tuple", + "internalType": "struct ISignatureUtils.SignatureWithExpiry", + "components": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "approverSalt", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "delegateToBySignature", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "stakerSignatureAndExpiry", + "type": "tuple", + "internalType": "struct ISignatureUtils.SignatureWithExpiry", + "components": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "approverSignatureAndExpiry", + "type": "tuple", + "internalType": "struct ISignatureUtils.SignatureWithExpiry", + "components": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "approverSalt", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "delegatedTo", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "delegationApprover", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "delegationApproverSaltIsSpent", + "inputs": [ + { + "name": "_delegationApprover", + "type": "address", + "internalType": "address" + }, + { + "name": "salt", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "domainSeparator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorShares", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getWithdrawalDelay", + "inputs": [ + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "increaseDelegatedShares", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "isDelegated", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isOperator", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "minWithdrawalDelayBlocks", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "modifyOperatorDetails", + "inputs": [ + { + "name": "newOperatorDetails", + "type": "tuple", + "internalType": "struct IDelegationManager.OperatorDetails", + "components": [ + { + "name": "__deprecated_earningsReceiver", + "type": "address", + "internalType": "address" + }, + { + "name": "delegationApprover", + "type": "address", + "internalType": "address" + }, + { + "name": "stakerOptOutWindowBlocks", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "operatorDetails", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IDelegationManager.OperatorDetails", + "components": [ + { + "name": "__deprecated_earningsReceiver", + "type": "address", + "internalType": "address" + }, + { + "name": "delegationApprover", + "type": "address", + "internalType": "address" + }, + { + "name": "stakerOptOutWindowBlocks", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "operatorShares", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "queueWithdrawals", + "inputs": [ + { + "name": "queuedWithdrawalParams", + "type": "tuple[]", + "internalType": "struct IDelegationManager.QueuedWithdrawalParams[]", + "components": [ + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + }, + { + "name": "withdrawer", + "type": "address", + "internalType": "address" + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32[]", + "internalType": "bytes32[]" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registerAsOperator", + "inputs": [ + { + "name": "registeringOperatorDetails", + "type": "tuple", + "internalType": "struct IDelegationManager.OperatorDetails", + "components": [ + { + "name": "__deprecated_earningsReceiver", + "type": "address", + "internalType": "address" + }, + { + "name": "delegationApprover", + "type": "address", + "internalType": "address" + }, + { + "name": "stakerOptOutWindowBlocks", + "type": "uint32", + "internalType": "uint32" + } + ] + }, + { + "name": "metadataURI", + "type": "string", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "stakerNonce", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "stakerOptOutWindowBlocks", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "strategyWithdrawalDelayBlocks", + "inputs": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "undelegate", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "withdrawalRoot", + "type": "bytes32[]", + "internalType": "bytes32[]" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateOperatorMetadataURI", + "inputs": [ + { + "name": "metadataURI", + "type": "string", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "MinWithdrawalDelayBlocksSet", + "inputs": [ + { + "name": "previousValue", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "newValue", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorDetailsModified", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOperatorDetails", + "type": "tuple", + "indexed": false, + "internalType": "struct IDelegationManager.OperatorDetails", + "components": [ + { + "name": "__deprecated_earningsReceiver", + "type": "address", + "internalType": "address" + }, + { + "name": "delegationApprover", + "type": "address", + "internalType": "address" + }, + { + "name": "stakerOptOutWindowBlocks", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorMetadataURIUpdated", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "metadataURI", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorRegistered", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "operatorDetails", + "type": "tuple", + "indexed": false, + "internalType": "struct IDelegationManager.OperatorDetails", + "components": [ + { + "name": "__deprecated_earningsReceiver", + "type": "address", + "internalType": "address" + }, + { + "name": "delegationApprover", + "type": "address", + "internalType": "address" + }, + { + "name": "stakerOptOutWindowBlocks", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorSharesDecreased", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "staker", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + }, + { + "name": "shares", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorSharesIncreased", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "staker", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + }, + { + "name": "shares", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StakerDelegated", + "inputs": [ + { + "name": "staker", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StakerForceUndelegated", + "inputs": [ + { + "name": "staker", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StakerUndelegated", + "inputs": [ + { + "name": "staker", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StrategyWithdrawalDelayBlocksSet", + "inputs": [ + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + }, + { + "name": "previousValue", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "newValue", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "WithdrawalCompleted", + "inputs": [ + { + "name": "withdrawalRoot", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "WithdrawalQueued", + "inputs": [ + { + "name": "withdrawalRoot", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "withdrawal", + "type": "tuple", + "indexed": false, + "internalType": "struct IDelegationManager.Withdrawal", + "components": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "delegatedTo", + "type": "address", + "internalType": "address" + }, + { + "name": "withdrawer", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "startBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + } + ] + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IDelegationManager { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**```solidity + struct OperatorDetails { address __deprecated_earningsReceiver; address delegationApprover; uint32 stakerOptOutWindowBlocks; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OperatorDetails { + pub __deprecated_earningsReceiver: alloy::sol_types::private::Address, + pub delegationApprover: alloy::sol_types::private::Address, + pub stakerOptOutWindowBlocks: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + u32, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OperatorDetails) -> Self { + ( + value.__deprecated_earningsReceiver, + value.delegationApprover, + value.stakerOptOutWindowBlocks, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OperatorDetails { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + __deprecated_earningsReceiver: tuple.0, + delegationApprover: tuple.1, + stakerOptOutWindowBlocks: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OperatorDetails { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OperatorDetails { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.__deprecated_earningsReceiver, + ), + ::tokenize( + &self.delegationApprover, + ), + as alloy_sol_types::SolType>::tokenize( + &self.stakerOptOutWindowBlocks, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OperatorDetails { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OperatorDetails { + const NAME: &'static str = "OperatorDetails"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OperatorDetails(address __deprecated_earningsReceiver,address delegationApprover,uint32 stakerOptOutWindowBlocks)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.__deprecated_earningsReceiver, + ) + .0, + ::eip712_data_word( + &self.delegationApprover, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.stakerOptOutWindowBlocks, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OperatorDetails { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.__deprecated_earningsReceiver, + ) + + ::topic_preimage_length( + &rust.delegationApprover, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.stakerOptOutWindowBlocks, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.__deprecated_earningsReceiver, + out, + ); + ::encode_topic_preimage( + &rust.delegationApprover, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.stakerOptOutWindowBlocks, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct QueuedWithdrawalParams { address[] strategies; uint256[] shares; address withdrawer; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct QueuedWithdrawalParams { + pub strategies: alloy::sol_types::private::Vec, + pub shares: + alloy::sol_types::private::Vec, + pub withdrawer: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: QueuedWithdrawalParams) -> Self { + (value.strategies, value.shares, value.withdrawer) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for QueuedWithdrawalParams { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategies: tuple.0, + shares: tuple.1, + withdrawer: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for QueuedWithdrawalParams { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for QueuedWithdrawalParams { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.strategies), + , + > as alloy_sol_types::SolType>::tokenize(&self.shares), + ::tokenize( + &self.withdrawer, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for QueuedWithdrawalParams { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for QueuedWithdrawalParams { + const NAME: &'static str = "QueuedWithdrawalParams"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "QueuedWithdrawalParams(address[] strategies,uint256[] shares,address withdrawer)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word(&self.strategies) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word(&self.shares) + .0, + ::eip712_data_word( + &self.withdrawer, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for QueuedWithdrawalParams { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.strategies, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.shares, + ) + + ::topic_preimage_length( + &rust.withdrawer, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.strategies, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.shares, + out, + ); + ::encode_topic_preimage( + &rust.withdrawer, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct Withdrawal { address staker; address delegatedTo; address withdrawer; uint256 nonce; uint32 startBlock; address[] strategies; uint256[] shares; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct Withdrawal { + pub staker: alloy::sol_types::private::Address, + pub delegatedTo: alloy::sol_types::private::Address, + pub withdrawer: alloy::sol_types::private::Address, + pub nonce: alloy::sol_types::private::primitives::aliases::U256, + pub startBlock: u32, + pub strategies: alloy::sol_types::private::Vec, + pub shares: + alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + u32, + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: Withdrawal) -> Self { + ( + value.staker, + value.delegatedTo, + value.withdrawer, + value.nonce, + value.startBlock, + value.strategies, + value.shares, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for Withdrawal { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + staker: tuple.0, + delegatedTo: tuple.1, + withdrawer: tuple.2, + nonce: tuple.3, + startBlock: tuple.4, + strategies: tuple.5, + shares: tuple.6, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for Withdrawal { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for Withdrawal { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.staker, + ), + ::tokenize( + &self.delegatedTo, + ), + ::tokenize( + &self.withdrawer, + ), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + as alloy_sol_types::SolType>::tokenize(&self.startBlock), + as alloy_sol_types::SolType>::tokenize(&self.strategies), + , + > as alloy_sol_types::SolType>::tokenize(&self.shares), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Withdrawal { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for Withdrawal { + const NAME: &'static str = "Withdrawal"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "Withdrawal(address staker,address delegatedTo,address withdrawer,uint256 nonce,uint32 startBlock,address[] strategies,uint256[] shares)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.staker, + ) + .0, + ::eip712_data_word( + &self.delegatedTo, + ) + .0, + ::eip712_data_word( + &self.withdrawer, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.startBlock) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.strategies) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word(&self.shares) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Withdrawal { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.staker, + ) + + ::topic_preimage_length( + &rust.delegatedTo, + ) + + ::topic_preimage_length( + &rust.withdrawer, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.startBlock, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.strategies, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.shares, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.staker, + out, + ); + ::encode_topic_preimage( + &rust.delegatedTo, + out, + ); + ::encode_topic_preimage( + &rust.withdrawer, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonce, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.startBlock, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.strategies, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.shares, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**Event with signature `MinWithdrawalDelayBlocksSet(uint256,uint256)` and selector `0xafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69`. + ```solidity + event MinWithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct MinWithdrawalDelayBlocksSet { + #[allow(missing_docs)] + pub previousValue: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub newValue: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for MinWithdrawalDelayBlocksSet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "MinWithdrawalDelayBlocksSet(uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 175u8, 160u8, 3u8, 205u8, 118u8, 248u8, 127u8, 249u8, 214u8, 43u8, 53u8, 190u8, + 234u8, 136u8, 153u8, 32u8, 243u8, 60u8, 12u8, 66u8, 184u8, 212u8, 91u8, 116u8, + 149u8, 77u8, 97u8, 213u8, 15u8, 75u8, 107u8, 105u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + previousValue: data.0, + newValue: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.previousValue, + ), + as alloy_sol_types::SolType>::tokenize( + &self.newValue, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for MinWithdrawalDelayBlocksSet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&MinWithdrawalDelayBlocksSet> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &MinWithdrawalDelayBlocksSet) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorDetailsModified(address,(address,address,uint32))` and selector `0xfebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac`. + ```solidity + event OperatorDetailsModified(address indexed operator, OperatorDetails newOperatorDetails); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorDetailsModified { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOperatorDetails: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorDetailsModified { + type DataTuple<'a> = (OperatorDetails,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = + "OperatorDetailsModified(address,(address,address,uint32))"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 254u8, 190u8, 92u8, 210u8, 75u8, 44u8, 188u8, 123u8, 6u8, 91u8, 157u8, 15u8, + 222u8, 185u8, 4u8, 70u8, 30u8, 74u8, 252u8, 255u8, 87u8, 221u8, 87u8, 172u8, + 218u8, 30u8, 120u8, 50u8, 3u8, 27u8, 167u8, 172u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: topics.1, + newOperatorDetails: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + (::tokenize( + &self.newOperatorDetails, + ),) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.operator.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorDetailsModified { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorDetailsModified> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorDetailsModified) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorMetadataURIUpdated(address,string)` and selector `0x02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b6708090`. + ```solidity + event OperatorMetadataURIUpdated(address indexed operator, string metadataURI); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorMetadataURIUpdated { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub metadataURI: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorMetadataURIUpdated { + type DataTuple<'a> = (alloy::sol_types::sol_data::String,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OperatorMetadataURIUpdated(address,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 2u8, 169u8, 25u8, 237u8, 14u8, 42u8, 202u8, 209u8, 221u8, 144u8, 241u8, 126u8, + 242u8, 250u8, 74u8, 229u8, 70u8, 46u8, 225u8, 51u8, 145u8, 112u8, 3u8, 74u8, + 133u8, 49u8, 204u8, 164u8, 182u8, 112u8, 128u8, 144u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: topics.1, + metadataURI: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.metadataURI, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.operator.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorMetadataURIUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorMetadataURIUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorMetadataURIUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorRegistered(address,(address,address,uint32))` and selector `0x8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e2`. + ```solidity + event OperatorRegistered(address indexed operator, OperatorDetails operatorDetails); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorRegistered { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub operatorDetails: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorRegistered { + type DataTuple<'a> = (OperatorDetails,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OperatorRegistered(address,(address,address,uint32))"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 142u8, 132u8, 133u8, 88u8, 58u8, 35u8, 16u8, 212u8, 31u8, 124u8, 130u8, 185u8, + 66u8, 125u8, 11u8, 212u8, 155u8, 173u8, 116u8, 187u8, 156u8, 255u8, 157u8, + 52u8, 2u8, 162u8, 157u8, 143u8, 155u8, 40u8, 160u8, 226u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: topics.1, + operatorDetails: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + (::tokenize( + &self.operatorDetails, + ),) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.operator.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorRegistered { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorRegistered> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorRegistered) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorSharesDecreased(address,address,address,uint256)` and selector `0x6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd`. + ```solidity + event OperatorSharesDecreased(address indexed operator, address staker, address strategy, uint256 shares); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorSharesDecreased { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub staker: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub strategy: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub shares: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorSharesDecreased { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = + "OperatorSharesDecreased(address,address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 105u8, 9u8, 96u8, 0u8, 55u8, 183u8, 93u8, 123u8, 71u8, 51u8, 174u8, 221u8, + 129u8, 84u8, 66u8, 181u8, 236u8, 1u8, 138u8, 130u8, 119u8, 81u8, 200u8, 50u8, + 170u8, 255u8, 100u8, 235u8, 165u8, 214u8, 210u8, 221u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: topics.1, + staker: data.0, + strategy: data.1, + shares: data.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.staker, + ), + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.shares, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.operator.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorSharesDecreased { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorSharesDecreased> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorSharesDecreased) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorSharesIncreased(address,address,address,uint256)` and selector `0x1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c`. + ```solidity + event OperatorSharesIncreased(address indexed operator, address staker, address strategy, uint256 shares); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorSharesIncreased { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub staker: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub strategy: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub shares: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorSharesIncreased { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = + "OperatorSharesIncreased(address,address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 30u8, 192u8, 66u8, 201u8, 101u8, 226u8, 237u8, 215u8, 16u8, 123u8, 81u8, 24u8, + 142u8, 224u8, 243u8, 131u8, 226u8, 46u8, 118u8, 23u8, 144u8, 65u8, 171u8, 58u8, + 157u8, 24u8, 255u8, 21u8, 20u8, 5u8, 22u8, 108u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: topics.1, + staker: data.0, + strategy: data.1, + shares: data.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.staker, + ), + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.shares, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.operator.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorSharesIncreased { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorSharesIncreased> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorSharesIncreased) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `StakerDelegated(address,address)` and selector `0xc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d8743304`. + ```solidity + event StakerDelegated(address indexed staker, address indexed operator); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct StakerDelegated { + #[allow(missing_docs)] + pub staker: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for StakerDelegated { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "StakerDelegated(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 195u8, 238u8, 159u8, 46u8, 95u8, 218u8, 152u8, 232u8, 6u8, 106u8, 31u8, 116u8, + 91u8, 45u8, 249u8, 40u8, 95u8, 65u8, 111u8, 233u8, 140u8, 242u8, 85u8, 156u8, + 210u8, 20u8, 132u8, 179u8, 216u8, 116u8, 51u8, 4u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + staker: topics.1, + operator: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.staker.clone(), + self.operator.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.staker, + ); + out[2usize] = ::encode_topic( + &self.operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for StakerDelegated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&StakerDelegated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &StakerDelegated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `StakerForceUndelegated(address,address)` and selector `0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a`. + ```solidity + event StakerForceUndelegated(address indexed staker, address indexed operator); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct StakerForceUndelegated { + #[allow(missing_docs)] + pub staker: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for StakerForceUndelegated { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "StakerForceUndelegated(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 240u8, 237u8, 223u8, 7u8, 230u8, 234u8, 20u8, 243u8, 136u8, 180u8, 126u8, 30u8, + 148u8, 160u8, 244u8, 100u8, 236u8, 189u8, 158u8, 237u8, 65u8, 113u8, 19u8, + 14u8, 15u8, 192u8, 233u8, 159u8, 180u8, 3u8, 10u8, 138u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + staker: topics.1, + operator: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.staker.clone(), + self.operator.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.staker, + ); + out[2usize] = ::encode_topic( + &self.operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for StakerForceUndelegated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&StakerForceUndelegated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &StakerForceUndelegated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `StakerUndelegated(address,address)` and selector `0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676`. + ```solidity + event StakerUndelegated(address indexed staker, address indexed operator); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct StakerUndelegated { + #[allow(missing_docs)] + pub staker: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for StakerUndelegated { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "StakerUndelegated(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 254u8, 227u8, 9u8, 102u8, 162u8, 86u8, 183u8, 30u8, 20u8, 188u8, 14u8, 191u8, + 201u8, 67u8, 21u8, 226u8, 142u8, 244u8, 169u8, 122u8, 113u8, 49u8, 169u8, + 226u8, 183u8, 163u8, 16u8, 167u8, 58u8, 244u8, 70u8, 118u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + staker: topics.1, + operator: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.staker.clone(), + self.operator.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.staker, + ); + out[2usize] = ::encode_topic( + &self.operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for StakerUndelegated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&StakerUndelegated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &StakerUndelegated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `StrategyWithdrawalDelayBlocksSet(address,uint256,uint256)` and selector `0x0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d`. + ```solidity + event StrategyWithdrawalDelayBlocksSet(address strategy, uint256 previousValue, uint256 newValue); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct StrategyWithdrawalDelayBlocksSet { + #[allow(missing_docs)] + pub strategy: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub previousValue: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub newValue: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for StrategyWithdrawalDelayBlocksSet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = + "StrategyWithdrawalDelayBlocksSet(address,uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 14u8, 126u8, 250u8, 115u8, 142u8, 139u8, 12u8, 230u8, 55u8, 106u8, 12u8, 26u8, + 244u8, 113u8, 101u8, 85u8, 64u8, 210u8, 233u8, 168u8, 22u8, 71u8, 215u8, 176u8, + 158u8, 216u8, 35u8, 1u8, 132u8, 38u8, 87u8, 109u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + strategy: data.0, + previousValue: data.1, + newValue: data.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.previousValue, + ), + as alloy_sol_types::SolType>::tokenize( + &self.newValue, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for StrategyWithdrawalDelayBlocksSet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&StrategyWithdrawalDelayBlocksSet> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &StrategyWithdrawalDelayBlocksSet) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `WithdrawalCompleted(bytes32)` and selector `0xc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d`. + ```solidity + event WithdrawalCompleted(bytes32 withdrawalRoot); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct WithdrawalCompleted { + #[allow(missing_docs)] + pub withdrawalRoot: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for WithdrawalCompleted { + type DataTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "WithdrawalCompleted(bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 201u8, 112u8, 152u8, 194u8, 246u8, 88u8, 128u8, 11u8, 77u8, 242u8, 144u8, 1u8, + 82u8, 127u8, 115u8, 36u8, 188u8, 223u8, 252u8, 246u8, 232u8, 117u8, 26u8, + 105u8, 154u8, 185u8, 32u8, 161u8, 236u8, 237u8, 91u8, 29u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + withdrawalRoot: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.withdrawalRoot), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for WithdrawalCompleted { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&WithdrawalCompleted> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &WithdrawalCompleted) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `WithdrawalQueued(bytes32,(address,address,address,uint256,uint32,address[],uint256[]))` and selector `0x9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f9`. + ```solidity + event WithdrawalQueued(bytes32 withdrawalRoot, Withdrawal withdrawal); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct WithdrawalQueued { + #[allow(missing_docs)] + pub withdrawalRoot: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub withdrawal: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for WithdrawalQueued { + type DataTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>, Withdrawal); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "WithdrawalQueued(bytes32,(address,address,address,uint256,uint32,address[],uint256[]))"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 144u8, 9u8, 171u8, 21u8, 62u8, 128u8, 20u8, 251u8, 251u8, 2u8, 242u8, 33u8, + 127u8, 92u8, 222u8, 122u8, 167u8, 249u8, 173u8, 115u8, 74u8, 232u8, 92u8, + 163u8, 238u8, 63u8, 76u8, 162u8, 253u8, 212u8, 153u8, 249u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + withdrawalRoot: data.0, + withdrawal: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.withdrawalRoot), + ::tokenize(&self.withdrawal), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for WithdrawalQueued { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&WithdrawalQueued> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &WithdrawalQueued) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `DELEGATION_APPROVAL_TYPEHASH()` and selector `0x04a4f979`. + ```solidity + function DELEGATION_APPROVAL_TYPEHASH() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DELEGATION_APPROVAL_TYPEHASHCall {} + ///Container type for the return parameters of the [`DELEGATION_APPROVAL_TYPEHASH()`](DELEGATION_APPROVAL_TYPEHASHCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DELEGATION_APPROVAL_TYPEHASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DELEGATION_APPROVAL_TYPEHASHCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DELEGATION_APPROVAL_TYPEHASHCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DELEGATION_APPROVAL_TYPEHASHReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DELEGATION_APPROVAL_TYPEHASHReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for DELEGATION_APPROVAL_TYPEHASHCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = DELEGATION_APPROVAL_TYPEHASHReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "DELEGATION_APPROVAL_TYPEHASH()"; + const SELECTOR: [u8; 4] = [4u8, 164u8, 249u8, 121u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `DOMAIN_TYPEHASH()` and selector `0x20606b70`. + ```solidity + function DOMAIN_TYPEHASH() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DOMAIN_TYPEHASHCall {} + ///Container type for the return parameters of the [`DOMAIN_TYPEHASH()`](DOMAIN_TYPEHASHCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DOMAIN_TYPEHASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DOMAIN_TYPEHASHCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DOMAIN_TYPEHASHCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DOMAIN_TYPEHASHReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DOMAIN_TYPEHASHReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for DOMAIN_TYPEHASHCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = DOMAIN_TYPEHASHReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "DOMAIN_TYPEHASH()"; + const SELECTOR: [u8; 4] = [32u8, 96u8, 107u8, 112u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `STAKER_DELEGATION_TYPEHASH()` and selector `0x43377382`. + ```solidity + function STAKER_DELEGATION_TYPEHASH() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct STAKER_DELEGATION_TYPEHASHCall {} + ///Container type for the return parameters of the [`STAKER_DELEGATION_TYPEHASH()`](STAKER_DELEGATION_TYPEHASHCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct STAKER_DELEGATION_TYPEHASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: STAKER_DELEGATION_TYPEHASHCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for STAKER_DELEGATION_TYPEHASHCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: STAKER_DELEGATION_TYPEHASHReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for STAKER_DELEGATION_TYPEHASHReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for STAKER_DELEGATION_TYPEHASHCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = STAKER_DELEGATION_TYPEHASHReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "STAKER_DELEGATION_TYPEHASH()"; + const SELECTOR: [u8; 4] = [67u8, 55u8, 115u8, 130u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `beaconChainETHStrategy()` and selector `0x9104c319`. + ```solidity + function beaconChainETHStrategy() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct beaconChainETHStrategyCall {} + ///Container type for the return parameters of the [`beaconChainETHStrategy()`](beaconChainETHStrategyCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct beaconChainETHStrategyReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: beaconChainETHStrategyCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for beaconChainETHStrategyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: beaconChainETHStrategyReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for beaconChainETHStrategyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for beaconChainETHStrategyCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = beaconChainETHStrategyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "beaconChainETHStrategy()"; + const SELECTOR: [u8; 4] = [145u8, 4u8, 195u8, 25u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `calculateCurrentStakerDelegationDigestHash(address,address,uint256)` and selector `0x1bbce091`. + ```solidity + function calculateCurrentStakerDelegationDigestHash(address staker, address operator, uint256 expiry) external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct calculateCurrentStakerDelegationDigestHashCall { + pub staker: alloy::sol_types::private::Address, + pub operator: alloy::sol_types::private::Address, + pub expiry: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`calculateCurrentStakerDelegationDigestHash(address,address,uint256)`](calculateCurrentStakerDelegationDigestHashCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct calculateCurrentStakerDelegationDigestHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: calculateCurrentStakerDelegationDigestHashCall) -> Self { + (value.staker, value.operator, value.expiry) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for calculateCurrentStakerDelegationDigestHashCall + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + staker: tuple.0, + operator: tuple.1, + expiry: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: calculateCurrentStakerDelegationDigestHashReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for calculateCurrentStakerDelegationDigestHashReturn + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for calculateCurrentStakerDelegationDigestHashCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = calculateCurrentStakerDelegationDigestHashReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "calculateCurrentStakerDelegationDigestHash(address,address,uint256)"; + const SELECTOR: [u8; 4] = [27u8, 188u8, 224u8, 145u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.staker, + ), + ::tokenize( + &self.operator, + ), + as alloy_sol_types::SolType>::tokenize( + &self.expiry, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)` and selector `0x0b9f487a`. + ```solidity + function calculateDelegationApprovalDigestHash(address staker, address operator, address _delegationApprover, bytes32 approverSalt, uint256 expiry) external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct calculateDelegationApprovalDigestHashCall { + pub staker: alloy::sol_types::private::Address, + pub operator: alloy::sol_types::private::Address, + pub _delegationApprover: alloy::sol_types::private::Address, + pub approverSalt: alloy::sol_types::private::FixedBytes<32>, + pub expiry: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)`](calculateDelegationApprovalDigestHashCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct calculateDelegationApprovalDigestHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: calculateDelegationApprovalDigestHashCall) -> Self { + ( + value.staker, + value.operator, + value._delegationApprover, + value.approverSalt, + value.expiry, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for calculateDelegationApprovalDigestHashCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + staker: tuple.0, + operator: tuple.1, + _delegationApprover: tuple.2, + approverSalt: tuple.3, + expiry: tuple.4, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: calculateDelegationApprovalDigestHashReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for calculateDelegationApprovalDigestHashReturn + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for calculateDelegationApprovalDigestHashCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = calculateDelegationApprovalDigestHashReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)"; + const SELECTOR: [u8; 4] = [11u8, 159u8, 72u8, 122u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.staker, + ), + ::tokenize( + &self.operator, + ), + ::tokenize( + &self._delegationApprover, + ), + as alloy_sol_types::SolType>::tokenize(&self.approverSalt), + as alloy_sol_types::SolType>::tokenize(&self.expiry), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `calculateStakerDelegationDigestHash(address,uint256,address,uint256)` and selector `0xc94b5111`. + ```solidity + function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct calculateStakerDelegationDigestHashCall { + pub staker: alloy::sol_types::private::Address, + pub _stakerNonce: alloy::sol_types::private::primitives::aliases::U256, + pub operator: alloy::sol_types::private::Address, + pub expiry: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`calculateStakerDelegationDigestHash(address,uint256,address,uint256)`](calculateStakerDelegationDigestHashCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct calculateStakerDelegationDigestHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: calculateStakerDelegationDigestHashCall) -> Self { + ( + value.staker, + value._stakerNonce, + value.operator, + value.expiry, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for calculateStakerDelegationDigestHashCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + staker: tuple.0, + _stakerNonce: tuple.1, + operator: tuple.2, + expiry: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: calculateStakerDelegationDigestHashReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for calculateStakerDelegationDigestHashReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for calculateStakerDelegationDigestHashCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = calculateStakerDelegationDigestHashReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "calculateStakerDelegationDigestHash(address,uint256,address,uint256)"; + const SELECTOR: [u8; 4] = [201u8, 75u8, 81u8, 17u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.staker, + ), + as alloy_sol_types::SolType>::tokenize( + &self._stakerNonce, + ), + ::tokenize( + &self.operator, + ), + as alloy_sol_types::SolType>::tokenize( + &self.expiry, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))` and selector `0x597b36da`. + ```solidity + function calculateWithdrawalRoot(Withdrawal memory withdrawal) external pure returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct calculateWithdrawalRootCall { + pub withdrawal: ::RustType, + } + ///Container type for the return parameters of the [`calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))`](calculateWithdrawalRootCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct calculateWithdrawalRootReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Withdrawal,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: calculateWithdrawalRootCall) -> Self { + (value.withdrawal,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for calculateWithdrawalRootCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + withdrawal: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: calculateWithdrawalRootReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for calculateWithdrawalRootReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for calculateWithdrawalRootCall { + type Parameters<'a> = (Withdrawal,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = calculateWithdrawalRootReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))"; + const SELECTOR: [u8; 4] = [89u8, 123u8, 54u8, 218u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize( + &self.withdrawal, + ),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)` and selector `0x60d7faed`. + ```solidity + function completeQueuedWithdrawal(Withdrawal memory withdrawal, address[] memory tokens, uint256 middlewareTimesIndex, bool receiveAsTokens) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct completeQueuedWithdrawalCall { + pub withdrawal: ::RustType, + pub tokens: alloy::sol_types::private::Vec, + pub middlewareTimesIndex: alloy::sol_types::private::primitives::aliases::U256, + pub receiveAsTokens: bool, + } + ///Container type for the return parameters of the [`completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)`](completeQueuedWithdrawalCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct completeQueuedWithdrawalReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Withdrawal, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bool, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Vec, + alloy::sol_types::private::primitives::aliases::U256, + bool, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: completeQueuedWithdrawalCall) -> Self { + ( + value.withdrawal, + value.tokens, + value.middlewareTimesIndex, + value.receiveAsTokens, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for completeQueuedWithdrawalCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + withdrawal: tuple.0, + tokens: tuple.1, + middlewareTimesIndex: tuple.2, + receiveAsTokens: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: completeQueuedWithdrawalReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for completeQueuedWithdrawalReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for completeQueuedWithdrawalCall { + type Parameters<'a> = ( + Withdrawal, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bool, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = completeQueuedWithdrawalReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)"; + const SELECTOR: [u8; 4] = [96u8, 215u8, 250u8, 237u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self.withdrawal), + as alloy_sol_types::SolType>::tokenize(&self.tokens), + as alloy_sol_types::SolType>::tokenize(&self.middlewareTimesIndex), + ::tokenize( + &self.receiveAsTokens, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])` and selector `0x33404396`. + ```solidity + function completeQueuedWithdrawals(Withdrawal[] memory withdrawals, address[][] memory tokens, uint256[] memory middlewareTimesIndexes, bool[] memory receiveAsTokens) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct completeQueuedWithdrawalsCall { + pub withdrawals: + alloy::sol_types::private::Vec<::RustType>, + pub tokens: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec, + >, + pub middlewareTimesIndexes: + alloy::sol_types::private::Vec, + pub receiveAsTokens: alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])`](completeQueuedWithdrawalsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct completeQueuedWithdrawalsReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array, + >, + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec<::RustType>, + alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec, + >, + alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: completeQueuedWithdrawalsCall) -> Self { + ( + value.withdrawals, + value.tokens, + value.middlewareTimesIndexes, + value.receiveAsTokens, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for completeQueuedWithdrawalsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + withdrawals: tuple.0, + tokens: tuple.1, + middlewareTimesIndexes: tuple.2, + receiveAsTokens: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: completeQueuedWithdrawalsReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for completeQueuedWithdrawalsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for completeQueuedWithdrawalsCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array, + >, + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = completeQueuedWithdrawalsReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])"; + const SELECTOR: [u8; 4] = [51u8, 64u8, 67u8, 150u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.withdrawals), + , + > as alloy_sol_types::SolType>::tokenize(&self.tokens), + , + > as alloy_sol_types::SolType>::tokenize( + &self.middlewareTimesIndexes, + ), + as alloy_sol_types::SolType>::tokenize(&self.receiveAsTokens), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `cumulativeWithdrawalsQueued(address)` and selector `0xa1788484`. + ```solidity + function cumulativeWithdrawalsQueued(address staker) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct cumulativeWithdrawalsQueuedCall { + pub staker: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`cumulativeWithdrawalsQueued(address)`](cumulativeWithdrawalsQueuedCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct cumulativeWithdrawalsQueuedReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: cumulativeWithdrawalsQueuedCall) -> Self { + (value.staker,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for cumulativeWithdrawalsQueuedCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { staker: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: cumulativeWithdrawalsQueuedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for cumulativeWithdrawalsQueuedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for cumulativeWithdrawalsQueuedCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = cumulativeWithdrawalsQueuedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "cumulativeWithdrawalsQueued(address)"; + const SELECTOR: [u8; 4] = [161u8, 120u8, 132u8, 132u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.staker, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `decreaseDelegatedShares(address,address,uint256)` and selector `0x132d4967`. + ```solidity + function decreaseDelegatedShares(address staker, address strategy, uint256 shares) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct decreaseDelegatedSharesCall { + pub staker: alloy::sol_types::private::Address, + pub strategy: alloy::sol_types::private::Address, + pub shares: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`decreaseDelegatedShares(address,address,uint256)`](decreaseDelegatedSharesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct decreaseDelegatedSharesReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: decreaseDelegatedSharesCall) -> Self { + (value.staker, value.strategy, value.shares) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for decreaseDelegatedSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + staker: tuple.0, + strategy: tuple.1, + shares: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: decreaseDelegatedSharesReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for decreaseDelegatedSharesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for decreaseDelegatedSharesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = decreaseDelegatedSharesReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "decreaseDelegatedShares(address,address,uint256)"; + const SELECTOR: [u8; 4] = [19u8, 45u8, 73u8, 103u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.staker, + ), + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.shares, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `delegateTo(address,(bytes,uint256),bytes32)` and selector `0xeea9064b`. + ```solidity + function delegateTo(address operator, ISignatureUtils.SignatureWithExpiry memory approverSignatureAndExpiry, bytes32 approverSalt) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegateToCall { + pub operator: alloy::sol_types::private::Address, + pub approverSignatureAndExpiry: + ::RustType, + pub approverSalt: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`delegateTo(address,(bytes,uint256),bytes32)`](delegateToCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegateToReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithExpiry, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + ::RustType, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegateToCall) -> Self { + ( + value.operator, + value.approverSignatureAndExpiry, + value.approverSalt, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegateToCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + approverSignatureAndExpiry: tuple.1, + approverSalt: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegateToReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegateToReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for delegateToCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithExpiry, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = delegateToReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "delegateTo(address,(bytes,uint256),bytes32)"; + const SELECTOR: [u8; 4] = [238u8, 169u8, 6u8, 75u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.approverSignatureAndExpiry, + ), + as alloy_sol_types::SolType>::tokenize(&self.approverSalt), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)` and selector `0x7f548071`. + ```solidity + function delegateToBySignature(address staker, address operator, ISignatureUtils.SignatureWithExpiry memory stakerSignatureAndExpiry, ISignatureUtils.SignatureWithExpiry memory approverSignatureAndExpiry, bytes32 approverSalt) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegateToBySignatureCall { + pub staker: alloy::sol_types::private::Address, + pub operator: alloy::sol_types::private::Address, + pub stakerSignatureAndExpiry: + ::RustType, + pub approverSignatureAndExpiry: + ::RustType, + pub approverSalt: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)`](delegateToBySignatureCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegateToBySignatureReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithExpiry, + ISignatureUtils::SignatureWithExpiry, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ::RustType, + ::RustType, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegateToBySignatureCall) -> Self { + ( + value.staker, + value.operator, + value.stakerSignatureAndExpiry, + value.approverSignatureAndExpiry, + value.approverSalt, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegateToBySignatureCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + staker: tuple.0, + operator: tuple.1, + stakerSignatureAndExpiry: tuple.2, + approverSignatureAndExpiry: tuple.3, + approverSalt: tuple.4, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegateToBySignatureReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegateToBySignatureReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for delegateToBySignatureCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithExpiry, + ISignatureUtils::SignatureWithExpiry, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = delegateToBySignatureReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)"; + const SELECTOR: [u8; 4] = [127u8, 84u8, 128u8, 113u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.staker, + ), + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.stakerSignatureAndExpiry, + ), + ::tokenize( + &self.approverSignatureAndExpiry, + ), + as alloy_sol_types::SolType>::tokenize(&self.approverSalt), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `delegatedTo(address)` and selector `0x65da1264`. + ```solidity + function delegatedTo(address staker) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegatedToCall { + pub staker: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`delegatedTo(address)`](delegatedToCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegatedToReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegatedToCall) -> Self { + (value.staker,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegatedToCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { staker: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegatedToReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegatedToReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for delegatedToCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = delegatedToReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "delegatedTo(address)"; + const SELECTOR: [u8; 4] = [101u8, 218u8, 18u8, 100u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.staker, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `delegationApprover(address)` and selector `0x3cdeb5e0`. + ```solidity + function delegationApprover(address operator) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegationApproverCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`delegationApprover(address)`](delegationApproverCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegationApproverReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationApproverCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationApproverCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationApproverReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationApproverReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for delegationApproverCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = delegationApproverReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "delegationApprover(address)"; + const SELECTOR: [u8; 4] = [60u8, 222u8, 181u8, 224u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `delegationApproverSaltIsSpent(address,bytes32)` and selector `0xbb45fef2`. + ```solidity + function delegationApproverSaltIsSpent(address _delegationApprover, bytes32 salt) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegationApproverSaltIsSpentCall { + pub _delegationApprover: alloy::sol_types::private::Address, + pub salt: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`delegationApproverSaltIsSpent(address,bytes32)`](delegationApproverSaltIsSpentCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegationApproverSaltIsSpentReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationApproverSaltIsSpentCall) -> Self { + (value._delegationApprover, value.salt) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationApproverSaltIsSpentCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _delegationApprover: tuple.0, + salt: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationApproverSaltIsSpentReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationApproverSaltIsSpentReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for delegationApproverSaltIsSpentCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = delegationApproverSaltIsSpentReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "delegationApproverSaltIsSpent(address,bytes32)"; + const SELECTOR: [u8; 4] = [187u8, 69u8, 254u8, 242u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._delegationApprover, + ), + as alloy_sol_types::SolType>::tokenize(&self.salt), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `domainSeparator()` and selector `0xf698da25`. + ```solidity + function domainSeparator() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct domainSeparatorCall {} + ///Container type for the return parameters of the [`domainSeparator()`](domainSeparatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct domainSeparatorReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: domainSeparatorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for domainSeparatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: domainSeparatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for domainSeparatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for domainSeparatorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = domainSeparatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "domainSeparator()"; + const SELECTOR: [u8; 4] = [246u8, 152u8, 218u8, 37u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorShares(address,address[])` and selector `0x90041347`. + ```solidity + function getOperatorShares(address operator, address[] memory strategies) external view returns (uint256[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorSharesCall { + pub operator: alloy::sol_types::private::Address, + pub strategies: alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`getOperatorShares(address,address[])`](getOperatorSharesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorSharesReturn { + pub _0: + alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorSharesCall) -> Self { + (value.operator, value.strategies) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + strategies: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorSharesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorSharesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorSharesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Array, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorSharesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorShares(address,address[])"; + const SELECTOR: [u8; 4] = [144u8, 4u8, 19u8, 71u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + as alloy_sol_types::SolType>::tokenize(&self.strategies), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getWithdrawalDelay(address[])` and selector `0x0449ca39`. + ```solidity + function getWithdrawalDelay(address[] memory strategies) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getWithdrawalDelayCall { + pub strategies: alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`getWithdrawalDelay(address[])`](getWithdrawalDelayCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getWithdrawalDelayReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getWithdrawalDelayCall) -> Self { + (value.strategies,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getWithdrawalDelayCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategies: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getWithdrawalDelayReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getWithdrawalDelayReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getWithdrawalDelayCall { + type Parameters<'a> = + (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getWithdrawalDelayReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getWithdrawalDelay(address[])"; + const SELECTOR: [u8; 4] = [4u8, 73u8, 202u8, 57u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( as alloy_sol_types::SolType>::tokenize( + &self.strategies + ),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `increaseDelegatedShares(address,address,uint256)` and selector `0x28a573ae`. + ```solidity + function increaseDelegatedShares(address staker, address strategy, uint256 shares) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct increaseDelegatedSharesCall { + pub staker: alloy::sol_types::private::Address, + pub strategy: alloy::sol_types::private::Address, + pub shares: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`increaseDelegatedShares(address,address,uint256)`](increaseDelegatedSharesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct increaseDelegatedSharesReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: increaseDelegatedSharesCall) -> Self { + (value.staker, value.strategy, value.shares) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for increaseDelegatedSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + staker: tuple.0, + strategy: tuple.1, + shares: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: increaseDelegatedSharesReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for increaseDelegatedSharesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for increaseDelegatedSharesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = increaseDelegatedSharesReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "increaseDelegatedShares(address,address,uint256)"; + const SELECTOR: [u8; 4] = [40u8, 165u8, 115u8, 174u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.staker, + ), + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.shares, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `isDelegated(address)` and selector `0x3e28391d`. + ```solidity + function isDelegated(address staker) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isDelegatedCall { + pub staker: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`isDelegated(address)`](isDelegatedCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isDelegatedReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isDelegatedCall) -> Self { + (value.staker,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isDelegatedCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { staker: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isDelegatedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isDelegatedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for isDelegatedCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = isDelegatedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "isDelegated(address)"; + const SELECTOR: [u8; 4] = [62u8, 40u8, 57u8, 29u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.staker, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `isOperator(address)` and selector `0x6d70f7ae`. + ```solidity + function isOperator(address operator) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isOperatorCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`isOperator(address)`](isOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isOperatorReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isOperatorCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isOperatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for isOperatorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = isOperatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "isOperator(address)"; + const SELECTOR: [u8; 4] = [109u8, 112u8, 247u8, 174u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `minWithdrawalDelayBlocks()` and selector `0xc448feb8`. + ```solidity + function minWithdrawalDelayBlocks() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct minWithdrawalDelayBlocksCall {} + ///Container type for the return parameters of the [`minWithdrawalDelayBlocks()`](minWithdrawalDelayBlocksCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct minWithdrawalDelayBlocksReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: minWithdrawalDelayBlocksCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for minWithdrawalDelayBlocksCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: minWithdrawalDelayBlocksReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for minWithdrawalDelayBlocksReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for minWithdrawalDelayBlocksCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = minWithdrawalDelayBlocksReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "minWithdrawalDelayBlocks()"; + const SELECTOR: [u8; 4] = [196u8, 72u8, 254u8, 184u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `modifyOperatorDetails((address,address,uint32))` and selector `0xf16172b0`. + ```solidity + function modifyOperatorDetails(OperatorDetails memory newOperatorDetails) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct modifyOperatorDetailsCall { + pub newOperatorDetails: ::RustType, + } + ///Container type for the return parameters of the [`modifyOperatorDetails((address,address,uint32))`](modifyOperatorDetailsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct modifyOperatorDetailsReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (OperatorDetails,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: modifyOperatorDetailsCall) -> Self { + (value.newOperatorDetails,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for modifyOperatorDetailsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newOperatorDetails: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: modifyOperatorDetailsReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for modifyOperatorDetailsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for modifyOperatorDetailsCall { + type Parameters<'a> = (OperatorDetails,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = modifyOperatorDetailsReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "modifyOperatorDetails((address,address,uint32))"; + const SELECTOR: [u8; 4] = [241u8, 97u8, 114u8, 176u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize( + &self.newOperatorDetails, + ),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `operatorDetails(address)` and selector `0xc5e480db`. + ```solidity + function operatorDetails(address operator) external view returns (OperatorDetails memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorDetailsCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`operatorDetails(address)`](operatorDetailsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorDetailsReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorDetailsCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorDetailsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (OperatorDetails,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorDetailsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorDetailsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for operatorDetailsCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = operatorDetailsReturn; + type ReturnTuple<'a> = (OperatorDetails,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "operatorDetails(address)"; + const SELECTOR: [u8; 4] = [197u8, 228u8, 128u8, 219u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `operatorShares(address,address)` and selector `0x778e55f3`. + ```solidity + function operatorShares(address operator, address strategy) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorSharesCall { + pub operator: alloy::sol_types::private::Address, + pub strategy: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`operatorShares(address,address)`](operatorSharesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorSharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorSharesCall) -> Self { + (value.operator, value.strategy) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + strategy: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorSharesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorSharesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for operatorSharesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = operatorSharesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "operatorShares(address,address)"; + const SELECTOR: [u8; 4] = [119u8, 142u8, 85u8, 243u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.strategy, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `queueWithdrawals((address[],uint256[],address)[])` and selector `0x0dd8dd02`. + ```solidity + function queueWithdrawals(QueuedWithdrawalParams[] memory queuedWithdrawalParams) external returns (bytes32[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct queueWithdrawalsCall { + pub queuedWithdrawalParams: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`queueWithdrawals((address[],uint256[],address)[])`](queueWithdrawalsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct queueWithdrawalsReturn { + pub _0: alloy::sol_types::private::Vec>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: queueWithdrawalsCall) -> Self { + (value.queuedWithdrawalParams,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for queueWithdrawalsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + queuedWithdrawalParams: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: queueWithdrawalsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for queueWithdrawalsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for queueWithdrawalsCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = queueWithdrawalsReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "queueWithdrawals((address[],uint256[],address)[])"; + const SELECTOR: [u8; 4] = [13u8, 216u8, 221u8, 2u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.queuedWithdrawalParams, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registerAsOperator((address,address,uint32),string)` and selector `0x0f589e59`. + ```solidity + function registerAsOperator(OperatorDetails memory registeringOperatorDetails, string memory metadataURI) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerAsOperatorCall { + pub registeringOperatorDetails: ::RustType, + pub metadataURI: alloy::sol_types::private::String, + } + ///Container type for the return parameters of the [`registerAsOperator((address,address,uint32),string)`](registerAsOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerAsOperatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (OperatorDetails, alloy::sol_types::sol_data::String); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::String, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerAsOperatorCall) -> Self { + (value.registeringOperatorDetails, value.metadataURI) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerAsOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + registeringOperatorDetails: tuple.0, + metadataURI: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerAsOperatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerAsOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registerAsOperatorCall { + type Parameters<'a> = (OperatorDetails, alloy::sol_types::sol_data::String); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registerAsOperatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registerAsOperator((address,address,uint32),string)"; + const SELECTOR: [u8; 4] = [15u8, 88u8, 158u8, 89u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.registeringOperatorDetails, + ), + ::tokenize( + &self.metadataURI, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `stakerNonce(address)` and selector `0x29c77d4f`. + ```solidity + function stakerNonce(address staker) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakerNonceCall { + pub staker: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`stakerNonce(address)`](stakerNonceCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakerNonceReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakerNonceCall) -> Self { + (value.staker,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakerNonceCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { staker: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakerNonceReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakerNonceReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for stakerNonceCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = stakerNonceReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "stakerNonce(address)"; + const SELECTOR: [u8; 4] = [41u8, 199u8, 125u8, 79u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.staker, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `stakerOptOutWindowBlocks(address)` and selector `0x16928365`. + ```solidity + function stakerOptOutWindowBlocks(address operator) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakerOptOutWindowBlocksCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`stakerOptOutWindowBlocks(address)`](stakerOptOutWindowBlocksCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakerOptOutWindowBlocksReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakerOptOutWindowBlocksCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakerOptOutWindowBlocksCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakerOptOutWindowBlocksReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakerOptOutWindowBlocksReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for stakerOptOutWindowBlocksCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = stakerOptOutWindowBlocksReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "stakerOptOutWindowBlocks(address)"; + const SELECTOR: [u8; 4] = [22u8, 146u8, 131u8, 101u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `strategyWithdrawalDelayBlocks(address)` and selector `0xc488375a`. + ```solidity + function strategyWithdrawalDelayBlocks(address strategy) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyWithdrawalDelayBlocksCall { + pub strategy: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`strategyWithdrawalDelayBlocks(address)`](strategyWithdrawalDelayBlocksCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyWithdrawalDelayBlocksReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyWithdrawalDelayBlocksCall) -> Self { + (value.strategy,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyWithdrawalDelayBlocksCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { strategy: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyWithdrawalDelayBlocksReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyWithdrawalDelayBlocksReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for strategyWithdrawalDelayBlocksCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = strategyWithdrawalDelayBlocksReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "strategyWithdrawalDelayBlocks(address)"; + const SELECTOR: [u8; 4] = [196u8, 136u8, 55u8, 90u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.strategy, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `undelegate(address)` and selector `0xda8be864`. + ```solidity + function undelegate(address staker) external returns (bytes32[] memory withdrawalRoot); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct undelegateCall { + pub staker: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`undelegate(address)`](undelegateCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct undelegateReturn { + pub withdrawalRoot: + alloy::sol_types::private::Vec>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: undelegateCall) -> Self { + (value.staker,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for undelegateCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { staker: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: undelegateReturn) -> Self { + (value.withdrawalRoot,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for undelegateReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + withdrawalRoot: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for undelegateCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = undelegateReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "undelegate(address)"; + const SELECTOR: [u8; 4] = [218u8, 139u8, 232u8, 100u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.staker, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateOperatorMetadataURI(string)` and selector `0x99be81c8`. + ```solidity + function updateOperatorMetadataURI(string memory metadataURI) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorMetadataURICall { + pub metadataURI: alloy::sol_types::private::String, + } + ///Container type for the return parameters of the [`updateOperatorMetadataURI(string)`](updateOperatorMetadataURICall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorMetadataURIReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorMetadataURICall) -> Self { + (value.metadataURI,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorMetadataURICall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + metadataURI: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorMetadataURIReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorMetadataURIReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateOperatorMetadataURICall { + type Parameters<'a> = (alloy::sol_types::sol_data::String,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateOperatorMetadataURIReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateOperatorMetadataURI(string)"; + const SELECTOR: [u8; 4] = [153u8, 190u8, 129u8, 200u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.metadataURI, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IDelegationManager`](self) function calls. + pub enum IDelegationManagerCalls { + DELEGATION_APPROVAL_TYPEHASH(DELEGATION_APPROVAL_TYPEHASHCall), + DOMAIN_TYPEHASH(DOMAIN_TYPEHASHCall), + STAKER_DELEGATION_TYPEHASH(STAKER_DELEGATION_TYPEHASHCall), + beaconChainETHStrategy(beaconChainETHStrategyCall), + calculateCurrentStakerDelegationDigestHash(calculateCurrentStakerDelegationDigestHashCall), + calculateDelegationApprovalDigestHash(calculateDelegationApprovalDigestHashCall), + calculateStakerDelegationDigestHash(calculateStakerDelegationDigestHashCall), + calculateWithdrawalRoot(calculateWithdrawalRootCall), + completeQueuedWithdrawal(completeQueuedWithdrawalCall), + completeQueuedWithdrawals(completeQueuedWithdrawalsCall), + cumulativeWithdrawalsQueued(cumulativeWithdrawalsQueuedCall), + decreaseDelegatedShares(decreaseDelegatedSharesCall), + delegateTo(delegateToCall), + delegateToBySignature(delegateToBySignatureCall), + delegatedTo(delegatedToCall), + delegationApprover(delegationApproverCall), + delegationApproverSaltIsSpent(delegationApproverSaltIsSpentCall), + domainSeparator(domainSeparatorCall), + getOperatorShares(getOperatorSharesCall), + getWithdrawalDelay(getWithdrawalDelayCall), + increaseDelegatedShares(increaseDelegatedSharesCall), + isDelegated(isDelegatedCall), + isOperator(isOperatorCall), + minWithdrawalDelayBlocks(minWithdrawalDelayBlocksCall), + modifyOperatorDetails(modifyOperatorDetailsCall), + operatorDetails(operatorDetailsCall), + operatorShares(operatorSharesCall), + queueWithdrawals(queueWithdrawalsCall), + registerAsOperator(registerAsOperatorCall), + stakerNonce(stakerNonceCall), + stakerOptOutWindowBlocks(stakerOptOutWindowBlocksCall), + strategyWithdrawalDelayBlocks(strategyWithdrawalDelayBlocksCall), + undelegate(undelegateCall), + updateOperatorMetadataURI(updateOperatorMetadataURICall), + } + #[automatically_derived] + impl IDelegationManagerCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [4u8, 73u8, 202u8, 57u8], + [4u8, 164u8, 249u8, 121u8], + [11u8, 159u8, 72u8, 122u8], + [13u8, 216u8, 221u8, 2u8], + [15u8, 88u8, 158u8, 89u8], + [19u8, 45u8, 73u8, 103u8], + [22u8, 146u8, 131u8, 101u8], + [27u8, 188u8, 224u8, 145u8], + [32u8, 96u8, 107u8, 112u8], + [40u8, 165u8, 115u8, 174u8], + [41u8, 199u8, 125u8, 79u8], + [51u8, 64u8, 67u8, 150u8], + [60u8, 222u8, 181u8, 224u8], + [62u8, 40u8, 57u8, 29u8], + [67u8, 55u8, 115u8, 130u8], + [89u8, 123u8, 54u8, 218u8], + [96u8, 215u8, 250u8, 237u8], + [101u8, 218u8, 18u8, 100u8], + [109u8, 112u8, 247u8, 174u8], + [119u8, 142u8, 85u8, 243u8], + [127u8, 84u8, 128u8, 113u8], + [144u8, 4u8, 19u8, 71u8], + [145u8, 4u8, 195u8, 25u8], + [153u8, 190u8, 129u8, 200u8], + [161u8, 120u8, 132u8, 132u8], + [187u8, 69u8, 254u8, 242u8], + [196u8, 72u8, 254u8, 184u8], + [196u8, 136u8, 55u8, 90u8], + [197u8, 228u8, 128u8, 219u8], + [201u8, 75u8, 81u8, 17u8], + [218u8, 139u8, 232u8, 100u8], + [238u8, 169u8, 6u8, 75u8], + [241u8, 97u8, 114u8, 176u8], + [246u8, 152u8, 218u8, 37u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IDelegationManagerCalls { + const NAME: &'static str = "IDelegationManagerCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 34usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::DELEGATION_APPROVAL_TYPEHASH(_) => { + ::SELECTOR + } + Self::DOMAIN_TYPEHASH(_) => { + ::SELECTOR + } + Self::STAKER_DELEGATION_TYPEHASH(_) => { + ::SELECTOR + } + Self::beaconChainETHStrategy(_) => { + ::SELECTOR + } + Self::calculateCurrentStakerDelegationDigestHash(_) => { + ::SELECTOR + } + Self::calculateDelegationApprovalDigestHash(_) => { + ::SELECTOR + } + Self::calculateStakerDelegationDigestHash(_) => { + ::SELECTOR + } + Self::calculateWithdrawalRoot(_) => { + ::SELECTOR + } + Self::completeQueuedWithdrawal(_) => { + ::SELECTOR + } + Self::completeQueuedWithdrawals(_) => { + ::SELECTOR + } + Self::cumulativeWithdrawalsQueued(_) => { + ::SELECTOR + } + Self::decreaseDelegatedShares(_) => { + ::SELECTOR + } + Self::delegateTo(_) => { + ::SELECTOR + } + Self::delegateToBySignature(_) => { + ::SELECTOR + } + Self::delegatedTo(_) => { + ::SELECTOR + } + Self::delegationApprover(_) => { + ::SELECTOR + } + Self::delegationApproverSaltIsSpent(_) => { + ::SELECTOR + } + Self::domainSeparator(_) => { + ::SELECTOR + } + Self::getOperatorShares(_) => { + ::SELECTOR + } + Self::getWithdrawalDelay(_) => { + ::SELECTOR + } + Self::increaseDelegatedShares(_) => { + ::SELECTOR + } + Self::isDelegated(_) => { + ::SELECTOR + } + Self::isOperator(_) => { + ::SELECTOR + } + Self::minWithdrawalDelayBlocks(_) => { + ::SELECTOR + } + Self::modifyOperatorDetails(_) => { + ::SELECTOR + } + Self::operatorDetails(_) => { + ::SELECTOR + } + Self::operatorShares(_) => { + ::SELECTOR + } + Self::queueWithdrawals(_) => { + ::SELECTOR + } + Self::registerAsOperator(_) => { + ::SELECTOR + } + Self::stakerNonce(_) => { + ::SELECTOR + } + Self::stakerOptOutWindowBlocks(_) => { + ::SELECTOR + } + Self::strategyWithdrawalDelayBlocks(_) => { + ::SELECTOR + } + Self::undelegate(_) => { + ::SELECTOR + } + Self::updateOperatorMetadataURI(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn getWithdrawalDelay( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IDelegationManagerCalls::getWithdrawalDelay) + } + getWithdrawalDelay + }, + { + fn DELEGATION_APPROVAL_TYPEHASH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IDelegationManagerCalls::DELEGATION_APPROVAL_TYPEHASH) + } + DELEGATION_APPROVAL_TYPEHASH + }, + { + fn calculateDelegationApprovalDigestHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + IDelegationManagerCalls::calculateDelegationApprovalDigestHash, + ) + } + calculateDelegationApprovalDigestHash + }, + { + fn queueWithdrawals( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IDelegationManagerCalls::queueWithdrawals) + } + queueWithdrawals + }, + { + fn registerAsOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IDelegationManagerCalls::registerAsOperator) + } + registerAsOperator + }, + { + fn decreaseDelegatedShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IDelegationManagerCalls::decreaseDelegatedShares) + } + decreaseDelegatedShares + }, + { + fn stakerOptOutWindowBlocks( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IDelegationManagerCalls::stakerOptOutWindowBlocks) + } + stakerOptOutWindowBlocks + }, + { + fn calculateCurrentStakerDelegationDigestHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + IDelegationManagerCalls::calculateCurrentStakerDelegationDigestHash, + ) + } + calculateCurrentStakerDelegationDigestHash + }, + { + fn DOMAIN_TYPEHASH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IDelegationManagerCalls::DOMAIN_TYPEHASH) + } + DOMAIN_TYPEHASH + }, + { + fn increaseDelegatedShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IDelegationManagerCalls::increaseDelegatedShares) + } + increaseDelegatedShares + }, + { + fn stakerNonce( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IDelegationManagerCalls::stakerNonce) + } + stakerNonce + }, + { + fn completeQueuedWithdrawals( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IDelegationManagerCalls::completeQueuedWithdrawals) + } + completeQueuedWithdrawals + }, + { + fn delegationApprover( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IDelegationManagerCalls::delegationApprover) + } + delegationApprover + }, + { + fn isDelegated( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IDelegationManagerCalls::isDelegated) + } + isDelegated + }, + { + fn STAKER_DELEGATION_TYPEHASH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IDelegationManagerCalls::STAKER_DELEGATION_TYPEHASH) + } + STAKER_DELEGATION_TYPEHASH + }, + { + fn calculateWithdrawalRoot( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IDelegationManagerCalls::calculateWithdrawalRoot) + } + calculateWithdrawalRoot + }, + { + fn completeQueuedWithdrawal( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IDelegationManagerCalls::completeQueuedWithdrawal) + } + completeQueuedWithdrawal + }, + { + fn delegatedTo( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IDelegationManagerCalls::delegatedTo) + } + delegatedTo + }, + { + fn isOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IDelegationManagerCalls::isOperator) + } + isOperator + }, + { + fn operatorShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IDelegationManagerCalls::operatorShares) + } + operatorShares + }, + { + fn delegateToBySignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IDelegationManagerCalls::delegateToBySignature) + } + delegateToBySignature + }, + { + fn getOperatorShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IDelegationManagerCalls::getOperatorShares) + } + getOperatorShares + }, + { + fn beaconChainETHStrategy( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IDelegationManagerCalls::beaconChainETHStrategy) + } + beaconChainETHStrategy + }, + { + fn updateOperatorMetadataURI( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IDelegationManagerCalls::updateOperatorMetadataURI) + } + updateOperatorMetadataURI + }, + { + fn cumulativeWithdrawalsQueued( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IDelegationManagerCalls::cumulativeWithdrawalsQueued) + } + cumulativeWithdrawalsQueued + }, + { + fn delegationApproverSaltIsSpent( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IDelegationManagerCalls::delegationApproverSaltIsSpent) + } + delegationApproverSaltIsSpent + }, + { + fn minWithdrawalDelayBlocks( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IDelegationManagerCalls::minWithdrawalDelayBlocks) + } + minWithdrawalDelayBlocks + }, + { + fn strategyWithdrawalDelayBlocks( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IDelegationManagerCalls::strategyWithdrawalDelayBlocks) + } + strategyWithdrawalDelayBlocks + }, + { + fn operatorDetails( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IDelegationManagerCalls::operatorDetails) + } + operatorDetails + }, + { + fn calculateStakerDelegationDigestHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + IDelegationManagerCalls::calculateStakerDelegationDigestHash, + ) + } + calculateStakerDelegationDigestHash + }, + { + fn undelegate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IDelegationManagerCalls::undelegate) + } + undelegate + }, + { + fn delegateTo( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IDelegationManagerCalls::delegateTo) + } + delegateTo + }, + { + fn modifyOperatorDetails( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IDelegationManagerCalls::modifyOperatorDetails) + } + modifyOperatorDetails + }, + { + fn domainSeparator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IDelegationManagerCalls::domainSeparator) + } + domainSeparator + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::DELEGATION_APPROVAL_TYPEHASH(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::DOMAIN_TYPEHASH(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::STAKER_DELEGATION_TYPEHASH(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::beaconChainETHStrategy(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::calculateCurrentStakerDelegationDigestHash(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::calculateDelegationApprovalDigestHash(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::calculateStakerDelegationDigestHash(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::calculateWithdrawalRoot(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::completeQueuedWithdrawal(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::completeQueuedWithdrawals(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::cumulativeWithdrawalsQueued(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::decreaseDelegatedShares(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::delegateTo(inner) => { + ::abi_encoded_size(inner) + } + Self::delegateToBySignature(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::delegatedTo(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::delegationApprover(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::delegationApproverSaltIsSpent(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::domainSeparator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorShares(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getWithdrawalDelay(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::increaseDelegatedShares(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::isDelegated(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::isOperator(inner) => { + ::abi_encoded_size(inner) + } + Self::minWithdrawalDelayBlocks(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::modifyOperatorDetails(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::operatorDetails(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::operatorShares(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::queueWithdrawals(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registerAsOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::stakerNonce(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::stakerOptOutWindowBlocks(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::strategyWithdrawalDelayBlocks(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::undelegate(inner) => { + ::abi_encoded_size(inner) + } + Self::updateOperatorMetadataURI(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::DELEGATION_APPROVAL_TYPEHASH(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::DOMAIN_TYPEHASH(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::STAKER_DELEGATION_TYPEHASH(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::beaconChainETHStrategy(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::calculateCurrentStakerDelegationDigestHash(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::calculateDelegationApprovalDigestHash(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::calculateStakerDelegationDigestHash(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::calculateWithdrawalRoot(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::completeQueuedWithdrawal(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::completeQueuedWithdrawals(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::cumulativeWithdrawalsQueued(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::decreaseDelegatedShares(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::delegateTo(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::delegateToBySignature(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::delegatedTo(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::delegationApprover(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::delegationApproverSaltIsSpent(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::domainSeparator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperatorShares(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getWithdrawalDelay(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::increaseDelegatedShares(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::isDelegated(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::isOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::minWithdrawalDelayBlocks(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::modifyOperatorDetails(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::operatorDetails(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::operatorShares(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::queueWithdrawals(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registerAsOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::stakerNonce(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::stakerOptOutWindowBlocks(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::strategyWithdrawalDelayBlocks(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::undelegate(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::updateOperatorMetadataURI(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`IDelegationManager`](self) events. + pub enum IDelegationManagerEvents { + MinWithdrawalDelayBlocksSet(MinWithdrawalDelayBlocksSet), + OperatorDetailsModified(OperatorDetailsModified), + OperatorMetadataURIUpdated(OperatorMetadataURIUpdated), + OperatorRegistered(OperatorRegistered), + OperatorSharesDecreased(OperatorSharesDecreased), + OperatorSharesIncreased(OperatorSharesIncreased), + StakerDelegated(StakerDelegated), + StakerForceUndelegated(StakerForceUndelegated), + StakerUndelegated(StakerUndelegated), + StrategyWithdrawalDelayBlocksSet(StrategyWithdrawalDelayBlocksSet), + WithdrawalCompleted(WithdrawalCompleted), + WithdrawalQueued(WithdrawalQueued), + } + #[automatically_derived] + impl IDelegationManagerEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 2u8, 169u8, 25u8, 237u8, 14u8, 42u8, 202u8, 209u8, 221u8, 144u8, 241u8, 126u8, + 242u8, 250u8, 74u8, 229u8, 70u8, 46u8, 225u8, 51u8, 145u8, 112u8, 3u8, 74u8, 133u8, + 49u8, 204u8, 164u8, 182u8, 112u8, 128u8, 144u8, + ], + [ + 14u8, 126u8, 250u8, 115u8, 142u8, 139u8, 12u8, 230u8, 55u8, 106u8, 12u8, 26u8, + 244u8, 113u8, 101u8, 85u8, 64u8, 210u8, 233u8, 168u8, 22u8, 71u8, 215u8, 176u8, + 158u8, 216u8, 35u8, 1u8, 132u8, 38u8, 87u8, 109u8, + ], + [ + 30u8, 192u8, 66u8, 201u8, 101u8, 226u8, 237u8, 215u8, 16u8, 123u8, 81u8, 24u8, + 142u8, 224u8, 243u8, 131u8, 226u8, 46u8, 118u8, 23u8, 144u8, 65u8, 171u8, 58u8, + 157u8, 24u8, 255u8, 21u8, 20u8, 5u8, 22u8, 108u8, + ], + [ + 105u8, 9u8, 96u8, 0u8, 55u8, 183u8, 93u8, 123u8, 71u8, 51u8, 174u8, 221u8, 129u8, + 84u8, 66u8, 181u8, 236u8, 1u8, 138u8, 130u8, 119u8, 81u8, 200u8, 50u8, 170u8, + 255u8, 100u8, 235u8, 165u8, 214u8, 210u8, 221u8, + ], + [ + 142u8, 132u8, 133u8, 88u8, 58u8, 35u8, 16u8, 212u8, 31u8, 124u8, 130u8, 185u8, + 66u8, 125u8, 11u8, 212u8, 155u8, 173u8, 116u8, 187u8, 156u8, 255u8, 157u8, 52u8, + 2u8, 162u8, 157u8, 143u8, 155u8, 40u8, 160u8, 226u8, + ], + [ + 144u8, 9u8, 171u8, 21u8, 62u8, 128u8, 20u8, 251u8, 251u8, 2u8, 242u8, 33u8, 127u8, + 92u8, 222u8, 122u8, 167u8, 249u8, 173u8, 115u8, 74u8, 232u8, 92u8, 163u8, 238u8, + 63u8, 76u8, 162u8, 253u8, 212u8, 153u8, 249u8, + ], + [ + 175u8, 160u8, 3u8, 205u8, 118u8, 248u8, 127u8, 249u8, 214u8, 43u8, 53u8, 190u8, + 234u8, 136u8, 153u8, 32u8, 243u8, 60u8, 12u8, 66u8, 184u8, 212u8, 91u8, 116u8, + 149u8, 77u8, 97u8, 213u8, 15u8, 75u8, 107u8, 105u8, + ], + [ + 195u8, 238u8, 159u8, 46u8, 95u8, 218u8, 152u8, 232u8, 6u8, 106u8, 31u8, 116u8, + 91u8, 45u8, 249u8, 40u8, 95u8, 65u8, 111u8, 233u8, 140u8, 242u8, 85u8, 156u8, + 210u8, 20u8, 132u8, 179u8, 216u8, 116u8, 51u8, 4u8, + ], + [ + 201u8, 112u8, 152u8, 194u8, 246u8, 88u8, 128u8, 11u8, 77u8, 242u8, 144u8, 1u8, + 82u8, 127u8, 115u8, 36u8, 188u8, 223u8, 252u8, 246u8, 232u8, 117u8, 26u8, 105u8, + 154u8, 185u8, 32u8, 161u8, 236u8, 237u8, 91u8, 29u8, + ], + [ + 240u8, 237u8, 223u8, 7u8, 230u8, 234u8, 20u8, 243u8, 136u8, 180u8, 126u8, 30u8, + 148u8, 160u8, 244u8, 100u8, 236u8, 189u8, 158u8, 237u8, 65u8, 113u8, 19u8, 14u8, + 15u8, 192u8, 233u8, 159u8, 180u8, 3u8, 10u8, 138u8, + ], + [ + 254u8, 190u8, 92u8, 210u8, 75u8, 44u8, 188u8, 123u8, 6u8, 91u8, 157u8, 15u8, 222u8, + 185u8, 4u8, 70u8, 30u8, 74u8, 252u8, 255u8, 87u8, 221u8, 87u8, 172u8, 218u8, 30u8, + 120u8, 50u8, 3u8, 27u8, 167u8, 172u8, + ], + [ + 254u8, 227u8, 9u8, 102u8, 162u8, 86u8, 183u8, 30u8, 20u8, 188u8, 14u8, 191u8, + 201u8, 67u8, 21u8, 226u8, 142u8, 244u8, 169u8, 122u8, 113u8, 49u8, 169u8, 226u8, + 183u8, 163u8, 16u8, 167u8, 58u8, 244u8, 70u8, 118u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IDelegationManagerEvents { + const NAME: &'static str = "IDelegationManagerEvents"; + const COUNT: usize = 12usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some( + ::SIGNATURE_HASH, + ) => ::decode_raw_log( + topics, data, validate, + ) + .map(Self::MinWithdrawalDelayBlocksSet), + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorDetailsModified) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorMetadataURIUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorRegistered) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorSharesDecreased) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorSharesIncreased) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::StakerDelegated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::StakerForceUndelegated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::StakerUndelegated) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::StrategyWithdrawalDelayBlocksSet) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::WithdrawalCompleted) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::WithdrawalQueued) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for IDelegationManagerEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::MinWithdrawalDelayBlocksSet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorDetailsModified(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorMetadataURIUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorRegistered(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorSharesDecreased(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorSharesIncreased(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::StakerDelegated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::StakerForceUndelegated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::StakerUndelegated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::StrategyWithdrawalDelayBlocksSet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::WithdrawalCompleted(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::WithdrawalQueued(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::MinWithdrawalDelayBlocksSet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorDetailsModified(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorMetadataURIUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorRegistered(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorSharesDecreased(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorSharesIncreased(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::StakerDelegated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::StakerForceUndelegated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::StakerUndelegated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::StrategyWithdrawalDelayBlocksSet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::WithdrawalCompleted(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::WithdrawalQueued(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IDelegationManager`](self) contract instance. + + See the [wrapper's documentation](`IDelegationManagerInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IDelegationManagerInstance { + IDelegationManagerInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + IDelegationManagerInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IDelegationManagerInstance::::deploy_builder(provider) + } + /**A [`IDelegationManager`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IDelegationManager`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IDelegationManagerInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IDelegationManagerInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IDelegationManagerInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IDelegationManagerInstance + { + /**Creates a new wrapper around an on-chain [`IDelegationManager`](self) contract instance. + + See the [wrapper's documentation](`IDelegationManagerInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IDelegationManagerInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IDelegationManagerInstance { + IDelegationManagerInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IDelegationManagerInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`DELEGATION_APPROVAL_TYPEHASH`] function. + pub fn DELEGATION_APPROVAL_TYPEHASH( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&DELEGATION_APPROVAL_TYPEHASHCall {}) + } + ///Creates a new call builder for the [`DOMAIN_TYPEHASH`] function. + pub fn DOMAIN_TYPEHASH( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&DOMAIN_TYPEHASHCall {}) + } + ///Creates a new call builder for the [`STAKER_DELEGATION_TYPEHASH`] function. + pub fn STAKER_DELEGATION_TYPEHASH( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&STAKER_DELEGATION_TYPEHASHCall {}) + } + ///Creates a new call builder for the [`beaconChainETHStrategy`] function. + pub fn beaconChainETHStrategy( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&beaconChainETHStrategyCall {}) + } + ///Creates a new call builder for the [`calculateCurrentStakerDelegationDigestHash`] function. + pub fn calculateCurrentStakerDelegationDigestHash( + &self, + staker: alloy::sol_types::private::Address, + operator: alloy::sol_types::private::Address, + expiry: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&calculateCurrentStakerDelegationDigestHashCall { + staker, + operator, + expiry, + }) + } + ///Creates a new call builder for the [`calculateDelegationApprovalDigestHash`] function. + pub fn calculateDelegationApprovalDigestHash( + &self, + staker: alloy::sol_types::private::Address, + operator: alloy::sol_types::private::Address, + _delegationApprover: alloy::sol_types::private::Address, + approverSalt: alloy::sol_types::private::FixedBytes<32>, + expiry: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&calculateDelegationApprovalDigestHashCall { + staker, + operator, + _delegationApprover, + approverSalt, + expiry, + }) + } + ///Creates a new call builder for the [`calculateStakerDelegationDigestHash`] function. + pub fn calculateStakerDelegationDigestHash( + &self, + staker: alloy::sol_types::private::Address, + _stakerNonce: alloy::sol_types::private::primitives::aliases::U256, + operator: alloy::sol_types::private::Address, + expiry: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&calculateStakerDelegationDigestHashCall { + staker, + _stakerNonce, + operator, + expiry, + }) + } + ///Creates a new call builder for the [`calculateWithdrawalRoot`] function. + pub fn calculateWithdrawalRoot( + &self, + withdrawal: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&calculateWithdrawalRootCall { withdrawal }) + } + ///Creates a new call builder for the [`completeQueuedWithdrawal`] function. + pub fn completeQueuedWithdrawal( + &self, + withdrawal: ::RustType, + tokens: alloy::sol_types::private::Vec, + middlewareTimesIndex: alloy::sol_types::private::primitives::aliases::U256, + receiveAsTokens: bool, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&completeQueuedWithdrawalCall { + withdrawal, + tokens, + middlewareTimesIndex, + receiveAsTokens, + }) + } + ///Creates a new call builder for the [`completeQueuedWithdrawals`] function. + pub fn completeQueuedWithdrawals( + &self, + withdrawals: alloy::sol_types::private::Vec< + ::RustType, + >, + tokens: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec, + >, + middlewareTimesIndexes: alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + receiveAsTokens: alloy::sol_types::private::Vec, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&completeQueuedWithdrawalsCall { + withdrawals, + tokens, + middlewareTimesIndexes, + receiveAsTokens, + }) + } + ///Creates a new call builder for the [`cumulativeWithdrawalsQueued`] function. + pub fn cumulativeWithdrawalsQueued( + &self, + staker: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&cumulativeWithdrawalsQueuedCall { staker }) + } + ///Creates a new call builder for the [`decreaseDelegatedShares`] function. + pub fn decreaseDelegatedShares( + &self, + staker: alloy::sol_types::private::Address, + strategy: alloy::sol_types::private::Address, + shares: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&decreaseDelegatedSharesCall { + staker, + strategy, + shares, + }) + } + ///Creates a new call builder for the [`delegateTo`] function. + pub fn delegateTo( + &self, + operator: alloy::sol_types::private::Address, + approverSignatureAndExpiry: ::RustType, + approverSalt: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&delegateToCall { + operator, + approverSignatureAndExpiry, + approverSalt, + }) + } + ///Creates a new call builder for the [`delegateToBySignature`] function. + pub fn delegateToBySignature( + &self, + staker: alloy::sol_types::private::Address, + operator: alloy::sol_types::private::Address, + stakerSignatureAndExpiry: ::RustType, + approverSignatureAndExpiry: ::RustType, + approverSalt: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&delegateToBySignatureCall { + staker, + operator, + stakerSignatureAndExpiry, + approverSignatureAndExpiry, + approverSalt, + }) + } + ///Creates a new call builder for the [`delegatedTo`] function. + pub fn delegatedTo( + &self, + staker: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&delegatedToCall { staker }) + } + ///Creates a new call builder for the [`delegationApprover`] function. + pub fn delegationApprover( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&delegationApproverCall { operator }) + } + ///Creates a new call builder for the [`delegationApproverSaltIsSpent`] function. + pub fn delegationApproverSaltIsSpent( + &self, + _delegationApprover: alloy::sol_types::private::Address, + salt: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&delegationApproverSaltIsSpentCall { + _delegationApprover, + salt, + }) + } + ///Creates a new call builder for the [`domainSeparator`] function. + pub fn domainSeparator( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&domainSeparatorCall {}) + } + ///Creates a new call builder for the [`getOperatorShares`] function. + pub fn getOperatorShares( + &self, + operator: alloy::sol_types::private::Address, + strategies: alloy::sol_types::private::Vec, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorSharesCall { + operator, + strategies, + }) + } + ///Creates a new call builder for the [`getWithdrawalDelay`] function. + pub fn getWithdrawalDelay( + &self, + strategies: alloy::sol_types::private::Vec, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getWithdrawalDelayCall { strategies }) + } + ///Creates a new call builder for the [`increaseDelegatedShares`] function. + pub fn increaseDelegatedShares( + &self, + staker: alloy::sol_types::private::Address, + strategy: alloy::sol_types::private::Address, + shares: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&increaseDelegatedSharesCall { + staker, + strategy, + shares, + }) + } + ///Creates a new call builder for the [`isDelegated`] function. + pub fn isDelegated( + &self, + staker: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&isDelegatedCall { staker }) + } + ///Creates a new call builder for the [`isOperator`] function. + pub fn isOperator( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&isOperatorCall { operator }) + } + ///Creates a new call builder for the [`minWithdrawalDelayBlocks`] function. + pub fn minWithdrawalDelayBlocks( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&minWithdrawalDelayBlocksCall {}) + } + ///Creates a new call builder for the [`modifyOperatorDetails`] function. + pub fn modifyOperatorDetails( + &self, + newOperatorDetails: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&modifyOperatorDetailsCall { newOperatorDetails }) + } + ///Creates a new call builder for the [`operatorDetails`] function. + pub fn operatorDetails( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&operatorDetailsCall { operator }) + } + ///Creates a new call builder for the [`operatorShares`] function. + pub fn operatorShares( + &self, + operator: alloy::sol_types::private::Address, + strategy: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&operatorSharesCall { operator, strategy }) + } + ///Creates a new call builder for the [`queueWithdrawals`] function. + pub fn queueWithdrawals( + &self, + queuedWithdrawalParams: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&queueWithdrawalsCall { + queuedWithdrawalParams, + }) + } + ///Creates a new call builder for the [`registerAsOperator`] function. + pub fn registerAsOperator( + &self, + registeringOperatorDetails: ::RustType, + metadataURI: alloy::sol_types::private::String, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterAsOperatorCall { + registeringOperatorDetails, + metadataURI, + }) + } + ///Creates a new call builder for the [`stakerNonce`] function. + pub fn stakerNonce( + &self, + staker: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&stakerNonceCall { staker }) + } + ///Creates a new call builder for the [`stakerOptOutWindowBlocks`] function. + pub fn stakerOptOutWindowBlocks( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&stakerOptOutWindowBlocksCall { operator }) + } + ///Creates a new call builder for the [`strategyWithdrawalDelayBlocks`] function. + pub fn strategyWithdrawalDelayBlocks( + &self, + strategy: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&strategyWithdrawalDelayBlocksCall { strategy }) + } + ///Creates a new call builder for the [`undelegate`] function. + pub fn undelegate( + &self, + staker: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&undelegateCall { staker }) + } + ///Creates a new call builder for the [`updateOperatorMetadataURI`] function. + pub fn updateOperatorMetadataURI( + &self, + metadataURI: alloy::sol_types::private::String, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateOperatorMetadataURICall { metadataURI }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IDelegationManagerInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`MinWithdrawalDelayBlocksSet`] event. + pub fn MinWithdrawalDelayBlocksSet_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorDetailsModified`] event. + pub fn OperatorDetailsModified_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorMetadataURIUpdated`] event. + pub fn OperatorMetadataURIUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorRegistered`] event. + pub fn OperatorRegistered_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorSharesDecreased`] event. + pub fn OperatorSharesDecreased_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorSharesIncreased`] event. + pub fn OperatorSharesIncreased_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`StakerDelegated`] event. + pub fn StakerDelegated_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`StakerForceUndelegated`] event. + pub fn StakerForceUndelegated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`StakerUndelegated`] event. + pub fn StakerUndelegated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`StrategyWithdrawalDelayBlocksSet`] event. + pub fn StrategyWithdrawalDelayBlocksSet_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`WithdrawalCompleted`] event. + pub fn WithdrawalCompleted_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`WithdrawalQueued`] event. + pub fn WithdrawalQueued_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/ieigenpod.rs b/crates/utils/src/ieigenpod.rs new file mode 100644 index 00000000..91f3e831 --- /dev/null +++ b/crates/utils/src/ieigenpod.rs @@ -0,0 +1,6840 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library BeaconChainProofs { + struct StateRootProof { bytes32 beaconStateRoot; bytes proof; } + struct WithdrawalProof { bytes withdrawalProof; bytes slotProof; bytes executionPayloadProof; bytes timestampProof; bytes historicalSummaryBlockRootProof; uint64 blockRootIndex; uint64 historicalSummaryIndex; uint64 withdrawalIndex; bytes32 blockRoot; bytes32 slotRoot; bytes32 timestampRoot; bytes32 executionPayloadRoot; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod BeaconChainProofs { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct StateRootProof { bytes32 beaconStateRoot; bytes proof; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct StateRootProof { + pub beaconStateRoot: alloy::sol_types::private::FixedBytes<32>, + pub proof: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: StateRootProof) -> Self { + (value.beaconStateRoot, value.proof) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for StateRootProof { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + beaconStateRoot: tuple.0, + proof: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for StateRootProof { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for StateRootProof { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.beaconStateRoot), + ::tokenize( + &self.proof, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for StateRootProof { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for StateRootProof { + const NAME: &'static str = "StateRootProof"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "StateRootProof(bytes32 beaconStateRoot,bytes proof)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word( + &self.beaconStateRoot, + ) + .0, + ::eip712_data_word( + &self.proof, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for StateRootProof { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.beaconStateRoot, + ) + + ::topic_preimage_length( + &rust.proof, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.beaconStateRoot, + out, + ); + ::encode_topic_preimage( + &rust.proof, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct WithdrawalProof { bytes withdrawalProof; bytes slotProof; bytes executionPayloadProof; bytes timestampProof; bytes historicalSummaryBlockRootProof; uint64 blockRootIndex; uint64 historicalSummaryIndex; uint64 withdrawalIndex; bytes32 blockRoot; bytes32 slotRoot; bytes32 timestampRoot; bytes32 executionPayloadRoot; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct WithdrawalProof { + pub withdrawalProof: alloy::sol_types::private::Bytes, + pub slotProof: alloy::sol_types::private::Bytes, + pub executionPayloadProof: alloy::sol_types::private::Bytes, + pub timestampProof: alloy::sol_types::private::Bytes, + pub historicalSummaryBlockRootProof: alloy::sol_types::private::Bytes, + pub blockRootIndex: u64, + pub historicalSummaryIndex: u64, + pub withdrawalIndex: u64, + pub blockRoot: alloy::sol_types::private::FixedBytes<32>, + pub slotRoot: alloy::sol_types::private::FixedBytes<32>, + pub timestampRoot: alloy::sol_types::private::FixedBytes<32>, + pub executionPayloadRoot: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::Bytes, + alloy::sol_types::private::Bytes, + alloy::sol_types::private::Bytes, + alloy::sol_types::private::Bytes, + u64, + u64, + u64, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: WithdrawalProof) -> Self { + ( + value.withdrawalProof, + value.slotProof, + value.executionPayloadProof, + value.timestampProof, + value.historicalSummaryBlockRootProof, + value.blockRootIndex, + value.historicalSummaryIndex, + value.withdrawalIndex, + value.blockRoot, + value.slotRoot, + value.timestampRoot, + value.executionPayloadRoot, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for WithdrawalProof { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + withdrawalProof: tuple.0, + slotProof: tuple.1, + executionPayloadProof: tuple.2, + timestampProof: tuple.3, + historicalSummaryBlockRootProof: tuple.4, + blockRootIndex: tuple.5, + historicalSummaryIndex: tuple.6, + withdrawalIndex: tuple.7, + blockRoot: tuple.8, + slotRoot: tuple.9, + timestampRoot: tuple.10, + executionPayloadRoot: tuple.11, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for WithdrawalProof { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for WithdrawalProof { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.withdrawalProof, + ), + ::tokenize( + &self.slotProof, + ), + ::tokenize( + &self.executionPayloadProof, + ), + ::tokenize( + &self.timestampProof, + ), + ::tokenize( + &self.historicalSummaryBlockRootProof, + ), + as alloy_sol_types::SolType>::tokenize(&self.blockRootIndex), + as alloy_sol_types::SolType>::tokenize( + &self.historicalSummaryIndex, + ), + as alloy_sol_types::SolType>::tokenize(&self.withdrawalIndex), + as alloy_sol_types::SolType>::tokenize(&self.blockRoot), + as alloy_sol_types::SolType>::tokenize(&self.slotRoot), + as alloy_sol_types::SolType>::tokenize(&self.timestampRoot), + as alloy_sol_types::SolType>::tokenize(&self.executionPayloadRoot), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for WithdrawalProof { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for WithdrawalProof { + const NAME: &'static str = "WithdrawalProof"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "WithdrawalProof(bytes withdrawalProof,bytes slotProof,bytes executionPayloadProof,bytes timestampProof,bytes historicalSummaryBlockRootProof,uint64 blockRootIndex,uint64 historicalSummaryIndex,uint64 withdrawalIndex,bytes32 blockRoot,bytes32 slotRoot,bytes32 timestampRoot,bytes32 executionPayloadRoot)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.withdrawalProof, + ) + .0, + ::eip712_data_word( + &self.slotProof, + ) + .0, + ::eip712_data_word( + &self.executionPayloadProof, + ) + .0, + ::eip712_data_word( + &self.timestampProof, + ) + .0, + ::eip712_data_word( + &self.historicalSummaryBlockRootProof, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.blockRootIndex, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.historicalSummaryIndex, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.withdrawalIndex, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.blockRoot) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.slotRoot) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.timestampRoot) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.executionPayloadRoot, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for WithdrawalProof { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.withdrawalProof, + ) + + ::topic_preimage_length( + &rust.slotProof, + ) + + ::topic_preimage_length( + &rust.executionPayloadProof, + ) + + ::topic_preimage_length( + &rust.timestampProof, + ) + + ::topic_preimage_length( + &rust.historicalSummaryBlockRootProof, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.blockRootIndex, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.historicalSummaryIndex, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.withdrawalIndex, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.blockRoot, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.slotRoot, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.timestampRoot, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.executionPayloadRoot, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.withdrawalProof, + out, + ); + ::encode_topic_preimage( + &rust.slotProof, + out, + ); + ::encode_topic_preimage( + &rust.executionPayloadProof, + out, + ); + ::encode_topic_preimage( + &rust.timestampProof, + out, + ); + ::encode_topic_preimage( + &rust.historicalSummaryBlockRootProof, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.blockRootIndex, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.historicalSummaryIndex, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.withdrawalIndex, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.blockRoot, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.slotRoot, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.timestampRoot, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.executionPayloadRoot, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`BeaconChainProofs`](self) contract instance. + + See the [wrapper's documentation](`BeaconChainProofsInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> BeaconChainProofsInstance { + BeaconChainProofsInstance::::new(address, provider) + } + /**A [`BeaconChainProofs`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`BeaconChainProofs`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct BeaconChainProofsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for BeaconChainProofsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("BeaconChainProofsInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BeaconChainProofsInstance + { + /**Creates a new wrapper around an on-chain [`BeaconChainProofs`](self) contract instance. + + See the [wrapper's documentation](`BeaconChainProofsInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl BeaconChainProofsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> BeaconChainProofsInstance { + BeaconChainProofsInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BeaconChainProofsInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BeaconChainProofsInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library BeaconChainProofs { + struct StateRootProof { + bytes32 beaconStateRoot; + bytes proof; + } + struct WithdrawalProof { + bytes withdrawalProof; + bytes slotProof; + bytes executionPayloadProof; + bytes timestampProof; + bytes historicalSummaryBlockRootProof; + uint64 blockRootIndex; + uint64 historicalSummaryIndex; + uint64 withdrawalIndex; + bytes32 blockRoot; + bytes32 slotRoot; + bytes32 timestampRoot; + bytes32 executionPayloadRoot; + } +} + +interface IEigenPod { + type VALIDATOR_STATUS is uint8; + struct ValidatorInfo { + uint64 validatorIndex; + uint64 restakedBalanceGwei; + uint64 mostRecentBalanceUpdateTimestamp; + VALIDATOR_STATUS status; + } + + event EigenPodStaked(bytes pubkey); + event FullWithdrawalRedeemed(uint40 validatorIndex, uint64 withdrawalTimestamp, address indexed recipient, uint64 withdrawalAmountGwei); + event NonBeaconChainETHReceived(uint256 amountReceived); + event NonBeaconChainETHWithdrawn(address indexed recipient, uint256 amountWithdrawn); + event PartialWithdrawalRedeemed(uint40 validatorIndex, uint64 withdrawalTimestamp, address indexed recipient, uint64 partialWithdrawalAmountGwei); + event RestakedBeaconChainETHWithdrawn(address indexed recipient, uint256 amount); + event RestakingActivated(address indexed podOwner); + event ValidatorBalanceUpdated(uint40 validatorIndex, uint64 balanceTimestamp, uint64 newValidatorBalanceGwei); + event ValidatorRestaked(uint40 validatorIndex); + + function MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR() external view returns (uint64); + function activateRestaking() external; + function eigenPodManager() external view returns (address); + function hasRestaked() external view returns (bool); + function initialize(address owner) external; + function mostRecentWithdrawalTimestamp() external view returns (uint64); + function nonBeaconChainETHBalanceWei() external view returns (uint256); + function podOwner() external view returns (address); + function provenWithdrawal(bytes32 validatorPubkeyHash, uint64 slot) external view returns (bool); + function recoverTokens(address[] memory tokenList, uint256[] memory amountsToWithdraw, address recipient) external; + function stake(bytes memory pubkey, bytes memory signature, bytes32 depositDataRoot) external payable; + function validatorPubkeyHashToInfo(bytes32 validatorPubkeyHash) external view returns (ValidatorInfo memory); + function validatorPubkeyToInfo(bytes memory validatorPubkey) external view returns (ValidatorInfo memory); + function validatorStatus(bytes memory validatorPubkey) external view returns (VALIDATOR_STATUS); + function validatorStatus(bytes32 pubkeyHash) external view returns (VALIDATOR_STATUS); + function verifyAndProcessWithdrawals(uint64 oracleTimestamp, BeaconChainProofs.StateRootProof memory stateRootProof, BeaconChainProofs.WithdrawalProof[] memory withdrawalProofs, bytes[] memory validatorFieldsProofs, bytes32[][] memory validatorFields, bytes32[][] memory withdrawalFields) external; + function verifyBalanceUpdates(uint64 oracleTimestamp, uint40[] memory validatorIndices, BeaconChainProofs.StateRootProof memory stateRootProof, bytes[] memory validatorFieldsProofs, bytes32[][] memory validatorFields) external; + function verifyWithdrawalCredentials(uint64 oracleTimestamp, BeaconChainProofs.StateRootProof memory stateRootProof, uint40[] memory validatorIndices, bytes[] memory withdrawalCredentialProofs, bytes32[][] memory validatorFields) external; + function withdrawBeforeRestaking() external; + function withdrawNonBeaconChainETHBalanceWei(address recipient, uint256 amountToWithdraw) external; + function withdrawRestakedBeaconChainETH(address recipient, uint256 amount) external; + function withdrawableRestakedExecutionLayerGwei() external view returns (uint64); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "activateRestaking", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "eigenPodManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IEigenPodManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "hasRestaked", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "mostRecentWithdrawalTimestamp", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "nonBeaconChainETHBalanceWei", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "podOwner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "provenWithdrawal", + "inputs": [ + { + "name": "validatorPubkeyHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "slot", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "recoverTokens", + "inputs": [ + { + "name": "tokenList", + "type": "address[]", + "internalType": "contract IERC20[]" + }, + { + "name": "amountsToWithdraw", + "type": "uint256[]", + "internalType": "uint256[]" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "stake", + "inputs": [ + { + "name": "pubkey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "depositDataRoot", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "validatorPubkeyHashToInfo", + "inputs": [ + { + "name": "validatorPubkeyHash", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IEigenPod.ValidatorInfo", + "components": [ + { + "name": "validatorIndex", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "restakedBalanceGwei", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "mostRecentBalanceUpdateTimestamp", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "status", + "type": "uint8", + "internalType": "enum IEigenPod.VALIDATOR_STATUS" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "validatorPubkeyToInfo", + "inputs": [ + { + "name": "validatorPubkey", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IEigenPod.ValidatorInfo", + "components": [ + { + "name": "validatorIndex", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "restakedBalanceGwei", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "mostRecentBalanceUpdateTimestamp", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "status", + "type": "uint8", + "internalType": "enum IEigenPod.VALIDATOR_STATUS" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "validatorStatus", + "inputs": [ + { + "name": "validatorPubkey", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "enum IEigenPod.VALIDATOR_STATUS" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "validatorStatus", + "inputs": [ + { + "name": "pubkeyHash", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "enum IEigenPod.VALIDATOR_STATUS" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "verifyAndProcessWithdrawals", + "inputs": [ + { + "name": "oracleTimestamp", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "stateRootProof", + "type": "tuple", + "internalType": "struct BeaconChainProofs.StateRootProof", + "components": [ + { + "name": "beaconStateRoot", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "proof", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "withdrawalProofs", + "type": "tuple[]", + "internalType": "struct BeaconChainProofs.WithdrawalProof[]", + "components": [ + { + "name": "withdrawalProof", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "slotProof", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "executionPayloadProof", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "timestampProof", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "historicalSummaryBlockRootProof", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "blockRootIndex", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "historicalSummaryIndex", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "withdrawalIndex", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "blockRoot", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "slotRoot", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "timestampRoot", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "executionPayloadRoot", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validatorFieldsProofs", + "type": "bytes[]", + "internalType": "bytes[]" + }, + { + "name": "validatorFields", + "type": "bytes32[][]", + "internalType": "bytes32[][]" + }, + { + "name": "withdrawalFields", + "type": "bytes32[][]", + "internalType": "bytes32[][]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "verifyBalanceUpdates", + "inputs": [ + { + "name": "oracleTimestamp", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "validatorIndices", + "type": "uint40[]", + "internalType": "uint40[]" + }, + { + "name": "stateRootProof", + "type": "tuple", + "internalType": "struct BeaconChainProofs.StateRootProof", + "components": [ + { + "name": "beaconStateRoot", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "proof", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validatorFieldsProofs", + "type": "bytes[]", + "internalType": "bytes[]" + }, + { + "name": "validatorFields", + "type": "bytes32[][]", + "internalType": "bytes32[][]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "verifyWithdrawalCredentials", + "inputs": [ + { + "name": "oracleTimestamp", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "stateRootProof", + "type": "tuple", + "internalType": "struct BeaconChainProofs.StateRootProof", + "components": [ + { + "name": "beaconStateRoot", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "proof", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validatorIndices", + "type": "uint40[]", + "internalType": "uint40[]" + }, + { + "name": "withdrawalCredentialProofs", + "type": "bytes[]", + "internalType": "bytes[]" + }, + { + "name": "validatorFields", + "type": "bytes32[][]", + "internalType": "bytes32[][]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "withdrawBeforeRestaking", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "withdrawNonBeaconChainETHBalanceWei", + "inputs": [ + { + "name": "recipient", + "type": "address", + "internalType": "address" + }, + { + "name": "amountToWithdraw", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "withdrawRestakedBeaconChainETH", + "inputs": [ + { + "name": "recipient", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "withdrawableRestakedExecutionLayerGwei", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "EigenPodStaked", + "inputs": [ + { + "name": "pubkey", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "FullWithdrawalRedeemed", + "inputs": [ + { + "name": "validatorIndex", + "type": "uint40", + "indexed": false, + "internalType": "uint40" + }, + { + "name": "withdrawalTimestamp", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + }, + { + "name": "recipient", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "withdrawalAmountGwei", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "NonBeaconChainETHReceived", + "inputs": [ + { + "name": "amountReceived", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "NonBeaconChainETHWithdrawn", + "inputs": [ + { + "name": "recipient", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amountWithdrawn", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "PartialWithdrawalRedeemed", + "inputs": [ + { + "name": "validatorIndex", + "type": "uint40", + "indexed": false, + "internalType": "uint40" + }, + { + "name": "withdrawalTimestamp", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + }, + { + "name": "recipient", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "partialWithdrawalAmountGwei", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RestakedBeaconChainETHWithdrawn", + "inputs": [ + { + "name": "recipient", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RestakingActivated", + "inputs": [ + { + "name": "podOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ValidatorBalanceUpdated", + "inputs": [ + { + "name": "validatorIndex", + "type": "uint40", + "indexed": false, + "internalType": "uint40" + }, + { + "name": "balanceTimestamp", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + }, + { + "name": "newValidatorBalanceGwei", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ValidatorRestaked", + "inputs": [ + { + "name": "validatorIndex", + "type": "uint40", + "indexed": false, + "internalType": "uint40" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IEigenPod { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct VALIDATOR_STATUS(u8); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for u8 { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> + { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::Uint<8>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self).0 + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size( + self, + ) + } + } + #[automatically_derived] + impl VALIDATOR_STATUS { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: u8) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> u8 { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for VALIDATOR_STATUS { + type RustType = u8; + type Token<'a> = + as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for VALIDATOR_STATUS { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic( + rust, + ) + } + } + }; + /**```solidity + struct ValidatorInfo { uint64 validatorIndex; uint64 restakedBalanceGwei; uint64 mostRecentBalanceUpdateTimestamp; VALIDATOR_STATUS status; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ValidatorInfo { + pub validatorIndex: u64, + pub restakedBalanceGwei: u64, + pub mostRecentBalanceUpdateTimestamp: u64, + pub status: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + VALIDATOR_STATUS, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u64, + u64, + u64, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ValidatorInfo) -> Self { + ( + value.validatorIndex, + value.restakedBalanceGwei, + value.mostRecentBalanceUpdateTimestamp, + value.status, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ValidatorInfo { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + validatorIndex: tuple.0, + restakedBalanceGwei: tuple.1, + mostRecentBalanceUpdateTimestamp: tuple.2, + status: tuple.3, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ValidatorInfo { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ValidatorInfo { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.validatorIndex, + ), + as alloy_sol_types::SolType>::tokenize( + &self.restakedBalanceGwei, + ), + as alloy_sol_types::SolType>::tokenize( + &self.mostRecentBalanceUpdateTimestamp, + ), + ::tokenize(&self.status), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for ValidatorInfo { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for ValidatorInfo { + const NAME: &'static str = "ValidatorInfo"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ValidatorInfo(uint64 validatorIndex,uint64 restakedBalanceGwei,uint64 mostRecentBalanceUpdateTimestamp,uint8 status)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word( + &self.validatorIndex, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.restakedBalanceGwei, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.mostRecentBalanceUpdateTimestamp, + ) + .0, + ::eip712_data_word( + &self.status, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ValidatorInfo { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.validatorIndex, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.restakedBalanceGwei, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.mostRecentBalanceUpdateTimestamp, + ) + + ::topic_preimage_length( + &rust.status, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.validatorIndex, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.restakedBalanceGwei, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.mostRecentBalanceUpdateTimestamp, + out, + ); + ::encode_topic_preimage( + &rust.status, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**Event with signature `EigenPodStaked(bytes)` and selector `0x606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23`. + ```solidity + event EigenPodStaked(bytes pubkey); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct EigenPodStaked { + #[allow(missing_docs)] + pub pubkey: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for EigenPodStaked { + type DataTuple<'a> = (alloy::sol_types::sol_data::Bytes,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "EigenPodStaked(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 96u8, 104u8, 101u8, 183u8, 147u8, 74u8, 37u8, 212u8, 174u8, 212u8, 63u8, 108u8, + 219u8, 66u8, 100u8, 3u8, 53u8, 63u8, 164u8, 179u8, 0u8, 156u8, 77u8, 34u8, + 132u8, 7u8, 71u8, 69u8, 129u8, 176u8, 30u8, 35u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { pubkey: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.pubkey, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for EigenPodStaked { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&EigenPodStaked> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &EigenPodStaked) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `FullWithdrawalRedeemed(uint40,uint64,address,uint64)` and selector `0xb76a93bb649ece524688f1a01d184e0bbebcda58eae80c28a898bec3fb5a0963`. + ```solidity + event FullWithdrawalRedeemed(uint40 validatorIndex, uint64 withdrawalTimestamp, address indexed recipient, uint64 withdrawalAmountGwei); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct FullWithdrawalRedeemed { + #[allow(missing_docs)] + pub validatorIndex: alloy::sol_types::private::primitives::aliases::U40, + #[allow(missing_docs)] + pub withdrawalTimestamp: u64, + #[allow(missing_docs)] + pub recipient: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub withdrawalAmountGwei: u64, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for FullWithdrawalRedeemed { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<40>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "FullWithdrawalRedeemed(uint40,uint64,address,uint64)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 183u8, 106u8, 147u8, 187u8, 100u8, 158u8, 206u8, 82u8, 70u8, 136u8, 241u8, + 160u8, 29u8, 24u8, 78u8, 11u8, 190u8, 188u8, 218u8, 88u8, 234u8, 232u8, 12u8, + 40u8, 168u8, 152u8, 190u8, 195u8, 251u8, 90u8, 9u8, 99u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + validatorIndex: data.0, + withdrawalTimestamp: data.1, + recipient: topics.1, + withdrawalAmountGwei: data.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.validatorIndex, + ), + as alloy_sol_types::SolType>::tokenize( + &self.withdrawalTimestamp, + ), + as alloy_sol_types::SolType>::tokenize( + &self.withdrawalAmountGwei, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.recipient.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.recipient, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for FullWithdrawalRedeemed { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&FullWithdrawalRedeemed> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &FullWithdrawalRedeemed) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `NonBeaconChainETHReceived(uint256)` and selector `0x6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf49`. + ```solidity + event NonBeaconChainETHReceived(uint256 amountReceived); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct NonBeaconChainETHReceived { + #[allow(missing_docs)] + pub amountReceived: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for NonBeaconChainETHReceived { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "NonBeaconChainETHReceived(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 111u8, 221u8, 61u8, 189u8, 177u8, 115u8, 41u8, 150u8, 8u8, 192u8, 170u8, 159u8, + 54u8, 135u8, 53u8, 133u8, 124u8, 136u8, 66u8, 181u8, 129u8, 248u8, 56u8, 146u8, + 56u8, 191u8, 5u8, 189u8, 4u8, 179u8, 191u8, 73u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + amountReceived: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.amountReceived, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for NonBeaconChainETHReceived { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&NonBeaconChainETHReceived> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &NonBeaconChainETHReceived) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `NonBeaconChainETHWithdrawn(address,uint256)` and selector `0x30420aacd028abb3c1fd03aba253ae725d6ddd52d16c9ac4cb5742cd43f53096`. + ```solidity + event NonBeaconChainETHWithdrawn(address indexed recipient, uint256 amountWithdrawn); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct NonBeaconChainETHWithdrawn { + #[allow(missing_docs)] + pub recipient: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub amountWithdrawn: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for NonBeaconChainETHWithdrawn { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "NonBeaconChainETHWithdrawn(address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 48u8, 66u8, 10u8, 172u8, 208u8, 40u8, 171u8, 179u8, 193u8, 253u8, 3u8, 171u8, + 162u8, 83u8, 174u8, 114u8, 93u8, 109u8, 221u8, 82u8, 209u8, 108u8, 154u8, + 196u8, 203u8, 87u8, 66u8, 205u8, 67u8, 245u8, 48u8, 150u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + recipient: topics.1, + amountWithdrawn: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.amountWithdrawn, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.recipient.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.recipient, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for NonBeaconChainETHWithdrawn { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&NonBeaconChainETHWithdrawn> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &NonBeaconChainETHWithdrawn) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `PartialWithdrawalRedeemed(uint40,uint64,address,uint64)` and selector `0x8a7335714231dbd551aaba6314f4a97a14c201e53a3e25e1140325cdf67d7a4e`. + ```solidity + event PartialWithdrawalRedeemed(uint40 validatorIndex, uint64 withdrawalTimestamp, address indexed recipient, uint64 partialWithdrawalAmountGwei); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct PartialWithdrawalRedeemed { + #[allow(missing_docs)] + pub validatorIndex: alloy::sol_types::private::primitives::aliases::U40, + #[allow(missing_docs)] + pub withdrawalTimestamp: u64, + #[allow(missing_docs)] + pub recipient: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub partialWithdrawalAmountGwei: u64, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for PartialWithdrawalRedeemed { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<40>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = + "PartialWithdrawalRedeemed(uint40,uint64,address,uint64)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 138u8, 115u8, 53u8, 113u8, 66u8, 49u8, 219u8, 213u8, 81u8, 170u8, 186u8, 99u8, + 20u8, 244u8, 169u8, 122u8, 20u8, 194u8, 1u8, 229u8, 58u8, 62u8, 37u8, 225u8, + 20u8, 3u8, 37u8, 205u8, 246u8, 125u8, 122u8, 78u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + validatorIndex: data.0, + withdrawalTimestamp: data.1, + recipient: topics.1, + partialWithdrawalAmountGwei: data.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.validatorIndex, + ), + as alloy_sol_types::SolType>::tokenize( + &self.withdrawalTimestamp, + ), + as alloy_sol_types::SolType>::tokenize( + &self.partialWithdrawalAmountGwei, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.recipient.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.recipient, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for PartialWithdrawalRedeemed { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&PartialWithdrawalRedeemed> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &PartialWithdrawalRedeemed) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `RestakedBeaconChainETHWithdrawn(address,uint256)` and selector `0x8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e`. + ```solidity + event RestakedBeaconChainETHWithdrawn(address indexed recipient, uint256 amount); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct RestakedBeaconChainETHWithdrawn { + #[allow(missing_docs)] + pub recipient: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for RestakedBeaconChainETHWithdrawn { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "RestakedBeaconChainETHWithdrawn(address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 137u8, 71u8, 253u8, 44u8, 224u8, 126u8, 249u8, 204u8, 48u8, 44u8, 78u8, 143u8, + 4u8, 97u8, 1u8, 86u8, 21u8, 217u8, 28u8, 232u8, 81u8, 86u8, 72u8, 57u8, 233u8, + 28u8, 200u8, 4u8, 194u8, 244u8, 157u8, 142u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + recipient: topics.1, + amount: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.amount, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.recipient.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.recipient, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for RestakedBeaconChainETHWithdrawn { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&RestakedBeaconChainETHWithdrawn> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &RestakedBeaconChainETHWithdrawn) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `RestakingActivated(address)` and selector `0xca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd`. + ```solidity + event RestakingActivated(address indexed podOwner); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct RestakingActivated { + #[allow(missing_docs)] + pub podOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for RestakingActivated { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "RestakingActivated(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 202u8, 141u8, 252u8, 140u8, 94u8, 10u8, 103u8, 167u8, 69u8, 1u8, 192u8, 114u8, + 163u8, 50u8, 95u8, 104u8, 82u8, 89u8, 190u8, 187u8, 174u8, 124u8, 253u8, 35u8, + 10u8, 184u8, 81u8, 152u8, 167u8, 139u8, 112u8, 205u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { podOwner: topics.1 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.podOwner.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.podOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for RestakingActivated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&RestakingActivated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &RestakingActivated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `ValidatorBalanceUpdated(uint40,uint64,uint64)` and selector `0x0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df`. + ```solidity + event ValidatorBalanceUpdated(uint40 validatorIndex, uint64 balanceTimestamp, uint64 newValidatorBalanceGwei); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct ValidatorBalanceUpdated { + #[allow(missing_docs)] + pub validatorIndex: alloy::sol_types::private::primitives::aliases::U40, + #[allow(missing_docs)] + pub balanceTimestamp: u64, + #[allow(missing_docs)] + pub newValidatorBalanceGwei: u64, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ValidatorBalanceUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<40>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "ValidatorBalanceUpdated(uint40,uint64,uint64)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 14u8, 95u8, 172u8, 23u8, 91u8, 131u8, 23u8, 124u8, 192u8, 71u8, 56u8, 30u8, + 3u8, 13u8, 143u8, 179u8, 180u8, 43u8, 55u8, 189u8, 28u8, 2u8, 94u8, 34u8, + 194u8, 128u8, 250u8, 202u8, 214u8, 44u8, 50u8, 223u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + validatorIndex: data.0, + balanceTimestamp: data.1, + newValidatorBalanceGwei: data.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.validatorIndex, + ), + as alloy_sol_types::SolType>::tokenize( + &self.balanceTimestamp, + ), + as alloy_sol_types::SolType>::tokenize( + &self.newValidatorBalanceGwei, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ValidatorBalanceUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ValidatorBalanceUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ValidatorBalanceUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `ValidatorRestaked(uint40)` and selector `0x2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449`. + ```solidity + event ValidatorRestaked(uint40 validatorIndex); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct ValidatorRestaked { + #[allow(missing_docs)] + pub validatorIndex: alloy::sol_types::private::primitives::aliases::U40, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ValidatorRestaked { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<40>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "ValidatorRestaked(uint40)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 45u8, 8u8, 0u8, 187u8, 195u8, 119u8, 234u8, 84u8, 160u8, 140u8, 93u8, 182u8, + 168u8, 122u8, 175u8, 255u8, 94u8, 62u8, 156u8, 143u8, 234u8, 208u8, 237u8, + 161u8, 16u8, 228u8, 14u8, 12u8, 16u8, 68u8, 20u8, 73u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + validatorIndex: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.validatorIndex, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ValidatorRestaked { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ValidatorRestaked> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ValidatorRestaked) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR()` and selector `0x1d905d5c`. + ```solidity + function MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR() external view returns (uint64); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATORCall {} + ///Container type for the return parameters of the [`MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR()`](MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATORCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATORReturn { + pub _0: u64, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATORCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATORCall + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u64,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATORReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATORReturn + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATORCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATORReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR()"; + const SELECTOR: [u8; 4] = [29u8, 144u8, 93u8, 92u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `activateRestaking()` and selector `0x0cd4649e`. + ```solidity + function activateRestaking() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct activateRestakingCall {} + ///Container type for the return parameters of the [`activateRestaking()`](activateRestakingCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct activateRestakingReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: activateRestakingCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for activateRestakingCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: activateRestakingReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for activateRestakingReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for activateRestakingCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = activateRestakingReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "activateRestaking()"; + const SELECTOR: [u8; 4] = [12u8, 212u8, 100u8, 158u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `eigenPodManager()` and selector `0x4665bcda`. + ```solidity + function eigenPodManager() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct eigenPodManagerCall {} + ///Container type for the return parameters of the [`eigenPodManager()`](eigenPodManagerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct eigenPodManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: eigenPodManagerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for eigenPodManagerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: eigenPodManagerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for eigenPodManagerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for eigenPodManagerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = eigenPodManagerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "eigenPodManager()"; + const SELECTOR: [u8; 4] = [70u8, 101u8, 188u8, 218u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `hasRestaked()` and selector `0x3106ab53`. + ```solidity + function hasRestaked() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct hasRestakedCall {} + ///Container type for the return parameters of the [`hasRestaked()`](hasRestakedCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct hasRestakedReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: hasRestakedCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for hasRestakedCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: hasRestakedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for hasRestakedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for hasRestakedCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = hasRestakedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "hasRestaked()"; + const SELECTOR: [u8; 4] = [49u8, 6u8, 171u8, 83u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `initialize(address)` and selector `0xc4d66de8`. + ```solidity + function initialize(address owner) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeCall { + pub owner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`initialize(address)`](initializeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeCall) -> Self { + (value.owner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { owner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for initializeCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = initializeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "initialize(address)"; + const SELECTOR: [u8; 4] = [196u8, 214u8, 109u8, 232u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.owner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `mostRecentWithdrawalTimestamp()` and selector `0x87e0d289`. + ```solidity + function mostRecentWithdrawalTimestamp() external view returns (uint64); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct mostRecentWithdrawalTimestampCall {} + ///Container type for the return parameters of the [`mostRecentWithdrawalTimestamp()`](mostRecentWithdrawalTimestampCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct mostRecentWithdrawalTimestampReturn { + pub _0: u64, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: mostRecentWithdrawalTimestampCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mostRecentWithdrawalTimestampCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u64,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: mostRecentWithdrawalTimestampReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mostRecentWithdrawalTimestampReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for mostRecentWithdrawalTimestampCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = mostRecentWithdrawalTimestampReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "mostRecentWithdrawalTimestamp()"; + const SELECTOR: [u8; 4] = [135u8, 224u8, 210u8, 137u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `nonBeaconChainETHBalanceWei()` and selector `0xfe80b087`. + ```solidity + function nonBeaconChainETHBalanceWei() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct nonBeaconChainETHBalanceWeiCall {} + ///Container type for the return parameters of the [`nonBeaconChainETHBalanceWei()`](nonBeaconChainETHBalanceWeiCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct nonBeaconChainETHBalanceWeiReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: nonBeaconChainETHBalanceWeiCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for nonBeaconChainETHBalanceWeiCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: nonBeaconChainETHBalanceWeiReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for nonBeaconChainETHBalanceWeiReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for nonBeaconChainETHBalanceWeiCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = nonBeaconChainETHBalanceWeiReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "nonBeaconChainETHBalanceWei()"; + const SELECTOR: [u8; 4] = [254u8, 128u8, 176u8, 135u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `podOwner()` and selector `0x0b18ff66`. + ```solidity + function podOwner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct podOwnerCall {} + ///Container type for the return parameters of the [`podOwner()`](podOwnerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct podOwnerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: podOwnerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for podOwnerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: podOwnerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for podOwnerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for podOwnerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = podOwnerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "podOwner()"; + const SELECTOR: [u8; 4] = [11u8, 24u8, 255u8, 102u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `provenWithdrawal(bytes32,uint64)` and selector `0x34bea20a`. + ```solidity + function provenWithdrawal(bytes32 validatorPubkeyHash, uint64 slot) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct provenWithdrawalCall { + pub validatorPubkeyHash: alloy::sol_types::private::FixedBytes<32>, + pub slot: u64, + } + ///Container type for the return parameters of the [`provenWithdrawal(bytes32,uint64)`](provenWithdrawalCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct provenWithdrawalReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<64>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>, u64); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: provenWithdrawalCall) -> Self { + (value.validatorPubkeyHash, value.slot) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for provenWithdrawalCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + validatorPubkeyHash: tuple.0, + slot: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: provenWithdrawalReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for provenWithdrawalReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for provenWithdrawalCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<64>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = provenWithdrawalReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "provenWithdrawal(bytes32,uint64)"; + const SELECTOR: [u8; 4] = [52u8, 190u8, 162u8, 10u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.validatorPubkeyHash), + as alloy_sol_types::SolType>::tokenize(&self.slot), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `recoverTokens(address[],uint256[],address)` and selector `0xdda3346c`. + ```solidity + function recoverTokens(address[] memory tokenList, uint256[] memory amountsToWithdraw, address recipient) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct recoverTokensCall { + pub tokenList: alloy::sol_types::private::Vec, + pub amountsToWithdraw: + alloy::sol_types::private::Vec, + pub recipient: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`recoverTokens(address[],uint256[],address)`](recoverTokensCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct recoverTokensReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: recoverTokensCall) -> Self { + (value.tokenList, value.amountsToWithdraw, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for recoverTokensCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + tokenList: tuple.0, + amountsToWithdraw: tuple.1, + recipient: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: recoverTokensReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for recoverTokensReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for recoverTokensCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = recoverTokensReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "recoverTokens(address[],uint256[],address)"; + const SELECTOR: [u8; 4] = [221u8, 163u8, 52u8, 108u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.tokenList), + , + > as alloy_sol_types::SolType>::tokenize(&self.amountsToWithdraw), + ::tokenize( + &self.recipient, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `stake(bytes,bytes,bytes32)` and selector `0x9b4e4634`. + ```solidity + function stake(bytes memory pubkey, bytes memory signature, bytes32 depositDataRoot) external payable; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakeCall { + pub pubkey: alloy::sol_types::private::Bytes, + pub signature: alloy::sol_types::private::Bytes, + pub depositDataRoot: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`stake(bytes,bytes,bytes32)`](stakeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakeCall) -> Self { + (value.pubkey, value.signature, value.depositDataRoot) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + pubkey: tuple.0, + signature: tuple.1, + depositDataRoot: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for stakeCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = stakeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "stake(bytes,bytes,bytes32)"; + const SELECTOR: [u8; 4] = [155u8, 78u8, 70u8, 52u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.pubkey, + ), + ::tokenize( + &self.signature, + ), + as alloy_sol_types::SolType>::tokenize(&self.depositDataRoot), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `validatorPubkeyHashToInfo(bytes32)` and selector `0x6fcd0e53`. + ```solidity + function validatorPubkeyHashToInfo(bytes32 validatorPubkeyHash) external view returns (ValidatorInfo memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct validatorPubkeyHashToInfoCall { + pub validatorPubkeyHash: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`validatorPubkeyHashToInfo(bytes32)`](validatorPubkeyHashToInfoCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct validatorPubkeyHashToInfoReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: validatorPubkeyHashToInfoCall) -> Self { + (value.validatorPubkeyHash,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for validatorPubkeyHashToInfoCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + validatorPubkeyHash: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (ValidatorInfo,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: validatorPubkeyHashToInfoReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for validatorPubkeyHashToInfoReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for validatorPubkeyHashToInfoCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = validatorPubkeyHashToInfoReturn; + type ReturnTuple<'a> = (ValidatorInfo,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "validatorPubkeyHashToInfo(bytes32)"; + const SELECTOR: [u8; 4] = [111u8, 205u8, 14u8, 83u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.validatorPubkeyHash), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `validatorPubkeyToInfo(bytes)` and selector `0xb522538a`. + ```solidity + function validatorPubkeyToInfo(bytes memory validatorPubkey) external view returns (ValidatorInfo memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct validatorPubkeyToInfoCall { + pub validatorPubkey: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`validatorPubkeyToInfo(bytes)`](validatorPubkeyToInfoCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct validatorPubkeyToInfoReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bytes,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Bytes,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: validatorPubkeyToInfoCall) -> Self { + (value.validatorPubkey,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for validatorPubkeyToInfoCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + validatorPubkey: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (ValidatorInfo,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: validatorPubkeyToInfoReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for validatorPubkeyToInfoReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for validatorPubkeyToInfoCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Bytes,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = validatorPubkeyToInfoReturn; + type ReturnTuple<'a> = (ValidatorInfo,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "validatorPubkeyToInfo(bytes)"; + const SELECTOR: [u8; 4] = [181u8, 34u8, 83u8, 138u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.validatorPubkey, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `validatorStatus(bytes)` and selector `0x58eaee79`. + ```solidity + function validatorStatus(bytes memory validatorPubkey) external view returns (VALIDATOR_STATUS); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct validatorStatus_0Call { + pub validatorPubkey: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`validatorStatus(bytes)`](validatorStatus_0Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct validatorStatus_0Return { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bytes,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Bytes,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: validatorStatus_0Call) -> Self { + (value.validatorPubkey,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for validatorStatus_0Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + validatorPubkey: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (VALIDATOR_STATUS,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: validatorStatus_0Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for validatorStatus_0Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for validatorStatus_0Call { + type Parameters<'a> = (alloy::sol_types::sol_data::Bytes,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = validatorStatus_0Return; + type ReturnTuple<'a> = (VALIDATOR_STATUS,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "validatorStatus(bytes)"; + const SELECTOR: [u8; 4] = [88u8, 234u8, 238u8, 121u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.validatorPubkey, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `validatorStatus(bytes32)` and selector `0x7439841f`. + ```solidity + function validatorStatus(bytes32 pubkeyHash) external view returns (VALIDATOR_STATUS); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct validatorStatus_1Call { + pub pubkeyHash: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`validatorStatus(bytes32)`](validatorStatus_1Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct validatorStatus_1Return { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: validatorStatus_1Call) -> Self { + (value.pubkeyHash,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for validatorStatus_1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + pubkeyHash: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (VALIDATOR_STATUS,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: validatorStatus_1Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for validatorStatus_1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for validatorStatus_1Call { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = validatorStatus_1Return; + type ReturnTuple<'a> = (VALIDATOR_STATUS,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "validatorStatus(bytes32)"; + const SELECTOR: [u8; 4] = [116u8, 57u8, 132u8, 31u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.pubkeyHash), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `verifyAndProcessWithdrawals(uint64,(bytes32,bytes),(bytes,bytes,bytes,bytes,bytes,uint64,uint64,uint64,bytes32,bytes32,bytes32,bytes32)[],bytes[],bytes32[][],bytes32[][])` and selector `0xe251ef52`. + ```solidity + function verifyAndProcessWithdrawals(uint64 oracleTimestamp, BeaconChainProofs.StateRootProof memory stateRootProof, BeaconChainProofs.WithdrawalProof[] memory withdrawalProofs, bytes[] memory validatorFieldsProofs, bytes32[][] memory validatorFields, bytes32[][] memory withdrawalFields) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct verifyAndProcessWithdrawalsCall { + pub oracleTimestamp: u64, + pub stateRootProof: + ::RustType, + pub withdrawalProofs: alloy::sol_types::private::Vec< + ::RustType, + >, + pub validatorFieldsProofs: alloy::sol_types::private::Vec, + pub validatorFields: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec>, + >, + pub withdrawalFields: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec>, + >, + } + ///Container type for the return parameters of the [`verifyAndProcessWithdrawals(uint64,(bytes32,bytes),(bytes,bytes,bytes,bytes,bytes,uint64,uint64,uint64,bytes32,bytes32,bytes32,bytes32)[],bytes[],bytes32[][],bytes32[][])`](verifyAndProcessWithdrawalsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct verifyAndProcessWithdrawalsReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + BeaconChainProofs::StateRootProof, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array>, + >, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array>, + >, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u64, + ::RustType, + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec>, + >, + alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec>, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: verifyAndProcessWithdrawalsCall) -> Self { + ( + value.oracleTimestamp, + value.stateRootProof, + value.withdrawalProofs, + value.validatorFieldsProofs, + value.validatorFields, + value.withdrawalFields, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for verifyAndProcessWithdrawalsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + oracleTimestamp: tuple.0, + stateRootProof: tuple.1, + withdrawalProofs: tuple.2, + validatorFieldsProofs: tuple.3, + validatorFields: tuple.4, + withdrawalFields: tuple.5, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: verifyAndProcessWithdrawalsReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for verifyAndProcessWithdrawalsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for verifyAndProcessWithdrawalsCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + BeaconChainProofs::StateRootProof, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array>, + >, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array>, + >, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = verifyAndProcessWithdrawalsReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "verifyAndProcessWithdrawals(uint64,(bytes32,bytes),(bytes,bytes,bytes,bytes,bytes,uint64,uint64,uint64,bytes32,bytes32,bytes32,bytes32)[],bytes[],bytes32[][],bytes32[][])"; + const SELECTOR: [u8; 4] = [226u8, 81u8, 239u8, 82u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.oracleTimestamp), + ::tokenize( + &self.stateRootProof, + ), + as alloy_sol_types::SolType>::tokenize(&self.withdrawalProofs), + as alloy_sol_types::SolType>::tokenize( + &self.validatorFieldsProofs, + ), + , + >, + > as alloy_sol_types::SolType>::tokenize(&self.validatorFields), + , + >, + > as alloy_sol_types::SolType>::tokenize(&self.withdrawalFields), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `verifyBalanceUpdates(uint64,uint40[],(bytes32,bytes),bytes[],bytes32[][])` and selector `0xa50600f4`. + ```solidity + function verifyBalanceUpdates(uint64 oracleTimestamp, uint40[] memory validatorIndices, BeaconChainProofs.StateRootProof memory stateRootProof, bytes[] memory validatorFieldsProofs, bytes32[][] memory validatorFields) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct verifyBalanceUpdatesCall { + pub oracleTimestamp: u64, + pub validatorIndices: + alloy::sol_types::private::Vec, + pub stateRootProof: + ::RustType, + pub validatorFieldsProofs: alloy::sol_types::private::Vec, + pub validatorFields: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec>, + >, + } + ///Container type for the return parameters of the [`verifyBalanceUpdates(uint64,uint40[],(bytes32,bytes),bytes[],bytes32[][])`](verifyBalanceUpdatesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct verifyBalanceUpdatesReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Array>, + BeaconChainProofs::StateRootProof, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array>, + >, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u64, + alloy::sol_types::private::Vec, + ::RustType, + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec>, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: verifyBalanceUpdatesCall) -> Self { + ( + value.oracleTimestamp, + value.validatorIndices, + value.stateRootProof, + value.validatorFieldsProofs, + value.validatorFields, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for verifyBalanceUpdatesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + oracleTimestamp: tuple.0, + validatorIndices: tuple.1, + stateRootProof: tuple.2, + validatorFieldsProofs: tuple.3, + validatorFields: tuple.4, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: verifyBalanceUpdatesReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for verifyBalanceUpdatesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for verifyBalanceUpdatesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Array>, + BeaconChainProofs::StateRootProof, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array>, + >, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = verifyBalanceUpdatesReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "verifyBalanceUpdates(uint64,uint40[],(bytes32,bytes),bytes[],bytes32[][])"; + const SELECTOR: [u8; 4] = [165u8, 6u8, 0u8, 244u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.oracleTimestamp), + , + > as alloy_sol_types::SolType>::tokenize(&self.validatorIndices), + ::tokenize( + &self.stateRootProof, + ), + as alloy_sol_types::SolType>::tokenize( + &self.validatorFieldsProofs, + ), + , + >, + > as alloy_sol_types::SolType>::tokenize(&self.validatorFields), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `verifyWithdrawalCredentials(uint64,(bytes32,bytes),uint40[],bytes[],bytes32[][])` and selector `0x3f65cf19`. + ```solidity + function verifyWithdrawalCredentials(uint64 oracleTimestamp, BeaconChainProofs.StateRootProof memory stateRootProof, uint40[] memory validatorIndices, bytes[] memory withdrawalCredentialProofs, bytes32[][] memory validatorFields) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct verifyWithdrawalCredentialsCall { + pub oracleTimestamp: u64, + pub stateRootProof: + ::RustType, + pub validatorIndices: + alloy::sol_types::private::Vec, + pub withdrawalCredentialProofs: + alloy::sol_types::private::Vec, + pub validatorFields: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec>, + >, + } + ///Container type for the return parameters of the [`verifyWithdrawalCredentials(uint64,(bytes32,bytes),uint40[],bytes[],bytes32[][])`](verifyWithdrawalCredentialsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct verifyWithdrawalCredentialsReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + BeaconChainProofs::StateRootProof, + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array>, + >, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u64, + ::RustType, + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec>, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: verifyWithdrawalCredentialsCall) -> Self { + ( + value.oracleTimestamp, + value.stateRootProof, + value.validatorIndices, + value.withdrawalCredentialProofs, + value.validatorFields, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for verifyWithdrawalCredentialsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + oracleTimestamp: tuple.0, + stateRootProof: tuple.1, + validatorIndices: tuple.2, + withdrawalCredentialProofs: tuple.3, + validatorFields: tuple.4, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: verifyWithdrawalCredentialsReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for verifyWithdrawalCredentialsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for verifyWithdrawalCredentialsCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + BeaconChainProofs::StateRootProof, + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array>, + >, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = verifyWithdrawalCredentialsReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "verifyWithdrawalCredentials(uint64,(bytes32,bytes),uint40[],bytes[],bytes32[][])"; + const SELECTOR: [u8; 4] = [63u8, 101u8, 207u8, 25u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.oracleTimestamp), + ::tokenize( + &self.stateRootProof, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.validatorIndices), + as alloy_sol_types::SolType>::tokenize( + &self.withdrawalCredentialProofs, + ), + , + >, + > as alloy_sol_types::SolType>::tokenize(&self.validatorFields), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `withdrawBeforeRestaking()` and selector `0xbaa7145a`. + ```solidity + function withdrawBeforeRestaking() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct withdrawBeforeRestakingCall {} + ///Container type for the return parameters of the [`withdrawBeforeRestaking()`](withdrawBeforeRestakingCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct withdrawBeforeRestakingReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: withdrawBeforeRestakingCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawBeforeRestakingCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: withdrawBeforeRestakingReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawBeforeRestakingReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for withdrawBeforeRestakingCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = withdrawBeforeRestakingReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "withdrawBeforeRestaking()"; + const SELECTOR: [u8; 4] = [186u8, 167u8, 20u8, 90u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `withdrawNonBeaconChainETHBalanceWei(address,uint256)` and selector `0xe2c83445`. + ```solidity + function withdrawNonBeaconChainETHBalanceWei(address recipient, uint256 amountToWithdraw) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct withdrawNonBeaconChainETHBalanceWeiCall { + pub recipient: alloy::sol_types::private::Address, + pub amountToWithdraw: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`withdrawNonBeaconChainETHBalanceWei(address,uint256)`](withdrawNonBeaconChainETHBalanceWeiCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct withdrawNonBeaconChainETHBalanceWeiReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: withdrawNonBeaconChainETHBalanceWeiCall) -> Self { + (value.recipient, value.amountToWithdraw) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawNonBeaconChainETHBalanceWeiCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + recipient: tuple.0, + amountToWithdraw: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: withdrawNonBeaconChainETHBalanceWeiReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawNonBeaconChainETHBalanceWeiReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for withdrawNonBeaconChainETHBalanceWeiCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = withdrawNonBeaconChainETHBalanceWeiReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "withdrawNonBeaconChainETHBalanceWei(address,uint256)"; + const SELECTOR: [u8; 4] = [226u8, 200u8, 52u8, 69u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.recipient, + ), + as alloy_sol_types::SolType>::tokenize( + &self.amountToWithdraw, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `withdrawRestakedBeaconChainETH(address,uint256)` and selector `0xc4907442`. + ```solidity + function withdrawRestakedBeaconChainETH(address recipient, uint256 amount) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct withdrawRestakedBeaconChainETHCall { + pub recipient: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`withdrawRestakedBeaconChainETH(address,uint256)`](withdrawRestakedBeaconChainETHCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct withdrawRestakedBeaconChainETHReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: withdrawRestakedBeaconChainETHCall) -> Self { + (value.recipient, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawRestakedBeaconChainETHCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + recipient: tuple.0, + amount: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: withdrawRestakedBeaconChainETHReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawRestakedBeaconChainETHReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for withdrawRestakedBeaconChainETHCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = withdrawRestakedBeaconChainETHReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "withdrawRestakedBeaconChainETH(address,uint256)"; + const SELECTOR: [u8; 4] = [196u8, 144u8, 116u8, 66u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.recipient, + ), + as alloy_sol_types::SolType>::tokenize( + &self.amount, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `withdrawableRestakedExecutionLayerGwei()` and selector `0x3474aa16`. + ```solidity + function withdrawableRestakedExecutionLayerGwei() external view returns (uint64); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct withdrawableRestakedExecutionLayerGweiCall {} + ///Container type for the return parameters of the [`withdrawableRestakedExecutionLayerGwei()`](withdrawableRestakedExecutionLayerGweiCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct withdrawableRestakedExecutionLayerGweiReturn { + pub _0: u64, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: withdrawableRestakedExecutionLayerGweiCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawableRestakedExecutionLayerGweiCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u64,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: withdrawableRestakedExecutionLayerGweiReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for withdrawableRestakedExecutionLayerGweiReturn + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for withdrawableRestakedExecutionLayerGweiCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = withdrawableRestakedExecutionLayerGweiReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "withdrawableRestakedExecutionLayerGwei()"; + const SELECTOR: [u8; 4] = [52u8, 116u8, 170u8, 22u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IEigenPod`](self) function calls. + pub enum IEigenPodCalls { + MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR(MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATORCall), + activateRestaking(activateRestakingCall), + eigenPodManager(eigenPodManagerCall), + hasRestaked(hasRestakedCall), + initialize(initializeCall), + mostRecentWithdrawalTimestamp(mostRecentWithdrawalTimestampCall), + nonBeaconChainETHBalanceWei(nonBeaconChainETHBalanceWeiCall), + podOwner(podOwnerCall), + provenWithdrawal(provenWithdrawalCall), + recoverTokens(recoverTokensCall), + stake(stakeCall), + validatorPubkeyHashToInfo(validatorPubkeyHashToInfoCall), + validatorPubkeyToInfo(validatorPubkeyToInfoCall), + validatorStatus_0(validatorStatus_0Call), + validatorStatus_1(validatorStatus_1Call), + verifyAndProcessWithdrawals(verifyAndProcessWithdrawalsCall), + verifyBalanceUpdates(verifyBalanceUpdatesCall), + verifyWithdrawalCredentials(verifyWithdrawalCredentialsCall), + withdrawBeforeRestaking(withdrawBeforeRestakingCall), + withdrawNonBeaconChainETHBalanceWei(withdrawNonBeaconChainETHBalanceWeiCall), + withdrawRestakedBeaconChainETH(withdrawRestakedBeaconChainETHCall), + withdrawableRestakedExecutionLayerGwei(withdrawableRestakedExecutionLayerGweiCall), + } + #[automatically_derived] + impl IEigenPodCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [11u8, 24u8, 255u8, 102u8], + [12u8, 212u8, 100u8, 158u8], + [29u8, 144u8, 93u8, 92u8], + [49u8, 6u8, 171u8, 83u8], + [52u8, 116u8, 170u8, 22u8], + [52u8, 190u8, 162u8, 10u8], + [63u8, 101u8, 207u8, 25u8], + [70u8, 101u8, 188u8, 218u8], + [88u8, 234u8, 238u8, 121u8], + [111u8, 205u8, 14u8, 83u8], + [116u8, 57u8, 132u8, 31u8], + [135u8, 224u8, 210u8, 137u8], + [155u8, 78u8, 70u8, 52u8], + [165u8, 6u8, 0u8, 244u8], + [181u8, 34u8, 83u8, 138u8], + [186u8, 167u8, 20u8, 90u8], + [196u8, 144u8, 116u8, 66u8], + [196u8, 214u8, 109u8, 232u8], + [221u8, 163u8, 52u8, 108u8], + [226u8, 81u8, 239u8, 82u8], + [226u8, 200u8, 52u8, 69u8], + [254u8, 128u8, 176u8, 135u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IEigenPodCalls { + const NAME: &'static str = "IEigenPodCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 22usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR(_) => { + ::SELECTOR + } + Self::activateRestaking(_) => { + ::SELECTOR + } + Self::eigenPodManager(_) => { + ::SELECTOR + } + Self::hasRestaked(_) => { + ::SELECTOR + } + Self::initialize(_) => { + ::SELECTOR + } + Self::mostRecentWithdrawalTimestamp(_) => { + ::SELECTOR + } + Self::nonBeaconChainETHBalanceWei(_) => { + ::SELECTOR + } + Self::podOwner(_) => ::SELECTOR, + Self::provenWithdrawal(_) => { + ::SELECTOR + } + Self::recoverTokens(_) => { + ::SELECTOR + } + Self::stake(_) => ::SELECTOR, + Self::validatorPubkeyHashToInfo(_) => { + ::SELECTOR + } + Self::validatorPubkeyToInfo(_) => { + ::SELECTOR + } + Self::validatorStatus_0(_) => { + ::SELECTOR + } + Self::validatorStatus_1(_) => { + ::SELECTOR + } + Self::verifyAndProcessWithdrawals(_) => { + ::SELECTOR + } + Self::verifyBalanceUpdates(_) => { + ::SELECTOR + } + Self::verifyWithdrawalCredentials(_) => { + ::SELECTOR + } + Self::withdrawBeforeRestaking(_) => { + ::SELECTOR + } + Self::withdrawNonBeaconChainETHBalanceWei(_) => { + ::SELECTOR + } + Self::withdrawRestakedBeaconChainETH(_) => { + ::SELECTOR + } + Self::withdrawableRestakedExecutionLayerGwei(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn(&[u8], bool) -> alloy_sol_types::Result] = &[ + { + fn podOwner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IEigenPodCalls::podOwner) + } + podOwner + }, + { + fn activateRestaking( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodCalls::activateRestaking) + } + activateRestaking + }, + { + fn MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IEigenPodCalls::MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR) + } + MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR + }, + { + fn hasRestaked( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodCalls::hasRestaked) + } + hasRestaked + }, + { + fn withdrawableRestakedExecutionLayerGwei( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IEigenPodCalls::withdrawableRestakedExecutionLayerGwei) + } + withdrawableRestakedExecutionLayerGwei + }, + { + fn provenWithdrawal( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodCalls::provenWithdrawal) + } + provenWithdrawal + }, + { + fn verifyWithdrawalCredentials( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IEigenPodCalls::verifyWithdrawalCredentials) + } + verifyWithdrawalCredentials + }, + { + fn eigenPodManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodCalls::eigenPodManager) + } + eigenPodManager + }, + { + fn validatorStatus_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodCalls::validatorStatus_0) + } + validatorStatus_0 + }, + { + fn validatorPubkeyHashToInfo( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodCalls::validatorPubkeyHashToInfo) + } + validatorPubkeyHashToInfo + }, + { + fn validatorStatus_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodCalls::validatorStatus_1) + } + validatorStatus_1 + }, + { + fn mostRecentWithdrawalTimestamp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IEigenPodCalls::mostRecentWithdrawalTimestamp) + } + mostRecentWithdrawalTimestamp + }, + { + fn stake( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IEigenPodCalls::stake) + } + stake + }, + { + fn verifyBalanceUpdates( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodCalls::verifyBalanceUpdates) + } + verifyBalanceUpdates + }, + { + fn validatorPubkeyToInfo( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodCalls::validatorPubkeyToInfo) + } + validatorPubkeyToInfo + }, + { + fn withdrawBeforeRestaking( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodCalls::withdrawBeforeRestaking) + } + withdrawBeforeRestaking + }, + { + fn withdrawRestakedBeaconChainETH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IEigenPodCalls::withdrawRestakedBeaconChainETH) + } + withdrawRestakedBeaconChainETH + }, + { + fn initialize( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IEigenPodCalls::initialize) + } + initialize + }, + { + fn recoverTokens( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodCalls::recoverTokens) + } + recoverTokens + }, + { + fn verifyAndProcessWithdrawals( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IEigenPodCalls::verifyAndProcessWithdrawals) + } + verifyAndProcessWithdrawals + }, + { + fn withdrawNonBeaconChainETHBalanceWei( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IEigenPodCalls::withdrawNonBeaconChainETHBalanceWei) + } + withdrawNonBeaconChainETHBalanceWei + }, + { + fn nonBeaconChainETHBalanceWei( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IEigenPodCalls::nonBeaconChainETHBalanceWei) + } + nonBeaconChainETHBalanceWei + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::activateRestaking(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::eigenPodManager(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::hasRestaked(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::initialize(inner) => { + ::abi_encoded_size(inner) + } + Self::mostRecentWithdrawalTimestamp(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::nonBeaconChainETHBalanceWei(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::podOwner(inner) => { + ::abi_encoded_size(inner) + } + Self::provenWithdrawal(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::recoverTokens(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::stake(inner) => { + ::abi_encoded_size(inner) + } + Self::validatorPubkeyHashToInfo(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::validatorPubkeyToInfo(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::validatorStatus_0(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::validatorStatus_1(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::verifyAndProcessWithdrawals(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::verifyBalanceUpdates(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::verifyWithdrawalCredentials(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::withdrawBeforeRestaking(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::withdrawNonBeaconChainETHBalanceWei(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::withdrawRestakedBeaconChainETH(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::withdrawableRestakedExecutionLayerGwei(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::activateRestaking(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::eigenPodManager(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::hasRestaked(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::initialize(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::mostRecentWithdrawalTimestamp(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::nonBeaconChainETHBalanceWei(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::podOwner(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::provenWithdrawal(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::recoverTokens(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::stake(inner) => { + ::abi_encode_raw(inner, out) + } + Self::validatorPubkeyHashToInfo(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::validatorPubkeyToInfo(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::validatorStatus_0(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::validatorStatus_1(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::verifyAndProcessWithdrawals(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::verifyBalanceUpdates(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::verifyWithdrawalCredentials(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::withdrawBeforeRestaking(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::withdrawNonBeaconChainETHBalanceWei(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::withdrawRestakedBeaconChainETH(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::withdrawableRestakedExecutionLayerGwei(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`IEigenPod`](self) events. + pub enum IEigenPodEvents { + EigenPodStaked(EigenPodStaked), + FullWithdrawalRedeemed(FullWithdrawalRedeemed), + NonBeaconChainETHReceived(NonBeaconChainETHReceived), + NonBeaconChainETHWithdrawn(NonBeaconChainETHWithdrawn), + PartialWithdrawalRedeemed(PartialWithdrawalRedeemed), + RestakedBeaconChainETHWithdrawn(RestakedBeaconChainETHWithdrawn), + RestakingActivated(RestakingActivated), + ValidatorBalanceUpdated(ValidatorBalanceUpdated), + ValidatorRestaked(ValidatorRestaked), + } + #[automatically_derived] + impl IEigenPodEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 14u8, 95u8, 172u8, 23u8, 91u8, 131u8, 23u8, 124u8, 192u8, 71u8, 56u8, 30u8, 3u8, + 13u8, 143u8, 179u8, 180u8, 43u8, 55u8, 189u8, 28u8, 2u8, 94u8, 34u8, 194u8, 128u8, + 250u8, 202u8, 214u8, 44u8, 50u8, 223u8, + ], + [ + 45u8, 8u8, 0u8, 187u8, 195u8, 119u8, 234u8, 84u8, 160u8, 140u8, 93u8, 182u8, 168u8, + 122u8, 175u8, 255u8, 94u8, 62u8, 156u8, 143u8, 234u8, 208u8, 237u8, 161u8, 16u8, + 228u8, 14u8, 12u8, 16u8, 68u8, 20u8, 73u8, + ], + [ + 48u8, 66u8, 10u8, 172u8, 208u8, 40u8, 171u8, 179u8, 193u8, 253u8, 3u8, 171u8, + 162u8, 83u8, 174u8, 114u8, 93u8, 109u8, 221u8, 82u8, 209u8, 108u8, 154u8, 196u8, + 203u8, 87u8, 66u8, 205u8, 67u8, 245u8, 48u8, 150u8, + ], + [ + 96u8, 104u8, 101u8, 183u8, 147u8, 74u8, 37u8, 212u8, 174u8, 212u8, 63u8, 108u8, + 219u8, 66u8, 100u8, 3u8, 53u8, 63u8, 164u8, 179u8, 0u8, 156u8, 77u8, 34u8, 132u8, + 7u8, 71u8, 69u8, 129u8, 176u8, 30u8, 35u8, + ], + [ + 111u8, 221u8, 61u8, 189u8, 177u8, 115u8, 41u8, 150u8, 8u8, 192u8, 170u8, 159u8, + 54u8, 135u8, 53u8, 133u8, 124u8, 136u8, 66u8, 181u8, 129u8, 248u8, 56u8, 146u8, + 56u8, 191u8, 5u8, 189u8, 4u8, 179u8, 191u8, 73u8, + ], + [ + 137u8, 71u8, 253u8, 44u8, 224u8, 126u8, 249u8, 204u8, 48u8, 44u8, 78u8, 143u8, 4u8, + 97u8, 1u8, 86u8, 21u8, 217u8, 28u8, 232u8, 81u8, 86u8, 72u8, 57u8, 233u8, 28u8, + 200u8, 4u8, 194u8, 244u8, 157u8, 142u8, + ], + [ + 138u8, 115u8, 53u8, 113u8, 66u8, 49u8, 219u8, 213u8, 81u8, 170u8, 186u8, 99u8, + 20u8, 244u8, 169u8, 122u8, 20u8, 194u8, 1u8, 229u8, 58u8, 62u8, 37u8, 225u8, 20u8, + 3u8, 37u8, 205u8, 246u8, 125u8, 122u8, 78u8, + ], + [ + 183u8, 106u8, 147u8, 187u8, 100u8, 158u8, 206u8, 82u8, 70u8, 136u8, 241u8, 160u8, + 29u8, 24u8, 78u8, 11u8, 190u8, 188u8, 218u8, 88u8, 234u8, 232u8, 12u8, 40u8, 168u8, + 152u8, 190u8, 195u8, 251u8, 90u8, 9u8, 99u8, + ], + [ + 202u8, 141u8, 252u8, 140u8, 94u8, 10u8, 103u8, 167u8, 69u8, 1u8, 192u8, 114u8, + 163u8, 50u8, 95u8, 104u8, 82u8, 89u8, 190u8, 187u8, 174u8, 124u8, 253u8, 35u8, + 10u8, 184u8, 81u8, 152u8, 167u8, 139u8, 112u8, 205u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IEigenPodEvents { + const NAME: &'static str = "IEigenPodEvents"; + const COUNT: usize = 9usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::EigenPodStaked) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::FullWithdrawalRedeemed) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::NonBeaconChainETHReceived) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::NonBeaconChainETHWithdrawn) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::PartialWithdrawalRedeemed) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::RestakedBeaconChainETHWithdrawn) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::RestakingActivated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ValidatorBalanceUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ValidatorRestaked) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for IEigenPodEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::EigenPodStaked(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::FullWithdrawalRedeemed(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::NonBeaconChainETHReceived(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::NonBeaconChainETHWithdrawn(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::PartialWithdrawalRedeemed(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::RestakedBeaconChainETHWithdrawn(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::RestakingActivated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ValidatorBalanceUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ValidatorRestaked(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::EigenPodStaked(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::FullWithdrawalRedeemed(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::NonBeaconChainETHReceived(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::NonBeaconChainETHWithdrawn(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::PartialWithdrawalRedeemed(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::RestakedBeaconChainETHWithdrawn(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::RestakingActivated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ValidatorBalanceUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ValidatorRestaked(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IEigenPod`](self) contract instance. + + See the [wrapper's documentation](`IEigenPodInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IEigenPodInstance { + IEigenPodInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + IEigenPodInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IEigenPodInstance::::deploy_builder(provider) + } + /**A [`IEigenPod`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IEigenPod`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IEigenPodInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IEigenPodInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IEigenPodInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IEigenPodInstance + { + /**Creates a new wrapper around an on-chain [`IEigenPod`](self) contract instance. + + See the [wrapper's documentation](`IEigenPodInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IEigenPodInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IEigenPodInstance { + IEigenPodInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IEigenPodInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR`] function. + pub fn MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR( + &self, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATORCall {}) + } + ///Creates a new call builder for the [`activateRestaking`] function. + pub fn activateRestaking( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&activateRestakingCall {}) + } + ///Creates a new call builder for the [`eigenPodManager`] function. + pub fn eigenPodManager( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&eigenPodManagerCall {}) + } + ///Creates a new call builder for the [`hasRestaked`] function. + pub fn hasRestaked(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&hasRestakedCall {}) + } + ///Creates a new call builder for the [`initialize`] function. + pub fn initialize( + &self, + owner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initializeCall { owner }) + } + ///Creates a new call builder for the [`mostRecentWithdrawalTimestamp`] function. + pub fn mostRecentWithdrawalTimestamp( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&mostRecentWithdrawalTimestampCall {}) + } + ///Creates a new call builder for the [`nonBeaconChainETHBalanceWei`] function. + pub fn nonBeaconChainETHBalanceWei( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&nonBeaconChainETHBalanceWeiCall {}) + } + ///Creates a new call builder for the [`podOwner`] function. + pub fn podOwner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&podOwnerCall {}) + } + ///Creates a new call builder for the [`provenWithdrawal`] function. + pub fn provenWithdrawal( + &self, + validatorPubkeyHash: alloy::sol_types::private::FixedBytes<32>, + slot: u64, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&provenWithdrawalCall { + validatorPubkeyHash, + slot, + }) + } + ///Creates a new call builder for the [`recoverTokens`] function. + pub fn recoverTokens( + &self, + tokenList: alloy::sol_types::private::Vec, + amountsToWithdraw: alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + recipient: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&recoverTokensCall { + tokenList, + amountsToWithdraw, + recipient, + }) + } + ///Creates a new call builder for the [`stake`] function. + pub fn stake( + &self, + pubkey: alloy::sol_types::private::Bytes, + signature: alloy::sol_types::private::Bytes, + depositDataRoot: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&stakeCall { + pubkey, + signature, + depositDataRoot, + }) + } + ///Creates a new call builder for the [`validatorPubkeyHashToInfo`] function. + pub fn validatorPubkeyHashToInfo( + &self, + validatorPubkeyHash: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&validatorPubkeyHashToInfoCall { + validatorPubkeyHash, + }) + } + ///Creates a new call builder for the [`validatorPubkeyToInfo`] function. + pub fn validatorPubkeyToInfo( + &self, + validatorPubkey: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&validatorPubkeyToInfoCall { validatorPubkey }) + } + ///Creates a new call builder for the [`validatorStatus_0`] function. + pub fn validatorStatus_0( + &self, + validatorPubkey: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&validatorStatus_0Call { validatorPubkey }) + } + ///Creates a new call builder for the [`validatorStatus_1`] function. + pub fn validatorStatus_1( + &self, + pubkeyHash: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&validatorStatus_1Call { pubkeyHash }) + } + ///Creates a new call builder for the [`verifyAndProcessWithdrawals`] function. + pub fn verifyAndProcessWithdrawals( + &self, + oracleTimestamp: u64, + stateRootProof: ::RustType, + withdrawalProofs: alloy::sol_types::private::Vec< + ::RustType, + >, + validatorFieldsProofs: alloy::sol_types::private::Vec, + validatorFields: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec>, + >, + withdrawalFields: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec>, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&verifyAndProcessWithdrawalsCall { + oracleTimestamp, + stateRootProof, + withdrawalProofs, + validatorFieldsProofs, + validatorFields, + withdrawalFields, + }) + } + ///Creates a new call builder for the [`verifyBalanceUpdates`] function. + pub fn verifyBalanceUpdates( + &self, + oracleTimestamp: u64, + validatorIndices: alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U40, + >, + stateRootProof: ::RustType, + validatorFieldsProofs: alloy::sol_types::private::Vec, + validatorFields: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec>, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&verifyBalanceUpdatesCall { + oracleTimestamp, + validatorIndices, + stateRootProof, + validatorFieldsProofs, + validatorFields, + }) + } + ///Creates a new call builder for the [`verifyWithdrawalCredentials`] function. + pub fn verifyWithdrawalCredentials( + &self, + oracleTimestamp: u64, + stateRootProof: ::RustType, + validatorIndices: alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U40, + >, + withdrawalCredentialProofs: alloy::sol_types::private::Vec< + alloy::sol_types::private::Bytes, + >, + validatorFields: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec>, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&verifyWithdrawalCredentialsCall { + oracleTimestamp, + stateRootProof, + validatorIndices, + withdrawalCredentialProofs, + validatorFields, + }) + } + ///Creates a new call builder for the [`withdrawBeforeRestaking`] function. + pub fn withdrawBeforeRestaking( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&withdrawBeforeRestakingCall {}) + } + ///Creates a new call builder for the [`withdrawNonBeaconChainETHBalanceWei`] function. + pub fn withdrawNonBeaconChainETHBalanceWei( + &self, + recipient: alloy::sol_types::private::Address, + amountToWithdraw: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&withdrawNonBeaconChainETHBalanceWeiCall { + recipient, + amountToWithdraw, + }) + } + ///Creates a new call builder for the [`withdrawRestakedBeaconChainETH`] function. + pub fn withdrawRestakedBeaconChainETH( + &self, + recipient: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&withdrawRestakedBeaconChainETHCall { recipient, amount }) + } + ///Creates a new call builder for the [`withdrawableRestakedExecutionLayerGwei`] function. + pub fn withdrawableRestakedExecutionLayerGwei( + &self, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&withdrawableRestakedExecutionLayerGweiCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IEigenPodInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`EigenPodStaked`] event. + pub fn EigenPodStaked_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`FullWithdrawalRedeemed`] event. + pub fn FullWithdrawalRedeemed_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`NonBeaconChainETHReceived`] event. + pub fn NonBeaconChainETHReceived_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`NonBeaconChainETHWithdrawn`] event. + pub fn NonBeaconChainETHWithdrawn_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`PartialWithdrawalRedeemed`] event. + pub fn PartialWithdrawalRedeemed_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`RestakedBeaconChainETHWithdrawn`] event. + pub fn RestakedBeaconChainETHWithdrawn_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`RestakingActivated`] event. + pub fn RestakingActivated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ValidatorBalanceUpdated`] event. + pub fn ValidatorBalanceUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ValidatorRestaked`] event. + pub fn ValidatorRestaked_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/ieigenpodmanager.rs b/crates/utils/src/ieigenpodmanager.rs new file mode 100644 index 00000000..43c13efc --- /dev/null +++ b/crates/utils/src/ieigenpodmanager.rs @@ -0,0 +1,6124 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IEigenPodManager { + event BeaconChainETHDeposited(address indexed podOwner, uint256 amount); + event BeaconChainETHWithdrawalCompleted(address indexed podOwner, uint256 shares, uint96 nonce, address delegatedAddress, address withdrawer, bytes32 withdrawalRoot); + event BeaconOracleUpdated(address indexed newOracleAddress); + event DenebForkTimestampUpdated(uint64 newValue); + event Paused(address indexed account, uint256 newPausedStatus); + event PauserRegistrySet(address pauserRegistry, address newPauserRegistry); + event PodDeployed(address indexed eigenPod, address indexed podOwner); + event PodSharesUpdated(address indexed podOwner, int256 sharesDelta); + event Unpaused(address indexed account, uint256 newPausedStatus); + + function addShares(address podOwner, uint256 shares) external returns (uint256); + function beaconChainETHStrategy() external view returns (address); + function beaconChainOracle() external view returns (address); + function createPod() external returns (address); + function denebForkTimestamp() external view returns (uint64); + function eigenPodBeacon() external view returns (address); + function ethPOS() external view returns (address); + function getBlockRootAtTimestamp(uint64 timestamp) external view returns (bytes32); + function getPod(address podOwner) external view returns (address); + function hasPod(address podOwner) external view returns (bool); + function numPods() external view returns (uint256); + function ownerToPod(address podOwner) external view returns (address); + function pause(uint256 newPausedStatus) external; + function pauseAll() external; + function paused(uint8 index) external view returns (bool); + function paused() external view returns (uint256); + function pauserRegistry() external view returns (address); + function podOwnerShares(address podOwner) external view returns (int256); + function recordBeaconChainETHBalanceUpdate(address podOwner, int256 sharesDelta) external; + function removeShares(address podOwner, uint256 shares) external; + function setDenebForkTimestamp(uint64 newDenebForkTimestamp) external; + function setPauserRegistry(address newPauserRegistry) external; + function slasher() external view returns (address); + function stake(bytes memory pubkey, bytes memory signature, bytes32 depositDataRoot) external payable; + function strategyManager() external view returns (address); + function unpause(uint256 newPausedStatus) external; + function updateBeaconChainOracle(address newBeaconChainOracle) external; + function withdrawSharesAsTokens(address podOwner, address destination, uint256 shares) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "addShares", + "inputs": [ + { + "name": "podOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "beaconChainETHStrategy", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStrategy" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "beaconChainOracle", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IBeaconChainOracle" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "createPod", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "denebForkTimestamp", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "eigenPodBeacon", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IBeacon" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "ethPOS", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IETHPOSDeposit" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getBlockRootAtTimestamp", + "inputs": [ + { + "name": "timestamp", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getPod", + "inputs": [ + { + "name": "podOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IEigenPod" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "hasPod", + "inputs": [ + { + "name": "podOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "numPods", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "ownerToPod", + "inputs": [ + { + "name": "podOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IEigenPod" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pause", + "inputs": [ + { + "name": "newPausedStatus", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "pauseAll", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "paused", + "inputs": [ + { + "name": "index", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "paused", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pauserRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "podOwnerShares", + "inputs": [ + { + "name": "podOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "int256", + "internalType": "int256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "recordBeaconChainETHBalanceUpdate", + "inputs": [ + { + "name": "podOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "sharesDelta", + "type": "int256", + "internalType": "int256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "removeShares", + "inputs": [ + { + "name": "podOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setDenebForkTimestamp", + "inputs": [ + { + "name": "newDenebForkTimestamp", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setPauserRegistry", + "inputs": [ + { + "name": "newPauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "slasher", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ISlasher" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "stake", + "inputs": [ + { + "name": "pubkey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "depositDataRoot", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "strategyManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStrategyManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "unpause", + "inputs": [ + { + "name": "newPausedStatus", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateBeaconChainOracle", + "inputs": [ + { + "name": "newBeaconChainOracle", + "type": "address", + "internalType": "contract IBeaconChainOracle" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "withdrawSharesAsTokens", + "inputs": [ + { + "name": "podOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "destination", + "type": "address", + "internalType": "address" + }, + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "BeaconChainETHDeposited", + "inputs": [ + { + "name": "podOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "BeaconChainETHWithdrawalCompleted", + "inputs": [ + { + "name": "podOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "shares", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "nonce", + "type": "uint96", + "indexed": false, + "internalType": "uint96" + }, + { + "name": "delegatedAddress", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "withdrawer", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "withdrawalRoot", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "BeaconOracleUpdated", + "inputs": [ + { + "name": "newOracleAddress", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "DenebForkTimestampUpdated", + "inputs": [ + { + "name": "newValue", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Paused", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newPausedStatus", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "PauserRegistrySet", + "inputs": [ + { + "name": "pauserRegistry", + "type": "address", + "indexed": false, + "internalType": "contract IPauserRegistry" + }, + { + "name": "newPauserRegistry", + "type": "address", + "indexed": false, + "internalType": "contract IPauserRegistry" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "PodDeployed", + "inputs": [ + { + "name": "eigenPod", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "podOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "PodSharesUpdated", + "inputs": [ + { + "name": "podOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "sharesDelta", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Unpaused", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newPausedStatus", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IEigenPodManager { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Event with signature `BeaconChainETHDeposited(address,uint256)` and selector `0x35a85cabc603f48abb2b71d9fbd8adea7c449d7f0be900ae7a2986ea369c3d0d`. + ```solidity + event BeaconChainETHDeposited(address indexed podOwner, uint256 amount); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct BeaconChainETHDeposited { + #[allow(missing_docs)] + pub podOwner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for BeaconChainETHDeposited { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "BeaconChainETHDeposited(address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 53u8, 168u8, 92u8, 171u8, 198u8, 3u8, 244u8, 138u8, 187u8, 43u8, 113u8, 217u8, + 251u8, 216u8, 173u8, 234u8, 124u8, 68u8, 157u8, 127u8, 11u8, 233u8, 0u8, 174u8, + 122u8, 41u8, 134u8, 234u8, 54u8, 156u8, 61u8, 13u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + podOwner: topics.1, + amount: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.amount, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.podOwner.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.podOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for BeaconChainETHDeposited { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&BeaconChainETHDeposited> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &BeaconChainETHDeposited) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `BeaconChainETHWithdrawalCompleted(address,uint256,uint96,address,address,bytes32)` and selector `0xa6bab1d55a361fcea2eee2bc9491e4f01e6cf333df03c9c4f2c144466429f7d6`. + ```solidity + event BeaconChainETHWithdrawalCompleted(address indexed podOwner, uint256 shares, uint96 nonce, address delegatedAddress, address withdrawer, bytes32 withdrawalRoot); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct BeaconChainETHWithdrawalCompleted { + #[allow(missing_docs)] + pub podOwner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub shares: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::primitives::aliases::U96, + #[allow(missing_docs)] + pub delegatedAddress: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub withdrawer: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub withdrawalRoot: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for BeaconChainETHWithdrawalCompleted { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<96>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = + "BeaconChainETHWithdrawalCompleted(address,uint256,uint96,address,address,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 166u8, 186u8, 177u8, 213u8, 90u8, 54u8, 31u8, 206u8, 162u8, 238u8, 226u8, + 188u8, 148u8, 145u8, 228u8, 240u8, 30u8, 108u8, 243u8, 51u8, 223u8, 3u8, 201u8, + 196u8, 242u8, 193u8, 68u8, 70u8, 100u8, 41u8, 247u8, 214u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + podOwner: topics.1, + shares: data.0, + nonce: data.1, + delegatedAddress: data.2, + withdrawer: data.3, + withdrawalRoot: data.4, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.shares), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + ::tokenize( + &self.delegatedAddress, + ), + ::tokenize( + &self.withdrawer, + ), + as alloy_sol_types::SolType>::tokenize(&self.withdrawalRoot), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.podOwner.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.podOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for BeaconChainETHWithdrawalCompleted { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&BeaconChainETHWithdrawalCompleted> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &BeaconChainETHWithdrawalCompleted) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `BeaconOracleUpdated(address)` and selector `0x08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f6`. + ```solidity + event BeaconOracleUpdated(address indexed newOracleAddress); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct BeaconOracleUpdated { + #[allow(missing_docs)] + pub newOracleAddress: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for BeaconOracleUpdated { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "BeaconOracleUpdated(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 8u8, 240u8, 71u8, 7u8, 84u8, 148u8, 108u8, 207u8, 187u8, 68u8, 111u8, 247u8, + 253u8, 45u8, 106u8, 230u8, 175u8, 27u8, 189u8, 174u8, 25u8, 248u8, 87u8, 148u8, + 192u8, 204u8, 94u8, 213u8, 232u8, 206u8, 180u8, 246u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + newOracleAddress: topics.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.newOracleAddress.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.newOracleAddress, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for BeaconOracleUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&BeaconOracleUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &BeaconOracleUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `DenebForkTimestampUpdated(uint64)` and selector `0x19200b6fdad58f91b2f496b0c444fc4be3eff74a7e24b07770e04a7137bfd9db`. + ```solidity + event DenebForkTimestampUpdated(uint64 newValue); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct DenebForkTimestampUpdated { + #[allow(missing_docs)] + pub newValue: u64, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for DenebForkTimestampUpdated { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "DenebForkTimestampUpdated(uint64)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 25u8, 32u8, 11u8, 111u8, 218u8, 213u8, 143u8, 145u8, 178u8, 244u8, 150u8, + 176u8, 196u8, 68u8, 252u8, 75u8, 227u8, 239u8, 247u8, 74u8, 126u8, 36u8, 176u8, + 119u8, 112u8, 224u8, 74u8, 113u8, 55u8, 191u8, 217u8, 219u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { newValue: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newValue, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for DenebForkTimestampUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&DenebForkTimestampUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &DenebForkTimestampUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Paused(address,uint256)` and selector `0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d`. + ```solidity + event Paused(address indexed account, uint256 newPausedStatus); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Paused { + #[allow(missing_docs)] + pub account: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Paused { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Paused(address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8, 188u8, + 152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8, 11u8, 182u8, + 224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + account: topics.1, + newPausedStatus: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.account.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.account, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Paused { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Paused> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Paused) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `PauserRegistrySet(address,address)` and selector `0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6`. + ```solidity + event PauserRegistrySet(address pauserRegistry, address newPauserRegistry); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct PauserRegistrySet { + #[allow(missing_docs)] + pub pauserRegistry: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newPauserRegistry: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for PauserRegistrySet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "PauserRegistrySet(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 110u8, 159u8, 205u8, 83u8, 152u8, 150u8, 252u8, 166u8, 14u8, 139u8, 15u8, 1u8, + 221u8, 88u8, 2u8, 51u8, 228u8, 138u8, 107u8, 15u8, 125u8, 240u8, 19u8, 184u8, + 155u8, 167u8, 245u8, 101u8, 134u8, 154u8, 205u8, 182u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + pauserRegistry: data.0, + newPauserRegistry: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.pauserRegistry, + ), + ::tokenize( + &self.newPauserRegistry, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for PauserRegistrySet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&PauserRegistrySet> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &PauserRegistrySet) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `PodDeployed(address,address)` and selector `0x21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a`. + ```solidity + event PodDeployed(address indexed eigenPod, address indexed podOwner); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct PodDeployed { + #[allow(missing_docs)] + pub eigenPod: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub podOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for PodDeployed { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "PodDeployed(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 33u8, 201u8, 157u8, 13u8, 176u8, 34u8, 19u8, 195u8, 47u8, 255u8, 91u8, 5u8, + 207u8, 10u8, 113u8, 138u8, 181u8, 248u8, 88u8, 128u8, 43u8, 145u8, 73u8, 143u8, + 128u8, 216u8, 34u8, 112u8, 40u8, 157u8, 133u8, 106u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + eigenPod: topics.1, + podOwner: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.eigenPod.clone(), + self.podOwner.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.eigenPod, + ); + out[2usize] = ::encode_topic( + &self.podOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for PodDeployed { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&PodDeployed> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &PodDeployed) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `PodSharesUpdated(address,int256)` and selector `0x4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193`. + ```solidity + event PodSharesUpdated(address indexed podOwner, int256 sharesDelta); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct PodSharesUpdated { + #[allow(missing_docs)] + pub podOwner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub sharesDelta: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for PodSharesUpdated { + type DataTuple<'a> = (alloy::sol_types::sol_data::Int<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "PodSharesUpdated(address,int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 78u8, 43u8, 121u8, 29u8, 237u8, 204u8, 217u8, 251u8, 48u8, 20u8, 27u8, 8u8, + 140u8, 171u8, 245u8, 193u8, 74u8, 137u8, 18u8, 181u8, 47u8, 89u8, 55u8, 92u8, + 149u8, 192u8, 16u8, 112u8, 11u8, 140u8, 97u8, 147u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + podOwner: topics.1, + sharesDelta: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.sharesDelta, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.podOwner.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.podOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for PodSharesUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&PodSharesUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &PodSharesUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Unpaused(address,uint256)` and selector `0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c`. + ```solidity + event Unpaused(address indexed account, uint256 newPausedStatus); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Unpaused { + #[allow(missing_docs)] + pub account: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Unpaused { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Unpaused(address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8, 2u8, + 188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8, 228u8, 152u8, + 107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + account: topics.1, + newPausedStatus: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.account.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.account, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Unpaused { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Unpaused> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Unpaused) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `addShares(address,uint256)` and selector `0x0e81073c`. + ```solidity + function addShares(address podOwner, uint256 shares) external returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct addSharesCall { + pub podOwner: alloy::sol_types::private::Address, + pub shares: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`addShares(address,uint256)`](addSharesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct addSharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: addSharesCall) -> Self { + (value.podOwner, value.shares) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for addSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + podOwner: tuple.0, + shares: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: addSharesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for addSharesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for addSharesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = addSharesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "addShares(address,uint256)"; + const SELECTOR: [u8; 4] = [14u8, 129u8, 7u8, 60u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.podOwner, + ), + as alloy_sol_types::SolType>::tokenize( + &self.shares, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `beaconChainETHStrategy()` and selector `0x9104c319`. + ```solidity + function beaconChainETHStrategy() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct beaconChainETHStrategyCall {} + ///Container type for the return parameters of the [`beaconChainETHStrategy()`](beaconChainETHStrategyCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct beaconChainETHStrategyReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: beaconChainETHStrategyCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for beaconChainETHStrategyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: beaconChainETHStrategyReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for beaconChainETHStrategyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for beaconChainETHStrategyCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = beaconChainETHStrategyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "beaconChainETHStrategy()"; + const SELECTOR: [u8; 4] = [145u8, 4u8, 195u8, 25u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `beaconChainOracle()` and selector `0xc052bd61`. + ```solidity + function beaconChainOracle() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct beaconChainOracleCall {} + ///Container type for the return parameters of the [`beaconChainOracle()`](beaconChainOracleCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct beaconChainOracleReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: beaconChainOracleCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for beaconChainOracleCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: beaconChainOracleReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for beaconChainOracleReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for beaconChainOracleCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = beaconChainOracleReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "beaconChainOracle()"; + const SELECTOR: [u8; 4] = [192u8, 82u8, 189u8, 97u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `createPod()` and selector `0x84d81062`. + ```solidity + function createPod() external returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct createPodCall {} + ///Container type for the return parameters of the [`createPod()`](createPodCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct createPodReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: createPodCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for createPodCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: createPodReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for createPodReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for createPodCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = createPodReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "createPod()"; + const SELECTOR: [u8; 4] = [132u8, 216u8, 16u8, 98u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `denebForkTimestamp()` and selector `0x44e71c80`. + ```solidity + function denebForkTimestamp() external view returns (uint64); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct denebForkTimestampCall {} + ///Container type for the return parameters of the [`denebForkTimestamp()`](denebForkTimestampCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct denebForkTimestampReturn { + pub _0: u64, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: denebForkTimestampCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for denebForkTimestampCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u64,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: denebForkTimestampReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for denebForkTimestampReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for denebForkTimestampCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = denebForkTimestampReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "denebForkTimestamp()"; + const SELECTOR: [u8; 4] = [68u8, 231u8, 28u8, 128u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `eigenPodBeacon()` and selector `0x292b7b2b`. + ```solidity + function eigenPodBeacon() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct eigenPodBeaconCall {} + ///Container type for the return parameters of the [`eigenPodBeacon()`](eigenPodBeaconCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct eigenPodBeaconReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: eigenPodBeaconCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for eigenPodBeaconCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: eigenPodBeaconReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for eigenPodBeaconReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for eigenPodBeaconCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = eigenPodBeaconReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "eigenPodBeacon()"; + const SELECTOR: [u8; 4] = [41u8, 43u8, 123u8, 43u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `ethPOS()` and selector `0x74cdd798`. + ```solidity + function ethPOS() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ethPOSCall {} + ///Container type for the return parameters of the [`ethPOS()`](ethPOSCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ethPOSReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ethPOSCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ethPOSCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ethPOSReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ethPOSReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ethPOSCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ethPOSReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ethPOS()"; + const SELECTOR: [u8; 4] = [116u8, 205u8, 215u8, 152u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getBlockRootAtTimestamp(uint64)` and selector `0xd1c64cc9`. + ```solidity + function getBlockRootAtTimestamp(uint64 timestamp) external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getBlockRootAtTimestampCall { + pub timestamp: u64, + } + ///Container type for the return parameters of the [`getBlockRootAtTimestamp(uint64)`](getBlockRootAtTimestampCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getBlockRootAtTimestampReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u64,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getBlockRootAtTimestampCall) -> Self { + (value.timestamp,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getBlockRootAtTimestampCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { timestamp: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getBlockRootAtTimestampReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getBlockRootAtTimestampReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getBlockRootAtTimestampCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getBlockRootAtTimestampReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getBlockRootAtTimestamp(uint64)"; + const SELECTOR: [u8; 4] = [209u8, 198u8, 76u8, 201u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.timestamp, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getPod(address)` and selector `0xa38406a3`. + ```solidity + function getPod(address podOwner) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getPodCall { + pub podOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getPod(address)`](getPodCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getPodReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getPodCall) -> Self { + (value.podOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getPodCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { podOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getPodReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getPodReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getPodCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getPodReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getPod(address)"; + const SELECTOR: [u8; 4] = [163u8, 132u8, 6u8, 163u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.podOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `hasPod(address)` and selector `0xf6848d24`. + ```solidity + function hasPod(address podOwner) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct hasPodCall { + pub podOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`hasPod(address)`](hasPodCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct hasPodReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: hasPodCall) -> Self { + (value.podOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for hasPodCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { podOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: hasPodReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for hasPodReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for hasPodCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = hasPodReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "hasPod(address)"; + const SELECTOR: [u8; 4] = [246u8, 132u8, 141u8, 36u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.podOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `numPods()` and selector `0xa6a509be`. + ```solidity + function numPods() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct numPodsCall {} + ///Container type for the return parameters of the [`numPods()`](numPodsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct numPodsReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: numPodsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for numPodsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: numPodsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for numPodsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for numPodsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = numPodsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "numPods()"; + const SELECTOR: [u8; 4] = [166u8, 165u8, 9u8, 190u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `ownerToPod(address)` and selector `0x9ba06275`. + ```solidity + function ownerToPod(address podOwner) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerToPodCall { + pub podOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`ownerToPod(address)`](ownerToPodCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerToPodReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerToPodCall) -> Self { + (value.podOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerToPodCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { podOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerToPodReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerToPodReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerToPodCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerToPodReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ownerToPod(address)"; + const SELECTOR: [u8; 4] = [155u8, 160u8, 98u8, 117u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.podOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pause(uint256)` and selector `0x136439dd`. + ```solidity + function pause(uint256 newPausedStatus) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseCall { + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`pause(uint256)`](pauseCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseCall) -> Self { + (value.newPausedStatus,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newPausedStatus: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauseCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pauseReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pause(uint256)"; + const SELECTOR: [u8; 4] = [19u8, 100u8, 57u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pauseAll()` and selector `0x595c6a67`. + ```solidity + function pauseAll() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseAllCall {} + ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseAllReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseAllCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseAllCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseAllReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseAllReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauseAllCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pauseAllReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pauseAll()"; + const SELECTOR: [u8; 4] = [89u8, 92u8, 106u8, 103u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `paused(uint8)` and selector `0x5ac86ab7`. + ```solidity + function paused(uint8 index) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_0Call { + pub index: u8, + } + ///Container type for the return parameters of the [`paused(uint8)`](paused_0Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_0Return { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_0Call) -> Self { + (value.index,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_0Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { index: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_0Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_0Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for paused_0Call { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = paused_0Return; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "paused(uint8)"; + const SELECTOR: [u8; 4] = [90u8, 200u8, 106u8, 183u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `paused()` and selector `0x5c975abb`. + ```solidity + function paused() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_1Call {} + ///Container type for the return parameters of the [`paused()`](paused_1Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_1Return { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_1Call) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_1Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for paused_1Call { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = paused_1Return; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "paused()"; + const SELECTOR: [u8; 4] = [92u8, 151u8, 90u8, 187u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pauserRegistry()` and selector `0x886f1195`. + ```solidity + function pauserRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauserRegistryCall {} + ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauserRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauserRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauserRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauserRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauserRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauserRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pauserRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pauserRegistry()"; + const SELECTOR: [u8; 4] = [136u8, 111u8, 17u8, 149u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `podOwnerShares(address)` and selector `0x60f4062b`. + ```solidity + function podOwnerShares(address podOwner) external view returns (int256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct podOwnerSharesCall { + pub podOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`podOwnerShares(address)`](podOwnerSharesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct podOwnerSharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::I256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: podOwnerSharesCall) -> Self { + (value.podOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for podOwnerSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { podOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Int<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::I256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: podOwnerSharesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for podOwnerSharesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for podOwnerSharesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = podOwnerSharesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Int<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "podOwnerShares(address)"; + const SELECTOR: [u8; 4] = [96u8, 244u8, 6u8, 43u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.podOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `recordBeaconChainETHBalanceUpdate(address,int256)` and selector `0xc2c51c40`. + ```solidity + function recordBeaconChainETHBalanceUpdate(address podOwner, int256 sharesDelta) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct recordBeaconChainETHBalanceUpdateCall { + pub podOwner: alloy::sol_types::private::Address, + pub sharesDelta: alloy::sol_types::private::primitives::aliases::I256, + } + ///Container type for the return parameters of the [`recordBeaconChainETHBalanceUpdate(address,int256)`](recordBeaconChainETHBalanceUpdateCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct recordBeaconChainETHBalanceUpdateReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Int<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::I256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: recordBeaconChainETHBalanceUpdateCall) -> Self { + (value.podOwner, value.sharesDelta) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for recordBeaconChainETHBalanceUpdateCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + podOwner: tuple.0, + sharesDelta: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: recordBeaconChainETHBalanceUpdateReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for recordBeaconChainETHBalanceUpdateReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for recordBeaconChainETHBalanceUpdateCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Int<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = recordBeaconChainETHBalanceUpdateReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "recordBeaconChainETHBalanceUpdate(address,int256)"; + const SELECTOR: [u8; 4] = [194u8, 197u8, 28u8, 64u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.podOwner, + ), + as alloy_sol_types::SolType>::tokenize( + &self.sharesDelta, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `removeShares(address,uint256)` and selector `0xbeffbb89`. + ```solidity + function removeShares(address podOwner, uint256 shares) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct removeSharesCall { + pub podOwner: alloy::sol_types::private::Address, + pub shares: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`removeShares(address,uint256)`](removeSharesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct removeSharesReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: removeSharesCall) -> Self { + (value.podOwner, value.shares) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for removeSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + podOwner: tuple.0, + shares: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: removeSharesReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for removeSharesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for removeSharesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = removeSharesReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "removeShares(address,uint256)"; + const SELECTOR: [u8; 4] = [190u8, 255u8, 187u8, 137u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.podOwner, + ), + as alloy_sol_types::SolType>::tokenize( + &self.shares, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setDenebForkTimestamp(uint64)` and selector `0x463db038`. + ```solidity + function setDenebForkTimestamp(uint64 newDenebForkTimestamp) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setDenebForkTimestampCall { + pub newDenebForkTimestamp: u64, + } + ///Container type for the return parameters of the [`setDenebForkTimestamp(uint64)`](setDenebForkTimestampCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setDenebForkTimestampReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u64,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setDenebForkTimestampCall) -> Self { + (value.newDenebForkTimestamp,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setDenebForkTimestampCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newDenebForkTimestamp: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setDenebForkTimestampReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setDenebForkTimestampReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setDenebForkTimestampCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setDenebForkTimestampReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setDenebForkTimestamp(uint64)"; + const SELECTOR: [u8; 4] = [70u8, 61u8, 176u8, 56u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newDenebForkTimestamp, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setPauserRegistry(address)` and selector `0x10d67a2f`. + ```solidity + function setPauserRegistry(address newPauserRegistry) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setPauserRegistryCall { + pub newPauserRegistry: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setPauserRegistry(address)`](setPauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setPauserRegistryReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setPauserRegistryCall) -> Self { + (value.newPauserRegistry,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setPauserRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newPauserRegistry: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setPauserRegistryReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setPauserRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setPauserRegistryCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setPauserRegistryReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setPauserRegistry(address)"; + const SELECTOR: [u8; 4] = [16u8, 214u8, 122u8, 47u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newPauserRegistry, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `slasher()` and selector `0xb1344271`. + ```solidity + function slasher() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct slasherCall {} + ///Container type for the return parameters of the [`slasher()`](slasherCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct slasherReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: slasherCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for slasherCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: slasherReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for slasherReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for slasherCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = slasherReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "slasher()"; + const SELECTOR: [u8; 4] = [177u8, 52u8, 66u8, 113u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `stake(bytes,bytes,bytes32)` and selector `0x9b4e4634`. + ```solidity + function stake(bytes memory pubkey, bytes memory signature, bytes32 depositDataRoot) external payable; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakeCall { + pub pubkey: alloy::sol_types::private::Bytes, + pub signature: alloy::sol_types::private::Bytes, + pub depositDataRoot: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`stake(bytes,bytes,bytes32)`](stakeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakeCall) -> Self { + (value.pubkey, value.signature, value.depositDataRoot) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + pubkey: tuple.0, + signature: tuple.1, + depositDataRoot: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for stakeCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = stakeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "stake(bytes,bytes,bytes32)"; + const SELECTOR: [u8; 4] = [155u8, 78u8, 70u8, 52u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.pubkey, + ), + ::tokenize( + &self.signature, + ), + as alloy_sol_types::SolType>::tokenize(&self.depositDataRoot), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `strategyManager()` and selector `0x39b70e38`. + ```solidity + function strategyManager() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyManagerCall {} + ///Container type for the return parameters of the [`strategyManager()`](strategyManagerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyManagerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyManagerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyManagerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyManagerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for strategyManagerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = strategyManagerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "strategyManager()"; + const SELECTOR: [u8; 4] = [57u8, 183u8, 14u8, 56u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `unpause(uint256)` and selector `0xfabc1cbc`. + ```solidity + function unpause(uint256 newPausedStatus) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct unpauseCall { + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`unpause(uint256)`](unpauseCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct unpauseReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: unpauseCall) -> Self { + (value.newPausedStatus,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for unpauseCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newPausedStatus: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: unpauseReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for unpauseReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for unpauseCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = unpauseReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "unpause(uint256)"; + const SELECTOR: [u8; 4] = [250u8, 188u8, 28u8, 188u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateBeaconChainOracle(address)` and selector `0xc1de3aef`. + ```solidity + function updateBeaconChainOracle(address newBeaconChainOracle) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateBeaconChainOracleCall { + pub newBeaconChainOracle: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`updateBeaconChainOracle(address)`](updateBeaconChainOracleCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateBeaconChainOracleReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateBeaconChainOracleCall) -> Self { + (value.newBeaconChainOracle,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateBeaconChainOracleCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newBeaconChainOracle: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateBeaconChainOracleReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateBeaconChainOracleReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateBeaconChainOracleCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateBeaconChainOracleReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateBeaconChainOracle(address)"; + const SELECTOR: [u8; 4] = [193u8, 222u8, 58u8, 239u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newBeaconChainOracle, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `withdrawSharesAsTokens(address,address,uint256)` and selector `0x387b1300`. + ```solidity + function withdrawSharesAsTokens(address podOwner, address destination, uint256 shares) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct withdrawSharesAsTokensCall { + pub podOwner: alloy::sol_types::private::Address, + pub destination: alloy::sol_types::private::Address, + pub shares: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`withdrawSharesAsTokens(address,address,uint256)`](withdrawSharesAsTokensCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct withdrawSharesAsTokensReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: withdrawSharesAsTokensCall) -> Self { + (value.podOwner, value.destination, value.shares) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawSharesAsTokensCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + podOwner: tuple.0, + destination: tuple.1, + shares: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: withdrawSharesAsTokensReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawSharesAsTokensReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for withdrawSharesAsTokensCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = withdrawSharesAsTokensReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "withdrawSharesAsTokens(address,address,uint256)"; + const SELECTOR: [u8; 4] = [56u8, 123u8, 19u8, 0u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.podOwner, + ), + ::tokenize( + &self.destination, + ), + as alloy_sol_types::SolType>::tokenize( + &self.shares, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IEigenPodManager`](self) function calls. + pub enum IEigenPodManagerCalls { + addShares(addSharesCall), + beaconChainETHStrategy(beaconChainETHStrategyCall), + beaconChainOracle(beaconChainOracleCall), + createPod(createPodCall), + denebForkTimestamp(denebForkTimestampCall), + eigenPodBeacon(eigenPodBeaconCall), + ethPOS(ethPOSCall), + getBlockRootAtTimestamp(getBlockRootAtTimestampCall), + getPod(getPodCall), + hasPod(hasPodCall), + numPods(numPodsCall), + ownerToPod(ownerToPodCall), + pause(pauseCall), + pauseAll(pauseAllCall), + paused_0(paused_0Call), + paused_1(paused_1Call), + pauserRegistry(pauserRegistryCall), + podOwnerShares(podOwnerSharesCall), + recordBeaconChainETHBalanceUpdate(recordBeaconChainETHBalanceUpdateCall), + removeShares(removeSharesCall), + setDenebForkTimestamp(setDenebForkTimestampCall), + setPauserRegistry(setPauserRegistryCall), + slasher(slasherCall), + stake(stakeCall), + strategyManager(strategyManagerCall), + unpause(unpauseCall), + updateBeaconChainOracle(updateBeaconChainOracleCall), + withdrawSharesAsTokens(withdrawSharesAsTokensCall), + } + #[automatically_derived] + impl IEigenPodManagerCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [14u8, 129u8, 7u8, 60u8], + [16u8, 214u8, 122u8, 47u8], + [19u8, 100u8, 57u8, 221u8], + [41u8, 43u8, 123u8, 43u8], + [56u8, 123u8, 19u8, 0u8], + [57u8, 183u8, 14u8, 56u8], + [68u8, 231u8, 28u8, 128u8], + [70u8, 61u8, 176u8, 56u8], + [89u8, 92u8, 106u8, 103u8], + [90u8, 200u8, 106u8, 183u8], + [92u8, 151u8, 90u8, 187u8], + [96u8, 244u8, 6u8, 43u8], + [116u8, 205u8, 215u8, 152u8], + [132u8, 216u8, 16u8, 98u8], + [136u8, 111u8, 17u8, 149u8], + [145u8, 4u8, 195u8, 25u8], + [155u8, 78u8, 70u8, 52u8], + [155u8, 160u8, 98u8, 117u8], + [163u8, 132u8, 6u8, 163u8], + [166u8, 165u8, 9u8, 190u8], + [177u8, 52u8, 66u8, 113u8], + [190u8, 255u8, 187u8, 137u8], + [192u8, 82u8, 189u8, 97u8], + [193u8, 222u8, 58u8, 239u8], + [194u8, 197u8, 28u8, 64u8], + [209u8, 198u8, 76u8, 201u8], + [246u8, 132u8, 141u8, 36u8], + [250u8, 188u8, 28u8, 188u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IEigenPodManagerCalls { + const NAME: &'static str = "IEigenPodManagerCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 28usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::addShares(_) => ::SELECTOR, + Self::beaconChainETHStrategy(_) => { + ::SELECTOR + } + Self::beaconChainOracle(_) => { + ::SELECTOR + } + Self::createPod(_) => ::SELECTOR, + Self::denebForkTimestamp(_) => { + ::SELECTOR + } + Self::eigenPodBeacon(_) => { + ::SELECTOR + } + Self::ethPOS(_) => ::SELECTOR, + Self::getBlockRootAtTimestamp(_) => { + ::SELECTOR + } + Self::getPod(_) => ::SELECTOR, + Self::hasPod(_) => ::SELECTOR, + Self::numPods(_) => ::SELECTOR, + Self::ownerToPod(_) => ::SELECTOR, + Self::pause(_) => ::SELECTOR, + Self::pauseAll(_) => ::SELECTOR, + Self::paused_0(_) => ::SELECTOR, + Self::paused_1(_) => ::SELECTOR, + Self::pauserRegistry(_) => { + ::SELECTOR + } + Self::podOwnerShares(_) => { + ::SELECTOR + } + Self::recordBeaconChainETHBalanceUpdate(_) => { + ::SELECTOR + } + Self::removeShares(_) => ::SELECTOR, + Self::setDenebForkTimestamp(_) => { + ::SELECTOR + } + Self::setPauserRegistry(_) => { + ::SELECTOR + } + Self::slasher(_) => ::SELECTOR, + Self::stake(_) => ::SELECTOR, + Self::strategyManager(_) => { + ::SELECTOR + } + Self::unpause(_) => ::SELECTOR, + Self::updateBeaconChainOracle(_) => { + ::SELECTOR + } + Self::withdrawSharesAsTokens(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn addShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IEigenPodManagerCalls::addShares) + } + addShares + }, + { + fn setPauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodManagerCalls::setPauserRegistry) + } + setPauserRegistry + }, + { + fn pause( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IEigenPodManagerCalls::pause) + } + pause + }, + { + fn eigenPodBeacon( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodManagerCalls::eigenPodBeacon) + } + eigenPodBeacon + }, + { + fn withdrawSharesAsTokens( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodManagerCalls::withdrawSharesAsTokens) + } + withdrawSharesAsTokens + }, + { + fn strategyManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodManagerCalls::strategyManager) + } + strategyManager + }, + { + fn denebForkTimestamp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodManagerCalls::denebForkTimestamp) + } + denebForkTimestamp + }, + { + fn setDenebForkTimestamp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodManagerCalls::setDenebForkTimestamp) + } + setDenebForkTimestamp + }, + { + fn pauseAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IEigenPodManagerCalls::pauseAll) + } + pauseAll + }, + { + fn paused_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IEigenPodManagerCalls::paused_0) + } + paused_0 + }, + { + fn paused_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IEigenPodManagerCalls::paused_1) + } + paused_1 + }, + { + fn podOwnerShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodManagerCalls::podOwnerShares) + } + podOwnerShares + }, + { + fn ethPOS( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IEigenPodManagerCalls::ethPOS) + } + ethPOS + }, + { + fn createPod( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IEigenPodManagerCalls::createPod) + } + createPod + }, + { + fn pauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodManagerCalls::pauserRegistry) + } + pauserRegistry + }, + { + fn beaconChainETHStrategy( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodManagerCalls::beaconChainETHStrategy) + } + beaconChainETHStrategy + }, + { + fn stake( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IEigenPodManagerCalls::stake) + } + stake + }, + { + fn ownerToPod( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IEigenPodManagerCalls::ownerToPod) + } + ownerToPod + }, + { + fn getPod( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IEigenPodManagerCalls::getPod) + } + getPod + }, + { + fn numPods( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IEigenPodManagerCalls::numPods) + } + numPods + }, + { + fn slasher( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IEigenPodManagerCalls::slasher) + } + slasher + }, + { + fn removeShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodManagerCalls::removeShares) + } + removeShares + }, + { + fn beaconChainOracle( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodManagerCalls::beaconChainOracle) + } + beaconChainOracle + }, + { + fn updateBeaconChainOracle( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodManagerCalls::updateBeaconChainOracle) + } + updateBeaconChainOracle + }, + { + fn recordBeaconChainETHBalanceUpdate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + IEigenPodManagerCalls::recordBeaconChainETHBalanceUpdate, + ) + } + recordBeaconChainETHBalanceUpdate + }, + { + fn getBlockRootAtTimestamp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEigenPodManagerCalls::getBlockRootAtTimestamp) + } + getBlockRootAtTimestamp + }, + { + fn hasPod( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IEigenPodManagerCalls::hasPod) + } + hasPod + }, + { + fn unpause( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IEigenPodManagerCalls::unpause) + } + unpause + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::addShares(inner) => { + ::abi_encoded_size(inner) + } + Self::beaconChainETHStrategy(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::beaconChainOracle(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::createPod(inner) => { + ::abi_encoded_size(inner) + } + Self::denebForkTimestamp(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::eigenPodBeacon(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::ethPOS(inner) => { + ::abi_encoded_size(inner) + } + Self::getBlockRootAtTimestamp(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getPod(inner) => { + ::abi_encoded_size(inner) + } + Self::hasPod(inner) => { + ::abi_encoded_size(inner) + } + Self::numPods(inner) => { + ::abi_encoded_size(inner) + } + Self::ownerToPod(inner) => { + ::abi_encoded_size(inner) + } + Self::pause(inner) => { + ::abi_encoded_size(inner) + } + Self::pauseAll(inner) => { + ::abi_encoded_size(inner) + } + Self::paused_0(inner) => { + ::abi_encoded_size(inner) + } + Self::paused_1(inner) => { + ::abi_encoded_size(inner) + } + Self::pauserRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::podOwnerShares(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::recordBeaconChainETHBalanceUpdate(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::removeShares(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setDenebForkTimestamp(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setPauserRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::slasher(inner) => { + ::abi_encoded_size(inner) + } + Self::stake(inner) => { + ::abi_encoded_size(inner) + } + Self::strategyManager(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::unpause(inner) => { + ::abi_encoded_size(inner) + } + Self::updateBeaconChainOracle(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::withdrawSharesAsTokens(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::addShares(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::beaconChainETHStrategy(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::beaconChainOracle(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::createPod(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::denebForkTimestamp(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::eigenPodBeacon(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::ethPOS(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getBlockRootAtTimestamp(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getPod(inner) => { + ::abi_encode_raw(inner, out) + } + Self::hasPod(inner) => { + ::abi_encode_raw(inner, out) + } + Self::numPods(inner) => { + ::abi_encode_raw(inner, out) + } + Self::ownerToPod(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::pause(inner) => { + ::abi_encode_raw(inner, out) + } + Self::pauseAll(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::paused_0(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::paused_1(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::pauserRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::podOwnerShares(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::recordBeaconChainETHBalanceUpdate(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::removeShares(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setDenebForkTimestamp(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setPauserRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::slasher(inner) => { + ::abi_encode_raw(inner, out) + } + Self::stake(inner) => { + ::abi_encode_raw(inner, out) + } + Self::strategyManager(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::unpause(inner) => { + ::abi_encode_raw(inner, out) + } + Self::updateBeaconChainOracle(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::withdrawSharesAsTokens(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`IEigenPodManager`](self) events. + pub enum IEigenPodManagerEvents { + BeaconChainETHDeposited(BeaconChainETHDeposited), + BeaconChainETHWithdrawalCompleted(BeaconChainETHWithdrawalCompleted), + BeaconOracleUpdated(BeaconOracleUpdated), + DenebForkTimestampUpdated(DenebForkTimestampUpdated), + Paused(Paused), + PauserRegistrySet(PauserRegistrySet), + PodDeployed(PodDeployed), + PodSharesUpdated(PodSharesUpdated), + Unpaused(Unpaused), + } + #[automatically_derived] + impl IEigenPodManagerEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 8u8, 240u8, 71u8, 7u8, 84u8, 148u8, 108u8, 207u8, 187u8, 68u8, 111u8, 247u8, 253u8, + 45u8, 106u8, 230u8, 175u8, 27u8, 189u8, 174u8, 25u8, 248u8, 87u8, 148u8, 192u8, + 204u8, 94u8, 213u8, 232u8, 206u8, 180u8, 246u8, + ], + [ + 25u8, 32u8, 11u8, 111u8, 218u8, 213u8, 143u8, 145u8, 178u8, 244u8, 150u8, 176u8, + 196u8, 68u8, 252u8, 75u8, 227u8, 239u8, 247u8, 74u8, 126u8, 36u8, 176u8, 119u8, + 112u8, 224u8, 74u8, 113u8, 55u8, 191u8, 217u8, 219u8, + ], + [ + 33u8, 201u8, 157u8, 13u8, 176u8, 34u8, 19u8, 195u8, 47u8, 255u8, 91u8, 5u8, 207u8, + 10u8, 113u8, 138u8, 181u8, 248u8, 88u8, 128u8, 43u8, 145u8, 73u8, 143u8, 128u8, + 216u8, 34u8, 112u8, 40u8, 157u8, 133u8, 106u8, + ], + [ + 53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8, 2u8, + 188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8, 228u8, 152u8, + 107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8, + ], + [ + 53u8, 168u8, 92u8, 171u8, 198u8, 3u8, 244u8, 138u8, 187u8, 43u8, 113u8, 217u8, + 251u8, 216u8, 173u8, 234u8, 124u8, 68u8, 157u8, 127u8, 11u8, 233u8, 0u8, 174u8, + 122u8, 41u8, 134u8, 234u8, 54u8, 156u8, 61u8, 13u8, + ], + [ + 78u8, 43u8, 121u8, 29u8, 237u8, 204u8, 217u8, 251u8, 48u8, 20u8, 27u8, 8u8, 140u8, + 171u8, 245u8, 193u8, 74u8, 137u8, 18u8, 181u8, 47u8, 89u8, 55u8, 92u8, 149u8, + 192u8, 16u8, 112u8, 11u8, 140u8, 97u8, 147u8, + ], + [ + 110u8, 159u8, 205u8, 83u8, 152u8, 150u8, 252u8, 166u8, 14u8, 139u8, 15u8, 1u8, + 221u8, 88u8, 2u8, 51u8, 228u8, 138u8, 107u8, 15u8, 125u8, 240u8, 19u8, 184u8, + 155u8, 167u8, 245u8, 101u8, 134u8, 154u8, 205u8, 182u8, + ], + [ + 166u8, 186u8, 177u8, 213u8, 90u8, 54u8, 31u8, 206u8, 162u8, 238u8, 226u8, 188u8, + 148u8, 145u8, 228u8, 240u8, 30u8, 108u8, 243u8, 51u8, 223u8, 3u8, 201u8, 196u8, + 242u8, 193u8, 68u8, 70u8, 100u8, 41u8, 247u8, 214u8, + ], + [ + 171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8, 188u8, + 152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8, 11u8, 182u8, + 224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IEigenPodManagerEvents { + const NAME: &'static str = "IEigenPodManagerEvents"; + const COUNT: usize = 9usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::BeaconChainETHDeposited) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::BeaconChainETHWithdrawalCompleted) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::BeaconOracleUpdated) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::DenebForkTimestampUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Paused) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::PauserRegistrySet) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::PodDeployed) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::PodSharesUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Unpaused) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for IEigenPodManagerEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::BeaconChainETHDeposited(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::BeaconChainETHWithdrawalCompleted(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::BeaconOracleUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::DenebForkTimestampUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Paused(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::PauserRegistrySet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::PodDeployed(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::PodSharesUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Unpaused(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::BeaconChainETHDeposited(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::BeaconChainETHWithdrawalCompleted(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::BeaconOracleUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::DenebForkTimestampUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Paused(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::PauserRegistrySet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::PodDeployed(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::PodSharesUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Unpaused(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IEigenPodManager`](self) contract instance. + + See the [wrapper's documentation](`IEigenPodManagerInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IEigenPodManagerInstance { + IEigenPodManagerInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + IEigenPodManagerInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IEigenPodManagerInstance::::deploy_builder(provider) + } + /**A [`IEigenPodManager`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IEigenPodManager`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IEigenPodManagerInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IEigenPodManagerInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IEigenPodManagerInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IEigenPodManagerInstance + { + /**Creates a new wrapper around an on-chain [`IEigenPodManager`](self) contract instance. + + See the [wrapper's documentation](`IEigenPodManagerInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IEigenPodManagerInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IEigenPodManagerInstance { + IEigenPodManagerInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IEigenPodManagerInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`addShares`] function. + pub fn addShares( + &self, + podOwner: alloy::sol_types::private::Address, + shares: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&addSharesCall { podOwner, shares }) + } + ///Creates a new call builder for the [`beaconChainETHStrategy`] function. + pub fn beaconChainETHStrategy( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&beaconChainETHStrategyCall {}) + } + ///Creates a new call builder for the [`beaconChainOracle`] function. + pub fn beaconChainOracle( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&beaconChainOracleCall {}) + } + ///Creates a new call builder for the [`createPod`] function. + pub fn createPod(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&createPodCall {}) + } + ///Creates a new call builder for the [`denebForkTimestamp`] function. + pub fn denebForkTimestamp( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&denebForkTimestampCall {}) + } + ///Creates a new call builder for the [`eigenPodBeacon`] function. + pub fn eigenPodBeacon( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&eigenPodBeaconCall {}) + } + ///Creates a new call builder for the [`ethPOS`] function. + pub fn ethPOS(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(ðPOSCall {}) + } + ///Creates a new call builder for the [`getBlockRootAtTimestamp`] function. + pub fn getBlockRootAtTimestamp( + &self, + timestamp: u64, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getBlockRootAtTimestampCall { timestamp }) + } + ///Creates a new call builder for the [`getPod`] function. + pub fn getPod( + &self, + podOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getPodCall { podOwner }) + } + ///Creates a new call builder for the [`hasPod`] function. + pub fn hasPod( + &self, + podOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&hasPodCall { podOwner }) + } + ///Creates a new call builder for the [`numPods`] function. + pub fn numPods(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&numPodsCall {}) + } + ///Creates a new call builder for the [`ownerToPod`] function. + pub fn ownerToPod( + &self, + podOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerToPodCall { podOwner }) + } + ///Creates a new call builder for the [`pause`] function. + pub fn pause( + &self, + newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&pauseCall { newPausedStatus }) + } + ///Creates a new call builder for the [`pauseAll`] function. + pub fn pauseAll(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&pauseAllCall {}) + } + ///Creates a new call builder for the [`paused_0`] function. + pub fn paused_0( + &self, + index: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&paused_0Call { index }) + } + ///Creates a new call builder for the [`paused_1`] function. + pub fn paused_1(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&paused_1Call {}) + } + ///Creates a new call builder for the [`pauserRegistry`] function. + pub fn pauserRegistry( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&pauserRegistryCall {}) + } + ///Creates a new call builder for the [`podOwnerShares`] function. + pub fn podOwnerShares( + &self, + podOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&podOwnerSharesCall { podOwner }) + } + ///Creates a new call builder for the [`recordBeaconChainETHBalanceUpdate`] function. + pub fn recordBeaconChainETHBalanceUpdate( + &self, + podOwner: alloy::sol_types::private::Address, + sharesDelta: alloy::sol_types::private::primitives::aliases::I256, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&recordBeaconChainETHBalanceUpdateCall { + podOwner, + sharesDelta, + }) + } + ///Creates a new call builder for the [`removeShares`] function. + pub fn removeShares( + &self, + podOwner: alloy::sol_types::private::Address, + shares: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&removeSharesCall { podOwner, shares }) + } + ///Creates a new call builder for the [`setDenebForkTimestamp`] function. + pub fn setDenebForkTimestamp( + &self, + newDenebForkTimestamp: u64, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setDenebForkTimestampCall { + newDenebForkTimestamp, + }) + } + ///Creates a new call builder for the [`setPauserRegistry`] function. + pub fn setPauserRegistry( + &self, + newPauserRegistry: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setPauserRegistryCall { newPauserRegistry }) + } + ///Creates a new call builder for the [`slasher`] function. + pub fn slasher(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&slasherCall {}) + } + ///Creates a new call builder for the [`stake`] function. + pub fn stake( + &self, + pubkey: alloy::sol_types::private::Bytes, + signature: alloy::sol_types::private::Bytes, + depositDataRoot: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&stakeCall { + pubkey, + signature, + depositDataRoot, + }) + } + ///Creates a new call builder for the [`strategyManager`] function. + pub fn strategyManager( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&strategyManagerCall {}) + } + ///Creates a new call builder for the [`unpause`] function. + pub fn unpause( + &self, + newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&unpauseCall { newPausedStatus }) + } + ///Creates a new call builder for the [`updateBeaconChainOracle`] function. + pub fn updateBeaconChainOracle( + &self, + newBeaconChainOracle: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateBeaconChainOracleCall { + newBeaconChainOracle, + }) + } + ///Creates a new call builder for the [`withdrawSharesAsTokens`] function. + pub fn withdrawSharesAsTokens( + &self, + podOwner: alloy::sol_types::private::Address, + destination: alloy::sol_types::private::Address, + shares: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&withdrawSharesAsTokensCall { + podOwner, + destination, + shares, + }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IEigenPodManagerInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`BeaconChainETHDeposited`] event. + pub fn BeaconChainETHDeposited_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`BeaconChainETHWithdrawalCompleted`] event. + pub fn BeaconChainETHWithdrawalCompleted_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`BeaconOracleUpdated`] event. + pub fn BeaconOracleUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`DenebForkTimestampUpdated`] event. + pub fn DenebForkTimestampUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Paused`] event. + pub fn Paused_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`PauserRegistrySet`] event. + pub fn PauserRegistrySet_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`PodDeployed`] event. + pub fn PodDeployed_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`PodSharesUpdated`] event. + pub fn PodSharesUpdated_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Unpaused`] event. + pub fn Unpaused_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/iejectionmanager.rs b/crates/utils/src/iejectionmanager.rs new file mode 100644 index 00000000..7ce4f530 --- /dev/null +++ b/crates/utils/src/iejectionmanager.rs @@ -0,0 +1,1809 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IEjectionManager { + struct QuorumEjectionParams { + uint32 rateLimitWindow; + uint16 ejectableStakePercent; + } + + event EjectorUpdated(address ejector, bool status); + event OperatorEjected(bytes32 operatorId, uint8 quorumNumber); + event QuorumEjection(uint32 ejectedOperators, bool ratelimitHit); + event QuorumEjectionParamsSet(uint8 quorumNumber, uint32 rateLimitWindow, uint16 ejectableStakePercent); + + function amountEjectableForQuorum(uint8 _quorumNumber) external view returns (uint256); + function ejectOperators(bytes32[][] memory _operatorIds) external; + function setEjector(address _ejector, bool _status) external; + function setQuorumEjectionParams(uint8 _quorumNumber, QuorumEjectionParams memory _quorumEjectionParams) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "amountEjectableForQuorum", + "inputs": [ + { + "name": "_quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "ejectOperators", + "inputs": [ + { + "name": "_operatorIds", + "type": "bytes32[][]", + "internalType": "bytes32[][]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setEjector", + "inputs": [ + { + "name": "_ejector", + "type": "address", + "internalType": "address" + }, + { + "name": "_status", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setQuorumEjectionParams", + "inputs": [ + { + "name": "_quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "_quorumEjectionParams", + "type": "tuple", + "internalType": "struct IEjectionManager.QuorumEjectionParams", + "components": [ + { + "name": "rateLimitWindow", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "ejectableStakePercent", + "type": "uint16", + "internalType": "uint16" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "EjectorUpdated", + "inputs": [ + { + "name": "ejector", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "status", + "type": "bool", + "indexed": false, + "internalType": "bool" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorEjected", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "quorumNumber", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "QuorumEjection", + "inputs": [ + { + "name": "ejectedOperators", + "type": "uint32", + "indexed": false, + "internalType": "uint32" + }, + { + "name": "ratelimitHit", + "type": "bool", + "indexed": false, + "internalType": "bool" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "QuorumEjectionParamsSet", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + }, + { + "name": "rateLimitWindow", + "type": "uint32", + "indexed": false, + "internalType": "uint32" + }, + { + "name": "ejectableStakePercent", + "type": "uint16", + "indexed": false, + "internalType": "uint16" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IEjectionManager { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**```solidity + struct QuorumEjectionParams { uint32 rateLimitWindow; uint16 ejectableStakePercent; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct QuorumEjectionParams { + pub rateLimitWindow: u32, + pub ejectableStakePercent: u16, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<16>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32, u16); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: QuorumEjectionParams) -> Self { + (value.rateLimitWindow, value.ejectableStakePercent) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for QuorumEjectionParams { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + rateLimitWindow: tuple.0, + ejectableStakePercent: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for QuorumEjectionParams { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for QuorumEjectionParams { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.rateLimitWindow, + ), + as alloy_sol_types::SolType>::tokenize( + &self.ejectableStakePercent, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for QuorumEjectionParams { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for QuorumEjectionParams { + const NAME: &'static str = "QuorumEjectionParams"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "QuorumEjectionParams(uint32 rateLimitWindow,uint16 ejectableStakePercent)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word( + &self.rateLimitWindow, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.ejectableStakePercent, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for QuorumEjectionParams { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.rateLimitWindow, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.ejectableStakePercent, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.rateLimitWindow, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.ejectableStakePercent, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**Event with signature `EjectorUpdated(address,bool)` and selector `0x7676686b6d22e112412bd874d70177e011ab06602c26063f19f0386c9a3cee42`. + ```solidity + event EjectorUpdated(address ejector, bool status); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct EjectorUpdated { + #[allow(missing_docs)] + pub ejector: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub status: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for EjectorUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "EjectorUpdated(address,bool)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 118u8, 118u8, 104u8, 107u8, 109u8, 34u8, 225u8, 18u8, 65u8, 43u8, 216u8, 116u8, + 215u8, 1u8, 119u8, 224u8, 17u8, 171u8, 6u8, 96u8, 44u8, 38u8, 6u8, 63u8, 25u8, + 240u8, 56u8, 108u8, 154u8, 60u8, 238u8, 66u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + ejector: data.0, + status: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.ejector, + ), + ::tokenize( + &self.status, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for EjectorUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&EjectorUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &EjectorUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorEjected(bytes32,uint8)` and selector `0x97ddb711c61a9d2d7effcba3e042a33862297f898d555655cca39ec4451f53b4`. + ```solidity + event OperatorEjected(bytes32 operatorId, uint8 quorumNumber); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorEjected { + #[allow(missing_docs)] + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub quorumNumber: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorEjected { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "OperatorEjected(bytes32,uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 151u8, 221u8, 183u8, 17u8, 198u8, 26u8, 157u8, 45u8, 126u8, 255u8, 203u8, + 163u8, 224u8, 66u8, 163u8, 56u8, 98u8, 41u8, 127u8, 137u8, 141u8, 85u8, 86u8, + 85u8, 204u8, 163u8, 158u8, 196u8, 69u8, 31u8, 83u8, 180u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operatorId: data.0, + quorumNumber: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorEjected { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorEjected> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorEjected) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `QuorumEjection(uint32,bool)` and selector `0x19dd87ae49ed14a795f8c2d5e8055bf2a4a9d01641a00a2f8f0a5a7bf7f70249`. + ```solidity + event QuorumEjection(uint32 ejectedOperators, bool ratelimitHit); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct QuorumEjection { + #[allow(missing_docs)] + pub ejectedOperators: u32, + #[allow(missing_docs)] + pub ratelimitHit: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for QuorumEjection { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Bool, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "QuorumEjection(uint32,bool)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 25u8, 221u8, 135u8, 174u8, 73u8, 237u8, 20u8, 167u8, 149u8, 248u8, 194u8, + 213u8, 232u8, 5u8, 91u8, 242u8, 164u8, 169u8, 208u8, 22u8, 65u8, 160u8, 10u8, + 47u8, 143u8, 10u8, 90u8, 123u8, 247u8, 247u8, 2u8, 73u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + ejectedOperators: data.0, + ratelimitHit: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.ejectedOperators, + ), + ::tokenize( + &self.ratelimitHit, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for QuorumEjection { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&QuorumEjection> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &QuorumEjection) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `QuorumEjectionParamsSet(uint8,uint32,uint16)` and selector `0xe69c2827a1e2fdd32265ebb4eeea5ee564f0551cf5dfed4150f8e116a67209eb`. + ```solidity + event QuorumEjectionParamsSet(uint8 quorumNumber, uint32 rateLimitWindow, uint16 ejectableStakePercent); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct QuorumEjectionParamsSet { + #[allow(missing_docs)] + pub quorumNumber: u8, + #[allow(missing_docs)] + pub rateLimitWindow: u32, + #[allow(missing_docs)] + pub ejectableStakePercent: u16, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for QuorumEjectionParamsSet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<16>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "QuorumEjectionParamsSet(uint8,uint32,uint16)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 230u8, 156u8, 40u8, 39u8, 161u8, 226u8, 253u8, 211u8, 34u8, 101u8, 235u8, + 180u8, 238u8, 234u8, 94u8, 229u8, 100u8, 240u8, 85u8, 28u8, 245u8, 223u8, + 237u8, 65u8, 80u8, 248u8, 225u8, 22u8, 166u8, 114u8, 9u8, 235u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + quorumNumber: data.0, + rateLimitWindow: data.1, + ejectableStakePercent: data.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.rateLimitWindow, + ), + as alloy_sol_types::SolType>::tokenize( + &self.ejectableStakePercent, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for QuorumEjectionParamsSet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&QuorumEjectionParamsSet> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &QuorumEjectionParamsSet) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `amountEjectableForQuorum(uint8)` and selector `0xb13f4504`. + ```solidity + function amountEjectableForQuorum(uint8 _quorumNumber) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct amountEjectableForQuorumCall { + pub _quorumNumber: u8, + } + ///Container type for the return parameters of the [`amountEjectableForQuorum(uint8)`](amountEjectableForQuorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct amountEjectableForQuorumReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: amountEjectableForQuorumCall) -> Self { + (value._quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for amountEjectableForQuorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: amountEjectableForQuorumReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for amountEjectableForQuorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for amountEjectableForQuorumCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = amountEjectableForQuorumReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "amountEjectableForQuorum(uint8)"; + const SELECTOR: [u8; 4] = [177u8, 63u8, 69u8, 4u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `ejectOperators(bytes32[][])` and selector `0x0a0593d1`. + ```solidity + function ejectOperators(bytes32[][] memory _operatorIds) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ejectOperatorsCall { + pub _operatorIds: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec>, + >, + } + ///Container type for the return parameters of the [`ejectOperators(bytes32[][])`](ejectOperatorsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ejectOperatorsReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array>, + >, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec>, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ejectOperatorsCall) -> Self { + (value._operatorIds,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ejectOperatorsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _operatorIds: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ejectOperatorsReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ejectOperatorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ejectOperatorsCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array>, + >, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ejectOperatorsReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ejectOperators(bytes32[][])"; + const SELECTOR: [u8; 4] = [10u8, 5u8, 147u8, 209u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (>, + > as alloy_sol_types::SolType>::tokenize( + &self._operatorIds + ),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setEjector(address,bool)` and selector `0x10ea4f8a`. + ```solidity + function setEjector(address _ejector, bool _status) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setEjectorCall { + pub _ejector: alloy::sol_types::private::Address, + pub _status: bool, + } + ///Container type for the return parameters of the [`setEjector(address,bool)`](setEjectorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setEjectorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address, bool); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setEjectorCall) -> Self { + (value._ejector, value._status) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setEjectorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _ejector: tuple.0, + _status: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setEjectorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setEjectorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setEjectorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setEjectorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setEjector(address,bool)"; + const SELECTOR: [u8; 4] = [16u8, 234u8, 79u8, 138u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._ejector, + ), + ::tokenize( + &self._status, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setQuorumEjectionParams(uint8,(uint32,uint16))` and selector `0x77d17586`. + ```solidity + function setQuorumEjectionParams(uint8 _quorumNumber, QuorumEjectionParams memory _quorumEjectionParams) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setQuorumEjectionParamsCall { + pub _quorumNumber: u8, + pub _quorumEjectionParams: ::RustType, + } + ///Container type for the return parameters of the [`setQuorumEjectionParams(uint8,(uint32,uint16))`](setQuorumEjectionParamsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setQuorumEjectionParamsReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Uint<8>, QuorumEjectionParams); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u8, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setQuorumEjectionParamsCall) -> Self { + (value._quorumNumber, value._quorumEjectionParams) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setQuorumEjectionParamsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _quorumNumber: tuple.0, + _quorumEjectionParams: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setQuorumEjectionParamsReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setQuorumEjectionParamsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setQuorumEjectionParamsCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>, QuorumEjectionParams); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setQuorumEjectionParamsReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setQuorumEjectionParams(uint8,(uint32,uint16))"; + const SELECTOR: [u8; 4] = [119u8, 209u8, 117u8, 134u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._quorumNumber, + ), + ::tokenize( + &self._quorumEjectionParams, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IEjectionManager`](self) function calls. + pub enum IEjectionManagerCalls { + amountEjectableForQuorum(amountEjectableForQuorumCall), + ejectOperators(ejectOperatorsCall), + setEjector(setEjectorCall), + setQuorumEjectionParams(setQuorumEjectionParamsCall), + } + #[automatically_derived] + impl IEjectionManagerCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [10u8, 5u8, 147u8, 209u8], + [16u8, 234u8, 79u8, 138u8], + [119u8, 209u8, 117u8, 134u8], + [177u8, 63u8, 69u8, 4u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IEjectionManagerCalls { + const NAME: &'static str = "IEjectionManagerCalls"; + const MIN_DATA_LENGTH: usize = 32usize; + const COUNT: usize = 4usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::amountEjectableForQuorum(_) => { + ::SELECTOR + } + Self::ejectOperators(_) => { + ::SELECTOR + } + Self::setEjector(_) => ::SELECTOR, + Self::setQuorumEjectionParams(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn ejectOperators( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEjectionManagerCalls::ejectOperators) + } + ejectOperators + }, + { + fn setEjector( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IEjectionManagerCalls::setEjector) + } + setEjector + }, + { + fn setQuorumEjectionParams( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEjectionManagerCalls::setQuorumEjectionParams) + } + setQuorumEjectionParams + }, + { + fn amountEjectableForQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IEjectionManagerCalls::amountEjectableForQuorum) + } + amountEjectableForQuorum + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::amountEjectableForQuorum(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::ejectOperators(inner) => { + ::abi_encoded_size(inner) + } + Self::setEjector(inner) => { + ::abi_encoded_size(inner) + } + Self::setQuorumEjectionParams(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::amountEjectableForQuorum(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::ejectOperators(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setEjector(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setQuorumEjectionParams(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + } + } + } + ///Container for all the [`IEjectionManager`](self) events. + pub enum IEjectionManagerEvents { + EjectorUpdated(EjectorUpdated), + OperatorEjected(OperatorEjected), + QuorumEjection(QuorumEjection), + QuorumEjectionParamsSet(QuorumEjectionParamsSet), + } + #[automatically_derived] + impl IEjectionManagerEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 25u8, 221u8, 135u8, 174u8, 73u8, 237u8, 20u8, 167u8, 149u8, 248u8, 194u8, 213u8, + 232u8, 5u8, 91u8, 242u8, 164u8, 169u8, 208u8, 22u8, 65u8, 160u8, 10u8, 47u8, 143u8, + 10u8, 90u8, 123u8, 247u8, 247u8, 2u8, 73u8, + ], + [ + 118u8, 118u8, 104u8, 107u8, 109u8, 34u8, 225u8, 18u8, 65u8, 43u8, 216u8, 116u8, + 215u8, 1u8, 119u8, 224u8, 17u8, 171u8, 6u8, 96u8, 44u8, 38u8, 6u8, 63u8, 25u8, + 240u8, 56u8, 108u8, 154u8, 60u8, 238u8, 66u8, + ], + [ + 151u8, 221u8, 183u8, 17u8, 198u8, 26u8, 157u8, 45u8, 126u8, 255u8, 203u8, 163u8, + 224u8, 66u8, 163u8, 56u8, 98u8, 41u8, 127u8, 137u8, 141u8, 85u8, 86u8, 85u8, 204u8, + 163u8, 158u8, 196u8, 69u8, 31u8, 83u8, 180u8, + ], + [ + 230u8, 156u8, 40u8, 39u8, 161u8, 226u8, 253u8, 211u8, 34u8, 101u8, 235u8, 180u8, + 238u8, 234u8, 94u8, 229u8, 100u8, 240u8, 85u8, 28u8, 245u8, 223u8, 237u8, 65u8, + 80u8, 248u8, 225u8, 22u8, 166u8, 114u8, 9u8, 235u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IEjectionManagerEvents { + const NAME: &'static str = "IEjectionManagerEvents"; + const COUNT: usize = 4usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::EjectorUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorEjected) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::QuorumEjection) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::QuorumEjectionParamsSet) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for IEjectionManagerEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::EjectorUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorEjected(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::QuorumEjection(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::QuorumEjectionParamsSet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::EjectorUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorEjected(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::QuorumEjection(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::QuorumEjectionParamsSet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IEjectionManager`](self) contract instance. + + See the [wrapper's documentation](`IEjectionManagerInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IEjectionManagerInstance { + IEjectionManagerInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + IEjectionManagerInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IEjectionManagerInstance::::deploy_builder(provider) + } + /**A [`IEjectionManager`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IEjectionManager`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IEjectionManagerInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IEjectionManagerInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IEjectionManagerInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IEjectionManagerInstance + { + /**Creates a new wrapper around an on-chain [`IEjectionManager`](self) contract instance. + + See the [wrapper's documentation](`IEjectionManagerInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IEjectionManagerInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IEjectionManagerInstance { + IEjectionManagerInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IEjectionManagerInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`amountEjectableForQuorum`] function. + pub fn amountEjectableForQuorum( + &self, + _quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&amountEjectableForQuorumCall { _quorumNumber }) + } + ///Creates a new call builder for the [`ejectOperators`] function. + pub fn ejectOperators( + &self, + _operatorIds: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec>, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&ejectOperatorsCall { _operatorIds }) + } + ///Creates a new call builder for the [`setEjector`] function. + pub fn setEjector( + &self, + _ejector: alloy::sol_types::private::Address, + _status: bool, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setEjectorCall { _ejector, _status }) + } + ///Creates a new call builder for the [`setQuorumEjectionParams`] function. + pub fn setQuorumEjectionParams( + &self, + _quorumNumber: u8, + _quorumEjectionParams: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setQuorumEjectionParamsCall { + _quorumNumber, + _quorumEjectionParams, + }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IEjectionManagerInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`EjectorUpdated`] event. + pub fn EjectorUpdated_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorEjected`] event. + pub fn OperatorEjected_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`QuorumEjection`] event. + pub fn QuorumEjection_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`QuorumEjectionParamsSet`] event. + pub fn QuorumEjectionParamsSet_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/ierc1271.rs b/crates/utils/src/ierc1271.rs new file mode 100644 index 00000000..80b4026d --- /dev/null +++ b/crates/utils/src/ierc1271.rs @@ -0,0 +1,463 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IERC1271 { + function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "isValidSignature", + "inputs": [ + { + "name": "hash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "magicValue", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "stateMutability": "view" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IERC1271 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Function with signature `isValidSignature(bytes32,bytes)` and selector `0x1626ba7e`. + ```solidity + function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isValidSignatureCall { + pub hash: alloy::sol_types::private::FixedBytes<32>, + pub signature: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`isValidSignature(bytes32,bytes)`](isValidSignatureCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isValidSignatureReturn { + pub magicValue: alloy::sol_types::private::FixedBytes<4>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isValidSignatureCall) -> Self { + (value.hash, value.signature) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isValidSignatureCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + hash: tuple.0, + signature: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isValidSignatureReturn) -> Self { + (value.magicValue,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isValidSignatureReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + magicValue: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for isValidSignatureCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = isValidSignatureReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "isValidSignature(bytes32,bytes)"; + const SELECTOR: [u8; 4] = [22u8, 38u8, 186u8, 126u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.hash), + ::tokenize( + &self.signature, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IERC1271`](self) function calls. + pub enum IERC1271Calls { + isValidSignature(isValidSignatureCall), + } + #[automatically_derived] + impl IERC1271Calls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[22u8, 38u8, 186u8, 126u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IERC1271Calls { + const NAME: &'static str = "IERC1271Calls"; + const MIN_DATA_LENGTH: usize = 96usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::isValidSignature(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn(&[u8], bool) -> alloy_sol_types::Result] = + &[{ + fn isValidSignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC1271Calls::isValidSignature) + } + isValidSignature + }]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::isValidSignature(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::isValidSignature(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IERC1271`](self) contract instance. + + See the [wrapper's documentation](`IERC1271Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IERC1271Instance { + IERC1271Instance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + IERC1271Instance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IERC1271Instance::::deploy_builder(provider) + } + /**A [`IERC1271`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IERC1271`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IERC1271Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IERC1271Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IERC1271Instance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC1271Instance + { + /**Creates a new wrapper around an on-chain [`IERC1271`](self) contract instance. + + See the [wrapper's documentation](`IERC1271Instance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IERC1271Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IERC1271Instance { + IERC1271Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC1271Instance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`isValidSignature`] function. + pub fn isValidSignature( + &self, + hash: alloy::sol_types::private::FixedBytes<32>, + signature: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&isValidSignatureCall { hash, signature }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC1271Instance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/ierc1271upgradeable.rs b/crates/utils/src/ierc1271upgradeable.rs new file mode 100644 index 00000000..f26e6537 --- /dev/null +++ b/crates/utils/src/ierc1271upgradeable.rs @@ -0,0 +1,468 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IERC1271Upgradeable { + function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "isValidSignature", + "inputs": [ + { + "name": "hash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "magicValue", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "stateMutability": "view" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IERC1271Upgradeable { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Function with signature `isValidSignature(bytes32,bytes)` and selector `0x1626ba7e`. + ```solidity + function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isValidSignatureCall { + pub hash: alloy::sol_types::private::FixedBytes<32>, + pub signature: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`isValidSignature(bytes32,bytes)`](isValidSignatureCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isValidSignatureReturn { + pub magicValue: alloy::sol_types::private::FixedBytes<4>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isValidSignatureCall) -> Self { + (value.hash, value.signature) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isValidSignatureCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + hash: tuple.0, + signature: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isValidSignatureReturn) -> Self { + (value.magicValue,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isValidSignatureReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + magicValue: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for isValidSignatureCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = isValidSignatureReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "isValidSignature(bytes32,bytes)"; + const SELECTOR: [u8; 4] = [22u8, 38u8, 186u8, 126u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.hash), + ::tokenize( + &self.signature, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IERC1271Upgradeable`](self) function calls. + pub enum IERC1271UpgradeableCalls { + isValidSignature(isValidSignatureCall), + } + #[automatically_derived] + impl IERC1271UpgradeableCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[22u8, 38u8, 186u8, 126u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IERC1271UpgradeableCalls { + const NAME: &'static str = "IERC1271UpgradeableCalls"; + const MIN_DATA_LENGTH: usize = 96usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::isValidSignature(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[{ + fn isValidSignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC1271UpgradeableCalls::isValidSignature) + } + isValidSignature + }]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::isValidSignature(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::isValidSignature(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IERC1271Upgradeable`](self) contract instance. + + See the [wrapper's documentation](`IERC1271UpgradeableInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IERC1271UpgradeableInstance { + IERC1271UpgradeableInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + IERC1271UpgradeableInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IERC1271UpgradeableInstance::::deploy_builder(provider) + } + /**A [`IERC1271Upgradeable`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IERC1271Upgradeable`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IERC1271UpgradeableInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IERC1271UpgradeableInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IERC1271UpgradeableInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC1271UpgradeableInstance + { + /**Creates a new wrapper around an on-chain [`IERC1271Upgradeable`](self) contract instance. + + See the [wrapper's documentation](`IERC1271UpgradeableInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IERC1271UpgradeableInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IERC1271UpgradeableInstance { + IERC1271UpgradeableInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC1271UpgradeableInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`isValidSignature`] function. + pub fn isValidSignature( + &self, + hash: alloy::sol_types::private::FixedBytes<32>, + signature: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&isValidSignatureCall { hash, signature }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC1271UpgradeableInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/ierc165.rs b/crates/utils/src/ierc165.rs new file mode 100644 index 00000000..e5503951 --- /dev/null +++ b/crates/utils/src/ierc165.rs @@ -0,0 +1,440 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IERC165 { + function supportsInterface(bytes4 interfaceID) external view returns (bool); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "supportsInterface", + "inputs": [ + { + "name": "interfaceID", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IERC165 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7`. + ```solidity + function supportsInterface(bytes4 interfaceID) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct supportsInterfaceCall { + pub interfaceID: alloy::sol_types::private::FixedBytes<4>, + } + ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct supportsInterfaceReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: supportsInterfaceCall) -> Self { + (value.interfaceID,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for supportsInterfaceCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + interfaceID: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: supportsInterfaceReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for supportsInterfaceReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for supportsInterfaceCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = supportsInterfaceReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "supportsInterface(bytes4)"; + const SELECTOR: [u8; 4] = [1u8, 255u8, 201u8, 167u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.interfaceID), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IERC165`](self) function calls. + pub enum IERC165Calls { + supportsInterface(supportsInterfaceCall), + } + #[automatically_derived] + impl IERC165Calls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[1u8, 255u8, 201u8, 167u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IERC165Calls { + const NAME: &'static str = "IERC165Calls"; + const MIN_DATA_LENGTH: usize = 32usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::supportsInterface(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn(&[u8], bool) -> alloy_sol_types::Result] = &[{ + fn supportsInterface( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC165Calls::supportsInterface) + } + supportsInterface + }]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::supportsInterface(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::supportsInterface(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IERC165`](self) contract instance. + + See the [wrapper's documentation](`IERC165Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IERC165Instance { + IERC165Instance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + IERC165Instance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IERC165Instance::::deploy_builder(provider) + } + /**A [`IERC165`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IERC165`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IERC165Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IERC165Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IERC165Instance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC165Instance + { + /**Creates a new wrapper around an on-chain [`IERC165`](self) contract instance. + + See the [wrapper's documentation](`IERC165Instance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IERC165Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IERC165Instance { + IERC165Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC165Instance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`supportsInterface`] function. + pub fn supportsInterface( + &self, + interfaceID: alloy::sol_types::private::FixedBytes<4>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&supportsInterfaceCall { interfaceID }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC165Instance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/ierc1822proxiable.rs b/crates/utils/src/ierc1822proxiable.rs new file mode 100644 index 00000000..a18c2cd0 --- /dev/null +++ b/crates/utils/src/ierc1822proxiable.rs @@ -0,0 +1,425 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IERC1822Proxiable { + function proxiableUUID() external view returns (bytes32); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "proxiableUUID", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IERC1822Proxiable { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Function with signature `proxiableUUID()` and selector `0x52d1902d`. + ```solidity + function proxiableUUID() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct proxiableUUIDCall {} + ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct proxiableUUIDReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: proxiableUUIDCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for proxiableUUIDCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: proxiableUUIDReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for proxiableUUIDReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for proxiableUUIDCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = proxiableUUIDReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "proxiableUUID()"; + const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IERC1822Proxiable`](self) function calls. + pub enum IERC1822ProxiableCalls { + proxiableUUID(proxiableUUIDCall), + } + #[automatically_derived] + impl IERC1822ProxiableCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[82u8, 209u8, 144u8, 45u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IERC1822ProxiableCalls { + const NAME: &'static str = "IERC1822ProxiableCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::proxiableUUID(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[{ + fn proxiableUUID( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IERC1822ProxiableCalls::proxiableUUID) + } + proxiableUUID + }]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::proxiableUUID(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::proxiableUUID(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IERC1822Proxiable`](self) contract instance. + + See the [wrapper's documentation](`IERC1822ProxiableInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IERC1822ProxiableInstance { + IERC1822ProxiableInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + IERC1822ProxiableInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IERC1822ProxiableInstance::::deploy_builder(provider) + } + /**A [`IERC1822Proxiable`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IERC1822Proxiable`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IERC1822ProxiableInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IERC1822ProxiableInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IERC1822ProxiableInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC1822ProxiableInstance + { + /**Creates a new wrapper around an on-chain [`IERC1822Proxiable`](self) contract instance. + + See the [wrapper's documentation](`IERC1822ProxiableInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IERC1822ProxiableInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IERC1822ProxiableInstance { + IERC1822ProxiableInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC1822ProxiableInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`proxiableUUID`] function. + pub fn proxiableUUID(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&proxiableUUIDCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC1822ProxiableInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/ierc20.rs b/crates/utils/src/ierc20.rs new file mode 100644 index 00000000..c0d1d637 --- /dev/null +++ b/crates/utils/src/ierc20.rs @@ -0,0 +1,1669 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IERC20 { + event Approval(address indexed owner, address indexed spender, uint256 value); + event Transfer(address indexed from, address indexed to, uint256 value); + + function allowance(address owner, address spender) external view returns (uint256); + function approve(address spender, uint256 amount) external returns (bool); + function balanceOf(address account) external view returns (uint256); + function totalSupply() external view returns (uint256); + function transfer(address to, uint256 amount) external returns (bool); + function transferFrom(address from, address to, uint256 amount) external returns (bool); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "allowance", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "approve", + "inputs": [ + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "balanceOf", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "totalSupply", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transfer", + "inputs": [ + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Approval", + "inputs": [ + { + "name": "owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Transfer", + "inputs": [ + { + "name": "from", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IERC20 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Event with signature `Approval(address,address,uint256)` and selector `0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925`. + ```solidity + event Approval(address indexed owner, address indexed spender, uint256 value); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Approval { + #[allow(missing_docs)] + pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub spender: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub value: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Approval { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Approval(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 140u8, 91u8, 225u8, 229u8, 235u8, 236u8, 125u8, 91u8, 209u8, 79u8, 113u8, 66u8, + 125u8, 30u8, 132u8, 243u8, 221u8, 3u8, 20u8, 192u8, 247u8, 178u8, 41u8, 30u8, + 91u8, 32u8, 10u8, 200u8, 199u8, 195u8, 185u8, 37u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + owner: topics.1, + spender: topics.2, + value: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.value, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.owner.clone(), + self.spender.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.owner, + ); + out[2usize] = ::encode_topic( + &self.spender, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Approval { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Approval> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Approval) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Transfer(address,address,uint256)` and selector `0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef`. + ```solidity + event Transfer(address indexed from, address indexed to, uint256 value); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Transfer { + #[allow(missing_docs)] + pub from: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub to: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub value: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Transfer { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Transfer(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 221u8, 242u8, 82u8, 173u8, 27u8, 226u8, 200u8, 155u8, 105u8, 194u8, 176u8, + 104u8, 252u8, 55u8, 141u8, 170u8, 149u8, 43u8, 167u8, 241u8, 99u8, 196u8, + 161u8, 22u8, 40u8, 245u8, 90u8, 77u8, 245u8, 35u8, 179u8, 239u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + from: topics.1, + to: topics.2, + value: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.value, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.from.clone(), + self.to.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.from, + ); + out[2usize] = ::encode_topic( + &self.to, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Transfer { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Transfer> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Transfer) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `allowance(address,address)` and selector `0xdd62ed3e`. + ```solidity + function allowance(address owner, address spender) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct allowanceCall { + pub owner: alloy::sol_types::private::Address, + pub spender: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`allowance(address,address)`](allowanceCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct allowanceReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: allowanceCall) -> Self { + (value.owner, value.spender) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for allowanceCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + owner: tuple.0, + spender: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: allowanceReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for allowanceReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for allowanceCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = allowanceReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "allowance(address,address)"; + const SELECTOR: [u8; 4] = [221u8, 98u8, 237u8, 62u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.owner, + ), + ::tokenize( + &self.spender, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `approve(address,uint256)` and selector `0x095ea7b3`. + ```solidity + function approve(address spender, uint256 amount) external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveCall { + pub spender: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`approve(address,uint256)`](approveCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveCall) -> Self { + (value.spender, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + spender: tuple.0, + amount: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for approveCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = approveReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "approve(address,uint256)"; + const SELECTOR: [u8; 4] = [9u8, 94u8, 167u8, 179u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.spender, + ), + as alloy_sol_types::SolType>::tokenize( + &self.amount, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `balanceOf(address)` and selector `0x70a08231`. + ```solidity + function balanceOf(address account) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfCall { + pub account: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`balanceOf(address)`](balanceOfCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfCall) -> Self { + (value.account,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { account: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for balanceOfCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = balanceOfReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "balanceOf(address)"; + const SELECTOR: [u8; 4] = [112u8, 160u8, 130u8, 49u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.account, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `totalSupply()` and selector `0x18160ddd`. + ```solidity + function totalSupply() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalSupplyCall {} + ///Container type for the return parameters of the [`totalSupply()`](totalSupplyCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalSupplyReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalSupplyCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalSupplyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalSupplyReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalSupplyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for totalSupplyCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = totalSupplyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "totalSupply()"; + const SELECTOR: [u8; 4] = [24u8, 22u8, 13u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `transfer(address,uint256)` and selector `0xa9059cbb`. + ```solidity + function transfer(address to, uint256 amount) external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferCall { + pub to: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`transfer(address,uint256)`](transferCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferCall) -> Self { + (value.to, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + to: tuple.0, + amount: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transfer(address,uint256)"; + const SELECTOR: [u8; 4] = [169u8, 5u8, 156u8, 187u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.to, + ), + as alloy_sol_types::SolType>::tokenize( + &self.amount, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd`. + ```solidity + function transferFrom(address from, address to, uint256 amount) external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromCall { + pub from: alloy::sol_types::private::Address, + pub to: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`transferFrom(address,address,uint256)`](transferFromCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromCall) -> Self { + (value.from, value.to, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + from: tuple.0, + to: tuple.1, + amount: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferFromCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferFromReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferFrom(address,address,uint256)"; + const SELECTOR: [u8; 4] = [35u8, 184u8, 114u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.from, + ), + ::tokenize( + &self.to, + ), + as alloy_sol_types::SolType>::tokenize( + &self.amount, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IERC20`](self) function calls. + pub enum IERC20Calls { + allowance(allowanceCall), + approve(approveCall), + balanceOf(balanceOfCall), + totalSupply(totalSupplyCall), + transfer(transferCall), + transferFrom(transferFromCall), + } + #[automatically_derived] + impl IERC20Calls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [9u8, 94u8, 167u8, 179u8], + [24u8, 22u8, 13u8, 221u8], + [35u8, 184u8, 114u8, 221u8], + [112u8, 160u8, 130u8, 49u8], + [169u8, 5u8, 156u8, 187u8], + [221u8, 98u8, 237u8, 62u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IERC20Calls { + const NAME: &'static str = "IERC20Calls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 6usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::allowance(_) => ::SELECTOR, + Self::approve(_) => ::SELECTOR, + Self::balanceOf(_) => ::SELECTOR, + Self::totalSupply(_) => ::SELECTOR, + Self::transfer(_) => ::SELECTOR, + Self::transferFrom(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn(&[u8], bool) -> alloy_sol_types::Result] = &[ + { + fn approve( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IERC20Calls::approve) + } + approve + }, + { + fn totalSupply( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC20Calls::totalSupply) + } + totalSupply + }, + { + fn transferFrom( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC20Calls::transferFrom) + } + transferFrom + }, + { + fn balanceOf( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IERC20Calls::balanceOf) + } + balanceOf + }, + { + fn transfer( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IERC20Calls::transfer) + } + transfer + }, + { + fn allowance( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IERC20Calls::allowance) + } + allowance + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::allowance(inner) => { + ::abi_encoded_size(inner) + } + Self::approve(inner) => { + ::abi_encoded_size(inner) + } + Self::balanceOf(inner) => { + ::abi_encoded_size(inner) + } + Self::totalSupply(inner) => { + ::abi_encoded_size(inner) + } + Self::transfer(inner) => { + ::abi_encoded_size(inner) + } + Self::transferFrom(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::allowance(inner) => { + ::abi_encode_raw(inner, out) + } + Self::approve(inner) => { + ::abi_encode_raw(inner, out) + } + Self::balanceOf(inner) => { + ::abi_encode_raw(inner, out) + } + Self::totalSupply(inner) => { + ::abi_encode_raw(inner, out) + } + Self::transfer(inner) => { + ::abi_encode_raw(inner, out) + } + Self::transferFrom(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`IERC20`](self) events. + pub enum IERC20Events { + Approval(Approval), + Transfer(Transfer), + } + #[automatically_derived] + impl IERC20Events { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 140u8, 91u8, 225u8, 229u8, 235u8, 236u8, 125u8, 91u8, 209u8, 79u8, 113u8, 66u8, + 125u8, 30u8, 132u8, 243u8, 221u8, 3u8, 20u8, 192u8, 247u8, 178u8, 41u8, 30u8, 91u8, + 32u8, 10u8, 200u8, 199u8, 195u8, 185u8, 37u8, + ], + [ + 221u8, 242u8, 82u8, 173u8, 27u8, 226u8, 200u8, 155u8, 105u8, 194u8, 176u8, 104u8, + 252u8, 55u8, 141u8, 170u8, 149u8, 43u8, 167u8, 241u8, 99u8, 196u8, 161u8, 22u8, + 40u8, 245u8, 90u8, 77u8, 245u8, 35u8, 179u8, 239u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IERC20Events { + const NAME: &'static str = "IERC20Events"; + const COUNT: usize = 2usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::Approval) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::Transfer) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for IERC20Events { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::Transfer(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Transfer(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IERC20`](self) contract instance. + + See the [wrapper's documentation](`IERC20Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IERC20Instance { + IERC20Instance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> { + IERC20Instance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IERC20Instance::::deploy_builder(provider) + } + /**A [`IERC20`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IERC20`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IERC20Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IERC20Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IERC20Instance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC20Instance + { + /**Creates a new wrapper around an on-chain [`IERC20`](self) contract instance. + + See the [wrapper's documentation](`IERC20Instance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IERC20Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IERC20Instance { + IERC20Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC20Instance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`allowance`] function. + pub fn allowance( + &self, + owner: alloy::sol_types::private::Address, + spender: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&allowanceCall { owner, spender }) + } + ///Creates a new call builder for the [`approve`] function. + pub fn approve( + &self, + spender: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&approveCall { spender, amount }) + } + ///Creates a new call builder for the [`balanceOf`] function. + pub fn balanceOf( + &self, + account: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&balanceOfCall { account }) + } + ///Creates a new call builder for the [`totalSupply`] function. + pub fn totalSupply(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&totalSupplyCall {}) + } + ///Creates a new call builder for the [`transfer`] function. + pub fn transfer( + &self, + to: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferCall { to, amount }) + } + ///Creates a new call builder for the [`transferFrom`] function. + pub fn transferFrom( + &self, + from: alloy::sol_types::private::Address, + to: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferFromCall { from, to, amount }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC20Instance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Approval`] event. + pub fn Approval_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Transfer`] event. + pub fn Transfer_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/ierc20metadata.rs b/crates/utils/src/ierc20metadata.rs new file mode 100644 index 00000000..7fec36f8 --- /dev/null +++ b/crates/utils/src/ierc20metadata.rs @@ -0,0 +1,2102 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IERC20Metadata { + event Approval(address indexed owner, address indexed spender, uint256 value); + event Transfer(address indexed from, address indexed to, uint256 value); + + function allowance(address owner, address spender) external view returns (uint256); + function approve(address spender, uint256 amount) external returns (bool); + function balanceOf(address account) external view returns (uint256); + function decimals() external view returns (uint8); + function name() external view returns (string memory); + function symbol() external view returns (string memory); + function totalSupply() external view returns (uint256); + function transfer(address to, uint256 amount) external returns (bool); + function transferFrom(address from, address to, uint256 amount) external returns (bool); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "allowance", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "approve", + "inputs": [ + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "balanceOf", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "decimals", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "symbol", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "totalSupply", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transfer", + "inputs": [ + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Approval", + "inputs": [ + { + "name": "owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Transfer", + "inputs": [ + { + "name": "from", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IERC20Metadata { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Event with signature `Approval(address,address,uint256)` and selector `0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925`. + ```solidity + event Approval(address indexed owner, address indexed spender, uint256 value); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Approval { + #[allow(missing_docs)] + pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub spender: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub value: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Approval { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Approval(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 140u8, 91u8, 225u8, 229u8, 235u8, 236u8, 125u8, 91u8, 209u8, 79u8, 113u8, 66u8, + 125u8, 30u8, 132u8, 243u8, 221u8, 3u8, 20u8, 192u8, 247u8, 178u8, 41u8, 30u8, + 91u8, 32u8, 10u8, 200u8, 199u8, 195u8, 185u8, 37u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + owner: topics.1, + spender: topics.2, + value: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.value, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.owner.clone(), + self.spender.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.owner, + ); + out[2usize] = ::encode_topic( + &self.spender, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Approval { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Approval> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Approval) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Transfer(address,address,uint256)` and selector `0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef`. + ```solidity + event Transfer(address indexed from, address indexed to, uint256 value); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Transfer { + #[allow(missing_docs)] + pub from: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub to: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub value: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Transfer { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Transfer(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 221u8, 242u8, 82u8, 173u8, 27u8, 226u8, 200u8, 155u8, 105u8, 194u8, 176u8, + 104u8, 252u8, 55u8, 141u8, 170u8, 149u8, 43u8, 167u8, 241u8, 99u8, 196u8, + 161u8, 22u8, 40u8, 245u8, 90u8, 77u8, 245u8, 35u8, 179u8, 239u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + from: topics.1, + to: topics.2, + value: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.value, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.from.clone(), + self.to.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.from, + ); + out[2usize] = ::encode_topic( + &self.to, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Transfer { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Transfer> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Transfer) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `allowance(address,address)` and selector `0xdd62ed3e`. + ```solidity + function allowance(address owner, address spender) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct allowanceCall { + pub owner: alloy::sol_types::private::Address, + pub spender: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`allowance(address,address)`](allowanceCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct allowanceReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: allowanceCall) -> Self { + (value.owner, value.spender) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for allowanceCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + owner: tuple.0, + spender: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: allowanceReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for allowanceReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for allowanceCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = allowanceReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "allowance(address,address)"; + const SELECTOR: [u8; 4] = [221u8, 98u8, 237u8, 62u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.owner, + ), + ::tokenize( + &self.spender, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `approve(address,uint256)` and selector `0x095ea7b3`. + ```solidity + function approve(address spender, uint256 amount) external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveCall { + pub spender: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`approve(address,uint256)`](approveCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveCall) -> Self { + (value.spender, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + spender: tuple.0, + amount: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for approveCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = approveReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "approve(address,uint256)"; + const SELECTOR: [u8; 4] = [9u8, 94u8, 167u8, 179u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.spender, + ), + as alloy_sol_types::SolType>::tokenize( + &self.amount, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `balanceOf(address)` and selector `0x70a08231`. + ```solidity + function balanceOf(address account) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfCall { + pub account: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`balanceOf(address)`](balanceOfCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfCall) -> Self { + (value.account,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { account: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for balanceOfCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = balanceOfReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "balanceOf(address)"; + const SELECTOR: [u8; 4] = [112u8, 160u8, 130u8, 49u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.account, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `decimals()` and selector `0x313ce567`. + ```solidity + function decimals() external view returns (uint8); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct decimalsCall {} + ///Container type for the return parameters of the [`decimals()`](decimalsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct decimalsReturn { + pub _0: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: decimalsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for decimalsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: decimalsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for decimalsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for decimalsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = decimalsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "decimals()"; + const SELECTOR: [u8; 4] = [49u8, 60u8, 229u8, 103u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `name()` and selector `0x06fdde03`. + ```solidity + function name() external view returns (string memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct nameCall {} + ///Container type for the return parameters of the [`name()`](nameCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct nameReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: nameCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for nameCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: nameReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for nameReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for nameCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = nameReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "name()"; + const SELECTOR: [u8; 4] = [6u8, 253u8, 222u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `symbol()` and selector `0x95d89b41`. + ```solidity + function symbol() external view returns (string memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct symbolCall {} + ///Container type for the return parameters of the [`symbol()`](symbolCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct symbolReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: symbolCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for symbolCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: symbolReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for symbolReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for symbolCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = symbolReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "symbol()"; + const SELECTOR: [u8; 4] = [149u8, 216u8, 155u8, 65u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `totalSupply()` and selector `0x18160ddd`. + ```solidity + function totalSupply() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalSupplyCall {} + ///Container type for the return parameters of the [`totalSupply()`](totalSupplyCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalSupplyReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalSupplyCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalSupplyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalSupplyReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalSupplyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for totalSupplyCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = totalSupplyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "totalSupply()"; + const SELECTOR: [u8; 4] = [24u8, 22u8, 13u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `transfer(address,uint256)` and selector `0xa9059cbb`. + ```solidity + function transfer(address to, uint256 amount) external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferCall { + pub to: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`transfer(address,uint256)`](transferCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferCall) -> Self { + (value.to, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + to: tuple.0, + amount: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transfer(address,uint256)"; + const SELECTOR: [u8; 4] = [169u8, 5u8, 156u8, 187u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.to, + ), + as alloy_sol_types::SolType>::tokenize( + &self.amount, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd`. + ```solidity + function transferFrom(address from, address to, uint256 amount) external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromCall { + pub from: alloy::sol_types::private::Address, + pub to: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`transferFrom(address,address,uint256)`](transferFromCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromCall) -> Self { + (value.from, value.to, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + from: tuple.0, + to: tuple.1, + amount: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferFromCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferFromReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferFrom(address,address,uint256)"; + const SELECTOR: [u8; 4] = [35u8, 184u8, 114u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.from, + ), + ::tokenize( + &self.to, + ), + as alloy_sol_types::SolType>::tokenize( + &self.amount, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IERC20Metadata`](self) function calls. + pub enum IERC20MetadataCalls { + allowance(allowanceCall), + approve(approveCall), + balanceOf(balanceOfCall), + decimals(decimalsCall), + name(nameCall), + symbol(symbolCall), + totalSupply(totalSupplyCall), + transfer(transferCall), + transferFrom(transferFromCall), + } + #[automatically_derived] + impl IERC20MetadataCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [6u8, 253u8, 222u8, 3u8], + [9u8, 94u8, 167u8, 179u8], + [24u8, 22u8, 13u8, 221u8], + [35u8, 184u8, 114u8, 221u8], + [49u8, 60u8, 229u8, 103u8], + [112u8, 160u8, 130u8, 49u8], + [149u8, 216u8, 155u8, 65u8], + [169u8, 5u8, 156u8, 187u8], + [221u8, 98u8, 237u8, 62u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IERC20MetadataCalls { + const NAME: &'static str = "IERC20MetadataCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 9usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::allowance(_) => ::SELECTOR, + Self::approve(_) => ::SELECTOR, + Self::balanceOf(_) => ::SELECTOR, + Self::decimals(_) => ::SELECTOR, + Self::name(_) => ::SELECTOR, + Self::symbol(_) => ::SELECTOR, + Self::totalSupply(_) => ::SELECTOR, + Self::transfer(_) => ::SELECTOR, + Self::transferFrom(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn name( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IERC20MetadataCalls::name) + } + name + }, + { + fn approve( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IERC20MetadataCalls::approve) + } + approve + }, + { + fn totalSupply( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC20MetadataCalls::totalSupply) + } + totalSupply + }, + { + fn transferFrom( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC20MetadataCalls::transferFrom) + } + transferFrom + }, + { + fn decimals( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IERC20MetadataCalls::decimals) + } + decimals + }, + { + fn balanceOf( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IERC20MetadataCalls::balanceOf) + } + balanceOf + }, + { + fn symbol( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IERC20MetadataCalls::symbol) + } + symbol + }, + { + fn transfer( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IERC20MetadataCalls::transfer) + } + transfer + }, + { + fn allowance( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IERC20MetadataCalls::allowance) + } + allowance + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::allowance(inner) => { + ::abi_encoded_size(inner) + } + Self::approve(inner) => { + ::abi_encoded_size(inner) + } + Self::balanceOf(inner) => { + ::abi_encoded_size(inner) + } + Self::decimals(inner) => { + ::abi_encoded_size(inner) + } + Self::name(inner) => { + ::abi_encoded_size(inner) + } + Self::symbol(inner) => { + ::abi_encoded_size(inner) + } + Self::totalSupply(inner) => { + ::abi_encoded_size(inner) + } + Self::transfer(inner) => { + ::abi_encoded_size(inner) + } + Self::transferFrom(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::allowance(inner) => { + ::abi_encode_raw(inner, out) + } + Self::approve(inner) => { + ::abi_encode_raw(inner, out) + } + Self::balanceOf(inner) => { + ::abi_encode_raw(inner, out) + } + Self::decimals(inner) => { + ::abi_encode_raw(inner, out) + } + Self::name(inner) => { + ::abi_encode_raw(inner, out) + } + Self::symbol(inner) => { + ::abi_encode_raw(inner, out) + } + Self::totalSupply(inner) => { + ::abi_encode_raw(inner, out) + } + Self::transfer(inner) => { + ::abi_encode_raw(inner, out) + } + Self::transferFrom(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`IERC20Metadata`](self) events. + pub enum IERC20MetadataEvents { + Approval(Approval), + Transfer(Transfer), + } + #[automatically_derived] + impl IERC20MetadataEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 140u8, 91u8, 225u8, 229u8, 235u8, 236u8, 125u8, 91u8, 209u8, 79u8, 113u8, 66u8, + 125u8, 30u8, 132u8, 243u8, 221u8, 3u8, 20u8, 192u8, 247u8, 178u8, 41u8, 30u8, 91u8, + 32u8, 10u8, 200u8, 199u8, 195u8, 185u8, 37u8, + ], + [ + 221u8, 242u8, 82u8, 173u8, 27u8, 226u8, 200u8, 155u8, 105u8, 194u8, 176u8, 104u8, + 252u8, 55u8, 141u8, 170u8, 149u8, 43u8, 167u8, 241u8, 99u8, 196u8, 161u8, 22u8, + 40u8, 245u8, 90u8, 77u8, 245u8, 35u8, 179u8, 239u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IERC20MetadataEvents { + const NAME: &'static str = "IERC20MetadataEvents"; + const COUNT: usize = 2usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::Approval) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::Transfer) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for IERC20MetadataEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::Transfer(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Transfer(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IERC20Metadata`](self) contract instance. + + See the [wrapper's documentation](`IERC20MetadataInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IERC20MetadataInstance { + IERC20MetadataInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + IERC20MetadataInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IERC20MetadataInstance::::deploy_builder(provider) + } + /**A [`IERC20Metadata`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IERC20Metadata`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IERC20MetadataInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IERC20MetadataInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IERC20MetadataInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC20MetadataInstance + { + /**Creates a new wrapper around an on-chain [`IERC20Metadata`](self) contract instance. + + See the [wrapper's documentation](`IERC20MetadataInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IERC20MetadataInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IERC20MetadataInstance { + IERC20MetadataInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC20MetadataInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`allowance`] function. + pub fn allowance( + &self, + owner: alloy::sol_types::private::Address, + spender: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&allowanceCall { owner, spender }) + } + ///Creates a new call builder for the [`approve`] function. + pub fn approve( + &self, + spender: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&approveCall { spender, amount }) + } + ///Creates a new call builder for the [`balanceOf`] function. + pub fn balanceOf( + &self, + account: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&balanceOfCall { account }) + } + ///Creates a new call builder for the [`decimals`] function. + pub fn decimals(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&decimalsCall {}) + } + ///Creates a new call builder for the [`name`] function. + pub fn name(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&nameCall {}) + } + ///Creates a new call builder for the [`symbol`] function. + pub fn symbol(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&symbolCall {}) + } + ///Creates a new call builder for the [`totalSupply`] function. + pub fn totalSupply(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&totalSupplyCall {}) + } + ///Creates a new call builder for the [`transfer`] function. + pub fn transfer( + &self, + to: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferCall { to, amount }) + } + ///Creates a new call builder for the [`transferFrom`] function. + pub fn transferFrom( + &self, + from: alloy::sol_types::private::Address, + to: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferFromCall { from, to, amount }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC20MetadataInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Approval`] event. + pub fn Approval_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Transfer`] event. + pub fn Transfer_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/ierc20permit.rs b/crates/utils/src/ierc20permit.rs new file mode 100644 index 00000000..ffbd16ce --- /dev/null +++ b/crates/utils/src/ierc20permit.rs @@ -0,0 +1,848 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IERC20Permit { + function DOMAIN_SEPARATOR() external view returns (bytes32); + function nonces(address owner) external view returns (uint256); + function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "DOMAIN_SEPARATOR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "nonces", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "permit", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "v", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "r", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "s", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IERC20Permit { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515`. + ```solidity + function DOMAIN_SEPARATOR() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DOMAIN_SEPARATORCall {} + ///Container type for the return parameters of the [`DOMAIN_SEPARATOR()`](DOMAIN_SEPARATORCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DOMAIN_SEPARATORReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DOMAIN_SEPARATORCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DOMAIN_SEPARATORCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DOMAIN_SEPARATORReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DOMAIN_SEPARATORReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for DOMAIN_SEPARATORCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = DOMAIN_SEPARATORReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "DOMAIN_SEPARATOR()"; + const SELECTOR: [u8; 4] = [54u8, 68u8, 229u8, 21u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `nonces(address)` and selector `0x7ecebe00`. + ```solidity + function nonces(address owner) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct noncesCall { + pub owner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`nonces(address)`](noncesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct noncesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: noncesCall) -> Self { + (value.owner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for noncesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { owner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: noncesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for noncesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for noncesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = noncesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "nonces(address)"; + const SELECTOR: [u8; 4] = [126u8, 206u8, 190u8, 0u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.owner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `permit(address,address,uint256,uint256,uint8,bytes32,bytes32)` and selector `0xd505accf`. + ```solidity + function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permitCall { + pub owner: alloy::sol_types::private::Address, + pub spender: alloy::sol_types::private::Address, + pub value: alloy::sol_types::private::primitives::aliases::U256, + pub deadline: alloy::sol_types::private::primitives::aliases::U256, + pub v: u8, + pub r: alloy::sol_types::private::FixedBytes<32>, + pub s: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`permit(address,address,uint256,uint256,uint8,bytes32,bytes32)`](permitCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permitReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + u8, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permitCall) -> Self { + ( + value.owner, + value.spender, + value.value, + value.deadline, + value.v, + value.r, + value.s, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permitCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + owner: tuple.0, + spender: tuple.1, + value: tuple.2, + deadline: tuple.3, + v: tuple.4, + r: tuple.5, + s: tuple.6, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permitReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permitReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for permitCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = permitReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [213u8, 5u8, 172u8, 207u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.owner, + ), + ::tokenize( + &self.spender, + ), + as alloy_sol_types::SolType>::tokenize(&self.value), + as alloy_sol_types::SolType>::tokenize(&self.deadline), + as alloy_sol_types::SolType>::tokenize(&self.v), + as alloy_sol_types::SolType>::tokenize(&self.r), + as alloy_sol_types::SolType>::tokenize(&self.s), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IERC20Permit`](self) function calls. + pub enum IERC20PermitCalls { + DOMAIN_SEPARATOR(DOMAIN_SEPARATORCall), + nonces(noncesCall), + permit(permitCall), + } + #[automatically_derived] + impl IERC20PermitCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [54u8, 68u8, 229u8, 21u8], + [126u8, 206u8, 190u8, 0u8], + [213u8, 5u8, 172u8, 207u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IERC20PermitCalls { + const NAME: &'static str = "IERC20PermitCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 3usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::DOMAIN_SEPARATOR(_) => { + ::SELECTOR + } + Self::nonces(_) => ::SELECTOR, + Self::permit(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn DOMAIN_SEPARATOR( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC20PermitCalls::DOMAIN_SEPARATOR) + } + DOMAIN_SEPARATOR + }, + { + fn nonces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IERC20PermitCalls::nonces) + } + nonces + }, + { + fn permit( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IERC20PermitCalls::permit) + } + permit + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::DOMAIN_SEPARATOR(inner) => { + ::abi_encoded_size(inner) + } + Self::nonces(inner) => { + ::abi_encoded_size(inner) + } + Self::permit(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::DOMAIN_SEPARATOR(inner) => { + ::abi_encode_raw(inner, out) + } + Self::nonces(inner) => { + ::abi_encode_raw(inner, out) + } + Self::permit(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IERC20Permit`](self) contract instance. + + See the [wrapper's documentation](`IERC20PermitInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IERC20PermitInstance { + IERC20PermitInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + IERC20PermitInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IERC20PermitInstance::::deploy_builder(provider) + } + /**A [`IERC20Permit`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IERC20Permit`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IERC20PermitInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IERC20PermitInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IERC20PermitInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC20PermitInstance + { + /**Creates a new wrapper around an on-chain [`IERC20Permit`](self) contract instance. + + See the [wrapper's documentation](`IERC20PermitInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IERC20PermitInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IERC20PermitInstance { + IERC20PermitInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC20PermitInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`DOMAIN_SEPARATOR`] function. + pub fn DOMAIN_SEPARATOR( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&DOMAIN_SEPARATORCall {}) + } + ///Creates a new call builder for the [`nonces`] function. + pub fn nonces( + &self, + owner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&noncesCall { owner }) + } + ///Creates a new call builder for the [`permit`] function. + pub fn permit( + &self, + owner: alloy::sol_types::private::Address, + spender: alloy::sol_types::private::Address, + value: alloy::sol_types::private::primitives::aliases::U256, + deadline: alloy::sol_types::private::primitives::aliases::U256, + v: u8, + r: alloy::sol_types::private::FixedBytes<32>, + s: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&permitCall { + owner, + spender, + value, + deadline, + v, + r, + s, + }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC20PermitInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/ierc721.rs b/crates/utils/src/ierc721.rs new file mode 100644 index 00000000..72bf6510 --- /dev/null +++ b/crates/utils/src/ierc721.rs @@ -0,0 +1,2557 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IERC721 { + event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); + event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); + event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); + + function approve(address _approved, uint256 _tokenId) external payable; + function balanceOf(address _owner) external view returns (uint256); + function getApproved(uint256 _tokenId) external view returns (address); + function isApprovedForAll(address _owner, address _operator) external view returns (bool); + function ownerOf(uint256 _tokenId) external view returns (address); + function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; + function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory data) external payable; + function setApprovalForAll(address _operator, bool _approved) external; + function supportsInterface(bytes4 interfaceID) external view returns (bool); + function transferFrom(address _from, address _to, uint256 _tokenId) external payable; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "approve", + "inputs": [ + { + "name": "_approved", + "type": "address", + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "balanceOf", + "inputs": [ + { + "name": "_owner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getApproved", + "inputs": [ + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isApprovedForAll", + "inputs": [ + { + "name": "_owner", + "type": "address", + "internalType": "address" + }, + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "ownerOf", + "inputs": [ + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "safeTransferFrom", + "inputs": [ + { + "name": "_from", + "type": "address", + "internalType": "address" + }, + { + "name": "_to", + "type": "address", + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "safeTransferFrom", + "inputs": [ + { + "name": "_from", + "type": "address", + "internalType": "address" + }, + { + "name": "_to", + "type": "address", + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "setApprovalForAll", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + }, + { + "name": "_approved", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "supportsInterface", + "inputs": [ + { + "name": "interfaceID", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "name": "_from", + "type": "address", + "internalType": "address" + }, + { + "name": "_to", + "type": "address", + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "event", + "name": "Approval", + "inputs": [ + { + "name": "_owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_approved", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ApprovalForAll", + "inputs": [ + { + "name": "_owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_approved", + "type": "bool", + "indexed": false, + "internalType": "bool" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Transfer", + "inputs": [ + { + "name": "_from", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_to", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IERC721 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Event with signature `Approval(address,address,uint256)` and selector `0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925`. + ```solidity + event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Approval { + #[allow(missing_docs)] + pub _owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _approved: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Approval { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + const SIGNATURE: &'static str = "Approval(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 140u8, 91u8, 225u8, 229u8, 235u8, 236u8, 125u8, 91u8, 209u8, 79u8, 113u8, 66u8, + 125u8, 30u8, 132u8, 243u8, 221u8, 3u8, 20u8, 192u8, 247u8, 178u8, 41u8, 30u8, + 91u8, 32u8, 10u8, 200u8, 199u8, 195u8, 185u8, 37u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _owner: topics.1, + _approved: topics.2, + _tokenId: topics.3, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._owner.clone(), + self._approved.clone(), + self._tokenId.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self._owner, + ); + out[2usize] = ::encode_topic( + &self._approved, + ); + out[3usize] = as alloy_sol_types::EventTopic>::encode_topic(&self._tokenId); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Approval { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Approval> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Approval) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `ApprovalForAll(address,address,bool)` and selector `0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31`. + ```solidity + event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct ApprovalForAll { + #[allow(missing_docs)] + pub _owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _approved: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ApprovalForAll { + type DataTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "ApprovalForAll(address,address,bool)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 23u8, 48u8, 126u8, 171u8, 57u8, 171u8, 97u8, 7u8, 232u8, 137u8, 152u8, 69u8, + 173u8, 61u8, 89u8, 189u8, 150u8, 83u8, 242u8, 0u8, 242u8, 32u8, 146u8, 4u8, + 137u8, 202u8, 43u8, 89u8, 55u8, 105u8, 108u8, 49u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _owner: topics.1, + _operator: topics.2, + _approved: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self._approved, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._owner.clone(), + self._operator.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self._owner, + ); + out[2usize] = ::encode_topic( + &self._operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ApprovalForAll { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ApprovalForAll> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ApprovalForAll) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Transfer(address,address,uint256)` and selector `0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef`. + ```solidity + event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Transfer { + #[allow(missing_docs)] + pub _from: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _to: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Transfer { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + const SIGNATURE: &'static str = "Transfer(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 221u8, 242u8, 82u8, 173u8, 27u8, 226u8, 200u8, 155u8, 105u8, 194u8, 176u8, + 104u8, 252u8, 55u8, 141u8, 170u8, 149u8, 43u8, 167u8, 241u8, 99u8, 196u8, + 161u8, 22u8, 40u8, 245u8, 90u8, 77u8, 245u8, 35u8, 179u8, 239u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _from: topics.1, + _to: topics.2, + _tokenId: topics.3, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._from.clone(), + self._to.clone(), + self._tokenId.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self._from, + ); + out[2usize] = ::encode_topic( + &self._to, + ); + out[3usize] = as alloy_sol_types::EventTopic>::encode_topic(&self._tokenId); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Transfer { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Transfer> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Transfer) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `approve(address,uint256)` and selector `0x095ea7b3`. + ```solidity + function approve(address _approved, uint256 _tokenId) external payable; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveCall { + pub _approved: alloy::sol_types::private::Address, + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`approve(address,uint256)`](approveCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveCall) -> Self { + (value._approved, value._tokenId) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _approved: tuple.0, + _tokenId: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for approveCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = approveReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "approve(address,uint256)"; + const SELECTOR: [u8; 4] = [9u8, 94u8, 167u8, 179u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._approved, + ), + as alloy_sol_types::SolType>::tokenize( + &self._tokenId, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `balanceOf(address)` and selector `0x70a08231`. + ```solidity + function balanceOf(address _owner) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfCall { + pub _owner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`balanceOf(address)`](balanceOfCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfCall) -> Self { + (value._owner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _owner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for balanceOfCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = balanceOfReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "balanceOf(address)"; + const SELECTOR: [u8; 4] = [112u8, 160u8, 130u8, 49u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._owner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getApproved(uint256)` and selector `0x081812fc`. + ```solidity + function getApproved(uint256 _tokenId) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApprovedCall { + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getApproved(uint256)`](getApprovedCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApprovedReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApprovedCall) -> Self { + (value._tokenId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApprovedCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _tokenId: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApprovedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApprovedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getApprovedCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getApprovedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getApproved(uint256)"; + const SELECTOR: [u8; 4] = [8u8, 24u8, 18u8, 252u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._tokenId, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `isApprovedForAll(address,address)` and selector `0xe985e9c5`. + ```solidity + function isApprovedForAll(address _owner, address _operator) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isApprovedForAllCall { + pub _owner: alloy::sol_types::private::Address, + pub _operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`isApprovedForAll(address,address)`](isApprovedForAllCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isApprovedForAllReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isApprovedForAllCall) -> Self { + (value._owner, value._operator) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isApprovedForAllCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _owner: tuple.0, + _operator: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isApprovedForAllReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isApprovedForAllReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for isApprovedForAllCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = isApprovedForAllReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "isApprovedForAll(address,address)"; + const SELECTOR: [u8; 4] = [233u8, 133u8, 233u8, 197u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._owner, + ), + ::tokenize( + &self._operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `ownerOf(uint256)` and selector `0x6352211e`. + ```solidity + function ownerOf(uint256 _tokenId) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerOfCall { + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`ownerOf(uint256)`](ownerOfCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerOfReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerOfCall) -> Self { + (value._tokenId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerOfCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _tokenId: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerOfReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerOfReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerOfCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerOfReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ownerOf(uint256)"; + const SELECTOR: [u8; 4] = [99u8, 82u8, 33u8, 30u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._tokenId, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `safeTransferFrom(address,address,uint256)` and selector `0x42842e0e`. + ```solidity + function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_0Call { + pub _from: alloy::sol_types::private::Address, + pub _to: alloy::sol_types::private::Address, + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`safeTransferFrom(address,address,uint256)`](safeTransferFrom_0Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_0Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_0Call) -> Self { + (value._from, value._to, value._tokenId) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for safeTransferFrom_0Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _from: tuple.0, + _to: tuple.1, + _tokenId: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_0Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for safeTransferFrom_0Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for safeTransferFrom_0Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = safeTransferFrom_0Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "safeTransferFrom(address,address,uint256)"; + const SELECTOR: [u8; 4] = [66u8, 132u8, 46u8, 14u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._from, + ), + ::tokenize( + &self._to, + ), + as alloy_sol_types::SolType>::tokenize( + &self._tokenId, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `safeTransferFrom(address,address,uint256,bytes)` and selector `0xb88d4fde`. + ```solidity + function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory data) external payable; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_1Call { + pub _from: alloy::sol_types::private::Address, + pub _to: alloy::sol_types::private::Address, + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + pub data: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`safeTransferFrom(address,address,uint256,bytes)`](safeTransferFrom_1Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_1Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_1Call) -> Self { + (value._from, value._to, value._tokenId, value.data) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for safeTransferFrom_1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _from: tuple.0, + _to: tuple.1, + _tokenId: tuple.2, + data: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_1Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for safeTransferFrom_1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for safeTransferFrom_1Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = safeTransferFrom_1Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "safeTransferFrom(address,address,uint256,bytes)"; + const SELECTOR: [u8; 4] = [184u8, 141u8, 79u8, 222u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._from, + ), + ::tokenize( + &self._to, + ), + as alloy_sol_types::SolType>::tokenize( + &self._tokenId, + ), + ::tokenize( + &self.data, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setApprovalForAll(address,bool)` and selector `0xa22cb465`. + ```solidity + function setApprovalForAll(address _operator, bool _approved) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setApprovalForAllCall { + pub _operator: alloy::sol_types::private::Address, + pub _approved: bool, + } + ///Container type for the return parameters of the [`setApprovalForAll(address,bool)`](setApprovalForAllCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setApprovalForAllReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address, bool); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setApprovalForAllCall) -> Self { + (value._operator, value._approved) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setApprovalForAllCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _operator: tuple.0, + _approved: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setApprovalForAllReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setApprovalForAllReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setApprovalForAllCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setApprovalForAllReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setApprovalForAll(address,bool)"; + const SELECTOR: [u8; 4] = [162u8, 44u8, 180u8, 101u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + ::tokenize( + &self._approved, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7`. + ```solidity + function supportsInterface(bytes4 interfaceID) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct supportsInterfaceCall { + pub interfaceID: alloy::sol_types::private::FixedBytes<4>, + } + ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct supportsInterfaceReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: supportsInterfaceCall) -> Self { + (value.interfaceID,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for supportsInterfaceCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + interfaceID: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: supportsInterfaceReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for supportsInterfaceReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for supportsInterfaceCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = supportsInterfaceReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "supportsInterface(bytes4)"; + const SELECTOR: [u8; 4] = [1u8, 255u8, 201u8, 167u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.interfaceID), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd`. + ```solidity + function transferFrom(address _from, address _to, uint256 _tokenId) external payable; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromCall { + pub _from: alloy::sol_types::private::Address, + pub _to: alloy::sol_types::private::Address, + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`transferFrom(address,address,uint256)`](transferFromCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromCall) -> Self { + (value._from, value._to, value._tokenId) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _from: tuple.0, + _to: tuple.1, + _tokenId: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferFromCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferFromReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferFrom(address,address,uint256)"; + const SELECTOR: [u8; 4] = [35u8, 184u8, 114u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._from, + ), + ::tokenize( + &self._to, + ), + as alloy_sol_types::SolType>::tokenize( + &self._tokenId, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IERC721`](self) function calls. + pub enum IERC721Calls { + approve(approveCall), + balanceOf(balanceOfCall), + getApproved(getApprovedCall), + isApprovedForAll(isApprovedForAllCall), + ownerOf(ownerOfCall), + safeTransferFrom_0(safeTransferFrom_0Call), + safeTransferFrom_1(safeTransferFrom_1Call), + setApprovalForAll(setApprovalForAllCall), + supportsInterface(supportsInterfaceCall), + transferFrom(transferFromCall), + } + #[automatically_derived] + impl IERC721Calls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [1u8, 255u8, 201u8, 167u8], + [8u8, 24u8, 18u8, 252u8], + [9u8, 94u8, 167u8, 179u8], + [35u8, 184u8, 114u8, 221u8], + [66u8, 132u8, 46u8, 14u8], + [99u8, 82u8, 33u8, 30u8], + [112u8, 160u8, 130u8, 49u8], + [162u8, 44u8, 180u8, 101u8], + [184u8, 141u8, 79u8, 222u8], + [233u8, 133u8, 233u8, 197u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IERC721Calls { + const NAME: &'static str = "IERC721Calls"; + const MIN_DATA_LENGTH: usize = 32usize; + const COUNT: usize = 10usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::approve(_) => ::SELECTOR, + Self::balanceOf(_) => ::SELECTOR, + Self::getApproved(_) => ::SELECTOR, + Self::isApprovedForAll(_) => { + ::SELECTOR + } + Self::ownerOf(_) => ::SELECTOR, + Self::safeTransferFrom_0(_) => { + ::SELECTOR + } + Self::safeTransferFrom_1(_) => { + ::SELECTOR + } + Self::setApprovalForAll(_) => { + ::SELECTOR + } + Self::supportsInterface(_) => { + ::SELECTOR + } + Self::transferFrom(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn(&[u8], bool) -> alloy_sol_types::Result] = &[ + { + fn supportsInterface( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC721Calls::supportsInterface) + } + supportsInterface + }, + { + fn getApproved( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC721Calls::getApproved) + } + getApproved + }, + { + fn approve( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IERC721Calls::approve) + } + approve + }, + { + fn transferFrom( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC721Calls::transferFrom) + } + transferFrom + }, + { + fn safeTransferFrom_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC721Calls::safeTransferFrom_0) + } + safeTransferFrom_0 + }, + { + fn ownerOf( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IERC721Calls::ownerOf) + } + ownerOf + }, + { + fn balanceOf( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IERC721Calls::balanceOf) + } + balanceOf + }, + { + fn setApprovalForAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC721Calls::setApprovalForAll) + } + setApprovalForAll + }, + { + fn safeTransferFrom_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC721Calls::safeTransferFrom_1) + } + safeTransferFrom_1 + }, + { + fn isApprovedForAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC721Calls::isApprovedForAll) + } + isApprovedForAll + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::approve(inner) => { + ::abi_encoded_size(inner) + } + Self::balanceOf(inner) => { + ::abi_encoded_size(inner) + } + Self::getApproved(inner) => { + ::abi_encoded_size(inner) + } + Self::isApprovedForAll(inner) => { + ::abi_encoded_size(inner) + } + Self::ownerOf(inner) => { + ::abi_encoded_size(inner) + } + Self::safeTransferFrom_0(inner) => { + ::abi_encoded_size(inner) + } + Self::safeTransferFrom_1(inner) => { + ::abi_encoded_size(inner) + } + Self::setApprovalForAll(inner) => { + ::abi_encoded_size(inner) + } + Self::supportsInterface(inner) => { + ::abi_encoded_size(inner) + } + Self::transferFrom(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::approve(inner) => { + ::abi_encode_raw(inner, out) + } + Self::balanceOf(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getApproved(inner) => { + ::abi_encode_raw(inner, out) + } + Self::isApprovedForAll(inner) => { + ::abi_encode_raw(inner, out) + } + Self::ownerOf(inner) => { + ::abi_encode_raw(inner, out) + } + Self::safeTransferFrom_0(inner) => { + ::abi_encode_raw(inner, out) + } + Self::safeTransferFrom_1(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setApprovalForAll(inner) => { + ::abi_encode_raw(inner, out) + } + Self::supportsInterface(inner) => { + ::abi_encode_raw(inner, out) + } + Self::transferFrom(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`IERC721`](self) events. + pub enum IERC721Events { + Approval(Approval), + ApprovalForAll(ApprovalForAll), + Transfer(Transfer), + } + #[automatically_derived] + impl IERC721Events { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 23u8, 48u8, 126u8, 171u8, 57u8, 171u8, 97u8, 7u8, 232u8, 137u8, 152u8, 69u8, 173u8, + 61u8, 89u8, 189u8, 150u8, 83u8, 242u8, 0u8, 242u8, 32u8, 146u8, 4u8, 137u8, 202u8, + 43u8, 89u8, 55u8, 105u8, 108u8, 49u8, + ], + [ + 140u8, 91u8, 225u8, 229u8, 235u8, 236u8, 125u8, 91u8, 209u8, 79u8, 113u8, 66u8, + 125u8, 30u8, 132u8, 243u8, 221u8, 3u8, 20u8, 192u8, 247u8, 178u8, 41u8, 30u8, 91u8, + 32u8, 10u8, 200u8, 199u8, 195u8, 185u8, 37u8, + ], + [ + 221u8, 242u8, 82u8, 173u8, 27u8, 226u8, 200u8, 155u8, 105u8, 194u8, 176u8, 104u8, + 252u8, 55u8, 141u8, 170u8, 149u8, 43u8, 167u8, 241u8, 99u8, 196u8, 161u8, 22u8, + 40u8, 245u8, 90u8, 77u8, 245u8, 35u8, 179u8, 239u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IERC721Events { + const NAME: &'static str = "IERC721Events"; + const COUNT: usize = 3usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::Approval) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ApprovalForAll) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::Transfer) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for IERC721Events { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::ApprovalForAll(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Transfer(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ApprovalForAll(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Transfer(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IERC721`](self) contract instance. + + See the [wrapper's documentation](`IERC721Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IERC721Instance { + IERC721Instance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + IERC721Instance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IERC721Instance::::deploy_builder(provider) + } + /**A [`IERC721`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IERC721`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IERC721Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IERC721Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IERC721Instance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC721Instance + { + /**Creates a new wrapper around an on-chain [`IERC721`](self) contract instance. + + See the [wrapper's documentation](`IERC721Instance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IERC721Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IERC721Instance { + IERC721Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC721Instance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`approve`] function. + pub fn approve( + &self, + _approved: alloy::sol_types::private::Address, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&approveCall { + _approved, + _tokenId, + }) + } + ///Creates a new call builder for the [`balanceOf`] function. + pub fn balanceOf( + &self, + _owner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&balanceOfCall { _owner }) + } + ///Creates a new call builder for the [`getApproved`] function. + pub fn getApproved( + &self, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getApprovedCall { _tokenId }) + } + ///Creates a new call builder for the [`isApprovedForAll`] function. + pub fn isApprovedForAll( + &self, + _owner: alloy::sol_types::private::Address, + _operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&isApprovedForAllCall { _owner, _operator }) + } + ///Creates a new call builder for the [`ownerOf`] function. + pub fn ownerOf( + &self, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerOfCall { _tokenId }) + } + ///Creates a new call builder for the [`safeTransferFrom_0`] function. + pub fn safeTransferFrom_0( + &self, + _from: alloy::sol_types::private::Address, + _to: alloy::sol_types::private::Address, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&safeTransferFrom_0Call { + _from, + _to, + _tokenId, + }) + } + ///Creates a new call builder for the [`safeTransferFrom_1`] function. + pub fn safeTransferFrom_1( + &self, + _from: alloy::sol_types::private::Address, + _to: alloy::sol_types::private::Address, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, + data: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&safeTransferFrom_1Call { + _from, + _to, + _tokenId, + data, + }) + } + ///Creates a new call builder for the [`setApprovalForAll`] function. + pub fn setApprovalForAll( + &self, + _operator: alloy::sol_types::private::Address, + _approved: bool, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setApprovalForAllCall { + _operator, + _approved, + }) + } + ///Creates a new call builder for the [`supportsInterface`] function. + pub fn supportsInterface( + &self, + interfaceID: alloy::sol_types::private::FixedBytes<4>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&supportsInterfaceCall { interfaceID }) + } + ///Creates a new call builder for the [`transferFrom`] function. + pub fn transferFrom( + &self, + _from: alloy::sol_types::private::Address, + _to: alloy::sol_types::private::Address, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferFromCall { + _from, + _to, + _tokenId, + }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC721Instance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Approval`] event. + pub fn Approval_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ApprovalForAll`] event. + pub fn ApprovalForAll_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Transfer`] event. + pub fn Transfer_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/ierc721enumerable.rs b/crates/utils/src/ierc721enumerable.rs new file mode 100644 index 00000000..b7d6838e --- /dev/null +++ b/crates/utils/src/ierc721enumerable.rs @@ -0,0 +1,3051 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IERC721Enumerable { + event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); + event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); + event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); + + function approve(address _approved, uint256 _tokenId) external payable; + function balanceOf(address _owner) external view returns (uint256); + function getApproved(uint256 _tokenId) external view returns (address); + function isApprovedForAll(address _owner, address _operator) external view returns (bool); + function ownerOf(uint256 _tokenId) external view returns (address); + function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; + function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory data) external payable; + function setApprovalForAll(address _operator, bool _approved) external; + function supportsInterface(bytes4 interfaceID) external view returns (bool); + function tokenByIndex(uint256 _index) external view returns (uint256); + function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256); + function totalSupply() external view returns (uint256); + function transferFrom(address _from, address _to, uint256 _tokenId) external payable; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "approve", + "inputs": [ + { + "name": "_approved", + "type": "address", + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "balanceOf", + "inputs": [ + { + "name": "_owner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getApproved", + "inputs": [ + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isApprovedForAll", + "inputs": [ + { + "name": "_owner", + "type": "address", + "internalType": "address" + }, + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "ownerOf", + "inputs": [ + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "safeTransferFrom", + "inputs": [ + { + "name": "_from", + "type": "address", + "internalType": "address" + }, + { + "name": "_to", + "type": "address", + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "safeTransferFrom", + "inputs": [ + { + "name": "_from", + "type": "address", + "internalType": "address" + }, + { + "name": "_to", + "type": "address", + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "setApprovalForAll", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + }, + { + "name": "_approved", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "supportsInterface", + "inputs": [ + { + "name": "interfaceID", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "tokenByIndex", + "inputs": [ + { + "name": "_index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "tokenOfOwnerByIndex", + "inputs": [ + { + "name": "_owner", + "type": "address", + "internalType": "address" + }, + { + "name": "_index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "totalSupply", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "name": "_from", + "type": "address", + "internalType": "address" + }, + { + "name": "_to", + "type": "address", + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "event", + "name": "Approval", + "inputs": [ + { + "name": "_owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_approved", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ApprovalForAll", + "inputs": [ + { + "name": "_owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_approved", + "type": "bool", + "indexed": false, + "internalType": "bool" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Transfer", + "inputs": [ + { + "name": "_from", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_to", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IERC721Enumerable { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Event with signature `Approval(address,address,uint256)` and selector `0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925`. + ```solidity + event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Approval { + #[allow(missing_docs)] + pub _owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _approved: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Approval { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + const SIGNATURE: &'static str = "Approval(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 140u8, 91u8, 225u8, 229u8, 235u8, 236u8, 125u8, 91u8, 209u8, 79u8, 113u8, 66u8, + 125u8, 30u8, 132u8, 243u8, 221u8, 3u8, 20u8, 192u8, 247u8, 178u8, 41u8, 30u8, + 91u8, 32u8, 10u8, 200u8, 199u8, 195u8, 185u8, 37u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _owner: topics.1, + _approved: topics.2, + _tokenId: topics.3, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._owner.clone(), + self._approved.clone(), + self._tokenId.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self._owner, + ); + out[2usize] = ::encode_topic( + &self._approved, + ); + out[3usize] = as alloy_sol_types::EventTopic>::encode_topic(&self._tokenId); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Approval { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Approval> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Approval) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `ApprovalForAll(address,address,bool)` and selector `0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31`. + ```solidity + event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct ApprovalForAll { + #[allow(missing_docs)] + pub _owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _approved: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ApprovalForAll { + type DataTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "ApprovalForAll(address,address,bool)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 23u8, 48u8, 126u8, 171u8, 57u8, 171u8, 97u8, 7u8, 232u8, 137u8, 152u8, 69u8, + 173u8, 61u8, 89u8, 189u8, 150u8, 83u8, 242u8, 0u8, 242u8, 32u8, 146u8, 4u8, + 137u8, 202u8, 43u8, 89u8, 55u8, 105u8, 108u8, 49u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _owner: topics.1, + _operator: topics.2, + _approved: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self._approved, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._owner.clone(), + self._operator.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self._owner, + ); + out[2usize] = ::encode_topic( + &self._operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ApprovalForAll { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ApprovalForAll> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ApprovalForAll) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Transfer(address,address,uint256)` and selector `0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef`. + ```solidity + event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Transfer { + #[allow(missing_docs)] + pub _from: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _to: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Transfer { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + const SIGNATURE: &'static str = "Transfer(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 221u8, 242u8, 82u8, 173u8, 27u8, 226u8, 200u8, 155u8, 105u8, 194u8, 176u8, + 104u8, 252u8, 55u8, 141u8, 170u8, 149u8, 43u8, 167u8, 241u8, 99u8, 196u8, + 161u8, 22u8, 40u8, 245u8, 90u8, 77u8, 245u8, 35u8, 179u8, 239u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _from: topics.1, + _to: topics.2, + _tokenId: topics.3, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._from.clone(), + self._to.clone(), + self._tokenId.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self._from, + ); + out[2usize] = ::encode_topic( + &self._to, + ); + out[3usize] = as alloy_sol_types::EventTopic>::encode_topic(&self._tokenId); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Transfer { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Transfer> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Transfer) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `approve(address,uint256)` and selector `0x095ea7b3`. + ```solidity + function approve(address _approved, uint256 _tokenId) external payable; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveCall { + pub _approved: alloy::sol_types::private::Address, + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`approve(address,uint256)`](approveCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveCall) -> Self { + (value._approved, value._tokenId) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _approved: tuple.0, + _tokenId: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for approveCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = approveReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "approve(address,uint256)"; + const SELECTOR: [u8; 4] = [9u8, 94u8, 167u8, 179u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._approved, + ), + as alloy_sol_types::SolType>::tokenize( + &self._tokenId, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `balanceOf(address)` and selector `0x70a08231`. + ```solidity + function balanceOf(address _owner) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfCall { + pub _owner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`balanceOf(address)`](balanceOfCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfCall) -> Self { + (value._owner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _owner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for balanceOfCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = balanceOfReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "balanceOf(address)"; + const SELECTOR: [u8; 4] = [112u8, 160u8, 130u8, 49u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._owner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getApproved(uint256)` and selector `0x081812fc`. + ```solidity + function getApproved(uint256 _tokenId) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApprovedCall { + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getApproved(uint256)`](getApprovedCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApprovedReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApprovedCall) -> Self { + (value._tokenId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApprovedCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _tokenId: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApprovedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApprovedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getApprovedCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getApprovedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getApproved(uint256)"; + const SELECTOR: [u8; 4] = [8u8, 24u8, 18u8, 252u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._tokenId, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `isApprovedForAll(address,address)` and selector `0xe985e9c5`. + ```solidity + function isApprovedForAll(address _owner, address _operator) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isApprovedForAllCall { + pub _owner: alloy::sol_types::private::Address, + pub _operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`isApprovedForAll(address,address)`](isApprovedForAllCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isApprovedForAllReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isApprovedForAllCall) -> Self { + (value._owner, value._operator) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isApprovedForAllCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _owner: tuple.0, + _operator: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isApprovedForAllReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isApprovedForAllReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for isApprovedForAllCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = isApprovedForAllReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "isApprovedForAll(address,address)"; + const SELECTOR: [u8; 4] = [233u8, 133u8, 233u8, 197u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._owner, + ), + ::tokenize( + &self._operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `ownerOf(uint256)` and selector `0x6352211e`. + ```solidity + function ownerOf(uint256 _tokenId) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerOfCall { + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`ownerOf(uint256)`](ownerOfCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerOfReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerOfCall) -> Self { + (value._tokenId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerOfCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _tokenId: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerOfReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerOfReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerOfCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerOfReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ownerOf(uint256)"; + const SELECTOR: [u8; 4] = [99u8, 82u8, 33u8, 30u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._tokenId, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `safeTransferFrom(address,address,uint256)` and selector `0x42842e0e`. + ```solidity + function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_0Call { + pub _from: alloy::sol_types::private::Address, + pub _to: alloy::sol_types::private::Address, + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`safeTransferFrom(address,address,uint256)`](safeTransferFrom_0Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_0Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_0Call) -> Self { + (value._from, value._to, value._tokenId) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for safeTransferFrom_0Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _from: tuple.0, + _to: tuple.1, + _tokenId: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_0Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for safeTransferFrom_0Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for safeTransferFrom_0Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = safeTransferFrom_0Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "safeTransferFrom(address,address,uint256)"; + const SELECTOR: [u8; 4] = [66u8, 132u8, 46u8, 14u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._from, + ), + ::tokenize( + &self._to, + ), + as alloy_sol_types::SolType>::tokenize( + &self._tokenId, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `safeTransferFrom(address,address,uint256,bytes)` and selector `0xb88d4fde`. + ```solidity + function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory data) external payable; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_1Call { + pub _from: alloy::sol_types::private::Address, + pub _to: alloy::sol_types::private::Address, + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + pub data: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`safeTransferFrom(address,address,uint256,bytes)`](safeTransferFrom_1Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_1Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_1Call) -> Self { + (value._from, value._to, value._tokenId, value.data) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for safeTransferFrom_1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _from: tuple.0, + _to: tuple.1, + _tokenId: tuple.2, + data: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_1Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for safeTransferFrom_1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for safeTransferFrom_1Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = safeTransferFrom_1Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "safeTransferFrom(address,address,uint256,bytes)"; + const SELECTOR: [u8; 4] = [184u8, 141u8, 79u8, 222u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._from, + ), + ::tokenize( + &self._to, + ), + as alloy_sol_types::SolType>::tokenize( + &self._tokenId, + ), + ::tokenize( + &self.data, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setApprovalForAll(address,bool)` and selector `0xa22cb465`. + ```solidity + function setApprovalForAll(address _operator, bool _approved) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setApprovalForAllCall { + pub _operator: alloy::sol_types::private::Address, + pub _approved: bool, + } + ///Container type for the return parameters of the [`setApprovalForAll(address,bool)`](setApprovalForAllCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setApprovalForAllReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address, bool); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setApprovalForAllCall) -> Self { + (value._operator, value._approved) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setApprovalForAllCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _operator: tuple.0, + _approved: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setApprovalForAllReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setApprovalForAllReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setApprovalForAllCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setApprovalForAllReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setApprovalForAll(address,bool)"; + const SELECTOR: [u8; 4] = [162u8, 44u8, 180u8, 101u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + ::tokenize( + &self._approved, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7`. + ```solidity + function supportsInterface(bytes4 interfaceID) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct supportsInterfaceCall { + pub interfaceID: alloy::sol_types::private::FixedBytes<4>, + } + ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct supportsInterfaceReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: supportsInterfaceCall) -> Self { + (value.interfaceID,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for supportsInterfaceCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + interfaceID: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: supportsInterfaceReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for supportsInterfaceReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for supportsInterfaceCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = supportsInterfaceReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "supportsInterface(bytes4)"; + const SELECTOR: [u8; 4] = [1u8, 255u8, 201u8, 167u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.interfaceID), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `tokenByIndex(uint256)` and selector `0x4f6ccce7`. + ```solidity + function tokenByIndex(uint256 _index) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct tokenByIndexCall { + pub _index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`tokenByIndex(uint256)`](tokenByIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct tokenByIndexReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: tokenByIndexCall) -> Self { + (value._index,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for tokenByIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _index: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: tokenByIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for tokenByIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for tokenByIndexCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = tokenByIndexReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "tokenByIndex(uint256)"; + const SELECTOR: [u8; 4] = [79u8, 108u8, 204u8, 231u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._index, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `tokenOfOwnerByIndex(address,uint256)` and selector `0x2f745c59`. + ```solidity + function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct tokenOfOwnerByIndexCall { + pub _owner: alloy::sol_types::private::Address, + pub _index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`tokenOfOwnerByIndex(address,uint256)`](tokenOfOwnerByIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct tokenOfOwnerByIndexReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: tokenOfOwnerByIndexCall) -> Self { + (value._owner, value._index) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for tokenOfOwnerByIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _owner: tuple.0, + _index: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: tokenOfOwnerByIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for tokenOfOwnerByIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for tokenOfOwnerByIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = tokenOfOwnerByIndexReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "tokenOfOwnerByIndex(address,uint256)"; + const SELECTOR: [u8; 4] = [47u8, 116u8, 92u8, 89u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._owner, + ), + as alloy_sol_types::SolType>::tokenize( + &self._index, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `totalSupply()` and selector `0x18160ddd`. + ```solidity + function totalSupply() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalSupplyCall {} + ///Container type for the return parameters of the [`totalSupply()`](totalSupplyCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalSupplyReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalSupplyCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalSupplyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalSupplyReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalSupplyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for totalSupplyCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = totalSupplyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "totalSupply()"; + const SELECTOR: [u8; 4] = [24u8, 22u8, 13u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd`. + ```solidity + function transferFrom(address _from, address _to, uint256 _tokenId) external payable; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromCall { + pub _from: alloy::sol_types::private::Address, + pub _to: alloy::sol_types::private::Address, + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`transferFrom(address,address,uint256)`](transferFromCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromCall) -> Self { + (value._from, value._to, value._tokenId) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _from: tuple.0, + _to: tuple.1, + _tokenId: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferFromCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferFromReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferFrom(address,address,uint256)"; + const SELECTOR: [u8; 4] = [35u8, 184u8, 114u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._from, + ), + ::tokenize( + &self._to, + ), + as alloy_sol_types::SolType>::tokenize( + &self._tokenId, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IERC721Enumerable`](self) function calls. + pub enum IERC721EnumerableCalls { + approve(approveCall), + balanceOf(balanceOfCall), + getApproved(getApprovedCall), + isApprovedForAll(isApprovedForAllCall), + ownerOf(ownerOfCall), + safeTransferFrom_0(safeTransferFrom_0Call), + safeTransferFrom_1(safeTransferFrom_1Call), + setApprovalForAll(setApprovalForAllCall), + supportsInterface(supportsInterfaceCall), + tokenByIndex(tokenByIndexCall), + tokenOfOwnerByIndex(tokenOfOwnerByIndexCall), + totalSupply(totalSupplyCall), + transferFrom(transferFromCall), + } + #[automatically_derived] + impl IERC721EnumerableCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [1u8, 255u8, 201u8, 167u8], + [8u8, 24u8, 18u8, 252u8], + [9u8, 94u8, 167u8, 179u8], + [24u8, 22u8, 13u8, 221u8], + [35u8, 184u8, 114u8, 221u8], + [47u8, 116u8, 92u8, 89u8], + [66u8, 132u8, 46u8, 14u8], + [79u8, 108u8, 204u8, 231u8], + [99u8, 82u8, 33u8, 30u8], + [112u8, 160u8, 130u8, 49u8], + [162u8, 44u8, 180u8, 101u8], + [184u8, 141u8, 79u8, 222u8], + [233u8, 133u8, 233u8, 197u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IERC721EnumerableCalls { + const NAME: &'static str = "IERC721EnumerableCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 13usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::approve(_) => ::SELECTOR, + Self::balanceOf(_) => ::SELECTOR, + Self::getApproved(_) => ::SELECTOR, + Self::isApprovedForAll(_) => { + ::SELECTOR + } + Self::ownerOf(_) => ::SELECTOR, + Self::safeTransferFrom_0(_) => { + ::SELECTOR + } + Self::safeTransferFrom_1(_) => { + ::SELECTOR + } + Self::setApprovalForAll(_) => { + ::SELECTOR + } + Self::supportsInterface(_) => { + ::SELECTOR + } + Self::tokenByIndex(_) => ::SELECTOR, + Self::tokenOfOwnerByIndex(_) => { + ::SELECTOR + } + Self::totalSupply(_) => ::SELECTOR, + Self::transferFrom(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn supportsInterface( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC721EnumerableCalls::supportsInterface) + } + supportsInterface + }, + { + fn getApproved( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC721EnumerableCalls::getApproved) + } + getApproved + }, + { + fn approve( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IERC721EnumerableCalls::approve) + } + approve + }, + { + fn totalSupply( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC721EnumerableCalls::totalSupply) + } + totalSupply + }, + { + fn transferFrom( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC721EnumerableCalls::transferFrom) + } + transferFrom + }, + { + fn tokenOfOwnerByIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC721EnumerableCalls::tokenOfOwnerByIndex) + } + tokenOfOwnerByIndex + }, + { + fn safeTransferFrom_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC721EnumerableCalls::safeTransferFrom_0) + } + safeTransferFrom_0 + }, + { + fn tokenByIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC721EnumerableCalls::tokenByIndex) + } + tokenByIndex + }, + { + fn ownerOf( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IERC721EnumerableCalls::ownerOf) + } + ownerOf + }, + { + fn balanceOf( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IERC721EnumerableCalls::balanceOf) + } + balanceOf + }, + { + fn setApprovalForAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC721EnumerableCalls::setApprovalForAll) + } + setApprovalForAll + }, + { + fn safeTransferFrom_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC721EnumerableCalls::safeTransferFrom_1) + } + safeTransferFrom_1 + }, + { + fn isApprovedForAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC721EnumerableCalls::isApprovedForAll) + } + isApprovedForAll + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::approve(inner) => { + ::abi_encoded_size(inner) + } + Self::balanceOf(inner) => { + ::abi_encoded_size(inner) + } + Self::getApproved(inner) => { + ::abi_encoded_size(inner) + } + Self::isApprovedForAll(inner) => { + ::abi_encoded_size(inner) + } + Self::ownerOf(inner) => { + ::abi_encoded_size(inner) + } + Self::safeTransferFrom_0(inner) => { + ::abi_encoded_size(inner) + } + Self::safeTransferFrom_1(inner) => { + ::abi_encoded_size(inner) + } + Self::setApprovalForAll(inner) => { + ::abi_encoded_size(inner) + } + Self::supportsInterface(inner) => { + ::abi_encoded_size(inner) + } + Self::tokenByIndex(inner) => { + ::abi_encoded_size(inner) + } + Self::tokenOfOwnerByIndex(inner) => { + ::abi_encoded_size(inner) + } + Self::totalSupply(inner) => { + ::abi_encoded_size(inner) + } + Self::transferFrom(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::approve(inner) => { + ::abi_encode_raw(inner, out) + } + Self::balanceOf(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getApproved(inner) => { + ::abi_encode_raw(inner, out) + } + Self::isApprovedForAll(inner) => { + ::abi_encode_raw(inner, out) + } + Self::ownerOf(inner) => { + ::abi_encode_raw(inner, out) + } + Self::safeTransferFrom_0(inner) => { + ::abi_encode_raw(inner, out) + } + Self::safeTransferFrom_1(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setApprovalForAll(inner) => { + ::abi_encode_raw(inner, out) + } + Self::supportsInterface(inner) => { + ::abi_encode_raw(inner, out) + } + Self::tokenByIndex(inner) => { + ::abi_encode_raw(inner, out) + } + Self::tokenOfOwnerByIndex(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::totalSupply(inner) => { + ::abi_encode_raw(inner, out) + } + Self::transferFrom(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`IERC721Enumerable`](self) events. + pub enum IERC721EnumerableEvents { + Approval(Approval), + ApprovalForAll(ApprovalForAll), + Transfer(Transfer), + } + #[automatically_derived] + impl IERC721EnumerableEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 23u8, 48u8, 126u8, 171u8, 57u8, 171u8, 97u8, 7u8, 232u8, 137u8, 152u8, 69u8, 173u8, + 61u8, 89u8, 189u8, 150u8, 83u8, 242u8, 0u8, 242u8, 32u8, 146u8, 4u8, 137u8, 202u8, + 43u8, 89u8, 55u8, 105u8, 108u8, 49u8, + ], + [ + 140u8, 91u8, 225u8, 229u8, 235u8, 236u8, 125u8, 91u8, 209u8, 79u8, 113u8, 66u8, + 125u8, 30u8, 132u8, 243u8, 221u8, 3u8, 20u8, 192u8, 247u8, 178u8, 41u8, 30u8, 91u8, + 32u8, 10u8, 200u8, 199u8, 195u8, 185u8, 37u8, + ], + [ + 221u8, 242u8, 82u8, 173u8, 27u8, 226u8, 200u8, 155u8, 105u8, 194u8, 176u8, 104u8, + 252u8, 55u8, 141u8, 170u8, 149u8, 43u8, 167u8, 241u8, 99u8, 196u8, 161u8, 22u8, + 40u8, 245u8, 90u8, 77u8, 245u8, 35u8, 179u8, 239u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IERC721EnumerableEvents { + const NAME: &'static str = "IERC721EnumerableEvents"; + const COUNT: usize = 3usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::Approval) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ApprovalForAll) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::Transfer) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for IERC721EnumerableEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::ApprovalForAll(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Transfer(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ApprovalForAll(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Transfer(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IERC721Enumerable`](self) contract instance. + + See the [wrapper's documentation](`IERC721EnumerableInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IERC721EnumerableInstance { + IERC721EnumerableInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + IERC721EnumerableInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IERC721EnumerableInstance::::deploy_builder(provider) + } + /**A [`IERC721Enumerable`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IERC721Enumerable`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IERC721EnumerableInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IERC721EnumerableInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IERC721EnumerableInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC721EnumerableInstance + { + /**Creates a new wrapper around an on-chain [`IERC721Enumerable`](self) contract instance. + + See the [wrapper's documentation](`IERC721EnumerableInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IERC721EnumerableInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IERC721EnumerableInstance { + IERC721EnumerableInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC721EnumerableInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`approve`] function. + pub fn approve( + &self, + _approved: alloy::sol_types::private::Address, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&approveCall { + _approved, + _tokenId, + }) + } + ///Creates a new call builder for the [`balanceOf`] function. + pub fn balanceOf( + &self, + _owner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&balanceOfCall { _owner }) + } + ///Creates a new call builder for the [`getApproved`] function. + pub fn getApproved( + &self, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getApprovedCall { _tokenId }) + } + ///Creates a new call builder for the [`isApprovedForAll`] function. + pub fn isApprovedForAll( + &self, + _owner: alloy::sol_types::private::Address, + _operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&isApprovedForAllCall { _owner, _operator }) + } + ///Creates a new call builder for the [`ownerOf`] function. + pub fn ownerOf( + &self, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerOfCall { _tokenId }) + } + ///Creates a new call builder for the [`safeTransferFrom_0`] function. + pub fn safeTransferFrom_0( + &self, + _from: alloy::sol_types::private::Address, + _to: alloy::sol_types::private::Address, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&safeTransferFrom_0Call { + _from, + _to, + _tokenId, + }) + } + ///Creates a new call builder for the [`safeTransferFrom_1`] function. + pub fn safeTransferFrom_1( + &self, + _from: alloy::sol_types::private::Address, + _to: alloy::sol_types::private::Address, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, + data: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&safeTransferFrom_1Call { + _from, + _to, + _tokenId, + data, + }) + } + ///Creates a new call builder for the [`setApprovalForAll`] function. + pub fn setApprovalForAll( + &self, + _operator: alloy::sol_types::private::Address, + _approved: bool, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setApprovalForAllCall { + _operator, + _approved, + }) + } + ///Creates a new call builder for the [`supportsInterface`] function. + pub fn supportsInterface( + &self, + interfaceID: alloy::sol_types::private::FixedBytes<4>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&supportsInterfaceCall { interfaceID }) + } + ///Creates a new call builder for the [`tokenByIndex`] function. + pub fn tokenByIndex( + &self, + _index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&tokenByIndexCall { _index }) + } + ///Creates a new call builder for the [`tokenOfOwnerByIndex`] function. + pub fn tokenOfOwnerByIndex( + &self, + _owner: alloy::sol_types::private::Address, + _index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&tokenOfOwnerByIndexCall { _owner, _index }) + } + ///Creates a new call builder for the [`totalSupply`] function. + pub fn totalSupply(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&totalSupplyCall {}) + } + ///Creates a new call builder for the [`transferFrom`] function. + pub fn transferFrom( + &self, + _from: alloy::sol_types::private::Address, + _to: alloy::sol_types::private::Address, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferFromCall { + _from, + _to, + _tokenId, + }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC721EnumerableInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Approval`] event. + pub fn Approval_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ApprovalForAll`] event. + pub fn ApprovalForAll_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Transfer`] event. + pub fn Transfer_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/ierc721metadata.rs b/crates/utils/src/ierc721metadata.rs new file mode 100644 index 00000000..0659dfe8 --- /dev/null +++ b/crates/utils/src/ierc721metadata.rs @@ -0,0 +1,3004 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IERC721Metadata { + event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); + event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); + event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); + + function approve(address _approved, uint256 _tokenId) external payable; + function balanceOf(address _owner) external view returns (uint256); + function getApproved(uint256 _tokenId) external view returns (address); + function isApprovedForAll(address _owner, address _operator) external view returns (bool); + function name() external view returns (string memory _name); + function ownerOf(uint256 _tokenId) external view returns (address); + function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; + function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory data) external payable; + function setApprovalForAll(address _operator, bool _approved) external; + function supportsInterface(bytes4 interfaceID) external view returns (bool); + function symbol() external view returns (string memory _symbol); + function tokenURI(uint256 _tokenId) external view returns (string memory); + function transferFrom(address _from, address _to, uint256 _tokenId) external payable; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "approve", + "inputs": [ + { + "name": "_approved", + "type": "address", + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "balanceOf", + "inputs": [ + { + "name": "_owner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getApproved", + "inputs": [ + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isApprovedForAll", + "inputs": [ + { + "name": "_owner", + "type": "address", + "internalType": "address" + }, + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "name": "_name", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "ownerOf", + "inputs": [ + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "safeTransferFrom", + "inputs": [ + { + "name": "_from", + "type": "address", + "internalType": "address" + }, + { + "name": "_to", + "type": "address", + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "safeTransferFrom", + "inputs": [ + { + "name": "_from", + "type": "address", + "internalType": "address" + }, + { + "name": "_to", + "type": "address", + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "setApprovalForAll", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + }, + { + "name": "_approved", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "supportsInterface", + "inputs": [ + { + "name": "interfaceID", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "symbol", + "inputs": [], + "outputs": [ + { + "name": "_symbol", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "tokenURI", + "inputs": [ + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "name": "_from", + "type": "address", + "internalType": "address" + }, + { + "name": "_to", + "type": "address", + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "event", + "name": "Approval", + "inputs": [ + { + "name": "_owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_approved", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ApprovalForAll", + "inputs": [ + { + "name": "_owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_approved", + "type": "bool", + "indexed": false, + "internalType": "bool" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Transfer", + "inputs": [ + { + "name": "_from", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_to", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IERC721Metadata { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Event with signature `Approval(address,address,uint256)` and selector `0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925`. + ```solidity + event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Approval { + #[allow(missing_docs)] + pub _owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _approved: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Approval { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + const SIGNATURE: &'static str = "Approval(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 140u8, 91u8, 225u8, 229u8, 235u8, 236u8, 125u8, 91u8, 209u8, 79u8, 113u8, 66u8, + 125u8, 30u8, 132u8, 243u8, 221u8, 3u8, 20u8, 192u8, 247u8, 178u8, 41u8, 30u8, + 91u8, 32u8, 10u8, 200u8, 199u8, 195u8, 185u8, 37u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _owner: topics.1, + _approved: topics.2, + _tokenId: topics.3, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._owner.clone(), + self._approved.clone(), + self._tokenId.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self._owner, + ); + out[2usize] = ::encode_topic( + &self._approved, + ); + out[3usize] = as alloy_sol_types::EventTopic>::encode_topic(&self._tokenId); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Approval { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Approval> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Approval) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `ApprovalForAll(address,address,bool)` and selector `0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31`. + ```solidity + event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct ApprovalForAll { + #[allow(missing_docs)] + pub _owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _approved: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ApprovalForAll { + type DataTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "ApprovalForAll(address,address,bool)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 23u8, 48u8, 126u8, 171u8, 57u8, 171u8, 97u8, 7u8, 232u8, 137u8, 152u8, 69u8, + 173u8, 61u8, 89u8, 189u8, 150u8, 83u8, 242u8, 0u8, 242u8, 32u8, 146u8, 4u8, + 137u8, 202u8, 43u8, 89u8, 55u8, 105u8, 108u8, 49u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _owner: topics.1, + _operator: topics.2, + _approved: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self._approved, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._owner.clone(), + self._operator.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self._owner, + ); + out[2usize] = ::encode_topic( + &self._operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ApprovalForAll { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ApprovalForAll> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ApprovalForAll) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Transfer(address,address,uint256)` and selector `0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef`. + ```solidity + event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Transfer { + #[allow(missing_docs)] + pub _from: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _to: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Transfer { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + const SIGNATURE: &'static str = "Transfer(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 221u8, 242u8, 82u8, 173u8, 27u8, 226u8, 200u8, 155u8, 105u8, 194u8, 176u8, + 104u8, 252u8, 55u8, 141u8, 170u8, 149u8, 43u8, 167u8, 241u8, 99u8, 196u8, + 161u8, 22u8, 40u8, 245u8, 90u8, 77u8, 245u8, 35u8, 179u8, 239u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _from: topics.1, + _to: topics.2, + _tokenId: topics.3, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._from.clone(), + self._to.clone(), + self._tokenId.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self._from, + ); + out[2usize] = ::encode_topic( + &self._to, + ); + out[3usize] = as alloy_sol_types::EventTopic>::encode_topic(&self._tokenId); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Transfer { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Transfer> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Transfer) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `approve(address,uint256)` and selector `0x095ea7b3`. + ```solidity + function approve(address _approved, uint256 _tokenId) external payable; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveCall { + pub _approved: alloy::sol_types::private::Address, + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`approve(address,uint256)`](approveCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveCall) -> Self { + (value._approved, value._tokenId) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _approved: tuple.0, + _tokenId: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for approveCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = approveReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "approve(address,uint256)"; + const SELECTOR: [u8; 4] = [9u8, 94u8, 167u8, 179u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._approved, + ), + as alloy_sol_types::SolType>::tokenize( + &self._tokenId, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `balanceOf(address)` and selector `0x70a08231`. + ```solidity + function balanceOf(address _owner) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfCall { + pub _owner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`balanceOf(address)`](balanceOfCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfCall) -> Self { + (value._owner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _owner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for balanceOfCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = balanceOfReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "balanceOf(address)"; + const SELECTOR: [u8; 4] = [112u8, 160u8, 130u8, 49u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._owner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getApproved(uint256)` and selector `0x081812fc`. + ```solidity + function getApproved(uint256 _tokenId) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApprovedCall { + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getApproved(uint256)`](getApprovedCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApprovedReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApprovedCall) -> Self { + (value._tokenId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApprovedCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _tokenId: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApprovedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApprovedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getApprovedCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getApprovedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getApproved(uint256)"; + const SELECTOR: [u8; 4] = [8u8, 24u8, 18u8, 252u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._tokenId, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `isApprovedForAll(address,address)` and selector `0xe985e9c5`. + ```solidity + function isApprovedForAll(address _owner, address _operator) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isApprovedForAllCall { + pub _owner: alloy::sol_types::private::Address, + pub _operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`isApprovedForAll(address,address)`](isApprovedForAllCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isApprovedForAllReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isApprovedForAllCall) -> Self { + (value._owner, value._operator) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isApprovedForAllCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _owner: tuple.0, + _operator: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isApprovedForAllReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isApprovedForAllReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for isApprovedForAllCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = isApprovedForAllReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "isApprovedForAll(address,address)"; + const SELECTOR: [u8; 4] = [233u8, 133u8, 233u8, 197u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._owner, + ), + ::tokenize( + &self._operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `name()` and selector `0x06fdde03`. + ```solidity + function name() external view returns (string memory _name); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct nameCall {} + ///Container type for the return parameters of the [`name()`](nameCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct nameReturn { + pub _name: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: nameCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for nameCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: nameReturn) -> Self { + (value._name,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for nameReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _name: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for nameCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = nameReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "name()"; + const SELECTOR: [u8; 4] = [6u8, 253u8, 222u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `ownerOf(uint256)` and selector `0x6352211e`. + ```solidity + function ownerOf(uint256 _tokenId) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerOfCall { + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`ownerOf(uint256)`](ownerOfCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerOfReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerOfCall) -> Self { + (value._tokenId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerOfCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _tokenId: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerOfReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerOfReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerOfCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerOfReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ownerOf(uint256)"; + const SELECTOR: [u8; 4] = [99u8, 82u8, 33u8, 30u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._tokenId, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `safeTransferFrom(address,address,uint256)` and selector `0x42842e0e`. + ```solidity + function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_0Call { + pub _from: alloy::sol_types::private::Address, + pub _to: alloy::sol_types::private::Address, + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`safeTransferFrom(address,address,uint256)`](safeTransferFrom_0Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_0Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_0Call) -> Self { + (value._from, value._to, value._tokenId) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for safeTransferFrom_0Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _from: tuple.0, + _to: tuple.1, + _tokenId: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_0Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for safeTransferFrom_0Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for safeTransferFrom_0Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = safeTransferFrom_0Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "safeTransferFrom(address,address,uint256)"; + const SELECTOR: [u8; 4] = [66u8, 132u8, 46u8, 14u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._from, + ), + ::tokenize( + &self._to, + ), + as alloy_sol_types::SolType>::tokenize( + &self._tokenId, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `safeTransferFrom(address,address,uint256,bytes)` and selector `0xb88d4fde`. + ```solidity + function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory data) external payable; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_1Call { + pub _from: alloy::sol_types::private::Address, + pub _to: alloy::sol_types::private::Address, + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + pub data: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`safeTransferFrom(address,address,uint256,bytes)`](safeTransferFrom_1Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_1Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_1Call) -> Self { + (value._from, value._to, value._tokenId, value.data) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for safeTransferFrom_1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _from: tuple.0, + _to: tuple.1, + _tokenId: tuple.2, + data: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_1Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for safeTransferFrom_1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for safeTransferFrom_1Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = safeTransferFrom_1Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "safeTransferFrom(address,address,uint256,bytes)"; + const SELECTOR: [u8; 4] = [184u8, 141u8, 79u8, 222u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._from, + ), + ::tokenize( + &self._to, + ), + as alloy_sol_types::SolType>::tokenize( + &self._tokenId, + ), + ::tokenize( + &self.data, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setApprovalForAll(address,bool)` and selector `0xa22cb465`. + ```solidity + function setApprovalForAll(address _operator, bool _approved) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setApprovalForAllCall { + pub _operator: alloy::sol_types::private::Address, + pub _approved: bool, + } + ///Container type for the return parameters of the [`setApprovalForAll(address,bool)`](setApprovalForAllCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setApprovalForAllReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address, bool); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setApprovalForAllCall) -> Self { + (value._operator, value._approved) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setApprovalForAllCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _operator: tuple.0, + _approved: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setApprovalForAllReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setApprovalForAllReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setApprovalForAllCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setApprovalForAllReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setApprovalForAll(address,bool)"; + const SELECTOR: [u8; 4] = [162u8, 44u8, 180u8, 101u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + ::tokenize( + &self._approved, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7`. + ```solidity + function supportsInterface(bytes4 interfaceID) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct supportsInterfaceCall { + pub interfaceID: alloy::sol_types::private::FixedBytes<4>, + } + ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct supportsInterfaceReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: supportsInterfaceCall) -> Self { + (value.interfaceID,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for supportsInterfaceCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + interfaceID: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: supportsInterfaceReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for supportsInterfaceReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for supportsInterfaceCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = supportsInterfaceReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "supportsInterface(bytes4)"; + const SELECTOR: [u8; 4] = [1u8, 255u8, 201u8, 167u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.interfaceID), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `symbol()` and selector `0x95d89b41`. + ```solidity + function symbol() external view returns (string memory _symbol); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct symbolCall {} + ///Container type for the return parameters of the [`symbol()`](symbolCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct symbolReturn { + pub _symbol: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: symbolCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for symbolCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: symbolReturn) -> Self { + (value._symbol,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for symbolReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _symbol: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for symbolCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = symbolReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "symbol()"; + const SELECTOR: [u8; 4] = [149u8, 216u8, 155u8, 65u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `tokenURI(uint256)` and selector `0xc87b56dd`. + ```solidity + function tokenURI(uint256 _tokenId) external view returns (string memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct tokenURICall { + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`tokenURI(uint256)`](tokenURICall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct tokenURIReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: tokenURICall) -> Self { + (value._tokenId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for tokenURICall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _tokenId: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: tokenURIReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for tokenURIReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for tokenURICall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = tokenURIReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "tokenURI(uint256)"; + const SELECTOR: [u8; 4] = [200u8, 123u8, 86u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._tokenId, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd`. + ```solidity + function transferFrom(address _from, address _to, uint256 _tokenId) external payable; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromCall { + pub _from: alloy::sol_types::private::Address, + pub _to: alloy::sol_types::private::Address, + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`transferFrom(address,address,uint256)`](transferFromCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromCall) -> Self { + (value._from, value._to, value._tokenId) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _from: tuple.0, + _to: tuple.1, + _tokenId: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferFromCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferFromReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferFrom(address,address,uint256)"; + const SELECTOR: [u8; 4] = [35u8, 184u8, 114u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._from, + ), + ::tokenize( + &self._to, + ), + as alloy_sol_types::SolType>::tokenize( + &self._tokenId, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IERC721Metadata`](self) function calls. + pub enum IERC721MetadataCalls { + approve(approveCall), + balanceOf(balanceOfCall), + getApproved(getApprovedCall), + isApprovedForAll(isApprovedForAllCall), + name(nameCall), + ownerOf(ownerOfCall), + safeTransferFrom_0(safeTransferFrom_0Call), + safeTransferFrom_1(safeTransferFrom_1Call), + setApprovalForAll(setApprovalForAllCall), + supportsInterface(supportsInterfaceCall), + symbol(symbolCall), + tokenURI(tokenURICall), + transferFrom(transferFromCall), + } + #[automatically_derived] + impl IERC721MetadataCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [1u8, 255u8, 201u8, 167u8], + [6u8, 253u8, 222u8, 3u8], + [8u8, 24u8, 18u8, 252u8], + [9u8, 94u8, 167u8, 179u8], + [35u8, 184u8, 114u8, 221u8], + [66u8, 132u8, 46u8, 14u8], + [99u8, 82u8, 33u8, 30u8], + [112u8, 160u8, 130u8, 49u8], + [149u8, 216u8, 155u8, 65u8], + [162u8, 44u8, 180u8, 101u8], + [184u8, 141u8, 79u8, 222u8], + [200u8, 123u8, 86u8, 221u8], + [233u8, 133u8, 233u8, 197u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IERC721MetadataCalls { + const NAME: &'static str = "IERC721MetadataCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 13usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::approve(_) => ::SELECTOR, + Self::balanceOf(_) => ::SELECTOR, + Self::getApproved(_) => ::SELECTOR, + Self::isApprovedForAll(_) => { + ::SELECTOR + } + Self::name(_) => ::SELECTOR, + Self::ownerOf(_) => ::SELECTOR, + Self::safeTransferFrom_0(_) => { + ::SELECTOR + } + Self::safeTransferFrom_1(_) => { + ::SELECTOR + } + Self::setApprovalForAll(_) => { + ::SELECTOR + } + Self::supportsInterface(_) => { + ::SELECTOR + } + Self::symbol(_) => ::SELECTOR, + Self::tokenURI(_) => ::SELECTOR, + Self::transferFrom(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn supportsInterface( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC721MetadataCalls::supportsInterface) + } + supportsInterface + }, + { + fn name( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IERC721MetadataCalls::name) + } + name + }, + { + fn getApproved( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC721MetadataCalls::getApproved) + } + getApproved + }, + { + fn approve( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IERC721MetadataCalls::approve) + } + approve + }, + { + fn transferFrom( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC721MetadataCalls::transferFrom) + } + transferFrom + }, + { + fn safeTransferFrom_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC721MetadataCalls::safeTransferFrom_0) + } + safeTransferFrom_0 + }, + { + fn ownerOf( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IERC721MetadataCalls::ownerOf) + } + ownerOf + }, + { + fn balanceOf( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IERC721MetadataCalls::balanceOf) + } + balanceOf + }, + { + fn symbol( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IERC721MetadataCalls::symbol) + } + symbol + }, + { + fn setApprovalForAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC721MetadataCalls::setApprovalForAll) + } + setApprovalForAll + }, + { + fn safeTransferFrom_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC721MetadataCalls::safeTransferFrom_1) + } + safeTransferFrom_1 + }, + { + fn tokenURI( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IERC721MetadataCalls::tokenURI) + } + tokenURI + }, + { + fn isApprovedForAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC721MetadataCalls::isApprovedForAll) + } + isApprovedForAll + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::approve(inner) => { + ::abi_encoded_size(inner) + } + Self::balanceOf(inner) => { + ::abi_encoded_size(inner) + } + Self::getApproved(inner) => { + ::abi_encoded_size(inner) + } + Self::isApprovedForAll(inner) => { + ::abi_encoded_size(inner) + } + Self::name(inner) => { + ::abi_encoded_size(inner) + } + Self::ownerOf(inner) => { + ::abi_encoded_size(inner) + } + Self::safeTransferFrom_0(inner) => { + ::abi_encoded_size(inner) + } + Self::safeTransferFrom_1(inner) => { + ::abi_encoded_size(inner) + } + Self::setApprovalForAll(inner) => { + ::abi_encoded_size(inner) + } + Self::supportsInterface(inner) => { + ::abi_encoded_size(inner) + } + Self::symbol(inner) => { + ::abi_encoded_size(inner) + } + Self::tokenURI(inner) => { + ::abi_encoded_size(inner) + } + Self::transferFrom(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::approve(inner) => { + ::abi_encode_raw(inner, out) + } + Self::balanceOf(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getApproved(inner) => { + ::abi_encode_raw(inner, out) + } + Self::isApprovedForAll(inner) => { + ::abi_encode_raw(inner, out) + } + Self::name(inner) => { + ::abi_encode_raw(inner, out) + } + Self::ownerOf(inner) => { + ::abi_encode_raw(inner, out) + } + Self::safeTransferFrom_0(inner) => { + ::abi_encode_raw(inner, out) + } + Self::safeTransferFrom_1(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setApprovalForAll(inner) => { + ::abi_encode_raw(inner, out) + } + Self::supportsInterface(inner) => { + ::abi_encode_raw(inner, out) + } + Self::symbol(inner) => { + ::abi_encode_raw(inner, out) + } + Self::tokenURI(inner) => { + ::abi_encode_raw(inner, out) + } + Self::transferFrom(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`IERC721Metadata`](self) events. + pub enum IERC721MetadataEvents { + Approval(Approval), + ApprovalForAll(ApprovalForAll), + Transfer(Transfer), + } + #[automatically_derived] + impl IERC721MetadataEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 23u8, 48u8, 126u8, 171u8, 57u8, 171u8, 97u8, 7u8, 232u8, 137u8, 152u8, 69u8, 173u8, + 61u8, 89u8, 189u8, 150u8, 83u8, 242u8, 0u8, 242u8, 32u8, 146u8, 4u8, 137u8, 202u8, + 43u8, 89u8, 55u8, 105u8, 108u8, 49u8, + ], + [ + 140u8, 91u8, 225u8, 229u8, 235u8, 236u8, 125u8, 91u8, 209u8, 79u8, 113u8, 66u8, + 125u8, 30u8, 132u8, 243u8, 221u8, 3u8, 20u8, 192u8, 247u8, 178u8, 41u8, 30u8, 91u8, + 32u8, 10u8, 200u8, 199u8, 195u8, 185u8, 37u8, + ], + [ + 221u8, 242u8, 82u8, 173u8, 27u8, 226u8, 200u8, 155u8, 105u8, 194u8, 176u8, 104u8, + 252u8, 55u8, 141u8, 170u8, 149u8, 43u8, 167u8, 241u8, 99u8, 196u8, 161u8, 22u8, + 40u8, 245u8, 90u8, 77u8, 245u8, 35u8, 179u8, 239u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IERC721MetadataEvents { + const NAME: &'static str = "IERC721MetadataEvents"; + const COUNT: usize = 3usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::Approval) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ApprovalForAll) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::Transfer) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for IERC721MetadataEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::ApprovalForAll(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Transfer(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ApprovalForAll(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Transfer(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IERC721Metadata`](self) contract instance. + + See the [wrapper's documentation](`IERC721MetadataInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IERC721MetadataInstance { + IERC721MetadataInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + IERC721MetadataInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IERC721MetadataInstance::::deploy_builder(provider) + } + /**A [`IERC721Metadata`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IERC721Metadata`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IERC721MetadataInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IERC721MetadataInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IERC721MetadataInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC721MetadataInstance + { + /**Creates a new wrapper around an on-chain [`IERC721Metadata`](self) contract instance. + + See the [wrapper's documentation](`IERC721MetadataInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IERC721MetadataInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IERC721MetadataInstance { + IERC721MetadataInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC721MetadataInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`approve`] function. + pub fn approve( + &self, + _approved: alloy::sol_types::private::Address, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&approveCall { + _approved, + _tokenId, + }) + } + ///Creates a new call builder for the [`balanceOf`] function. + pub fn balanceOf( + &self, + _owner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&balanceOfCall { _owner }) + } + ///Creates a new call builder for the [`getApproved`] function. + pub fn getApproved( + &self, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getApprovedCall { _tokenId }) + } + ///Creates a new call builder for the [`isApprovedForAll`] function. + pub fn isApprovedForAll( + &self, + _owner: alloy::sol_types::private::Address, + _operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&isApprovedForAllCall { _owner, _operator }) + } + ///Creates a new call builder for the [`name`] function. + pub fn name(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&nameCall {}) + } + ///Creates a new call builder for the [`ownerOf`] function. + pub fn ownerOf( + &self, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerOfCall { _tokenId }) + } + ///Creates a new call builder for the [`safeTransferFrom_0`] function. + pub fn safeTransferFrom_0( + &self, + _from: alloy::sol_types::private::Address, + _to: alloy::sol_types::private::Address, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&safeTransferFrom_0Call { + _from, + _to, + _tokenId, + }) + } + ///Creates a new call builder for the [`safeTransferFrom_1`] function. + pub fn safeTransferFrom_1( + &self, + _from: alloy::sol_types::private::Address, + _to: alloy::sol_types::private::Address, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, + data: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&safeTransferFrom_1Call { + _from, + _to, + _tokenId, + data, + }) + } + ///Creates a new call builder for the [`setApprovalForAll`] function. + pub fn setApprovalForAll( + &self, + _operator: alloy::sol_types::private::Address, + _approved: bool, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setApprovalForAllCall { + _operator, + _approved, + }) + } + ///Creates a new call builder for the [`supportsInterface`] function. + pub fn supportsInterface( + &self, + interfaceID: alloy::sol_types::private::FixedBytes<4>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&supportsInterfaceCall { interfaceID }) + } + ///Creates a new call builder for the [`symbol`] function. + pub fn symbol(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&symbolCall {}) + } + ///Creates a new call builder for the [`tokenURI`] function. + pub fn tokenURI( + &self, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&tokenURICall { _tokenId }) + } + ///Creates a new call builder for the [`transferFrom`] function. + pub fn transferFrom( + &self, + _from: alloy::sol_types::private::Address, + _to: alloy::sol_types::private::Address, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferFromCall { + _from, + _to, + _tokenId, + }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC721MetadataInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Approval`] event. + pub fn Approval_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ApprovalForAll`] event. + pub fn ApprovalForAll_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Transfer`] event. + pub fn Transfer_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/ierc721tokenreceiver.rs b/crates/utils/src/ierc721tokenreceiver.rs new file mode 100644 index 00000000..b4147b3d --- /dev/null +++ b/crates/utils/src/ierc721tokenreceiver.rs @@ -0,0 +1,500 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IERC721TokenReceiver { + function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes memory _data) external returns (bytes4); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "onERC721Received", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + }, + { + "name": "_from", + "type": "address", + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IERC721TokenReceiver { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Function with signature `onERC721Received(address,address,uint256,bytes)` and selector `0x150b7a02`. + ```solidity + function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes memory _data) external returns (bytes4); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct onERC721ReceivedCall { + pub _operator: alloy::sol_types::private::Address, + pub _from: alloy::sol_types::private::Address, + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + pub _data: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`onERC721Received(address,address,uint256,bytes)`](onERC721ReceivedCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct onERC721ReceivedReturn { + pub _0: alloy::sol_types::private::FixedBytes<4>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: onERC721ReceivedCall) -> Self { + (value._operator, value._from, value._tokenId, value._data) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for onERC721ReceivedCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _operator: tuple.0, + _from: tuple.1, + _tokenId: tuple.2, + _data: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: onERC721ReceivedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for onERC721ReceivedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for onERC721ReceivedCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = onERC721ReceivedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "onERC721Received(address,address,uint256,bytes)"; + const SELECTOR: [u8; 4] = [21u8, 11u8, 122u8, 2u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + ::tokenize( + &self._from, + ), + as alloy_sol_types::SolType>::tokenize( + &self._tokenId, + ), + ::tokenize( + &self._data, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IERC721TokenReceiver`](self) function calls. + pub enum IERC721TokenReceiverCalls { + onERC721Received(onERC721ReceivedCall), + } + #[automatically_derived] + impl IERC721TokenReceiverCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[21u8, 11u8, 122u8, 2u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IERC721TokenReceiverCalls { + const NAME: &'static str = "IERC721TokenReceiverCalls"; + const MIN_DATA_LENGTH: usize = 160usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::onERC721Received(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[{ + fn onERC721Received( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IERC721TokenReceiverCalls::onERC721Received) + } + onERC721Received + }]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::onERC721Received(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::onERC721Received(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IERC721TokenReceiver`](self) contract instance. + + See the [wrapper's documentation](`IERC721TokenReceiverInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IERC721TokenReceiverInstance { + IERC721TokenReceiverInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + IERC721TokenReceiverInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IERC721TokenReceiverInstance::::deploy_builder(provider) + } + /**A [`IERC721TokenReceiver`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IERC721TokenReceiver`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IERC721TokenReceiverInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IERC721TokenReceiverInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IERC721TokenReceiverInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC721TokenReceiverInstance + { + /**Creates a new wrapper around an on-chain [`IERC721TokenReceiver`](self) contract instance. + + See the [wrapper's documentation](`IERC721TokenReceiverInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IERC721TokenReceiverInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IERC721TokenReceiverInstance { + IERC721TokenReceiverInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC721TokenReceiverInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`onERC721Received`] function. + pub fn onERC721Received( + &self, + _operator: alloy::sol_types::private::Address, + _from: alloy::sol_types::private::Address, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, + _data: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&onERC721ReceivedCall { + _operator, + _from, + _tokenId, + _data, + }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC721TokenReceiverInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/iethposdeposit.rs b/crates/utils/src/iethposdeposit.rs new file mode 100644 index 00000000..f7d583d4 --- /dev/null +++ b/crates/utils/src/iethposdeposit.rs @@ -0,0 +1,1018 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IETHPOSDeposit { + event DepositEvent(bytes pubkey, bytes withdrawal_credentials, bytes amount, bytes signature, bytes index); + + function deposit(bytes memory pubkey, bytes memory withdrawal_credentials, bytes memory signature, bytes32 deposit_data_root) external payable; + function get_deposit_count() external view returns (bytes memory); + function get_deposit_root() external view returns (bytes32); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "deposit", + "inputs": [ + { + "name": "pubkey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "withdrawal_credentials", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "deposit_data_root", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "get_deposit_count", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes", + "internalType": "bytes" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "get_deposit_root", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "DepositEvent", + "inputs": [ + { + "name": "pubkey", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + }, + { + "name": "withdrawal_credentials", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + }, + { + "name": "amount", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + }, + { + "name": "signature", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + }, + { + "name": "index", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IETHPOSDeposit { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Event with signature `DepositEvent(bytes,bytes,bytes,bytes,bytes)` and selector `0x649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c5`. + ```solidity + event DepositEvent(bytes pubkey, bytes withdrawal_credentials, bytes amount, bytes signature, bytes index); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct DepositEvent { + #[allow(missing_docs)] + pub pubkey: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] + pub withdrawal_credentials: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] + pub signature: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] + pub index: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for DepositEvent { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "DepositEvent(bytes,bytes,bytes,bytes,bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 100u8, 155u8, 188u8, 98u8, 208u8, 227u8, 19u8, 66u8, 175u8, 234u8, 78u8, 92u8, + 216u8, 45u8, 64u8, 73u8, 231u8, 225u8, 238u8, 145u8, 47u8, 192u8, 136u8, 154u8, + 167u8, 144u8, 128u8, 59u8, 227u8, 144u8, 56u8, 197u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + pubkey: data.0, + withdrawal_credentials: data.1, + amount: data.2, + signature: data.3, + index: data.4, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.pubkey, + ), + ::tokenize( + &self.withdrawal_credentials, + ), + ::tokenize( + &self.amount, + ), + ::tokenize( + &self.signature, + ), + ::tokenize( + &self.index, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for DepositEvent { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&DepositEvent> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &DepositEvent) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `deposit(bytes,bytes,bytes,bytes32)` and selector `0x22895118`. + ```solidity + function deposit(bytes memory pubkey, bytes memory withdrawal_credentials, bytes memory signature, bytes32 deposit_data_root) external payable; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct depositCall { + pub pubkey: alloy::sol_types::private::Bytes, + pub withdrawal_credentials: alloy::sol_types::private::Bytes, + pub signature: alloy::sol_types::private::Bytes, + pub deposit_data_root: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`deposit(bytes,bytes,bytes,bytes32)`](depositCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct depositReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::Bytes, + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: depositCall) -> Self { + ( + value.pubkey, + value.withdrawal_credentials, + value.signature, + value.deposit_data_root, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for depositCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + pubkey: tuple.0, + withdrawal_credentials: tuple.1, + signature: tuple.2, + deposit_data_root: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: depositReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for depositReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for depositCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = depositReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "deposit(bytes,bytes,bytes,bytes32)"; + const SELECTOR: [u8; 4] = [34u8, 137u8, 81u8, 24u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.pubkey, + ), + ::tokenize( + &self.withdrawal_credentials, + ), + ::tokenize( + &self.signature, + ), + as alloy_sol_types::SolType>::tokenize(&self.deposit_data_root), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `get_deposit_count()` and selector `0x621fd130`. + ```solidity + function get_deposit_count() external view returns (bytes memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct get_deposit_countCall {} + ///Container type for the return parameters of the [`get_deposit_count()`](get_deposit_countCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct get_deposit_countReturn { + pub _0: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: get_deposit_countCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for get_deposit_countCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bytes,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Bytes,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: get_deposit_countReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for get_deposit_countReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for get_deposit_countCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = get_deposit_countReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bytes,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "get_deposit_count()"; + const SELECTOR: [u8; 4] = [98u8, 31u8, 209u8, 48u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `get_deposit_root()` and selector `0xc5f2892f`. + ```solidity + function get_deposit_root() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct get_deposit_rootCall {} + ///Container type for the return parameters of the [`get_deposit_root()`](get_deposit_rootCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct get_deposit_rootReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: get_deposit_rootCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for get_deposit_rootCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: get_deposit_rootReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for get_deposit_rootReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for get_deposit_rootCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = get_deposit_rootReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "get_deposit_root()"; + const SELECTOR: [u8; 4] = [197u8, 242u8, 137u8, 47u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IETHPOSDeposit`](self) function calls. + pub enum IETHPOSDepositCalls { + deposit(depositCall), + get_deposit_count(get_deposit_countCall), + get_deposit_root(get_deposit_rootCall), + } + #[automatically_derived] + impl IETHPOSDepositCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [34u8, 137u8, 81u8, 24u8], + [98u8, 31u8, 209u8, 48u8], + [197u8, 242u8, 137u8, 47u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IETHPOSDepositCalls { + const NAME: &'static str = "IETHPOSDepositCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 3usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::deposit(_) => ::SELECTOR, + Self::get_deposit_count(_) => { + ::SELECTOR + } + Self::get_deposit_root(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn deposit( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IETHPOSDepositCalls::deposit) + } + deposit + }, + { + fn get_deposit_count( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IETHPOSDepositCalls::get_deposit_count) + } + get_deposit_count + }, + { + fn get_deposit_root( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IETHPOSDepositCalls::get_deposit_root) + } + get_deposit_root + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::deposit(inner) => { + ::abi_encoded_size(inner) + } + Self::get_deposit_count(inner) => { + ::abi_encoded_size(inner) + } + Self::get_deposit_root(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::deposit(inner) => { + ::abi_encode_raw(inner, out) + } + Self::get_deposit_count(inner) => { + ::abi_encode_raw(inner, out) + } + Self::get_deposit_root(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`IETHPOSDeposit`](self) events. + pub enum IETHPOSDepositEvents { + DepositEvent(DepositEvent), + } + #[automatically_derived] + impl IETHPOSDepositEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[[ + 100u8, 155u8, 188u8, 98u8, 208u8, 227u8, 19u8, 66u8, 175u8, 234u8, 78u8, 92u8, 216u8, + 45u8, 64u8, 73u8, 231u8, 225u8, 238u8, 145u8, 47u8, 192u8, 136u8, 154u8, 167u8, 144u8, + 128u8, 59u8, 227u8, 144u8, 56u8, 197u8, + ]]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IETHPOSDepositEvents { + const NAME: &'static str = "IETHPOSDepositEvents"; + const COUNT: usize = 1usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::DepositEvent) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for IETHPOSDepositEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::DepositEvent(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::DepositEvent(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IETHPOSDeposit`](self) contract instance. + + See the [wrapper's documentation](`IETHPOSDepositInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IETHPOSDepositInstance { + IETHPOSDepositInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + IETHPOSDepositInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IETHPOSDepositInstance::::deploy_builder(provider) + } + /**A [`IETHPOSDeposit`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IETHPOSDeposit`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IETHPOSDepositInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IETHPOSDepositInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IETHPOSDepositInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IETHPOSDepositInstance + { + /**Creates a new wrapper around an on-chain [`IETHPOSDeposit`](self) contract instance. + + See the [wrapper's documentation](`IETHPOSDepositInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IETHPOSDepositInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IETHPOSDepositInstance { + IETHPOSDepositInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IETHPOSDepositInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`deposit`] function. + pub fn deposit( + &self, + pubkey: alloy::sol_types::private::Bytes, + withdrawal_credentials: alloy::sol_types::private::Bytes, + signature: alloy::sol_types::private::Bytes, + deposit_data_root: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&depositCall { + pubkey, + withdrawal_credentials, + signature, + deposit_data_root, + }) + } + ///Creates a new call builder for the [`get_deposit_count`] function. + pub fn get_deposit_count( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&get_deposit_countCall {}) + } + ///Creates a new call builder for the [`get_deposit_root`] function. + pub fn get_deposit_root( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&get_deposit_rootCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IETHPOSDepositInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`DepositEvent`] event. + pub fn DepositEvent_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/iindexregistry.rs b/crates/utils/src/iindexregistry.rs new file mode 100644 index 00000000..4b0d0232 --- /dev/null +++ b/crates/utils/src/iindexregistry.rs @@ -0,0 +1,2705 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IIndexRegistry { + struct OperatorUpdate { + uint32 fromBlockNumber; + bytes32 operatorId; + } + struct QuorumUpdate { + uint32 fromBlockNumber; + uint32 numOperators; + } + + event QuorumIndexUpdate(bytes32 indexed operatorId, uint8 quorumNumber, uint32 newOperatorIndex); + + function deregisterOperator(bytes32 operatorId, bytes memory quorumNumbers) external; + function getLatestOperatorUpdate(uint8 quorumNumber, uint32 operatorIndex) external view returns (OperatorUpdate memory); + function getLatestQuorumUpdate(uint8 quorumNumber) external view returns (QuorumUpdate memory); + function getOperatorListAtBlockNumber(uint8 quorumNumber, uint32 blockNumber) external view returns (bytes32[] memory); + function getOperatorUpdateAtIndex(uint8 quorumNumber, uint32 operatorIndex, uint32 arrayIndex) external view returns (OperatorUpdate memory); + function getQuorumUpdateAtIndex(uint8 quorumNumber, uint32 quorumIndex) external view returns (QuorumUpdate memory); + function initializeQuorum(uint8 quorumNumber) external; + function registerOperator(bytes32 operatorId, bytes memory quorumNumbers) external returns (uint32[] memory); + function registryCoordinator() external view returns (address); + function totalOperatorsForQuorum(uint8 quorumNumber) external view returns (uint32); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "deregisterOperator", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getLatestOperatorUpdate", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "operatorIndex", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IIndexRegistry.OperatorUpdate", + "components": [ + { + "name": "fromBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getLatestQuorumUpdate", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IIndexRegistry.QuorumUpdate", + "components": [ + { + "name": "fromBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "numOperators", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorListAtBlockNumber", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32[]", + "internalType": "bytes32[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorUpdateAtIndex", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "operatorIndex", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "arrayIndex", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IIndexRegistry.OperatorUpdate", + "components": [ + { + "name": "fromBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getQuorumUpdateAtIndex", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "quorumIndex", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IIndexRegistry.QuorumUpdate", + "components": [ + { + "name": "fromBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "numOperators", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initializeQuorum", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registerOperator", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32[]", + "internalType": "uint32[]" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registryCoordinator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "totalOperatorsForQuorum", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "QuorumIndexUpdate", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "quorumNumber", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + }, + { + "name": "newOperatorIndex", + "type": "uint32", + "indexed": false, + "internalType": "uint32" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IIndexRegistry { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**```solidity + struct OperatorUpdate { uint32 fromBlockNumber; bytes32 operatorId; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OperatorUpdate { + pub fromBlockNumber: u32, + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32, alloy::sol_types::private::FixedBytes<32>); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OperatorUpdate) -> Self { + (value.fromBlockNumber, value.operatorId) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OperatorUpdate { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + fromBlockNumber: tuple.0, + operatorId: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OperatorUpdate { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OperatorUpdate { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.fromBlockNumber), + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OperatorUpdate { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OperatorUpdate { + const NAME: &'static str = "OperatorUpdate"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OperatorUpdate(uint32 fromBlockNumber,bytes32 operatorId)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word( + &self.fromBlockNumber, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.operatorId) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OperatorUpdate { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.fromBlockNumber, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.operatorId, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.fromBlockNumber, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.operatorId, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct QuorumUpdate { uint32 fromBlockNumber; uint32 numOperators; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct QuorumUpdate { + pub fromBlockNumber: u32, + pub numOperators: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: QuorumUpdate) -> Self { + (value.fromBlockNumber, value.numOperators) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for QuorumUpdate { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + fromBlockNumber: tuple.0, + numOperators: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for QuorumUpdate { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for QuorumUpdate { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.fromBlockNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.numOperators, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for QuorumUpdate { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for QuorumUpdate { + const NAME: &'static str = "QuorumUpdate"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "QuorumUpdate(uint32 fromBlockNumber,uint32 numOperators)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word( + &self.fromBlockNumber, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.numOperators) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for QuorumUpdate { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.fromBlockNumber, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.numOperators, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.fromBlockNumber, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.numOperators, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**Event with signature `QuorumIndexUpdate(bytes32,uint8,uint32)` and selector `0x6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6`. + ```solidity + event QuorumIndexUpdate(bytes32 indexed operatorId, uint8 quorumNumber, uint32 newOperatorIndex); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct QuorumIndexUpdate { + #[allow(missing_docs)] + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub quorumNumber: u8, + #[allow(missing_docs)] + pub newOperatorIndex: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for QuorumIndexUpdate { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + const SIGNATURE: &'static str = "QuorumIndexUpdate(bytes32,uint8,uint32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 110u8, 225u8, 228u8, 244u8, 7u8, 95u8, 61u8, 6u8, 113u8, 118u8, 20u8, 13u8, + 52u8, 232u8, 120u8, 116u8, 36u8, 77u8, 210u8, 115u8, 41u8, 76u8, 5u8, 178u8, + 33u8, 129u8, 51u8, 228u8, 154u8, 43u8, 166u8, 246u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operatorId: topics.1, + quorumNumber: data.0, + newOperatorIndex: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.newOperatorIndex, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.operatorId.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.operatorId); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for QuorumIndexUpdate { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&QuorumIndexUpdate> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &QuorumIndexUpdate) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `deregisterOperator(bytes32,bytes)` and selector `0xbd29b8cd`. + ```solidity + function deregisterOperator(bytes32 operatorId, bytes memory quorumNumbers) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`deregisterOperator(bytes32,bytes)`](deregisterOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorCall) -> Self { + (value.operatorId, value.quorumNumbers) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + quorumNumbers: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for deregisterOperatorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = deregisterOperatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "deregisterOperator(bytes32,bytes)"; + const SELECTOR: [u8; 4] = [189u8, 41u8, 184u8, 205u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getLatestOperatorUpdate(uint8,uint32)` and selector `0x12d1d74d`. + ```solidity + function getLatestOperatorUpdate(uint8 quorumNumber, uint32 operatorIndex) external view returns (OperatorUpdate memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLatestOperatorUpdateCall { + pub quorumNumber: u8, + pub operatorIndex: u32, + } + ///Container type for the return parameters of the [`getLatestOperatorUpdate(uint8,uint32)`](getLatestOperatorUpdateCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLatestOperatorUpdateReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLatestOperatorUpdateCall) -> Self { + (value.quorumNumber, value.operatorIndex) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLatestOperatorUpdateCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + operatorIndex: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (OperatorUpdate,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLatestOperatorUpdateReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLatestOperatorUpdateReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getLatestOperatorUpdateCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getLatestOperatorUpdateReturn; + type ReturnTuple<'a> = (OperatorUpdate,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getLatestOperatorUpdate(uint8,uint32)"; + const SELECTOR: [u8; 4] = [18u8, 209u8, 215u8, 77u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.operatorIndex, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getLatestQuorumUpdate(uint8)` and selector `0x8121906f`. + ```solidity + function getLatestQuorumUpdate(uint8 quorumNumber) external view returns (QuorumUpdate memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLatestQuorumUpdateCall { + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`getLatestQuorumUpdate(uint8)`](getLatestQuorumUpdateCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLatestQuorumUpdateReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLatestQuorumUpdateCall) -> Self { + (value.quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLatestQuorumUpdateCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (QuorumUpdate,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLatestQuorumUpdateReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLatestQuorumUpdateReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getLatestQuorumUpdateCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getLatestQuorumUpdateReturn; + type ReturnTuple<'a> = (QuorumUpdate,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getLatestQuorumUpdate(uint8)"; + const SELECTOR: [u8; 4] = [129u8, 33u8, 144u8, 111u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorListAtBlockNumber(uint8,uint32)` and selector `0x89026245`. + ```solidity + function getOperatorListAtBlockNumber(uint8 quorumNumber, uint32 blockNumber) external view returns (bytes32[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorListAtBlockNumberCall { + pub quorumNumber: u8, + pub blockNumber: u32, + } + ///Container type for the return parameters of the [`getOperatorListAtBlockNumber(uint8,uint32)`](getOperatorListAtBlockNumberCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorListAtBlockNumberReturn { + pub _0: alloy::sol_types::private::Vec>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorListAtBlockNumberCall) -> Self { + (value.quorumNumber, value.blockNumber) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorListAtBlockNumberCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + blockNumber: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorListAtBlockNumberReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorListAtBlockNumberReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorListAtBlockNumberCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorListAtBlockNumberReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorListAtBlockNumber(uint8,uint32)"; + const SELECTOR: [u8; 4] = [137u8, 2u8, 98u8, 69u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.blockNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorUpdateAtIndex(uint8,uint32,uint32)` and selector `0x2ed583e5`. + ```solidity + function getOperatorUpdateAtIndex(uint8 quorumNumber, uint32 operatorIndex, uint32 arrayIndex) external view returns (OperatorUpdate memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorUpdateAtIndexCall { + pub quorumNumber: u8, + pub operatorIndex: u32, + pub arrayIndex: u32, + } + ///Container type for the return parameters of the [`getOperatorUpdateAtIndex(uint8,uint32,uint32)`](getOperatorUpdateAtIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8, u32, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorUpdateAtIndexCall) -> Self { + (value.quorumNumber, value.operatorIndex, value.arrayIndex) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorUpdateAtIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + operatorIndex: tuple.1, + arrayIndex: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (OperatorUpdate,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorUpdateAtIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorUpdateAtIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorUpdateAtIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorUpdateAtIndexReturn; + type ReturnTuple<'a> = (OperatorUpdate,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorUpdateAtIndex(uint8,uint32,uint32)"; + const SELECTOR: [u8; 4] = [46u8, 213u8, 131u8, 229u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.operatorIndex, + ), + as alloy_sol_types::SolType>::tokenize( + &self.arrayIndex, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getQuorumUpdateAtIndex(uint8,uint32)` and selector `0xa48bb0ac`. + ```solidity + function getQuorumUpdateAtIndex(uint8 quorumNumber, uint32 quorumIndex) external view returns (QuorumUpdate memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumUpdateAtIndexCall { + pub quorumNumber: u8, + pub quorumIndex: u32, + } + ///Container type for the return parameters of the [`getQuorumUpdateAtIndex(uint8,uint32)`](getQuorumUpdateAtIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumUpdateAtIndexCall) -> Self { + (value.quorumNumber, value.quorumIndex) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumUpdateAtIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + quorumIndex: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (QuorumUpdate,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumUpdateAtIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumUpdateAtIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getQuorumUpdateAtIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getQuorumUpdateAtIndexReturn; + type ReturnTuple<'a> = (QuorumUpdate,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getQuorumUpdateAtIndex(uint8,uint32)"; + const SELECTOR: [u8; 4] = [164u8, 139u8, 176u8, 172u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.quorumIndex, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `initializeQuorum(uint8)` and selector `0x26d941f2`. + ```solidity + function initializeQuorum(uint8 quorumNumber) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeQuorumCall { + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`initializeQuorum(uint8)`](initializeQuorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeQuorumReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeQuorumCall) -> Self { + (value.quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeQuorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeQuorumReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeQuorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for initializeQuorumCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = initializeQuorumReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "initializeQuorum(uint8)"; + const SELECTOR: [u8; 4] = [38u8, 217u8, 65u8, 242u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registerOperator(bytes32,bytes)` and selector `0x00bff04d`. + ```solidity + function registerOperator(bytes32 operatorId, bytes memory quorumNumbers) external returns (uint32[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`registerOperator(bytes32,bytes)`](registerOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorCall) -> Self { + (value.operatorId, value.quorumNumbers) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + quorumNumbers: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registerOperatorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registerOperatorReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registerOperator(bytes32,bytes)"; + const SELECTOR: [u8; 4] = [0u8, 191u8, 240u8, 77u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registryCoordinator()` and selector `0x6d14a987`. + ```solidity + function registryCoordinator() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registryCoordinatorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registryCoordinatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registryCoordinator()"; + const SELECTOR: [u8; 4] = [109u8, 20u8, 169u8, 135u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `totalOperatorsForQuorum(uint8)` and selector `0xf3410922`. + ```solidity + function totalOperatorsForQuorum(uint8 quorumNumber) external view returns (uint32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalOperatorsForQuorumCall { + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`totalOperatorsForQuorum(uint8)`](totalOperatorsForQuorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalOperatorsForQuorumReturn { + pub _0: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalOperatorsForQuorumCall) -> Self { + (value.quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalOperatorsForQuorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalOperatorsForQuorumReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalOperatorsForQuorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for totalOperatorsForQuorumCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = totalOperatorsForQuorumReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "totalOperatorsForQuorum(uint8)"; + const SELECTOR: [u8; 4] = [243u8, 65u8, 9u8, 34u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IIndexRegistry`](self) function calls. + pub enum IIndexRegistryCalls { + deregisterOperator(deregisterOperatorCall), + getLatestOperatorUpdate(getLatestOperatorUpdateCall), + getLatestQuorumUpdate(getLatestQuorumUpdateCall), + getOperatorListAtBlockNumber(getOperatorListAtBlockNumberCall), + getOperatorUpdateAtIndex(getOperatorUpdateAtIndexCall), + getQuorumUpdateAtIndex(getQuorumUpdateAtIndexCall), + initializeQuorum(initializeQuorumCall), + registerOperator(registerOperatorCall), + registryCoordinator(registryCoordinatorCall), + totalOperatorsForQuorum(totalOperatorsForQuorumCall), + } + #[automatically_derived] + impl IIndexRegistryCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [0u8, 191u8, 240u8, 77u8], + [18u8, 209u8, 215u8, 77u8], + [38u8, 217u8, 65u8, 242u8], + [46u8, 213u8, 131u8, 229u8], + [109u8, 20u8, 169u8, 135u8], + [129u8, 33u8, 144u8, 111u8], + [137u8, 2u8, 98u8, 69u8], + [164u8, 139u8, 176u8, 172u8], + [189u8, 41u8, 184u8, 205u8], + [243u8, 65u8, 9u8, 34u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IIndexRegistryCalls { + const NAME: &'static str = "IIndexRegistryCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 10usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::deregisterOperator(_) => { + ::SELECTOR + } + Self::getLatestOperatorUpdate(_) => { + ::SELECTOR + } + Self::getLatestQuorumUpdate(_) => { + ::SELECTOR + } + Self::getOperatorListAtBlockNumber(_) => { + ::SELECTOR + } + Self::getOperatorUpdateAtIndex(_) => { + ::SELECTOR + } + Self::getQuorumUpdateAtIndex(_) => { + ::SELECTOR + } + Self::initializeQuorum(_) => { + ::SELECTOR + } + Self::registerOperator(_) => { + ::SELECTOR + } + Self::registryCoordinator(_) => { + ::SELECTOR + } + Self::totalOperatorsForQuorum(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn registerOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IIndexRegistryCalls::registerOperator) + } + registerOperator + }, + { + fn getLatestOperatorUpdate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IIndexRegistryCalls::getLatestOperatorUpdate) + } + getLatestOperatorUpdate + }, + { + fn initializeQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IIndexRegistryCalls::initializeQuorum) + } + initializeQuorum + }, + { + fn getOperatorUpdateAtIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IIndexRegistryCalls::getOperatorUpdateAtIndex) + } + getOperatorUpdateAtIndex + }, + { + fn registryCoordinator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IIndexRegistryCalls::registryCoordinator) + } + registryCoordinator + }, + { + fn getLatestQuorumUpdate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IIndexRegistryCalls::getLatestQuorumUpdate) + } + getLatestQuorumUpdate + }, + { + fn getOperatorListAtBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IIndexRegistryCalls::getOperatorListAtBlockNumber) + } + getOperatorListAtBlockNumber + }, + { + fn getQuorumUpdateAtIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IIndexRegistryCalls::getQuorumUpdateAtIndex) + } + getQuorumUpdateAtIndex + }, + { + fn deregisterOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IIndexRegistryCalls::deregisterOperator) + } + deregisterOperator + }, + { + fn totalOperatorsForQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IIndexRegistryCalls::totalOperatorsForQuorum) + } + totalOperatorsForQuorum + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::deregisterOperator(inner) => { + ::abi_encoded_size(inner) + } + Self::getLatestOperatorUpdate(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getLatestQuorumUpdate(inner) => { + ::abi_encoded_size(inner) + } + Self::getOperatorListAtBlockNumber(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorUpdateAtIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getQuorumUpdateAtIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::initializeQuorum(inner) => { + ::abi_encoded_size(inner) + } + Self::registerOperator(inner) => { + ::abi_encoded_size(inner) + } + Self::registryCoordinator(inner) => { + ::abi_encoded_size(inner) + } + Self::totalOperatorsForQuorum(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::deregisterOperator(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getLatestOperatorUpdate(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getLatestQuorumUpdate(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getOperatorListAtBlockNumber(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getOperatorUpdateAtIndex(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getQuorumUpdateAtIndex(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::initializeQuorum(inner) => { + ::abi_encode_raw(inner, out) + } + Self::registerOperator(inner) => { + ::abi_encode_raw(inner, out) + } + Self::registryCoordinator(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::totalOperatorsForQuorum(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + } + } + } + ///Container for all the [`IIndexRegistry`](self) events. + pub enum IIndexRegistryEvents { + QuorumIndexUpdate(QuorumIndexUpdate), + } + #[automatically_derived] + impl IIndexRegistryEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[[ + 110u8, 225u8, 228u8, 244u8, 7u8, 95u8, 61u8, 6u8, 113u8, 118u8, 20u8, 13u8, 52u8, + 232u8, 120u8, 116u8, 36u8, 77u8, 210u8, 115u8, 41u8, 76u8, 5u8, 178u8, 33u8, 129u8, + 51u8, 228u8, 154u8, 43u8, 166u8, 246u8, + ]]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IIndexRegistryEvents { + const NAME: &'static str = "IIndexRegistryEvents"; + const COUNT: usize = 1usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::QuorumIndexUpdate) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for IIndexRegistryEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::QuorumIndexUpdate(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::QuorumIndexUpdate(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IIndexRegistry`](self) contract instance. + + See the [wrapper's documentation](`IIndexRegistryInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IIndexRegistryInstance { + IIndexRegistryInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + IIndexRegistryInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IIndexRegistryInstance::::deploy_builder(provider) + } + /**A [`IIndexRegistry`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IIndexRegistry`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IIndexRegistryInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IIndexRegistryInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IIndexRegistryInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IIndexRegistryInstance + { + /**Creates a new wrapper around an on-chain [`IIndexRegistry`](self) contract instance. + + See the [wrapper's documentation](`IIndexRegistryInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IIndexRegistryInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IIndexRegistryInstance { + IIndexRegistryInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IIndexRegistryInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`deregisterOperator`] function. + pub fn deregisterOperator( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumbers: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&deregisterOperatorCall { + operatorId, + quorumNumbers, + }) + } + ///Creates a new call builder for the [`getLatestOperatorUpdate`] function. + pub fn getLatestOperatorUpdate( + &self, + quorumNumber: u8, + operatorIndex: u32, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getLatestOperatorUpdateCall { + quorumNumber, + operatorIndex, + }) + } + ///Creates a new call builder for the [`getLatestQuorumUpdate`] function. + pub fn getLatestQuorumUpdate( + &self, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getLatestQuorumUpdateCall { quorumNumber }) + } + ///Creates a new call builder for the [`getOperatorListAtBlockNumber`] function. + pub fn getOperatorListAtBlockNumber( + &self, + quorumNumber: u8, + blockNumber: u32, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorListAtBlockNumberCall { + quorumNumber, + blockNumber, + }) + } + ///Creates a new call builder for the [`getOperatorUpdateAtIndex`] function. + pub fn getOperatorUpdateAtIndex( + &self, + quorumNumber: u8, + operatorIndex: u32, + arrayIndex: u32, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorUpdateAtIndexCall { + quorumNumber, + operatorIndex, + arrayIndex, + }) + } + ///Creates a new call builder for the [`getQuorumUpdateAtIndex`] function. + pub fn getQuorumUpdateAtIndex( + &self, + quorumNumber: u8, + quorumIndex: u32, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getQuorumUpdateAtIndexCall { + quorumNumber, + quorumIndex, + }) + } + ///Creates a new call builder for the [`initializeQuorum`] function. + pub fn initializeQuorum( + &self, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initializeQuorumCall { quorumNumber }) + } + ///Creates a new call builder for the [`registerOperator`] function. + pub fn registerOperator( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumbers: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterOperatorCall { + operatorId, + quorumNumbers, + }) + } + ///Creates a new call builder for the [`registryCoordinator`] function. + pub fn registryCoordinator( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®istryCoordinatorCall {}) + } + ///Creates a new call builder for the [`totalOperatorsForQuorum`] function. + pub fn totalOperatorsForQuorum( + &self, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&totalOperatorsForQuorumCall { quorumNumber }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IIndexRegistryInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`QuorumIndexUpdate`] event. + pub fn QuorumIndexUpdate_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/indexregistry.rs b/crates/utils/src/indexregistry.rs new file mode 100644 index 00000000..35a8e3ac --- /dev/null +++ b/crates/utils/src/indexregistry.rs @@ -0,0 +1,3401 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library IIndexRegistry { + struct OperatorUpdate { uint32 fromBlockNumber; bytes32 operatorId; } + struct QuorumUpdate { uint32 fromBlockNumber; uint32 numOperators; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IIndexRegistry { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct OperatorUpdate { uint32 fromBlockNumber; bytes32 operatorId; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OperatorUpdate { + pub fromBlockNumber: u32, + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32, alloy::sol_types::private::FixedBytes<32>); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OperatorUpdate) -> Self { + (value.fromBlockNumber, value.operatorId) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OperatorUpdate { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + fromBlockNumber: tuple.0, + operatorId: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OperatorUpdate { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OperatorUpdate { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.fromBlockNumber), + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OperatorUpdate { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OperatorUpdate { + const NAME: &'static str = "OperatorUpdate"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OperatorUpdate(uint32 fromBlockNumber,bytes32 operatorId)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word( + &self.fromBlockNumber, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.operatorId) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OperatorUpdate { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.fromBlockNumber, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.operatorId, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.fromBlockNumber, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.operatorId, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct QuorumUpdate { uint32 fromBlockNumber; uint32 numOperators; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct QuorumUpdate { + pub fromBlockNumber: u32, + pub numOperators: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: QuorumUpdate) -> Self { + (value.fromBlockNumber, value.numOperators) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for QuorumUpdate { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + fromBlockNumber: tuple.0, + numOperators: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for QuorumUpdate { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for QuorumUpdate { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.fromBlockNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.numOperators, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for QuorumUpdate { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for QuorumUpdate { + const NAME: &'static str = "QuorumUpdate"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "QuorumUpdate(uint32 fromBlockNumber,uint32 numOperators)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word( + &self.fromBlockNumber, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.numOperators) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for QuorumUpdate { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.fromBlockNumber, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.numOperators, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.fromBlockNumber, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.numOperators, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IIndexRegistry`](self) contract instance. + + See the [wrapper's documentation](`IIndexRegistryInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IIndexRegistryInstance { + IIndexRegistryInstance::::new(address, provider) + } + /**A [`IIndexRegistry`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IIndexRegistry`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IIndexRegistryInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IIndexRegistryInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IIndexRegistryInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IIndexRegistryInstance + { + /**Creates a new wrapper around an on-chain [`IIndexRegistry`](self) contract instance. + + See the [wrapper's documentation](`IIndexRegistryInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IIndexRegistryInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IIndexRegistryInstance { + IIndexRegistryInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IIndexRegistryInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IIndexRegistryInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library IIndexRegistry { + struct OperatorUpdate { + uint32 fromBlockNumber; + bytes32 operatorId; + } + struct QuorumUpdate { + uint32 fromBlockNumber; + uint32 numOperators; + } +} + +interface IndexRegistry { + event Initialized(uint8 version); + event QuorumIndexUpdate(bytes32 indexed operatorId, uint8 quorumNumber, uint32 newOperatorIndex); + + constructor(address _registryCoordinator); + + function OPERATOR_DOES_NOT_EXIST_ID() external view returns (bytes32); + function currentOperatorIndex(uint8, bytes32) external view returns (uint32); + function deregisterOperator(bytes32 operatorId, bytes memory quorumNumbers) external; + function getLatestOperatorUpdate(uint8 quorumNumber, uint32 operatorIndex) external view returns (IIndexRegistry.OperatorUpdate memory); + function getLatestQuorumUpdate(uint8 quorumNumber) external view returns (IIndexRegistry.QuorumUpdate memory); + function getOperatorListAtBlockNumber(uint8 quorumNumber, uint32 blockNumber) external view returns (bytes32[] memory); + function getOperatorUpdateAtIndex(uint8 quorumNumber, uint32 operatorIndex, uint32 arrayIndex) external view returns (IIndexRegistry.OperatorUpdate memory); + function getQuorumUpdateAtIndex(uint8 quorumNumber, uint32 quorumIndex) external view returns (IIndexRegistry.QuorumUpdate memory); + function initializeQuorum(uint8 quorumNumber) external; + function registerOperator(bytes32 operatorId, bytes memory quorumNumbers) external returns (uint32[] memory); + function registryCoordinator() external view returns (address); + function totalOperatorsForQuorum(uint8 quorumNumber) external view returns (uint32); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_registryCoordinator", + "type": "address", + "internalType": "contract IRegistryCoordinator" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "OPERATOR_DOES_NOT_EXIST_ID", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "currentOperatorIndex", + "inputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "deregisterOperator", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getLatestOperatorUpdate", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "operatorIndex", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IIndexRegistry.OperatorUpdate", + "components": [ + { + "name": "fromBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getLatestQuorumUpdate", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IIndexRegistry.QuorumUpdate", + "components": [ + { + "name": "fromBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "numOperators", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorListAtBlockNumber", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32[]", + "internalType": "bytes32[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorUpdateAtIndex", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "operatorIndex", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "arrayIndex", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IIndexRegistry.OperatorUpdate", + "components": [ + { + "name": "fromBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getQuorumUpdateAtIndex", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "quorumIndex", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IIndexRegistry.QuorumUpdate", + "components": [ + { + "name": "fromBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "numOperators", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initializeQuorum", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registerOperator", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32[]", + "internalType": "uint32[]" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registryCoordinator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "totalOperatorsForQuorum", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "QuorumIndexUpdate", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "quorumNumber", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + }, + { + "name": "newOperatorIndex", + "type": "uint32", + "indexed": false, + "internalType": "uint32" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IndexRegistry { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60a060405234801561001057600080fd5b5060405161136138038061136183398101604081905261002f9161010c565b6001600160a01b0381166080528061004561004c565b505061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b60805161120361015e60003960008181610142015261085a01526112036000f3fe608060405234801561001057600080fd5b50600436106100b35760003560e01c8063890262451161007157806389026245146101b3578063a48bb0ac146101d3578063bd29b8cd146101e6578063caa3cd76146101f9578063e2e685801461020f578063f34109221461025557600080fd5b8062bff04d146100b857806312d1d74d146100e157806326d941f2146101155780632ed583e51461012a5780636d14a9871461013d5780638121906f1461017c575b600080fd5b6100cb6100c6366004610ebd565b610268565b6040516100d89190610f39565b60405180910390f35b6100f46100ef366004610fad565b61038a565b60408051825163ffffffff16815260209283015192810192909252016100d8565b610128610123366004610fe0565b6103d0565b005b6100f4610138366004610ffb565b6104b4565b6101647f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100d8565b61018f61018a366004610fe0565b61053a565b60408051825163ffffffff90811682526020938401511692810192909252016100d8565b6101c66101c1366004610fad565b610581565b6040516100d8919061103e565b61018f6101e1366004610fad565b6106eb565b6101286101f4366004610ebd565b610762565b610201600081565b6040519081526020016100d8565b61024061021d366004611076565b600160209081526000928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d8565b610240610263366004610fe0565b610830565b606061027261084f565b60008267ffffffffffffffff81111561028d5761028d6110a0565b6040519080825280602002602001820160405280156102b6578160200160208202803683370190505b50905060005b8381101561037f5760008585838181106102d8576102d86110b6565b919091013560f81c60008181526003602052604090205490925090508061031a5760405162461bcd60e51b8152600401610311906110cc565b60405180910390fd5b600061032583610905565b905061033c8984610337600185611137565b6109fe565b8085858151811061034f5761034f6110b6565b602002602001019063ffffffff16908163ffffffff168152505050505080806103779061115c565b9150506102bc565b5090505b9392505050565b60408051808201909152600080825260208201526103a88383610a88565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b6103d861084f565b60ff8116600090815260036020526040902054156104525760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b6064820152608401610311565b60ff166000908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091526000808252602082015260ff8416600090815260026020908152604080832063ffffffff80881685529252909120805490918416908110610501576105016110b6565b600091825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b604080518082019091526000808252602082015261055782610ae0565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b6060600061058f8484610b22565b905060008163ffffffff1667ffffffffffffffff8111156105b2576105b26110a0565b6040519080825280602002602001820160405280156105db578160200160208202803683370190505b50905060005b8263ffffffff168110156106e2576105fa868287610c57565b82828151811061060c5761060c6110b6565b6020026020010181815250506000801b82828151811061062e5761062e6110b6565b602002602001015114156106d05760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a401610311565b806106da8161115c565b9150506105e1565b50949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805463ffffffff8416908110610729576107296110b6565b60009182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b61076a61084f565b60005b8181101561082a576000838383818110610789576107896110b6565b919091013560f81c6000818152600360205260409020549092509050806107c25760405162461bcd60e51b8152600401610311906110cc565b60ff8216600090815260016020908152604080832089845290915281205463ffffffff16906107f084610d2e565b905060006107fe8583610d68565b9050808914610812576108128186856109fe565b505050505080806108229061115c565b91505061076d565b50505050565b600061083b82610ae0565b54600160201b900463ffffffff1692915050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109035760405162461bcd60e51b815260206004820152604d60248201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960448201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260648201526c3c9031b7b7b93234b730ba37b960991b608482015260a401610311565b565b60008061091183610ae0565b805490915060009061093190600160201b900463ffffffff166001611177565b905061093e848383610d92565b60ff841660009081526002602052604081209061095c600184611137565b63ffffffff1681526020810191909152604001600020546103835760ff8416600090815260026020526040812090610995600184611137565b63ffffffff908116825260208083019390935260409182016000908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b6000610a0a8383610a88565b9050610a1883838387610e32565b60ff83166000818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff8216600090815260026020908152604080832063ffffffff851684529091528120805490610ab960018361119f565b81548110610ac957610ac96110b6565b906000526020600020906002020191505092915050565b60ff81166000908152600360205260408120805490610b0060018361119f565b81548110610b1057610b106110b6565b90600052602060002001915050919050565b60ff8216600090815260036020526040812054805b8015610bca5760ff85166000908152600360205260408120610b5a60018461119f565b81548110610b6a57610b6a6110b6565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610bb7576020015192506103ca915050565b5080610bc2816111b6565b915050610b37565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a401610311565b60ff8316600090815260026020908152604080832063ffffffff86168452909152812054805b8015610d225760ff8616600090815260026020908152604080832063ffffffff891684529091528120610cb160018461119f565b81548110610cc157610cc16110b6565b600091825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610d0f57602001519250610383915050565b5080610d1a816111b6565b915050610c7d565b50600095945050505050565b600080610d3a83610ae0565b8054909150600090610d5b90600190600160201b900463ffffffff16611137565b9050610383848383610d92565b600080610d758484610a88565b6001810154909150610d8a8585846000610e32565b949350505050565b81544363ffffffff90811691161415610dc957815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83166000908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b81544363ffffffff90811691161415610e51576001820181905561082a565b60ff93909316600090815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b600080600060408486031215610ed257600080fd5b83359250602084013567ffffffffffffffff80821115610ef157600080fd5b818601915086601f830112610f0557600080fd5b813581811115610f1457600080fd5b876020828501011115610f2657600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f7757835163ffffffff1683529284019291840191600101610f55565b50909695505050505050565b803560ff81168114610f9457600080fd5b919050565b803563ffffffff81168114610f9457600080fd5b60008060408385031215610fc057600080fd5b610fc983610f83565b9150610fd760208401610f99565b90509250929050565b600060208284031215610ff257600080fd5b61038382610f83565b60008060006060848603121561101057600080fd5b61101984610f83565b925061102760208501610f99565b915061103560408501610f99565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f775783518352928401929184019160010161105a565b6000806040838503121561108957600080fd5b61109283610f83565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff8381169083168181101561115457611154611121565b039392505050565b600060001982141561117057611170611121565b5060010190565b600063ffffffff80831681851680830382111561119657611196611121565b01949350505050565b6000828210156111b1576111b1611121565b500390565b6000816111c5576111c5611121565b50600019019056fea26469706673582212200dd424985d748126cfecb042df9778973b6cadcf9f9b71b13b2ee065b53d26c464736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x13a8\x03\x80a\x13a\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01\x0CV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80R\x80a\0Ea\0LV[PPa\x01V[a\x01\x8Fa\x01\xE16`\x04a\x0F\xADV[a\x06\xEBV[a\x01(a\x01\xF46`\x04a\x0E\xBDV[a\x07bV[a\x02\x01`\0\x81V[`@Q\x90\x81R` \x01a\0\xD8V[a\x02@a\x02\x1D6`\x04a\x10vV[`\x01` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 Tc\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0\xD8V[a\x02@a\x02c6`\x04a\x0F\xE0V[a\x080V[``a\x02ra\x08OV[`\0\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02\x8DWa\x02\x8Da\x10\xA0V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02\xB6W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83\x81\x10\x15a\x03\x7FW`\0\x85\x85\x83\x81\x81\x10a\x02\xD8Wa\x02\xD8a\x10\xB6V[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x03` R`@\x90 T\x90\x92P\x90P\x80a\x03\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\x11\x90a\x10\xCCV[`@Q\x80\x91\x03\x90\xFD[`\0a\x03%\x83a\t\x05V[\x90Pa\x03<\x89\x84a\x037`\x01\x85a\x117V[a\t\xFEV[\x80\x85\x85\x81Q\x81\x10a\x03OWa\x03Oa\x10\xB6V[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPPPP\x80\x80a\x03w\x90a\x11\\V[\x91PPa\x02\xBCV[P\x90P[\x93\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x03\xA8\x83\x83a\n\x88V[`@\x80Q\x80\x82\x01\x90\x91R\x81Tc\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01T` \x82\x01R\x90P[\x92\x91PPV[a\x03\xD8a\x08OV[`\xFF\x81\x16`\0\x90\x81R`\x03` R`@\x90 T\x15a\x04RW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`1`$\x82\x01R\x7FIndexRegistry.createQuorum: quor`D\x82\x01Rpum already exists`x\x1B`d\x82\x01R`\x84\x01a\x03\x11V[`\xFF\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 \x81Q\x80\x83\x01\x90\x92Rc\xFF\xFF\xFF\xFFC\x81\x16\x83R\x82\x84\x01\x85\x81R\x82T`\x01\x81\x01\x84U\x92\x86R\x93\x90\x94 \x91Q\x91\x01\x80T\x92Q\x84\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x93\x16\x91\x90\x93\x16\x17\x17\x90UV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\xFF\x84\x16`\0\x90\x81R`\x02` \x90\x81R`@\x80\x83 c\xFF\xFF\xFF\xFF\x80\x88\x16\x85R\x92R\x90\x91 \x80T\x90\x91\x84\x16\x90\x81\x10a\x05\x01Wa\x05\x01a\x10\xB6V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q\x80\x82\x01\x90\x91R`\x02\x90\x92\x02\x01\x80Tc\xFF\xFF\xFF\xFF\x16\x82R`\x01\x01T\x91\x81\x01\x91\x90\x91R\x90P\x93\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x05W\x82a\n\xE0V[`@\x80Q\x80\x82\x01\x90\x91R\x90Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x90\x91\x04\x16` \x82\x01R\x92\x91PPV[```\0a\x05\x8F\x84\x84a\x0B\"V[\x90P`\0\x81c\xFF\xFF\xFF\xFF\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05\xB2Wa\x05\xB2a\x10\xA0V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xDBW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82c\xFF\xFF\xFF\xFF\x16\x81\x10\x15a\x06\xE2Wa\x05\xFA\x86\x82\x87a\x0CWV[\x82\x82\x81Q\x81\x10a\x06\x0CWa\x06\x0Ca\x10\xB6V[` \x02` \x01\x01\x81\x81RPP`\0\x80\x1B\x82\x82\x81Q\x81\x10a\x06.Wa\x06.a\x10\xB6V[` \x02` \x01\x01Q\x14\x15a\x06\xD0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`]`$\x82\x01R\x7FIndexRegistry.getOperatorListAtB`D\x82\x01R\x7FlockNumber: operator does not ex`d\x82\x01R\x7Fist at the given block number\0\0\0`\x84\x82\x01R`\xA4\x01a\x03\x11V[\x80a\x06\xDA\x81a\x11\\V[\x91PPa\x05\xE1V[P\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\xFF\x83\x16`\0\x90\x81R`\x03` R`@\x90 \x80Tc\xFF\xFF\xFF\xFF\x84\x16\x90\x81\x10a\x07)Wa\x07)a\x10\xB6V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q\x80\x82\x01\x90\x91R\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x90\x91\x04\x16\x91\x81\x01\x91\x90\x91R\x93\x92PPPV[a\x07ja\x08OV[`\0[\x81\x81\x10\x15a\x08*W`\0\x83\x83\x83\x81\x81\x10a\x07\x89Wa\x07\x89a\x10\xB6V[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x03` R`@\x90 T\x90\x92P\x90P\x80a\x07\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\x11\x90a\x10\xCCV[`\xFF\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x89\x84R\x90\x91R\x81 Tc\xFF\xFF\xFF\xFF\x16\x90a\x07\xF0\x84a\r.V[\x90P`\0a\x07\xFE\x85\x83a\rhV[\x90P\x80\x89\x14a\x08\x12Wa\x08\x12\x81\x86\x85a\t\xFEV[PPPPP\x80\x80a\x08\"\x90a\x11\\V[\x91PPa\x07mV[PPPPV[`\0a\x08;\x82a\n\xE0V[T`\x01` \x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x92\x91PPV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\t\x03W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`M`$\x82\x01R\x7FIndexRegistry.onlyRegistryCoordi`D\x82\x01R\x7Fnator: caller is not the registr`d\x82\x01Rl<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x99\x1B`\x84\x82\x01R`\xA4\x01a\x03\x11V[V[`\0\x80a\t\x11\x83a\n\xE0V[\x80T\x90\x91P`\0\x90a\t1\x90`\x01` \x1B\x90\x04c\xFF\xFF\xFF\xFF\x16`\x01a\x11wV[\x90Pa\t>\x84\x83\x83a\r\x92V[`\xFF\x84\x16`\0\x90\x81R`\x02` R`@\x81 \x90a\t\\`\x01\x84a\x117V[c\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x91\x90\x91R`@\x01`\0 Ta\x03\x83W`\xFF\x84\x16`\0\x90\x81R`\x02` R`@\x81 \x90a\t\x95`\x01\x84a\x117V[c\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x83\x01\x93\x90\x93R`@\x91\x82\x01`\0\x90\x81 \x83Q\x80\x85\x01\x90\x94RC\x83\x16\x84R\x83\x85\x01\x82\x81R\x81T`\x01\x80\x82\x01\x84U\x92\x84R\x95\x90\x92 \x93Q`\x02\x90\x95\x02\x90\x93\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16\x94\x90\x92\x16\x93\x90\x93\x17\x81U\x91Q\x91\x01U\x93\x92PPPV[`\0a\n\n\x83\x83a\n\x88V[\x90Pa\n\x18\x83\x83\x83\x87a\x0E2V[`\xFF\x83\x16`\0\x81\x81R`\x01` \x90\x81R`@\x80\x83 \x88\x84R\x82R\x91\x82\x90 \x80Tc\xFF\xFF\xFF\xFF\x19\x16c\xFF\xFF\xFF\xFF\x87\x16\x90\x81\x17\x90\x91U\x82Q\x93\x84R\x90\x83\x01R\x85\x91\x7Fn\xE1\xE4\xF4\x07_=\x06qv\x14\r4\xE8xt$M\xD2s)L\x05\xB2!\x813\xE4\x9A+\xA6\xF6\x91\x01`@Q\x80\x91\x03\x90\xA2PPPPV[`\xFF\x82\x16`\0\x90\x81R`\x02` \x90\x81R`@\x80\x83 c\xFF\xFF\xFF\xFF\x85\x16\x84R\x90\x91R\x81 \x80T\x90a\n\xB9`\x01\x83a\x11\x9FV[\x81T\x81\x10a\n\xC9Wa\n\xC9a\x10\xB6V[\x90`\0R` `\0 \x90`\x02\x02\x01\x91PP\x92\x91PPV[`\xFF\x81\x16`\0\x90\x81R`\x03` R`@\x81 \x80T\x90a\x0B\0`\x01\x83a\x11\x9FV[\x81T\x81\x10a\x0B\x10Wa\x0B\x10a\x10\xB6V[\x90`\0R` `\0 \x01\x91PP\x91\x90PV[`\xFF\x82\x16`\0\x90\x81R`\x03` R`@\x81 T\x80[\x80\x15a\x0B\xCAW`\xFF\x85\x16`\0\x90\x81R`\x03` R`@\x81 a\x0BZ`\x01\x84a\x11\x9FV[\x81T\x81\x10a\x0BjWa\x0Bja\x10\xB6V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q\x80\x82\x01\x90\x91R\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x80\x84R`\x01` \x1B\x90\x92\x04\x81\x16\x93\x83\x01\x93\x90\x93R\x90\x92P\x90\x86\x16\x10a\x0B\xB7W` \x01Q\x92Pa\x03\xCA\x91PPV[P\x80a\x0B\xC2\x81a\x11\xB6V[\x91PPa\x0B7V[P`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`U`$\x82\x01R\x7FIndexRegistry._operatorCountAtBl`D\x82\x01R\x7FockNumber: quorum did not exist `d\x82\x01Rt0\xBA\x103\xB4\xBB2\xB7\x10167\xB1\xB5\x907:\xB6\xB12\xB9`Y\x1B`\x84\x82\x01R`\xA4\x01a\x03\x11V[`\xFF\x83\x16`\0\x90\x81R`\x02` \x90\x81R`@\x80\x83 c\xFF\xFF\xFF\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a\r\"W`\xFF\x86\x16`\0\x90\x81R`\x02` \x90\x81R`@\x80\x83 c\xFF\xFF\xFF\xFF\x89\x16\x84R\x90\x91R\x81 a\x0C\xB1`\x01\x84a\x11\x9FV[\x81T\x81\x10a\x0C\xC1Wa\x0C\xC1a\x10\xB6V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q\x80\x82\x01\x90\x91R`\x02\x90\x92\x02\x01\x80Tc\xFF\xFF\xFF\xFF\x90\x81\x16\x80\x84R`\x01\x90\x92\x01T\x93\x83\x01\x93\x90\x93R\x90\x92P\x90\x86\x16\x10a\r\x0FW` \x01Q\x92Pa\x03\x83\x91PPV[P\x80a\r\x1A\x81a\x11\xB6V[\x91PPa\x0C}V[P`\0\x95\x94PPPPPV[`\0\x80a\r:\x83a\n\xE0V[\x80T\x90\x91P`\0\x90a\r[\x90`\x01\x90`\x01` \x1B\x90\x04c\xFF\xFF\xFF\xFF\x16a\x117V[\x90Pa\x03\x83\x84\x83\x83a\r\x92V[`\0\x80a\ru\x84\x84a\n\x88V[`\x01\x81\x01T\x90\x91Pa\r\x8A\x85\x85\x84`\0a\x0E2V[\x94\x93PPPPV[\x81TCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a\r\xC9W\x81Tc\xFF\xFF\xFF\xFF\x82\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\0\0\0\0\x19\x90\x91\x16\x17\x82UPPPV[`\xFF\x83\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 \x81Q\x80\x83\x01\x90\x92Rc\xFF\xFF\xFF\xFFC\x81\x16\x83R\x85\x81\x16\x83\x85\x01\x90\x81R\x82T`\x01\x81\x01\x84U\x92\x86R\x93\x90\x94 \x91Q\x91\x01\x80T\x92Q\x84\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x93\x16\x91\x90\x93\x16\x17\x17\x90UPPPV[\x81TCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a\x0EQW`\x01\x82\x01\x81\x90Ua\x08*V[`\xFF\x93\x90\x93\x16`\0\x90\x81R`\x02` \x81\x81R`@\x80\x84 c\xFF\xFF\xFF\xFF\x96\x87\x16\x85R\x82R\x80\x84 \x81Q\x80\x83\x01\x90\x92RC\x87\x16\x82R\x81\x83\x01\x97\x88R\x80T`\x01\x80\x82\x01\x83U\x91\x86R\x92\x90\x94 \x90Q\x91\x90\x92\x02\x90\x91\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16\x91\x90\x94\x16\x17\x83U\x92Q\x91\x90\x92\x01UPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x0E\xD2W`\0\x80\xFD[\x835\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0E\xF1W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x0F\x05W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x0F\x14W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x0F&W`\0\x80\xFD[` \x83\x01\x94P\x80\x93PPPP\x92P\x92P\x92V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0FwW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0FUV[P\x90\x96\x95PPPPPPV[\x805`\xFF\x81\x16\x81\x14a\x0F\x94W`\0\x80\xFD[\x91\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0F\x94W`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0F\xC0W`\0\x80\xFD[a\x0F\xC9\x83a\x0F\x83V[\x91Pa\x0F\xD7` \x84\x01a\x0F\x99V[\x90P\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x0F\xF2W`\0\x80\xFD[a\x03\x83\x82a\x0F\x83V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x10\x10W`\0\x80\xFD[a\x10\x19\x84a\x0F\x83V[\x92Pa\x10'` \x85\x01a\x0F\x99V[\x91Pa\x105`@\x85\x01a\x0F\x99V[\x90P\x92P\x92P\x92V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0FwW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x10ZV[`\0\x80`@\x83\x85\x03\x12\x15a\x10\x89W`\0\x80\xFD[a\x10\x92\x83a\x0F\x83V[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[` \x80\x82R`5\x90\x82\x01R\x7FIndexRegistry.registerOperator: `@\x82\x01Rt\x1C][\xDC\x9D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`Z\x1B``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0c\xFF\xFF\xFF\xFF\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15a\x11TWa\x11Ta\x11!V[\x03\x93\x92PPPV[`\0`\0\x19\x82\x14\x15a\x11pWa\x11pa\x11!V[P`\x01\x01\x90V[`\0c\xFF\xFF\xFF\xFF\x80\x83\x16\x81\x85\x16\x80\x83\x03\x82\x11\x15a\x11\x96Wa\x11\x96a\x11!V[\x01\x94\x93PPPPV[`\0\x82\x82\x10\x15a\x11\xB1Wa\x11\xB1a\x11!V[P\x03\x90V[`\0\x81a\x11\xC5Wa\x11\xC5a\x11!V[P`\0\x19\x01\x90V\xFE\xA2dipfsX\"\x12 \r\xD4$\x98]t\x81&\xCF\xEC\xB0B\xDF\x97x\x97;l\xAD\xCF\x9F\x9Bq\xB1;.\xE0e\xB5=&\xC4dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100b35760003560e01c8063890262451161007157806389026245146101b3578063a48bb0ac146101d3578063bd29b8cd146101e6578063caa3cd76146101f9578063e2e685801461020f578063f34109221461025557600080fd5b8062bff04d146100b857806312d1d74d146100e157806326d941f2146101155780632ed583e51461012a5780636d14a9871461013d5780638121906f1461017c575b600080fd5b6100cb6100c6366004610ebd565b610268565b6040516100d89190610f39565b60405180910390f35b6100f46100ef366004610fad565b61038a565b60408051825163ffffffff16815260209283015192810192909252016100d8565b610128610123366004610fe0565b6103d0565b005b6100f4610138366004610ffb565b6104b4565b6101647f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100d8565b61018f61018a366004610fe0565b61053a565b60408051825163ffffffff90811682526020938401511692810192909252016100d8565b6101c66101c1366004610fad565b610581565b6040516100d8919061103e565b61018f6101e1366004610fad565b6106eb565b6101286101f4366004610ebd565b610762565b610201600081565b6040519081526020016100d8565b61024061021d366004611076565b600160209081526000928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d8565b610240610263366004610fe0565b610830565b606061027261084f565b60008267ffffffffffffffff81111561028d5761028d6110a0565b6040519080825280602002602001820160405280156102b6578160200160208202803683370190505b50905060005b8381101561037f5760008585838181106102d8576102d86110b6565b919091013560f81c60008181526003602052604090205490925090508061031a5760405162461bcd60e51b8152600401610311906110cc565b60405180910390fd5b600061032583610905565b905061033c8984610337600185611137565b6109fe565b8085858151811061034f5761034f6110b6565b602002602001019063ffffffff16908163ffffffff168152505050505080806103779061115c565b9150506102bc565b5090505b9392505050565b60408051808201909152600080825260208201526103a88383610a88565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b6103d861084f565b60ff8116600090815260036020526040902054156104525760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b6064820152608401610311565b60ff166000908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091526000808252602082015260ff8416600090815260026020908152604080832063ffffffff80881685529252909120805490918416908110610501576105016110b6565b600091825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b604080518082019091526000808252602082015261055782610ae0565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b6060600061058f8484610b22565b905060008163ffffffff1667ffffffffffffffff8111156105b2576105b26110a0565b6040519080825280602002602001820160405280156105db578160200160208202803683370190505b50905060005b8263ffffffff168110156106e2576105fa868287610c57565b82828151811061060c5761060c6110b6565b6020026020010181815250506000801b82828151811061062e5761062e6110b6565b602002602001015114156106d05760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a401610311565b806106da8161115c565b9150506105e1565b50949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805463ffffffff8416908110610729576107296110b6565b60009182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b61076a61084f565b60005b8181101561082a576000838383818110610789576107896110b6565b919091013560f81c6000818152600360205260409020549092509050806107c25760405162461bcd60e51b8152600401610311906110cc565b60ff8216600090815260016020908152604080832089845290915281205463ffffffff16906107f084610d2e565b905060006107fe8583610d68565b9050808914610812576108128186856109fe565b505050505080806108229061115c565b91505061076d565b50505050565b600061083b82610ae0565b54600160201b900463ffffffff1692915050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109035760405162461bcd60e51b815260206004820152604d60248201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960448201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260648201526c3c9031b7b7b93234b730ba37b960991b608482015260a401610311565b565b60008061091183610ae0565b805490915060009061093190600160201b900463ffffffff166001611177565b905061093e848383610d92565b60ff841660009081526002602052604081209061095c600184611137565b63ffffffff1681526020810191909152604001600020546103835760ff8416600090815260026020526040812090610995600184611137565b63ffffffff908116825260208083019390935260409182016000908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b6000610a0a8383610a88565b9050610a1883838387610e32565b60ff83166000818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff8216600090815260026020908152604080832063ffffffff851684529091528120805490610ab960018361119f565b81548110610ac957610ac96110b6565b906000526020600020906002020191505092915050565b60ff81166000908152600360205260408120805490610b0060018361119f565b81548110610b1057610b106110b6565b90600052602060002001915050919050565b60ff8216600090815260036020526040812054805b8015610bca5760ff85166000908152600360205260408120610b5a60018461119f565b81548110610b6a57610b6a6110b6565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610bb7576020015192506103ca915050565b5080610bc2816111b6565b915050610b37565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a401610311565b60ff8316600090815260026020908152604080832063ffffffff86168452909152812054805b8015610d225760ff8616600090815260026020908152604080832063ffffffff891684529091528120610cb160018461119f565b81548110610cc157610cc16110b6565b600091825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610d0f57602001519250610383915050565b5080610d1a816111b6565b915050610c7d565b50600095945050505050565b600080610d3a83610ae0565b8054909150600090610d5b90600190600160201b900463ffffffff16611137565b9050610383848383610d92565b600080610d758484610a88565b6001810154909150610d8a8585846000610e32565b949350505050565b81544363ffffffff90811691161415610dc957815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83166000908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b81544363ffffffff90811691161415610e51576001820181905561082a565b60ff93909316600090815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b600080600060408486031215610ed257600080fd5b83359250602084013567ffffffffffffffff80821115610ef157600080fd5b818601915086601f830112610f0557600080fd5b813581811115610f1457600080fd5b876020828501011115610f2657600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f7757835163ffffffff1683529284019291840191600101610f55565b50909695505050505050565b803560ff81168114610f9457600080fd5b919050565b803563ffffffff81168114610f9457600080fd5b60008060408385031215610fc057600080fd5b610fc983610f83565b9150610fd760208401610f99565b90509250929050565b600060208284031215610ff257600080fd5b61038382610f83565b60008060006060848603121561101057600080fd5b61101984610f83565b925061102760208501610f99565b915061103560408501610f99565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f775783518352928401929184019160010161105a565b6000806040838503121561108957600080fd5b61109283610f83565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff8381169083168181101561115457611154611121565b039392505050565b600060001982141561117057611170611121565b5060010190565b600063ffffffff80831681851680830382111561119657611196611121565b01949350505050565b6000828210156111b1576111b1611121565b500390565b6000816111c5576111c5611121565b50600019019056fea26469706673582212200dd424985d748126cfecb042df9778973b6cadcf9f9b71b13b2ee065b53d26c464736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xB3W`\x005`\xE0\x1C\x80c\x89\x02bE\x11a\0qW\x80c\x89\x02bE\x14a\x01\xB3W\x80c\xA4\x8B\xB0\xAC\x14a\x01\xD3W\x80c\xBD)\xB8\xCD\x14a\x01\xE6W\x80c\xCA\xA3\xCDv\x14a\x01\xF9W\x80c\xE2\xE6\x85\x80\x14a\x02\x0FW\x80c\xF3A\t\"\x14a\x02UW`\0\x80\xFD[\x80b\xBF\xF0M\x14a\0\xB8W\x80c\x12\xD1\xD7M\x14a\0\xE1W\x80c&\xD9A\xF2\x14a\x01\x15W\x80c.\xD5\x83\xE5\x14a\x01*W\x80cm\x14\xA9\x87\x14a\x01=W\x80c\x81!\x90o\x14a\x01|W[`\0\x80\xFD[a\0\xCBa\0\xC66`\x04a\x0E\xBDV[a\x02hV[`@Qa\0\xD8\x91\x90a\x0F9V[`@Q\x80\x91\x03\x90\xF3[a\0\xF4a\0\xEF6`\x04a\x0F\xADV[a\x03\x8AV[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x16\x81R` \x92\x83\x01Q\x92\x81\x01\x92\x90\x92R\x01a\0\xD8V[a\x01(a\x01#6`\x04a\x0F\xE0V[a\x03\xD0V[\0[a\0\xF4a\x0186`\x04a\x0F\xFBV[a\x04\xB4V[a\x01d\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xD8V[a\x01\x8Fa\x01\x8A6`\x04a\x0F\xE0V[a\x05:V[`@\x80Q\x82Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01a\0\xD8V[a\x01\xC6a\x01\xC16`\x04a\x0F\xADV[a\x05\x81V[`@Qa\0\xD8\x91\x90a\x10>V[a\x01\x8Fa\x01\xE16`\x04a\x0F\xADV[a\x06\xEBV[a\x01(a\x01\xF46`\x04a\x0E\xBDV[a\x07bV[a\x02\x01`\0\x81V[`@Q\x90\x81R` \x01a\0\xD8V[a\x02@a\x02\x1D6`\x04a\x10vV[`\x01` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 Tc\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0\xD8V[a\x02@a\x02c6`\x04a\x0F\xE0V[a\x080V[``a\x02ra\x08OV[`\0\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02\x8DWa\x02\x8Da\x10\xA0V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02\xB6W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83\x81\x10\x15a\x03\x7FW`\0\x85\x85\x83\x81\x81\x10a\x02\xD8Wa\x02\xD8a\x10\xB6V[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x03` R`@\x90 T\x90\x92P\x90P\x80a\x03\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\x11\x90a\x10\xCCV[`@Q\x80\x91\x03\x90\xFD[`\0a\x03%\x83a\t\x05V[\x90Pa\x03<\x89\x84a\x037`\x01\x85a\x117V[a\t\xFEV[\x80\x85\x85\x81Q\x81\x10a\x03OWa\x03Oa\x10\xB6V[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPPPP\x80\x80a\x03w\x90a\x11\\V[\x91PPa\x02\xBCV[P\x90P[\x93\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x03\xA8\x83\x83a\n\x88V[`@\x80Q\x80\x82\x01\x90\x91R\x81Tc\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01T` \x82\x01R\x90P[\x92\x91PPV[a\x03\xD8a\x08OV[`\xFF\x81\x16`\0\x90\x81R`\x03` R`@\x90 T\x15a\x04RW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`1`$\x82\x01R\x7FIndexRegistry.createQuorum: quor`D\x82\x01Rpum already exists`x\x1B`d\x82\x01R`\x84\x01a\x03\x11V[`\xFF\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 \x81Q\x80\x83\x01\x90\x92Rc\xFF\xFF\xFF\xFFC\x81\x16\x83R\x82\x84\x01\x85\x81R\x82T`\x01\x81\x01\x84U\x92\x86R\x93\x90\x94 \x91Q\x91\x01\x80T\x92Q\x84\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x93\x16\x91\x90\x93\x16\x17\x17\x90UV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\xFF\x84\x16`\0\x90\x81R`\x02` \x90\x81R`@\x80\x83 c\xFF\xFF\xFF\xFF\x80\x88\x16\x85R\x92R\x90\x91 \x80T\x90\x91\x84\x16\x90\x81\x10a\x05\x01Wa\x05\x01a\x10\xB6V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q\x80\x82\x01\x90\x91R`\x02\x90\x92\x02\x01\x80Tc\xFF\xFF\xFF\xFF\x16\x82R`\x01\x01T\x91\x81\x01\x91\x90\x91R\x90P\x93\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x05W\x82a\n\xE0V[`@\x80Q\x80\x82\x01\x90\x91R\x90Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x90\x91\x04\x16` \x82\x01R\x92\x91PPV[```\0a\x05\x8F\x84\x84a\x0B\"V[\x90P`\0\x81c\xFF\xFF\xFF\xFF\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05\xB2Wa\x05\xB2a\x10\xA0V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xDBW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82c\xFF\xFF\xFF\xFF\x16\x81\x10\x15a\x06\xE2Wa\x05\xFA\x86\x82\x87a\x0CWV[\x82\x82\x81Q\x81\x10a\x06\x0CWa\x06\x0Ca\x10\xB6V[` \x02` \x01\x01\x81\x81RPP`\0\x80\x1B\x82\x82\x81Q\x81\x10a\x06.Wa\x06.a\x10\xB6V[` \x02` \x01\x01Q\x14\x15a\x06\xD0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`]`$\x82\x01R\x7FIndexRegistry.getOperatorListAtB`D\x82\x01R\x7FlockNumber: operator does not ex`d\x82\x01R\x7Fist at the given block number\0\0\0`\x84\x82\x01R`\xA4\x01a\x03\x11V[\x80a\x06\xDA\x81a\x11\\V[\x91PPa\x05\xE1V[P\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\xFF\x83\x16`\0\x90\x81R`\x03` R`@\x90 \x80Tc\xFF\xFF\xFF\xFF\x84\x16\x90\x81\x10a\x07)Wa\x07)a\x10\xB6V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q\x80\x82\x01\x90\x91R\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x90\x91\x04\x16\x91\x81\x01\x91\x90\x91R\x93\x92PPPV[a\x07ja\x08OV[`\0[\x81\x81\x10\x15a\x08*W`\0\x83\x83\x83\x81\x81\x10a\x07\x89Wa\x07\x89a\x10\xB6V[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x03` R`@\x90 T\x90\x92P\x90P\x80a\x07\xC2W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\x11\x90a\x10\xCCV[`\xFF\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x89\x84R\x90\x91R\x81 Tc\xFF\xFF\xFF\xFF\x16\x90a\x07\xF0\x84a\r.V[\x90P`\0a\x07\xFE\x85\x83a\rhV[\x90P\x80\x89\x14a\x08\x12Wa\x08\x12\x81\x86\x85a\t\xFEV[PPPPP\x80\x80a\x08\"\x90a\x11\\V[\x91PPa\x07mV[PPPPV[`\0a\x08;\x82a\n\xE0V[T`\x01` \x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x92\x91PPV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\t\x03W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`M`$\x82\x01R\x7FIndexRegistry.onlyRegistryCoordi`D\x82\x01R\x7Fnator: caller is not the registr`d\x82\x01Rl<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`\x99\x1B`\x84\x82\x01R`\xA4\x01a\x03\x11V[V[`\0\x80a\t\x11\x83a\n\xE0V[\x80T\x90\x91P`\0\x90a\t1\x90`\x01` \x1B\x90\x04c\xFF\xFF\xFF\xFF\x16`\x01a\x11wV[\x90Pa\t>\x84\x83\x83a\r\x92V[`\xFF\x84\x16`\0\x90\x81R`\x02` R`@\x81 \x90a\t\\`\x01\x84a\x117V[c\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x91\x90\x91R`@\x01`\0 Ta\x03\x83W`\xFF\x84\x16`\0\x90\x81R`\x02` R`@\x81 \x90a\t\x95`\x01\x84a\x117V[c\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x83\x01\x93\x90\x93R`@\x91\x82\x01`\0\x90\x81 \x83Q\x80\x85\x01\x90\x94RC\x83\x16\x84R\x83\x85\x01\x82\x81R\x81T`\x01\x80\x82\x01\x84U\x92\x84R\x95\x90\x92 \x93Q`\x02\x90\x95\x02\x90\x93\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16\x94\x90\x92\x16\x93\x90\x93\x17\x81U\x91Q\x91\x01U\x93\x92PPPV[`\0a\n\n\x83\x83a\n\x88V[\x90Pa\n\x18\x83\x83\x83\x87a\x0E2V[`\xFF\x83\x16`\0\x81\x81R`\x01` \x90\x81R`@\x80\x83 \x88\x84R\x82R\x91\x82\x90 \x80Tc\xFF\xFF\xFF\xFF\x19\x16c\xFF\xFF\xFF\xFF\x87\x16\x90\x81\x17\x90\x91U\x82Q\x93\x84R\x90\x83\x01R\x85\x91\x7Fn\xE1\xE4\xF4\x07_=\x06qv\x14\r4\xE8xt$M\xD2s)L\x05\xB2!\x813\xE4\x9A+\xA6\xF6\x91\x01`@Q\x80\x91\x03\x90\xA2PPPPV[`\xFF\x82\x16`\0\x90\x81R`\x02` \x90\x81R`@\x80\x83 c\xFF\xFF\xFF\xFF\x85\x16\x84R\x90\x91R\x81 \x80T\x90a\n\xB9`\x01\x83a\x11\x9FV[\x81T\x81\x10a\n\xC9Wa\n\xC9a\x10\xB6V[\x90`\0R` `\0 \x90`\x02\x02\x01\x91PP\x92\x91PPV[`\xFF\x81\x16`\0\x90\x81R`\x03` R`@\x81 \x80T\x90a\x0B\0`\x01\x83a\x11\x9FV[\x81T\x81\x10a\x0B\x10Wa\x0B\x10a\x10\xB6V[\x90`\0R` `\0 \x01\x91PP\x91\x90PV[`\xFF\x82\x16`\0\x90\x81R`\x03` R`@\x81 T\x80[\x80\x15a\x0B\xCAW`\xFF\x85\x16`\0\x90\x81R`\x03` R`@\x81 a\x0BZ`\x01\x84a\x11\x9FV[\x81T\x81\x10a\x0BjWa\x0Bja\x10\xB6V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q\x80\x82\x01\x90\x91R\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x80\x84R`\x01` \x1B\x90\x92\x04\x81\x16\x93\x83\x01\x93\x90\x93R\x90\x92P\x90\x86\x16\x10a\x0B\xB7W` \x01Q\x92Pa\x03\xCA\x91PPV[P\x80a\x0B\xC2\x81a\x11\xB6V[\x91PPa\x0B7V[P`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`U`$\x82\x01R\x7FIndexRegistry._operatorCountAtBl`D\x82\x01R\x7FockNumber: quorum did not exist `d\x82\x01Rt0\xBA\x103\xB4\xBB2\xB7\x10167\xB1\xB5\x907:\xB6\xB12\xB9`Y\x1B`\x84\x82\x01R`\xA4\x01a\x03\x11V[`\xFF\x83\x16`\0\x90\x81R`\x02` \x90\x81R`@\x80\x83 c\xFF\xFF\xFF\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a\r\"W`\xFF\x86\x16`\0\x90\x81R`\x02` \x90\x81R`@\x80\x83 c\xFF\xFF\xFF\xFF\x89\x16\x84R\x90\x91R\x81 a\x0C\xB1`\x01\x84a\x11\x9FV[\x81T\x81\x10a\x0C\xC1Wa\x0C\xC1a\x10\xB6V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q\x80\x82\x01\x90\x91R`\x02\x90\x92\x02\x01\x80Tc\xFF\xFF\xFF\xFF\x90\x81\x16\x80\x84R`\x01\x90\x92\x01T\x93\x83\x01\x93\x90\x93R\x90\x92P\x90\x86\x16\x10a\r\x0FW` \x01Q\x92Pa\x03\x83\x91PPV[P\x80a\r\x1A\x81a\x11\xB6V[\x91PPa\x0C}V[P`\0\x95\x94PPPPPV[`\0\x80a\r:\x83a\n\xE0V[\x80T\x90\x91P`\0\x90a\r[\x90`\x01\x90`\x01` \x1B\x90\x04c\xFF\xFF\xFF\xFF\x16a\x117V[\x90Pa\x03\x83\x84\x83\x83a\r\x92V[`\0\x80a\ru\x84\x84a\n\x88V[`\x01\x81\x01T\x90\x91Pa\r\x8A\x85\x85\x84`\0a\x0E2V[\x94\x93PPPPV[\x81TCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a\r\xC9W\x81Tc\xFF\xFF\xFF\xFF\x82\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\0\0\0\0\x19\x90\x91\x16\x17\x82UPPPV[`\xFF\x83\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 \x81Q\x80\x83\x01\x90\x92Rc\xFF\xFF\xFF\xFFC\x81\x16\x83R\x85\x81\x16\x83\x85\x01\x90\x81R\x82T`\x01\x81\x01\x84U\x92\x86R\x93\x90\x94 \x91Q\x91\x01\x80T\x92Q\x84\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x93\x16\x91\x90\x93\x16\x17\x17\x90UPPPV[\x81TCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a\x0EQW`\x01\x82\x01\x81\x90Ua\x08*V[`\xFF\x93\x90\x93\x16`\0\x90\x81R`\x02` \x81\x81R`@\x80\x84 c\xFF\xFF\xFF\xFF\x96\x87\x16\x85R\x82R\x80\x84 \x81Q\x80\x83\x01\x90\x92RC\x87\x16\x82R\x81\x83\x01\x97\x88R\x80T`\x01\x80\x82\x01\x83U\x91\x86R\x92\x90\x94 \x90Q\x91\x90\x92\x02\x90\x91\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16\x91\x90\x94\x16\x17\x83U\x92Q\x91\x90\x92\x01UPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x0E\xD2W`\0\x80\xFD[\x835\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0E\xF1W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x0F\x05W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x0F\x14W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x0F&W`\0\x80\xFD[` \x83\x01\x94P\x80\x93PPPP\x92P\x92P\x92V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0FwW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0FUV[P\x90\x96\x95PPPPPPV[\x805`\xFF\x81\x16\x81\x14a\x0F\x94W`\0\x80\xFD[\x91\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0F\x94W`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0F\xC0W`\0\x80\xFD[a\x0F\xC9\x83a\x0F\x83V[\x91Pa\x0F\xD7` \x84\x01a\x0F\x99V[\x90P\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x0F\xF2W`\0\x80\xFD[a\x03\x83\x82a\x0F\x83V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x10\x10W`\0\x80\xFD[a\x10\x19\x84a\x0F\x83V[\x92Pa\x10'` \x85\x01a\x0F\x99V[\x91Pa\x105`@\x85\x01a\x0F\x99V[\x90P\x92P\x92P\x92V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0FwW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x10ZV[`\0\x80`@\x83\x85\x03\x12\x15a\x10\x89W`\0\x80\xFD[a\x10\x92\x83a\x0F\x83V[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[` \x80\x82R`5\x90\x82\x01R\x7FIndexRegistry.registerOperator: `@\x82\x01Rt\x1C][\xDC\x9D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`Z\x1B``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0c\xFF\xFF\xFF\xFF\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15a\x11TWa\x11Ta\x11!V[\x03\x93\x92PPPV[`\0`\0\x19\x82\x14\x15a\x11pWa\x11pa\x11!V[P`\x01\x01\x90V[`\0c\xFF\xFF\xFF\xFF\x80\x83\x16\x81\x85\x16\x80\x83\x03\x82\x11\x15a\x11\x96Wa\x11\x96a\x11!V[\x01\x94\x93PPPPV[`\0\x82\x82\x10\x15a\x11\xB1Wa\x11\xB1a\x11!V[P\x03\x90V[`\0\x81a\x11\xC5Wa\x11\xC5a\x11!V[P`\0\x19\x01\x90V\xFE\xA2dipfsX\"\x12 \r\xD4$\x98]t\x81&\xCF\xEC\xB0B\xDF\x97x\x97;l\xAD\xCF\x9F\x9Bq\xB1;.\xE0e\xB5=&\xC4dsolcC\0\x08\x0C\x003", + ); + /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`. + ```solidity + event Initialized(uint8 version); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Initialized { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "Initialized(uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, + 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, + 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { version: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.version, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Initialized { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Initialized> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Initialized) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `QuorumIndexUpdate(bytes32,uint8,uint32)` and selector `0x6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6`. + ```solidity + event QuorumIndexUpdate(bytes32 indexed operatorId, uint8 quorumNumber, uint32 newOperatorIndex); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct QuorumIndexUpdate { + #[allow(missing_docs)] + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub quorumNumber: u8, + #[allow(missing_docs)] + pub newOperatorIndex: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for QuorumIndexUpdate { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + const SIGNATURE: &'static str = "QuorumIndexUpdate(bytes32,uint8,uint32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 110u8, 225u8, 228u8, 244u8, 7u8, 95u8, 61u8, 6u8, 113u8, 118u8, 20u8, 13u8, + 52u8, 232u8, 120u8, 116u8, 36u8, 77u8, 210u8, 115u8, 41u8, 76u8, 5u8, 178u8, + 33u8, 129u8, 51u8, 228u8, 154u8, 43u8, 166u8, 246u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operatorId: topics.1, + quorumNumber: data.0, + newOperatorIndex: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.newOperatorIndex, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.operatorId.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.operatorId); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for QuorumIndexUpdate { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&QuorumIndexUpdate> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &QuorumIndexUpdate) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. + ```solidity + constructor(address _registryCoordinator); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _registryCoordinator: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value._registryCoordinator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _registryCoordinator: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._registryCoordinator, + ), + ) + } + } + }; + /**Function with signature `OPERATOR_DOES_NOT_EXIST_ID()` and selector `0xcaa3cd76`. + ```solidity + function OPERATOR_DOES_NOT_EXIST_ID() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OPERATOR_DOES_NOT_EXIST_IDCall {} + ///Container type for the return parameters of the [`OPERATOR_DOES_NOT_EXIST_ID()`](OPERATOR_DOES_NOT_EXIST_IDCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OPERATOR_DOES_NOT_EXIST_IDReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OPERATOR_DOES_NOT_EXIST_IDCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OPERATOR_DOES_NOT_EXIST_IDCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OPERATOR_DOES_NOT_EXIST_IDReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OPERATOR_DOES_NOT_EXIST_IDReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for OPERATOR_DOES_NOT_EXIST_IDCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = OPERATOR_DOES_NOT_EXIST_IDReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "OPERATOR_DOES_NOT_EXIST_ID()"; + const SELECTOR: [u8; 4] = [202u8, 163u8, 205u8, 118u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `currentOperatorIndex(uint8,bytes32)` and selector `0xe2e68580`. + ```solidity + function currentOperatorIndex(uint8, bytes32) external view returns (uint32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct currentOperatorIndexCall { + pub _0: u8, + pub _1: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`currentOperatorIndex(uint8,bytes32)`](currentOperatorIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct currentOperatorIndexReturn { + pub _0: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8, alloy::sol_types::private::FixedBytes<32>); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: currentOperatorIndexCall) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for currentOperatorIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: currentOperatorIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for currentOperatorIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for currentOperatorIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = currentOperatorIndexReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "currentOperatorIndex(uint8,bytes32)"; + const SELECTOR: [u8; 4] = [226u8, 230u8, 133u8, 128u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._0), + as alloy_sol_types::SolType>::tokenize(&self._1), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `deregisterOperator(bytes32,bytes)` and selector `0xbd29b8cd`. + ```solidity + function deregisterOperator(bytes32 operatorId, bytes memory quorumNumbers) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`deregisterOperator(bytes32,bytes)`](deregisterOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorCall) -> Self { + (value.operatorId, value.quorumNumbers) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + quorumNumbers: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for deregisterOperatorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = deregisterOperatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "deregisterOperator(bytes32,bytes)"; + const SELECTOR: [u8; 4] = [189u8, 41u8, 184u8, 205u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getLatestOperatorUpdate(uint8,uint32)` and selector `0x12d1d74d`. + ```solidity + function getLatestOperatorUpdate(uint8 quorumNumber, uint32 operatorIndex) external view returns (IIndexRegistry.OperatorUpdate memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLatestOperatorUpdateCall { + pub quorumNumber: u8, + pub operatorIndex: u32, + } + ///Container type for the return parameters of the [`getLatestOperatorUpdate(uint8,uint32)`](getLatestOperatorUpdateCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLatestOperatorUpdateReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLatestOperatorUpdateCall) -> Self { + (value.quorumNumber, value.operatorIndex) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLatestOperatorUpdateCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + operatorIndex: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IIndexRegistry::OperatorUpdate,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLatestOperatorUpdateReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLatestOperatorUpdateReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getLatestOperatorUpdateCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getLatestOperatorUpdateReturn; + type ReturnTuple<'a> = (IIndexRegistry::OperatorUpdate,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getLatestOperatorUpdate(uint8,uint32)"; + const SELECTOR: [u8; 4] = [18u8, 209u8, 215u8, 77u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.operatorIndex, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getLatestQuorumUpdate(uint8)` and selector `0x8121906f`. + ```solidity + function getLatestQuorumUpdate(uint8 quorumNumber) external view returns (IIndexRegistry.QuorumUpdate memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLatestQuorumUpdateCall { + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`getLatestQuorumUpdate(uint8)`](getLatestQuorumUpdateCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLatestQuorumUpdateReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLatestQuorumUpdateCall) -> Self { + (value.quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLatestQuorumUpdateCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IIndexRegistry::QuorumUpdate,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLatestQuorumUpdateReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLatestQuorumUpdateReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getLatestQuorumUpdateCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getLatestQuorumUpdateReturn; + type ReturnTuple<'a> = (IIndexRegistry::QuorumUpdate,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getLatestQuorumUpdate(uint8)"; + const SELECTOR: [u8; 4] = [129u8, 33u8, 144u8, 111u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorListAtBlockNumber(uint8,uint32)` and selector `0x89026245`. + ```solidity + function getOperatorListAtBlockNumber(uint8 quorumNumber, uint32 blockNumber) external view returns (bytes32[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorListAtBlockNumberCall { + pub quorumNumber: u8, + pub blockNumber: u32, + } + ///Container type for the return parameters of the [`getOperatorListAtBlockNumber(uint8,uint32)`](getOperatorListAtBlockNumberCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorListAtBlockNumberReturn { + pub _0: alloy::sol_types::private::Vec>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorListAtBlockNumberCall) -> Self { + (value.quorumNumber, value.blockNumber) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorListAtBlockNumberCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + blockNumber: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorListAtBlockNumberReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorListAtBlockNumberReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorListAtBlockNumberCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorListAtBlockNumberReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorListAtBlockNumber(uint8,uint32)"; + const SELECTOR: [u8; 4] = [137u8, 2u8, 98u8, 69u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.blockNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorUpdateAtIndex(uint8,uint32,uint32)` and selector `0x2ed583e5`. + ```solidity + function getOperatorUpdateAtIndex(uint8 quorumNumber, uint32 operatorIndex, uint32 arrayIndex) external view returns (IIndexRegistry.OperatorUpdate memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorUpdateAtIndexCall { + pub quorumNumber: u8, + pub operatorIndex: u32, + pub arrayIndex: u32, + } + ///Container type for the return parameters of the [`getOperatorUpdateAtIndex(uint8,uint32,uint32)`](getOperatorUpdateAtIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8, u32, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorUpdateAtIndexCall) -> Self { + (value.quorumNumber, value.operatorIndex, value.arrayIndex) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorUpdateAtIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + operatorIndex: tuple.1, + arrayIndex: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IIndexRegistry::OperatorUpdate,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorUpdateAtIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorUpdateAtIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorUpdateAtIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorUpdateAtIndexReturn; + type ReturnTuple<'a> = (IIndexRegistry::OperatorUpdate,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorUpdateAtIndex(uint8,uint32,uint32)"; + const SELECTOR: [u8; 4] = [46u8, 213u8, 131u8, 229u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.operatorIndex, + ), + as alloy_sol_types::SolType>::tokenize( + &self.arrayIndex, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getQuorumUpdateAtIndex(uint8,uint32)` and selector `0xa48bb0ac`. + ```solidity + function getQuorumUpdateAtIndex(uint8 quorumNumber, uint32 quorumIndex) external view returns (IIndexRegistry.QuorumUpdate memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumUpdateAtIndexCall { + pub quorumNumber: u8, + pub quorumIndex: u32, + } + ///Container type for the return parameters of the [`getQuorumUpdateAtIndex(uint8,uint32)`](getQuorumUpdateAtIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumUpdateAtIndexCall) -> Self { + (value.quorumNumber, value.quorumIndex) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumUpdateAtIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + quorumIndex: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IIndexRegistry::QuorumUpdate,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumUpdateAtIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumUpdateAtIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getQuorumUpdateAtIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getQuorumUpdateAtIndexReturn; + type ReturnTuple<'a> = (IIndexRegistry::QuorumUpdate,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getQuorumUpdateAtIndex(uint8,uint32)"; + const SELECTOR: [u8; 4] = [164u8, 139u8, 176u8, 172u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.quorumIndex, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `initializeQuorum(uint8)` and selector `0x26d941f2`. + ```solidity + function initializeQuorum(uint8 quorumNumber) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeQuorumCall { + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`initializeQuorum(uint8)`](initializeQuorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeQuorumReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeQuorumCall) -> Self { + (value.quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeQuorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeQuorumReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeQuorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for initializeQuorumCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = initializeQuorumReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "initializeQuorum(uint8)"; + const SELECTOR: [u8; 4] = [38u8, 217u8, 65u8, 242u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registerOperator(bytes32,bytes)` and selector `0x00bff04d`. + ```solidity + function registerOperator(bytes32 operatorId, bytes memory quorumNumbers) external returns (uint32[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`registerOperator(bytes32,bytes)`](registerOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorCall) -> Self { + (value.operatorId, value.quorumNumbers) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + quorumNumbers: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registerOperatorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registerOperatorReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registerOperator(bytes32,bytes)"; + const SELECTOR: [u8; 4] = [0u8, 191u8, 240u8, 77u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registryCoordinator()` and selector `0x6d14a987`. + ```solidity + function registryCoordinator() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registryCoordinatorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registryCoordinatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registryCoordinator()"; + const SELECTOR: [u8; 4] = [109u8, 20u8, 169u8, 135u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `totalOperatorsForQuorum(uint8)` and selector `0xf3410922`. + ```solidity + function totalOperatorsForQuorum(uint8 quorumNumber) external view returns (uint32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalOperatorsForQuorumCall { + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`totalOperatorsForQuorum(uint8)`](totalOperatorsForQuorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalOperatorsForQuorumReturn { + pub _0: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalOperatorsForQuorumCall) -> Self { + (value.quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalOperatorsForQuorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalOperatorsForQuorumReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalOperatorsForQuorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for totalOperatorsForQuorumCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = totalOperatorsForQuorumReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "totalOperatorsForQuorum(uint8)"; + const SELECTOR: [u8; 4] = [243u8, 65u8, 9u8, 34u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IndexRegistry`](self) function calls. + pub enum IndexRegistryCalls { + OPERATOR_DOES_NOT_EXIST_ID(OPERATOR_DOES_NOT_EXIST_IDCall), + currentOperatorIndex(currentOperatorIndexCall), + deregisterOperator(deregisterOperatorCall), + getLatestOperatorUpdate(getLatestOperatorUpdateCall), + getLatestQuorumUpdate(getLatestQuorumUpdateCall), + getOperatorListAtBlockNumber(getOperatorListAtBlockNumberCall), + getOperatorUpdateAtIndex(getOperatorUpdateAtIndexCall), + getQuorumUpdateAtIndex(getQuorumUpdateAtIndexCall), + initializeQuorum(initializeQuorumCall), + registerOperator(registerOperatorCall), + registryCoordinator(registryCoordinatorCall), + totalOperatorsForQuorum(totalOperatorsForQuorumCall), + } + #[automatically_derived] + impl IndexRegistryCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [0u8, 191u8, 240u8, 77u8], + [18u8, 209u8, 215u8, 77u8], + [38u8, 217u8, 65u8, 242u8], + [46u8, 213u8, 131u8, 229u8], + [109u8, 20u8, 169u8, 135u8], + [129u8, 33u8, 144u8, 111u8], + [137u8, 2u8, 98u8, 69u8], + [164u8, 139u8, 176u8, 172u8], + [189u8, 41u8, 184u8, 205u8], + [202u8, 163u8, 205u8, 118u8], + [226u8, 230u8, 133u8, 128u8], + [243u8, 65u8, 9u8, 34u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IndexRegistryCalls { + const NAME: &'static str = "IndexRegistryCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 12usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::OPERATOR_DOES_NOT_EXIST_ID(_) => { + ::SELECTOR + } + Self::currentOperatorIndex(_) => { + ::SELECTOR + } + Self::deregisterOperator(_) => { + ::SELECTOR + } + Self::getLatestOperatorUpdate(_) => { + ::SELECTOR + } + Self::getLatestQuorumUpdate(_) => { + ::SELECTOR + } + Self::getOperatorListAtBlockNumber(_) => { + ::SELECTOR + } + Self::getOperatorUpdateAtIndex(_) => { + ::SELECTOR + } + Self::getQuorumUpdateAtIndex(_) => { + ::SELECTOR + } + Self::initializeQuorum(_) => { + ::SELECTOR + } + Self::registerOperator(_) => { + ::SELECTOR + } + Self::registryCoordinator(_) => { + ::SELECTOR + } + Self::totalOperatorsForQuorum(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn registerOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IndexRegistryCalls::registerOperator) + } + registerOperator + }, + { + fn getLatestOperatorUpdate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IndexRegistryCalls::getLatestOperatorUpdate) + } + getLatestOperatorUpdate + }, + { + fn initializeQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IndexRegistryCalls::initializeQuorum) + } + initializeQuorum + }, + { + fn getOperatorUpdateAtIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IndexRegistryCalls::getOperatorUpdateAtIndex) + } + getOperatorUpdateAtIndex + }, + { + fn registryCoordinator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IndexRegistryCalls::registryCoordinator) + } + registryCoordinator + }, + { + fn getLatestQuorumUpdate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IndexRegistryCalls::getLatestQuorumUpdate) + } + getLatestQuorumUpdate + }, + { + fn getOperatorListAtBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IndexRegistryCalls::getOperatorListAtBlockNumber) + } + getOperatorListAtBlockNumber + }, + { + fn getQuorumUpdateAtIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IndexRegistryCalls::getQuorumUpdateAtIndex) + } + getQuorumUpdateAtIndex + }, + { + fn deregisterOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IndexRegistryCalls::deregisterOperator) + } + deregisterOperator + }, + { + fn OPERATOR_DOES_NOT_EXIST_ID( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IndexRegistryCalls::OPERATOR_DOES_NOT_EXIST_ID) + } + OPERATOR_DOES_NOT_EXIST_ID + }, + { + fn currentOperatorIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IndexRegistryCalls::currentOperatorIndex) + } + currentOperatorIndex + }, + { + fn totalOperatorsForQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IndexRegistryCalls::totalOperatorsForQuorum) + } + totalOperatorsForQuorum + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::OPERATOR_DOES_NOT_EXIST_ID(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::currentOperatorIndex(inner) => { + ::abi_encoded_size(inner) + } + Self::deregisterOperator(inner) => { + ::abi_encoded_size(inner) + } + Self::getLatestOperatorUpdate(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getLatestQuorumUpdate(inner) => { + ::abi_encoded_size(inner) + } + Self::getOperatorListAtBlockNumber(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorUpdateAtIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getQuorumUpdateAtIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::initializeQuorum(inner) => { + ::abi_encoded_size(inner) + } + Self::registerOperator(inner) => { + ::abi_encoded_size(inner) + } + Self::registryCoordinator(inner) => { + ::abi_encoded_size(inner) + } + Self::totalOperatorsForQuorum(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::OPERATOR_DOES_NOT_EXIST_ID(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::currentOperatorIndex(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::deregisterOperator(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getLatestOperatorUpdate(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getLatestQuorumUpdate(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getOperatorListAtBlockNumber(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getOperatorUpdateAtIndex(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getQuorumUpdateAtIndex(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::initializeQuorum(inner) => { + ::abi_encode_raw(inner, out) + } + Self::registerOperator(inner) => { + ::abi_encode_raw(inner, out) + } + Self::registryCoordinator(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::totalOperatorsForQuorum(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + } + } + } + ///Container for all the [`IndexRegistry`](self) events. + pub enum IndexRegistryEvents { + Initialized(Initialized), + QuorumIndexUpdate(QuorumIndexUpdate), + } + #[automatically_derived] + impl IndexRegistryEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 110u8, 225u8, 228u8, 244u8, 7u8, 95u8, 61u8, 6u8, 113u8, 118u8, 20u8, 13u8, 52u8, + 232u8, 120u8, 116u8, 36u8, 77u8, 210u8, 115u8, 41u8, 76u8, 5u8, 178u8, 33u8, 129u8, + 51u8, 228u8, 154u8, 43u8, 166u8, 246u8, + ], + [ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, 56u8, + 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, 96u8, + 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IndexRegistryEvents { + const NAME: &'static str = "IndexRegistryEvents"; + const COUNT: usize = 2usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::Initialized) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::QuorumIndexUpdate) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for IndexRegistryEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::QuorumIndexUpdate(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::QuorumIndexUpdate(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IndexRegistry`](self) contract instance. + + See the [wrapper's documentation](`IndexRegistryInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IndexRegistryInstance { + IndexRegistryInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _registryCoordinator: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future>> + { + IndexRegistryInstance::::deploy(provider, _registryCoordinator) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _registryCoordinator: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + IndexRegistryInstance::::deploy_builder(provider, _registryCoordinator) + } + /**A [`IndexRegistry`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IndexRegistry`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IndexRegistryInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IndexRegistryInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IndexRegistryInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IndexRegistryInstance + { + /**Creates a new wrapper around an on-chain [`IndexRegistry`](self) contract instance. + + See the [wrapper's documentation](`IndexRegistryInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _registryCoordinator: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, _registryCoordinator); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _registryCoordinator: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode(&constructorCall { + _registryCoordinator, + })[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IndexRegistryInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IndexRegistryInstance { + IndexRegistryInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IndexRegistryInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`OPERATOR_DOES_NOT_EXIST_ID`] function. + pub fn OPERATOR_DOES_NOT_EXIST_ID( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&OPERATOR_DOES_NOT_EXIST_IDCall {}) + } + ///Creates a new call builder for the [`currentOperatorIndex`] function. + pub fn currentOperatorIndex( + &self, + _0: u8, + _1: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(¤tOperatorIndexCall { _0, _1 }) + } + ///Creates a new call builder for the [`deregisterOperator`] function. + pub fn deregisterOperator( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumbers: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&deregisterOperatorCall { + operatorId, + quorumNumbers, + }) + } + ///Creates a new call builder for the [`getLatestOperatorUpdate`] function. + pub fn getLatestOperatorUpdate( + &self, + quorumNumber: u8, + operatorIndex: u32, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getLatestOperatorUpdateCall { + quorumNumber, + operatorIndex, + }) + } + ///Creates a new call builder for the [`getLatestQuorumUpdate`] function. + pub fn getLatestQuorumUpdate( + &self, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getLatestQuorumUpdateCall { quorumNumber }) + } + ///Creates a new call builder for the [`getOperatorListAtBlockNumber`] function. + pub fn getOperatorListAtBlockNumber( + &self, + quorumNumber: u8, + blockNumber: u32, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorListAtBlockNumberCall { + quorumNumber, + blockNumber, + }) + } + ///Creates a new call builder for the [`getOperatorUpdateAtIndex`] function. + pub fn getOperatorUpdateAtIndex( + &self, + quorumNumber: u8, + operatorIndex: u32, + arrayIndex: u32, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorUpdateAtIndexCall { + quorumNumber, + operatorIndex, + arrayIndex, + }) + } + ///Creates a new call builder for the [`getQuorumUpdateAtIndex`] function. + pub fn getQuorumUpdateAtIndex( + &self, + quorumNumber: u8, + quorumIndex: u32, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getQuorumUpdateAtIndexCall { + quorumNumber, + quorumIndex, + }) + } + ///Creates a new call builder for the [`initializeQuorum`] function. + pub fn initializeQuorum( + &self, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initializeQuorumCall { quorumNumber }) + } + ///Creates a new call builder for the [`registerOperator`] function. + pub fn registerOperator( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumbers: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterOperatorCall { + operatorId, + quorumNumbers, + }) + } + ///Creates a new call builder for the [`registryCoordinator`] function. + pub fn registryCoordinator( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®istryCoordinatorCall {}) + } + ///Creates a new call builder for the [`totalOperatorsForQuorum`] function. + pub fn totalOperatorsForQuorum( + &self, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&totalOperatorsForQuorumCall { quorumNumber }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IndexRegistryInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Initialized`] event. + pub fn Initialized_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`QuorumIndexUpdate`] event. + pub fn QuorumIndexUpdate_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/indexregistrystorage.rs b/crates/utils/src/indexregistrystorage.rs new file mode 100644 index 00000000..325f9de1 --- /dev/null +++ b/crates/utils/src/indexregistrystorage.rs @@ -0,0 +1,3314 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library IIndexRegistry { + struct OperatorUpdate { uint32 fromBlockNumber; bytes32 operatorId; } + struct QuorumUpdate { uint32 fromBlockNumber; uint32 numOperators; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IIndexRegistry { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct OperatorUpdate { uint32 fromBlockNumber; bytes32 operatorId; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OperatorUpdate { + pub fromBlockNumber: u32, + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32, alloy::sol_types::private::FixedBytes<32>); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OperatorUpdate) -> Self { + (value.fromBlockNumber, value.operatorId) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OperatorUpdate { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + fromBlockNumber: tuple.0, + operatorId: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OperatorUpdate { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OperatorUpdate { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.fromBlockNumber), + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OperatorUpdate { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OperatorUpdate { + const NAME: &'static str = "OperatorUpdate"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OperatorUpdate(uint32 fromBlockNumber,bytes32 operatorId)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word( + &self.fromBlockNumber, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.operatorId) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OperatorUpdate { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.fromBlockNumber, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.operatorId, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.fromBlockNumber, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.operatorId, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct QuorumUpdate { uint32 fromBlockNumber; uint32 numOperators; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct QuorumUpdate { + pub fromBlockNumber: u32, + pub numOperators: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: QuorumUpdate) -> Self { + (value.fromBlockNumber, value.numOperators) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for QuorumUpdate { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + fromBlockNumber: tuple.0, + numOperators: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for QuorumUpdate { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for QuorumUpdate { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.fromBlockNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.numOperators, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for QuorumUpdate { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for QuorumUpdate { + const NAME: &'static str = "QuorumUpdate"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "QuorumUpdate(uint32 fromBlockNumber,uint32 numOperators)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word( + &self.fromBlockNumber, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.numOperators) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for QuorumUpdate { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.fromBlockNumber, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.numOperators, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.fromBlockNumber, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.numOperators, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IIndexRegistry`](self) contract instance. + + See the [wrapper's documentation](`IIndexRegistryInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IIndexRegistryInstance { + IIndexRegistryInstance::::new(address, provider) + } + /**A [`IIndexRegistry`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IIndexRegistry`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IIndexRegistryInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IIndexRegistryInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IIndexRegistryInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IIndexRegistryInstance + { + /**Creates a new wrapper around an on-chain [`IIndexRegistry`](self) contract instance. + + See the [wrapper's documentation](`IIndexRegistryInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IIndexRegistryInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IIndexRegistryInstance { + IIndexRegistryInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IIndexRegistryInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IIndexRegistryInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library IIndexRegistry { + struct OperatorUpdate { + uint32 fromBlockNumber; + bytes32 operatorId; + } + struct QuorumUpdate { + uint32 fromBlockNumber; + uint32 numOperators; + } +} + +interface IndexRegistryStorage { + event Initialized(uint8 version); + event QuorumIndexUpdate(bytes32 indexed operatorId, uint8 quorumNumber, uint32 newOperatorIndex); + + function OPERATOR_DOES_NOT_EXIST_ID() external view returns (bytes32); + function currentOperatorIndex(uint8, bytes32) external view returns (uint32); + function deregisterOperator(bytes32 operatorId, bytes memory quorumNumbers) external; + function getLatestOperatorUpdate(uint8 quorumNumber, uint32 operatorIndex) external view returns (IIndexRegistry.OperatorUpdate memory); + function getLatestQuorumUpdate(uint8 quorumNumber) external view returns (IIndexRegistry.QuorumUpdate memory); + function getOperatorListAtBlockNumber(uint8 quorumNumber, uint32 blockNumber) external view returns (bytes32[] memory); + function getOperatorUpdateAtIndex(uint8 quorumNumber, uint32 operatorIndex, uint32 arrayIndex) external view returns (IIndexRegistry.OperatorUpdate memory); + function getQuorumUpdateAtIndex(uint8 quorumNumber, uint32 quorumIndex) external view returns (IIndexRegistry.QuorumUpdate memory); + function initializeQuorum(uint8 quorumNumber) external; + function registerOperator(bytes32 operatorId, bytes memory quorumNumbers) external returns (uint32[] memory); + function registryCoordinator() external view returns (address); + function totalOperatorsForQuorum(uint8 quorumNumber) external view returns (uint32); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "OPERATOR_DOES_NOT_EXIST_ID", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "currentOperatorIndex", + "inputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "deregisterOperator", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getLatestOperatorUpdate", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "operatorIndex", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IIndexRegistry.OperatorUpdate", + "components": [ + { + "name": "fromBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getLatestQuorumUpdate", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IIndexRegistry.QuorumUpdate", + "components": [ + { + "name": "fromBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "numOperators", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorListAtBlockNumber", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32[]", + "internalType": "bytes32[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorUpdateAtIndex", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "operatorIndex", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "arrayIndex", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IIndexRegistry.OperatorUpdate", + "components": [ + { + "name": "fromBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getQuorumUpdateAtIndex", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "quorumIndex", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IIndexRegistry.QuorumUpdate", + "components": [ + { + "name": "fromBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "numOperators", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initializeQuorum", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registerOperator", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32[]", + "internalType": "uint32[]" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registryCoordinator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "totalOperatorsForQuorum", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "QuorumIndexUpdate", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "quorumNumber", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + }, + { + "name": "newOperatorIndex", + "type": "uint32", + "indexed": false, + "internalType": "uint32" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IndexRegistryStorage { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`. + ```solidity + event Initialized(uint8 version); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Initialized { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "Initialized(uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, + 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, + 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { version: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.version, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Initialized { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Initialized> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Initialized) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `QuorumIndexUpdate(bytes32,uint8,uint32)` and selector `0x6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6`. + ```solidity + event QuorumIndexUpdate(bytes32 indexed operatorId, uint8 quorumNumber, uint32 newOperatorIndex); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct QuorumIndexUpdate { + #[allow(missing_docs)] + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub quorumNumber: u8, + #[allow(missing_docs)] + pub newOperatorIndex: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for QuorumIndexUpdate { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + const SIGNATURE: &'static str = "QuorumIndexUpdate(bytes32,uint8,uint32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 110u8, 225u8, 228u8, 244u8, 7u8, 95u8, 61u8, 6u8, 113u8, 118u8, 20u8, 13u8, + 52u8, 232u8, 120u8, 116u8, 36u8, 77u8, 210u8, 115u8, 41u8, 76u8, 5u8, 178u8, + 33u8, 129u8, 51u8, 228u8, 154u8, 43u8, 166u8, 246u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operatorId: topics.1, + quorumNumber: data.0, + newOperatorIndex: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.newOperatorIndex, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.operatorId.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.operatorId); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for QuorumIndexUpdate { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&QuorumIndexUpdate> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &QuorumIndexUpdate) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `OPERATOR_DOES_NOT_EXIST_ID()` and selector `0xcaa3cd76`. + ```solidity + function OPERATOR_DOES_NOT_EXIST_ID() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OPERATOR_DOES_NOT_EXIST_IDCall {} + ///Container type for the return parameters of the [`OPERATOR_DOES_NOT_EXIST_ID()`](OPERATOR_DOES_NOT_EXIST_IDCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OPERATOR_DOES_NOT_EXIST_IDReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OPERATOR_DOES_NOT_EXIST_IDCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OPERATOR_DOES_NOT_EXIST_IDCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OPERATOR_DOES_NOT_EXIST_IDReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OPERATOR_DOES_NOT_EXIST_IDReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for OPERATOR_DOES_NOT_EXIST_IDCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = OPERATOR_DOES_NOT_EXIST_IDReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "OPERATOR_DOES_NOT_EXIST_ID()"; + const SELECTOR: [u8; 4] = [202u8, 163u8, 205u8, 118u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `currentOperatorIndex(uint8,bytes32)` and selector `0xe2e68580`. + ```solidity + function currentOperatorIndex(uint8, bytes32) external view returns (uint32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct currentOperatorIndexCall { + pub _0: u8, + pub _1: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`currentOperatorIndex(uint8,bytes32)`](currentOperatorIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct currentOperatorIndexReturn { + pub _0: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8, alloy::sol_types::private::FixedBytes<32>); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: currentOperatorIndexCall) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for currentOperatorIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: currentOperatorIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for currentOperatorIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for currentOperatorIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = currentOperatorIndexReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "currentOperatorIndex(uint8,bytes32)"; + const SELECTOR: [u8; 4] = [226u8, 230u8, 133u8, 128u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._0), + as alloy_sol_types::SolType>::tokenize(&self._1), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `deregisterOperator(bytes32,bytes)` and selector `0xbd29b8cd`. + ```solidity + function deregisterOperator(bytes32 operatorId, bytes memory quorumNumbers) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`deregisterOperator(bytes32,bytes)`](deregisterOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorCall) -> Self { + (value.operatorId, value.quorumNumbers) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + quorumNumbers: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for deregisterOperatorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = deregisterOperatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "deregisterOperator(bytes32,bytes)"; + const SELECTOR: [u8; 4] = [189u8, 41u8, 184u8, 205u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getLatestOperatorUpdate(uint8,uint32)` and selector `0x12d1d74d`. + ```solidity + function getLatestOperatorUpdate(uint8 quorumNumber, uint32 operatorIndex) external view returns (IIndexRegistry.OperatorUpdate memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLatestOperatorUpdateCall { + pub quorumNumber: u8, + pub operatorIndex: u32, + } + ///Container type for the return parameters of the [`getLatestOperatorUpdate(uint8,uint32)`](getLatestOperatorUpdateCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLatestOperatorUpdateReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLatestOperatorUpdateCall) -> Self { + (value.quorumNumber, value.operatorIndex) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLatestOperatorUpdateCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + operatorIndex: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IIndexRegistry::OperatorUpdate,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLatestOperatorUpdateReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLatestOperatorUpdateReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getLatestOperatorUpdateCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getLatestOperatorUpdateReturn; + type ReturnTuple<'a> = (IIndexRegistry::OperatorUpdate,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getLatestOperatorUpdate(uint8,uint32)"; + const SELECTOR: [u8; 4] = [18u8, 209u8, 215u8, 77u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.operatorIndex, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getLatestQuorumUpdate(uint8)` and selector `0x8121906f`. + ```solidity + function getLatestQuorumUpdate(uint8 quorumNumber) external view returns (IIndexRegistry.QuorumUpdate memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLatestQuorumUpdateCall { + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`getLatestQuorumUpdate(uint8)`](getLatestQuorumUpdateCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLatestQuorumUpdateReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLatestQuorumUpdateCall) -> Self { + (value.quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLatestQuorumUpdateCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IIndexRegistry::QuorumUpdate,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLatestQuorumUpdateReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLatestQuorumUpdateReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getLatestQuorumUpdateCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getLatestQuorumUpdateReturn; + type ReturnTuple<'a> = (IIndexRegistry::QuorumUpdate,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getLatestQuorumUpdate(uint8)"; + const SELECTOR: [u8; 4] = [129u8, 33u8, 144u8, 111u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorListAtBlockNumber(uint8,uint32)` and selector `0x89026245`. + ```solidity + function getOperatorListAtBlockNumber(uint8 quorumNumber, uint32 blockNumber) external view returns (bytes32[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorListAtBlockNumberCall { + pub quorumNumber: u8, + pub blockNumber: u32, + } + ///Container type for the return parameters of the [`getOperatorListAtBlockNumber(uint8,uint32)`](getOperatorListAtBlockNumberCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorListAtBlockNumberReturn { + pub _0: alloy::sol_types::private::Vec>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorListAtBlockNumberCall) -> Self { + (value.quorumNumber, value.blockNumber) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorListAtBlockNumberCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + blockNumber: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorListAtBlockNumberReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorListAtBlockNumberReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorListAtBlockNumberCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorListAtBlockNumberReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorListAtBlockNumber(uint8,uint32)"; + const SELECTOR: [u8; 4] = [137u8, 2u8, 98u8, 69u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.blockNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorUpdateAtIndex(uint8,uint32,uint32)` and selector `0x2ed583e5`. + ```solidity + function getOperatorUpdateAtIndex(uint8 quorumNumber, uint32 operatorIndex, uint32 arrayIndex) external view returns (IIndexRegistry.OperatorUpdate memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorUpdateAtIndexCall { + pub quorumNumber: u8, + pub operatorIndex: u32, + pub arrayIndex: u32, + } + ///Container type for the return parameters of the [`getOperatorUpdateAtIndex(uint8,uint32,uint32)`](getOperatorUpdateAtIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8, u32, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorUpdateAtIndexCall) -> Self { + (value.quorumNumber, value.operatorIndex, value.arrayIndex) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorUpdateAtIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + operatorIndex: tuple.1, + arrayIndex: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IIndexRegistry::OperatorUpdate,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorUpdateAtIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorUpdateAtIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorUpdateAtIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorUpdateAtIndexReturn; + type ReturnTuple<'a> = (IIndexRegistry::OperatorUpdate,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorUpdateAtIndex(uint8,uint32,uint32)"; + const SELECTOR: [u8; 4] = [46u8, 213u8, 131u8, 229u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.operatorIndex, + ), + as alloy_sol_types::SolType>::tokenize( + &self.arrayIndex, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getQuorumUpdateAtIndex(uint8,uint32)` and selector `0xa48bb0ac`. + ```solidity + function getQuorumUpdateAtIndex(uint8 quorumNumber, uint32 quorumIndex) external view returns (IIndexRegistry.QuorumUpdate memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumUpdateAtIndexCall { + pub quorumNumber: u8, + pub quorumIndex: u32, + } + ///Container type for the return parameters of the [`getQuorumUpdateAtIndex(uint8,uint32)`](getQuorumUpdateAtIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumUpdateAtIndexCall) -> Self { + (value.quorumNumber, value.quorumIndex) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumUpdateAtIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + quorumIndex: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IIndexRegistry::QuorumUpdate,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumUpdateAtIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumUpdateAtIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getQuorumUpdateAtIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getQuorumUpdateAtIndexReturn; + type ReturnTuple<'a> = (IIndexRegistry::QuorumUpdate,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getQuorumUpdateAtIndex(uint8,uint32)"; + const SELECTOR: [u8; 4] = [164u8, 139u8, 176u8, 172u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.quorumIndex, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `initializeQuorum(uint8)` and selector `0x26d941f2`. + ```solidity + function initializeQuorum(uint8 quorumNumber) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeQuorumCall { + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`initializeQuorum(uint8)`](initializeQuorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeQuorumReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeQuorumCall) -> Self { + (value.quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeQuorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeQuorumReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeQuorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for initializeQuorumCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = initializeQuorumReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "initializeQuorum(uint8)"; + const SELECTOR: [u8; 4] = [38u8, 217u8, 65u8, 242u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registerOperator(bytes32,bytes)` and selector `0x00bff04d`. + ```solidity + function registerOperator(bytes32 operatorId, bytes memory quorumNumbers) external returns (uint32[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`registerOperator(bytes32,bytes)`](registerOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorCall) -> Self { + (value.operatorId, value.quorumNumbers) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + quorumNumbers: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registerOperatorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registerOperatorReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registerOperator(bytes32,bytes)"; + const SELECTOR: [u8; 4] = [0u8, 191u8, 240u8, 77u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registryCoordinator()` and selector `0x6d14a987`. + ```solidity + function registryCoordinator() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registryCoordinatorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registryCoordinatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registryCoordinator()"; + const SELECTOR: [u8; 4] = [109u8, 20u8, 169u8, 135u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `totalOperatorsForQuorum(uint8)` and selector `0xf3410922`. + ```solidity + function totalOperatorsForQuorum(uint8 quorumNumber) external view returns (uint32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalOperatorsForQuorumCall { + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`totalOperatorsForQuorum(uint8)`](totalOperatorsForQuorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalOperatorsForQuorumReturn { + pub _0: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalOperatorsForQuorumCall) -> Self { + (value.quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalOperatorsForQuorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalOperatorsForQuorumReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalOperatorsForQuorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for totalOperatorsForQuorumCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = totalOperatorsForQuorumReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "totalOperatorsForQuorum(uint8)"; + const SELECTOR: [u8; 4] = [243u8, 65u8, 9u8, 34u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IndexRegistryStorage`](self) function calls. + pub enum IndexRegistryStorageCalls { + OPERATOR_DOES_NOT_EXIST_ID(OPERATOR_DOES_NOT_EXIST_IDCall), + currentOperatorIndex(currentOperatorIndexCall), + deregisterOperator(deregisterOperatorCall), + getLatestOperatorUpdate(getLatestOperatorUpdateCall), + getLatestQuorumUpdate(getLatestQuorumUpdateCall), + getOperatorListAtBlockNumber(getOperatorListAtBlockNumberCall), + getOperatorUpdateAtIndex(getOperatorUpdateAtIndexCall), + getQuorumUpdateAtIndex(getQuorumUpdateAtIndexCall), + initializeQuorum(initializeQuorumCall), + registerOperator(registerOperatorCall), + registryCoordinator(registryCoordinatorCall), + totalOperatorsForQuorum(totalOperatorsForQuorumCall), + } + #[automatically_derived] + impl IndexRegistryStorageCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [0u8, 191u8, 240u8, 77u8], + [18u8, 209u8, 215u8, 77u8], + [38u8, 217u8, 65u8, 242u8], + [46u8, 213u8, 131u8, 229u8], + [109u8, 20u8, 169u8, 135u8], + [129u8, 33u8, 144u8, 111u8], + [137u8, 2u8, 98u8, 69u8], + [164u8, 139u8, 176u8, 172u8], + [189u8, 41u8, 184u8, 205u8], + [202u8, 163u8, 205u8, 118u8], + [226u8, 230u8, 133u8, 128u8], + [243u8, 65u8, 9u8, 34u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IndexRegistryStorageCalls { + const NAME: &'static str = "IndexRegistryStorageCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 12usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::OPERATOR_DOES_NOT_EXIST_ID(_) => { + ::SELECTOR + } + Self::currentOperatorIndex(_) => { + ::SELECTOR + } + Self::deregisterOperator(_) => { + ::SELECTOR + } + Self::getLatestOperatorUpdate(_) => { + ::SELECTOR + } + Self::getLatestQuorumUpdate(_) => { + ::SELECTOR + } + Self::getOperatorListAtBlockNumber(_) => { + ::SELECTOR + } + Self::getOperatorUpdateAtIndex(_) => { + ::SELECTOR + } + Self::getQuorumUpdateAtIndex(_) => { + ::SELECTOR + } + Self::initializeQuorum(_) => { + ::SELECTOR + } + Self::registerOperator(_) => { + ::SELECTOR + } + Self::registryCoordinator(_) => { + ::SELECTOR + } + Self::totalOperatorsForQuorum(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn registerOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IndexRegistryStorageCalls::registerOperator) + } + registerOperator + }, + { + fn getLatestOperatorUpdate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IndexRegistryStorageCalls::getLatestOperatorUpdate) + } + getLatestOperatorUpdate + }, + { + fn initializeQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IndexRegistryStorageCalls::initializeQuorum) + } + initializeQuorum + }, + { + fn getOperatorUpdateAtIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IndexRegistryStorageCalls::getOperatorUpdateAtIndex) + } + getOperatorUpdateAtIndex + }, + { + fn registryCoordinator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IndexRegistryStorageCalls::registryCoordinator) + } + registryCoordinator + }, + { + fn getLatestQuorumUpdate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IndexRegistryStorageCalls::getLatestQuorumUpdate) + } + getLatestQuorumUpdate + }, + { + fn getOperatorListAtBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IndexRegistryStorageCalls::getOperatorListAtBlockNumber) + } + getOperatorListAtBlockNumber + }, + { + fn getQuorumUpdateAtIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IndexRegistryStorageCalls::getQuorumUpdateAtIndex) + } + getQuorumUpdateAtIndex + }, + { + fn deregisterOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IndexRegistryStorageCalls::deregisterOperator) + } + deregisterOperator + }, + { + fn OPERATOR_DOES_NOT_EXIST_ID( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IndexRegistryStorageCalls::OPERATOR_DOES_NOT_EXIST_ID) + } + OPERATOR_DOES_NOT_EXIST_ID + }, + { + fn currentOperatorIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IndexRegistryStorageCalls::currentOperatorIndex) + } + currentOperatorIndex + }, + { + fn totalOperatorsForQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IndexRegistryStorageCalls::totalOperatorsForQuorum) + } + totalOperatorsForQuorum + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::OPERATOR_DOES_NOT_EXIST_ID(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::currentOperatorIndex(inner) => { + ::abi_encoded_size(inner) + } + Self::deregisterOperator(inner) => { + ::abi_encoded_size(inner) + } + Self::getLatestOperatorUpdate(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getLatestQuorumUpdate(inner) => { + ::abi_encoded_size(inner) + } + Self::getOperatorListAtBlockNumber(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorUpdateAtIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getQuorumUpdateAtIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::initializeQuorum(inner) => { + ::abi_encoded_size(inner) + } + Self::registerOperator(inner) => { + ::abi_encoded_size(inner) + } + Self::registryCoordinator(inner) => { + ::abi_encoded_size(inner) + } + Self::totalOperatorsForQuorum(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::OPERATOR_DOES_NOT_EXIST_ID(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::currentOperatorIndex(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::deregisterOperator(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getLatestOperatorUpdate(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getLatestQuorumUpdate(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getOperatorListAtBlockNumber(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getOperatorUpdateAtIndex(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getQuorumUpdateAtIndex(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::initializeQuorum(inner) => { + ::abi_encode_raw(inner, out) + } + Self::registerOperator(inner) => { + ::abi_encode_raw(inner, out) + } + Self::registryCoordinator(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::totalOperatorsForQuorum(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + } + } + } + ///Container for all the [`IndexRegistryStorage`](self) events. + pub enum IndexRegistryStorageEvents { + Initialized(Initialized), + QuorumIndexUpdate(QuorumIndexUpdate), + } + #[automatically_derived] + impl IndexRegistryStorageEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 110u8, 225u8, 228u8, 244u8, 7u8, 95u8, 61u8, 6u8, 113u8, 118u8, 20u8, 13u8, 52u8, + 232u8, 120u8, 116u8, 36u8, 77u8, 210u8, 115u8, 41u8, 76u8, 5u8, 178u8, 33u8, 129u8, + 51u8, 228u8, 154u8, 43u8, 166u8, 246u8, + ], + [ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, 56u8, + 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, 96u8, + 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IndexRegistryStorageEvents { + const NAME: &'static str = "IndexRegistryStorageEvents"; + const COUNT: usize = 2usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::Initialized) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::QuorumIndexUpdate) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for IndexRegistryStorageEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::QuorumIndexUpdate(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::QuorumIndexUpdate(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IndexRegistryStorage`](self) contract instance. + + See the [wrapper's documentation](`IndexRegistryStorageInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IndexRegistryStorageInstance { + IndexRegistryStorageInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + IndexRegistryStorageInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IndexRegistryStorageInstance::::deploy_builder(provider) + } + /**A [`IndexRegistryStorage`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IndexRegistryStorage`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IndexRegistryStorageInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IndexRegistryStorageInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IndexRegistryStorageInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IndexRegistryStorageInstance + { + /**Creates a new wrapper around an on-chain [`IndexRegistryStorage`](self) contract instance. + + See the [wrapper's documentation](`IndexRegistryStorageInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IndexRegistryStorageInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IndexRegistryStorageInstance { + IndexRegistryStorageInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IndexRegistryStorageInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`OPERATOR_DOES_NOT_EXIST_ID`] function. + pub fn OPERATOR_DOES_NOT_EXIST_ID( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&OPERATOR_DOES_NOT_EXIST_IDCall {}) + } + ///Creates a new call builder for the [`currentOperatorIndex`] function. + pub fn currentOperatorIndex( + &self, + _0: u8, + _1: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(¤tOperatorIndexCall { _0, _1 }) + } + ///Creates a new call builder for the [`deregisterOperator`] function. + pub fn deregisterOperator( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumbers: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&deregisterOperatorCall { + operatorId, + quorumNumbers, + }) + } + ///Creates a new call builder for the [`getLatestOperatorUpdate`] function. + pub fn getLatestOperatorUpdate( + &self, + quorumNumber: u8, + operatorIndex: u32, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getLatestOperatorUpdateCall { + quorumNumber, + operatorIndex, + }) + } + ///Creates a new call builder for the [`getLatestQuorumUpdate`] function. + pub fn getLatestQuorumUpdate( + &self, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getLatestQuorumUpdateCall { quorumNumber }) + } + ///Creates a new call builder for the [`getOperatorListAtBlockNumber`] function. + pub fn getOperatorListAtBlockNumber( + &self, + quorumNumber: u8, + blockNumber: u32, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorListAtBlockNumberCall { + quorumNumber, + blockNumber, + }) + } + ///Creates a new call builder for the [`getOperatorUpdateAtIndex`] function. + pub fn getOperatorUpdateAtIndex( + &self, + quorumNumber: u8, + operatorIndex: u32, + arrayIndex: u32, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorUpdateAtIndexCall { + quorumNumber, + operatorIndex, + arrayIndex, + }) + } + ///Creates a new call builder for the [`getQuorumUpdateAtIndex`] function. + pub fn getQuorumUpdateAtIndex( + &self, + quorumNumber: u8, + quorumIndex: u32, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getQuorumUpdateAtIndexCall { + quorumNumber, + quorumIndex, + }) + } + ///Creates a new call builder for the [`initializeQuorum`] function. + pub fn initializeQuorum( + &self, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initializeQuorumCall { quorumNumber }) + } + ///Creates a new call builder for the [`registerOperator`] function. + pub fn registerOperator( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumbers: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterOperatorCall { + operatorId, + quorumNumbers, + }) + } + ///Creates a new call builder for the [`registryCoordinator`] function. + pub fn registryCoordinator( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®istryCoordinatorCall {}) + } + ///Creates a new call builder for the [`totalOperatorsForQuorum`] function. + pub fn totalOperatorsForQuorum( + &self, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&totalOperatorsForQuorumCall { quorumNumber }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IndexRegistryStorageInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Initialized`] event. + pub fn Initialized_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`QuorumIndexUpdate`] event. + pub fn QuorumIndexUpdate_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/initializable.rs b/crates/utils/src/initializable.rs new file mode 100644 index 00000000..070a6d96 --- /dev/null +++ b/crates/utils/src/initializable.rs @@ -0,0 +1,390 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface Initializable { + event Initialized(uint8 version); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod Initializable { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`. + ```solidity + event Initialized(uint8 version); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Initialized { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "Initialized(uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, + 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, + 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { version: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.version, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Initialized { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Initialized> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Initialized) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + ///Container for all the [`Initializable`](self) events. + pub enum InitializableEvents { + Initialized(Initialized), + } + #[automatically_derived] + impl InitializableEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[[ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, 56u8, + 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, 96u8, 206u8, + 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ]]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for InitializableEvents { + const NAME: &'static str = "InitializableEvents"; + const COUNT: usize = 1usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::Initialized) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for InitializableEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Initializable`](self) contract instance. + + See the [wrapper's documentation](`InitializableInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> InitializableInstance { + InitializableInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + InitializableInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + InitializableInstance::::deploy_builder(provider) + } + /**A [`Initializable`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`Initializable`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct InitializableInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for InitializableInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("InitializableInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > InitializableInstance + { + /**Creates a new wrapper around an on-chain [`Initializable`](self) contract instance. + + See the [wrapper's documentation](`InitializableInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl InitializableInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> InitializableInstance { + InitializableInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > InitializableInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > InitializableInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Initialized`] event. + pub fn Initialized_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/ipausable.rs b/crates/utils/src/ipausable.rs new file mode 100644 index 00000000..695a16ee --- /dev/null +++ b/crates/utils/src/ipausable.rs @@ -0,0 +1,1782 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IPausable { + event Paused(address indexed account, uint256 newPausedStatus); + event PauserRegistrySet(address pauserRegistry, address newPauserRegistry); + event Unpaused(address indexed account, uint256 newPausedStatus); + + function pause(uint256 newPausedStatus) external; + function pauseAll() external; + function paused(uint8 index) external view returns (bool); + function paused() external view returns (uint256); + function pauserRegistry() external view returns (address); + function setPauserRegistry(address newPauserRegistry) external; + function unpause(uint256 newPausedStatus) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "pause", + "inputs": [ + { + "name": "newPausedStatus", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "pauseAll", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "paused", + "inputs": [ + { + "name": "index", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "paused", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pauserRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setPauserRegistry", + "inputs": [ + { + "name": "newPauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "unpause", + "inputs": [ + { + "name": "newPausedStatus", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Paused", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newPausedStatus", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "PauserRegistrySet", + "inputs": [ + { + "name": "pauserRegistry", + "type": "address", + "indexed": false, + "internalType": "contract IPauserRegistry" + }, + { + "name": "newPauserRegistry", + "type": "address", + "indexed": false, + "internalType": "contract IPauserRegistry" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Unpaused", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newPausedStatus", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IPausable { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Event with signature `Paused(address,uint256)` and selector `0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d`. + ```solidity + event Paused(address indexed account, uint256 newPausedStatus); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Paused { + #[allow(missing_docs)] + pub account: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Paused { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Paused(address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8, 188u8, + 152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8, 11u8, 182u8, + 224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + account: topics.1, + newPausedStatus: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.account.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.account, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Paused { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Paused> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Paused) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `PauserRegistrySet(address,address)` and selector `0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6`. + ```solidity + event PauserRegistrySet(address pauserRegistry, address newPauserRegistry); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct PauserRegistrySet { + #[allow(missing_docs)] + pub pauserRegistry: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newPauserRegistry: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for PauserRegistrySet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "PauserRegistrySet(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 110u8, 159u8, 205u8, 83u8, 152u8, 150u8, 252u8, 166u8, 14u8, 139u8, 15u8, 1u8, + 221u8, 88u8, 2u8, 51u8, 228u8, 138u8, 107u8, 15u8, 125u8, 240u8, 19u8, 184u8, + 155u8, 167u8, 245u8, 101u8, 134u8, 154u8, 205u8, 182u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + pauserRegistry: data.0, + newPauserRegistry: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.pauserRegistry, + ), + ::tokenize( + &self.newPauserRegistry, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for PauserRegistrySet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&PauserRegistrySet> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &PauserRegistrySet) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Unpaused(address,uint256)` and selector `0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c`. + ```solidity + event Unpaused(address indexed account, uint256 newPausedStatus); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Unpaused { + #[allow(missing_docs)] + pub account: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Unpaused { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Unpaused(address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8, 2u8, + 188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8, 228u8, 152u8, + 107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + account: topics.1, + newPausedStatus: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.account.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.account, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Unpaused { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Unpaused> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Unpaused) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `pause(uint256)` and selector `0x136439dd`. + ```solidity + function pause(uint256 newPausedStatus) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseCall { + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`pause(uint256)`](pauseCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseCall) -> Self { + (value.newPausedStatus,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newPausedStatus: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauseCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pauseReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pause(uint256)"; + const SELECTOR: [u8; 4] = [19u8, 100u8, 57u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pauseAll()` and selector `0x595c6a67`. + ```solidity + function pauseAll() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseAllCall {} + ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseAllReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseAllCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseAllCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseAllReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseAllReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauseAllCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pauseAllReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pauseAll()"; + const SELECTOR: [u8; 4] = [89u8, 92u8, 106u8, 103u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `paused(uint8)` and selector `0x5ac86ab7`. + ```solidity + function paused(uint8 index) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_0Call { + pub index: u8, + } + ///Container type for the return parameters of the [`paused(uint8)`](paused_0Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_0Return { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_0Call) -> Self { + (value.index,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_0Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { index: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_0Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_0Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for paused_0Call { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = paused_0Return; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "paused(uint8)"; + const SELECTOR: [u8; 4] = [90u8, 200u8, 106u8, 183u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `paused()` and selector `0x5c975abb`. + ```solidity + function paused() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_1Call {} + ///Container type for the return parameters of the [`paused()`](paused_1Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_1Return { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_1Call) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_1Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for paused_1Call { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = paused_1Return; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "paused()"; + const SELECTOR: [u8; 4] = [92u8, 151u8, 90u8, 187u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pauserRegistry()` and selector `0x886f1195`. + ```solidity + function pauserRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauserRegistryCall {} + ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauserRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauserRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauserRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauserRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauserRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauserRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pauserRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pauserRegistry()"; + const SELECTOR: [u8; 4] = [136u8, 111u8, 17u8, 149u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setPauserRegistry(address)` and selector `0x10d67a2f`. + ```solidity + function setPauserRegistry(address newPauserRegistry) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setPauserRegistryCall { + pub newPauserRegistry: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setPauserRegistry(address)`](setPauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setPauserRegistryReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setPauserRegistryCall) -> Self { + (value.newPauserRegistry,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setPauserRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newPauserRegistry: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setPauserRegistryReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setPauserRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setPauserRegistryCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setPauserRegistryReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setPauserRegistry(address)"; + const SELECTOR: [u8; 4] = [16u8, 214u8, 122u8, 47u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newPauserRegistry, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `unpause(uint256)` and selector `0xfabc1cbc`. + ```solidity + function unpause(uint256 newPausedStatus) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct unpauseCall { + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`unpause(uint256)`](unpauseCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct unpauseReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: unpauseCall) -> Self { + (value.newPausedStatus,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for unpauseCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newPausedStatus: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: unpauseReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for unpauseReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for unpauseCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = unpauseReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "unpause(uint256)"; + const SELECTOR: [u8; 4] = [250u8, 188u8, 28u8, 188u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IPausable`](self) function calls. + pub enum IPausableCalls { + pause(pauseCall), + pauseAll(pauseAllCall), + paused_0(paused_0Call), + paused_1(paused_1Call), + pauserRegistry(pauserRegistryCall), + setPauserRegistry(setPauserRegistryCall), + unpause(unpauseCall), + } + #[automatically_derived] + impl IPausableCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [16u8, 214u8, 122u8, 47u8], + [19u8, 100u8, 57u8, 221u8], + [89u8, 92u8, 106u8, 103u8], + [90u8, 200u8, 106u8, 183u8], + [92u8, 151u8, 90u8, 187u8], + [136u8, 111u8, 17u8, 149u8], + [250u8, 188u8, 28u8, 188u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IPausableCalls { + const NAME: &'static str = "IPausableCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 7usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::pause(_) => ::SELECTOR, + Self::pauseAll(_) => ::SELECTOR, + Self::paused_0(_) => ::SELECTOR, + Self::paused_1(_) => ::SELECTOR, + Self::pauserRegistry(_) => { + ::SELECTOR + } + Self::setPauserRegistry(_) => { + ::SELECTOR + } + Self::unpause(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn(&[u8], bool) -> alloy_sol_types::Result] = &[ + { + fn setPauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IPausableCalls::setPauserRegistry) + } + setPauserRegistry + }, + { + fn pause( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IPausableCalls::pause) + } + pause + }, + { + fn pauseAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IPausableCalls::pauseAll) + } + pauseAll + }, + { + fn paused_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IPausableCalls::paused_0) + } + paused_0 + }, + { + fn paused_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IPausableCalls::paused_1) + } + paused_1 + }, + { + fn pauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IPausableCalls::pauserRegistry) + } + pauserRegistry + }, + { + fn unpause( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IPausableCalls::unpause) + } + unpause + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::pause(inner) => { + ::abi_encoded_size(inner) + } + Self::pauseAll(inner) => { + ::abi_encoded_size(inner) + } + Self::paused_0(inner) => { + ::abi_encoded_size(inner) + } + Self::paused_1(inner) => { + ::abi_encoded_size(inner) + } + Self::pauserRegistry(inner) => { + ::abi_encoded_size(inner) + } + Self::setPauserRegistry(inner) => { + ::abi_encoded_size(inner) + } + Self::unpause(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::pause(inner) => { + ::abi_encode_raw(inner, out) + } + Self::pauseAll(inner) => { + ::abi_encode_raw(inner, out) + } + Self::paused_0(inner) => { + ::abi_encode_raw(inner, out) + } + Self::paused_1(inner) => { + ::abi_encode_raw(inner, out) + } + Self::pauserRegistry(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setPauserRegistry(inner) => { + ::abi_encode_raw(inner, out) + } + Self::unpause(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`IPausable`](self) events. + pub enum IPausableEvents { + Paused(Paused), + PauserRegistrySet(PauserRegistrySet), + Unpaused(Unpaused), + } + #[automatically_derived] + impl IPausableEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8, 2u8, + 188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8, 228u8, 152u8, + 107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8, + ], + [ + 110u8, 159u8, 205u8, 83u8, 152u8, 150u8, 252u8, 166u8, 14u8, 139u8, 15u8, 1u8, + 221u8, 88u8, 2u8, 51u8, 228u8, 138u8, 107u8, 15u8, 125u8, 240u8, 19u8, 184u8, + 155u8, 167u8, 245u8, 101u8, 134u8, 154u8, 205u8, 182u8, + ], + [ + 171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8, 188u8, + 152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8, 11u8, 182u8, + 224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IPausableEvents { + const NAME: &'static str = "IPausableEvents"; + const COUNT: usize = 3usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::Paused) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::PauserRegistrySet) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::Unpaused) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for IPausableEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Paused(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::PauserRegistrySet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Unpaused(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Paused(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::PauserRegistrySet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Unpaused(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IPausable`](self) contract instance. + + See the [wrapper's documentation](`IPausableInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IPausableInstance { + IPausableInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + IPausableInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IPausableInstance::::deploy_builder(provider) + } + /**A [`IPausable`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IPausable`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IPausableInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IPausableInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IPausableInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IPausableInstance + { + /**Creates a new wrapper around an on-chain [`IPausable`](self) contract instance. + + See the [wrapper's documentation](`IPausableInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IPausableInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IPausableInstance { + IPausableInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IPausableInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`pause`] function. + pub fn pause( + &self, + newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&pauseCall { newPausedStatus }) + } + ///Creates a new call builder for the [`pauseAll`] function. + pub fn pauseAll(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&pauseAllCall {}) + } + ///Creates a new call builder for the [`paused_0`] function. + pub fn paused_0( + &self, + index: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&paused_0Call { index }) + } + ///Creates a new call builder for the [`paused_1`] function. + pub fn paused_1(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&paused_1Call {}) + } + ///Creates a new call builder for the [`pauserRegistry`] function. + pub fn pauserRegistry( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&pauserRegistryCall {}) + } + ///Creates a new call builder for the [`setPauserRegistry`] function. + pub fn setPauserRegistry( + &self, + newPauserRegistry: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setPauserRegistryCall { newPauserRegistry }) + } + ///Creates a new call builder for the [`unpause`] function. + pub fn unpause( + &self, + newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&unpauseCall { newPausedStatus }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IPausableInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Paused`] event. + pub fn Paused_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`PauserRegistrySet`] event. + pub fn PauserRegistrySet_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Unpaused`] event. + pub fn Unpaused_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/ipauserregistry.rs b/crates/utils/src/ipauserregistry.rs new file mode 100644 index 00000000..a9247a9c --- /dev/null +++ b/crates/utils/src/ipauserregistry.rs @@ -0,0 +1,916 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IPauserRegistry { + event PauserStatusChanged(address pauser, bool canPause); + event UnpauserChanged(address previousUnpauser, address newUnpauser); + + function isPauser(address pauser) external view returns (bool); + function unpauser() external view returns (address); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "isPauser", + "inputs": [ + { + "name": "pauser", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "unpauser", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "PauserStatusChanged", + "inputs": [ + { + "name": "pauser", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "canPause", + "type": "bool", + "indexed": false, + "internalType": "bool" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "UnpauserChanged", + "inputs": [ + { + "name": "previousUnpauser", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newUnpauser", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IPauserRegistry { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Event with signature `PauserStatusChanged(address,bool)` and selector `0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152`. + ```solidity + event PauserStatusChanged(address pauser, bool canPause); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct PauserStatusChanged { + #[allow(missing_docs)] + pub pauser: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub canPause: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for PauserStatusChanged { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "PauserStatusChanged(address,bool)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 101u8, 211u8, 161u8, 253u8, 76u8, 19u8, 240u8, 92u8, 186u8, 22u8, 79u8, 128u8, + 208u8, 60u8, 233u8, 15u8, 180u8, 181u8, 226u8, 25u8, 70u8, 191u8, 195u8, 171u8, + 125u8, 189u8, 67u8, 76u8, 45u8, 11u8, 145u8, 82u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + pauser: data.0, + canPause: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.pauser, + ), + ::tokenize( + &self.canPause, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for PauserStatusChanged { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&PauserStatusChanged> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &PauserStatusChanged) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `UnpauserChanged(address,address)` and selector `0x06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892`. + ```solidity + event UnpauserChanged(address previousUnpauser, address newUnpauser); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct UnpauserChanged { + #[allow(missing_docs)] + pub previousUnpauser: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newUnpauser: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for UnpauserChanged { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "UnpauserChanged(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 6u8, 180u8, 22u8, 122u8, 37u8, 40u8, 136u8, 122u8, 30u8, 151u8, 163u8, 102u8, + 238u8, 254u8, 133u8, 73u8, 191u8, 191u8, 30u8, 163u8, 230u8, 172u8, 129u8, + 203u8, 37u8, 100u8, 169u8, 52u8, 210u8, 14u8, 136u8, 146u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + previousUnpauser: data.0, + newUnpauser: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.previousUnpauser, + ), + ::tokenize( + &self.newUnpauser, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for UnpauserChanged { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&UnpauserChanged> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &UnpauserChanged) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `isPauser(address)` and selector `0x46fbf68e`. + ```solidity + function isPauser(address pauser) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isPauserCall { + pub pauser: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`isPauser(address)`](isPauserCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isPauserReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isPauserCall) -> Self { + (value.pauser,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isPauserCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { pauser: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isPauserReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isPauserReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for isPauserCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = isPauserReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "isPauser(address)"; + const SELECTOR: [u8; 4] = [70u8, 251u8, 246u8, 142u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.pauser, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `unpauser()` and selector `0xeab66d7a`. + ```solidity + function unpauser() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct unpauserCall {} + ///Container type for the return parameters of the [`unpauser()`](unpauserCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct unpauserReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: unpauserCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for unpauserCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: unpauserReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for unpauserReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for unpauserCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = unpauserReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "unpauser()"; + const SELECTOR: [u8; 4] = [234u8, 182u8, 109u8, 122u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IPauserRegistry`](self) function calls. + pub enum IPauserRegistryCalls { + isPauser(isPauserCall), + unpauser(unpauserCall), + } + #[automatically_derived] + impl IPauserRegistryCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = + &[[70u8, 251u8, 246u8, 142u8], [234u8, 182u8, 109u8, 122u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IPauserRegistryCalls { + const NAME: &'static str = "IPauserRegistryCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 2usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::isPauser(_) => ::SELECTOR, + Self::unpauser(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn isPauser( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IPauserRegistryCalls::isPauser) + } + isPauser + }, + { + fn unpauser( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IPauserRegistryCalls::unpauser) + } + unpauser + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::isPauser(inner) => { + ::abi_encoded_size(inner) + } + Self::unpauser(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::isPauser(inner) => { + ::abi_encode_raw(inner, out) + } + Self::unpauser(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`IPauserRegistry`](self) events. + pub enum IPauserRegistryEvents { + PauserStatusChanged(PauserStatusChanged), + UnpauserChanged(UnpauserChanged), + } + #[automatically_derived] + impl IPauserRegistryEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 6u8, 180u8, 22u8, 122u8, 37u8, 40u8, 136u8, 122u8, 30u8, 151u8, 163u8, 102u8, + 238u8, 254u8, 133u8, 73u8, 191u8, 191u8, 30u8, 163u8, 230u8, 172u8, 129u8, 203u8, + 37u8, 100u8, 169u8, 52u8, 210u8, 14u8, 136u8, 146u8, + ], + [ + 101u8, 211u8, 161u8, 253u8, 76u8, 19u8, 240u8, 92u8, 186u8, 22u8, 79u8, 128u8, + 208u8, 60u8, 233u8, 15u8, 180u8, 181u8, 226u8, 25u8, 70u8, 191u8, 195u8, 171u8, + 125u8, 189u8, 67u8, 76u8, 45u8, 11u8, 145u8, 82u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IPauserRegistryEvents { + const NAME: &'static str = "IPauserRegistryEvents"; + const COUNT: usize = 2usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::PauserStatusChanged) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::UnpauserChanged) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for IPauserRegistryEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::PauserStatusChanged(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::UnpauserChanged(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::PauserStatusChanged(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::UnpauserChanged(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IPauserRegistry`](self) contract instance. + + See the [wrapper's documentation](`IPauserRegistryInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IPauserRegistryInstance { + IPauserRegistryInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + IPauserRegistryInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IPauserRegistryInstance::::deploy_builder(provider) + } + /**A [`IPauserRegistry`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IPauserRegistry`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IPauserRegistryInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IPauserRegistryInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IPauserRegistryInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IPauserRegistryInstance + { + /**Creates a new wrapper around an on-chain [`IPauserRegistry`](self) contract instance. + + See the [wrapper's documentation](`IPauserRegistryInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IPauserRegistryInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IPauserRegistryInstance { + IPauserRegistryInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IPauserRegistryInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`isPauser`] function. + pub fn isPauser( + &self, + pauser: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&isPauserCall { pauser }) + } + ///Creates a new call builder for the [`unpauser`] function. + pub fn unpauser(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&unpauserCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IPauserRegistryInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`PauserStatusChanged`] event. + pub fn PauserStatusChanged_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`UnpauserChanged`] event. + pub fn UnpauserChanged_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/iregistry.rs b/crates/utils/src/iregistry.rs new file mode 100644 index 00000000..8a5c9b88 --- /dev/null +++ b/crates/utils/src/iregistry.rs @@ -0,0 +1,428 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IRegistry { + function registryCoordinator() external view returns (address); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "registryCoordinator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IRegistry { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Function with signature `registryCoordinator()` and selector `0x6d14a987`. + ```solidity + function registryCoordinator() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registryCoordinatorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registryCoordinatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registryCoordinator()"; + const SELECTOR: [u8; 4] = [109u8, 20u8, 169u8, 135u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IRegistry`](self) function calls. + pub enum IRegistryCalls { + registryCoordinator(registryCoordinatorCall), + } + #[automatically_derived] + impl IRegistryCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[109u8, 20u8, 169u8, 135u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IRegistryCalls { + const NAME: &'static str = "IRegistryCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::registryCoordinator(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn(&[u8], bool) -> alloy_sol_types::Result] = + &[{ + fn registryCoordinator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRegistryCalls::registryCoordinator) + } + registryCoordinator + }]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::registryCoordinator(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::registryCoordinator(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IRegistry`](self) contract instance. + + See the [wrapper's documentation](`IRegistryInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IRegistryInstance { + IRegistryInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + IRegistryInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IRegistryInstance::::deploy_builder(provider) + } + /**A [`IRegistry`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IRegistry`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IRegistryInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IRegistryInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IRegistryInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IRegistryInstance + { + /**Creates a new wrapper around an on-chain [`IRegistry`](self) contract instance. + + See the [wrapper's documentation](`IRegistryInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IRegistryInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IRegistryInstance { + IRegistryInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IRegistryInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`registryCoordinator`] function. + pub fn registryCoordinator( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®istryCoordinatorCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IRegistryInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/iregistrycoordinator.rs b/crates/utils/src/iregistrycoordinator.rs new file mode 100644 index 00000000..3bee46eb --- /dev/null +++ b/crates/utils/src/iregistrycoordinator.rs @@ -0,0 +1,5696 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library BN254 { + struct G1Point { uint256 X; uint256 Y; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod BN254 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct G1Point { uint256 X; uint256 Y; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct G1Point { + pub X: alloy::sol_types::private::primitives::aliases::U256, + pub Y: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: G1Point) -> Self { + (value.X, value.Y) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for G1Point { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + X: tuple.0, + Y: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for G1Point { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for G1Point { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.X, + ), + as alloy_sol_types::SolType>::tokenize( + &self.Y, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for G1Point { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for G1Point { + const NAME: &'static str = "G1Point"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 X,uint256 Y)") + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word(&self.X) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.Y) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for G1Point { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.X) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.Y) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.X, out); + as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.Y, out); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance. + + See the [wrapper's documentation](`BN254Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> BN254Instance { + BN254Instance::::new(address, provider) + } + /**A [`BN254`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`BN254`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct BN254Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for BN254Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("BN254Instance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BN254Instance + { + /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance. + + See the [wrapper's documentation](`BN254Instance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl BN254Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> BN254Instance { + BN254Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BN254Instance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BN254Instance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library BN254 { + struct G1Point { + uint256 X; + uint256 Y; + } +} + +interface IRegistryCoordinator { + type OperatorStatus is uint8; + struct OperatorInfo { + bytes32 operatorId; + OperatorStatus status; + } + struct OperatorSetParam { + uint32 maxOperatorCount; + uint16 kickBIPsOfOperatorStake; + uint16 kickBIPsOfTotalStake; + } + struct QuorumBitmapUpdate { + uint32 updateBlockNumber; + uint32 nextUpdateBlockNumber; + uint192 quorumBitmap; + } + + event ChurnApproverUpdated(address prevChurnApprover, address newChurnApprover); + event EjectorUpdated(address prevEjector, address newEjector); + event OperatorDeregistered(address indexed operator, bytes32 indexed operatorId); + event OperatorRegistered(address indexed operator, bytes32 indexed operatorId); + event OperatorSetParamsUpdated(uint8 indexed quorumNumber, OperatorSetParam operatorSetParams); + event QuorumBlockNumberUpdated(uint8 indexed quorumNumber, uint256 blocknumber); + + function blsApkRegistry() external view returns (address); + function ejectOperator(address operator, bytes memory quorumNumbers) external; + function getCurrentQuorumBitmap(bytes32 operatorId) external view returns (uint192); + function getOperator(address operator) external view returns (OperatorInfo memory); + function getOperatorFromId(bytes32 operatorId) external view returns (address operator); + function getOperatorId(address operator) external view returns (bytes32); + function getOperatorSetParams(uint8 quorumNumber) external view returns (OperatorSetParam memory); + function getOperatorStatus(address operator) external view returns (OperatorStatus); + function getQuorumBitmapAtBlockNumberByIndex(bytes32 operatorId, uint32 blockNumber, uint256 index) external view returns (uint192); + function getQuorumBitmapHistoryLength(bytes32 operatorId) external view returns (uint256); + function getQuorumBitmapIndicesAtBlockNumber(uint32 blockNumber, bytes32[] memory operatorIds) external view returns (uint32[] memory); + function getQuorumBitmapUpdateByIndex(bytes32 operatorId, uint256 index) external view returns (QuorumBitmapUpdate memory); + function indexRegistry() external view returns (address); + function numRegistries() external view returns (uint256); + function owner() external view returns (address); + function pubkeyRegistrationMessageHash(address operator) external view returns (BN254.G1Point memory); + function quorumCount() external view returns (uint8); + function quorumUpdateBlockNumber(uint8 quorumNumber) external view returns (uint256); + function registries(uint256) external view returns (address); + function stakeRegistry() external view returns (address); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "blsApkRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IBLSApkRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "ejectOperator", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getCurrentQuorumBitmap", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint192", + "internalType": "uint192" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperator", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IRegistryCoordinator.OperatorInfo", + "components": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "status", + "type": "uint8", + "internalType": "enum IRegistryCoordinator.OperatorStatus" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorFromId", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorId", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorSetParams", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IRegistryCoordinator.OperatorSetParam", + "components": [ + { + "name": "maxOperatorCount", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "kickBIPsOfOperatorStake", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "kickBIPsOfTotalStake", + "type": "uint16", + "internalType": "uint16" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorStatus", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "enum IRegistryCoordinator.OperatorStatus" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getQuorumBitmapAtBlockNumberByIndex", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint192", + "internalType": "uint192" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getQuorumBitmapHistoryLength", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getQuorumBitmapIndicesAtBlockNumber", + "inputs": [ + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "operatorIds", + "type": "bytes32[]", + "internalType": "bytes32[]" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32[]", + "internalType": "uint32[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getQuorumBitmapUpdateByIndex", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IRegistryCoordinator.QuorumBitmapUpdate", + "components": [ + { + "name": "updateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "nextUpdateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "quorumBitmap", + "type": "uint192", + "internalType": "uint192" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "indexRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IIndexRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "numRegistries", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pubkeyRegistrationMessageHash", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "quorumCount", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "quorumUpdateBlockNumber", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registries", + "inputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "stakeRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStakeRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "ChurnApproverUpdated", + "inputs": [ + { + "name": "prevChurnApprover", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newChurnApprover", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "EjectorUpdated", + "inputs": [ + { + "name": "prevEjector", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newEjector", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorDeregistered", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "operatorId", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorRegistered", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "operatorId", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorSetParamsUpdated", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "indexed": true, + "internalType": "uint8" + }, + { + "name": "operatorSetParams", + "type": "tuple", + "indexed": false, + "internalType": "struct IRegistryCoordinator.OperatorSetParam", + "components": [ + { + "name": "maxOperatorCount", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "kickBIPsOfOperatorStake", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "kickBIPsOfTotalStake", + "type": "uint16", + "internalType": "uint16" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "QuorumBlockNumberUpdated", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "indexed": true, + "internalType": "uint8" + }, + { + "name": "blocknumber", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IRegistryCoordinator { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OperatorStatus(u8); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for u8 { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> + { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::Uint<8>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self).0 + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size( + self, + ) + } + } + #[automatically_derived] + impl OperatorStatus { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: u8) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> u8 { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OperatorStatus { + type RustType = u8; + type Token<'a> = + as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OperatorStatus { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic( + rust, + ) + } + } + }; + /**```solidity + struct OperatorInfo { bytes32 operatorId; OperatorStatus status; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OperatorInfo { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub status: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>, OperatorStatus); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OperatorInfo) -> Self { + (value.operatorId, value.status) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OperatorInfo { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + status: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OperatorInfo { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OperatorInfo { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ::tokenize(&self.status), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OperatorInfo { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OperatorInfo { + const NAME: &'static str = "OperatorInfo"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OperatorInfo(bytes32 operatorId,uint8 status)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word(&self.operatorId) + .0, + ::eip712_data_word( + &self.status, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OperatorInfo { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.operatorId, + ) + + ::topic_preimage_length( + &rust.status, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.operatorId, + out, + ); + ::encode_topic_preimage( + &rust.status, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct OperatorSetParam { uint32 maxOperatorCount; uint16 kickBIPsOfOperatorStake; uint16 kickBIPsOfTotalStake; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OperatorSetParam { + pub maxOperatorCount: u32, + pub kickBIPsOfOperatorStake: u16, + pub kickBIPsOfTotalStake: u16, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<16>, + alloy::sol_types::sol_data::Uint<16>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32, u16, u16); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OperatorSetParam) -> Self { + ( + value.maxOperatorCount, + value.kickBIPsOfOperatorStake, + value.kickBIPsOfTotalStake, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OperatorSetParam { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + maxOperatorCount: tuple.0, + kickBIPsOfOperatorStake: tuple.1, + kickBIPsOfTotalStake: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OperatorSetParam { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OperatorSetParam { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.maxOperatorCount, + ), + as alloy_sol_types::SolType>::tokenize( + &self.kickBIPsOfOperatorStake, + ), + as alloy_sol_types::SolType>::tokenize( + &self.kickBIPsOfTotalStake, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OperatorSetParam { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OperatorSetParam { + const NAME: &'static str = "OperatorSetParam"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OperatorSetParam(uint32 maxOperatorCount,uint16 kickBIPsOfOperatorStake,uint16 kickBIPsOfTotalStake)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word( + &self.maxOperatorCount, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.kickBIPsOfOperatorStake, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.kickBIPsOfTotalStake, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OperatorSetParam { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.maxOperatorCount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.kickBIPsOfOperatorStake, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.kickBIPsOfTotalStake, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.maxOperatorCount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.kickBIPsOfOperatorStake, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.kickBIPsOfTotalStake, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct QuorumBitmapUpdate { uint32 updateBlockNumber; uint32 nextUpdateBlockNumber; uint192 quorumBitmap; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct QuorumBitmapUpdate { + pub updateBlockNumber: u32, + pub nextUpdateBlockNumber: u32, + pub quorumBitmap: alloy::sol_types::private::primitives::aliases::U192, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<192>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u32, + u32, + alloy::sol_types::private::primitives::aliases::U192, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: QuorumBitmapUpdate) -> Self { + ( + value.updateBlockNumber, + value.nextUpdateBlockNumber, + value.quorumBitmap, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for QuorumBitmapUpdate { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + updateBlockNumber: tuple.0, + nextUpdateBlockNumber: tuple.1, + quorumBitmap: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for QuorumBitmapUpdate { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for QuorumBitmapUpdate { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.updateBlockNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.nextUpdateBlockNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.quorumBitmap, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for QuorumBitmapUpdate { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for QuorumBitmapUpdate { + const NAME: &'static str = "QuorumBitmapUpdate"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "QuorumBitmapUpdate(uint32 updateBlockNumber,uint32 nextUpdateBlockNumber,uint192 quorumBitmap)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word( + &self.updateBlockNumber, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.nextUpdateBlockNumber, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.quorumBitmap) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for QuorumBitmapUpdate { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.updateBlockNumber, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.nextUpdateBlockNumber, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.quorumBitmap, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.updateBlockNumber, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nextUpdateBlockNumber, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.quorumBitmap, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**Event with signature `ChurnApproverUpdated(address,address)` and selector `0x315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c`. + ```solidity + event ChurnApproverUpdated(address prevChurnApprover, address newChurnApprover); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct ChurnApproverUpdated { + #[allow(missing_docs)] + pub prevChurnApprover: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newChurnApprover: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ChurnApproverUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "ChurnApproverUpdated(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 49u8, 84u8, 87u8, 216u8, 168u8, 254u8, 96u8, 240u8, 74u8, 241u8, 124u8, 22u8, + 226u8, 245u8, 165u8, 225u8, 219u8, 97u8, 43u8, 49u8, 100u8, 142u8, 88u8, 3u8, + 3u8, 96u8, 117u8, 158u8, 248u8, 243u8, 82u8, 140u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + prevChurnApprover: data.0, + newChurnApprover: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.prevChurnApprover, + ), + ::tokenize( + &self.newChurnApprover, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ChurnApproverUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ChurnApproverUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ChurnApproverUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `EjectorUpdated(address,address)` and selector `0x8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9`. + ```solidity + event EjectorUpdated(address prevEjector, address newEjector); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct EjectorUpdated { + #[allow(missing_docs)] + pub prevEjector: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newEjector: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for EjectorUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "EjectorUpdated(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 143u8, 48u8, 171u8, 9u8, 244u8, 58u8, 108u8, 21u8, 125u8, 127u8, 206u8, 126u8, + 10u8, 19u8, 192u8, 3u8, 4u8, 44u8, 28u8, 149u8, 232u8, 167u8, 46u8, 122u8, + 20u8, 106u8, 33u8, 192u8, 202u8, 162u8, 77u8, 201u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + prevEjector: data.0, + newEjector: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.prevEjector, + ), + ::tokenize( + &self.newEjector, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for EjectorUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&EjectorUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &EjectorUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorDeregistered(address,bytes32)` and selector `0x396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e4`. + ```solidity + event OperatorDeregistered(address indexed operator, bytes32 indexed operatorId); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorDeregistered { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorDeregistered { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + const SIGNATURE: &'static str = "OperatorDeregistered(address,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 57u8, 111u8, 220u8, 177u8, 128u8, 203u8, 15u8, 234u8, 38u8, 146u8, 129u8, 19u8, + 251u8, 15u8, 209u8, 195u8, 84u8, 152u8, 99u8, 249u8, 205u8, 86u8, 62u8, 106u8, + 24u8, 79u8, 29u8, 87u8, 129u8, 22u8, 200u8, 228u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: topics.1, + operatorId: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.operator.clone(), + self.operatorId.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + out[2usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.operatorId); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorDeregistered { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorDeregistered> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorDeregistered) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorRegistered(address,bytes32)` and selector `0xe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe`. + ```solidity + event OperatorRegistered(address indexed operator, bytes32 indexed operatorId); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorRegistered { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorRegistered { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + const SIGNATURE: &'static str = "OperatorRegistered(address,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 232u8, 230u8, 140u8, 239u8, 28u8, 58u8, 118u8, 30u8, 215u8, 190u8, 126u8, + 132u8, 99u8, 163u8, 117u8, 242u8, 127u8, 123u8, 195u8, 53u8, 229u8, 24u8, 36u8, + 34u8, 60u8, 172u8, 206u8, 99u8, 110u8, 197u8, 195u8, 254u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: topics.1, + operatorId: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.operator.clone(), + self.operatorId.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + out[2usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.operatorId); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorRegistered { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorRegistered> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorRegistered) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorSetParamsUpdated(uint8,(uint32,uint16,uint16))` and selector `0x3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac`. + ```solidity + event OperatorSetParamsUpdated(uint8 indexed quorumNumber, OperatorSetParam operatorSetParams); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorSetParamsUpdated { + #[allow(missing_docs)] + pub quorumNumber: u8, + #[allow(missing_docs)] + pub operatorSetParams: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorSetParamsUpdated { + type DataTuple<'a> = (OperatorSetParam,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + const SIGNATURE: &'static str = + "OperatorSetParamsUpdated(uint8,(uint32,uint16,uint16))"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 62u8, 230u8, 254u8, 141u8, 84u8, 97u8, 2u8, 68u8, 195u8, 233u8, 211u8, 192u8, + 102u8, 174u8, 74u8, 238u8, 153u8, 120u8, 132u8, 170u8, 40u8, 241u8, 6u8, 22u8, + 174u8, 130u8, 25u8, 37u8, 64u8, 19u8, 24u8, 172u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + quorumNumber: topics.1, + operatorSetParams: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + (::tokenize( + &self.operatorSetParams, + ),) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorSetParamsUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorSetParamsUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorSetParamsUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `QuorumBlockNumberUpdated(uint8,uint256)` and selector `0x46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4`. + ```solidity + event QuorumBlockNumberUpdated(uint8 indexed quorumNumber, uint256 blocknumber); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct QuorumBlockNumberUpdated { + #[allow(missing_docs)] + pub quorumNumber: u8, + #[allow(missing_docs)] + pub blocknumber: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for QuorumBlockNumberUpdated { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + const SIGNATURE: &'static str = "QuorumBlockNumberUpdated(uint8,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 70u8, 7u8, 125u8, 85u8, 51u8, 7u8, 99u8, 241u8, 98u8, 105u8, 253u8, 117u8, + 229u8, 118u8, 22u8, 99u8, 244u8, 25u8, 45u8, 39u8, 145u8, 116u8, 124u8, 1u8, + 137u8, 177u8, 106u8, 211u8, 29u8, 176u8, 125u8, 180u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + quorumNumber: topics.1, + blocknumber: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.blocknumber, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for QuorumBlockNumberUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&QuorumBlockNumberUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &QuorumBlockNumberUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `blsApkRegistry()` and selector `0x5df45946`. + ```solidity + function blsApkRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct blsApkRegistryCall {} + ///Container type for the return parameters of the [`blsApkRegistry()`](blsApkRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct blsApkRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: blsApkRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for blsApkRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: blsApkRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for blsApkRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for blsApkRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = blsApkRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "blsApkRegistry()"; + const SELECTOR: [u8; 4] = [93u8, 244u8, 89u8, 70u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `ejectOperator(address,bytes)` and selector `0x6e3b17db`. + ```solidity + function ejectOperator(address operator, bytes memory quorumNumbers) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ejectOperatorCall { + pub operator: alloy::sol_types::private::Address, + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`ejectOperator(address,bytes)`](ejectOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ejectOperatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ejectOperatorCall) -> Self { + (value.operator, value.quorumNumbers) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ejectOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + quorumNumbers: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ejectOperatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ejectOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ejectOperatorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ejectOperatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ejectOperator(address,bytes)"; + const SELECTOR: [u8; 4] = [110u8, 59u8, 23u8, 219u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getCurrentQuorumBitmap(bytes32)` and selector `0x871ef049`. + ```solidity + function getCurrentQuorumBitmap(bytes32 operatorId) external view returns (uint192); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getCurrentQuorumBitmapCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`getCurrentQuorumBitmap(bytes32)`](getCurrentQuorumBitmapCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getCurrentQuorumBitmapReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U192, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCurrentQuorumBitmapCall) -> Self { + (value.operatorId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCurrentQuorumBitmapCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<192>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U192,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCurrentQuorumBitmapReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCurrentQuorumBitmapReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getCurrentQuorumBitmapCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getCurrentQuorumBitmapReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<192>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getCurrentQuorumBitmap(bytes32)"; + const SELECTOR: [u8; 4] = [135u8, 30u8, 240u8, 73u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperator(address)` and selector `0x5865c60c`. + ```solidity + function getOperator(address operator) external view returns (OperatorInfo memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getOperator(address)`](getOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (OperatorInfo,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorReturn; + type ReturnTuple<'a> = (OperatorInfo,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperator(address)"; + const SELECTOR: [u8; 4] = [88u8, 101u8, 198u8, 12u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorFromId(bytes32)` and selector `0x296bb064`. + ```solidity + function getOperatorFromId(bytes32 operatorId) external view returns (address operator); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorFromIdCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`getOperatorFromId(bytes32)`](getOperatorFromIdCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorFromIdReturn { + pub operator: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorFromIdCall) -> Self { + (value.operatorId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorFromIdCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorFromIdReturn) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorFromIdReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorFromIdCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorFromIdReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorFromId(bytes32)"; + const SELECTOR: [u8; 4] = [41u8, 107u8, 176u8, 100u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorId(address)` and selector `0x13542a4e`. + ```solidity + function getOperatorId(address operator) external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorIdCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getOperatorId(address)`](getOperatorIdCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorIdReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorIdCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorIdCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorIdReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorIdReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorIdCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorIdReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorId(address)"; + const SELECTOR: [u8; 4] = [19u8, 84u8, 42u8, 78u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorSetParams(uint8)` and selector `0xe65797ad`. + ```solidity + function getOperatorSetParams(uint8 quorumNumber) external view returns (OperatorSetParam memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorSetParamsCall { + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`getOperatorSetParams(uint8)`](getOperatorSetParamsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorSetParamsReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorSetParamsCall) -> Self { + (value.quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorSetParamsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (OperatorSetParam,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorSetParamsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorSetParamsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorSetParamsCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorSetParamsReturn; + type ReturnTuple<'a> = (OperatorSetParam,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorSetParams(uint8)"; + const SELECTOR: [u8; 4] = [230u8, 87u8, 151u8, 173u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorStatus(address)` and selector `0xfd39105a`. + ```solidity + function getOperatorStatus(address operator) external view returns (OperatorStatus); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorStatusCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getOperatorStatus(address)`](getOperatorStatusCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorStatusReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorStatusCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorStatusCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (OperatorStatus,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorStatusReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorStatusReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorStatusCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorStatusReturn; + type ReturnTuple<'a> = (OperatorStatus,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorStatus(address)"; + const SELECTOR: [u8; 4] = [253u8, 57u8, 16u8, 90u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getQuorumBitmapAtBlockNumberByIndex(bytes32,uint32,uint256)` and selector `0x04ec6351`. + ```solidity + function getQuorumBitmapAtBlockNumberByIndex(bytes32 operatorId, uint32 blockNumber, uint256 index) external view returns (uint192); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumBitmapAtBlockNumberByIndexCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub blockNumber: u32, + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getQuorumBitmapAtBlockNumberByIndex(bytes32,uint32,uint256)`](getQuorumBitmapAtBlockNumberByIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumBitmapAtBlockNumberByIndexReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U192, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + u32, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumBitmapAtBlockNumberByIndexCall) -> Self { + (value.operatorId, value.blockNumber, value.index) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumBitmapAtBlockNumberByIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + blockNumber: tuple.1, + index: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<192>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U192,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumBitmapAtBlockNumberByIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumBitmapAtBlockNumberByIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getQuorumBitmapAtBlockNumberByIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getQuorumBitmapAtBlockNumberByIndexReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<192>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "getQuorumBitmapAtBlockNumberByIndex(bytes32,uint32,uint256)"; + const SELECTOR: [u8; 4] = [4u8, 236u8, 99u8, 81u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.blockNumber), + as alloy_sol_types::SolType>::tokenize(&self.index), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getQuorumBitmapHistoryLength(bytes32)` and selector `0x03fd3492`. + ```solidity + function getQuorumBitmapHistoryLength(bytes32 operatorId) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumBitmapHistoryLengthCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`getQuorumBitmapHistoryLength(bytes32)`](getQuorumBitmapHistoryLengthCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumBitmapHistoryLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumBitmapHistoryLengthCall) -> Self { + (value.operatorId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumBitmapHistoryLengthCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumBitmapHistoryLengthReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumBitmapHistoryLengthReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getQuorumBitmapHistoryLengthCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getQuorumBitmapHistoryLengthReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getQuorumBitmapHistoryLength(bytes32)"; + const SELECTOR: [u8; 4] = [3u8, 253u8, 52u8, 146u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getQuorumBitmapIndicesAtBlockNumber(uint32,bytes32[])` and selector `0xc391425e`. + ```solidity + function getQuorumBitmapIndicesAtBlockNumber(uint32 blockNumber, bytes32[] memory operatorIds) external view returns (uint32[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumBitmapIndicesAtBlockNumberCall { + pub blockNumber: u32, + pub operatorIds: alloy::sol_types::private::Vec>, + } + ///Container type for the return parameters of the [`getQuorumBitmapIndicesAtBlockNumber(uint32,bytes32[])`](getQuorumBitmapIndicesAtBlockNumberCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumBitmapIndicesAtBlockNumberReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Array>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u32, + alloy::sol_types::private::Vec>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumBitmapIndicesAtBlockNumberCall) -> Self { + (value.blockNumber, value.operatorIds) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumBitmapIndicesAtBlockNumberCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + blockNumber: tuple.0, + operatorIds: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumBitmapIndicesAtBlockNumberReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumBitmapIndicesAtBlockNumberReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getQuorumBitmapIndicesAtBlockNumberCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Array>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getQuorumBitmapIndicesAtBlockNumberReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getQuorumBitmapIndicesAtBlockNumber(uint32,bytes32[])"; + const SELECTOR: [u8; 4] = [195u8, 145u8, 66u8, 94u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.blockNumber), + , + > as alloy_sol_types::SolType>::tokenize(&self.operatorIds), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getQuorumBitmapUpdateByIndex(bytes32,uint256)` and selector `0x1eb812da`. + ```solidity + function getQuorumBitmapUpdateByIndex(bytes32 operatorId, uint256 index) external view returns (QuorumBitmapUpdate memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumBitmapUpdateByIndexCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getQuorumBitmapUpdateByIndex(bytes32,uint256)`](getQuorumBitmapUpdateByIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumBitmapUpdateByIndexReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumBitmapUpdateByIndexCall) -> Self { + (value.operatorId, value.index) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumBitmapUpdateByIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + index: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (QuorumBitmapUpdate,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumBitmapUpdateByIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumBitmapUpdateByIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getQuorumBitmapUpdateByIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getQuorumBitmapUpdateByIndexReturn; + type ReturnTuple<'a> = (QuorumBitmapUpdate,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getQuorumBitmapUpdateByIndex(bytes32,uint256)"; + const SELECTOR: [u8; 4] = [30u8, 184u8, 18u8, 218u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.index), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `indexRegistry()` and selector `0x9e9923c2`. + ```solidity + function indexRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct indexRegistryCall {} + ///Container type for the return parameters of the [`indexRegistry()`](indexRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct indexRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: indexRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for indexRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: indexRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for indexRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for indexRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = indexRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "indexRegistry()"; + const SELECTOR: [u8; 4] = [158u8, 153u8, 35u8, 194u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `numRegistries()` and selector `0xd72d8dd6`. + ```solidity + function numRegistries() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct numRegistriesCall {} + ///Container type for the return parameters of the [`numRegistries()`](numRegistriesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct numRegistriesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: numRegistriesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for numRegistriesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: numRegistriesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for numRegistriesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for numRegistriesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = numRegistriesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "numRegistries()"; + const SELECTOR: [u8; 4] = [215u8, 45u8, 141u8, 214u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. + ```solidity + function owner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pubkeyRegistrationMessageHash(address)` and selector `0x3c2a7f4c`. + ```solidity + function pubkeyRegistrationMessageHash(address operator) external view returns (BN254.G1Point memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pubkeyRegistrationMessageHashCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`pubkeyRegistrationMessageHash(address)`](pubkeyRegistrationMessageHashCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pubkeyRegistrationMessageHashReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pubkeyRegistrationMessageHashCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pubkeyRegistrationMessageHashCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (BN254::G1Point,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pubkeyRegistrationMessageHashReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pubkeyRegistrationMessageHashReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pubkeyRegistrationMessageHashCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pubkeyRegistrationMessageHashReturn; + type ReturnTuple<'a> = (BN254::G1Point,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pubkeyRegistrationMessageHash(address)"; + const SELECTOR: [u8; 4] = [60u8, 42u8, 127u8, 76u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `quorumCount()` and selector `0x9aa1653d`. + ```solidity + function quorumCount() external view returns (uint8); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct quorumCountCall {} + ///Container type for the return parameters of the [`quorumCount()`](quorumCountCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct quorumCountReturn { + pub _0: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: quorumCountCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for quorumCountCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: quorumCountReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for quorumCountReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for quorumCountCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = quorumCountReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "quorumCount()"; + const SELECTOR: [u8; 4] = [154u8, 161u8, 101u8, 61u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `quorumUpdateBlockNumber(uint8)` and selector `0x249a0c42`. + ```solidity + function quorumUpdateBlockNumber(uint8 quorumNumber) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct quorumUpdateBlockNumberCall { + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`quorumUpdateBlockNumber(uint8)`](quorumUpdateBlockNumberCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct quorumUpdateBlockNumberReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: quorumUpdateBlockNumberCall) -> Self { + (value.quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for quorumUpdateBlockNumberCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: quorumUpdateBlockNumberReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for quorumUpdateBlockNumberReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for quorumUpdateBlockNumberCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = quorumUpdateBlockNumberReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "quorumUpdateBlockNumber(uint8)"; + const SELECTOR: [u8; 4] = [36u8, 154u8, 12u8, 66u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registries(uint256)` and selector `0x6347c900`. + ```solidity + function registries(uint256) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registriesCall { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`registries(uint256)`](registriesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registriesReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registriesCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registriesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registriesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registriesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registriesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registriesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registries(uint256)"; + const SELECTOR: [u8; 4] = [99u8, 71u8, 201u8, 0u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `stakeRegistry()` and selector `0x68304835`. + ```solidity + function stakeRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakeRegistryCall {} + ///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakeRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakeRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakeRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakeRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakeRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for stakeRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = stakeRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "stakeRegistry()"; + const SELECTOR: [u8; 4] = [104u8, 48u8, 72u8, 53u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IRegistryCoordinator`](self) function calls. + pub enum IRegistryCoordinatorCalls { + blsApkRegistry(blsApkRegistryCall), + ejectOperator(ejectOperatorCall), + getCurrentQuorumBitmap(getCurrentQuorumBitmapCall), + getOperator(getOperatorCall), + getOperatorFromId(getOperatorFromIdCall), + getOperatorId(getOperatorIdCall), + getOperatorSetParams(getOperatorSetParamsCall), + getOperatorStatus(getOperatorStatusCall), + getQuorumBitmapAtBlockNumberByIndex(getQuorumBitmapAtBlockNumberByIndexCall), + getQuorumBitmapHistoryLength(getQuorumBitmapHistoryLengthCall), + getQuorumBitmapIndicesAtBlockNumber(getQuorumBitmapIndicesAtBlockNumberCall), + getQuorumBitmapUpdateByIndex(getQuorumBitmapUpdateByIndexCall), + indexRegistry(indexRegistryCall), + numRegistries(numRegistriesCall), + owner(ownerCall), + pubkeyRegistrationMessageHash(pubkeyRegistrationMessageHashCall), + quorumCount(quorumCountCall), + quorumUpdateBlockNumber(quorumUpdateBlockNumberCall), + registries(registriesCall), + stakeRegistry(stakeRegistryCall), + } + #[automatically_derived] + impl IRegistryCoordinatorCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [3u8, 253u8, 52u8, 146u8], + [4u8, 236u8, 99u8, 81u8], + [19u8, 84u8, 42u8, 78u8], + [30u8, 184u8, 18u8, 218u8], + [36u8, 154u8, 12u8, 66u8], + [41u8, 107u8, 176u8, 100u8], + [60u8, 42u8, 127u8, 76u8], + [88u8, 101u8, 198u8, 12u8], + [93u8, 244u8, 89u8, 70u8], + [99u8, 71u8, 201u8, 0u8], + [104u8, 48u8, 72u8, 53u8], + [110u8, 59u8, 23u8, 219u8], + [135u8, 30u8, 240u8, 73u8], + [141u8, 165u8, 203u8, 91u8], + [154u8, 161u8, 101u8, 61u8], + [158u8, 153u8, 35u8, 194u8], + [195u8, 145u8, 66u8, 94u8], + [215u8, 45u8, 141u8, 214u8], + [230u8, 87u8, 151u8, 173u8], + [253u8, 57u8, 16u8, 90u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IRegistryCoordinatorCalls { + const NAME: &'static str = "IRegistryCoordinatorCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 20usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::blsApkRegistry(_) => { + ::SELECTOR + } + Self::ejectOperator(_) => ::SELECTOR, + Self::getCurrentQuorumBitmap(_) => { + ::SELECTOR + } + Self::getOperator(_) => ::SELECTOR, + Self::getOperatorFromId(_) => { + ::SELECTOR + } + Self::getOperatorId(_) => ::SELECTOR, + Self::getOperatorSetParams(_) => { + ::SELECTOR + } + Self::getOperatorStatus(_) => { + ::SELECTOR + } + Self::getQuorumBitmapAtBlockNumberByIndex(_) => { + ::SELECTOR + } + Self::getQuorumBitmapHistoryLength(_) => { + ::SELECTOR + } + Self::getQuorumBitmapIndicesAtBlockNumber(_) => { + ::SELECTOR + } + Self::getQuorumBitmapUpdateByIndex(_) => { + ::SELECTOR + } + Self::indexRegistry(_) => ::SELECTOR, + Self::numRegistries(_) => ::SELECTOR, + Self::owner(_) => ::SELECTOR, + Self::pubkeyRegistrationMessageHash(_) => { + ::SELECTOR + } + Self::quorumCount(_) => ::SELECTOR, + Self::quorumUpdateBlockNumber(_) => { + ::SELECTOR + } + Self::registries(_) => ::SELECTOR, + Self::stakeRegistry(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn getQuorumBitmapHistoryLength( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IRegistryCoordinatorCalls::getQuorumBitmapHistoryLength) + } + getQuorumBitmapHistoryLength + }, + { + fn getQuorumBitmapAtBlockNumberByIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + IRegistryCoordinatorCalls::getQuorumBitmapAtBlockNumberByIndex, + ) + } + getQuorumBitmapAtBlockNumberByIndex + }, + { + fn getOperatorId( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRegistryCoordinatorCalls::getOperatorId) + } + getOperatorId + }, + { + fn getQuorumBitmapUpdateByIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IRegistryCoordinatorCalls::getQuorumBitmapUpdateByIndex) + } + getQuorumBitmapUpdateByIndex + }, + { + fn quorumUpdateBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRegistryCoordinatorCalls::quorumUpdateBlockNumber) + } + quorumUpdateBlockNumber + }, + { + fn getOperatorFromId( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRegistryCoordinatorCalls::getOperatorFromId) + } + getOperatorFromId + }, + { + fn pubkeyRegistrationMessageHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + IRegistryCoordinatorCalls::pubkeyRegistrationMessageHash, + ) + } + pubkeyRegistrationMessageHash + }, + { + fn getOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRegistryCoordinatorCalls::getOperator) + } + getOperator + }, + { + fn blsApkRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRegistryCoordinatorCalls::blsApkRegistry) + } + blsApkRegistry + }, + { + fn registries( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IRegistryCoordinatorCalls::registries) + } + registries + }, + { + fn stakeRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRegistryCoordinatorCalls::stakeRegistry) + } + stakeRegistry + }, + { + fn ejectOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRegistryCoordinatorCalls::ejectOperator) + } + ejectOperator + }, + { + fn getCurrentQuorumBitmap( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRegistryCoordinatorCalls::getCurrentQuorumBitmap) + } + getCurrentQuorumBitmap + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IRegistryCoordinatorCalls::owner) + } + owner + }, + { + fn quorumCount( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRegistryCoordinatorCalls::quorumCount) + } + quorumCount + }, + { + fn indexRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRegistryCoordinatorCalls::indexRegistry) + } + indexRegistry + }, + { + fn getQuorumBitmapIndicesAtBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + IRegistryCoordinatorCalls::getQuorumBitmapIndicesAtBlockNumber, + ) + } + getQuorumBitmapIndicesAtBlockNumber + }, + { + fn numRegistries( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRegistryCoordinatorCalls::numRegistries) + } + numRegistries + }, + { + fn getOperatorSetParams( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRegistryCoordinatorCalls::getOperatorSetParams) + } + getOperatorSetParams + }, + { + fn getOperatorStatus( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRegistryCoordinatorCalls::getOperatorStatus) + } + getOperatorStatus + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::blsApkRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::ejectOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getCurrentQuorumBitmap(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorFromId(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorId(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorSetParams(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorStatus(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getQuorumBitmapAtBlockNumberByIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getQuorumBitmapHistoryLength(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getQuorumBitmapIndicesAtBlockNumber(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getQuorumBitmapUpdateByIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::indexRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::numRegistries(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::pubkeyRegistrationMessageHash(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::quorumCount(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::quorumUpdateBlockNumber(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registries(inner) => { + ::abi_encoded_size(inner) + } + Self::stakeRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::blsApkRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::ejectOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getCurrentQuorumBitmap(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperatorFromId(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperatorId(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperatorSetParams(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperatorStatus(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getQuorumBitmapAtBlockNumberByIndex(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getQuorumBitmapHistoryLength(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getQuorumBitmapIndicesAtBlockNumber(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getQuorumBitmapUpdateByIndex(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::indexRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::numRegistries(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::pubkeyRegistrationMessageHash(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::quorumCount(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::quorumUpdateBlockNumber(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registries(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::stakeRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`IRegistryCoordinator`](self) events. + pub enum IRegistryCoordinatorEvents { + ChurnApproverUpdated(ChurnApproverUpdated), + EjectorUpdated(EjectorUpdated), + OperatorDeregistered(OperatorDeregistered), + OperatorRegistered(OperatorRegistered), + OperatorSetParamsUpdated(OperatorSetParamsUpdated), + QuorumBlockNumberUpdated(QuorumBlockNumberUpdated), + } + #[automatically_derived] + impl IRegistryCoordinatorEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 49u8, 84u8, 87u8, 216u8, 168u8, 254u8, 96u8, 240u8, 74u8, 241u8, 124u8, 22u8, + 226u8, 245u8, 165u8, 225u8, 219u8, 97u8, 43u8, 49u8, 100u8, 142u8, 88u8, 3u8, 3u8, + 96u8, 117u8, 158u8, 248u8, 243u8, 82u8, 140u8, + ], + [ + 57u8, 111u8, 220u8, 177u8, 128u8, 203u8, 15u8, 234u8, 38u8, 146u8, 129u8, 19u8, + 251u8, 15u8, 209u8, 195u8, 84u8, 152u8, 99u8, 249u8, 205u8, 86u8, 62u8, 106u8, + 24u8, 79u8, 29u8, 87u8, 129u8, 22u8, 200u8, 228u8, + ], + [ + 62u8, 230u8, 254u8, 141u8, 84u8, 97u8, 2u8, 68u8, 195u8, 233u8, 211u8, 192u8, + 102u8, 174u8, 74u8, 238u8, 153u8, 120u8, 132u8, 170u8, 40u8, 241u8, 6u8, 22u8, + 174u8, 130u8, 25u8, 37u8, 64u8, 19u8, 24u8, 172u8, + ], + [ + 70u8, 7u8, 125u8, 85u8, 51u8, 7u8, 99u8, 241u8, 98u8, 105u8, 253u8, 117u8, 229u8, + 118u8, 22u8, 99u8, 244u8, 25u8, 45u8, 39u8, 145u8, 116u8, 124u8, 1u8, 137u8, 177u8, + 106u8, 211u8, 29u8, 176u8, 125u8, 180u8, + ], + [ + 143u8, 48u8, 171u8, 9u8, 244u8, 58u8, 108u8, 21u8, 125u8, 127u8, 206u8, 126u8, + 10u8, 19u8, 192u8, 3u8, 4u8, 44u8, 28u8, 149u8, 232u8, 167u8, 46u8, 122u8, 20u8, + 106u8, 33u8, 192u8, 202u8, 162u8, 77u8, 201u8, + ], + [ + 232u8, 230u8, 140u8, 239u8, 28u8, 58u8, 118u8, 30u8, 215u8, 190u8, 126u8, 132u8, + 99u8, 163u8, 117u8, 242u8, 127u8, 123u8, 195u8, 53u8, 229u8, 24u8, 36u8, 34u8, + 60u8, 172u8, 206u8, 99u8, 110u8, 197u8, 195u8, 254u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IRegistryCoordinatorEvents { + const NAME: &'static str = "IRegistryCoordinatorEvents"; + const COUNT: usize = 6usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ChurnApproverUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::EjectorUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorDeregistered) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorRegistered) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorSetParamsUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::QuorumBlockNumberUpdated) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for IRegistryCoordinatorEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::ChurnApproverUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::EjectorUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorDeregistered(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorRegistered(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorSetParamsUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::QuorumBlockNumberUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::ChurnApproverUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::EjectorUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorDeregistered(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorRegistered(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorSetParamsUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::QuorumBlockNumberUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IRegistryCoordinator`](self) contract instance. + + See the [wrapper's documentation](`IRegistryCoordinatorInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IRegistryCoordinatorInstance { + IRegistryCoordinatorInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + IRegistryCoordinatorInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IRegistryCoordinatorInstance::::deploy_builder(provider) + } + /**A [`IRegistryCoordinator`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IRegistryCoordinator`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IRegistryCoordinatorInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IRegistryCoordinatorInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IRegistryCoordinatorInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IRegistryCoordinatorInstance + { + /**Creates a new wrapper around an on-chain [`IRegistryCoordinator`](self) contract instance. + + See the [wrapper's documentation](`IRegistryCoordinatorInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IRegistryCoordinatorInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IRegistryCoordinatorInstance { + IRegistryCoordinatorInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IRegistryCoordinatorInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`blsApkRegistry`] function. + pub fn blsApkRegistry( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&blsApkRegistryCall {}) + } + ///Creates a new call builder for the [`ejectOperator`] function. + pub fn ejectOperator( + &self, + operator: alloy::sol_types::private::Address, + quorumNumbers: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&ejectOperatorCall { + operator, + quorumNumbers, + }) + } + ///Creates a new call builder for the [`getCurrentQuorumBitmap`] function. + pub fn getCurrentQuorumBitmap( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getCurrentQuorumBitmapCall { operatorId }) + } + ///Creates a new call builder for the [`getOperator`] function. + pub fn getOperator( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorCall { operator }) + } + ///Creates a new call builder for the [`getOperatorFromId`] function. + pub fn getOperatorFromId( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorFromIdCall { operatorId }) + } + ///Creates a new call builder for the [`getOperatorId`] function. + pub fn getOperatorId( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorIdCall { operator }) + } + ///Creates a new call builder for the [`getOperatorSetParams`] function. + pub fn getOperatorSetParams( + &self, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorSetParamsCall { quorumNumber }) + } + ///Creates a new call builder for the [`getOperatorStatus`] function. + pub fn getOperatorStatus( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorStatusCall { operator }) + } + ///Creates a new call builder for the [`getQuorumBitmapAtBlockNumberByIndex`] function. + pub fn getQuorumBitmapAtBlockNumberByIndex( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + blockNumber: u32, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&getQuorumBitmapAtBlockNumberByIndexCall { + operatorId, + blockNumber, + index, + }) + } + ///Creates a new call builder for the [`getQuorumBitmapHistoryLength`] function. + pub fn getQuorumBitmapHistoryLength( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getQuorumBitmapHistoryLengthCall { operatorId }) + } + ///Creates a new call builder for the [`getQuorumBitmapIndicesAtBlockNumber`] function. + pub fn getQuorumBitmapIndicesAtBlockNumber( + &self, + blockNumber: u32, + operatorIds: alloy::sol_types::private::Vec>, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&getQuorumBitmapIndicesAtBlockNumberCall { + blockNumber, + operatorIds, + }) + } + ///Creates a new call builder for the [`getQuorumBitmapUpdateByIndex`] function. + pub fn getQuorumBitmapUpdateByIndex( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getQuorumBitmapUpdateByIndexCall { operatorId, index }) + } + ///Creates a new call builder for the [`indexRegistry`] function. + pub fn indexRegistry(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&indexRegistryCall {}) + } + ///Creates a new call builder for the [`numRegistries`] function. + pub fn numRegistries(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&numRegistriesCall {}) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`pubkeyRegistrationMessageHash`] function. + pub fn pubkeyRegistrationMessageHash( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&pubkeyRegistrationMessageHashCall { operator }) + } + ///Creates a new call builder for the [`quorumCount`] function. + pub fn quorumCount(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&quorumCountCall {}) + } + ///Creates a new call builder for the [`quorumUpdateBlockNumber`] function. + pub fn quorumUpdateBlockNumber( + &self, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&quorumUpdateBlockNumberCall { quorumNumber }) + } + ///Creates a new call builder for the [`registries`] function. + pub fn registries( + &self, + _0: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®istriesCall { _0 }) + } + ///Creates a new call builder for the [`stakeRegistry`] function. + pub fn stakeRegistry(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&stakeRegistryCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IRegistryCoordinatorInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`ChurnApproverUpdated`] event. + pub fn ChurnApproverUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`EjectorUpdated`] event. + pub fn EjectorUpdated_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorDeregistered`] event. + pub fn OperatorDeregistered_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorRegistered`] event. + pub fn OperatorRegistered_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorSetParamsUpdated`] event. + pub fn OperatorSetParamsUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`QuorumBlockNumberUpdated`] event. + pub fn QuorumBlockNumberUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/irewardscoordinator.rs b/crates/utils/src/irewardscoordinator.rs new file mode 100644 index 00000000..e4cb6fb2 --- /dev/null +++ b/crates/utils/src/irewardscoordinator.rs @@ -0,0 +1,8438 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IRewardsCoordinator { + struct DistributionRoot { + bytes32 root; + uint32 rewardsCalculationEndTimestamp; + uint32 activatedAt; + bool disabled; + } + struct EarnerTreeMerkleLeaf { + address earner; + bytes32 earnerTokenRoot; + } + struct RewardsMerkleClaim { + uint32 rootIndex; + uint32 earnerIndex; + bytes earnerTreeProof; + EarnerTreeMerkleLeaf earnerLeaf; + uint32[] tokenIndices; + bytes[] tokenTreeProofs; + TokenTreeMerkleLeaf[] tokenLeaves; + } + struct RewardsSubmission { + StrategyAndMultiplier[] strategiesAndMultipliers; + address token; + uint256 amount; + uint32 startTimestamp; + uint32 duration; + } + struct StrategyAndMultiplier { + address strategy; + uint96 multiplier; + } + struct TokenTreeMerkleLeaf { + address token; + uint256 cumulativeEarnings; + } + + event AVSRewardsSubmissionCreated(address indexed avs, uint256 indexed submissionNonce, bytes32 indexed rewardsSubmissionHash, RewardsSubmission rewardsSubmission); + event ActivationDelaySet(uint32 oldActivationDelay, uint32 newActivationDelay); + event ClaimerForSet(address indexed earner, address indexed oldClaimer, address indexed claimer); + event DistributionRootDisabled(uint32 indexed rootIndex); + event DistributionRootSubmitted(uint32 indexed rootIndex, bytes32 indexed root, uint32 indexed rewardsCalculationEndTimestamp, uint32 activatedAt); + event GlobalCommissionBipsSet(uint16 oldGlobalCommissionBips, uint16 newGlobalCommissionBips); + event RewardsClaimed(bytes32 root, address indexed earner, address indexed claimer, address indexed recipient, address token, uint256 claimedAmount); + event RewardsForAllSubmitterSet(address indexed rewardsForAllSubmitter, bool indexed oldValue, bool indexed newValue); + event RewardsSubmissionForAllCreated(address indexed submitter, uint256 indexed submissionNonce, bytes32 indexed rewardsSubmissionHash, RewardsSubmission rewardsSubmission); + event RewardsUpdaterSet(address indexed oldRewardsUpdater, address indexed newRewardsUpdater); + + function CALCULATION_INTERVAL_SECONDS() external view returns (uint32); + function GENESIS_REWARDS_TIMESTAMP() external view returns (uint32); + function MAX_FUTURE_LENGTH() external view returns (uint32); + function MAX_RETROACTIVE_LENGTH() external view returns (uint32); + function MAX_REWARDS_DURATION() external view returns (uint32); + function activationDelay() external view returns (uint32); + function calculateEarnerLeafHash(EarnerTreeMerkleLeaf memory leaf) external pure returns (bytes32); + function calculateTokenLeafHash(TokenTreeMerkleLeaf memory leaf) external pure returns (bytes32); + function checkClaim(RewardsMerkleClaim memory claim) external view returns (bool); + function claimerFor(address earner) external view returns (address); + function createAVSRewardsSubmission(RewardsSubmission[] memory rewardsSubmissions) external; + function createRewardsForAllSubmission(RewardsSubmission[] memory rewardsSubmission) external; + function cumulativeClaimed(address claimer, address token) external view returns (uint256); + function currRewardsCalculationEndTimestamp() external view returns (uint32); + function disableRoot(uint32 rootIndex) external; + function getCurrentDistributionRoot() external view returns (DistributionRoot memory); + function getDistributionRootAtIndex(uint256 index) external view returns (DistributionRoot memory); + function getDistributionRootsLength() external view returns (uint256); + function getRootIndexFromHash(bytes32 rootHash) external view returns (uint32); + function globalOperatorCommissionBips() external view returns (uint16); + function operatorCommissionBips(address operator, address avs) external view returns (uint16); + function processClaim(RewardsMerkleClaim memory claim, address recipient) external; + function rewardsUpdater() external view returns (address); + function setActivationDelay(uint32 _activationDelay) external; + function setClaimerFor(address claimer) external; + function setGlobalOperatorCommission(uint16 _globalCommissionBips) external; + function setRewardsForAllSubmitter(address _submitter, bool _newValue) external; + function setRewardsUpdater(address _rewardsUpdater) external; + function submitRoot(bytes32 root, uint32 rewardsCalculationEndTimestamp) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "CALCULATION_INTERVAL_SECONDS", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "GENESIS_REWARDS_TIMESTAMP", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "MAX_FUTURE_LENGTH", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "MAX_RETROACTIVE_LENGTH", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "MAX_REWARDS_DURATION", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "activationDelay", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "calculateEarnerLeafHash", + "inputs": [ + { + "name": "leaf", + "type": "tuple", + "internalType": "struct IRewardsCoordinator.EarnerTreeMerkleLeaf", + "components": [ + { + "name": "earner", + "type": "address", + "internalType": "address" + }, + { + "name": "earnerTokenRoot", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "calculateTokenLeafHash", + "inputs": [ + { + "name": "leaf", + "type": "tuple", + "internalType": "struct IRewardsCoordinator.TokenTreeMerkleLeaf", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "cumulativeEarnings", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "checkClaim", + "inputs": [ + { + "name": "claim", + "type": "tuple", + "internalType": "struct IRewardsCoordinator.RewardsMerkleClaim", + "components": [ + { + "name": "rootIndex", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "earnerIndex", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "earnerTreeProof", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "earnerLeaf", + "type": "tuple", + "internalType": "struct IRewardsCoordinator.EarnerTreeMerkleLeaf", + "components": [ + { + "name": "earner", + "type": "address", + "internalType": "address" + }, + { + "name": "earnerTokenRoot", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "tokenIndices", + "type": "uint32[]", + "internalType": "uint32[]" + }, + { + "name": "tokenTreeProofs", + "type": "bytes[]", + "internalType": "bytes[]" + }, + { + "name": "tokenLeaves", + "type": "tuple[]", + "internalType": "struct IRewardsCoordinator.TokenTreeMerkleLeaf[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "cumulativeEarnings", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "claimerFor", + "inputs": [ + { + "name": "earner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "createAVSRewardsSubmission", + "inputs": [ + { + "name": "rewardsSubmissions", + "type": "tuple[]", + "internalType": "struct IRewardsCoordinator.RewardsSubmission[]", + "components": [ + { + "name": "strategiesAndMultipliers", + "type": "tuple[]", + "internalType": "struct IRewardsCoordinator.StrategyAndMultiplier[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "startTimestamp", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "duration", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "createRewardsForAllSubmission", + "inputs": [ + { + "name": "rewardsSubmission", + "type": "tuple[]", + "internalType": "struct IRewardsCoordinator.RewardsSubmission[]", + "components": [ + { + "name": "strategiesAndMultipliers", + "type": "tuple[]", + "internalType": "struct IRewardsCoordinator.StrategyAndMultiplier[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "startTimestamp", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "duration", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "cumulativeClaimed", + "inputs": [ + { + "name": "claimer", + "type": "address", + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "currRewardsCalculationEndTimestamp", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "disableRoot", + "inputs": [ + { + "name": "rootIndex", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getCurrentDistributionRoot", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IRewardsCoordinator.DistributionRoot", + "components": [ + { + "name": "root", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "rewardsCalculationEndTimestamp", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "activatedAt", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "disabled", + "type": "bool", + "internalType": "bool" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getDistributionRootAtIndex", + "inputs": [ + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IRewardsCoordinator.DistributionRoot", + "components": [ + { + "name": "root", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "rewardsCalculationEndTimestamp", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "activatedAt", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "disabled", + "type": "bool", + "internalType": "bool" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getDistributionRootsLength", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getRootIndexFromHash", + "inputs": [ + { + "name": "rootHash", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "globalOperatorCommissionBips", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint16", + "internalType": "uint16" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "operatorCommissionBips", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "avs", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint16", + "internalType": "uint16" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "processClaim", + "inputs": [ + { + "name": "claim", + "type": "tuple", + "internalType": "struct IRewardsCoordinator.RewardsMerkleClaim", + "components": [ + { + "name": "rootIndex", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "earnerIndex", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "earnerTreeProof", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "earnerLeaf", + "type": "tuple", + "internalType": "struct IRewardsCoordinator.EarnerTreeMerkleLeaf", + "components": [ + { + "name": "earner", + "type": "address", + "internalType": "address" + }, + { + "name": "earnerTokenRoot", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "tokenIndices", + "type": "uint32[]", + "internalType": "uint32[]" + }, + { + "name": "tokenTreeProofs", + "type": "bytes[]", + "internalType": "bytes[]" + }, + { + "name": "tokenLeaves", + "type": "tuple[]", + "internalType": "struct IRewardsCoordinator.TokenTreeMerkleLeaf[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "cumulativeEarnings", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ] + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "rewardsUpdater", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setActivationDelay", + "inputs": [ + { + "name": "_activationDelay", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setClaimerFor", + "inputs": [ + { + "name": "claimer", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setGlobalOperatorCommission", + "inputs": [ + { + "name": "_globalCommissionBips", + "type": "uint16", + "internalType": "uint16" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setRewardsForAllSubmitter", + "inputs": [ + { + "name": "_submitter", + "type": "address", + "internalType": "address" + }, + { + "name": "_newValue", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setRewardsUpdater", + "inputs": [ + { + "name": "_rewardsUpdater", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "submitRoot", + "inputs": [ + { + "name": "root", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "rewardsCalculationEndTimestamp", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "AVSRewardsSubmissionCreated", + "inputs": [ + { + "name": "avs", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "submissionNonce", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "rewardsSubmissionHash", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "rewardsSubmission", + "type": "tuple", + "indexed": false, + "internalType": "struct IRewardsCoordinator.RewardsSubmission", + "components": [ + { + "name": "strategiesAndMultipliers", + "type": "tuple[]", + "internalType": "struct IRewardsCoordinator.StrategyAndMultiplier[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "startTimestamp", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "duration", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ActivationDelaySet", + "inputs": [ + { + "name": "oldActivationDelay", + "type": "uint32", + "indexed": false, + "internalType": "uint32" + }, + { + "name": "newActivationDelay", + "type": "uint32", + "indexed": false, + "internalType": "uint32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ClaimerForSet", + "inputs": [ + { + "name": "earner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "oldClaimer", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "claimer", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "DistributionRootDisabled", + "inputs": [ + { + "name": "rootIndex", + "type": "uint32", + "indexed": true, + "internalType": "uint32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "DistributionRootSubmitted", + "inputs": [ + { + "name": "rootIndex", + "type": "uint32", + "indexed": true, + "internalType": "uint32" + }, + { + "name": "root", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "rewardsCalculationEndTimestamp", + "type": "uint32", + "indexed": true, + "internalType": "uint32" + }, + { + "name": "activatedAt", + "type": "uint32", + "indexed": false, + "internalType": "uint32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "GlobalCommissionBipsSet", + "inputs": [ + { + "name": "oldGlobalCommissionBips", + "type": "uint16", + "indexed": false, + "internalType": "uint16" + }, + { + "name": "newGlobalCommissionBips", + "type": "uint16", + "indexed": false, + "internalType": "uint16" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RewardsClaimed", + "inputs": [ + { + "name": "root", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "earner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "claimer", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "recipient", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": false, + "internalType": "contract IERC20" + }, + { + "name": "claimedAmount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RewardsForAllSubmitterSet", + "inputs": [ + { + "name": "rewardsForAllSubmitter", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "oldValue", + "type": "bool", + "indexed": true, + "internalType": "bool" + }, + { + "name": "newValue", + "type": "bool", + "indexed": true, + "internalType": "bool" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RewardsSubmissionForAllCreated", + "inputs": [ + { + "name": "submitter", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "submissionNonce", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "rewardsSubmissionHash", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "rewardsSubmission", + "type": "tuple", + "indexed": false, + "internalType": "struct IRewardsCoordinator.RewardsSubmission", + "components": [ + { + "name": "strategiesAndMultipliers", + "type": "tuple[]", + "internalType": "struct IRewardsCoordinator.StrategyAndMultiplier[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "startTimestamp", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "duration", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RewardsUpdaterSet", + "inputs": [ + { + "name": "oldRewardsUpdater", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newRewardsUpdater", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IRewardsCoordinator { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**```solidity + struct DistributionRoot { bytes32 root; uint32 rewardsCalculationEndTimestamp; uint32 activatedAt; bool disabled; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DistributionRoot { + pub root: alloy::sol_types::private::FixedBytes<32>, + pub rewardsCalculationEndTimestamp: u32, + pub activatedAt: u32, + pub disabled: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Bool, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>, u32, u32, bool); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DistributionRoot) -> Self { + ( + value.root, + value.rewardsCalculationEndTimestamp, + value.activatedAt, + value.disabled, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DistributionRoot { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + root: tuple.0, + rewardsCalculationEndTimestamp: tuple.1, + activatedAt: tuple.2, + disabled: tuple.3, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for DistributionRoot { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for DistributionRoot { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.root), + as alloy_sol_types::SolType>::tokenize( + &self.rewardsCalculationEndTimestamp, + ), + as alloy_sol_types::SolType>::tokenize(&self.activatedAt), + ::tokenize( + &self.disabled, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for DistributionRoot { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for DistributionRoot { + const NAME: &'static str = "DistributionRoot"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "DistributionRoot(bytes32 root,uint32 rewardsCalculationEndTimestamp,uint32 activatedAt,bool disabled)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word(&self.root) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.rewardsCalculationEndTimestamp, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.activatedAt) + .0, + ::eip712_data_word( + &self.disabled, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for DistributionRoot { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.root) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.rewardsCalculationEndTimestamp, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.activatedAt, + ) + + ::topic_preimage_length( + &rust.disabled, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.root, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.rewardsCalculationEndTimestamp, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.activatedAt, + out, + ); + ::encode_topic_preimage( + &rust.disabled, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct EarnerTreeMerkleLeaf { address earner; bytes32 earnerTokenRoot; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct EarnerTreeMerkleLeaf { + pub earner: alloy::sol_types::private::Address, + pub earnerTokenRoot: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: EarnerTreeMerkleLeaf) -> Self { + (value.earner, value.earnerTokenRoot) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for EarnerTreeMerkleLeaf { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + earner: tuple.0, + earnerTokenRoot: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for EarnerTreeMerkleLeaf { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for EarnerTreeMerkleLeaf { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.earner, + ), + as alloy_sol_types::SolType>::tokenize(&self.earnerTokenRoot), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for EarnerTreeMerkleLeaf { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for EarnerTreeMerkleLeaf { + const NAME: &'static str = "EarnerTreeMerkleLeaf"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "EarnerTreeMerkleLeaf(address earner,bytes32 earnerTokenRoot)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.earner, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.earnerTokenRoot, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for EarnerTreeMerkleLeaf { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.earner, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.earnerTokenRoot, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.earner, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.earnerTokenRoot, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct RewardsMerkleClaim { uint32 rootIndex; uint32 earnerIndex; bytes earnerTreeProof; EarnerTreeMerkleLeaf earnerLeaf; uint32[] tokenIndices; bytes[] tokenTreeProofs; TokenTreeMerkleLeaf[] tokenLeaves; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct RewardsMerkleClaim { + pub rootIndex: u32, + pub earnerIndex: u32, + pub earnerTreeProof: alloy::sol_types::private::Bytes, + pub earnerLeaf: ::RustType, + pub tokenIndices: alloy::sol_types::private::Vec, + pub tokenTreeProofs: alloy::sol_types::private::Vec, + pub tokenLeaves: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Bytes, + EarnerTreeMerkleLeaf, + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u32, + u32, + alloy::sol_types::private::Bytes, + ::RustType, + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: RewardsMerkleClaim) -> Self { + ( + value.rootIndex, + value.earnerIndex, + value.earnerTreeProof, + value.earnerLeaf, + value.tokenIndices, + value.tokenTreeProofs, + value.tokenLeaves, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for RewardsMerkleClaim { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + rootIndex: tuple.0, + earnerIndex: tuple.1, + earnerTreeProof: tuple.2, + earnerLeaf: tuple.3, + tokenIndices: tuple.4, + tokenTreeProofs: tuple.5, + tokenLeaves: tuple.6, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for RewardsMerkleClaim { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for RewardsMerkleClaim { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.rootIndex), + as alloy_sol_types::SolType>::tokenize(&self.earnerIndex), + ::tokenize( + &self.earnerTreeProof, + ), + ::tokenize( + &self.earnerLeaf, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.tokenIndices), + as alloy_sol_types::SolType>::tokenize(&self.tokenTreeProofs), + as alloy_sol_types::SolType>::tokenize(&self.tokenLeaves), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for RewardsMerkleClaim { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for RewardsMerkleClaim { + const NAME: &'static str = "RewardsMerkleClaim"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "RewardsMerkleClaim(uint32 rootIndex,uint32 earnerIndex,bytes earnerTreeProof,EarnerTreeMerkleLeaf earnerLeaf,uint32[] tokenIndices,bytes[] tokenTreeProofs,TokenTreeMerkleLeaf[] tokenLeaves)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + let mut components = alloy_sol_types::private::Vec::with_capacity(2); + components + .push(::eip712_root_type()); + components.extend( + ::eip712_components(), + ); + components + .push(::eip712_root_type()); + components.extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word(&self.rootIndex) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.earnerIndex) + .0, + ::eip712_data_word( + &self.earnerTreeProof, + ) + .0, + ::eip712_data_word( + &self.earnerLeaf, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word(&self.tokenIndices) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.tokenTreeProofs, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.tokenLeaves) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for RewardsMerkleClaim { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.rootIndex, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.earnerIndex, + ) + + ::topic_preimage_length( + &rust.earnerTreeProof, + ) + + ::topic_preimage_length( + &rust.earnerLeaf, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.tokenIndices, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.tokenTreeProofs, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.tokenLeaves, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.rootIndex, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.earnerIndex, + out, + ); + ::encode_topic_preimage( + &rust.earnerTreeProof, + out, + ); + ::encode_topic_preimage( + &rust.earnerLeaf, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.tokenIndices, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.tokenTreeProofs, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.tokenLeaves, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct RewardsSubmission { StrategyAndMultiplier[] strategiesAndMultipliers; address token; uint256 amount; uint32 startTimestamp; uint32 duration; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct RewardsSubmission { + pub strategiesAndMultipliers: alloy::sol_types::private::Vec< + ::RustType, + >, + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::primitives::aliases::U256, + pub startTimestamp: u32, + pub duration: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + u32, + u32, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: RewardsSubmission) -> Self { + ( + value.strategiesAndMultipliers, + value.token, + value.amount, + value.startTimestamp, + value.duration, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for RewardsSubmission { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategiesAndMultipliers: tuple.0, + token: tuple.1, + amount: tuple.2, + startTimestamp: tuple.3, + duration: tuple.4, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for RewardsSubmission { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for RewardsSubmission { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.strategiesAndMultipliers, + ), + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.startTimestamp), + as alloy_sol_types::SolType>::tokenize(&self.duration), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for RewardsSubmission { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for RewardsSubmission { + const NAME: &'static str = "RewardsSubmission"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "RewardsSubmission(StrategyAndMultiplier[] strategiesAndMultipliers,address token,uint256 amount,uint32 startTimestamp,uint32 duration)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + let mut components = alloy_sol_types::private::Vec::with_capacity(1); + components.push( + ::eip712_root_type(), + ); + components.extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word( + &self.strategiesAndMultipliers, + ) + .0, + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.startTimestamp, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.duration) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for RewardsSubmission { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.strategiesAndMultipliers, + ) + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.startTimestamp, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.duration, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.strategiesAndMultipliers, + out, + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.startTimestamp, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.duration, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct StrategyAndMultiplier { address strategy; uint96 multiplier; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct StrategyAndMultiplier { + pub strategy: alloy::sol_types::private::Address, + pub multiplier: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<96>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U96, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: StrategyAndMultiplier) -> Self { + (value.strategy, value.multiplier) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for StrategyAndMultiplier { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategy: tuple.0, + multiplier: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for StrategyAndMultiplier { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for StrategyAndMultiplier { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.multiplier, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for StrategyAndMultiplier { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for StrategyAndMultiplier { + const NAME: &'static str = "StrategyAndMultiplier"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "StrategyAndMultiplier(address strategy,uint96 multiplier)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.strategy, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.multiplier) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for StrategyAndMultiplier { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.strategy, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.multiplier, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.strategy, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.multiplier, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct TokenTreeMerkleLeaf { address token; uint256 cumulativeEarnings; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct TokenTreeMerkleLeaf { + pub token: alloy::sol_types::private::Address, + pub cumulativeEarnings: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: TokenTreeMerkleLeaf) -> Self { + (value.token, value.cumulativeEarnings) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for TokenTreeMerkleLeaf { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + cumulativeEarnings: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for TokenTreeMerkleLeaf { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for TokenTreeMerkleLeaf { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize( + &self.cumulativeEarnings, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for TokenTreeMerkleLeaf { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for TokenTreeMerkleLeaf { + const NAME: &'static str = "TokenTreeMerkleLeaf"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "TokenTreeMerkleLeaf(address token,uint256 cumulativeEarnings)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.cumulativeEarnings, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for TokenTreeMerkleLeaf { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.cumulativeEarnings, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.cumulativeEarnings, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**Event with signature `AVSRewardsSubmissionCreated(address,uint256,bytes32,((address,uint96)[],address,uint256,uint32,uint32))` and selector `0x450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e6281`. + ```solidity + event AVSRewardsSubmissionCreated(address indexed avs, uint256 indexed submissionNonce, bytes32 indexed rewardsSubmissionHash, RewardsSubmission rewardsSubmission); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct AVSRewardsSubmissionCreated { + #[allow(missing_docs)] + pub avs: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub submissionNonce: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub rewardsSubmissionHash: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub rewardsSubmission: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for AVSRewardsSubmissionCreated { + type DataTuple<'a> = (RewardsSubmission,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + const SIGNATURE: &'static str = "AVSRewardsSubmissionCreated(address,uint256,bytes32,((address,uint96)[],address,uint256,uint32,uint32))"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 69u8, 10u8, 54u8, 122u8, 56u8, 12u8, 78u8, 51u8, 158u8, 90u8, 231u8, 52u8, + 12u8, 132u8, 100u8, 239u8, 39u8, 175u8, 119u8, 129u8, 173u8, 153u8, 69u8, + 207u8, 232u8, 171u8, 216u8, 40u8, 248u8, 158u8, 98u8, 129u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + avs: topics.1, + submissionNonce: topics.2, + rewardsSubmissionHash: topics.3, + rewardsSubmission: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + (::tokenize( + &self.rewardsSubmission, + ),) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.avs.clone(), + self.submissionNonce.clone(), + self.rewardsSubmissionHash.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.avs, + ); + out[2usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.submissionNonce); + out[3usize] = as alloy_sol_types::EventTopic>::encode_topic( + &self.rewardsSubmissionHash, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for AVSRewardsSubmissionCreated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&AVSRewardsSubmissionCreated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &AVSRewardsSubmissionCreated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `ActivationDelaySet(uint32,uint32)` and selector `0xaf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3`. + ```solidity + event ActivationDelaySet(uint32 oldActivationDelay, uint32 newActivationDelay); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct ActivationDelaySet { + #[allow(missing_docs)] + pub oldActivationDelay: u32, + #[allow(missing_docs)] + pub newActivationDelay: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ActivationDelaySet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "ActivationDelaySet(uint32,uint32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 175u8, 85u8, 124u8, 108u8, 2u8, 194u8, 8u8, 121u8, 72u8, 23u8, 167u8, 5u8, + 96u8, 156u8, 250u8, 147u8, 95u8, 130u8, 115u8, 18u8, 161u8, 173u8, 253u8, + 210u8, 100u8, 148u8, 182u8, 185u8, 93u8, 210u8, 180u8, 179u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + oldActivationDelay: data.0, + newActivationDelay: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.oldActivationDelay, + ), + as alloy_sol_types::SolType>::tokenize( + &self.newActivationDelay, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ActivationDelaySet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ActivationDelaySet> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ActivationDelaySet) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `ClaimerForSet(address,address,address)` and selector `0xbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca312`. + ```solidity + event ClaimerForSet(address indexed earner, address indexed oldClaimer, address indexed claimer); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct ClaimerForSet { + #[allow(missing_docs)] + pub earner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub oldClaimer: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub claimer: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ClaimerForSet { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "ClaimerForSet(address,address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 186u8, 185u8, 71u8, 147u8, 77u8, 66u8, 224u8, 173u8, 32u8, 111u8, 37u8, 201u8, + 202u8, 177u8, 139u8, 91u8, 182u8, 174u8, 20u8, 74u8, 207u8, 176u8, 15u8, 64u8, + 180u8, 227u8, 170u8, 89u8, 89u8, 12u8, 163u8, 18u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + earner: topics.1, + oldClaimer: topics.2, + claimer: topics.3, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.earner.clone(), + self.oldClaimer.clone(), + self.claimer.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.earner, + ); + out[2usize] = ::encode_topic( + &self.oldClaimer, + ); + out[3usize] = ::encode_topic( + &self.claimer, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ClaimerForSet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ClaimerForSet> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ClaimerForSet) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `DistributionRootDisabled(uint32)` and selector `0xd850e6e5dfa497b72661fa73df2923464eaed9dc2ff1d3cb82bccbfeabe5c41e`. + ```solidity + event DistributionRootDisabled(uint32 indexed rootIndex); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct DistributionRootDisabled { + #[allow(missing_docs)] + pub rootIndex: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for DistributionRootDisabled { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + const SIGNATURE: &'static str = "DistributionRootDisabled(uint32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 216u8, 80u8, 230u8, 229u8, 223u8, 164u8, 151u8, 183u8, 38u8, 97u8, 250u8, + 115u8, 223u8, 41u8, 35u8, 70u8, 78u8, 174u8, 217u8, 220u8, 47u8, 241u8, 211u8, + 203u8, 130u8, 188u8, 203u8, 254u8, 171u8, 229u8, 196u8, 30u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + rootIndex: topics.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.rootIndex.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.rootIndex); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for DistributionRootDisabled { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&DistributionRootDisabled> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &DistributionRootDisabled) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `DistributionRootSubmitted(uint32,bytes32,uint32,uint32)` and selector `0xecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08`. + ```solidity + event DistributionRootSubmitted(uint32 indexed rootIndex, bytes32 indexed root, uint32 indexed rewardsCalculationEndTimestamp, uint32 activatedAt); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct DistributionRootSubmitted { + #[allow(missing_docs)] + pub rootIndex: u32, + #[allow(missing_docs)] + pub root: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub rewardsCalculationEndTimestamp: u32, + #[allow(missing_docs)] + pub activatedAt: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for DistributionRootSubmitted { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + const SIGNATURE: &'static str = + "DistributionRootSubmitted(uint32,bytes32,uint32,uint32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 236u8, 216u8, 102u8, 195u8, 193u8, 88u8, 250u8, 0u8, 191u8, 52u8, 216u8, 3u8, + 213u8, 246u8, 2u8, 48u8, 0u8, 181u8, 112u8, 128u8, 188u8, 180u8, 138u8, 240u8, + 4u8, 194u8, 180u8, 180u8, 107u8, 58u8, 253u8, 8u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + rootIndex: topics.1, + root: topics.2, + rewardsCalculationEndTimestamp: topics.3, + activatedAt: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.activatedAt, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.rootIndex.clone(), + self.root.clone(), + self.rewardsCalculationEndTimestamp.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.rootIndex); + out[2usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.root); + out[3usize] = as alloy_sol_types::EventTopic>::encode_topic( + &self.rewardsCalculationEndTimestamp, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for DistributionRootSubmitted { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&DistributionRootSubmitted> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &DistributionRootSubmitted) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `GlobalCommissionBipsSet(uint16,uint16)` and selector `0x8cdc428b0431b82d1619763f443a48197db344ba96905f3949643acd1c863a06`. + ```solidity + event GlobalCommissionBipsSet(uint16 oldGlobalCommissionBips, uint16 newGlobalCommissionBips); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct GlobalCommissionBipsSet { + #[allow(missing_docs)] + pub oldGlobalCommissionBips: u16, + #[allow(missing_docs)] + pub newGlobalCommissionBips: u16, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for GlobalCommissionBipsSet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<16>, + alloy::sol_types::sol_data::Uint<16>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "GlobalCommissionBipsSet(uint16,uint16)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 140u8, 220u8, 66u8, 139u8, 4u8, 49u8, 184u8, 45u8, 22u8, 25u8, 118u8, 63u8, + 68u8, 58u8, 72u8, 25u8, 125u8, 179u8, 68u8, 186u8, 150u8, 144u8, 95u8, 57u8, + 73u8, 100u8, 58u8, 205u8, 28u8, 134u8, 58u8, 6u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + oldGlobalCommissionBips: data.0, + newGlobalCommissionBips: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.oldGlobalCommissionBips, + ), + as alloy_sol_types::SolType>::tokenize( + &self.newGlobalCommissionBips, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for GlobalCommissionBipsSet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&GlobalCommissionBipsSet> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &GlobalCommissionBipsSet) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `RewardsClaimed(bytes32,address,address,address,address,uint256)` and selector `0x9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce31`. + ```solidity + event RewardsClaimed(bytes32 root, address indexed earner, address indexed claimer, address indexed recipient, address token, uint256 claimedAmount); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct RewardsClaimed { + #[allow(missing_docs)] + pub root: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub earner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub claimer: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub recipient: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub token: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub claimedAmount: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for RewardsClaimed { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = + "RewardsClaimed(bytes32,address,address,address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 149u8, 67u8, 219u8, 213u8, 85u8, 128u8, 132u8, 37u8, 134u8, 169u8, 81u8, 240u8, + 56u8, 110u8, 36u8, 214u8, 138u8, 93u8, 249u8, 154u8, 226u8, 158u8, 59u8, 33u8, + 101u8, 136u8, 180u8, 95u8, 214u8, 132u8, 206u8, 49u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + root: data.0, + earner: topics.1, + claimer: topics.2, + recipient: topics.3, + token: data.1, + claimedAmount: data.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.root), + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.claimedAmount), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.earner.clone(), + self.claimer.clone(), + self.recipient.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.earner, + ); + out[2usize] = ::encode_topic( + &self.claimer, + ); + out[3usize] = ::encode_topic( + &self.recipient, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for RewardsClaimed { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&RewardsClaimed> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &RewardsClaimed) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `RewardsForAllSubmitterSet(address,bool,bool)` and selector `0x4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c`. + ```solidity + event RewardsForAllSubmitterSet(address indexed rewardsForAllSubmitter, bool indexed oldValue, bool indexed newValue); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct RewardsForAllSubmitterSet { + #[allow(missing_docs)] + pub rewardsForAllSubmitter: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub oldValue: bool, + #[allow(missing_docs)] + pub newValue: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for RewardsForAllSubmitterSet { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + alloy::sol_types::sol_data::Bool, + ); + const SIGNATURE: &'static str = "RewardsForAllSubmitterSet(address,bool,bool)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 77u8, 230u8, 41u8, 62u8, 102u8, 141u8, 241u8, 57u8, 132u8, 34u8, 225u8, 222u8, + 241u8, 33u8, 24u8, 5u8, 44u8, 21u8, 57u8, 160u8, 60u8, 191u8, 237u8, 193u8, + 69u8, 137u8, 93u8, 72u8, 215u8, 104u8, 95u8, 28u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + rewardsForAllSubmitter: topics.1, + oldValue: topics.2, + newValue: topics.3, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.rewardsForAllSubmitter.clone(), + self.oldValue.clone(), + self.newValue.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.rewardsForAllSubmitter, + ); + out[2usize] = + ::encode_topic( + &self.oldValue, + ); + out[3usize] = + ::encode_topic( + &self.newValue, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for RewardsForAllSubmitterSet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&RewardsForAllSubmitterSet> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &RewardsForAllSubmitterSet) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `RewardsSubmissionForAllCreated(address,uint256,bytes32,((address,uint96)[],address,uint256,uint32,uint32))` and selector `0x51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf270482`. + ```solidity + event RewardsSubmissionForAllCreated(address indexed submitter, uint256 indexed submissionNonce, bytes32 indexed rewardsSubmissionHash, RewardsSubmission rewardsSubmission); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct RewardsSubmissionForAllCreated { + #[allow(missing_docs)] + pub submitter: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub submissionNonce: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub rewardsSubmissionHash: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub rewardsSubmission: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for RewardsSubmissionForAllCreated { + type DataTuple<'a> = (RewardsSubmission,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + const SIGNATURE: &'static str = "RewardsSubmissionForAllCreated(address,uint256,bytes32,((address,uint96)[],address,uint256,uint32,uint32))"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 81u8, 8u8, 139u8, 140u8, 137u8, 98u8, 141u8, 243u8, 168u8, 23u8, 64u8, 2u8, + 194u8, 160u8, 52u8, 208u8, 21u8, 47u8, 206u8, 106u8, 248u8, 65u8, 93u8, 101u8, + 27u8, 42u8, 71u8, 52u8, 191u8, 39u8, 4u8, 130u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + submitter: topics.1, + submissionNonce: topics.2, + rewardsSubmissionHash: topics.3, + rewardsSubmission: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + (::tokenize( + &self.rewardsSubmission, + ),) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.submitter.clone(), + self.submissionNonce.clone(), + self.rewardsSubmissionHash.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.submitter, + ); + out[2usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.submissionNonce); + out[3usize] = as alloy_sol_types::EventTopic>::encode_topic( + &self.rewardsSubmissionHash, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for RewardsSubmissionForAllCreated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&RewardsSubmissionForAllCreated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &RewardsSubmissionForAllCreated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `RewardsUpdaterSet(address,address)` and selector `0x237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb`. + ```solidity + event RewardsUpdaterSet(address indexed oldRewardsUpdater, address indexed newRewardsUpdater); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct RewardsUpdaterSet { + #[allow(missing_docs)] + pub oldRewardsUpdater: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newRewardsUpdater: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for RewardsUpdaterSet { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "RewardsUpdaterSet(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 35u8, 123u8, 130u8, 244u8, 56u8, 215u8, 95u8, 197u8, 104u8, 235u8, 171u8, 72u8, + 75u8, 117u8, 176u8, 29u8, 146u8, 135u8, 185u8, 233u8, 139u8, 73u8, 11u8, 124u8, + 35u8, 34u8, 22u8, 35u8, 182u8, 112u8, 93u8, 187u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + oldRewardsUpdater: topics.1, + newRewardsUpdater: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.oldRewardsUpdater.clone(), + self.newRewardsUpdater.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.oldRewardsUpdater, + ); + out[2usize] = ::encode_topic( + &self.newRewardsUpdater, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for RewardsUpdaterSet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&RewardsUpdaterSet> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &RewardsUpdaterSet) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `CALCULATION_INTERVAL_SECONDS()` and selector `0x9d45c281`. + ```solidity + function CALCULATION_INTERVAL_SECONDS() external view returns (uint32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct CALCULATION_INTERVAL_SECONDSCall {} + ///Container type for the return parameters of the [`CALCULATION_INTERVAL_SECONDS()`](CALCULATION_INTERVAL_SECONDSCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct CALCULATION_INTERVAL_SECONDSReturn { + pub _0: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: CALCULATION_INTERVAL_SECONDSCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for CALCULATION_INTERVAL_SECONDSCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: CALCULATION_INTERVAL_SECONDSReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for CALCULATION_INTERVAL_SECONDSReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for CALCULATION_INTERVAL_SECONDSCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = CALCULATION_INTERVAL_SECONDSReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "CALCULATION_INTERVAL_SECONDS()"; + const SELECTOR: [u8; 4] = [157u8, 69u8, 194u8, 129u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `GENESIS_REWARDS_TIMESTAMP()` and selector `0x131433b4`. + ```solidity + function GENESIS_REWARDS_TIMESTAMP() external view returns (uint32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct GENESIS_REWARDS_TIMESTAMPCall {} + ///Container type for the return parameters of the [`GENESIS_REWARDS_TIMESTAMP()`](GENESIS_REWARDS_TIMESTAMPCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct GENESIS_REWARDS_TIMESTAMPReturn { + pub _0: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: GENESIS_REWARDS_TIMESTAMPCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for GENESIS_REWARDS_TIMESTAMPCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: GENESIS_REWARDS_TIMESTAMPReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for GENESIS_REWARDS_TIMESTAMPReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for GENESIS_REWARDS_TIMESTAMPCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = GENESIS_REWARDS_TIMESTAMPReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "GENESIS_REWARDS_TIMESTAMP()"; + const SELECTOR: [u8; 4] = [19u8, 20u8, 51u8, 180u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `MAX_FUTURE_LENGTH()` and selector `0x04a0c502`. + ```solidity + function MAX_FUTURE_LENGTH() external view returns (uint32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct MAX_FUTURE_LENGTHCall {} + ///Container type for the return parameters of the [`MAX_FUTURE_LENGTH()`](MAX_FUTURE_LENGTHCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct MAX_FUTURE_LENGTHReturn { + pub _0: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: MAX_FUTURE_LENGTHCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for MAX_FUTURE_LENGTHCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: MAX_FUTURE_LENGTHReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for MAX_FUTURE_LENGTHReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for MAX_FUTURE_LENGTHCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = MAX_FUTURE_LENGTHReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "MAX_FUTURE_LENGTH()"; + const SELECTOR: [u8; 4] = [4u8, 160u8, 197u8, 2u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `MAX_RETROACTIVE_LENGTH()` and selector `0x37838ed0`. + ```solidity + function MAX_RETROACTIVE_LENGTH() external view returns (uint32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct MAX_RETROACTIVE_LENGTHCall {} + ///Container type for the return parameters of the [`MAX_RETROACTIVE_LENGTH()`](MAX_RETROACTIVE_LENGTHCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct MAX_RETROACTIVE_LENGTHReturn { + pub _0: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: MAX_RETROACTIVE_LENGTHCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for MAX_RETROACTIVE_LENGTHCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: MAX_RETROACTIVE_LENGTHReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for MAX_RETROACTIVE_LENGTHReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for MAX_RETROACTIVE_LENGTHCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = MAX_RETROACTIVE_LENGTHReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "MAX_RETROACTIVE_LENGTH()"; + const SELECTOR: [u8; 4] = [55u8, 131u8, 142u8, 208u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `MAX_REWARDS_DURATION()` and selector `0xbf21a8aa`. + ```solidity + function MAX_REWARDS_DURATION() external view returns (uint32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct MAX_REWARDS_DURATIONCall {} + ///Container type for the return parameters of the [`MAX_REWARDS_DURATION()`](MAX_REWARDS_DURATIONCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct MAX_REWARDS_DURATIONReturn { + pub _0: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: MAX_REWARDS_DURATIONCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for MAX_REWARDS_DURATIONCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: MAX_REWARDS_DURATIONReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for MAX_REWARDS_DURATIONReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for MAX_REWARDS_DURATIONCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = MAX_REWARDS_DURATIONReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "MAX_REWARDS_DURATION()"; + const SELECTOR: [u8; 4] = [191u8, 33u8, 168u8, 170u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `activationDelay()` and selector `0x3a8c0786`. + ```solidity + function activationDelay() external view returns (uint32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct activationDelayCall {} + ///Container type for the return parameters of the [`activationDelay()`](activationDelayCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct activationDelayReturn { + pub _0: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: activationDelayCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for activationDelayCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: activationDelayReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for activationDelayReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for activationDelayCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = activationDelayReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "activationDelay()"; + const SELECTOR: [u8; 4] = [58u8, 140u8, 7u8, 134u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `calculateEarnerLeafHash((address,bytes32))` and selector `0x149bc872`. + ```solidity + function calculateEarnerLeafHash(EarnerTreeMerkleLeaf memory leaf) external pure returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct calculateEarnerLeafHashCall { + pub leaf: ::RustType, + } + ///Container type for the return parameters of the [`calculateEarnerLeafHash((address,bytes32))`](calculateEarnerLeafHashCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct calculateEarnerLeafHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (EarnerTreeMerkleLeaf,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: calculateEarnerLeafHashCall) -> Self { + (value.leaf,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for calculateEarnerLeafHashCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { leaf: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: calculateEarnerLeafHashReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for calculateEarnerLeafHashReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for calculateEarnerLeafHashCall { + type Parameters<'a> = (EarnerTreeMerkleLeaf,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = calculateEarnerLeafHashReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "calculateEarnerLeafHash((address,bytes32))"; + const SELECTOR: [u8; 4] = [20u8, 155u8, 200u8, 114u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self.leaf),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `calculateTokenLeafHash((address,uint256))` and selector `0xf8cd8448`. + ```solidity + function calculateTokenLeafHash(TokenTreeMerkleLeaf memory leaf) external pure returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct calculateTokenLeafHashCall { + pub leaf: ::RustType, + } + ///Container type for the return parameters of the [`calculateTokenLeafHash((address,uint256))`](calculateTokenLeafHashCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct calculateTokenLeafHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (TokenTreeMerkleLeaf,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: calculateTokenLeafHashCall) -> Self { + (value.leaf,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for calculateTokenLeafHashCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { leaf: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: calculateTokenLeafHashReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for calculateTokenLeafHashReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for calculateTokenLeafHashCall { + type Parameters<'a> = (TokenTreeMerkleLeaf,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = calculateTokenLeafHashReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "calculateTokenLeafHash((address,uint256))"; + const SELECTOR: [u8; 4] = [248u8, 205u8, 132u8, 72u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize( + &self.leaf, + ),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `checkClaim((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[]))` and selector `0x5e9d8348`. + ```solidity + function checkClaim(RewardsMerkleClaim memory claim) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct checkClaimCall { + pub claim: ::RustType, + } + ///Container type for the return parameters of the [`checkClaim((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[]))`](checkClaimCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct checkClaimReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (RewardsMerkleClaim,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: checkClaimCall) -> Self { + (value.claim,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for checkClaimCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { claim: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: checkClaimReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for checkClaimReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for checkClaimCall { + type Parameters<'a> = (RewardsMerkleClaim,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = checkClaimReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "checkClaim((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[]))"; + const SELECTOR: [u8; 4] = [94u8, 157u8, 131u8, 72u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize( + &self.claim, + ),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `claimerFor(address)` and selector `0x2b9f64a4`. + ```solidity + function claimerFor(address earner) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct claimerForCall { + pub earner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`claimerFor(address)`](claimerForCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct claimerForReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: claimerForCall) -> Self { + (value.earner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for claimerForCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { earner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: claimerForReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for claimerForReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for claimerForCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = claimerForReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "claimerFor(address)"; + const SELECTOR: [u8; 4] = [43u8, 159u8, 100u8, 164u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.earner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])` and selector `0xfce36c7d`. + ```solidity + function createAVSRewardsSubmission(RewardsSubmission[] memory rewardsSubmissions) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct createAVSRewardsSubmissionCall { + pub rewardsSubmissions: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])`](createAVSRewardsSubmissionCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct createAVSRewardsSubmissionReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: createAVSRewardsSubmissionCall) -> Self { + (value.rewardsSubmissions,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for createAVSRewardsSubmissionCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + rewardsSubmissions: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: createAVSRewardsSubmissionReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for createAVSRewardsSubmissionReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for createAVSRewardsSubmissionCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = createAVSRewardsSubmissionReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])"; + const SELECTOR: [u8; 4] = [252u8, 227u8, 108u8, 125u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.rewardsSubmissions), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `createRewardsForAllSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])` and selector `0x36af41fa`. + ```solidity + function createRewardsForAllSubmission(RewardsSubmission[] memory rewardsSubmission) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct createRewardsForAllSubmissionCall { + pub rewardsSubmission: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`createRewardsForAllSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])`](createRewardsForAllSubmissionCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct createRewardsForAllSubmissionReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: createRewardsForAllSubmissionCall) -> Self { + (value.rewardsSubmission,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for createRewardsForAllSubmissionCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + rewardsSubmission: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: createRewardsForAllSubmissionReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for createRewardsForAllSubmissionReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for createRewardsForAllSubmissionCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = createRewardsForAllSubmissionReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "createRewardsForAllSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])"; + const SELECTOR: [u8; 4] = [54u8, 175u8, 65u8, 250u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.rewardsSubmission), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `cumulativeClaimed(address,address)` and selector `0x865c6953`. + ```solidity + function cumulativeClaimed(address claimer, address token) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct cumulativeClaimedCall { + pub claimer: alloy::sol_types::private::Address, + pub token: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`cumulativeClaimed(address,address)`](cumulativeClaimedCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct cumulativeClaimedReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: cumulativeClaimedCall) -> Self { + (value.claimer, value.token) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for cumulativeClaimedCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + claimer: tuple.0, + token: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: cumulativeClaimedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for cumulativeClaimedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for cumulativeClaimedCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = cumulativeClaimedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "cumulativeClaimed(address,address)"; + const SELECTOR: [u8; 4] = [134u8, 92u8, 105u8, 83u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.claimer, + ), + ::tokenize( + &self.token, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `currRewardsCalculationEndTimestamp()` and selector `0x4d18cc35`. + ```solidity + function currRewardsCalculationEndTimestamp() external view returns (uint32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct currRewardsCalculationEndTimestampCall {} + ///Container type for the return parameters of the [`currRewardsCalculationEndTimestamp()`](currRewardsCalculationEndTimestampCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct currRewardsCalculationEndTimestampReturn { + pub _0: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: currRewardsCalculationEndTimestampCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for currRewardsCalculationEndTimestampCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: currRewardsCalculationEndTimestampReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for currRewardsCalculationEndTimestampReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for currRewardsCalculationEndTimestampCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = currRewardsCalculationEndTimestampReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "currRewardsCalculationEndTimestamp()"; + const SELECTOR: [u8; 4] = [77u8, 24u8, 204u8, 53u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `disableRoot(uint32)` and selector `0xf96abf2e`. + ```solidity + function disableRoot(uint32 rootIndex) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct disableRootCall { + pub rootIndex: u32, + } + ///Container type for the return parameters of the [`disableRoot(uint32)`](disableRootCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct disableRootReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: disableRootCall) -> Self { + (value.rootIndex,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for disableRootCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { rootIndex: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: disableRootReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for disableRootReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for disableRootCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = disableRootReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "disableRoot(uint32)"; + const SELECTOR: [u8; 4] = [249u8, 106u8, 191u8, 46u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.rootIndex, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getCurrentDistributionRoot()` and selector `0x9be3d4e4`. + ```solidity + function getCurrentDistributionRoot() external view returns (DistributionRoot memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getCurrentDistributionRootCall {} + ///Container type for the return parameters of the [`getCurrentDistributionRoot()`](getCurrentDistributionRootCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getCurrentDistributionRootReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCurrentDistributionRootCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCurrentDistributionRootCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (DistributionRoot,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCurrentDistributionRootReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCurrentDistributionRootReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getCurrentDistributionRootCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getCurrentDistributionRootReturn; + type ReturnTuple<'a> = (DistributionRoot,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getCurrentDistributionRoot()"; + const SELECTOR: [u8; 4] = [155u8, 227u8, 212u8, 228u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getDistributionRootAtIndex(uint256)` and selector `0xde02e503`. + ```solidity + function getDistributionRootAtIndex(uint256 index) external view returns (DistributionRoot memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getDistributionRootAtIndexCall { + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getDistributionRootAtIndex(uint256)`](getDistributionRootAtIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getDistributionRootAtIndexReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getDistributionRootAtIndexCall) -> Self { + (value.index,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getDistributionRootAtIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { index: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (DistributionRoot,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getDistributionRootAtIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getDistributionRootAtIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getDistributionRootAtIndexCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getDistributionRootAtIndexReturn; + type ReturnTuple<'a> = (DistributionRoot,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getDistributionRootAtIndex(uint256)"; + const SELECTOR: [u8; 4] = [222u8, 2u8, 229u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getDistributionRootsLength()` and selector `0x7b8f8b05`. + ```solidity + function getDistributionRootsLength() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getDistributionRootsLengthCall {} + ///Container type for the return parameters of the [`getDistributionRootsLength()`](getDistributionRootsLengthCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getDistributionRootsLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getDistributionRootsLengthCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getDistributionRootsLengthCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getDistributionRootsLengthReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getDistributionRootsLengthReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getDistributionRootsLengthCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getDistributionRootsLengthReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getDistributionRootsLength()"; + const SELECTOR: [u8; 4] = [123u8, 143u8, 139u8, 5u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getRootIndexFromHash(bytes32)` and selector `0xe810ce21`. + ```solidity + function getRootIndexFromHash(bytes32 rootHash) external view returns (uint32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getRootIndexFromHashCall { + pub rootHash: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`getRootIndexFromHash(bytes32)`](getRootIndexFromHashCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getRootIndexFromHashReturn { + pub _0: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getRootIndexFromHashCall) -> Self { + (value.rootHash,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getRootIndexFromHashCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { rootHash: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getRootIndexFromHashReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getRootIndexFromHashReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getRootIndexFromHashCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getRootIndexFromHashReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getRootIndexFromHash(bytes32)"; + const SELECTOR: [u8; 4] = [232u8, 16u8, 206u8, 33u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.rootHash), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `globalOperatorCommissionBips()` and selector `0x092db007`. + ```solidity + function globalOperatorCommissionBips() external view returns (uint16); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct globalOperatorCommissionBipsCall {} + ///Container type for the return parameters of the [`globalOperatorCommissionBips()`](globalOperatorCommissionBipsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct globalOperatorCommissionBipsReturn { + pub _0: u16, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: globalOperatorCommissionBipsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for globalOperatorCommissionBipsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u16,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: globalOperatorCommissionBipsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for globalOperatorCommissionBipsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for globalOperatorCommissionBipsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = globalOperatorCommissionBipsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "globalOperatorCommissionBips()"; + const SELECTOR: [u8; 4] = [9u8, 45u8, 176u8, 7u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `operatorCommissionBips(address,address)` and selector `0x22f19a64`. + ```solidity + function operatorCommissionBips(address operator, address avs) external view returns (uint16); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorCommissionBipsCall { + pub operator: alloy::sol_types::private::Address, + pub avs: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`operatorCommissionBips(address,address)`](operatorCommissionBipsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorCommissionBipsReturn { + pub _0: u16, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorCommissionBipsCall) -> Self { + (value.operator, value.avs) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorCommissionBipsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + avs: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u16,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorCommissionBipsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorCommissionBipsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for operatorCommissionBipsCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = operatorCommissionBipsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "operatorCommissionBips(address,address)"; + const SELECTOR: [u8; 4] = [34u8, 241u8, 154u8, 100u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.avs, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `processClaim((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[]),address)` and selector `0x3ccc861d`. + ```solidity + function processClaim(RewardsMerkleClaim memory claim, address recipient) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct processClaimCall { + pub claim: ::RustType, + pub recipient: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`processClaim((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[]),address)`](processClaimCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct processClaimReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (RewardsMerkleClaim, alloy::sol_types::sol_data::Address); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: processClaimCall) -> Self { + (value.claim, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for processClaimCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + claim: tuple.0, + recipient: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: processClaimReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for processClaimReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for processClaimCall { + type Parameters<'a> = (RewardsMerkleClaim, alloy::sol_types::sol_data::Address); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = processClaimReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "processClaim((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[]),address)"; + const SELECTOR: [u8; 4] = [60u8, 204u8, 134u8, 29u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self.claim), + ::tokenize( + &self.recipient, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `rewardsUpdater()` and selector `0xfbf1e2c1`. + ```solidity + function rewardsUpdater() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct rewardsUpdaterCall {} + ///Container type for the return parameters of the [`rewardsUpdater()`](rewardsUpdaterCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct rewardsUpdaterReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: rewardsUpdaterCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for rewardsUpdaterCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: rewardsUpdaterReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for rewardsUpdaterReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for rewardsUpdaterCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = rewardsUpdaterReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "rewardsUpdater()"; + const SELECTOR: [u8; 4] = [251u8, 241u8, 226u8, 193u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setActivationDelay(uint32)` and selector `0x58baaa3e`. + ```solidity + function setActivationDelay(uint32 _activationDelay) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setActivationDelayCall { + pub _activationDelay: u32, + } + ///Container type for the return parameters of the [`setActivationDelay(uint32)`](setActivationDelayCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setActivationDelayReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setActivationDelayCall) -> Self { + (value._activationDelay,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setActivationDelayCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _activationDelay: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setActivationDelayReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setActivationDelayReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setActivationDelayCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setActivationDelayReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setActivationDelay(uint32)"; + const SELECTOR: [u8; 4] = [88u8, 186u8, 170u8, 62u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._activationDelay, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setClaimerFor(address)` and selector `0xa0169ddd`. + ```solidity + function setClaimerFor(address claimer) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setClaimerForCall { + pub claimer: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setClaimerFor(address)`](setClaimerForCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setClaimerForReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setClaimerForCall) -> Self { + (value.claimer,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setClaimerForCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { claimer: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setClaimerForReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setClaimerForReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setClaimerForCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setClaimerForReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setClaimerFor(address)"; + const SELECTOR: [u8; 4] = [160u8, 22u8, 157u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.claimer, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setGlobalOperatorCommission(uint16)` and selector `0xe221b245`. + ```solidity + function setGlobalOperatorCommission(uint16 _globalCommissionBips) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setGlobalOperatorCommissionCall { + pub _globalCommissionBips: u16, + } + ///Container type for the return parameters of the [`setGlobalOperatorCommission(uint16)`](setGlobalOperatorCommissionCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setGlobalOperatorCommissionReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u16,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setGlobalOperatorCommissionCall) -> Self { + (value._globalCommissionBips,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setGlobalOperatorCommissionCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _globalCommissionBips: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setGlobalOperatorCommissionReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setGlobalOperatorCommissionReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setGlobalOperatorCommissionCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<16>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setGlobalOperatorCommissionReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setGlobalOperatorCommission(uint16)"; + const SELECTOR: [u8; 4] = [226u8, 33u8, 178u8, 69u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._globalCommissionBips, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setRewardsForAllSubmitter(address,bool)` and selector `0x0eb38345`. + ```solidity + function setRewardsForAllSubmitter(address _submitter, bool _newValue) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setRewardsForAllSubmitterCall { + pub _submitter: alloy::sol_types::private::Address, + pub _newValue: bool, + } + ///Container type for the return parameters of the [`setRewardsForAllSubmitter(address,bool)`](setRewardsForAllSubmitterCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setRewardsForAllSubmitterReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address, bool); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setRewardsForAllSubmitterCall) -> Self { + (value._submitter, value._newValue) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setRewardsForAllSubmitterCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _submitter: tuple.0, + _newValue: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setRewardsForAllSubmitterReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setRewardsForAllSubmitterReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setRewardsForAllSubmitterCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setRewardsForAllSubmitterReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setRewardsForAllSubmitter(address,bool)"; + const SELECTOR: [u8; 4] = [14u8, 179u8, 131u8, 69u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._submitter, + ), + ::tokenize( + &self._newValue, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setRewardsUpdater(address)` and selector `0x863cb9a9`. + ```solidity + function setRewardsUpdater(address _rewardsUpdater) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setRewardsUpdaterCall { + pub _rewardsUpdater: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setRewardsUpdater(address)`](setRewardsUpdaterCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setRewardsUpdaterReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setRewardsUpdaterCall) -> Self { + (value._rewardsUpdater,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setRewardsUpdaterCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _rewardsUpdater: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setRewardsUpdaterReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setRewardsUpdaterReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setRewardsUpdaterCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setRewardsUpdaterReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setRewardsUpdater(address)"; + const SELECTOR: [u8; 4] = [134u8, 60u8, 185u8, 169u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._rewardsUpdater, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `submitRoot(bytes32,uint32)` and selector `0x3efe1db6`. + ```solidity + function submitRoot(bytes32 root, uint32 rewardsCalculationEndTimestamp) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct submitRootCall { + pub root: alloy::sol_types::private::FixedBytes<32>, + pub rewardsCalculationEndTimestamp: u32, + } + ///Container type for the return parameters of the [`submitRoot(bytes32,uint32)`](submitRootCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct submitRootReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: submitRootCall) -> Self { + (value.root, value.rewardsCalculationEndTimestamp) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for submitRootCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + root: tuple.0, + rewardsCalculationEndTimestamp: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: submitRootReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for submitRootReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for submitRootCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = submitRootReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "submitRoot(bytes32,uint32)"; + const SELECTOR: [u8; 4] = [62u8, 254u8, 29u8, 182u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.root), + as alloy_sol_types::SolType>::tokenize( + &self.rewardsCalculationEndTimestamp, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IRewardsCoordinator`](self) function calls. + pub enum IRewardsCoordinatorCalls { + CALCULATION_INTERVAL_SECONDS(CALCULATION_INTERVAL_SECONDSCall), + GENESIS_REWARDS_TIMESTAMP(GENESIS_REWARDS_TIMESTAMPCall), + MAX_FUTURE_LENGTH(MAX_FUTURE_LENGTHCall), + MAX_RETROACTIVE_LENGTH(MAX_RETROACTIVE_LENGTHCall), + MAX_REWARDS_DURATION(MAX_REWARDS_DURATIONCall), + activationDelay(activationDelayCall), + calculateEarnerLeafHash(calculateEarnerLeafHashCall), + calculateTokenLeafHash(calculateTokenLeafHashCall), + checkClaim(checkClaimCall), + claimerFor(claimerForCall), + createAVSRewardsSubmission(createAVSRewardsSubmissionCall), + createRewardsForAllSubmission(createRewardsForAllSubmissionCall), + cumulativeClaimed(cumulativeClaimedCall), + currRewardsCalculationEndTimestamp(currRewardsCalculationEndTimestampCall), + disableRoot(disableRootCall), + getCurrentDistributionRoot(getCurrentDistributionRootCall), + getDistributionRootAtIndex(getDistributionRootAtIndexCall), + getDistributionRootsLength(getDistributionRootsLengthCall), + getRootIndexFromHash(getRootIndexFromHashCall), + globalOperatorCommissionBips(globalOperatorCommissionBipsCall), + operatorCommissionBips(operatorCommissionBipsCall), + processClaim(processClaimCall), + rewardsUpdater(rewardsUpdaterCall), + setActivationDelay(setActivationDelayCall), + setClaimerFor(setClaimerForCall), + setGlobalOperatorCommission(setGlobalOperatorCommissionCall), + setRewardsForAllSubmitter(setRewardsForAllSubmitterCall), + setRewardsUpdater(setRewardsUpdaterCall), + submitRoot(submitRootCall), + } + #[automatically_derived] + impl IRewardsCoordinatorCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [4u8, 160u8, 197u8, 2u8], + [9u8, 45u8, 176u8, 7u8], + [14u8, 179u8, 131u8, 69u8], + [19u8, 20u8, 51u8, 180u8], + [20u8, 155u8, 200u8, 114u8], + [34u8, 241u8, 154u8, 100u8], + [43u8, 159u8, 100u8, 164u8], + [54u8, 175u8, 65u8, 250u8], + [55u8, 131u8, 142u8, 208u8], + [58u8, 140u8, 7u8, 134u8], + [60u8, 204u8, 134u8, 29u8], + [62u8, 254u8, 29u8, 182u8], + [77u8, 24u8, 204u8, 53u8], + [88u8, 186u8, 170u8, 62u8], + [94u8, 157u8, 131u8, 72u8], + [123u8, 143u8, 139u8, 5u8], + [134u8, 60u8, 185u8, 169u8], + [134u8, 92u8, 105u8, 83u8], + [155u8, 227u8, 212u8, 228u8], + [157u8, 69u8, 194u8, 129u8], + [160u8, 22u8, 157u8, 221u8], + [191u8, 33u8, 168u8, 170u8], + [222u8, 2u8, 229u8, 3u8], + [226u8, 33u8, 178u8, 69u8], + [232u8, 16u8, 206u8, 33u8], + [248u8, 205u8, 132u8, 72u8], + [249u8, 106u8, 191u8, 46u8], + [251u8, 241u8, 226u8, 193u8], + [252u8, 227u8, 108u8, 125u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IRewardsCoordinatorCalls { + const NAME: &'static str = "IRewardsCoordinatorCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 29usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::CALCULATION_INTERVAL_SECONDS(_) => { + ::SELECTOR + } + Self::GENESIS_REWARDS_TIMESTAMP(_) => { + ::SELECTOR + } + Self::MAX_FUTURE_LENGTH(_) => { + ::SELECTOR + } + Self::MAX_RETROACTIVE_LENGTH(_) => { + ::SELECTOR + } + Self::MAX_REWARDS_DURATION(_) => { + ::SELECTOR + } + Self::activationDelay(_) => { + ::SELECTOR + } + Self::calculateEarnerLeafHash(_) => { + ::SELECTOR + } + Self::calculateTokenLeafHash(_) => { + ::SELECTOR + } + Self::checkClaim(_) => ::SELECTOR, + Self::claimerFor(_) => ::SELECTOR, + Self::createAVSRewardsSubmission(_) => { + ::SELECTOR + } + Self::createRewardsForAllSubmission(_) => { + ::SELECTOR + } + Self::cumulativeClaimed(_) => { + ::SELECTOR + } + Self::currRewardsCalculationEndTimestamp(_) => { + ::SELECTOR + } + Self::disableRoot(_) => ::SELECTOR, + Self::getCurrentDistributionRoot(_) => { + ::SELECTOR + } + Self::getDistributionRootAtIndex(_) => { + ::SELECTOR + } + Self::getDistributionRootsLength(_) => { + ::SELECTOR + } + Self::getRootIndexFromHash(_) => { + ::SELECTOR + } + Self::globalOperatorCommissionBips(_) => { + ::SELECTOR + } + Self::operatorCommissionBips(_) => { + ::SELECTOR + } + Self::processClaim(_) => ::SELECTOR, + Self::rewardsUpdater(_) => { + ::SELECTOR + } + Self::setActivationDelay(_) => { + ::SELECTOR + } + Self::setClaimerFor(_) => ::SELECTOR, + Self::setGlobalOperatorCommission(_) => { + ::SELECTOR + } + Self::setRewardsForAllSubmitter(_) => { + ::SELECTOR + } + Self::setRewardsUpdater(_) => { + ::SELECTOR + } + Self::submitRoot(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn MAX_FUTURE_LENGTH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRewardsCoordinatorCalls::MAX_FUTURE_LENGTH) + } + MAX_FUTURE_LENGTH + }, + { + fn globalOperatorCommissionBips( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IRewardsCoordinatorCalls::globalOperatorCommissionBips) + } + globalOperatorCommissionBips + }, + { + fn setRewardsForAllSubmitter( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRewardsCoordinatorCalls::setRewardsForAllSubmitter) + } + setRewardsForAllSubmitter + }, + { + fn GENESIS_REWARDS_TIMESTAMP( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRewardsCoordinatorCalls::GENESIS_REWARDS_TIMESTAMP) + } + GENESIS_REWARDS_TIMESTAMP + }, + { + fn calculateEarnerLeafHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRewardsCoordinatorCalls::calculateEarnerLeafHash) + } + calculateEarnerLeafHash + }, + { + fn operatorCommissionBips( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRewardsCoordinatorCalls::operatorCommissionBips) + } + operatorCommissionBips + }, + { + fn claimerFor( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IRewardsCoordinatorCalls::claimerFor) + } + claimerFor + }, + { + fn createRewardsForAllSubmission( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IRewardsCoordinatorCalls::createRewardsForAllSubmission) + } + createRewardsForAllSubmission + }, + { + fn MAX_RETROACTIVE_LENGTH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRewardsCoordinatorCalls::MAX_RETROACTIVE_LENGTH) + } + MAX_RETROACTIVE_LENGTH + }, + { + fn activationDelay( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRewardsCoordinatorCalls::activationDelay) + } + activationDelay + }, + { + fn processClaim( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRewardsCoordinatorCalls::processClaim) + } + processClaim + }, + { + fn submitRoot( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IRewardsCoordinatorCalls::submitRoot) + } + submitRoot + }, + { + fn currRewardsCalculationEndTimestamp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + IRewardsCoordinatorCalls::currRewardsCalculationEndTimestamp, + ) + } + currRewardsCalculationEndTimestamp + }, + { + fn setActivationDelay( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRewardsCoordinatorCalls::setActivationDelay) + } + setActivationDelay + }, + { + fn checkClaim( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IRewardsCoordinatorCalls::checkClaim) + } + checkClaim + }, + { + fn getDistributionRootsLength( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IRewardsCoordinatorCalls::getDistributionRootsLength) + } + getDistributionRootsLength + }, + { + fn setRewardsUpdater( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRewardsCoordinatorCalls::setRewardsUpdater) + } + setRewardsUpdater + }, + { + fn cumulativeClaimed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRewardsCoordinatorCalls::cumulativeClaimed) + } + cumulativeClaimed + }, + { + fn getCurrentDistributionRoot( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IRewardsCoordinatorCalls::getCurrentDistributionRoot) + } + getCurrentDistributionRoot + }, + { + fn CALCULATION_INTERVAL_SECONDS( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IRewardsCoordinatorCalls::CALCULATION_INTERVAL_SECONDS) + } + CALCULATION_INTERVAL_SECONDS + }, + { + fn setClaimerFor( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRewardsCoordinatorCalls::setClaimerFor) + } + setClaimerFor + }, + { + fn MAX_REWARDS_DURATION( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRewardsCoordinatorCalls::MAX_REWARDS_DURATION) + } + MAX_REWARDS_DURATION + }, + { + fn getDistributionRootAtIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IRewardsCoordinatorCalls::getDistributionRootAtIndex) + } + getDistributionRootAtIndex + }, + { + fn setGlobalOperatorCommission( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IRewardsCoordinatorCalls::setGlobalOperatorCommission) + } + setGlobalOperatorCommission + }, + { + fn getRootIndexFromHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRewardsCoordinatorCalls::getRootIndexFromHash) + } + getRootIndexFromHash + }, + { + fn calculateTokenLeafHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRewardsCoordinatorCalls::calculateTokenLeafHash) + } + calculateTokenLeafHash + }, + { + fn disableRoot( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRewardsCoordinatorCalls::disableRoot) + } + disableRoot + }, + { + fn rewardsUpdater( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IRewardsCoordinatorCalls::rewardsUpdater) + } + rewardsUpdater + }, + { + fn createAVSRewardsSubmission( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IRewardsCoordinatorCalls::createAVSRewardsSubmission) + } + createAVSRewardsSubmission + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::CALCULATION_INTERVAL_SECONDS(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::GENESIS_REWARDS_TIMESTAMP(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::MAX_FUTURE_LENGTH(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::MAX_RETROACTIVE_LENGTH(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::MAX_REWARDS_DURATION(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::activationDelay(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::calculateEarnerLeafHash(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::calculateTokenLeafHash(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::checkClaim(inner) => { + ::abi_encoded_size(inner) + } + Self::claimerFor(inner) => { + ::abi_encoded_size(inner) + } + Self::createAVSRewardsSubmission(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::createRewardsForAllSubmission(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::cumulativeClaimed(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::currRewardsCalculationEndTimestamp(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::disableRoot(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getCurrentDistributionRoot(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getDistributionRootAtIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getDistributionRootsLength(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getRootIndexFromHash(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::globalOperatorCommissionBips(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::operatorCommissionBips(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::processClaim(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::rewardsUpdater(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setActivationDelay(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setClaimerFor(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setGlobalOperatorCommission(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setRewardsForAllSubmitter(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setRewardsUpdater(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::submitRoot(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::CALCULATION_INTERVAL_SECONDS(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::GENESIS_REWARDS_TIMESTAMP(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::MAX_FUTURE_LENGTH(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::MAX_RETROACTIVE_LENGTH(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::MAX_REWARDS_DURATION(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::activationDelay(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::calculateEarnerLeafHash(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::calculateTokenLeafHash(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::checkClaim(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::claimerFor(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::createAVSRewardsSubmission(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::createRewardsForAllSubmission(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::cumulativeClaimed(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::currRewardsCalculationEndTimestamp(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::disableRoot(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getCurrentDistributionRoot(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getDistributionRootAtIndex(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getDistributionRootsLength(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getRootIndexFromHash(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::globalOperatorCommissionBips(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::operatorCommissionBips(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::processClaim(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::rewardsUpdater(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setActivationDelay(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setClaimerFor(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setGlobalOperatorCommission(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setRewardsForAllSubmitter(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setRewardsUpdater(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::submitRoot(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`IRewardsCoordinator`](self) events. + pub enum IRewardsCoordinatorEvents { + AVSRewardsSubmissionCreated(AVSRewardsSubmissionCreated), + ActivationDelaySet(ActivationDelaySet), + ClaimerForSet(ClaimerForSet), + DistributionRootDisabled(DistributionRootDisabled), + DistributionRootSubmitted(DistributionRootSubmitted), + GlobalCommissionBipsSet(GlobalCommissionBipsSet), + RewardsClaimed(RewardsClaimed), + RewardsForAllSubmitterSet(RewardsForAllSubmitterSet), + RewardsSubmissionForAllCreated(RewardsSubmissionForAllCreated), + RewardsUpdaterSet(RewardsUpdaterSet), + } + #[automatically_derived] + impl IRewardsCoordinatorEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 35u8, 123u8, 130u8, 244u8, 56u8, 215u8, 95u8, 197u8, 104u8, 235u8, 171u8, 72u8, + 75u8, 117u8, 176u8, 29u8, 146u8, 135u8, 185u8, 233u8, 139u8, 73u8, 11u8, 124u8, + 35u8, 34u8, 22u8, 35u8, 182u8, 112u8, 93u8, 187u8, + ], + [ + 69u8, 10u8, 54u8, 122u8, 56u8, 12u8, 78u8, 51u8, 158u8, 90u8, 231u8, 52u8, 12u8, + 132u8, 100u8, 239u8, 39u8, 175u8, 119u8, 129u8, 173u8, 153u8, 69u8, 207u8, 232u8, + 171u8, 216u8, 40u8, 248u8, 158u8, 98u8, 129u8, + ], + [ + 77u8, 230u8, 41u8, 62u8, 102u8, 141u8, 241u8, 57u8, 132u8, 34u8, 225u8, 222u8, + 241u8, 33u8, 24u8, 5u8, 44u8, 21u8, 57u8, 160u8, 60u8, 191u8, 237u8, 193u8, 69u8, + 137u8, 93u8, 72u8, 215u8, 104u8, 95u8, 28u8, + ], + [ + 81u8, 8u8, 139u8, 140u8, 137u8, 98u8, 141u8, 243u8, 168u8, 23u8, 64u8, 2u8, 194u8, + 160u8, 52u8, 208u8, 21u8, 47u8, 206u8, 106u8, 248u8, 65u8, 93u8, 101u8, 27u8, 42u8, + 71u8, 52u8, 191u8, 39u8, 4u8, 130u8, + ], + [ + 140u8, 220u8, 66u8, 139u8, 4u8, 49u8, 184u8, 45u8, 22u8, 25u8, 118u8, 63u8, 68u8, + 58u8, 72u8, 25u8, 125u8, 179u8, 68u8, 186u8, 150u8, 144u8, 95u8, 57u8, 73u8, 100u8, + 58u8, 205u8, 28u8, 134u8, 58u8, 6u8, + ], + [ + 149u8, 67u8, 219u8, 213u8, 85u8, 128u8, 132u8, 37u8, 134u8, 169u8, 81u8, 240u8, + 56u8, 110u8, 36u8, 214u8, 138u8, 93u8, 249u8, 154u8, 226u8, 158u8, 59u8, 33u8, + 101u8, 136u8, 180u8, 95u8, 214u8, 132u8, 206u8, 49u8, + ], + [ + 175u8, 85u8, 124u8, 108u8, 2u8, 194u8, 8u8, 121u8, 72u8, 23u8, 167u8, 5u8, 96u8, + 156u8, 250u8, 147u8, 95u8, 130u8, 115u8, 18u8, 161u8, 173u8, 253u8, 210u8, 100u8, + 148u8, 182u8, 185u8, 93u8, 210u8, 180u8, 179u8, + ], + [ + 186u8, 185u8, 71u8, 147u8, 77u8, 66u8, 224u8, 173u8, 32u8, 111u8, 37u8, 201u8, + 202u8, 177u8, 139u8, 91u8, 182u8, 174u8, 20u8, 74u8, 207u8, 176u8, 15u8, 64u8, + 180u8, 227u8, 170u8, 89u8, 89u8, 12u8, 163u8, 18u8, + ], + [ + 216u8, 80u8, 230u8, 229u8, 223u8, 164u8, 151u8, 183u8, 38u8, 97u8, 250u8, 115u8, + 223u8, 41u8, 35u8, 70u8, 78u8, 174u8, 217u8, 220u8, 47u8, 241u8, 211u8, 203u8, + 130u8, 188u8, 203u8, 254u8, 171u8, 229u8, 196u8, 30u8, + ], + [ + 236u8, 216u8, 102u8, 195u8, 193u8, 88u8, 250u8, 0u8, 191u8, 52u8, 216u8, 3u8, + 213u8, 246u8, 2u8, 48u8, 0u8, 181u8, 112u8, 128u8, 188u8, 180u8, 138u8, 240u8, 4u8, + 194u8, 180u8, 180u8, 107u8, 58u8, 253u8, 8u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IRewardsCoordinatorEvents { + const NAME: &'static str = "IRewardsCoordinatorEvents"; + const COUNT: usize = 10usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some( + ::SIGNATURE_HASH, + ) => ::decode_raw_log( + topics, data, validate, + ) + .map(Self::AVSRewardsSubmissionCreated), + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ActivationDelaySet) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ClaimerForSet) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::DistributionRootDisabled) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::DistributionRootSubmitted) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::GlobalCommissionBipsSet) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::RewardsClaimed) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::RewardsForAllSubmitterSet) + } + Some( + ::SIGNATURE_HASH, + ) => ::decode_raw_log( + topics, data, validate, + ) + .map(Self::RewardsSubmissionForAllCreated), + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::RewardsUpdaterSet) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for IRewardsCoordinatorEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::AVSRewardsSubmissionCreated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ActivationDelaySet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ClaimerForSet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::DistributionRootDisabled(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::DistributionRootSubmitted(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::GlobalCommissionBipsSet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::RewardsClaimed(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::RewardsForAllSubmitterSet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::RewardsSubmissionForAllCreated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::RewardsUpdaterSet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::AVSRewardsSubmissionCreated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ActivationDelaySet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ClaimerForSet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::DistributionRootDisabled(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::DistributionRootSubmitted(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::GlobalCommissionBipsSet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::RewardsClaimed(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::RewardsForAllSubmitterSet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::RewardsSubmissionForAllCreated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::RewardsUpdaterSet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IRewardsCoordinator`](self) contract instance. + + See the [wrapper's documentation](`IRewardsCoordinatorInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IRewardsCoordinatorInstance { + IRewardsCoordinatorInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + IRewardsCoordinatorInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IRewardsCoordinatorInstance::::deploy_builder(provider) + } + /**A [`IRewardsCoordinator`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IRewardsCoordinator`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IRewardsCoordinatorInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IRewardsCoordinatorInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IRewardsCoordinatorInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IRewardsCoordinatorInstance + { + /**Creates a new wrapper around an on-chain [`IRewardsCoordinator`](self) contract instance. + + See the [wrapper's documentation](`IRewardsCoordinatorInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IRewardsCoordinatorInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IRewardsCoordinatorInstance { + IRewardsCoordinatorInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IRewardsCoordinatorInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`CALCULATION_INTERVAL_SECONDS`] function. + pub fn CALCULATION_INTERVAL_SECONDS( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&CALCULATION_INTERVAL_SECONDSCall {}) + } + ///Creates a new call builder for the [`GENESIS_REWARDS_TIMESTAMP`] function. + pub fn GENESIS_REWARDS_TIMESTAMP( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&GENESIS_REWARDS_TIMESTAMPCall {}) + } + ///Creates a new call builder for the [`MAX_FUTURE_LENGTH`] function. + pub fn MAX_FUTURE_LENGTH( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&MAX_FUTURE_LENGTHCall {}) + } + ///Creates a new call builder for the [`MAX_RETROACTIVE_LENGTH`] function. + pub fn MAX_RETROACTIVE_LENGTH( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&MAX_RETROACTIVE_LENGTHCall {}) + } + ///Creates a new call builder for the [`MAX_REWARDS_DURATION`] function. + pub fn MAX_REWARDS_DURATION( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&MAX_REWARDS_DURATIONCall {}) + } + ///Creates a new call builder for the [`activationDelay`] function. + pub fn activationDelay( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&activationDelayCall {}) + } + ///Creates a new call builder for the [`calculateEarnerLeafHash`] function. + pub fn calculateEarnerLeafHash( + &self, + leaf: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&calculateEarnerLeafHashCall { leaf }) + } + ///Creates a new call builder for the [`calculateTokenLeafHash`] function. + pub fn calculateTokenLeafHash( + &self, + leaf: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&calculateTokenLeafHashCall { leaf }) + } + ///Creates a new call builder for the [`checkClaim`] function. + pub fn checkClaim( + &self, + claim: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&checkClaimCall { claim }) + } + ///Creates a new call builder for the [`claimerFor`] function. + pub fn claimerFor( + &self, + earner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&claimerForCall { earner }) + } + ///Creates a new call builder for the [`createAVSRewardsSubmission`] function. + pub fn createAVSRewardsSubmission( + &self, + rewardsSubmissions: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&createAVSRewardsSubmissionCall { rewardsSubmissions }) + } + ///Creates a new call builder for the [`createRewardsForAllSubmission`] function. + pub fn createRewardsForAllSubmission( + &self, + rewardsSubmission: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&createRewardsForAllSubmissionCall { rewardsSubmission }) + } + ///Creates a new call builder for the [`cumulativeClaimed`] function. + pub fn cumulativeClaimed( + &self, + claimer: alloy::sol_types::private::Address, + token: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&cumulativeClaimedCall { claimer, token }) + } + ///Creates a new call builder for the [`currRewardsCalculationEndTimestamp`] function. + pub fn currRewardsCalculationEndTimestamp( + &self, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&currRewardsCalculationEndTimestampCall {}) + } + ///Creates a new call builder for the [`disableRoot`] function. + pub fn disableRoot( + &self, + rootIndex: u32, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&disableRootCall { rootIndex }) + } + ///Creates a new call builder for the [`getCurrentDistributionRoot`] function. + pub fn getCurrentDistributionRoot( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getCurrentDistributionRootCall {}) + } + ///Creates a new call builder for the [`getDistributionRootAtIndex`] function. + pub fn getDistributionRootAtIndex( + &self, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getDistributionRootAtIndexCall { index }) + } + ///Creates a new call builder for the [`getDistributionRootsLength`] function. + pub fn getDistributionRootsLength( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getDistributionRootsLengthCall {}) + } + ///Creates a new call builder for the [`getRootIndexFromHash`] function. + pub fn getRootIndexFromHash( + &self, + rootHash: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getRootIndexFromHashCall { rootHash }) + } + ///Creates a new call builder for the [`globalOperatorCommissionBips`] function. + pub fn globalOperatorCommissionBips( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&globalOperatorCommissionBipsCall {}) + } + ///Creates a new call builder for the [`operatorCommissionBips`] function. + pub fn operatorCommissionBips( + &self, + operator: alloy::sol_types::private::Address, + avs: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&operatorCommissionBipsCall { operator, avs }) + } + ///Creates a new call builder for the [`processClaim`] function. + pub fn processClaim( + &self, + claim: ::RustType, + recipient: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&processClaimCall { claim, recipient }) + } + ///Creates a new call builder for the [`rewardsUpdater`] function. + pub fn rewardsUpdater( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&rewardsUpdaterCall {}) + } + ///Creates a new call builder for the [`setActivationDelay`] function. + pub fn setActivationDelay( + &self, + _activationDelay: u32, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setActivationDelayCall { _activationDelay }) + } + ///Creates a new call builder for the [`setClaimerFor`] function. + pub fn setClaimerFor( + &self, + claimer: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setClaimerForCall { claimer }) + } + ///Creates a new call builder for the [`setGlobalOperatorCommission`] function. + pub fn setGlobalOperatorCommission( + &self, + _globalCommissionBips: u16, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setGlobalOperatorCommissionCall { + _globalCommissionBips, + }) + } + ///Creates a new call builder for the [`setRewardsForAllSubmitter`] function. + pub fn setRewardsForAllSubmitter( + &self, + _submitter: alloy::sol_types::private::Address, + _newValue: bool, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setRewardsForAllSubmitterCall { + _submitter, + _newValue, + }) + } + ///Creates a new call builder for the [`setRewardsUpdater`] function. + pub fn setRewardsUpdater( + &self, + _rewardsUpdater: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setRewardsUpdaterCall { _rewardsUpdater }) + } + ///Creates a new call builder for the [`submitRoot`] function. + pub fn submitRoot( + &self, + root: alloy::sol_types::private::FixedBytes<32>, + rewardsCalculationEndTimestamp: u32, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&submitRootCall { + root, + rewardsCalculationEndTimestamp, + }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IRewardsCoordinatorInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`AVSRewardsSubmissionCreated`] event. + pub fn AVSRewardsSubmissionCreated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ActivationDelaySet`] event. + pub fn ActivationDelaySet_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ClaimerForSet`] event. + pub fn ClaimerForSet_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`DistributionRootDisabled`] event. + pub fn DistributionRootDisabled_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`DistributionRootSubmitted`] event. + pub fn DistributionRootSubmitted_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`GlobalCommissionBipsSet`] event. + pub fn GlobalCommissionBipsSet_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`RewardsClaimed`] event. + pub fn RewardsClaimed_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`RewardsForAllSubmitterSet`] event. + pub fn RewardsForAllSubmitterSet_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`RewardsSubmissionForAllCreated`] event. + pub fn RewardsSubmissionForAllCreated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`RewardsUpdaterSet`] event. + pub fn RewardsUpdaterSet_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/iservicemanager.rs b/crates/utils/src/iservicemanager.rs new file mode 100644 index 00000000..9be99315 --- /dev/null +++ b/crates/utils/src/iservicemanager.rs @@ -0,0 +1,2655 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library IRewardsCoordinator { + struct RewardsSubmission { StrategyAndMultiplier[] strategiesAndMultipliers; address token; uint256 amount; uint32 startTimestamp; uint32 duration; } + struct StrategyAndMultiplier { address strategy; uint96 multiplier; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IRewardsCoordinator { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct RewardsSubmission { StrategyAndMultiplier[] strategiesAndMultipliers; address token; uint256 amount; uint32 startTimestamp; uint32 duration; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct RewardsSubmission { + pub strategiesAndMultipliers: alloy::sol_types::private::Vec< + ::RustType, + >, + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::primitives::aliases::U256, + pub startTimestamp: u32, + pub duration: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + u32, + u32, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: RewardsSubmission) -> Self { + ( + value.strategiesAndMultipliers, + value.token, + value.amount, + value.startTimestamp, + value.duration, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for RewardsSubmission { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategiesAndMultipliers: tuple.0, + token: tuple.1, + amount: tuple.2, + startTimestamp: tuple.3, + duration: tuple.4, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for RewardsSubmission { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for RewardsSubmission { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.strategiesAndMultipliers, + ), + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.startTimestamp), + as alloy_sol_types::SolType>::tokenize(&self.duration), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for RewardsSubmission { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for RewardsSubmission { + const NAME: &'static str = "RewardsSubmission"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "RewardsSubmission(StrategyAndMultiplier[] strategiesAndMultipliers,address token,uint256 amount,uint32 startTimestamp,uint32 duration)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + let mut components = alloy_sol_types::private::Vec::with_capacity(1); + components.push( + ::eip712_root_type(), + ); + components.extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word( + &self.strategiesAndMultipliers, + ) + .0, + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.startTimestamp, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.duration) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for RewardsSubmission { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.strategiesAndMultipliers, + ) + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.startTimestamp, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.duration, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.strategiesAndMultipliers, + out, + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.startTimestamp, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.duration, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct StrategyAndMultiplier { address strategy; uint96 multiplier; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct StrategyAndMultiplier { + pub strategy: alloy::sol_types::private::Address, + pub multiplier: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<96>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U96, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: StrategyAndMultiplier) -> Self { + (value.strategy, value.multiplier) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for StrategyAndMultiplier { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategy: tuple.0, + multiplier: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for StrategyAndMultiplier { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for StrategyAndMultiplier { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.multiplier, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for StrategyAndMultiplier { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for StrategyAndMultiplier { + const NAME: &'static str = "StrategyAndMultiplier"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "StrategyAndMultiplier(address strategy,uint96 multiplier)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.strategy, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.multiplier) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for StrategyAndMultiplier { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.strategy, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.multiplier, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.strategy, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.multiplier, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IRewardsCoordinator`](self) contract instance. + + See the [wrapper's documentation](`IRewardsCoordinatorInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IRewardsCoordinatorInstance { + IRewardsCoordinatorInstance::::new(address, provider) + } + /**A [`IRewardsCoordinator`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IRewardsCoordinator`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IRewardsCoordinatorInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IRewardsCoordinatorInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IRewardsCoordinatorInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IRewardsCoordinatorInstance + { + /**Creates a new wrapper around an on-chain [`IRewardsCoordinator`](self) contract instance. + + See the [wrapper's documentation](`IRewardsCoordinatorInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IRewardsCoordinatorInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IRewardsCoordinatorInstance { + IRewardsCoordinatorInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IRewardsCoordinatorInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IRewardsCoordinatorInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library ISignatureUtils { + struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ISignatureUtils { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SignatureWithSaltAndExpiry { + pub signature: alloy::sol_types::private::Bytes, + pub salt: alloy::sol_types::private::FixedBytes<32>, + pub expiry: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: SignatureWithSaltAndExpiry) -> Self { + (value.signature, value.salt, value.expiry) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for SignatureWithSaltAndExpiry { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + signature: tuple.0, + salt: tuple.1, + expiry: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for SignatureWithSaltAndExpiry { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for SignatureWithSaltAndExpiry { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.signature, + ), + as alloy_sol_types::SolType>::tokenize(&self.salt), + as alloy_sol_types::SolType>::tokenize(&self.expiry), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for SignatureWithSaltAndExpiry { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for SignatureWithSaltAndExpiry { + const NAME: &'static str = "SignatureWithSaltAndExpiry"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "SignatureWithSaltAndExpiry(bytes signature,bytes32 salt,uint256 expiry)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.signature, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.salt) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.expiry) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for SignatureWithSaltAndExpiry { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.signature, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.salt) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.expiry, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.signature, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.salt, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.expiry, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ISignatureUtilsInstance { + ISignatureUtilsInstance::::new(address, provider) + } + /**A [`ISignatureUtils`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ISignatureUtils`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ISignatureUtilsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ISignatureUtilsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ISignatureUtilsInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ISignatureUtilsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ISignatureUtilsInstance { + ISignatureUtilsInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library IRewardsCoordinator { + struct RewardsSubmission { + StrategyAndMultiplier[] strategiesAndMultipliers; + address token; + uint256 amount; + uint32 startTimestamp; + uint32 duration; + } + struct StrategyAndMultiplier { + address strategy; + uint96 multiplier; + } +} + +library ISignatureUtils { + struct SignatureWithSaltAndExpiry { + bytes signature; + bytes32 salt; + uint256 expiry; + } +} + +interface IServiceManager { + event RewardsInitiatorUpdated(address prevRewardsInitiator, address newRewardsInitiator); + + function avsDirectory() external view returns (address); + function createAVSRewardsSubmission(IRewardsCoordinator.RewardsSubmission[] memory rewardsSubmissions) external; + function deregisterOperatorFromAVS(address operator) external; + function getOperatorRestakedStrategies(address operator) external view returns (address[] memory); + function getRestakeableStrategies() external view returns (address[] memory); + function registerOperatorToAVS(address operator, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external; + function updateAVSMetadataURI(string memory _metadataURI) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "avsDirectory", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "createAVSRewardsSubmission", + "inputs": [ + { + "name": "rewardsSubmissions", + "type": "tuple[]", + "internalType": "struct IRewardsCoordinator.RewardsSubmission[]", + "components": [ + { + "name": "strategiesAndMultipliers", + "type": "tuple[]", + "internalType": "struct IRewardsCoordinator.StrategyAndMultiplier[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "startTimestamp", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "duration", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "deregisterOperatorFromAVS", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getOperatorRestakedStrategies", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getRestakeableStrategies", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registerOperatorToAVS", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "operatorSignature", + "type": "tuple", + "internalType": "struct ISignatureUtils.SignatureWithSaltAndExpiry", + "components": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "salt", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateAVSMetadataURI", + "inputs": [ + { + "name": "_metadataURI", + "type": "string", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "RewardsInitiatorUpdated", + "inputs": [ + { + "name": "prevRewardsInitiator", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newRewardsInitiator", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IServiceManager { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Event with signature `RewardsInitiatorUpdated(address,address)` and selector `0xe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3`. + ```solidity + event RewardsInitiatorUpdated(address prevRewardsInitiator, address newRewardsInitiator); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct RewardsInitiatorUpdated { + #[allow(missing_docs)] + pub prevRewardsInitiator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newRewardsInitiator: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for RewardsInitiatorUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "RewardsInitiatorUpdated(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 225u8, 28u8, 221u8, 241u8, 129u8, 106u8, 67u8, 49u8, 140u8, 161u8, 117u8, + 187u8, 197u8, 44u8, 208u8, 24u8, 84u8, 54u8, 233u8, 203u8, 234u8, 215u8, 200u8, + 58u8, 204u8, 84u8, 167u8, 62u8, 70u8, 23u8, 23u8, 227u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + prevRewardsInitiator: data.0, + newRewardsInitiator: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.prevRewardsInitiator, + ), + ::tokenize( + &self.newRewardsInitiator, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for RewardsInitiatorUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&RewardsInitiatorUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &RewardsInitiatorUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `avsDirectory()` and selector `0x6b3aa72e`. + ```solidity + function avsDirectory() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct avsDirectoryCall {} + ///Container type for the return parameters of the [`avsDirectory()`](avsDirectoryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct avsDirectoryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: avsDirectoryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for avsDirectoryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: avsDirectoryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for avsDirectoryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for avsDirectoryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = avsDirectoryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "avsDirectory()"; + const SELECTOR: [u8; 4] = [107u8, 58u8, 167u8, 46u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])` and selector `0xfce36c7d`. + ```solidity + function createAVSRewardsSubmission(IRewardsCoordinator.RewardsSubmission[] memory rewardsSubmissions) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct createAVSRewardsSubmissionCall { + pub rewardsSubmissions: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])`](createAVSRewardsSubmissionCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct createAVSRewardsSubmissionReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: createAVSRewardsSubmissionCall) -> Self { + (value.rewardsSubmissions,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for createAVSRewardsSubmissionCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + rewardsSubmissions: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: createAVSRewardsSubmissionReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for createAVSRewardsSubmissionReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for createAVSRewardsSubmissionCall { + type Parameters<'a> = + (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = createAVSRewardsSubmissionReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])"; + const SELECTOR: [u8; 4] = [252u8, 227u8, 108u8, 125u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( as alloy_sol_types::SolType>::tokenize( + &self.rewardsSubmissions, + ),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `deregisterOperatorFromAVS(address)` and selector `0xa364f4da`. + ```solidity + function deregisterOperatorFromAVS(address operator) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorFromAVSCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`deregisterOperatorFromAVS(address)`](deregisterOperatorFromAVSCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorFromAVSReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorFromAVSCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorFromAVSCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorFromAVSReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorFromAVSReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for deregisterOperatorFromAVSCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = deregisterOperatorFromAVSReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "deregisterOperatorFromAVS(address)"; + const SELECTOR: [u8; 4] = [163u8, 100u8, 244u8, 218u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorRestakedStrategies(address)` and selector `0x33cfb7b7`. + ```solidity + function getOperatorRestakedStrategies(address operator) external view returns (address[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorRestakedStrategiesCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getOperatorRestakedStrategies(address)`](getOperatorRestakedStrategiesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorRestakedStrategiesReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorRestakedStrategiesCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorRestakedStrategiesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorRestakedStrategiesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorRestakedStrategiesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorRestakedStrategiesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorRestakedStrategiesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorRestakedStrategies(address)"; + const SELECTOR: [u8; 4] = [51u8, 207u8, 183u8, 183u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getRestakeableStrategies()` and selector `0xe481af9d`. + ```solidity + function getRestakeableStrategies() external view returns (address[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getRestakeableStrategiesCall {} + ///Container type for the return parameters of the [`getRestakeableStrategies()`](getRestakeableStrategiesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getRestakeableStrategiesReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getRestakeableStrategiesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getRestakeableStrategiesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getRestakeableStrategiesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getRestakeableStrategiesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getRestakeableStrategiesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getRestakeableStrategiesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getRestakeableStrategies()"; + const SELECTOR: [u8; 4] = [228u8, 129u8, 175u8, 157u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registerOperatorToAVS(address,(bytes,bytes32,uint256))` and selector `0x9926ee7d`. + ```solidity + function registerOperatorToAVS(address operator, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorToAVSCall { + pub operator: alloy::sol_types::private::Address, + pub operatorSignature: + ::RustType, + } + ///Container type for the return parameters of the [`registerOperatorToAVS(address,(bytes,bytes32,uint256))`](registerOperatorToAVSCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorToAVSReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithSaltAndExpiry, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorToAVSCall) -> Self { + (value.operator, value.operatorSignature) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorToAVSCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + operatorSignature: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorToAVSReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorToAVSReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registerOperatorToAVSCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithSaltAndExpiry, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registerOperatorToAVSReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "registerOperatorToAVS(address,(bytes,bytes32,uint256))"; + const SELECTOR: [u8; 4] = [153u8, 38u8, 238u8, 125u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.operatorSignature, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateAVSMetadataURI(string)` and selector `0xa98fb355`. + ```solidity + function updateAVSMetadataURI(string memory _metadataURI) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateAVSMetadataURICall { + pub _metadataURI: alloy::sol_types::private::String, + } + ///Container type for the return parameters of the [`updateAVSMetadataURI(string)`](updateAVSMetadataURICall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateAVSMetadataURIReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateAVSMetadataURICall) -> Self { + (value._metadataURI,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateAVSMetadataURICall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _metadataURI: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateAVSMetadataURIReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateAVSMetadataURIReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateAVSMetadataURICall { + type Parameters<'a> = (alloy::sol_types::sol_data::String,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateAVSMetadataURIReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateAVSMetadataURI(string)"; + const SELECTOR: [u8; 4] = [169u8, 143u8, 179u8, 85u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._metadataURI, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IServiceManager`](self) function calls. + pub enum IServiceManagerCalls { + avsDirectory(avsDirectoryCall), + createAVSRewardsSubmission(createAVSRewardsSubmissionCall), + deregisterOperatorFromAVS(deregisterOperatorFromAVSCall), + getOperatorRestakedStrategies(getOperatorRestakedStrategiesCall), + getRestakeableStrategies(getRestakeableStrategiesCall), + registerOperatorToAVS(registerOperatorToAVSCall), + updateAVSMetadataURI(updateAVSMetadataURICall), + } + #[automatically_derived] + impl IServiceManagerCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [51u8, 207u8, 183u8, 183u8], + [107u8, 58u8, 167u8, 46u8], + [153u8, 38u8, 238u8, 125u8], + [163u8, 100u8, 244u8, 218u8], + [169u8, 143u8, 179u8, 85u8], + [228u8, 129u8, 175u8, 157u8], + [252u8, 227u8, 108u8, 125u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IServiceManagerCalls { + const NAME: &'static str = "IServiceManagerCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 7usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::avsDirectory(_) => ::SELECTOR, + Self::createAVSRewardsSubmission(_) => { + ::SELECTOR + } + Self::deregisterOperatorFromAVS(_) => { + ::SELECTOR + } + Self::getOperatorRestakedStrategies(_) => { + ::SELECTOR + } + Self::getRestakeableStrategies(_) => { + ::SELECTOR + } + Self::registerOperatorToAVS(_) => { + ::SELECTOR + } + Self::updateAVSMetadataURI(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn getOperatorRestakedStrategies( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IServiceManagerCalls::getOperatorRestakedStrategies) + } + getOperatorRestakedStrategies + }, + { + fn avsDirectory( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IServiceManagerCalls::avsDirectory) + } + avsDirectory + }, + { + fn registerOperatorToAVS( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IServiceManagerCalls::registerOperatorToAVS) + } + registerOperatorToAVS + }, + { + fn deregisterOperatorFromAVS( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IServiceManagerCalls::deregisterOperatorFromAVS) + } + deregisterOperatorFromAVS + }, + { + fn updateAVSMetadataURI( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IServiceManagerCalls::updateAVSMetadataURI) + } + updateAVSMetadataURI + }, + { + fn getRestakeableStrategies( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IServiceManagerCalls::getRestakeableStrategies) + } + getRestakeableStrategies + }, + { + fn createAVSRewardsSubmission( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IServiceManagerCalls::createAVSRewardsSubmission) + } + createAVSRewardsSubmission + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::avsDirectory(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::createAVSRewardsSubmission(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::deregisterOperatorFromAVS(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorRestakedStrategies(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getRestakeableStrategies(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registerOperatorToAVS(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::updateAVSMetadataURI(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::avsDirectory(inner) => { + ::abi_encode_raw(inner, out) + } + Self::createAVSRewardsSubmission(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::deregisterOperatorFromAVS(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getOperatorRestakedStrategies(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getRestakeableStrategies(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::registerOperatorToAVS(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::updateAVSMetadataURI(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + } + } + } + ///Container for all the [`IServiceManager`](self) events. + pub enum IServiceManagerEvents { + RewardsInitiatorUpdated(RewardsInitiatorUpdated), + } + #[automatically_derived] + impl IServiceManagerEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[[ + 225u8, 28u8, 221u8, 241u8, 129u8, 106u8, 67u8, 49u8, 140u8, 161u8, 117u8, 187u8, 197u8, + 44u8, 208u8, 24u8, 84u8, 54u8, 233u8, 203u8, 234u8, 215u8, 200u8, 58u8, 204u8, 84u8, + 167u8, 62u8, 70u8, 23u8, 23u8, 227u8, + ]]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IServiceManagerEvents { + const NAME: &'static str = "IServiceManagerEvents"; + const COUNT: usize = 1usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::RewardsInitiatorUpdated) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for IServiceManagerEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::RewardsInitiatorUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::RewardsInitiatorUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IServiceManager`](self) contract instance. + + See the [wrapper's documentation](`IServiceManagerInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IServiceManagerInstance { + IServiceManagerInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + IServiceManagerInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IServiceManagerInstance::::deploy_builder(provider) + } + /**A [`IServiceManager`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IServiceManager`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IServiceManagerInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IServiceManagerInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IServiceManagerInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IServiceManagerInstance + { + /**Creates a new wrapper around an on-chain [`IServiceManager`](self) contract instance. + + See the [wrapper's documentation](`IServiceManagerInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IServiceManagerInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IServiceManagerInstance { + IServiceManagerInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IServiceManagerInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`avsDirectory`] function. + pub fn avsDirectory(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&avsDirectoryCall {}) + } + ///Creates a new call builder for the [`createAVSRewardsSubmission`] function. + pub fn createAVSRewardsSubmission( + &self, + rewardsSubmissions: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&createAVSRewardsSubmissionCall { rewardsSubmissions }) + } + ///Creates a new call builder for the [`deregisterOperatorFromAVS`] function. + pub fn deregisterOperatorFromAVS( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&deregisterOperatorFromAVSCall { operator }) + } + ///Creates a new call builder for the [`getOperatorRestakedStrategies`] function. + pub fn getOperatorRestakedStrategies( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorRestakedStrategiesCall { operator }) + } + ///Creates a new call builder for the [`getRestakeableStrategies`] function. + pub fn getRestakeableStrategies( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getRestakeableStrategiesCall {}) + } + ///Creates a new call builder for the [`registerOperatorToAVS`] function. + pub fn registerOperatorToAVS( + &self, + operator: alloy::sol_types::private::Address, + operatorSignature: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterOperatorToAVSCall { + operator, + operatorSignature, + }) + } + ///Creates a new call builder for the [`updateAVSMetadataURI`] function. + pub fn updateAVSMetadataURI( + &self, + _metadataURI: alloy::sol_types::private::String, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateAVSMetadataURICall { _metadataURI }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IServiceManagerInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`RewardsInitiatorUpdated`] event. + pub fn RewardsInitiatorUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/iservicemanagerui.rs b/crates/utils/src/iservicemanagerui.rs new file mode 100644 index 00000000..168142b2 --- /dev/null +++ b/crates/utils/src/iservicemanagerui.rs @@ -0,0 +1,1634 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library ISignatureUtils { + struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ISignatureUtils { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SignatureWithSaltAndExpiry { + pub signature: alloy::sol_types::private::Bytes, + pub salt: alloy::sol_types::private::FixedBytes<32>, + pub expiry: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: SignatureWithSaltAndExpiry) -> Self { + (value.signature, value.salt, value.expiry) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for SignatureWithSaltAndExpiry { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + signature: tuple.0, + salt: tuple.1, + expiry: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for SignatureWithSaltAndExpiry { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for SignatureWithSaltAndExpiry { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.signature, + ), + as alloy_sol_types::SolType>::tokenize(&self.salt), + as alloy_sol_types::SolType>::tokenize(&self.expiry), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for SignatureWithSaltAndExpiry { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for SignatureWithSaltAndExpiry { + const NAME: &'static str = "SignatureWithSaltAndExpiry"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "SignatureWithSaltAndExpiry(bytes signature,bytes32 salt,uint256 expiry)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.signature, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.salt) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.expiry) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for SignatureWithSaltAndExpiry { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.signature, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.salt) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.expiry, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.signature, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.salt, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.expiry, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ISignatureUtilsInstance { + ISignatureUtilsInstance::::new(address, provider) + } + /**A [`ISignatureUtils`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ISignatureUtils`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ISignatureUtilsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ISignatureUtilsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ISignatureUtilsInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ISignatureUtilsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ISignatureUtilsInstance { + ISignatureUtilsInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library ISignatureUtils { + struct SignatureWithSaltAndExpiry { + bytes signature; + bytes32 salt; + uint256 expiry; + } +} + +interface IServiceManagerUI { + function avsDirectory() external view returns (address); + function deregisterOperatorFromAVS(address operator) external; + function getOperatorRestakedStrategies(address operator) external view returns (address[] memory); + function getRestakeableStrategies() external view returns (address[] memory); + function registerOperatorToAVS(address operator, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external; + function updateAVSMetadataURI(string memory _metadataURI) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "avsDirectory", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "deregisterOperatorFromAVS", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getOperatorRestakedStrategies", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getRestakeableStrategies", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registerOperatorToAVS", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "operatorSignature", + "type": "tuple", + "internalType": "struct ISignatureUtils.SignatureWithSaltAndExpiry", + "components": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "salt", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateAVSMetadataURI", + "inputs": [ + { + "name": "_metadataURI", + "type": "string", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IServiceManagerUI { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Function with signature `avsDirectory()` and selector `0x6b3aa72e`. + ```solidity + function avsDirectory() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct avsDirectoryCall {} + ///Container type for the return parameters of the [`avsDirectory()`](avsDirectoryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct avsDirectoryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: avsDirectoryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for avsDirectoryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: avsDirectoryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for avsDirectoryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for avsDirectoryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = avsDirectoryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "avsDirectory()"; + const SELECTOR: [u8; 4] = [107u8, 58u8, 167u8, 46u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `deregisterOperatorFromAVS(address)` and selector `0xa364f4da`. + ```solidity + function deregisterOperatorFromAVS(address operator) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorFromAVSCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`deregisterOperatorFromAVS(address)`](deregisterOperatorFromAVSCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorFromAVSReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorFromAVSCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorFromAVSCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorFromAVSReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorFromAVSReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for deregisterOperatorFromAVSCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = deregisterOperatorFromAVSReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "deregisterOperatorFromAVS(address)"; + const SELECTOR: [u8; 4] = [163u8, 100u8, 244u8, 218u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorRestakedStrategies(address)` and selector `0x33cfb7b7`. + ```solidity + function getOperatorRestakedStrategies(address operator) external view returns (address[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorRestakedStrategiesCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getOperatorRestakedStrategies(address)`](getOperatorRestakedStrategiesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorRestakedStrategiesReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorRestakedStrategiesCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorRestakedStrategiesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorRestakedStrategiesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorRestakedStrategiesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorRestakedStrategiesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorRestakedStrategiesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorRestakedStrategies(address)"; + const SELECTOR: [u8; 4] = [51u8, 207u8, 183u8, 183u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getRestakeableStrategies()` and selector `0xe481af9d`. + ```solidity + function getRestakeableStrategies() external view returns (address[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getRestakeableStrategiesCall {} + ///Container type for the return parameters of the [`getRestakeableStrategies()`](getRestakeableStrategiesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getRestakeableStrategiesReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getRestakeableStrategiesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getRestakeableStrategiesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getRestakeableStrategiesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getRestakeableStrategiesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getRestakeableStrategiesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getRestakeableStrategiesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getRestakeableStrategies()"; + const SELECTOR: [u8; 4] = [228u8, 129u8, 175u8, 157u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registerOperatorToAVS(address,(bytes,bytes32,uint256))` and selector `0x9926ee7d`. + ```solidity + function registerOperatorToAVS(address operator, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorToAVSCall { + pub operator: alloy::sol_types::private::Address, + pub operatorSignature: + ::RustType, + } + ///Container type for the return parameters of the [`registerOperatorToAVS(address,(bytes,bytes32,uint256))`](registerOperatorToAVSCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorToAVSReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithSaltAndExpiry, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorToAVSCall) -> Self { + (value.operator, value.operatorSignature) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorToAVSCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + operatorSignature: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorToAVSReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorToAVSReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registerOperatorToAVSCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithSaltAndExpiry, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registerOperatorToAVSReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "registerOperatorToAVS(address,(bytes,bytes32,uint256))"; + const SELECTOR: [u8; 4] = [153u8, 38u8, 238u8, 125u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.operatorSignature, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateAVSMetadataURI(string)` and selector `0xa98fb355`. + ```solidity + function updateAVSMetadataURI(string memory _metadataURI) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateAVSMetadataURICall { + pub _metadataURI: alloy::sol_types::private::String, + } + ///Container type for the return parameters of the [`updateAVSMetadataURI(string)`](updateAVSMetadataURICall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateAVSMetadataURIReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateAVSMetadataURICall) -> Self { + (value._metadataURI,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateAVSMetadataURICall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _metadataURI: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateAVSMetadataURIReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateAVSMetadataURIReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateAVSMetadataURICall { + type Parameters<'a> = (alloy::sol_types::sol_data::String,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateAVSMetadataURIReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateAVSMetadataURI(string)"; + const SELECTOR: [u8; 4] = [169u8, 143u8, 179u8, 85u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._metadataURI, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IServiceManagerUI`](self) function calls. + pub enum IServiceManagerUICalls { + avsDirectory(avsDirectoryCall), + deregisterOperatorFromAVS(deregisterOperatorFromAVSCall), + getOperatorRestakedStrategies(getOperatorRestakedStrategiesCall), + getRestakeableStrategies(getRestakeableStrategiesCall), + registerOperatorToAVS(registerOperatorToAVSCall), + updateAVSMetadataURI(updateAVSMetadataURICall), + } + #[automatically_derived] + impl IServiceManagerUICalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [51u8, 207u8, 183u8, 183u8], + [107u8, 58u8, 167u8, 46u8], + [153u8, 38u8, 238u8, 125u8], + [163u8, 100u8, 244u8, 218u8], + [169u8, 143u8, 179u8, 85u8], + [228u8, 129u8, 175u8, 157u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IServiceManagerUICalls { + const NAME: &'static str = "IServiceManagerUICalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 6usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::avsDirectory(_) => ::SELECTOR, + Self::deregisterOperatorFromAVS(_) => { + ::SELECTOR + } + Self::getOperatorRestakedStrategies(_) => { + ::SELECTOR + } + Self::getRestakeableStrategies(_) => { + ::SELECTOR + } + Self::registerOperatorToAVS(_) => { + ::SELECTOR + } + Self::updateAVSMetadataURI(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn getOperatorRestakedStrategies( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IServiceManagerUICalls::getOperatorRestakedStrategies) + } + getOperatorRestakedStrategies + }, + { + fn avsDirectory( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IServiceManagerUICalls::avsDirectory) + } + avsDirectory + }, + { + fn registerOperatorToAVS( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IServiceManagerUICalls::registerOperatorToAVS) + } + registerOperatorToAVS + }, + { + fn deregisterOperatorFromAVS( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IServiceManagerUICalls::deregisterOperatorFromAVS) + } + deregisterOperatorFromAVS + }, + { + fn updateAVSMetadataURI( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IServiceManagerUICalls::updateAVSMetadataURI) + } + updateAVSMetadataURI + }, + { + fn getRestakeableStrategies( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IServiceManagerUICalls::getRestakeableStrategies) + } + getRestakeableStrategies + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::avsDirectory(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::deregisterOperatorFromAVS(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorRestakedStrategies(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getRestakeableStrategies(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registerOperatorToAVS(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::updateAVSMetadataURI(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::avsDirectory(inner) => { + ::abi_encode_raw(inner, out) + } + Self::deregisterOperatorFromAVS(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getOperatorRestakedStrategies(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getRestakeableStrategies(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::registerOperatorToAVS(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::updateAVSMetadataURI(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IServiceManagerUI`](self) contract instance. + + See the [wrapper's documentation](`IServiceManagerUIInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IServiceManagerUIInstance { + IServiceManagerUIInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + IServiceManagerUIInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IServiceManagerUIInstance::::deploy_builder(provider) + } + /**A [`IServiceManagerUI`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IServiceManagerUI`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IServiceManagerUIInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IServiceManagerUIInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IServiceManagerUIInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IServiceManagerUIInstance + { + /**Creates a new wrapper around an on-chain [`IServiceManagerUI`](self) contract instance. + + See the [wrapper's documentation](`IServiceManagerUIInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IServiceManagerUIInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IServiceManagerUIInstance { + IServiceManagerUIInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IServiceManagerUIInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`avsDirectory`] function. + pub fn avsDirectory(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&avsDirectoryCall {}) + } + ///Creates a new call builder for the [`deregisterOperatorFromAVS`] function. + pub fn deregisterOperatorFromAVS( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&deregisterOperatorFromAVSCall { operator }) + } + ///Creates a new call builder for the [`getOperatorRestakedStrategies`] function. + pub fn getOperatorRestakedStrategies( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorRestakedStrategiesCall { operator }) + } + ///Creates a new call builder for the [`getRestakeableStrategies`] function. + pub fn getRestakeableStrategies( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getRestakeableStrategiesCall {}) + } + ///Creates a new call builder for the [`registerOperatorToAVS`] function. + pub fn registerOperatorToAVS( + &self, + operator: alloy::sol_types::private::Address, + operatorSignature: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterOperatorToAVSCall { + operator, + operatorSignature, + }) + } + ///Creates a new call builder for the [`updateAVSMetadataURI`] function. + pub fn updateAVSMetadataURI( + &self, + _metadataURI: alloy::sol_types::private::String, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateAVSMetadataURICall { _metadataURI }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IServiceManagerUIInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/isignatureutils.rs b/crates/utils/src/isignatureutils.rs new file mode 100644 index 00000000..c02a47c6 --- /dev/null +++ b/crates/utils/src/isignatureutils.rs @@ -0,0 +1,221 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ISignatureUtils {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ISignatureUtils { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ISignatureUtilsInstance { + ISignatureUtilsInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + ISignatureUtilsInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + ISignatureUtilsInstance::::deploy_builder(provider) + } + /**A [`ISignatureUtils`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ISignatureUtils`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ISignatureUtilsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ISignatureUtilsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ISignatureUtilsInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ISignatureUtilsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ISignatureUtilsInstance { + ISignatureUtilsInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/islasher.rs b/crates/utils/src/islasher.rs new file mode 100644 index 00000000..7f9f3bfb --- /dev/null +++ b/crates/utils/src/islasher.rs @@ -0,0 +1,4960 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ISlasher { + struct MiddlewareTimes { + uint32 stalestUpdateBlock; + uint32 latestServeUntilBlock; + } + + event FrozenStatusReset(address indexed previouslySlashedAddress); + event MiddlewareTimesAdded(address operator, uint256 index, uint32 stalestUpdateBlock, uint32 latestServeUntilBlock); + event OperatorFrozen(address indexed slashedOperator, address indexed slashingContract); + event OptedIntoSlashing(address indexed operator, address indexed contractAddress); + event SlashingAbilityRevoked(address indexed operator, address indexed contractAddress, uint32 contractCanSlashOperatorUntilBlock); + + function canSlash(address toBeSlashed, address slashingContract) external view returns (bool); + function canWithdraw(address operator, uint32 withdrawalStartBlock, uint256 middlewareTimesIndex) external returns (bool); + function contractCanSlashOperatorUntilBlock(address operator, address serviceContract) external view returns (uint32); + function delegation() external view returns (address); + function freezeOperator(address toBeFrozen) external; + function getCorrectValueForInsertAfter(address operator, uint32 updateBlock) external view returns (uint256); + function getMiddlewareTimesIndexServeUntilBlock(address operator, uint32 index) external view returns (uint32); + function getMiddlewareTimesIndexStalestUpdateBlock(address operator, uint32 index) external view returns (uint32); + function isFrozen(address staker) external view returns (bool); + function latestUpdateBlock(address operator, address serviceContract) external view returns (uint32); + function middlewareTimesLength(address operator) external view returns (uint256); + function operatorToMiddlewareTimes(address operator, uint256 arrayIndex) external view returns (MiddlewareTimes memory); + function operatorWhitelistedContractsLinkedListEntry(address operator, address node) external view returns (bool, uint256, uint256); + function operatorWhitelistedContractsLinkedListSize(address operator) external view returns (uint256); + function optIntoSlashing(address contractAddress) external; + function recordFirstStakeUpdate(address operator, uint32 serveUntilBlock) external; + function recordLastStakeUpdateAndRevokeSlashingAbility(address operator, uint32 serveUntilBlock) external; + function recordStakeUpdate(address operator, uint32 updateBlock, uint32 serveUntilBlock, uint256 insertAfter) external; + function resetFrozenStatus(address[] memory frozenAddresses) external; + function strategyManager() external view returns (address); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "canSlash", + "inputs": [ + { + "name": "toBeSlashed", + "type": "address", + "internalType": "address" + }, + { + "name": "slashingContract", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "canWithdraw", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "withdrawalStartBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "middlewareTimesIndex", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "contractCanSlashOperatorUntilBlock", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "serviceContract", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "delegation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IDelegationManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "freezeOperator", + "inputs": [ + { + "name": "toBeFrozen", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getCorrectValueForInsertAfter", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "updateBlock", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getMiddlewareTimesIndexServeUntilBlock", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "index", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getMiddlewareTimesIndexStalestUpdateBlock", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "index", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isFrozen", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "latestUpdateBlock", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "serviceContract", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "middlewareTimesLength", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "operatorToMiddlewareTimes", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "arrayIndex", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct ISlasher.MiddlewareTimes", + "components": [ + { + "name": "stalestUpdateBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "latestServeUntilBlock", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "operatorWhitelistedContractsLinkedListEntry", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "node", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "operatorWhitelistedContractsLinkedListSize", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "optIntoSlashing", + "inputs": [ + { + "name": "contractAddress", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "recordFirstStakeUpdate", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "serveUntilBlock", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "recordLastStakeUpdateAndRevokeSlashingAbility", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "serveUntilBlock", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "recordStakeUpdate", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "updateBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "serveUntilBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "insertAfter", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "resetFrozenStatus", + "inputs": [ + { + "name": "frozenAddresses", + "type": "address[]", + "internalType": "address[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "strategyManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStrategyManager" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "FrozenStatusReset", + "inputs": [ + { + "name": "previouslySlashedAddress", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "MiddlewareTimesAdded", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "index", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "stalestUpdateBlock", + "type": "uint32", + "indexed": false, + "internalType": "uint32" + }, + { + "name": "latestServeUntilBlock", + "type": "uint32", + "indexed": false, + "internalType": "uint32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorFrozen", + "inputs": [ + { + "name": "slashedOperator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "slashingContract", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OptedIntoSlashing", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "contractAddress", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "SlashingAbilityRevoked", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "contractAddress", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "contractCanSlashOperatorUntilBlock", + "type": "uint32", + "indexed": false, + "internalType": "uint32" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ISlasher { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**```solidity + struct MiddlewareTimes { uint32 stalestUpdateBlock; uint32 latestServeUntilBlock; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct MiddlewareTimes { + pub stalestUpdateBlock: u32, + pub latestServeUntilBlock: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: MiddlewareTimes) -> Self { + (value.stalestUpdateBlock, value.latestServeUntilBlock) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for MiddlewareTimes { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + stalestUpdateBlock: tuple.0, + latestServeUntilBlock: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for MiddlewareTimes { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for MiddlewareTimes { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.stalestUpdateBlock, + ), + as alloy_sol_types::SolType>::tokenize( + &self.latestServeUntilBlock, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for MiddlewareTimes { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for MiddlewareTimes { + const NAME: &'static str = "MiddlewareTimes"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "MiddlewareTimes(uint32 stalestUpdateBlock,uint32 latestServeUntilBlock)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word( + &self.stalestUpdateBlock, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.latestServeUntilBlock, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for MiddlewareTimes { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.stalestUpdateBlock, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.latestServeUntilBlock, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.stalestUpdateBlock, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.latestServeUntilBlock, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**Event with signature `FrozenStatusReset(address)` and selector `0xd4cef0af27800d466fcacd85779857378b85cb61569005ff1464fa6e5ced69d8`. + ```solidity + event FrozenStatusReset(address indexed previouslySlashedAddress); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct FrozenStatusReset { + #[allow(missing_docs)] + pub previouslySlashedAddress: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for FrozenStatusReset { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "FrozenStatusReset(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 212u8, 206u8, 240u8, 175u8, 39u8, 128u8, 13u8, 70u8, 111u8, 202u8, 205u8, + 133u8, 119u8, 152u8, 87u8, 55u8, 139u8, 133u8, 203u8, 97u8, 86u8, 144u8, 5u8, + 255u8, 20u8, 100u8, 250u8, 110u8, 92u8, 237u8, 105u8, 216u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + previouslySlashedAddress: topics.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.previouslySlashedAddress.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.previouslySlashedAddress, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for FrozenStatusReset { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&FrozenStatusReset> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &FrozenStatusReset) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `MiddlewareTimesAdded(address,uint256,uint32,uint32)` and selector `0x1b62ba64c72d01e41a2b8c46e6aeeff728ef3a4438cf1cac3d92ee12189d5649`. + ```solidity + event MiddlewareTimesAdded(address operator, uint256 index, uint32 stalestUpdateBlock, uint32 latestServeUntilBlock); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct MiddlewareTimesAdded { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub index: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub stalestUpdateBlock: u32, + #[allow(missing_docs)] + pub latestServeUntilBlock: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for MiddlewareTimesAdded { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "MiddlewareTimesAdded(address,uint256,uint32,uint32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 27u8, 98u8, 186u8, 100u8, 199u8, 45u8, 1u8, 228u8, 26u8, 43u8, 140u8, 70u8, + 230u8, 174u8, 239u8, 247u8, 40u8, 239u8, 58u8, 68u8, 56u8, 207u8, 28u8, 172u8, + 61u8, 146u8, 238u8, 18u8, 24u8, 157u8, 86u8, 73u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: data.0, + index: data.1, + stalestUpdateBlock: data.2, + latestServeUntilBlock: data.3, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.operator, + ), + as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + as alloy_sol_types::SolType>::tokenize( + &self.stalestUpdateBlock, + ), + as alloy_sol_types::SolType>::tokenize( + &self.latestServeUntilBlock, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for MiddlewareTimesAdded { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&MiddlewareTimesAdded> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &MiddlewareTimesAdded) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorFrozen(address,address)` and selector `0x444a84f512816ae7be8ed8a66aa88e362eb54d0988e83acc9d81746622b3ba51`. + ```solidity + event OperatorFrozen(address indexed slashedOperator, address indexed slashingContract); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorFrozen { + #[allow(missing_docs)] + pub slashedOperator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub slashingContract: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorFrozen { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OperatorFrozen(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 68u8, 74u8, 132u8, 245u8, 18u8, 129u8, 106u8, 231u8, 190u8, 142u8, 216u8, + 166u8, 106u8, 168u8, 142u8, 54u8, 46u8, 181u8, 77u8, 9u8, 136u8, 232u8, 58u8, + 204u8, 157u8, 129u8, 116u8, 102u8, 34u8, 179u8, 186u8, 81u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + slashedOperator: topics.1, + slashingContract: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.slashedOperator.clone(), + self.slashingContract.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.slashedOperator, + ); + out[2usize] = ::encode_topic( + &self.slashingContract, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorFrozen { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorFrozen> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorFrozen) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OptedIntoSlashing(address,address)` and selector `0xefa9fb38e813d53c15edf501e03852843a3fed691960523391d71a092b3627d8`. + ```solidity + event OptedIntoSlashing(address indexed operator, address indexed contractAddress); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OptedIntoSlashing { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub contractAddress: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OptedIntoSlashing { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OptedIntoSlashing(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 239u8, 169u8, 251u8, 56u8, 232u8, 19u8, 213u8, 60u8, 21u8, 237u8, 245u8, 1u8, + 224u8, 56u8, 82u8, 132u8, 58u8, 63u8, 237u8, 105u8, 25u8, 96u8, 82u8, 51u8, + 145u8, 215u8, 26u8, 9u8, 43u8, 54u8, 39u8, 216u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: topics.1, + contractAddress: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.operator.clone(), + self.contractAddress.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + out[2usize] = ::encode_topic( + &self.contractAddress, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OptedIntoSlashing { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OptedIntoSlashing> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OptedIntoSlashing) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `SlashingAbilityRevoked(address,address,uint32)` and selector `0x9aa1b1391f35c672ed1f3b7ece632f4513e618366bef7a2f67b7c6bc1f2d2b14`. + ```solidity + event SlashingAbilityRevoked(address indexed operator, address indexed contractAddress, uint32 contractCanSlashOperatorUntilBlock); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct SlashingAbilityRevoked { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub contractAddress: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub contractCanSlashOperatorUntilBlock: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for SlashingAbilityRevoked { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "SlashingAbilityRevoked(address,address,uint32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 154u8, 161u8, 177u8, 57u8, 31u8, 53u8, 198u8, 114u8, 237u8, 31u8, 59u8, 126u8, + 206u8, 99u8, 47u8, 69u8, 19u8, 230u8, 24u8, 54u8, 107u8, 239u8, 122u8, 47u8, + 103u8, 183u8, 198u8, 188u8, 31u8, 45u8, 43u8, 20u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: topics.1, + contractAddress: topics.2, + contractCanSlashOperatorUntilBlock: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.contractCanSlashOperatorUntilBlock, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.operator.clone(), + self.contractAddress.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + out[2usize] = ::encode_topic( + &self.contractAddress, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for SlashingAbilityRevoked { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&SlashingAbilityRevoked> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &SlashingAbilityRevoked) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `canSlash(address,address)` and selector `0xd98128c0`. + ```solidity + function canSlash(address toBeSlashed, address slashingContract) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct canSlashCall { + pub toBeSlashed: alloy::sol_types::private::Address, + pub slashingContract: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`canSlash(address,address)`](canSlashCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct canSlashReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: canSlashCall) -> Self { + (value.toBeSlashed, value.slashingContract) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for canSlashCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + toBeSlashed: tuple.0, + slashingContract: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: canSlashReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for canSlashReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for canSlashCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = canSlashReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "canSlash(address,address)"; + const SELECTOR: [u8; 4] = [217u8, 129u8, 40u8, 192u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.toBeSlashed, + ), + ::tokenize( + &self.slashingContract, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `canWithdraw(address,uint32,uint256)` and selector `0x8105e043`. + ```solidity + function canWithdraw(address operator, uint32 withdrawalStartBlock, uint256 middlewareTimesIndex) external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct canWithdrawCall { + pub operator: alloy::sol_types::private::Address, + pub withdrawalStartBlock: u32, + pub middlewareTimesIndex: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`canWithdraw(address,uint32,uint256)`](canWithdrawCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct canWithdrawReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + u32, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: canWithdrawCall) -> Self { + ( + value.operator, + value.withdrawalStartBlock, + value.middlewareTimesIndex, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for canWithdrawCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + withdrawalStartBlock: tuple.1, + middlewareTimesIndex: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: canWithdrawReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for canWithdrawReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for canWithdrawCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = canWithdrawReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "canWithdraw(address,uint32,uint256)"; + const SELECTOR: [u8; 4] = [129u8, 5u8, 224u8, 67u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + as alloy_sol_types::SolType>::tokenize( + &self.withdrawalStartBlock, + ), + as alloy_sol_types::SolType>::tokenize( + &self.middlewareTimesIndex, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `contractCanSlashOperatorUntilBlock(address,address)` and selector `0x6f0c2f74`. + ```solidity + function contractCanSlashOperatorUntilBlock(address operator, address serviceContract) external view returns (uint32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct contractCanSlashOperatorUntilBlockCall { + pub operator: alloy::sol_types::private::Address, + pub serviceContract: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`contractCanSlashOperatorUntilBlock(address,address)`](contractCanSlashOperatorUntilBlockCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct contractCanSlashOperatorUntilBlockReturn { + pub _0: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: contractCanSlashOperatorUntilBlockCall) -> Self { + (value.operator, value.serviceContract) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for contractCanSlashOperatorUntilBlockCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + serviceContract: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: contractCanSlashOperatorUntilBlockReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for contractCanSlashOperatorUntilBlockReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for contractCanSlashOperatorUntilBlockCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = contractCanSlashOperatorUntilBlockReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "contractCanSlashOperatorUntilBlock(address,address)"; + const SELECTOR: [u8; 4] = [111u8, 12u8, 47u8, 116u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.serviceContract, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `delegation()` and selector `0xdf5cf723`. + ```solidity + function delegation() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegationCall {} + ///Container type for the return parameters of the [`delegation()`](delegationCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for delegationCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = delegationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "delegation()"; + const SELECTOR: [u8; 4] = [223u8, 92u8, 247u8, 35u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `freezeOperator(address)` and selector `0x38c8ee64`. + ```solidity + function freezeOperator(address toBeFrozen) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct freezeOperatorCall { + pub toBeFrozen: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`freezeOperator(address)`](freezeOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct freezeOperatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: freezeOperatorCall) -> Self { + (value.toBeFrozen,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for freezeOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + toBeFrozen: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: freezeOperatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for freezeOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for freezeOperatorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = freezeOperatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "freezeOperator(address)"; + const SELECTOR: [u8; 4] = [56u8, 200u8, 238u8, 100u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.toBeFrozen, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getCorrectValueForInsertAfter(address,uint32)` and selector `0x723e59c7`. + ```solidity + function getCorrectValueForInsertAfter(address operator, uint32 updateBlock) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getCorrectValueForInsertAfterCall { + pub operator: alloy::sol_types::private::Address, + pub updateBlock: u32, + } + ///Container type for the return parameters of the [`getCorrectValueForInsertAfter(address,uint32)`](getCorrectValueForInsertAfterCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getCorrectValueForInsertAfterReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCorrectValueForInsertAfterCall) -> Self { + (value.operator, value.updateBlock) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCorrectValueForInsertAfterCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + updateBlock: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCorrectValueForInsertAfterReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCorrectValueForInsertAfterReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getCorrectValueForInsertAfterCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getCorrectValueForInsertAfterReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getCorrectValueForInsertAfter(address,uint32)"; + const SELECTOR: [u8; 4] = [114u8, 62u8, 89u8, 199u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + as alloy_sol_types::SolType>::tokenize( + &self.updateBlock, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getMiddlewareTimesIndexServeUntilBlock(address,uint32)` and selector `0x7259a45c`. + ```solidity + function getMiddlewareTimesIndexServeUntilBlock(address operator, uint32 index) external view returns (uint32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getMiddlewareTimesIndexServeUntilBlockCall { + pub operator: alloy::sol_types::private::Address, + pub index: u32, + } + ///Container type for the return parameters of the [`getMiddlewareTimesIndexServeUntilBlock(address,uint32)`](getMiddlewareTimesIndexServeUntilBlockCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getMiddlewareTimesIndexServeUntilBlockReturn { + pub _0: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getMiddlewareTimesIndexServeUntilBlockCall) -> Self { + (value.operator, value.index) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getMiddlewareTimesIndexServeUntilBlockCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + index: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: getMiddlewareTimesIndexServeUntilBlockReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getMiddlewareTimesIndexServeUntilBlockReturn + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getMiddlewareTimesIndexServeUntilBlockCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getMiddlewareTimesIndexServeUntilBlockReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "getMiddlewareTimesIndexServeUntilBlock(address,uint32)"; + const SELECTOR: [u8; 4] = [114u8, 89u8, 164u8, 92u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getMiddlewareTimesIndexStalestUpdateBlock(address,uint32)` and selector `0x1874e5ae`. + ```solidity + function getMiddlewareTimesIndexStalestUpdateBlock(address operator, uint32 index) external view returns (uint32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getMiddlewareTimesIndexStalestUpdateBlockCall { + pub operator: alloy::sol_types::private::Address, + pub index: u32, + } + ///Container type for the return parameters of the [`getMiddlewareTimesIndexStalestUpdateBlock(address,uint32)`](getMiddlewareTimesIndexStalestUpdateBlockCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getMiddlewareTimesIndexStalestUpdateBlockReturn { + pub _0: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: getMiddlewareTimesIndexStalestUpdateBlockCall) -> Self { + (value.operator, value.index) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getMiddlewareTimesIndexStalestUpdateBlockCall + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + index: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: getMiddlewareTimesIndexStalestUpdateBlockReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getMiddlewareTimesIndexStalestUpdateBlockReturn + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getMiddlewareTimesIndexStalestUpdateBlockCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getMiddlewareTimesIndexStalestUpdateBlockReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "getMiddlewareTimesIndexStalestUpdateBlock(address,uint32)"; + const SELECTOR: [u8; 4] = [24u8, 116u8, 229u8, 174u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `isFrozen(address)` and selector `0xe5839836`. + ```solidity + function isFrozen(address staker) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isFrozenCall { + pub staker: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`isFrozen(address)`](isFrozenCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isFrozenReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isFrozenCall) -> Self { + (value.staker,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isFrozenCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { staker: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isFrozenReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isFrozenReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for isFrozenCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = isFrozenReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "isFrozen(address)"; + const SELECTOR: [u8; 4] = [229u8, 131u8, 152u8, 54u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.staker, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `latestUpdateBlock(address,address)` and selector `0xda16e29b`. + ```solidity + function latestUpdateBlock(address operator, address serviceContract) external view returns (uint32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct latestUpdateBlockCall { + pub operator: alloy::sol_types::private::Address, + pub serviceContract: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`latestUpdateBlock(address,address)`](latestUpdateBlockCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct latestUpdateBlockReturn { + pub _0: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: latestUpdateBlockCall) -> Self { + (value.operator, value.serviceContract) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for latestUpdateBlockCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + serviceContract: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: latestUpdateBlockReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for latestUpdateBlockReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for latestUpdateBlockCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = latestUpdateBlockReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "latestUpdateBlock(address,address)"; + const SELECTOR: [u8; 4] = [218u8, 22u8, 226u8, 155u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.serviceContract, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `middlewareTimesLength(address)` and selector `0xa49db732`. + ```solidity + function middlewareTimesLength(address operator) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct middlewareTimesLengthCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`middlewareTimesLength(address)`](middlewareTimesLengthCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct middlewareTimesLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: middlewareTimesLengthCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for middlewareTimesLengthCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: middlewareTimesLengthReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for middlewareTimesLengthReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for middlewareTimesLengthCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = middlewareTimesLengthReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "middlewareTimesLength(address)"; + const SELECTOR: [u8; 4] = [164u8, 157u8, 183u8, 50u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `operatorToMiddlewareTimes(address,uint256)` and selector `0x282670fc`. + ```solidity + function operatorToMiddlewareTimes(address operator, uint256 arrayIndex) external view returns (MiddlewareTimes memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorToMiddlewareTimesCall { + pub operator: alloy::sol_types::private::Address, + pub arrayIndex: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`operatorToMiddlewareTimes(address,uint256)`](operatorToMiddlewareTimesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorToMiddlewareTimesReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorToMiddlewareTimesCall) -> Self { + (value.operator, value.arrayIndex) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorToMiddlewareTimesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + arrayIndex: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (MiddlewareTimes,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: operatorToMiddlewareTimesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for operatorToMiddlewareTimesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for operatorToMiddlewareTimesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = operatorToMiddlewareTimesReturn; + type ReturnTuple<'a> = (MiddlewareTimes,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "operatorToMiddlewareTimes(address,uint256)"; + const SELECTOR: [u8; 4] = [40u8, 38u8, 112u8, 252u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + as alloy_sol_types::SolType>::tokenize( + &self.arrayIndex, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `operatorWhitelistedContractsLinkedListEntry(address,address)` and selector `0x855fcc4a`. + ```solidity + function operatorWhitelistedContractsLinkedListEntry(address operator, address node) external view returns (bool, uint256, uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorWhitelistedContractsLinkedListEntryCall { + pub operator: alloy::sol_types::private::Address, + pub node: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`operatorWhitelistedContractsLinkedListEntry(address,address)`](operatorWhitelistedContractsLinkedListEntryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorWhitelistedContractsLinkedListEntryReturn { + pub _0: bool, + pub _1: alloy::sol_types::private::primitives::aliases::U256, + pub _2: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: operatorWhitelistedContractsLinkedListEntryCall) -> Self { + (value.operator, value.node) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for operatorWhitelistedContractsLinkedListEntryCall + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + node: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bool, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + bool, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: operatorWhitelistedContractsLinkedListEntryReturn) -> Self { + (value._0, value._1, value._2) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for operatorWhitelistedContractsLinkedListEntryReturn + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + _2: tuple.2, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for operatorWhitelistedContractsLinkedListEntryCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = operatorWhitelistedContractsLinkedListEntryReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Bool, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "operatorWhitelistedContractsLinkedListEntry(address,address)"; + const SELECTOR: [u8; 4] = [133u8, 95u8, 204u8, 74u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.node, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `operatorWhitelistedContractsLinkedListSize(address)` and selector `0xe921d4fa`. + ```solidity + function operatorWhitelistedContractsLinkedListSize(address operator) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorWhitelistedContractsLinkedListSizeCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`operatorWhitelistedContractsLinkedListSize(address)`](operatorWhitelistedContractsLinkedListSizeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct operatorWhitelistedContractsLinkedListSizeReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: operatorWhitelistedContractsLinkedListSizeCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for operatorWhitelistedContractsLinkedListSizeCall + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: operatorWhitelistedContractsLinkedListSizeReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for operatorWhitelistedContractsLinkedListSizeReturn + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for operatorWhitelistedContractsLinkedListSizeCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = operatorWhitelistedContractsLinkedListSizeReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "operatorWhitelistedContractsLinkedListSize(address)"; + const SELECTOR: [u8; 4] = [233u8, 33u8, 212u8, 250u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `optIntoSlashing(address)` and selector `0xf73b7519`. + ```solidity + function optIntoSlashing(address contractAddress) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct optIntoSlashingCall { + pub contractAddress: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`optIntoSlashing(address)`](optIntoSlashingCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct optIntoSlashingReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: optIntoSlashingCall) -> Self { + (value.contractAddress,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for optIntoSlashingCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + contractAddress: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: optIntoSlashingReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for optIntoSlashingReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for optIntoSlashingCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = optIntoSlashingReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "optIntoSlashing(address)"; + const SELECTOR: [u8; 4] = [247u8, 59u8, 117u8, 25u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.contractAddress, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `recordFirstStakeUpdate(address,uint32)` and selector `0x175d3205`. + ```solidity + function recordFirstStakeUpdate(address operator, uint32 serveUntilBlock) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct recordFirstStakeUpdateCall { + pub operator: alloy::sol_types::private::Address, + pub serveUntilBlock: u32, + } + ///Container type for the return parameters of the [`recordFirstStakeUpdate(address,uint32)`](recordFirstStakeUpdateCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct recordFirstStakeUpdateReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: recordFirstStakeUpdateCall) -> Self { + (value.operator, value.serveUntilBlock) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for recordFirstStakeUpdateCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + serveUntilBlock: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: recordFirstStakeUpdateReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for recordFirstStakeUpdateReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for recordFirstStakeUpdateCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = recordFirstStakeUpdateReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "recordFirstStakeUpdate(address,uint32)"; + const SELECTOR: [u8; 4] = [23u8, 93u8, 50u8, 5u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + as alloy_sol_types::SolType>::tokenize( + &self.serveUntilBlock, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `recordLastStakeUpdateAndRevokeSlashingAbility(address,uint32)` and selector `0x0ffabbce`. + ```solidity + function recordLastStakeUpdateAndRevokeSlashingAbility(address operator, uint32 serveUntilBlock) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct recordLastStakeUpdateAndRevokeSlashingAbilityCall { + pub operator: alloy::sol_types::private::Address, + pub serveUntilBlock: u32, + } + ///Container type for the return parameters of the [`recordLastStakeUpdateAndRevokeSlashingAbility(address,uint32)`](recordLastStakeUpdateAndRevokeSlashingAbilityCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct recordLastStakeUpdateAndRevokeSlashingAbilityReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: recordLastStakeUpdateAndRevokeSlashingAbilityCall) -> Self { + (value.operator, value.serveUntilBlock) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for recordLastStakeUpdateAndRevokeSlashingAbilityCall + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + serveUntilBlock: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: recordLastStakeUpdateAndRevokeSlashingAbilityReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for recordLastStakeUpdateAndRevokeSlashingAbilityReturn + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for recordLastStakeUpdateAndRevokeSlashingAbilityCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = recordLastStakeUpdateAndRevokeSlashingAbilityReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "recordLastStakeUpdateAndRevokeSlashingAbility(address,uint32)"; + const SELECTOR: [u8; 4] = [15u8, 250u8, 187u8, 206u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + as alloy_sol_types::SolType>::tokenize( + &self.serveUntilBlock, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `recordStakeUpdate(address,uint32,uint32,uint256)` and selector `0xc747075b`. + ```solidity + function recordStakeUpdate(address operator, uint32 updateBlock, uint32 serveUntilBlock, uint256 insertAfter) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct recordStakeUpdateCall { + pub operator: alloy::sol_types::private::Address, + pub updateBlock: u32, + pub serveUntilBlock: u32, + pub insertAfter: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`recordStakeUpdate(address,uint32,uint32,uint256)`](recordStakeUpdateCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct recordStakeUpdateReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + u32, + u32, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: recordStakeUpdateCall) -> Self { + ( + value.operator, + value.updateBlock, + value.serveUntilBlock, + value.insertAfter, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for recordStakeUpdateCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + updateBlock: tuple.1, + serveUntilBlock: tuple.2, + insertAfter: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: recordStakeUpdateReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for recordStakeUpdateReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for recordStakeUpdateCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = recordStakeUpdateReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "recordStakeUpdate(address,uint32,uint32,uint256)"; + const SELECTOR: [u8; 4] = [199u8, 71u8, 7u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + as alloy_sol_types::SolType>::tokenize( + &self.updateBlock, + ), + as alloy_sol_types::SolType>::tokenize( + &self.serveUntilBlock, + ), + as alloy_sol_types::SolType>::tokenize( + &self.insertAfter, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `resetFrozenStatus(address[])` and selector `0x7cf72bba`. + ```solidity + function resetFrozenStatus(address[] memory frozenAddresses) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct resetFrozenStatusCall { + pub frozenAddresses: alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`resetFrozenStatus(address[])`](resetFrozenStatusCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct resetFrozenStatusReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: resetFrozenStatusCall) -> Self { + (value.frozenAddresses,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for resetFrozenStatusCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + frozenAddresses: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: resetFrozenStatusReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for resetFrozenStatusReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for resetFrozenStatusCall { + type Parameters<'a> = + (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = resetFrozenStatusReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "resetFrozenStatus(address[])"; + const SELECTOR: [u8; 4] = [124u8, 247u8, 43u8, 186u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( as alloy_sol_types::SolType>::tokenize( + &self.frozenAddresses, + ),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `strategyManager()` and selector `0x39b70e38`. + ```solidity + function strategyManager() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyManagerCall {} + ///Container type for the return parameters of the [`strategyManager()`](strategyManagerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyManagerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyManagerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyManagerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyManagerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for strategyManagerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = strategyManagerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "strategyManager()"; + const SELECTOR: [u8; 4] = [57u8, 183u8, 14u8, 56u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`ISlasher`](self) function calls. + pub enum ISlasherCalls { + canSlash(canSlashCall), + canWithdraw(canWithdrawCall), + contractCanSlashOperatorUntilBlock(contractCanSlashOperatorUntilBlockCall), + delegation(delegationCall), + freezeOperator(freezeOperatorCall), + getCorrectValueForInsertAfter(getCorrectValueForInsertAfterCall), + getMiddlewareTimesIndexServeUntilBlock(getMiddlewareTimesIndexServeUntilBlockCall), + getMiddlewareTimesIndexStalestUpdateBlock(getMiddlewareTimesIndexStalestUpdateBlockCall), + isFrozen(isFrozenCall), + latestUpdateBlock(latestUpdateBlockCall), + middlewareTimesLength(middlewareTimesLengthCall), + operatorToMiddlewareTimes(operatorToMiddlewareTimesCall), + operatorWhitelistedContractsLinkedListEntry( + operatorWhitelistedContractsLinkedListEntryCall, + ), + operatorWhitelistedContractsLinkedListSize(operatorWhitelistedContractsLinkedListSizeCall), + optIntoSlashing(optIntoSlashingCall), + recordFirstStakeUpdate(recordFirstStakeUpdateCall), + recordLastStakeUpdateAndRevokeSlashingAbility( + recordLastStakeUpdateAndRevokeSlashingAbilityCall, + ), + recordStakeUpdate(recordStakeUpdateCall), + resetFrozenStatus(resetFrozenStatusCall), + strategyManager(strategyManagerCall), + } + #[automatically_derived] + impl ISlasherCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [15u8, 250u8, 187u8, 206u8], + [23u8, 93u8, 50u8, 5u8], + [24u8, 116u8, 229u8, 174u8], + [40u8, 38u8, 112u8, 252u8], + [56u8, 200u8, 238u8, 100u8], + [57u8, 183u8, 14u8, 56u8], + [111u8, 12u8, 47u8, 116u8], + [114u8, 62u8, 89u8, 199u8], + [114u8, 89u8, 164u8, 92u8], + [124u8, 247u8, 43u8, 186u8], + [129u8, 5u8, 224u8, 67u8], + [133u8, 95u8, 204u8, 74u8], + [164u8, 157u8, 183u8, 50u8], + [199u8, 71u8, 7u8, 91u8], + [217u8, 129u8, 40u8, 192u8], + [218u8, 22u8, 226u8, 155u8], + [223u8, 92u8, 247u8, 35u8], + [229u8, 131u8, 152u8, 54u8], + [233u8, 33u8, 212u8, 250u8], + [247u8, 59u8, 117u8, 25u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ISlasherCalls { + const NAME: &'static str = "ISlasherCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 20usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::canSlash(_) => ::SELECTOR, + Self::canWithdraw(_) => { + ::SELECTOR + } + Self::contractCanSlashOperatorUntilBlock(_) => { + ::SELECTOR + } + Self::delegation(_) => { + ::SELECTOR + } + Self::freezeOperator(_) => { + ::SELECTOR + } + Self::getCorrectValueForInsertAfter(_) => { + ::SELECTOR + } + Self::getMiddlewareTimesIndexServeUntilBlock(_) => { + ::SELECTOR + } + Self::getMiddlewareTimesIndexStalestUpdateBlock(_) => { + ::SELECTOR + } + Self::isFrozen(_) => ::SELECTOR, + Self::latestUpdateBlock(_) => { + ::SELECTOR + } + Self::middlewareTimesLength(_) => { + ::SELECTOR + } + Self::operatorToMiddlewareTimes(_) => { + ::SELECTOR + } + Self::operatorWhitelistedContractsLinkedListEntry(_) => { + ::SELECTOR + } + Self::operatorWhitelistedContractsLinkedListSize(_) => { + ::SELECTOR + } + Self::optIntoSlashing(_) => { + ::SELECTOR + } + Self::recordFirstStakeUpdate(_) => { + ::SELECTOR + } + Self::recordLastStakeUpdateAndRevokeSlashingAbility(_) => { + ::SELECTOR + } + Self::recordStakeUpdate(_) => { + ::SELECTOR + } + Self::resetFrozenStatus(_) => { + ::SELECTOR + } + Self::strategyManager(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn(&[u8], bool) -> alloy_sol_types::Result] = &[ + { + fn recordLastStakeUpdateAndRevokeSlashingAbility( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + ISlasherCalls::recordLastStakeUpdateAndRevokeSlashingAbility, + ) + } + recordLastStakeUpdateAndRevokeSlashingAbility + }, + { + fn recordFirstStakeUpdate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ISlasherCalls::recordFirstStakeUpdate) + } + recordFirstStakeUpdate + }, + { + fn getMiddlewareTimesIndexStalestUpdateBlock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + ISlasherCalls::getMiddlewareTimesIndexStalestUpdateBlock, + ) + } + getMiddlewareTimesIndexStalestUpdateBlock + }, + { + fn operatorToMiddlewareTimes( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ISlasherCalls::operatorToMiddlewareTimes) + } + operatorToMiddlewareTimes + }, + { + fn freezeOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ISlasherCalls::freezeOperator) + } + freezeOperator + }, + { + fn strategyManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ISlasherCalls::strategyManager) + } + strategyManager + }, + { + fn contractCanSlashOperatorUntilBlock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ISlasherCalls::contractCanSlashOperatorUntilBlock) + } + contractCanSlashOperatorUntilBlock + }, + { + fn getCorrectValueForInsertAfter( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ISlasherCalls::getCorrectValueForInsertAfter) + } + getCorrectValueForInsertAfter + }, + { + fn getMiddlewareTimesIndexServeUntilBlock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ISlasherCalls::getMiddlewareTimesIndexServeUntilBlock) + } + getMiddlewareTimesIndexServeUntilBlock + }, + { + fn resetFrozenStatus( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ISlasherCalls::resetFrozenStatus) + } + resetFrozenStatus + }, + { + fn canWithdraw( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ISlasherCalls::canWithdraw) + } + canWithdraw + }, + { + fn operatorWhitelistedContractsLinkedListEntry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + ISlasherCalls::operatorWhitelistedContractsLinkedListEntry, + ) + } + operatorWhitelistedContractsLinkedListEntry + }, + { + fn middlewareTimesLength( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ISlasherCalls::middlewareTimesLength) + } + middlewareTimesLength + }, + { + fn recordStakeUpdate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ISlasherCalls::recordStakeUpdate) + } + recordStakeUpdate + }, + { + fn canSlash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ISlasherCalls::canSlash) + } + canSlash + }, + { + fn latestUpdateBlock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ISlasherCalls::latestUpdateBlock) + } + latestUpdateBlock + }, + { + fn delegation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ISlasherCalls::delegation) + } + delegation + }, + { + fn isFrozen( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ISlasherCalls::isFrozen) + } + isFrozen + }, + { + fn operatorWhitelistedContractsLinkedListSize( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + ISlasherCalls::operatorWhitelistedContractsLinkedListSize, + ) + } + operatorWhitelistedContractsLinkedListSize + }, + { + fn optIntoSlashing( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ISlasherCalls::optIntoSlashing) + } + optIntoSlashing + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::canSlash(inner) => { + ::abi_encoded_size(inner) + } + Self::canWithdraw(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::contractCanSlashOperatorUntilBlock(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::delegation(inner) => { + ::abi_encoded_size(inner) + } + Self::freezeOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getCorrectValueForInsertAfter(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getMiddlewareTimesIndexServeUntilBlock(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getMiddlewareTimesIndexStalestUpdateBlock(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::isFrozen(inner) => { + ::abi_encoded_size(inner) + } + Self::latestUpdateBlock(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::middlewareTimesLength(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::operatorToMiddlewareTimes(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::operatorWhitelistedContractsLinkedListEntry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::operatorWhitelistedContractsLinkedListSize(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::optIntoSlashing(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::recordFirstStakeUpdate(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::recordLastStakeUpdateAndRevokeSlashingAbility(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::recordStakeUpdate(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::resetFrozenStatus(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::strategyManager(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::canSlash(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::canWithdraw(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::contractCanSlashOperatorUntilBlock(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::delegation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::freezeOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getCorrectValueForInsertAfter(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getMiddlewareTimesIndexServeUntilBlock(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getMiddlewareTimesIndexStalestUpdateBlock(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::isFrozen(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::latestUpdateBlock(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::middlewareTimesLength(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::operatorToMiddlewareTimes(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::operatorWhitelistedContractsLinkedListEntry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::operatorWhitelistedContractsLinkedListSize(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::optIntoSlashing(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::recordFirstStakeUpdate(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::recordLastStakeUpdateAndRevokeSlashingAbility(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::recordStakeUpdate(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::resetFrozenStatus(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::strategyManager(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`ISlasher`](self) events. + pub enum ISlasherEvents { + FrozenStatusReset(FrozenStatusReset), + MiddlewareTimesAdded(MiddlewareTimesAdded), + OperatorFrozen(OperatorFrozen), + OptedIntoSlashing(OptedIntoSlashing), + SlashingAbilityRevoked(SlashingAbilityRevoked), + } + #[automatically_derived] + impl ISlasherEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 27u8, 98u8, 186u8, 100u8, 199u8, 45u8, 1u8, 228u8, 26u8, 43u8, 140u8, 70u8, 230u8, + 174u8, 239u8, 247u8, 40u8, 239u8, 58u8, 68u8, 56u8, 207u8, 28u8, 172u8, 61u8, + 146u8, 238u8, 18u8, 24u8, 157u8, 86u8, 73u8, + ], + [ + 68u8, 74u8, 132u8, 245u8, 18u8, 129u8, 106u8, 231u8, 190u8, 142u8, 216u8, 166u8, + 106u8, 168u8, 142u8, 54u8, 46u8, 181u8, 77u8, 9u8, 136u8, 232u8, 58u8, 204u8, + 157u8, 129u8, 116u8, 102u8, 34u8, 179u8, 186u8, 81u8, + ], + [ + 154u8, 161u8, 177u8, 57u8, 31u8, 53u8, 198u8, 114u8, 237u8, 31u8, 59u8, 126u8, + 206u8, 99u8, 47u8, 69u8, 19u8, 230u8, 24u8, 54u8, 107u8, 239u8, 122u8, 47u8, 103u8, + 183u8, 198u8, 188u8, 31u8, 45u8, 43u8, 20u8, + ], + [ + 212u8, 206u8, 240u8, 175u8, 39u8, 128u8, 13u8, 70u8, 111u8, 202u8, 205u8, 133u8, + 119u8, 152u8, 87u8, 55u8, 139u8, 133u8, 203u8, 97u8, 86u8, 144u8, 5u8, 255u8, 20u8, + 100u8, 250u8, 110u8, 92u8, 237u8, 105u8, 216u8, + ], + [ + 239u8, 169u8, 251u8, 56u8, 232u8, 19u8, 213u8, 60u8, 21u8, 237u8, 245u8, 1u8, + 224u8, 56u8, 82u8, 132u8, 58u8, 63u8, 237u8, 105u8, 25u8, 96u8, 82u8, 51u8, 145u8, + 215u8, 26u8, 9u8, 43u8, 54u8, 39u8, 216u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for ISlasherEvents { + const NAME: &'static str = "ISlasherEvents"; + const COUNT: usize = 5usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::FrozenStatusReset) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::MiddlewareTimesAdded) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorFrozen) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OptedIntoSlashing) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::SlashingAbilityRevoked) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ISlasherEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::FrozenStatusReset(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::MiddlewareTimesAdded(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorFrozen(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OptedIntoSlashing(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::SlashingAbilityRevoked(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::FrozenStatusReset(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::MiddlewareTimesAdded(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorFrozen(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OptedIntoSlashing(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::SlashingAbilityRevoked(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ISlasher`](self) contract instance. + + See the [wrapper's documentation](`ISlasherInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ISlasherInstance { + ISlasherInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + ISlasherInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + ISlasherInstance::::deploy_builder(provider) + } + /**A [`ISlasher`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ISlasher`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ISlasherInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ISlasherInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ISlasherInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISlasherInstance + { + /**Creates a new wrapper around an on-chain [`ISlasher`](self) contract instance. + + See the [wrapper's documentation](`ISlasherInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ISlasherInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ISlasherInstance { + ISlasherInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISlasherInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`canSlash`] function. + pub fn canSlash( + &self, + toBeSlashed: alloy::sol_types::private::Address, + slashingContract: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&canSlashCall { + toBeSlashed, + slashingContract, + }) + } + ///Creates a new call builder for the [`canWithdraw`] function. + pub fn canWithdraw( + &self, + operator: alloy::sol_types::private::Address, + withdrawalStartBlock: u32, + middlewareTimesIndex: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&canWithdrawCall { + operator, + withdrawalStartBlock, + middlewareTimesIndex, + }) + } + ///Creates a new call builder for the [`contractCanSlashOperatorUntilBlock`] function. + pub fn contractCanSlashOperatorUntilBlock( + &self, + operator: alloy::sol_types::private::Address, + serviceContract: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&contractCanSlashOperatorUntilBlockCall { + operator, + serviceContract, + }) + } + ///Creates a new call builder for the [`delegation`] function. + pub fn delegation(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&delegationCall {}) + } + ///Creates a new call builder for the [`freezeOperator`] function. + pub fn freezeOperator( + &self, + toBeFrozen: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&freezeOperatorCall { toBeFrozen }) + } + ///Creates a new call builder for the [`getCorrectValueForInsertAfter`] function. + pub fn getCorrectValueForInsertAfter( + &self, + operator: alloy::sol_types::private::Address, + updateBlock: u32, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getCorrectValueForInsertAfterCall { + operator, + updateBlock, + }) + } + ///Creates a new call builder for the [`getMiddlewareTimesIndexServeUntilBlock`] function. + pub fn getMiddlewareTimesIndexServeUntilBlock( + &self, + operator: alloy::sol_types::private::Address, + index: u32, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&getMiddlewareTimesIndexServeUntilBlockCall { operator, index }) + } + ///Creates a new call builder for the [`getMiddlewareTimesIndexStalestUpdateBlock`] function. + pub fn getMiddlewareTimesIndexStalestUpdateBlock( + &self, + operator: alloy::sol_types::private::Address, + index: u32, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&getMiddlewareTimesIndexStalestUpdateBlockCall { operator, index }) + } + ///Creates a new call builder for the [`isFrozen`] function. + pub fn isFrozen( + &self, + staker: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&isFrozenCall { staker }) + } + ///Creates a new call builder for the [`latestUpdateBlock`] function. + pub fn latestUpdateBlock( + &self, + operator: alloy::sol_types::private::Address, + serviceContract: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&latestUpdateBlockCall { + operator, + serviceContract, + }) + } + ///Creates a new call builder for the [`middlewareTimesLength`] function. + pub fn middlewareTimesLength( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&middlewareTimesLengthCall { operator }) + } + ///Creates a new call builder for the [`operatorToMiddlewareTimes`] function. + pub fn operatorToMiddlewareTimes( + &self, + operator: alloy::sol_types::private::Address, + arrayIndex: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&operatorToMiddlewareTimesCall { + operator, + arrayIndex, + }) + } + ///Creates a new call builder for the [`operatorWhitelistedContractsLinkedListEntry`] function. + pub fn operatorWhitelistedContractsLinkedListEntry( + &self, + operator: alloy::sol_types::private::Address, + node: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&operatorWhitelistedContractsLinkedListEntryCall { operator, node }) + } + ///Creates a new call builder for the [`operatorWhitelistedContractsLinkedListSize`] function. + pub fn operatorWhitelistedContractsLinkedListSize( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&operatorWhitelistedContractsLinkedListSizeCall { operator }) + } + ///Creates a new call builder for the [`optIntoSlashing`] function. + pub fn optIntoSlashing( + &self, + contractAddress: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&optIntoSlashingCall { contractAddress }) + } + ///Creates a new call builder for the [`recordFirstStakeUpdate`] function. + pub fn recordFirstStakeUpdate( + &self, + operator: alloy::sol_types::private::Address, + serveUntilBlock: u32, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&recordFirstStakeUpdateCall { + operator, + serveUntilBlock, + }) + } + ///Creates a new call builder for the [`recordLastStakeUpdateAndRevokeSlashingAbility`] function. + pub fn recordLastStakeUpdateAndRevokeSlashingAbility( + &self, + operator: alloy::sol_types::private::Address, + serveUntilBlock: u32, + ) -> alloy_contract::SolCallBuilder< + T, + &P, + recordLastStakeUpdateAndRevokeSlashingAbilityCall, + N, + > { + self.call_builder(&recordLastStakeUpdateAndRevokeSlashingAbilityCall { + operator, + serveUntilBlock, + }) + } + ///Creates a new call builder for the [`recordStakeUpdate`] function. + pub fn recordStakeUpdate( + &self, + operator: alloy::sol_types::private::Address, + updateBlock: u32, + serveUntilBlock: u32, + insertAfter: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&recordStakeUpdateCall { + operator, + updateBlock, + serveUntilBlock, + insertAfter, + }) + } + ///Creates a new call builder for the [`resetFrozenStatus`] function. + pub fn resetFrozenStatus( + &self, + frozenAddresses: alloy::sol_types::private::Vec, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&resetFrozenStatusCall { frozenAddresses }) + } + ///Creates a new call builder for the [`strategyManager`] function. + pub fn strategyManager( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&strategyManagerCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISlasherInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`FrozenStatusReset`] event. + pub fn FrozenStatusReset_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`MiddlewareTimesAdded`] event. + pub fn MiddlewareTimesAdded_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorFrozen`] event. + pub fn OperatorFrozen_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OptedIntoSlashing`] event. + pub fn OptedIntoSlashing_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`SlashingAbilityRevoked`] event. + pub fn SlashingAbilityRevoked_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/isocketupdater.rs b/crates/utils/src/isocketupdater.rs new file mode 100644 index 00000000..f0cc1f6f --- /dev/null +++ b/crates/utils/src/isocketupdater.rs @@ -0,0 +1,621 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ISocketUpdater { + event OperatorSocketUpdate(bytes32 indexed operatorId, string socket); + + function updateSocket(string memory socket) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "updateSocket", + "inputs": [ + { + "name": "socket", + "type": "string", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "OperatorSocketUpdate", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "socket", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ISocketUpdater { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Event with signature `OperatorSocketUpdate(bytes32,string)` and selector `0xec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa`. + ```solidity + event OperatorSocketUpdate(bytes32 indexed operatorId, string socket); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorSocketUpdate { + #[allow(missing_docs)] + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub socket: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorSocketUpdate { + type DataTuple<'a> = (alloy::sol_types::sol_data::String,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + const SIGNATURE: &'static str = "OperatorSocketUpdate(bytes32,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 236u8, 41u8, 99u8, 171u8, 33u8, 193u8, 229u8, 14u8, 30u8, 88u8, 42u8, 165u8, + 66u8, 175u8, 46u8, 75u8, 247u8, 191u8, 56u8, 230u8, 225u8, 64u8, 60u8, 39u8, + 180u8, 46u8, 28u8, 93u8, 110u8, 98u8, 30u8, 170u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operatorId: topics.1, + socket: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.socket, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.operatorId.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.operatorId); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorSocketUpdate { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorSocketUpdate> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorSocketUpdate) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `updateSocket(string)` and selector `0x0cf4b767`. + ```solidity + function updateSocket(string memory socket) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateSocketCall { + pub socket: alloy::sol_types::private::String, + } + ///Container type for the return parameters of the [`updateSocket(string)`](updateSocketCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateSocketReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateSocketCall) -> Self { + (value.socket,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateSocketCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { socket: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateSocketReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateSocketReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateSocketCall { + type Parameters<'a> = (alloy::sol_types::sol_data::String,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateSocketReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateSocket(string)"; + const SELECTOR: [u8; 4] = [12u8, 244u8, 183u8, 103u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.socket, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`ISocketUpdater`](self) function calls. + pub enum ISocketUpdaterCalls { + updateSocket(updateSocketCall), + } + #[automatically_derived] + impl ISocketUpdaterCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[12u8, 244u8, 183u8, 103u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ISocketUpdaterCalls { + const NAME: &'static str = "ISocketUpdaterCalls"; + const MIN_DATA_LENGTH: usize = 64usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::updateSocket(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[{ + fn updateSocket( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ISocketUpdaterCalls::updateSocket) + } + updateSocket + }]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::updateSocket(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::updateSocket(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`ISocketUpdater`](self) events. + pub enum ISocketUpdaterEvents { + OperatorSocketUpdate(OperatorSocketUpdate), + } + #[automatically_derived] + impl ISocketUpdaterEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[[ + 236u8, 41u8, 99u8, 171u8, 33u8, 193u8, 229u8, 14u8, 30u8, 88u8, 42u8, 165u8, 66u8, + 175u8, 46u8, 75u8, 247u8, 191u8, 56u8, 230u8, 225u8, 64u8, 60u8, 39u8, 180u8, 46u8, + 28u8, 93u8, 110u8, 98u8, 30u8, 170u8, + ]]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for ISocketUpdaterEvents { + const NAME: &'static str = "ISocketUpdaterEvents"; + const COUNT: usize = 1usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorSocketUpdate) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ISocketUpdaterEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::OperatorSocketUpdate(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::OperatorSocketUpdate(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ISocketUpdater`](self) contract instance. + + See the [wrapper's documentation](`ISocketUpdaterInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ISocketUpdaterInstance { + ISocketUpdaterInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + ISocketUpdaterInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + ISocketUpdaterInstance::::deploy_builder(provider) + } + /**A [`ISocketUpdater`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ISocketUpdater`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ISocketUpdaterInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ISocketUpdaterInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ISocketUpdaterInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISocketUpdaterInstance + { + /**Creates a new wrapper around an on-chain [`ISocketUpdater`](self) contract instance. + + See the [wrapper's documentation](`ISocketUpdaterInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ISocketUpdaterInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ISocketUpdaterInstance { + ISocketUpdaterInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISocketUpdaterInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`updateSocket`] function. + pub fn updateSocket( + &self, + socket: alloy::sol_types::private::String, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateSocketCall { socket }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISocketUpdaterInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`OperatorSocketUpdate`] event. + pub fn OperatorSocketUpdate_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/istakeregistry.rs b/crates/utils/src/istakeregistry.rs new file mode 100644 index 00000000..0e57bae2 --- /dev/null +++ b/crates/utils/src/istakeregistry.rs @@ -0,0 +1,6639 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IStakeRegistry { + struct StakeUpdate { + uint32 updateBlockNumber; + uint32 nextUpdateBlockNumber; + uint96 stake; + } + struct StrategyParams { + address strategy; + uint96 multiplier; + } + + event MinimumStakeForQuorumUpdated(uint8 indexed quorumNumber, uint96 minimumStake); + event OperatorStakeUpdate(bytes32 indexed operatorId, uint8 quorumNumber, uint96 stake); + event QuorumCreated(uint8 indexed quorumNumber); + event StrategyAddedToQuorum(uint8 indexed quorumNumber, address strategy); + event StrategyMultiplierUpdated(uint8 indexed quorumNumber, address strategy, uint256 multiplier); + event StrategyRemovedFromQuorum(uint8 indexed quorumNumber, address strategy); + + function WEIGHTING_DIVISOR() external pure returns (uint256); + function addStrategies(uint8 quorumNumber, StrategyParams[] memory strategyParams) external; + function delegation() external view returns (address); + function deregisterOperator(bytes32 operatorId, bytes memory quorumNumbers) external; + function getCurrentStake(bytes32 operatorId, uint8 quorumNumber) external view returns (uint96); + function getCurrentTotalStake(uint8 quorumNumber) external view returns (uint96); + function getLatestStakeUpdate(bytes32 operatorId, uint8 quorumNumber) external view returns (StakeUpdate memory); + function getStakeAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) external view returns (uint96); + function getStakeAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, bytes32 operatorId, uint256 index) external view returns (uint96); + function getStakeHistory(bytes32 operatorId, uint8 quorumNumber) external view returns (StakeUpdate[] memory); + function getStakeUpdateAtIndex(uint8 quorumNumber, bytes32 operatorId, uint256 index) external view returns (StakeUpdate memory); + function getStakeUpdateIndexAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) external view returns (uint32); + function getTotalStakeAtBlockNumberFromIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) external view returns (uint96); + function getTotalStakeHistoryLength(uint8 quorumNumber) external view returns (uint256); + function getTotalStakeIndicesAtBlockNumber(uint32 blockNumber, bytes memory quorumNumbers) external view returns (uint32[] memory); + function getTotalStakeUpdateAtIndex(uint8 quorumNumber, uint256 index) external view returns (StakeUpdate memory); + function initializeQuorum(uint8 quorumNumber, uint96 minimumStake, StrategyParams[] memory strategyParams) external; + function minimumStakeForQuorum(uint8 quorumNumber) external view returns (uint96); + function modifyStrategyParams(uint8 quorumNumber, uint256[] memory strategyIndices, uint96[] memory newMultipliers) external; + function registerOperator(address operator, bytes32 operatorId, bytes memory quorumNumbers) external returns (uint96[] memory, uint96[] memory); + function registryCoordinator() external view returns (address); + function removeStrategies(uint8 quorumNumber, uint256[] memory indicesToRemove) external; + function strategyParamsByIndex(uint8 quorumNumber, uint256 index) external view returns (StrategyParams memory); + function strategyParamsLength(uint8 quorumNumber) external view returns (uint256); + function updateOperatorStake(address operator, bytes32 operatorId, bytes memory quorumNumbers) external returns (uint192); + function weightOfOperatorForQuorum(uint8 quorumNumber, address operator) external view returns (uint96); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "WEIGHTING_DIVISOR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "addStrategies", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "strategyParams", + "type": "tuple[]", + "internalType": "struct IStakeRegistry.StrategyParams[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "delegation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IDelegationManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "deregisterOperator", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getCurrentStake", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getCurrentTotalStake", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getLatestStakeUpdate", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IStakeRegistry.StakeUpdate", + "components": [ + { + "name": "updateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "nextUpdateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "stake", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getStakeAtBlockNumber", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getStakeAtBlockNumberAndIndex", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getStakeHistory", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple[]", + "internalType": "struct IStakeRegistry.StakeUpdate[]", + "components": [ + { + "name": "updateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "nextUpdateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "stake", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getStakeUpdateAtIndex", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IStakeRegistry.StakeUpdate", + "components": [ + { + "name": "updateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "nextUpdateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "stake", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getStakeUpdateIndexAtBlockNumber", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getTotalStakeAtBlockNumberFromIndex", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getTotalStakeHistoryLength", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getTotalStakeIndicesAtBlockNumber", + "inputs": [ + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32[]", + "internalType": "uint32[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getTotalStakeUpdateAtIndex", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IStakeRegistry.StakeUpdate", + "components": [ + { + "name": "updateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "nextUpdateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "stake", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initializeQuorum", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "minimumStake", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "strategyParams", + "type": "tuple[]", + "internalType": "struct IStakeRegistry.StrategyParams[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "minimumStakeForQuorum", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "modifyStrategyParams", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "strategyIndices", + "type": "uint256[]", + "internalType": "uint256[]" + }, + { + "name": "newMultipliers", + "type": "uint96[]", + "internalType": "uint96[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registerOperator", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "uint96[]", + "internalType": "uint96[]" + }, + { + "name": "", + "type": "uint96[]", + "internalType": "uint96[]" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registryCoordinator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "removeStrategies", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "indicesToRemove", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "strategyParamsByIndex", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IStakeRegistry.StrategyParams", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "strategyParamsLength", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "updateOperatorStake", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "uint192", + "internalType": "uint192" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "weightOfOperatorForQuorum", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "MinimumStakeForQuorumUpdated", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "indexed": true, + "internalType": "uint8" + }, + { + "name": "minimumStake", + "type": "uint96", + "indexed": false, + "internalType": "uint96" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorStakeUpdate", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "quorumNumber", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + }, + { + "name": "stake", + "type": "uint96", + "indexed": false, + "internalType": "uint96" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "QuorumCreated", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "indexed": true, + "internalType": "uint8" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StrategyAddedToQuorum", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "indexed": true, + "internalType": "uint8" + }, + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StrategyMultiplierUpdated", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "indexed": true, + "internalType": "uint8" + }, + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StrategyRemovedFromQuorum", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "indexed": true, + "internalType": "uint8" + }, + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IStakeRegistry { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**```solidity + struct StakeUpdate { uint32 updateBlockNumber; uint32 nextUpdateBlockNumber; uint96 stake; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct StakeUpdate { + pub updateBlockNumber: u32, + pub nextUpdateBlockNumber: u32, + pub stake: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<96>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u32, + u32, + alloy::sol_types::private::primitives::aliases::U96, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: StakeUpdate) -> Self { + ( + value.updateBlockNumber, + value.nextUpdateBlockNumber, + value.stake, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for StakeUpdate { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + updateBlockNumber: tuple.0, + nextUpdateBlockNumber: tuple.1, + stake: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for StakeUpdate { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for StakeUpdate { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.updateBlockNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.nextUpdateBlockNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.stake, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for StakeUpdate { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for StakeUpdate { + const NAME: &'static str = "StakeUpdate"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "StakeUpdate(uint32 updateBlockNumber,uint32 nextUpdateBlockNumber,uint96 stake)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word( + &self.updateBlockNumber, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.nextUpdateBlockNumber, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.stake) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for StakeUpdate { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.updateBlockNumber, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.nextUpdateBlockNumber, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.stake) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.updateBlockNumber, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nextUpdateBlockNumber, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.stake, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct StrategyParams { address strategy; uint96 multiplier; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct StrategyParams { + pub strategy: alloy::sol_types::private::Address, + pub multiplier: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<96>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U96, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: StrategyParams) -> Self { + (value.strategy, value.multiplier) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for StrategyParams { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategy: tuple.0, + multiplier: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for StrategyParams { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for StrategyParams { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.multiplier, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for StrategyParams { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for StrategyParams { + const NAME: &'static str = "StrategyParams"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "StrategyParams(address strategy,uint96 multiplier)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.strategy, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.multiplier) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for StrategyParams { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.strategy, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.multiplier, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.strategy, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.multiplier, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**Event with signature `MinimumStakeForQuorumUpdated(uint8,uint96)` and selector `0x26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf`. + ```solidity + event MinimumStakeForQuorumUpdated(uint8 indexed quorumNumber, uint96 minimumStake); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct MinimumStakeForQuorumUpdated { + #[allow(missing_docs)] + pub quorumNumber: u8, + #[allow(missing_docs)] + pub minimumStake: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for MinimumStakeForQuorumUpdated { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + const SIGNATURE: &'static str = "MinimumStakeForQuorumUpdated(uint8,uint96)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 38u8, 238u8, 207u8, 242u8, 183u8, 11u8, 10u8, 113u8, 16u8, 79u8, 244u8, 217u8, + 64u8, 186u8, 113u8, 98u8, 210u8, 58u8, 149u8, 194u8, 72u8, 119u8, 31u8, 196u8, + 135u8, 167u8, 190u8, 23u8, 165u8, 150u8, 179u8, 207u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + quorumNumber: topics.1, + minimumStake: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.minimumStake, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for MinimumStakeForQuorumUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&MinimumStakeForQuorumUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &MinimumStakeForQuorumUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorStakeUpdate(bytes32,uint8,uint96)` and selector `0x2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d`. + ```solidity + event OperatorStakeUpdate(bytes32 indexed operatorId, uint8 quorumNumber, uint96 stake); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorStakeUpdate { + #[allow(missing_docs)] + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub quorumNumber: u8, + #[allow(missing_docs)] + pub stake: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorStakeUpdate { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<96>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + const SIGNATURE: &'static str = "OperatorStakeUpdate(bytes32,uint8,uint96)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 47u8, 82u8, 125u8, 82u8, 126u8, 149u8, 216u8, 254u8, 64u8, 174u8, 197u8, 83u8, + 119u8, 116u8, 59u8, 183u8, 121u8, 8u8, 125u8, 163u8, 246u8, 208u8, 208u8, + 143u8, 18u8, 227u8, 100u8, 68u8, 218u8, 98u8, 50u8, 125u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operatorId: topics.1, + quorumNumber: data.0, + stake: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.stake, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.operatorId.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.operatorId); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorStakeUpdate { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorStakeUpdate> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorStakeUpdate) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `QuorumCreated(uint8)` and selector `0x831a9c86c45bb303caf3f064be2bc2b9fd4ecf19e47c4ac02a61e75dabfe55b4`. + ```solidity + event QuorumCreated(uint8 indexed quorumNumber); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct QuorumCreated { + #[allow(missing_docs)] + pub quorumNumber: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for QuorumCreated { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + const SIGNATURE: &'static str = "QuorumCreated(uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 131u8, 26u8, 156u8, 134u8, 196u8, 91u8, 179u8, 3u8, 202u8, 243u8, 240u8, 100u8, + 190u8, 43u8, 194u8, 185u8, 253u8, 78u8, 207u8, 25u8, 228u8, 124u8, 74u8, 192u8, + 42u8, 97u8, 231u8, 93u8, 171u8, 254u8, 85u8, 180u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + quorumNumber: topics.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for QuorumCreated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&QuorumCreated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &QuorumCreated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `StrategyAddedToQuorum(uint8,address)` and selector `0x10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f5404`. + ```solidity + event StrategyAddedToQuorum(uint8 indexed quorumNumber, address strategy); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct StrategyAddedToQuorum { + #[allow(missing_docs)] + pub quorumNumber: u8, + #[allow(missing_docs)] + pub strategy: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for StrategyAddedToQuorum { + type DataTuple<'a> = (alloy::sol_types::sol_data::Address,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + const SIGNATURE: &'static str = "StrategyAddedToQuorum(uint8,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 16u8, 86u8, 94u8, 86u8, 202u8, 203u8, 243u8, 46u8, 202u8, 38u8, 121u8, 69u8, + 240u8, 84u8, 254u8, 192u8, 46u8, 89u8, 117u8, 0u8, 50u8, 209u8, 19u8, 211u8, + 48u8, 33u8, 130u8, 173u8, 150u8, 127u8, 84u8, 4u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + quorumNumber: topics.1, + strategy: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.strategy, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for StrategyAddedToQuorum { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&StrategyAddedToQuorum> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &StrategyAddedToQuorum) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `StrategyMultiplierUpdated(uint8,address,uint256)` and selector `0x11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75`. + ```solidity + event StrategyMultiplierUpdated(uint8 indexed quorumNumber, address strategy, uint256 multiplier); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct StrategyMultiplierUpdated { + #[allow(missing_docs)] + pub quorumNumber: u8, + #[allow(missing_docs)] + pub strategy: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub multiplier: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for StrategyMultiplierUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + const SIGNATURE: &'static str = "StrategyMultiplierUpdated(uint8,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 17u8, 165u8, 100u8, 19u8, 34u8, 218u8, 29u8, 255u8, 86u8, 164u8, 182u8, 110u8, + 170u8, 195u8, 31u8, 250u8, 70u8, 82u8, 149u8, 236u8, 233u8, 7u8, 205u8, 22u8, + 52u8, 55u8, 121u8, 59u8, 77u8, 0u8, 154u8, 117u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + quorumNumber: topics.1, + strategy: data.0, + multiplier: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.multiplier, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for StrategyMultiplierUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&StrategyMultiplierUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &StrategyMultiplierUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `StrategyRemovedFromQuorum(uint8,address)` and selector `0x31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f7`. + ```solidity + event StrategyRemovedFromQuorum(uint8 indexed quorumNumber, address strategy); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct StrategyRemovedFromQuorum { + #[allow(missing_docs)] + pub quorumNumber: u8, + #[allow(missing_docs)] + pub strategy: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for StrategyRemovedFromQuorum { + type DataTuple<'a> = (alloy::sol_types::sol_data::Address,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + const SIGNATURE: &'static str = "StrategyRemovedFromQuorum(uint8,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 49u8, 250u8, 46u8, 44u8, 210u8, 128u8, 201u8, 55u8, 94u8, 19u8, 255u8, 207u8, + 61u8, 129u8, 226u8, 55u8, 129u8, 0u8, 24u8, 110u8, 64u8, 88u8, 248u8, 211u8, + 221u8, 182u8, 144u8, 184u8, 45u8, 205u8, 49u8, 247u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + quorumNumber: topics.1, + strategy: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.strategy, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for StrategyRemovedFromQuorum { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&StrategyRemovedFromQuorum> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &StrategyRemovedFromQuorum) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `WEIGHTING_DIVISOR()` and selector `0x5e5a6775`. + ```solidity + function WEIGHTING_DIVISOR() external pure returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct WEIGHTING_DIVISORCall {} + ///Container type for the return parameters of the [`WEIGHTING_DIVISOR()`](WEIGHTING_DIVISORCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct WEIGHTING_DIVISORReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: WEIGHTING_DIVISORCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for WEIGHTING_DIVISORCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: WEIGHTING_DIVISORReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for WEIGHTING_DIVISORReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for WEIGHTING_DIVISORCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = WEIGHTING_DIVISORReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "WEIGHTING_DIVISOR()"; + const SELECTOR: [u8; 4] = [94u8, 90u8, 103u8, 117u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `addStrategies(uint8,(address,uint96)[])` and selector `0xc601527d`. + ```solidity + function addStrategies(uint8 quorumNumber, StrategyParams[] memory strategyParams) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct addStrategiesCall { + pub quorumNumber: u8, + pub strategyParams: + alloy::sol_types::private::Vec<::RustType>, + } + ///Container type for the return parameters of the [`addStrategies(uint8,(address,uint96)[])`](addStrategiesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct addStrategiesReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u8, + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: addStrategiesCall) -> Self { + (value.quorumNumber, value.strategyParams) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for addStrategiesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + strategyParams: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: addStrategiesReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for addStrategiesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for addStrategiesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Array, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = addStrategiesReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "addStrategies(uint8,(address,uint96)[])"; + const SELECTOR: [u8; 4] = [198u8, 1u8, 82u8, 125u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + as alloy_sol_types::SolType>::tokenize(&self.strategyParams), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `delegation()` and selector `0xdf5cf723`. + ```solidity + function delegation() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegationCall {} + ///Container type for the return parameters of the [`delegation()`](delegationCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for delegationCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = delegationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "delegation()"; + const SELECTOR: [u8; 4] = [223u8, 92u8, 247u8, 35u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `deregisterOperator(bytes32,bytes)` and selector `0xbd29b8cd`. + ```solidity + function deregisterOperator(bytes32 operatorId, bytes memory quorumNumbers) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`deregisterOperator(bytes32,bytes)`](deregisterOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorCall) -> Self { + (value.operatorId, value.quorumNumbers) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + quorumNumbers: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for deregisterOperatorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = deregisterOperatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "deregisterOperator(bytes32,bytes)"; + const SELECTOR: [u8; 4] = [189u8, 41u8, 184u8, 205u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getCurrentStake(bytes32,uint8)` and selector `0x5401ed27`. + ```solidity + function getCurrentStake(bytes32 operatorId, uint8 quorumNumber) external view returns (uint96); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getCurrentStakeCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`getCurrentStake(bytes32,uint8)`](getCurrentStakeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getCurrentStakeReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>, u8); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCurrentStakeCall) -> Self { + (value.operatorId, value.quorumNumber) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCurrentStakeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + quorumNumber: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U96,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCurrentStakeReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCurrentStakeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getCurrentStakeCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getCurrentStakeReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getCurrentStake(bytes32,uint8)"; + const SELECTOR: [u8; 4] = [84u8, 1u8, 237u8, 39u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getCurrentTotalStake(uint8)` and selector `0xd5eccc05`. + ```solidity + function getCurrentTotalStake(uint8 quorumNumber) external view returns (uint96); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getCurrentTotalStakeCall { + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`getCurrentTotalStake(uint8)`](getCurrentTotalStakeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getCurrentTotalStakeReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCurrentTotalStakeCall) -> Self { + (value.quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCurrentTotalStakeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U96,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCurrentTotalStakeReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCurrentTotalStakeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getCurrentTotalStakeCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getCurrentTotalStakeReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getCurrentTotalStake(uint8)"; + const SELECTOR: [u8; 4] = [213u8, 236u8, 204u8, 5u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getLatestStakeUpdate(bytes32,uint8)` and selector `0xf851e198`. + ```solidity + function getLatestStakeUpdate(bytes32 operatorId, uint8 quorumNumber) external view returns (StakeUpdate memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLatestStakeUpdateCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`getLatestStakeUpdate(bytes32,uint8)`](getLatestStakeUpdateCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLatestStakeUpdateReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>, u8); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLatestStakeUpdateCall) -> Self { + (value.operatorId, value.quorumNumber) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLatestStakeUpdateCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + quorumNumber: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (StakeUpdate,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLatestStakeUpdateReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLatestStakeUpdateReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getLatestStakeUpdateCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getLatestStakeUpdateReturn; + type ReturnTuple<'a> = (StakeUpdate,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getLatestStakeUpdate(bytes32,uint8)"; + const SELECTOR: [u8; 4] = [248u8, 81u8, 225u8, 152u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getStakeAtBlockNumber(bytes32,uint8,uint32)` and selector `0xfa28c627`. + ```solidity + function getStakeAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) external view returns (uint96); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeAtBlockNumberCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumber: u8, + pub blockNumber: u32, + } + ///Container type for the return parameters of the [`getStakeAtBlockNumber(bytes32,uint8,uint32)`](getStakeAtBlockNumberCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeAtBlockNumberReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>, u8, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeAtBlockNumberCall) -> Self { + (value.operatorId, value.quorumNumber, value.blockNumber) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeAtBlockNumberCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + quorumNumber: tuple.1, + blockNumber: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U96,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeAtBlockNumberReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeAtBlockNumberReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getStakeAtBlockNumberCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getStakeAtBlockNumberReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getStakeAtBlockNumber(bytes32,uint8,uint32)"; + const SELECTOR: [u8; 4] = [250u8, 40u8, 198u8, 39u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + as alloy_sol_types::SolType>::tokenize(&self.blockNumber), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getStakeAtBlockNumberAndIndex(uint8,uint32,bytes32,uint256)` and selector `0xf2be94ae`. + ```solidity + function getStakeAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, bytes32 operatorId, uint256 index) external view returns (uint96); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeAtBlockNumberAndIndexCall { + pub quorumNumber: u8, + pub blockNumber: u32, + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getStakeAtBlockNumberAndIndex(uint8,uint32,bytes32,uint256)`](getStakeAtBlockNumberAndIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeAtBlockNumberAndIndexReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u8, + u32, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeAtBlockNumberAndIndexCall) -> Self { + ( + value.quorumNumber, + value.blockNumber, + value.operatorId, + value.index, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeAtBlockNumberAndIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + blockNumber: tuple.1, + operatorId: tuple.2, + index: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U96,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeAtBlockNumberAndIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeAtBlockNumberAndIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getStakeAtBlockNumberAndIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getStakeAtBlockNumberAndIndexReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "getStakeAtBlockNumberAndIndex(uint8,uint32,bytes32,uint256)"; + const SELECTOR: [u8; 4] = [242u8, 190u8, 148u8, 174u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + as alloy_sol_types::SolType>::tokenize(&self.blockNumber), + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.index), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getStakeHistory(bytes32,uint8)` and selector `0x2cd95940`. + ```solidity + function getStakeHistory(bytes32 operatorId, uint8 quorumNumber) external view returns (StakeUpdate[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeHistoryCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`getStakeHistory(bytes32,uint8)`](getStakeHistoryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeHistoryReturn { + pub _0: + alloy::sol_types::private::Vec<::RustType>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>, u8); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeHistoryCall) -> Self { + (value.operatorId, value.quorumNumber) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeHistoryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + quorumNumber: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeHistoryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeHistoryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getStakeHistoryCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getStakeHistoryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getStakeHistory(bytes32,uint8)"; + const SELECTOR: [u8; 4] = [44u8, 217u8, 89u8, 64u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getStakeUpdateAtIndex(uint8,bytes32,uint256)` and selector `0xac6bfb03`. + ```solidity + function getStakeUpdateAtIndex(uint8 quorumNumber, bytes32 operatorId, uint256 index) external view returns (StakeUpdate memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeUpdateAtIndexCall { + pub quorumNumber: u8, + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getStakeUpdateAtIndex(uint8,bytes32,uint256)`](getStakeUpdateAtIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u8, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeUpdateAtIndexCall) -> Self { + (value.quorumNumber, value.operatorId, value.index) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeUpdateAtIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + operatorId: tuple.1, + index: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (StakeUpdate,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeUpdateAtIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeUpdateAtIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getStakeUpdateAtIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getStakeUpdateAtIndexReturn; + type ReturnTuple<'a> = (StakeUpdate,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getStakeUpdateAtIndex(uint8,bytes32,uint256)"; + const SELECTOR: [u8; 4] = [172u8, 107u8, 251u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.index), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getStakeUpdateIndexAtBlockNumber(bytes32,uint8,uint32)` and selector `0xdd9846b9`. + ```solidity + function getStakeUpdateIndexAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) external view returns (uint32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeUpdateIndexAtBlockNumberCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumber: u8, + pub blockNumber: u32, + } + ///Container type for the return parameters of the [`getStakeUpdateIndexAtBlockNumber(bytes32,uint8,uint32)`](getStakeUpdateIndexAtBlockNumberCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeUpdateIndexAtBlockNumberReturn { + pub _0: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>, u8, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeUpdateIndexAtBlockNumberCall) -> Self { + (value.operatorId, value.quorumNumber, value.blockNumber) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeUpdateIndexAtBlockNumberCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + quorumNumber: tuple.1, + blockNumber: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeUpdateIndexAtBlockNumberReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeUpdateIndexAtBlockNumberReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getStakeUpdateIndexAtBlockNumberCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getStakeUpdateIndexAtBlockNumberReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "getStakeUpdateIndexAtBlockNumber(bytes32,uint8,uint32)"; + const SELECTOR: [u8; 4] = [221u8, 152u8, 70u8, 185u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + as alloy_sol_types::SolType>::tokenize(&self.blockNumber), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getTotalStakeAtBlockNumberFromIndex(uint8,uint32,uint256)` and selector `0xc8294c56`. + ```solidity + function getTotalStakeAtBlockNumberFromIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) external view returns (uint96); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getTotalStakeAtBlockNumberFromIndexCall { + pub quorumNumber: u8, + pub blockNumber: u32, + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getTotalStakeAtBlockNumberFromIndex(uint8,uint32,uint256)`](getTotalStakeAtBlockNumberFromIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getTotalStakeAtBlockNumberFromIndexReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u8, + u32, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getTotalStakeAtBlockNumberFromIndexCall) -> Self { + (value.quorumNumber, value.blockNumber, value.index) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getTotalStakeAtBlockNumberFromIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + blockNumber: tuple.1, + index: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U96,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getTotalStakeAtBlockNumberFromIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getTotalStakeAtBlockNumberFromIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getTotalStakeAtBlockNumberFromIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getTotalStakeAtBlockNumberFromIndexReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "getTotalStakeAtBlockNumberFromIndex(uint8,uint32,uint256)"; + const SELECTOR: [u8; 4] = [200u8, 41u8, 76u8, 86u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.blockNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getTotalStakeHistoryLength(uint8)` and selector `0x0491b41c`. + ```solidity + function getTotalStakeHistoryLength(uint8 quorumNumber) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getTotalStakeHistoryLengthCall { + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`getTotalStakeHistoryLength(uint8)`](getTotalStakeHistoryLengthCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getTotalStakeHistoryLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getTotalStakeHistoryLengthCall) -> Self { + (value.quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getTotalStakeHistoryLengthCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getTotalStakeHistoryLengthReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getTotalStakeHistoryLengthReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getTotalStakeHistoryLengthCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getTotalStakeHistoryLengthReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getTotalStakeHistoryLength(uint8)"; + const SELECTOR: [u8; 4] = [4u8, 145u8, 180u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getTotalStakeIndicesAtBlockNumber(uint32,bytes)` and selector `0x81c07502`. + ```solidity + function getTotalStakeIndicesAtBlockNumber(uint32 blockNumber, bytes memory quorumNumbers) external view returns (uint32[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getTotalStakeIndicesAtBlockNumberCall { + pub blockNumber: u32, + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`getTotalStakeIndicesAtBlockNumber(uint32,bytes)`](getTotalStakeIndicesAtBlockNumberCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getTotalStakeIndicesAtBlockNumberReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32, alloy::sol_types::private::Bytes); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getTotalStakeIndicesAtBlockNumberCall) -> Self { + (value.blockNumber, value.quorumNumbers) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getTotalStakeIndicesAtBlockNumberCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + blockNumber: tuple.0, + quorumNumbers: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getTotalStakeIndicesAtBlockNumberReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getTotalStakeIndicesAtBlockNumberReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getTotalStakeIndicesAtBlockNumberCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getTotalStakeIndicesAtBlockNumberReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getTotalStakeIndicesAtBlockNumber(uint32,bytes)"; + const SELECTOR: [u8; 4] = [129u8, 192u8, 117u8, 2u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.blockNumber, + ), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getTotalStakeUpdateAtIndex(uint8,uint256)` and selector `0xb6904b78`. + ```solidity + function getTotalStakeUpdateAtIndex(uint8 quorumNumber, uint256 index) external view returns (StakeUpdate memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getTotalStakeUpdateAtIndexCall { + pub quorumNumber: u8, + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getTotalStakeUpdateAtIndex(uint8,uint256)`](getTotalStakeUpdateAtIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getTotalStakeUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (u8, alloy::sol_types::private::primitives::aliases::U256); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getTotalStakeUpdateAtIndexCall) -> Self { + (value.quorumNumber, value.index) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getTotalStakeUpdateAtIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + index: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (StakeUpdate,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getTotalStakeUpdateAtIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getTotalStakeUpdateAtIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getTotalStakeUpdateAtIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getTotalStakeUpdateAtIndexReturn; + type ReturnTuple<'a> = (StakeUpdate,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getTotalStakeUpdateAtIndex(uint8,uint256)"; + const SELECTOR: [u8; 4] = [182u8, 144u8, 75u8, 120u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `initializeQuorum(uint8,uint96,(address,uint96)[])` and selector `0xff694a77`. + ```solidity + function initializeQuorum(uint8 quorumNumber, uint96 minimumStake, StrategyParams[] memory strategyParams) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeQuorumCall { + pub quorumNumber: u8, + pub minimumStake: alloy::sol_types::private::primitives::aliases::U96, + pub strategyParams: + alloy::sol_types::private::Vec<::RustType>, + } + ///Container type for the return parameters of the [`initializeQuorum(uint8,uint96,(address,uint96)[])`](initializeQuorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeQuorumReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<96>, + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u8, + alloy::sol_types::private::primitives::aliases::U96, + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeQuorumCall) -> Self { + (value.quorumNumber, value.minimumStake, value.strategyParams) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeQuorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + minimumStake: tuple.1, + strategyParams: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeQuorumReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeQuorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for initializeQuorumCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<96>, + alloy::sol_types::sol_data::Array, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = initializeQuorumReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "initializeQuorum(uint8,uint96,(address,uint96)[])"; + const SELECTOR: [u8; 4] = [255u8, 105u8, 74u8, 119u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + as alloy_sol_types::SolType>::tokenize(&self.minimumStake), + as alloy_sol_types::SolType>::tokenize(&self.strategyParams), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `minimumStakeForQuorum(uint8)` and selector `0xc46778a5`. + ```solidity + function minimumStakeForQuorum(uint8 quorumNumber) external view returns (uint96); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct minimumStakeForQuorumCall { + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`minimumStakeForQuorum(uint8)`](minimumStakeForQuorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct minimumStakeForQuorumReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: minimumStakeForQuorumCall) -> Self { + (value.quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for minimumStakeForQuorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U96,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: minimumStakeForQuorumReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for minimumStakeForQuorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for minimumStakeForQuorumCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = minimumStakeForQuorumReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "minimumStakeForQuorum(uint8)"; + const SELECTOR: [u8; 4] = [196u8, 103u8, 120u8, 165u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `modifyStrategyParams(uint8,uint256[],uint96[])` and selector `0x20b66298`. + ```solidity + function modifyStrategyParams(uint8 quorumNumber, uint256[] memory strategyIndices, uint96[] memory newMultipliers) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct modifyStrategyParamsCall { + pub quorumNumber: u8, + pub strategyIndices: + alloy::sol_types::private::Vec, + pub newMultipliers: + alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`modifyStrategyParams(uint8,uint256[],uint96[])`](modifyStrategyParamsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct modifyStrategyParamsReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u8, + alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: modifyStrategyParamsCall) -> Self { + ( + value.quorumNumber, + value.strategyIndices, + value.newMultipliers, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for modifyStrategyParamsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + strategyIndices: tuple.1, + newMultipliers: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: modifyStrategyParamsReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for modifyStrategyParamsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for modifyStrategyParamsCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = modifyStrategyParamsReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "modifyStrategyParams(uint8,uint256[],uint96[])"; + const SELECTOR: [u8; 4] = [32u8, 182u8, 98u8, 152u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + , + > as alloy_sol_types::SolType>::tokenize(&self.strategyIndices), + , + > as alloy_sol_types::SolType>::tokenize(&self.newMultipliers), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registerOperator(address,bytes32,bytes)` and selector `0x25504777`. + ```solidity + function registerOperator(address operator, bytes32 operatorId, bytes memory quorumNumbers) external returns (uint96[] memory, uint96[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorCall { + pub operator: alloy::sol_types::private::Address, + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`registerOperator(address,bytes32,bytes)`](registerOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorReturn { + pub _0: alloy::sol_types::private::Vec, + pub _1: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorCall) -> Self { + (value.operator, value.operatorId, value.quorumNumbers) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + operatorId: tuple.1, + quorumNumbers: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorReturn) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registerOperatorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registerOperatorReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registerOperator(address,bytes32,bytes)"; + const SELECTOR: [u8; 4] = [37u8, 80u8, 71u8, 119u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registryCoordinator()` and selector `0x6d14a987`. + ```solidity + function registryCoordinator() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registryCoordinatorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registryCoordinatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registryCoordinator()"; + const SELECTOR: [u8; 4] = [109u8, 20u8, 169u8, 135u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `removeStrategies(uint8,uint256[])` and selector `0x5f1f2d77`. + ```solidity + function removeStrategies(uint8 quorumNumber, uint256[] memory indicesToRemove) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct removeStrategiesCall { + pub quorumNumber: u8, + pub indicesToRemove: + alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`removeStrategies(uint8,uint256[])`](removeStrategiesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct removeStrategiesReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Array>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u8, + alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: removeStrategiesCall) -> Self { + (value.quorumNumber, value.indicesToRemove) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for removeStrategiesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + indicesToRemove: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: removeStrategiesReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for removeStrategiesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for removeStrategiesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Array>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = removeStrategiesReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "removeStrategies(uint8,uint256[])"; + const SELECTOR: [u8; 4] = [95u8, 31u8, 45u8, 119u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + , + > as alloy_sol_types::SolType>::tokenize(&self.indicesToRemove), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `strategyParamsByIndex(uint8,uint256)` and selector `0xadc804da`. + ```solidity + function strategyParamsByIndex(uint8 quorumNumber, uint256 index) external view returns (StrategyParams memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyParamsByIndexCall { + pub quorumNumber: u8, + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`strategyParamsByIndex(uint8,uint256)`](strategyParamsByIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyParamsByIndexReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (u8, alloy::sol_types::private::primitives::aliases::U256); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyParamsByIndexCall) -> Self { + (value.quorumNumber, value.index) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyParamsByIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + index: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (StrategyParams,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyParamsByIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyParamsByIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for strategyParamsByIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = strategyParamsByIndexReturn; + type ReturnTuple<'a> = (StrategyParams,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "strategyParamsByIndex(uint8,uint256)"; + const SELECTOR: [u8; 4] = [173u8, 200u8, 4u8, 218u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `strategyParamsLength(uint8)` and selector `0x3ca5a5f5`. + ```solidity + function strategyParamsLength(uint8 quorumNumber) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyParamsLengthCall { + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`strategyParamsLength(uint8)`](strategyParamsLengthCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyParamsLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyParamsLengthCall) -> Self { + (value.quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyParamsLengthCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyParamsLengthReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyParamsLengthReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for strategyParamsLengthCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = strategyParamsLengthReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "strategyParamsLength(uint8)"; + const SELECTOR: [u8; 4] = [60u8, 165u8, 165u8, 245u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateOperatorStake(address,bytes32,bytes)` and selector `0x66acfefe`. + ```solidity + function updateOperatorStake(address operator, bytes32 operatorId, bytes memory quorumNumbers) external returns (uint192); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorStakeCall { + pub operator: alloy::sol_types::private::Address, + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`updateOperatorStake(address,bytes32,bytes)`](updateOperatorStakeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorStakeReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U192, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorStakeCall) -> Self { + (value.operator, value.operatorId, value.quorumNumbers) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorStakeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + operatorId: tuple.1, + quorumNumbers: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<192>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U192,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorStakeReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorStakeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateOperatorStakeCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateOperatorStakeReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<192>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateOperatorStake(address,bytes32,bytes)"; + const SELECTOR: [u8; 4] = [102u8, 172u8, 254u8, 254u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `weightOfOperatorForQuorum(uint8,address)` and selector `0x1f9b74e0`. + ```solidity + function weightOfOperatorForQuorum(uint8 quorumNumber, address operator) external view returns (uint96); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct weightOfOperatorForQuorumCall { + pub quorumNumber: u8, + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`weightOfOperatorForQuorum(uint8,address)`](weightOfOperatorForQuorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct weightOfOperatorForQuorumReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8, alloy::sol_types::private::Address); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: weightOfOperatorForQuorumCall) -> Self { + (value.quorumNumber, value.operator) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for weightOfOperatorForQuorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + operator: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U96,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: weightOfOperatorForQuorumReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for weightOfOperatorForQuorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for weightOfOperatorForQuorumCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = weightOfOperatorForQuorumReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "weightOfOperatorForQuorum(uint8,address)"; + const SELECTOR: [u8; 4] = [31u8, 155u8, 116u8, 224u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IStakeRegistry`](self) function calls. + pub enum IStakeRegistryCalls { + WEIGHTING_DIVISOR(WEIGHTING_DIVISORCall), + addStrategies(addStrategiesCall), + delegation(delegationCall), + deregisterOperator(deregisterOperatorCall), + getCurrentStake(getCurrentStakeCall), + getCurrentTotalStake(getCurrentTotalStakeCall), + getLatestStakeUpdate(getLatestStakeUpdateCall), + getStakeAtBlockNumber(getStakeAtBlockNumberCall), + getStakeAtBlockNumberAndIndex(getStakeAtBlockNumberAndIndexCall), + getStakeHistory(getStakeHistoryCall), + getStakeUpdateAtIndex(getStakeUpdateAtIndexCall), + getStakeUpdateIndexAtBlockNumber(getStakeUpdateIndexAtBlockNumberCall), + getTotalStakeAtBlockNumberFromIndex(getTotalStakeAtBlockNumberFromIndexCall), + getTotalStakeHistoryLength(getTotalStakeHistoryLengthCall), + getTotalStakeIndicesAtBlockNumber(getTotalStakeIndicesAtBlockNumberCall), + getTotalStakeUpdateAtIndex(getTotalStakeUpdateAtIndexCall), + initializeQuorum(initializeQuorumCall), + minimumStakeForQuorum(minimumStakeForQuorumCall), + modifyStrategyParams(modifyStrategyParamsCall), + registerOperator(registerOperatorCall), + registryCoordinator(registryCoordinatorCall), + removeStrategies(removeStrategiesCall), + strategyParamsByIndex(strategyParamsByIndexCall), + strategyParamsLength(strategyParamsLengthCall), + updateOperatorStake(updateOperatorStakeCall), + weightOfOperatorForQuorum(weightOfOperatorForQuorumCall), + } + #[automatically_derived] + impl IStakeRegistryCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [4u8, 145u8, 180u8, 28u8], + [31u8, 155u8, 116u8, 224u8], + [32u8, 182u8, 98u8, 152u8], + [37u8, 80u8, 71u8, 119u8], + [44u8, 217u8, 89u8, 64u8], + [60u8, 165u8, 165u8, 245u8], + [84u8, 1u8, 237u8, 39u8], + [94u8, 90u8, 103u8, 117u8], + [95u8, 31u8, 45u8, 119u8], + [102u8, 172u8, 254u8, 254u8], + [109u8, 20u8, 169u8, 135u8], + [129u8, 192u8, 117u8, 2u8], + [172u8, 107u8, 251u8, 3u8], + [173u8, 200u8, 4u8, 218u8], + [182u8, 144u8, 75u8, 120u8], + [189u8, 41u8, 184u8, 205u8], + [196u8, 103u8, 120u8, 165u8], + [198u8, 1u8, 82u8, 125u8], + [200u8, 41u8, 76u8, 86u8], + [213u8, 236u8, 204u8, 5u8], + [221u8, 152u8, 70u8, 185u8], + [223u8, 92u8, 247u8, 35u8], + [242u8, 190u8, 148u8, 174u8], + [248u8, 81u8, 225u8, 152u8], + [250u8, 40u8, 198u8, 39u8], + [255u8, 105u8, 74u8, 119u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IStakeRegistryCalls { + const NAME: &'static str = "IStakeRegistryCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 26usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::WEIGHTING_DIVISOR(_) => { + ::SELECTOR + } + Self::addStrategies(_) => ::SELECTOR, + Self::delegation(_) => ::SELECTOR, + Self::deregisterOperator(_) => { + ::SELECTOR + } + Self::getCurrentStake(_) => { + ::SELECTOR + } + Self::getCurrentTotalStake(_) => { + ::SELECTOR + } + Self::getLatestStakeUpdate(_) => { + ::SELECTOR + } + Self::getStakeAtBlockNumber(_) => { + ::SELECTOR + } + Self::getStakeAtBlockNumberAndIndex(_) => { + ::SELECTOR + } + Self::getStakeHistory(_) => { + ::SELECTOR + } + Self::getStakeUpdateAtIndex(_) => { + ::SELECTOR + } + Self::getStakeUpdateIndexAtBlockNumber(_) => { + ::SELECTOR + } + Self::getTotalStakeAtBlockNumberFromIndex(_) => { + ::SELECTOR + } + Self::getTotalStakeHistoryLength(_) => { + ::SELECTOR + } + Self::getTotalStakeIndicesAtBlockNumber(_) => { + ::SELECTOR + } + Self::getTotalStakeUpdateAtIndex(_) => { + ::SELECTOR + } + Self::initializeQuorum(_) => { + ::SELECTOR + } + Self::minimumStakeForQuorum(_) => { + ::SELECTOR + } + Self::modifyStrategyParams(_) => { + ::SELECTOR + } + Self::registerOperator(_) => { + ::SELECTOR + } + Self::registryCoordinator(_) => { + ::SELECTOR + } + Self::removeStrategies(_) => { + ::SELECTOR + } + Self::strategyParamsByIndex(_) => { + ::SELECTOR + } + Self::strategyParamsLength(_) => { + ::SELECTOR + } + Self::updateOperatorStake(_) => { + ::SELECTOR + } + Self::weightOfOperatorForQuorum(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn getTotalStakeHistoryLength( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IStakeRegistryCalls::getTotalStakeHistoryLength) + } + getTotalStakeHistoryLength + }, + { + fn weightOfOperatorForQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStakeRegistryCalls::weightOfOperatorForQuorum) + } + weightOfOperatorForQuorum + }, + { + fn modifyStrategyParams( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStakeRegistryCalls::modifyStrategyParams) + } + modifyStrategyParams + }, + { + fn registerOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStakeRegistryCalls::registerOperator) + } + registerOperator + }, + { + fn getStakeHistory( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStakeRegistryCalls::getStakeHistory) + } + getStakeHistory + }, + { + fn strategyParamsLength( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStakeRegistryCalls::strategyParamsLength) + } + strategyParamsLength + }, + { + fn getCurrentStake( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStakeRegistryCalls::getCurrentStake) + } + getCurrentStake + }, + { + fn WEIGHTING_DIVISOR( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStakeRegistryCalls::WEIGHTING_DIVISOR) + } + WEIGHTING_DIVISOR + }, + { + fn removeStrategies( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStakeRegistryCalls::removeStrategies) + } + removeStrategies + }, + { + fn updateOperatorStake( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStakeRegistryCalls::updateOperatorStake) + } + updateOperatorStake + }, + { + fn registryCoordinator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStakeRegistryCalls::registryCoordinator) + } + registryCoordinator + }, + { + fn getTotalStakeIndicesAtBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IStakeRegistryCalls::getTotalStakeIndicesAtBlockNumber) + } + getTotalStakeIndicesAtBlockNumber + }, + { + fn getStakeUpdateAtIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStakeRegistryCalls::getStakeUpdateAtIndex) + } + getStakeUpdateAtIndex + }, + { + fn strategyParamsByIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStakeRegistryCalls::strategyParamsByIndex) + } + strategyParamsByIndex + }, + { + fn getTotalStakeUpdateAtIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IStakeRegistryCalls::getTotalStakeUpdateAtIndex) + } + getTotalStakeUpdateAtIndex + }, + { + fn deregisterOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStakeRegistryCalls::deregisterOperator) + } + deregisterOperator + }, + { + fn minimumStakeForQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStakeRegistryCalls::minimumStakeForQuorum) + } + minimumStakeForQuorum + }, + { + fn addStrategies( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStakeRegistryCalls::addStrategies) + } + addStrategies + }, + { + fn getTotalStakeAtBlockNumberFromIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + IStakeRegistryCalls::getTotalStakeAtBlockNumberFromIndex, + ) + } + getTotalStakeAtBlockNumberFromIndex + }, + { + fn getCurrentTotalStake( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStakeRegistryCalls::getCurrentTotalStake) + } + getCurrentTotalStake + }, + { + fn getStakeUpdateIndexAtBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IStakeRegistryCalls::getStakeUpdateIndexAtBlockNumber) + } + getStakeUpdateIndexAtBlockNumber + }, + { + fn delegation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IStakeRegistryCalls::delegation) + } + delegation + }, + { + fn getStakeAtBlockNumberAndIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IStakeRegistryCalls::getStakeAtBlockNumberAndIndex) + } + getStakeAtBlockNumberAndIndex + }, + { + fn getLatestStakeUpdate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStakeRegistryCalls::getLatestStakeUpdate) + } + getLatestStakeUpdate + }, + { + fn getStakeAtBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStakeRegistryCalls::getStakeAtBlockNumber) + } + getStakeAtBlockNumber + }, + { + fn initializeQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStakeRegistryCalls::initializeQuorum) + } + initializeQuorum + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::WEIGHTING_DIVISOR(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::addStrategies(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::delegation(inner) => { + ::abi_encoded_size(inner) + } + Self::deregisterOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getCurrentStake(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getCurrentTotalStake(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getLatestStakeUpdate(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getStakeAtBlockNumber(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getStakeAtBlockNumberAndIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getStakeHistory(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getStakeUpdateAtIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getStakeUpdateIndexAtBlockNumber(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getTotalStakeAtBlockNumberFromIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getTotalStakeHistoryLength(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getTotalStakeIndicesAtBlockNumber(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getTotalStakeUpdateAtIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::initializeQuorum(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::minimumStakeForQuorum(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::modifyStrategyParams(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registerOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registryCoordinator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::removeStrategies(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::strategyParamsByIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::strategyParamsLength(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::updateOperatorStake(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::weightOfOperatorForQuorum(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::WEIGHTING_DIVISOR(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::addStrategies(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::delegation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::deregisterOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getCurrentStake(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getCurrentTotalStake(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getLatestStakeUpdate(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getStakeAtBlockNumber(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getStakeAtBlockNumberAndIndex(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getStakeHistory(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getStakeUpdateAtIndex(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getStakeUpdateIndexAtBlockNumber(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getTotalStakeAtBlockNumberFromIndex(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getTotalStakeHistoryLength(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getTotalStakeIndicesAtBlockNumber(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getTotalStakeUpdateAtIndex(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::initializeQuorum(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::minimumStakeForQuorum(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::modifyStrategyParams(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registerOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registryCoordinator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::removeStrategies(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::strategyParamsByIndex(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::strategyParamsLength(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::updateOperatorStake(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::weightOfOperatorForQuorum(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`IStakeRegistry`](self) events. + pub enum IStakeRegistryEvents { + MinimumStakeForQuorumUpdated(MinimumStakeForQuorumUpdated), + OperatorStakeUpdate(OperatorStakeUpdate), + QuorumCreated(QuorumCreated), + StrategyAddedToQuorum(StrategyAddedToQuorum), + StrategyMultiplierUpdated(StrategyMultiplierUpdated), + StrategyRemovedFromQuorum(StrategyRemovedFromQuorum), + } + #[automatically_derived] + impl IStakeRegistryEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 16u8, 86u8, 94u8, 86u8, 202u8, 203u8, 243u8, 46u8, 202u8, 38u8, 121u8, 69u8, 240u8, + 84u8, 254u8, 192u8, 46u8, 89u8, 117u8, 0u8, 50u8, 209u8, 19u8, 211u8, 48u8, 33u8, + 130u8, 173u8, 150u8, 127u8, 84u8, 4u8, + ], + [ + 17u8, 165u8, 100u8, 19u8, 34u8, 218u8, 29u8, 255u8, 86u8, 164u8, 182u8, 110u8, + 170u8, 195u8, 31u8, 250u8, 70u8, 82u8, 149u8, 236u8, 233u8, 7u8, 205u8, 22u8, 52u8, + 55u8, 121u8, 59u8, 77u8, 0u8, 154u8, 117u8, + ], + [ + 38u8, 238u8, 207u8, 242u8, 183u8, 11u8, 10u8, 113u8, 16u8, 79u8, 244u8, 217u8, + 64u8, 186u8, 113u8, 98u8, 210u8, 58u8, 149u8, 194u8, 72u8, 119u8, 31u8, 196u8, + 135u8, 167u8, 190u8, 23u8, 165u8, 150u8, 179u8, 207u8, + ], + [ + 47u8, 82u8, 125u8, 82u8, 126u8, 149u8, 216u8, 254u8, 64u8, 174u8, 197u8, 83u8, + 119u8, 116u8, 59u8, 183u8, 121u8, 8u8, 125u8, 163u8, 246u8, 208u8, 208u8, 143u8, + 18u8, 227u8, 100u8, 68u8, 218u8, 98u8, 50u8, 125u8, + ], + [ + 49u8, 250u8, 46u8, 44u8, 210u8, 128u8, 201u8, 55u8, 94u8, 19u8, 255u8, 207u8, 61u8, + 129u8, 226u8, 55u8, 129u8, 0u8, 24u8, 110u8, 64u8, 88u8, 248u8, 211u8, 221u8, + 182u8, 144u8, 184u8, 45u8, 205u8, 49u8, 247u8, + ], + [ + 131u8, 26u8, 156u8, 134u8, 196u8, 91u8, 179u8, 3u8, 202u8, 243u8, 240u8, 100u8, + 190u8, 43u8, 194u8, 185u8, 253u8, 78u8, 207u8, 25u8, 228u8, 124u8, 74u8, 192u8, + 42u8, 97u8, 231u8, 93u8, 171u8, 254u8, 85u8, 180u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IStakeRegistryEvents { + const NAME: &'static str = "IStakeRegistryEvents"; + const COUNT: usize = 6usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some( + ::SIGNATURE_HASH, + ) => ::decode_raw_log( + topics, data, validate, + ) + .map(Self::MinimumStakeForQuorumUpdated), + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorStakeUpdate) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::QuorumCreated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::StrategyAddedToQuorum) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::StrategyMultiplierUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::StrategyRemovedFromQuorum) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for IStakeRegistryEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::MinimumStakeForQuorumUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorStakeUpdate(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::QuorumCreated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::StrategyAddedToQuorum(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::StrategyMultiplierUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::StrategyRemovedFromQuorum(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::MinimumStakeForQuorumUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorStakeUpdate(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::QuorumCreated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::StrategyAddedToQuorum(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::StrategyMultiplierUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::StrategyRemovedFromQuorum(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IStakeRegistry`](self) contract instance. + + See the [wrapper's documentation](`IStakeRegistryInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IStakeRegistryInstance { + IStakeRegistryInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + IStakeRegistryInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IStakeRegistryInstance::::deploy_builder(provider) + } + /**A [`IStakeRegistry`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IStakeRegistry`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IStakeRegistryInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IStakeRegistryInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IStakeRegistryInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IStakeRegistryInstance + { + /**Creates a new wrapper around an on-chain [`IStakeRegistry`](self) contract instance. + + See the [wrapper's documentation](`IStakeRegistryInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IStakeRegistryInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IStakeRegistryInstance { + IStakeRegistryInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IStakeRegistryInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`WEIGHTING_DIVISOR`] function. + pub fn WEIGHTING_DIVISOR( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&WEIGHTING_DIVISORCall {}) + } + ///Creates a new call builder for the [`addStrategies`] function. + pub fn addStrategies( + &self, + quorumNumber: u8, + strategyParams: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&addStrategiesCall { + quorumNumber, + strategyParams, + }) + } + ///Creates a new call builder for the [`delegation`] function. + pub fn delegation(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&delegationCall {}) + } + ///Creates a new call builder for the [`deregisterOperator`] function. + pub fn deregisterOperator( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumbers: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&deregisterOperatorCall { + operatorId, + quorumNumbers, + }) + } + ///Creates a new call builder for the [`getCurrentStake`] function. + pub fn getCurrentStake( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getCurrentStakeCall { + operatorId, + quorumNumber, + }) + } + ///Creates a new call builder for the [`getCurrentTotalStake`] function. + pub fn getCurrentTotalStake( + &self, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getCurrentTotalStakeCall { quorumNumber }) + } + ///Creates a new call builder for the [`getLatestStakeUpdate`] function. + pub fn getLatestStakeUpdate( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getLatestStakeUpdateCall { + operatorId, + quorumNumber, + }) + } + ///Creates a new call builder for the [`getStakeAtBlockNumber`] function. + pub fn getStakeAtBlockNumber( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumber: u8, + blockNumber: u32, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getStakeAtBlockNumberCall { + operatorId, + quorumNumber, + blockNumber, + }) + } + ///Creates a new call builder for the [`getStakeAtBlockNumberAndIndex`] function. + pub fn getStakeAtBlockNumberAndIndex( + &self, + quorumNumber: u8, + blockNumber: u32, + operatorId: alloy::sol_types::private::FixedBytes<32>, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getStakeAtBlockNumberAndIndexCall { + quorumNumber, + blockNumber, + operatorId, + index, + }) + } + ///Creates a new call builder for the [`getStakeHistory`] function. + pub fn getStakeHistory( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getStakeHistoryCall { + operatorId, + quorumNumber, + }) + } + ///Creates a new call builder for the [`getStakeUpdateAtIndex`] function. + pub fn getStakeUpdateAtIndex( + &self, + quorumNumber: u8, + operatorId: alloy::sol_types::private::FixedBytes<32>, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getStakeUpdateAtIndexCall { + quorumNumber, + operatorId, + index, + }) + } + ///Creates a new call builder for the [`getStakeUpdateIndexAtBlockNumber`] function. + pub fn getStakeUpdateIndexAtBlockNumber( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumber: u8, + blockNumber: u32, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&getStakeUpdateIndexAtBlockNumberCall { + operatorId, + quorumNumber, + blockNumber, + }) + } + ///Creates a new call builder for the [`getTotalStakeAtBlockNumberFromIndex`] function. + pub fn getTotalStakeAtBlockNumberFromIndex( + &self, + quorumNumber: u8, + blockNumber: u32, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&getTotalStakeAtBlockNumberFromIndexCall { + quorumNumber, + blockNumber, + index, + }) + } + ///Creates a new call builder for the [`getTotalStakeHistoryLength`] function. + pub fn getTotalStakeHistoryLength( + &self, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getTotalStakeHistoryLengthCall { quorumNumber }) + } + ///Creates a new call builder for the [`getTotalStakeIndicesAtBlockNumber`] function. + pub fn getTotalStakeIndicesAtBlockNumber( + &self, + blockNumber: u32, + quorumNumbers: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&getTotalStakeIndicesAtBlockNumberCall { + blockNumber, + quorumNumbers, + }) + } + ///Creates a new call builder for the [`getTotalStakeUpdateAtIndex`] function. + pub fn getTotalStakeUpdateAtIndex( + &self, + quorumNumber: u8, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getTotalStakeUpdateAtIndexCall { + quorumNumber, + index, + }) + } + ///Creates a new call builder for the [`initializeQuorum`] function. + pub fn initializeQuorum( + &self, + quorumNumber: u8, + minimumStake: alloy::sol_types::private::primitives::aliases::U96, + strategyParams: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initializeQuorumCall { + quorumNumber, + minimumStake, + strategyParams, + }) + } + ///Creates a new call builder for the [`minimumStakeForQuorum`] function. + pub fn minimumStakeForQuorum( + &self, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&minimumStakeForQuorumCall { quorumNumber }) + } + ///Creates a new call builder for the [`modifyStrategyParams`] function. + pub fn modifyStrategyParams( + &self, + quorumNumber: u8, + strategyIndices: alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + newMultipliers: alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U96, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&modifyStrategyParamsCall { + quorumNumber, + strategyIndices, + newMultipliers, + }) + } + ///Creates a new call builder for the [`registerOperator`] function. + pub fn registerOperator( + &self, + operator: alloy::sol_types::private::Address, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumbers: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterOperatorCall { + operator, + operatorId, + quorumNumbers, + }) + } + ///Creates a new call builder for the [`registryCoordinator`] function. + pub fn registryCoordinator( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®istryCoordinatorCall {}) + } + ///Creates a new call builder for the [`removeStrategies`] function. + pub fn removeStrategies( + &self, + quorumNumber: u8, + indicesToRemove: alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&removeStrategiesCall { + quorumNumber, + indicesToRemove, + }) + } + ///Creates a new call builder for the [`strategyParamsByIndex`] function. + pub fn strategyParamsByIndex( + &self, + quorumNumber: u8, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&strategyParamsByIndexCall { + quorumNumber, + index, + }) + } + ///Creates a new call builder for the [`strategyParamsLength`] function. + pub fn strategyParamsLength( + &self, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&strategyParamsLengthCall { quorumNumber }) + } + ///Creates a new call builder for the [`updateOperatorStake`] function. + pub fn updateOperatorStake( + &self, + operator: alloy::sol_types::private::Address, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumbers: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateOperatorStakeCall { + operator, + operatorId, + quorumNumbers, + }) + } + ///Creates a new call builder for the [`weightOfOperatorForQuorum`] function. + pub fn weightOfOperatorForQuorum( + &self, + quorumNumber: u8, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&weightOfOperatorForQuorumCall { + quorumNumber, + operator, + }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IStakeRegistryInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`MinimumStakeForQuorumUpdated`] event. + pub fn MinimumStakeForQuorumUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorStakeUpdate`] event. + pub fn OperatorStakeUpdate_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`QuorumCreated`] event. + pub fn QuorumCreated_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`StrategyAddedToQuorum`] event. + pub fn StrategyAddedToQuorum_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`StrategyMultiplierUpdated`] event. + pub fn StrategyMultiplierUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`StrategyRemovedFromQuorum`] event. + pub fn StrategyRemovedFromQuorum_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/istrategy.rs b/crates/utils/src/istrategy.rs new file mode 100644 index 00000000..9e7d2201 --- /dev/null +++ b/crates/utils/src/istrategy.rs @@ -0,0 +1,2224 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IStrategy { + function deposit(address token, uint256 amount) external returns (uint256); + function explanation() external view returns (string memory); + function shares(address user) external view returns (uint256); + function sharesToUnderlying(uint256 amountShares) external returns (uint256); + function sharesToUnderlyingView(uint256 amountShares) external view returns (uint256); + function totalShares() external view returns (uint256); + function underlyingToShares(uint256 amountUnderlying) external returns (uint256); + function underlyingToSharesView(uint256 amountUnderlying) external view returns (uint256); + function underlyingToken() external view returns (address); + function userUnderlying(address user) external returns (uint256); + function userUnderlyingView(address user) external view returns (uint256); + function withdraw(address recipient, address token, uint256 amountShares) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "deposit", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "explanation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "shares", + "inputs": [ + { + "name": "user", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "sharesToUnderlying", + "inputs": [ + { + "name": "amountShares", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "sharesToUnderlyingView", + "inputs": [ + { + "name": "amountShares", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "totalShares", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "underlyingToShares", + "inputs": [ + { + "name": "amountUnderlying", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "underlyingToSharesView", + "inputs": [ + { + "name": "amountUnderlying", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "underlyingToken", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IERC20" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "userUnderlying", + "inputs": [ + { + "name": "user", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "userUnderlyingView", + "inputs": [ + { + "name": "user", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "withdraw", + "inputs": [ + { + "name": "recipient", + "type": "address", + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "amountShares", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IStrategy { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Function with signature `deposit(address,uint256)` and selector `0x47e7ef24`. + ```solidity + function deposit(address token, uint256 amount) external returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct depositCall { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`deposit(address,uint256)`](depositCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct depositReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: depositCall) -> Self { + (value.token, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for depositCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: depositReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for depositReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for depositCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = depositReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "deposit(address,uint256)"; + const SELECTOR: [u8; 4] = [71u8, 231u8, 239u8, 36u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize( + &self.amount, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `explanation()` and selector `0xab5921e1`. + ```solidity + function explanation() external view returns (string memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct explanationCall {} + ///Container type for the return parameters of the [`explanation()`](explanationCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct explanationReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: explanationCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for explanationCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: explanationReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for explanationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for explanationCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = explanationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "explanation()"; + const SELECTOR: [u8; 4] = [171u8, 89u8, 33u8, 225u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `shares(address)` and selector `0xce7c2ac2`. + ```solidity + function shares(address user) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct sharesCall { + pub user: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`shares(address)`](sharesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct sharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: sharesCall) -> Self { + (value.user,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for sharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { user: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: sharesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for sharesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for sharesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = sharesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "shares(address)"; + const SELECTOR: [u8; 4] = [206u8, 124u8, 42u8, 194u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.user, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `sharesToUnderlying(uint256)` and selector `0xf3e73875`. + ```solidity + function sharesToUnderlying(uint256 amountShares) external returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct sharesToUnderlyingCall { + pub amountShares: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`sharesToUnderlying(uint256)`](sharesToUnderlyingCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct sharesToUnderlyingReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: sharesToUnderlyingCall) -> Self { + (value.amountShares,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for sharesToUnderlyingCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + amountShares: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: sharesToUnderlyingReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for sharesToUnderlyingReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for sharesToUnderlyingCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = sharesToUnderlyingReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "sharesToUnderlying(uint256)"; + const SELECTOR: [u8; 4] = [243u8, 231u8, 56u8, 117u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.amountShares, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `sharesToUnderlyingView(uint256)` and selector `0x7a8b2637`. + ```solidity + function sharesToUnderlyingView(uint256 amountShares) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct sharesToUnderlyingViewCall { + pub amountShares: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`sharesToUnderlyingView(uint256)`](sharesToUnderlyingViewCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct sharesToUnderlyingViewReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: sharesToUnderlyingViewCall) -> Self { + (value.amountShares,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for sharesToUnderlyingViewCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + amountShares: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: sharesToUnderlyingViewReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for sharesToUnderlyingViewReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for sharesToUnderlyingViewCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = sharesToUnderlyingViewReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "sharesToUnderlyingView(uint256)"; + const SELECTOR: [u8; 4] = [122u8, 139u8, 38u8, 55u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.amountShares, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `totalShares()` and selector `0x3a98ef39`. + ```solidity + function totalShares() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalSharesCall {} + ///Container type for the return parameters of the [`totalShares()`](totalSharesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalSharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalSharesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalSharesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalSharesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for totalSharesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = totalSharesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "totalShares()"; + const SELECTOR: [u8; 4] = [58u8, 152u8, 239u8, 57u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `underlyingToShares(uint256)` and selector `0x8c871019`. + ```solidity + function underlyingToShares(uint256 amountUnderlying) external returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct underlyingToSharesCall { + pub amountUnderlying: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`underlyingToShares(uint256)`](underlyingToSharesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct underlyingToSharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: underlyingToSharesCall) -> Self { + (value.amountUnderlying,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for underlyingToSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + amountUnderlying: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: underlyingToSharesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for underlyingToSharesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for underlyingToSharesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = underlyingToSharesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "underlyingToShares(uint256)"; + const SELECTOR: [u8; 4] = [140u8, 135u8, 16u8, 25u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.amountUnderlying, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `underlyingToSharesView(uint256)` and selector `0xe3dae51c`. + ```solidity + function underlyingToSharesView(uint256 amountUnderlying) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct underlyingToSharesViewCall { + pub amountUnderlying: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`underlyingToSharesView(uint256)`](underlyingToSharesViewCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct underlyingToSharesViewReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: underlyingToSharesViewCall) -> Self { + (value.amountUnderlying,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for underlyingToSharesViewCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + amountUnderlying: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: underlyingToSharesViewReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for underlyingToSharesViewReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for underlyingToSharesViewCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = underlyingToSharesViewReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "underlyingToSharesView(uint256)"; + const SELECTOR: [u8; 4] = [227u8, 218u8, 229u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.amountUnderlying, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `underlyingToken()` and selector `0x2495a599`. + ```solidity + function underlyingToken() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct underlyingTokenCall {} + ///Container type for the return parameters of the [`underlyingToken()`](underlyingTokenCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct underlyingTokenReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: underlyingTokenCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for underlyingTokenCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: underlyingTokenReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for underlyingTokenReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for underlyingTokenCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = underlyingTokenReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "underlyingToken()"; + const SELECTOR: [u8; 4] = [36u8, 149u8, 165u8, 153u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `userUnderlying(address)` and selector `0x8f6a6240`. + ```solidity + function userUnderlying(address user) external returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct userUnderlyingCall { + pub user: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`userUnderlying(address)`](userUnderlyingCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct userUnderlyingReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: userUnderlyingCall) -> Self { + (value.user,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for userUnderlyingCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { user: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: userUnderlyingReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for userUnderlyingReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for userUnderlyingCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = userUnderlyingReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "userUnderlying(address)"; + const SELECTOR: [u8; 4] = [143u8, 106u8, 98u8, 64u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.user, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `userUnderlyingView(address)` and selector `0x553ca5f8`. + ```solidity + function userUnderlyingView(address user) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct userUnderlyingViewCall { + pub user: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`userUnderlyingView(address)`](userUnderlyingViewCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct userUnderlyingViewReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: userUnderlyingViewCall) -> Self { + (value.user,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for userUnderlyingViewCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { user: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: userUnderlyingViewReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for userUnderlyingViewReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for userUnderlyingViewCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = userUnderlyingViewReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "userUnderlyingView(address)"; + const SELECTOR: [u8; 4] = [85u8, 60u8, 165u8, 248u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.user, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `withdraw(address,address,uint256)` and selector `0xd9caed12`. + ```solidity + function withdraw(address recipient, address token, uint256 amountShares) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct withdrawCall { + pub recipient: alloy::sol_types::private::Address, + pub token: alloy::sol_types::private::Address, + pub amountShares: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`withdraw(address,address,uint256)`](withdrawCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct withdrawReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: withdrawCall) -> Self { + (value.recipient, value.token, value.amountShares) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + recipient: tuple.0, + token: tuple.1, + amountShares: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: withdrawReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for withdrawCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = withdrawReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "withdraw(address,address,uint256)"; + const SELECTOR: [u8; 4] = [217u8, 202u8, 237u8, 18u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.recipient, + ), + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize( + &self.amountShares, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IStrategy`](self) function calls. + pub enum IStrategyCalls { + deposit(depositCall), + explanation(explanationCall), + shares(sharesCall), + sharesToUnderlying(sharesToUnderlyingCall), + sharesToUnderlyingView(sharesToUnderlyingViewCall), + totalShares(totalSharesCall), + underlyingToShares(underlyingToSharesCall), + underlyingToSharesView(underlyingToSharesViewCall), + underlyingToken(underlyingTokenCall), + userUnderlying(userUnderlyingCall), + userUnderlyingView(userUnderlyingViewCall), + withdraw(withdrawCall), + } + #[automatically_derived] + impl IStrategyCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [36u8, 149u8, 165u8, 153u8], + [58u8, 152u8, 239u8, 57u8], + [71u8, 231u8, 239u8, 36u8], + [85u8, 60u8, 165u8, 248u8], + [122u8, 139u8, 38u8, 55u8], + [140u8, 135u8, 16u8, 25u8], + [143u8, 106u8, 98u8, 64u8], + [171u8, 89u8, 33u8, 225u8], + [206u8, 124u8, 42u8, 194u8], + [217u8, 202u8, 237u8, 18u8], + [227u8, 218u8, 229u8, 28u8], + [243u8, 231u8, 56u8, 117u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IStrategyCalls { + const NAME: &'static str = "IStrategyCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 12usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::deposit(_) => ::SELECTOR, + Self::explanation(_) => ::SELECTOR, + Self::shares(_) => ::SELECTOR, + Self::sharesToUnderlying(_) => { + ::SELECTOR + } + Self::sharesToUnderlyingView(_) => { + ::SELECTOR + } + Self::totalShares(_) => ::SELECTOR, + Self::underlyingToShares(_) => { + ::SELECTOR + } + Self::underlyingToSharesView(_) => { + ::SELECTOR + } + Self::underlyingToken(_) => { + ::SELECTOR + } + Self::userUnderlying(_) => { + ::SELECTOR + } + Self::userUnderlyingView(_) => { + ::SELECTOR + } + Self::withdraw(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn(&[u8], bool) -> alloy_sol_types::Result] = &[ + { + fn underlyingToken( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStrategyCalls::underlyingToken) + } + underlyingToken + }, + { + fn totalShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStrategyCalls::totalShares) + } + totalShares + }, + { + fn deposit( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IStrategyCalls::deposit) + } + deposit + }, + { + fn userUnderlyingView( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStrategyCalls::userUnderlyingView) + } + userUnderlyingView + }, + { + fn sharesToUnderlyingView( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStrategyCalls::sharesToUnderlyingView) + } + sharesToUnderlyingView + }, + { + fn underlyingToShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStrategyCalls::underlyingToShares) + } + underlyingToShares + }, + { + fn userUnderlying( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStrategyCalls::userUnderlying) + } + userUnderlying + }, + { + fn explanation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStrategyCalls::explanation) + } + explanation + }, + { + fn shares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IStrategyCalls::shares) + } + shares + }, + { + fn withdraw( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IStrategyCalls::withdraw) + } + withdraw + }, + { + fn underlyingToSharesView( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStrategyCalls::underlyingToSharesView) + } + underlyingToSharesView + }, + { + fn sharesToUnderlying( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStrategyCalls::sharesToUnderlying) + } + sharesToUnderlying + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::deposit(inner) => { + ::abi_encoded_size(inner) + } + Self::explanation(inner) => { + ::abi_encoded_size(inner) + } + Self::shares(inner) => { + ::abi_encoded_size(inner) + } + Self::sharesToUnderlying(inner) => { + ::abi_encoded_size(inner) + } + Self::sharesToUnderlyingView(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::totalShares(inner) => { + ::abi_encoded_size(inner) + } + Self::underlyingToShares(inner) => { + ::abi_encoded_size(inner) + } + Self::underlyingToSharesView(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::underlyingToken(inner) => { + ::abi_encoded_size(inner) + } + Self::userUnderlying(inner) => { + ::abi_encoded_size(inner) + } + Self::userUnderlyingView(inner) => { + ::abi_encoded_size(inner) + } + Self::withdraw(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::deposit(inner) => { + ::abi_encode_raw(inner, out) + } + Self::explanation(inner) => { + ::abi_encode_raw(inner, out) + } + Self::shares(inner) => { + ::abi_encode_raw(inner, out) + } + Self::sharesToUnderlying(inner) => { + ::abi_encode_raw(inner, out) + } + Self::sharesToUnderlyingView(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::totalShares(inner) => { + ::abi_encode_raw(inner, out) + } + Self::underlyingToShares(inner) => { + ::abi_encode_raw(inner, out) + } + Self::underlyingToSharesView(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::underlyingToken(inner) => { + ::abi_encode_raw(inner, out) + } + Self::userUnderlying(inner) => { + ::abi_encode_raw(inner, out) + } + Self::userUnderlyingView(inner) => { + ::abi_encode_raw(inner, out) + } + Self::withdraw(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IStrategy`](self) contract instance. + + See the [wrapper's documentation](`IStrategyInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IStrategyInstance { + IStrategyInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + IStrategyInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IStrategyInstance::::deploy_builder(provider) + } + /**A [`IStrategy`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IStrategy`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IStrategyInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IStrategyInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IStrategyInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IStrategyInstance + { + /**Creates a new wrapper around an on-chain [`IStrategy`](self) contract instance. + + See the [wrapper's documentation](`IStrategyInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IStrategyInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IStrategyInstance { + IStrategyInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IStrategyInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`deposit`] function. + pub fn deposit( + &self, + token: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&depositCall { token, amount }) + } + ///Creates a new call builder for the [`explanation`] function. + pub fn explanation(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&explanationCall {}) + } + ///Creates a new call builder for the [`shares`] function. + pub fn shares( + &self, + user: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&sharesCall { user }) + } + ///Creates a new call builder for the [`sharesToUnderlying`] function. + pub fn sharesToUnderlying( + &self, + amountShares: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&sharesToUnderlyingCall { amountShares }) + } + ///Creates a new call builder for the [`sharesToUnderlyingView`] function. + pub fn sharesToUnderlyingView( + &self, + amountShares: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&sharesToUnderlyingViewCall { amountShares }) + } + ///Creates a new call builder for the [`totalShares`] function. + pub fn totalShares(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&totalSharesCall {}) + } + ///Creates a new call builder for the [`underlyingToShares`] function. + pub fn underlyingToShares( + &self, + amountUnderlying: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&underlyingToSharesCall { amountUnderlying }) + } + ///Creates a new call builder for the [`underlyingToSharesView`] function. + pub fn underlyingToSharesView( + &self, + amountUnderlying: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&underlyingToSharesViewCall { amountUnderlying }) + } + ///Creates a new call builder for the [`underlyingToken`] function. + pub fn underlyingToken( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&underlyingTokenCall {}) + } + ///Creates a new call builder for the [`userUnderlying`] function. + pub fn userUnderlying( + &self, + user: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&userUnderlyingCall { user }) + } + ///Creates a new call builder for the [`userUnderlyingView`] function. + pub fn userUnderlyingView( + &self, + user: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&userUnderlyingViewCall { user }) + } + ///Creates a new call builder for the [`withdraw`] function. + pub fn withdraw( + &self, + recipient: alloy::sol_types::private::Address, + token: alloy::sol_types::private::Address, + amountShares: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&withdrawCall { + recipient, + token, + amountShares, + }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IStrategyInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/istrategymanager.rs b/crates/utils/src/istrategymanager.rs new file mode 100644 index 00000000..693df865 --- /dev/null +++ b/crates/utils/src/istrategymanager.rs @@ -0,0 +1,3976 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IStrategyManager { + event Deposit(address staker, address token, address strategy, uint256 shares); + event StrategyAddedToDepositWhitelist(address strategy); + event StrategyRemovedFromDepositWhitelist(address strategy); + event StrategyWhitelisterChanged(address previousAddress, address newAddress); + event UpdatedThirdPartyTransfersForbidden(address strategy, bool value); + + function addShares(address staker, address token, address strategy, uint256 shares) external; + function addStrategiesToDepositWhitelist(address[] memory strategiesToWhitelist, bool[] memory thirdPartyTransfersForbiddenValues) external; + function delegation() external view returns (address); + function depositIntoStrategy(address strategy, address token, uint256 amount) external returns (uint256 shares); + function depositIntoStrategyWithSignature(address strategy, address token, uint256 amount, address staker, uint256 expiry, bytes memory signature) external returns (uint256 shares); + function eigenPodManager() external view returns (address); + function getDeposits(address staker) external view returns (address[] memory, uint256[] memory); + function removeShares(address staker, address strategy, uint256 shares) external; + function removeStrategiesFromDepositWhitelist(address[] memory strategiesToRemoveFromWhitelist) external; + function slasher() external view returns (address); + function stakerStrategyListLength(address staker) external view returns (uint256); + function stakerStrategyShares(address user, address strategy) external view returns (uint256 shares); + function strategyIsWhitelistedForDeposit(address strategy) external view returns (bool); + function strategyWhitelister() external view returns (address); + function thirdPartyTransfersForbidden(address strategy) external view returns (bool); + function withdrawSharesAsTokens(address recipient, address strategy, uint256 shares, address token) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "addShares", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "addStrategiesToDepositWhitelist", + "inputs": [ + { + "name": "strategiesToWhitelist", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "thirdPartyTransfersForbiddenValues", + "type": "bool[]", + "internalType": "bool[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "delegation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IDelegationManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "depositIntoStrategy", + "inputs": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "depositIntoStrategyWithSignature", + "inputs": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "eigenPodManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IEigenPodManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getDeposits", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "removeShares", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "removeStrategiesFromDepositWhitelist", + "inputs": [ + { + "name": "strategiesToRemoveFromWhitelist", + "type": "address[]", + "internalType": "contract IStrategy[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "slasher", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ISlasher" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "stakerStrategyListLength", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "stakerStrategyShares", + "inputs": [ + { + "name": "user", + "type": "address", + "internalType": "address" + }, + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + } + ], + "outputs": [ + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "strategyIsWhitelistedForDeposit", + "inputs": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "strategyWhitelister", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "thirdPartyTransfersForbidden", + "inputs": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "withdrawSharesAsTokens", + "inputs": [ + { + "name": "recipient", + "type": "address", + "internalType": "address" + }, + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Deposit", + "inputs": [ + { + "name": "staker", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": false, + "internalType": "contract IERC20" + }, + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + }, + { + "name": "shares", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StrategyAddedToDepositWhitelist", + "inputs": [ + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StrategyRemovedFromDepositWhitelist", + "inputs": [ + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StrategyWhitelisterChanged", + "inputs": [ + { + "name": "previousAddress", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newAddress", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "UpdatedThirdPartyTransfersForbidden", + "inputs": [ + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + }, + { + "name": "value", + "type": "bool", + "indexed": false, + "internalType": "bool" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IStrategyManager { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Event with signature `Deposit(address,address,address,uint256)` and selector `0x7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a96`. + ```solidity + event Deposit(address staker, address token, address strategy, uint256 shares); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Deposit { + #[allow(missing_docs)] + pub staker: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub token: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub strategy: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub shares: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Deposit { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "Deposit(address,address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 124u8, 255u8, 249u8, 8u8, 164u8, 181u8, 131u8, 243u8, 100u8, 48u8, 178u8, 93u8, + 117u8, 150u8, 76u8, 69u8, 141u8, 142u8, 222u8, 138u8, 153u8, 189u8, 97u8, + 190u8, 117u8, 14u8, 151u8, 238u8, 27u8, 47u8, 58u8, 150u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + staker: data.0, + token: data.1, + strategy: data.2, + shares: data.3, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.staker, + ), + ::tokenize( + &self.token, + ), + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.shares, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Deposit { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Deposit> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Deposit) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `StrategyAddedToDepositWhitelist(address)` and selector `0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe`. + ```solidity + event StrategyAddedToDepositWhitelist(address strategy); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct StrategyAddedToDepositWhitelist { + #[allow(missing_docs)] + pub strategy: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for StrategyAddedToDepositWhitelist { + type DataTuple<'a> = (alloy::sol_types::sol_data::Address,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "StrategyAddedToDepositWhitelist(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 12u8, 53u8, 177u8, 125u8, 145u8, 201u8, 110u8, 178u8, 117u8, 28u8, 212u8, 86u8, + 225u8, 37u8, 47u8, 66u8, 163u8, 134u8, 229u8, 36u8, 239u8, 159u8, 242u8, 110u8, + 204u8, 153u8, 80u8, 133u8, 159u8, 220u8, 4u8, 254u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { strategy: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.strategy, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for StrategyAddedToDepositWhitelist { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&StrategyAddedToDepositWhitelist> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &StrategyAddedToDepositWhitelist) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `StrategyRemovedFromDepositWhitelist(address)` and selector `0x4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030`. + ```solidity + event StrategyRemovedFromDepositWhitelist(address strategy); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct StrategyRemovedFromDepositWhitelist { + #[allow(missing_docs)] + pub strategy: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for StrategyRemovedFromDepositWhitelist { + type DataTuple<'a> = (alloy::sol_types::sol_data::Address,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "StrategyRemovedFromDepositWhitelist(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 64u8, 116u8, 65u8, 59u8, 75u8, 68u8, 62u8, 78u8, 88u8, 1u8, 159u8, 40u8, 85u8, + 168u8, 118u8, 81u8, 19u8, 53u8, 140u8, 124u8, 114u8, 227u8, 149u8, 9u8, 198u8, + 175u8, 69u8, 252u8, 15u8, 91u8, 160u8, 48u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { strategy: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.strategy, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for StrategyRemovedFromDepositWhitelist { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&StrategyRemovedFromDepositWhitelist> for alloy_sol_types::private::LogData { + #[inline] + fn from( + this: &StrategyRemovedFromDepositWhitelist, + ) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `StrategyWhitelisterChanged(address,address)` and selector `0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29`. + ```solidity + event StrategyWhitelisterChanged(address previousAddress, address newAddress); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct StrategyWhitelisterChanged { + #[allow(missing_docs)] + pub previousAddress: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newAddress: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for StrategyWhitelisterChanged { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "StrategyWhitelisterChanged(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 66u8, 100u8, 39u8, 94u8, 89u8, 57u8, 85u8, 255u8, 157u8, 97u8, 70u8, 165u8, + 26u8, 69u8, 37u8, 246u8, 221u8, 172u8, 226u8, 232u8, 29u8, 185u8, 57u8, 26u8, + 188u8, 201u8, 209u8, 202u8, 72u8, 4u8, 125u8, 41u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + previousAddress: data.0, + newAddress: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.previousAddress, + ), + ::tokenize( + &self.newAddress, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for StrategyWhitelisterChanged { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&StrategyWhitelisterChanged> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &StrategyWhitelisterChanged) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `UpdatedThirdPartyTransfersForbidden(address,bool)` and selector `0x77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786`. + ```solidity + event UpdatedThirdPartyTransfersForbidden(address strategy, bool value); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct UpdatedThirdPartyTransfersForbidden { + #[allow(missing_docs)] + pub strategy: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub value: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for UpdatedThirdPartyTransfersForbidden { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "UpdatedThirdPartyTransfersForbidden(address,bool)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 119u8, 217u8, 48u8, 223u8, 73u8, 55u8, 121u8, 52u8, 115u8, 169u8, 80u8, 36u8, + 216u8, 122u8, 152u8, 253u8, 44u8, 203u8, 158u8, 146u8, 211u8, 194u8, 70u8, + 59u8, 61u8, 172u8, 214u8, 93u8, 62u8, 106u8, 87u8, 134u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + strategy: data.0, + value: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.strategy, + ), + ::tokenize( + &self.value, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for UpdatedThirdPartyTransfersForbidden { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&UpdatedThirdPartyTransfersForbidden> for alloy_sol_types::private::LogData { + #[inline] + fn from( + this: &UpdatedThirdPartyTransfersForbidden, + ) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `addShares(address,address,address,uint256)` and selector `0xc4623ea1`. + ```solidity + function addShares(address staker, address token, address strategy, uint256 shares) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct addSharesCall { + pub staker: alloy::sol_types::private::Address, + pub token: alloy::sol_types::private::Address, + pub strategy: alloy::sol_types::private::Address, + pub shares: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`addShares(address,address,address,uint256)`](addSharesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct addSharesReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: addSharesCall) -> Self { + (value.staker, value.token, value.strategy, value.shares) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for addSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + staker: tuple.0, + token: tuple.1, + strategy: tuple.2, + shares: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: addSharesReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for addSharesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for addSharesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = addSharesReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "addShares(address,address,address,uint256)"; + const SELECTOR: [u8; 4] = [196u8, 98u8, 62u8, 161u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.staker, + ), + ::tokenize( + &self.token, + ), + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.shares, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `addStrategiesToDepositWhitelist(address[],bool[])` and selector `0xdf5b3547`. + ```solidity + function addStrategiesToDepositWhitelist(address[] memory strategiesToWhitelist, bool[] memory thirdPartyTransfersForbiddenValues) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct addStrategiesToDepositWhitelistCall { + pub strategiesToWhitelist: + alloy::sol_types::private::Vec, + pub thirdPartyTransfersForbiddenValues: alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`addStrategiesToDepositWhitelist(address[],bool[])`](addStrategiesToDepositWhitelistCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct addStrategiesToDepositWhitelistReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: addStrategiesToDepositWhitelistCall) -> Self { + ( + value.strategiesToWhitelist, + value.thirdPartyTransfersForbiddenValues, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for addStrategiesToDepositWhitelistCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategiesToWhitelist: tuple.0, + thirdPartyTransfersForbiddenValues: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: addStrategiesToDepositWhitelistReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for addStrategiesToDepositWhitelistReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for addStrategiesToDepositWhitelistCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = addStrategiesToDepositWhitelistReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "addStrategiesToDepositWhitelist(address[],bool[])"; + const SELECTOR: [u8; 4] = [223u8, 91u8, 53u8, 71u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.strategiesToWhitelist, + ), + as alloy_sol_types::SolType>::tokenize( + &self.thirdPartyTransfersForbiddenValues, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `delegation()` and selector `0xdf5cf723`. + ```solidity + function delegation() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegationCall {} + ///Container type for the return parameters of the [`delegation()`](delegationCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for delegationCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = delegationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "delegation()"; + const SELECTOR: [u8; 4] = [223u8, 92u8, 247u8, 35u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `depositIntoStrategy(address,address,uint256)` and selector `0xe7a050aa`. + ```solidity + function depositIntoStrategy(address strategy, address token, uint256 amount) external returns (uint256 shares); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct depositIntoStrategyCall { + pub strategy: alloy::sol_types::private::Address, + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`depositIntoStrategy(address,address,uint256)`](depositIntoStrategyCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct depositIntoStrategyReturn { + pub shares: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: depositIntoStrategyCall) -> Self { + (value.strategy, value.token, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for depositIntoStrategyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategy: tuple.0, + token: tuple.1, + amount: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: depositIntoStrategyReturn) -> Self { + (value.shares,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for depositIntoStrategyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { shares: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for depositIntoStrategyCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = depositIntoStrategyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "depositIntoStrategy(address,address,uint256)"; + const SELECTOR: [u8; 4] = [231u8, 160u8, 80u8, 170u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.strategy, + ), + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize( + &self.amount, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `depositIntoStrategyWithSignature(address,address,uint256,address,uint256,bytes)` and selector `0x32e89ace`. + ```solidity + function depositIntoStrategyWithSignature(address strategy, address token, uint256 amount, address staker, uint256 expiry, bytes memory signature) external returns (uint256 shares); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct depositIntoStrategyWithSignatureCall { + pub strategy: alloy::sol_types::private::Address, + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::primitives::aliases::U256, + pub staker: alloy::sol_types::private::Address, + pub expiry: alloy::sol_types::private::primitives::aliases::U256, + pub signature: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`depositIntoStrategyWithSignature(address,address,uint256,address,uint256,bytes)`](depositIntoStrategyWithSignatureCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct depositIntoStrategyWithSignatureReturn { + pub shares: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: depositIntoStrategyWithSignatureCall) -> Self { + ( + value.strategy, + value.token, + value.amount, + value.staker, + value.expiry, + value.signature, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for depositIntoStrategyWithSignatureCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategy: tuple.0, + token: tuple.1, + amount: tuple.2, + staker: tuple.3, + expiry: tuple.4, + signature: tuple.5, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: depositIntoStrategyWithSignatureReturn) -> Self { + (value.shares,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for depositIntoStrategyWithSignatureReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { shares: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for depositIntoStrategyWithSignatureCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = depositIntoStrategyWithSignatureReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "depositIntoStrategyWithSignature(address,address,uint256,address,uint256,bytes)"; + const SELECTOR: [u8; 4] = [50u8, 232u8, 154u8, 206u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.strategy, + ), + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize( + &self.amount, + ), + ::tokenize( + &self.staker, + ), + as alloy_sol_types::SolType>::tokenize( + &self.expiry, + ), + ::tokenize( + &self.signature, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `eigenPodManager()` and selector `0x4665bcda`. + ```solidity + function eigenPodManager() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct eigenPodManagerCall {} + ///Container type for the return parameters of the [`eigenPodManager()`](eigenPodManagerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct eigenPodManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: eigenPodManagerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for eigenPodManagerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: eigenPodManagerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for eigenPodManagerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for eigenPodManagerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = eigenPodManagerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "eigenPodManager()"; + const SELECTOR: [u8; 4] = [70u8, 101u8, 188u8, 218u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getDeposits(address)` and selector `0x94f649dd`. + ```solidity + function getDeposits(address staker) external view returns (address[] memory, uint256[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getDepositsCall { + pub staker: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getDeposits(address)`](getDepositsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getDepositsReturn { + pub _0: alloy::sol_types::private::Vec, + pub _1: + alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getDepositsCall) -> Self { + (value.staker,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getDepositsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { staker: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getDepositsReturn) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getDepositsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getDepositsCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getDepositsReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getDeposits(address)"; + const SELECTOR: [u8; 4] = [148u8, 246u8, 73u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.staker, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `removeShares(address,address,uint256)` and selector `0x8c80d4e5`. + ```solidity + function removeShares(address staker, address strategy, uint256 shares) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct removeSharesCall { + pub staker: alloy::sol_types::private::Address, + pub strategy: alloy::sol_types::private::Address, + pub shares: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`removeShares(address,address,uint256)`](removeSharesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct removeSharesReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: removeSharesCall) -> Self { + (value.staker, value.strategy, value.shares) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for removeSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + staker: tuple.0, + strategy: tuple.1, + shares: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: removeSharesReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for removeSharesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for removeSharesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = removeSharesReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "removeShares(address,address,uint256)"; + const SELECTOR: [u8; 4] = [140u8, 128u8, 212u8, 229u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.staker, + ), + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.shares, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `removeStrategiesFromDepositWhitelist(address[])` and selector `0xb5d8b5b8`. + ```solidity + function removeStrategiesFromDepositWhitelist(address[] memory strategiesToRemoveFromWhitelist) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct removeStrategiesFromDepositWhitelistCall { + pub strategiesToRemoveFromWhitelist: + alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`removeStrategiesFromDepositWhitelist(address[])`](removeStrategiesFromDepositWhitelistCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct removeStrategiesFromDepositWhitelistReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: removeStrategiesFromDepositWhitelistCall) -> Self { + (value.strategiesToRemoveFromWhitelist,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for removeStrategiesFromDepositWhitelistCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategiesToRemoveFromWhitelist: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: removeStrategiesFromDepositWhitelistReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for removeStrategiesFromDepositWhitelistReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for removeStrategiesFromDepositWhitelistCall { + type Parameters<'a> = + (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = removeStrategiesFromDepositWhitelistReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "removeStrategiesFromDepositWhitelist(address[])"; + const SELECTOR: [u8; 4] = [181u8, 216u8, 181u8, 184u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( as alloy_sol_types::SolType>::tokenize( + &self.strategiesToRemoveFromWhitelist, + ),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `slasher()` and selector `0xb1344271`. + ```solidity + function slasher() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct slasherCall {} + ///Container type for the return parameters of the [`slasher()`](slasherCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct slasherReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: slasherCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for slasherCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: slasherReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for slasherReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for slasherCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = slasherReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "slasher()"; + const SELECTOR: [u8; 4] = [177u8, 52u8, 66u8, 113u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `stakerStrategyListLength(address)` and selector `0x8b8aac3c`. + ```solidity + function stakerStrategyListLength(address staker) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakerStrategyListLengthCall { + pub staker: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`stakerStrategyListLength(address)`](stakerStrategyListLengthCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakerStrategyListLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakerStrategyListLengthCall) -> Self { + (value.staker,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakerStrategyListLengthCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { staker: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakerStrategyListLengthReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakerStrategyListLengthReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for stakerStrategyListLengthCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = stakerStrategyListLengthReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "stakerStrategyListLength(address)"; + const SELECTOR: [u8; 4] = [139u8, 138u8, 172u8, 60u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.staker, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `stakerStrategyShares(address,address)` and selector `0x7a7e0d92`. + ```solidity + function stakerStrategyShares(address user, address strategy) external view returns (uint256 shares); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakerStrategySharesCall { + pub user: alloy::sol_types::private::Address, + pub strategy: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`stakerStrategyShares(address,address)`](stakerStrategySharesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakerStrategySharesReturn { + pub shares: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakerStrategySharesCall) -> Self { + (value.user, value.strategy) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakerStrategySharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + user: tuple.0, + strategy: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakerStrategySharesReturn) -> Self { + (value.shares,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakerStrategySharesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { shares: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for stakerStrategySharesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = stakerStrategySharesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "stakerStrategyShares(address,address)"; + const SELECTOR: [u8; 4] = [122u8, 126u8, 13u8, 146u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.user, + ), + ::tokenize( + &self.strategy, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `strategyIsWhitelistedForDeposit(address)` and selector `0x663c1de4`. + ```solidity + function strategyIsWhitelistedForDeposit(address strategy) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyIsWhitelistedForDepositCall { + pub strategy: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`strategyIsWhitelistedForDeposit(address)`](strategyIsWhitelistedForDepositCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyIsWhitelistedForDepositReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyIsWhitelistedForDepositCall) -> Self { + (value.strategy,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyIsWhitelistedForDepositCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { strategy: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyIsWhitelistedForDepositReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyIsWhitelistedForDepositReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for strategyIsWhitelistedForDepositCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = strategyIsWhitelistedForDepositReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "strategyIsWhitelistedForDeposit(address)"; + const SELECTOR: [u8; 4] = [102u8, 60u8, 29u8, 228u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.strategy, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `strategyWhitelister()` and selector `0x967fc0d2`. + ```solidity + function strategyWhitelister() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyWhitelisterCall {} + ///Container type for the return parameters of the [`strategyWhitelister()`](strategyWhitelisterCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyWhitelisterReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyWhitelisterCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyWhitelisterCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyWhitelisterReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyWhitelisterReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for strategyWhitelisterCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = strategyWhitelisterReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "strategyWhitelister()"; + const SELECTOR: [u8; 4] = [150u8, 127u8, 192u8, 210u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `thirdPartyTransfersForbidden(address)` and selector `0x9b4da03d`. + ```solidity + function thirdPartyTransfersForbidden(address strategy) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct thirdPartyTransfersForbiddenCall { + pub strategy: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`thirdPartyTransfersForbidden(address)`](thirdPartyTransfersForbiddenCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct thirdPartyTransfersForbiddenReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: thirdPartyTransfersForbiddenCall) -> Self { + (value.strategy,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for thirdPartyTransfersForbiddenCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { strategy: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: thirdPartyTransfersForbiddenReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for thirdPartyTransfersForbiddenReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for thirdPartyTransfersForbiddenCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = thirdPartyTransfersForbiddenReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "thirdPartyTransfersForbidden(address)"; + const SELECTOR: [u8; 4] = [155u8, 77u8, 160u8, 61u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.strategy, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `withdrawSharesAsTokens(address,address,uint256,address)` and selector `0xc608c7f3`. + ```solidity + function withdrawSharesAsTokens(address recipient, address strategy, uint256 shares, address token) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct withdrawSharesAsTokensCall { + pub recipient: alloy::sol_types::private::Address, + pub strategy: alloy::sol_types::private::Address, + pub shares: alloy::sol_types::private::primitives::aliases::U256, + pub token: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`withdrawSharesAsTokens(address,address,uint256,address)`](withdrawSharesAsTokensCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct withdrawSharesAsTokensReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: withdrawSharesAsTokensCall) -> Self { + (value.recipient, value.strategy, value.shares, value.token) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawSharesAsTokensCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + recipient: tuple.0, + strategy: tuple.1, + shares: tuple.2, + token: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: withdrawSharesAsTokensReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawSharesAsTokensReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for withdrawSharesAsTokensCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = withdrawSharesAsTokensReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "withdrawSharesAsTokens(address,address,uint256,address)"; + const SELECTOR: [u8; 4] = [198u8, 8u8, 199u8, 243u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.recipient, + ), + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.shares, + ), + ::tokenize( + &self.token, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IStrategyManager`](self) function calls. + pub enum IStrategyManagerCalls { + addShares(addSharesCall), + addStrategiesToDepositWhitelist(addStrategiesToDepositWhitelistCall), + delegation(delegationCall), + depositIntoStrategy(depositIntoStrategyCall), + depositIntoStrategyWithSignature(depositIntoStrategyWithSignatureCall), + eigenPodManager(eigenPodManagerCall), + getDeposits(getDepositsCall), + removeShares(removeSharesCall), + removeStrategiesFromDepositWhitelist(removeStrategiesFromDepositWhitelistCall), + slasher(slasherCall), + stakerStrategyListLength(stakerStrategyListLengthCall), + stakerStrategyShares(stakerStrategySharesCall), + strategyIsWhitelistedForDeposit(strategyIsWhitelistedForDepositCall), + strategyWhitelister(strategyWhitelisterCall), + thirdPartyTransfersForbidden(thirdPartyTransfersForbiddenCall), + withdrawSharesAsTokens(withdrawSharesAsTokensCall), + } + #[automatically_derived] + impl IStrategyManagerCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [50u8, 232u8, 154u8, 206u8], + [70u8, 101u8, 188u8, 218u8], + [102u8, 60u8, 29u8, 228u8], + [122u8, 126u8, 13u8, 146u8], + [139u8, 138u8, 172u8, 60u8], + [140u8, 128u8, 212u8, 229u8], + [148u8, 246u8, 73u8, 221u8], + [150u8, 127u8, 192u8, 210u8], + [155u8, 77u8, 160u8, 61u8], + [177u8, 52u8, 66u8, 113u8], + [181u8, 216u8, 181u8, 184u8], + [196u8, 98u8, 62u8, 161u8], + [198u8, 8u8, 199u8, 243u8], + [223u8, 91u8, 53u8, 71u8], + [223u8, 92u8, 247u8, 35u8], + [231u8, 160u8, 80u8, 170u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IStrategyManagerCalls { + const NAME: &'static str = "IStrategyManagerCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 16usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::addShares(_) => ::SELECTOR, + Self::addStrategiesToDepositWhitelist(_) => { + ::SELECTOR + } + Self::delegation(_) => ::SELECTOR, + Self::depositIntoStrategy(_) => { + ::SELECTOR + } + Self::depositIntoStrategyWithSignature(_) => { + ::SELECTOR + } + Self::eigenPodManager(_) => { + ::SELECTOR + } + Self::getDeposits(_) => ::SELECTOR, + Self::removeShares(_) => ::SELECTOR, + Self::removeStrategiesFromDepositWhitelist(_) => { + ::SELECTOR + } + Self::slasher(_) => ::SELECTOR, + Self::stakerStrategyListLength(_) => { + ::SELECTOR + } + Self::stakerStrategyShares(_) => { + ::SELECTOR + } + Self::strategyIsWhitelistedForDeposit(_) => { + ::SELECTOR + } + Self::strategyWhitelister(_) => { + ::SELECTOR + } + Self::thirdPartyTransfersForbidden(_) => { + ::SELECTOR + } + Self::withdrawSharesAsTokens(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn depositIntoStrategyWithSignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IStrategyManagerCalls::depositIntoStrategyWithSignature) + } + depositIntoStrategyWithSignature + }, + { + fn eigenPodManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStrategyManagerCalls::eigenPodManager) + } + eigenPodManager + }, + { + fn strategyIsWhitelistedForDeposit( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IStrategyManagerCalls::strategyIsWhitelistedForDeposit) + } + strategyIsWhitelistedForDeposit + }, + { + fn stakerStrategyShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStrategyManagerCalls::stakerStrategyShares) + } + stakerStrategyShares + }, + { + fn stakerStrategyListLength( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStrategyManagerCalls::stakerStrategyListLength) + } + stakerStrategyListLength + }, + { + fn removeShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStrategyManagerCalls::removeShares) + } + removeShares + }, + { + fn getDeposits( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStrategyManagerCalls::getDeposits) + } + getDeposits + }, + { + fn strategyWhitelister( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStrategyManagerCalls::strategyWhitelister) + } + strategyWhitelister + }, + { + fn thirdPartyTransfersForbidden( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IStrategyManagerCalls::thirdPartyTransfersForbidden) + } + thirdPartyTransfersForbidden + }, + { + fn slasher( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IStrategyManagerCalls::slasher) + } + slasher + }, + { + fn removeStrategiesFromDepositWhitelist( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + IStrategyManagerCalls::removeStrategiesFromDepositWhitelist, + ) + } + removeStrategiesFromDepositWhitelist + }, + { + fn addShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IStrategyManagerCalls::addShares) + } + addShares + }, + { + fn withdrawSharesAsTokens( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStrategyManagerCalls::withdrawSharesAsTokens) + } + withdrawSharesAsTokens + }, + { + fn addStrategiesToDepositWhitelist( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IStrategyManagerCalls::addStrategiesToDepositWhitelist) + } + addStrategiesToDepositWhitelist + }, + { + fn delegation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(IStrategyManagerCalls::delegation) + } + delegation + }, + { + fn depositIntoStrategy( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(IStrategyManagerCalls::depositIntoStrategy) + } + depositIntoStrategy + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::addShares(inner) => { + ::abi_encoded_size(inner) + } + Self::addStrategiesToDepositWhitelist(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::delegation(inner) => { + ::abi_encoded_size(inner) + } + Self::depositIntoStrategy(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::depositIntoStrategyWithSignature(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::eigenPodManager(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getDeposits(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::removeShares(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::removeStrategiesFromDepositWhitelist(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::slasher(inner) => { + ::abi_encoded_size(inner) + } + Self::stakerStrategyListLength(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::stakerStrategyShares(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::strategyIsWhitelistedForDeposit(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::strategyWhitelister(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::thirdPartyTransfersForbidden(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::withdrawSharesAsTokens(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::addShares(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::addStrategiesToDepositWhitelist(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::delegation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::depositIntoStrategy(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::depositIntoStrategyWithSignature(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::eigenPodManager(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getDeposits(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::removeShares(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::removeStrategiesFromDepositWhitelist(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::slasher(inner) => { + ::abi_encode_raw(inner, out) + } + Self::stakerStrategyListLength(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::stakerStrategyShares(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::strategyIsWhitelistedForDeposit(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::strategyWhitelister(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::thirdPartyTransfersForbidden(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::withdrawSharesAsTokens(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`IStrategyManager`](self) events. + pub enum IStrategyManagerEvents { + Deposit(Deposit), + StrategyAddedToDepositWhitelist(StrategyAddedToDepositWhitelist), + StrategyRemovedFromDepositWhitelist(StrategyRemovedFromDepositWhitelist), + StrategyWhitelisterChanged(StrategyWhitelisterChanged), + UpdatedThirdPartyTransfersForbidden(UpdatedThirdPartyTransfersForbidden), + } + #[automatically_derived] + impl IStrategyManagerEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 12u8, 53u8, 177u8, 125u8, 145u8, 201u8, 110u8, 178u8, 117u8, 28u8, 212u8, 86u8, + 225u8, 37u8, 47u8, 66u8, 163u8, 134u8, 229u8, 36u8, 239u8, 159u8, 242u8, 110u8, + 204u8, 153u8, 80u8, 133u8, 159u8, 220u8, 4u8, 254u8, + ], + [ + 64u8, 116u8, 65u8, 59u8, 75u8, 68u8, 62u8, 78u8, 88u8, 1u8, 159u8, 40u8, 85u8, + 168u8, 118u8, 81u8, 19u8, 53u8, 140u8, 124u8, 114u8, 227u8, 149u8, 9u8, 198u8, + 175u8, 69u8, 252u8, 15u8, 91u8, 160u8, 48u8, + ], + [ + 66u8, 100u8, 39u8, 94u8, 89u8, 57u8, 85u8, 255u8, 157u8, 97u8, 70u8, 165u8, 26u8, + 69u8, 37u8, 246u8, 221u8, 172u8, 226u8, 232u8, 29u8, 185u8, 57u8, 26u8, 188u8, + 201u8, 209u8, 202u8, 72u8, 4u8, 125u8, 41u8, + ], + [ + 119u8, 217u8, 48u8, 223u8, 73u8, 55u8, 121u8, 52u8, 115u8, 169u8, 80u8, 36u8, + 216u8, 122u8, 152u8, 253u8, 44u8, 203u8, 158u8, 146u8, 211u8, 194u8, 70u8, 59u8, + 61u8, 172u8, 214u8, 93u8, 62u8, 106u8, 87u8, 134u8, + ], + [ + 124u8, 255u8, 249u8, 8u8, 164u8, 181u8, 131u8, 243u8, 100u8, 48u8, 178u8, 93u8, + 117u8, 150u8, 76u8, 69u8, 141u8, 142u8, 222u8, 138u8, 153u8, 189u8, 97u8, 190u8, + 117u8, 14u8, 151u8, 238u8, 27u8, 47u8, 58u8, 150u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IStrategyManagerEvents { + const NAME: &'static str = "IStrategyManagerEvents"; + const COUNT: usize = 5usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Deposit) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::StrategyAddedToDepositWhitelist) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::StrategyRemovedFromDepositWhitelist) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::StrategyWhitelisterChanged) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::UpdatedThirdPartyTransfersForbidden) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for IStrategyManagerEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Deposit(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::StrategyAddedToDepositWhitelist(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::StrategyRemovedFromDepositWhitelist(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::StrategyWhitelisterChanged(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::UpdatedThirdPartyTransfersForbidden(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Deposit(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::StrategyAddedToDepositWhitelist(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::StrategyRemovedFromDepositWhitelist(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::StrategyWhitelisterChanged(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::UpdatedThirdPartyTransfersForbidden(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IStrategyManager`](self) contract instance. + + See the [wrapper's documentation](`IStrategyManagerInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IStrategyManagerInstance { + IStrategyManagerInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + IStrategyManagerInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + IStrategyManagerInstance::::deploy_builder(provider) + } + /**A [`IStrategyManager`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IStrategyManager`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IStrategyManagerInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IStrategyManagerInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IStrategyManagerInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IStrategyManagerInstance + { + /**Creates a new wrapper around an on-chain [`IStrategyManager`](self) contract instance. + + See the [wrapper's documentation](`IStrategyManagerInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IStrategyManagerInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IStrategyManagerInstance { + IStrategyManagerInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IStrategyManagerInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`addShares`] function. + pub fn addShares( + &self, + staker: alloy::sol_types::private::Address, + token: alloy::sol_types::private::Address, + strategy: alloy::sol_types::private::Address, + shares: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&addSharesCall { + staker, + token, + strategy, + shares, + }) + } + ///Creates a new call builder for the [`addStrategiesToDepositWhitelist`] function. + pub fn addStrategiesToDepositWhitelist( + &self, + strategiesToWhitelist: alloy::sol_types::private::Vec< + alloy::sol_types::private::Address, + >, + thirdPartyTransfersForbiddenValues: alloy::sol_types::private::Vec, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&addStrategiesToDepositWhitelistCall { + strategiesToWhitelist, + thirdPartyTransfersForbiddenValues, + }) + } + ///Creates a new call builder for the [`delegation`] function. + pub fn delegation(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&delegationCall {}) + } + ///Creates a new call builder for the [`depositIntoStrategy`] function. + pub fn depositIntoStrategy( + &self, + strategy: alloy::sol_types::private::Address, + token: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&depositIntoStrategyCall { + strategy, + token, + amount, + }) + } + ///Creates a new call builder for the [`depositIntoStrategyWithSignature`] function. + pub fn depositIntoStrategyWithSignature( + &self, + strategy: alloy::sol_types::private::Address, + token: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::primitives::aliases::U256, + staker: alloy::sol_types::private::Address, + expiry: alloy::sol_types::private::primitives::aliases::U256, + signature: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&depositIntoStrategyWithSignatureCall { + strategy, + token, + amount, + staker, + expiry, + signature, + }) + } + ///Creates a new call builder for the [`eigenPodManager`] function. + pub fn eigenPodManager( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&eigenPodManagerCall {}) + } + ///Creates a new call builder for the [`getDeposits`] function. + pub fn getDeposits( + &self, + staker: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getDepositsCall { staker }) + } + ///Creates a new call builder for the [`removeShares`] function. + pub fn removeShares( + &self, + staker: alloy::sol_types::private::Address, + strategy: alloy::sol_types::private::Address, + shares: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&removeSharesCall { + staker, + strategy, + shares, + }) + } + ///Creates a new call builder for the [`removeStrategiesFromDepositWhitelist`] function. + pub fn removeStrategiesFromDepositWhitelist( + &self, + strategiesToRemoveFromWhitelist: alloy::sol_types::private::Vec< + alloy::sol_types::private::Address, + >, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&removeStrategiesFromDepositWhitelistCall { + strategiesToRemoveFromWhitelist, + }) + } + ///Creates a new call builder for the [`slasher`] function. + pub fn slasher(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&slasherCall {}) + } + ///Creates a new call builder for the [`stakerStrategyListLength`] function. + pub fn stakerStrategyListLength( + &self, + staker: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&stakerStrategyListLengthCall { staker }) + } + ///Creates a new call builder for the [`stakerStrategyShares`] function. + pub fn stakerStrategyShares( + &self, + user: alloy::sol_types::private::Address, + strategy: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&stakerStrategySharesCall { user, strategy }) + } + ///Creates a new call builder for the [`strategyIsWhitelistedForDeposit`] function. + pub fn strategyIsWhitelistedForDeposit( + &self, + strategy: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&strategyIsWhitelistedForDepositCall { strategy }) + } + ///Creates a new call builder for the [`strategyWhitelister`] function. + pub fn strategyWhitelister( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&strategyWhitelisterCall {}) + } + ///Creates a new call builder for the [`thirdPartyTransfersForbidden`] function. + pub fn thirdPartyTransfersForbidden( + &self, + strategy: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&thirdPartyTransfersForbiddenCall { strategy }) + } + ///Creates a new call builder for the [`withdrawSharesAsTokens`] function. + pub fn withdrawSharesAsTokens( + &self, + recipient: alloy::sol_types::private::Address, + strategy: alloy::sol_types::private::Address, + shares: alloy::sol_types::private::primitives::aliases::U256, + token: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&withdrawSharesAsTokensCall { + recipient, + strategy, + shares, + token, + }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IStrategyManagerInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Deposit`] event. + pub fn Deposit_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`StrategyAddedToDepositWhitelist`] event. + pub fn StrategyAddedToDepositWhitelist_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`StrategyRemovedFromDepositWhitelist`] event. + pub fn StrategyRemovedFromDepositWhitelist_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`StrategyWhitelisterChanged`] event. + pub fn StrategyWhitelisterChanged_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`UpdatedThirdPartyTransfersForbidden`] event. + pub fn UpdatedThirdPartyTransfersForbidden_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/lib.rs b/crates/utils/src/lib.rs index c88e83a6..5dcbbeab 100644 --- a/crates/utils/src/lib.rs +++ b/crates/utils/src/lib.rs @@ -3,29 +3,142 @@ issue_tracker_base_url = "https://github.com/Layr-Labs/eigensdk-rs/issues/" )] #![cfg_attr(not(test), warn(unused_crate_dependencies))] +#![allow(unused_imports, clippy::all, rustdoc::all)] +//! This module contains the sol! generated bindings for solidity contracts. +//! This is autogenerated code. +//! Do not manually edit these files. +//! These files may be overwritten by the codegen system at any time. +pub mod address; +pub mod addressupgradeable; +pub mod avsdirectory; +pub mod beaconchainproofs; +pub mod bitmaputils; +pub mod blsapkregistry; +pub mod blsapkregistrystorage; +pub mod blssignaturechecker; +pub mod bn254; +pub mod checkpointsupgradeable; +pub mod configsreadwriter; +pub mod context; +pub mod contextupgradeable; +pub mod contractsregistry; +pub mod delegationmanager; +pub mod deploymockavs; +pub mod deploymockavsregistries; +pub mod deploytokensstrategiescreatequorums; +pub mod ecdsa; +pub mod ecdsaservicemanagerbase; +pub mod ecdsastakeregistry; +pub mod ecdsastakeregistryequalweight; +pub mod ecdsastakeregistryeventsanderrors; +pub mod ecdsastakeregistrypermissioned; +pub mod ecdsastakeregistrystorage; +pub mod ecdsaupgradeable; +pub mod eigenlayercontractsparser; +pub mod eip1271signatureutils; +pub mod eip712; +pub mod ejectionmanager; +pub mod emptycontract; +pub mod endian; +pub mod erc1967proxy; +pub mod erc1967upgrade; +pub mod erc20; +pub mod iavsdirectory; +pub mod ibeacon; +pub mod ibeaconchainoracle; +pub mod iblsapkregistry; +pub mod iblssignaturechecker; +pub mod idelegationmanager; +pub mod ieigenpod; +pub mod ieigenpodmanager; +pub mod iejectionmanager; +pub mod ierc1271; +pub mod ierc1271upgradeable; +pub mod ierc165; +pub mod ierc1822proxiable; +pub mod ierc20; +pub mod ierc20metadata; +pub mod ierc20permit; +pub mod ierc721; +pub mod ierc721enumerable; +pub mod ierc721metadata; +pub mod ierc721tokenreceiver; +pub mod iethposdeposit; +pub mod iindexregistry; +pub mod indexregistry; +pub mod indexregistrystorage; +pub mod initializable; +pub mod ipausable; +pub mod ipauserregistry; +pub mod iregistry; +pub mod iregistrycoordinator; +pub mod irewardscoordinator; +pub mod iservicemanager; +pub mod iservicemanagerui; +pub mod isignatureutils; +pub mod islasher; +pub mod isocketupdater; +pub mod istakeregistry; +pub mod istrategy; +pub mod istrategymanager; +pub mod mathupgradeable; +pub mod merkle; +pub mod mockavscontractsparser; +pub mod mockavsservicemanager; +pub mod mockerc20; +pub mod mockerc721; +pub mod operatorstateretriever; +pub mod ownable; +pub mod ownableupgradeable; +pub mod pausable; +pub mod pauserregistry; +pub mod proxy; +pub mod proxyadmin; +pub mod registeroperators; +pub mod registrycoordinator; +pub mod registrycoordinatorstorage; +pub mod safecastupgradeable; +pub mod safeerc20; +pub mod servicemanagerbase; +pub mod servicemanagerbasestorage; +pub mod servicemanagerrouter; +pub mod signaturecheckerupgradeable; +pub mod stakeregistry; +pub mod stakeregistrystorage; +pub mod storageslot; +pub mod strategybase; +pub mod strategybasetvllimits; +pub mod strategymanager; +pub mod strings; +pub mod stringsupgradeable; +pub mod tokenandstrategycontractsparser; +pub mod transparentupgradeableproxy; +pub mod updateoperators; -pub mod binding; -use alloy_json_rpc::RpcError; -use alloy_network::{Ethereum, EthereumWallet}; -use alloy_provider::{ - fillers::{ChainIdFiller, FillProvider, GasFiller, JoinFill, NonceFiller, WalletFiller}, - ProviderBuilder, RootProvider, WsConnect, +use alloy::network::{Ethereum, EthereumWallet}; +use alloy::providers::{ + fillers::{ + BlobGasFiller, ChainIdFiller, FillProvider, GasFiller, JoinFill, NonceFiller, WalletFiller, + }, + Identity, ProviderBuilder, RootProvider, WsConnect, }; -use alloy_pubsub::PubSubFrontend; -use alloy_signer_local::PrivateKeySigner; -use alloy_transport::TransportErrorKind; -use alloy_transport_http::{Client, Http}; +use alloy::pubsub::PubSubFrontend; +use alloy::signers::local::PrivateKeySigner; +use alloy::transports::http::{Client, Http}; +use alloy::transports::RpcError; +use alloy::transports::TransportErrorKind; use reqwest::Url; +use std::str::FromStr; #[allow(clippy::type_complexity)] pub fn get_signer( - key: String, + key: &str, rpc_url: &str, -) -> FillProvider< +) -> alloy::providers::fillers::FillProvider< JoinFill< JoinFill< - JoinFill, NonceFiller>, - ChainIdFiller, + Identity, + JoinFill>>, >, WalletFiller, >, @@ -33,7 +146,7 @@ pub fn get_signer( Http, Ethereum, > { - let signer: PrivateKeySigner = key.parse().expect("failed to generate wallet "); + let signer = PrivateKeySigner::from_str(key).expect("wrong key "); let wallet = EthereumWallet::from(signer); let url = Url::parse(rpc_url).expect("Wrong rpc url"); ProviderBuilder::new() @@ -46,7 +159,10 @@ pub fn get_signer( pub fn get_provider( rpc_url: &str, ) -> FillProvider< - JoinFill, NonceFiller>, ChainIdFiller>, + JoinFill< + Identity, + JoinFill>>, + >, RootProvider>, Http, Ethereum, diff --git a/crates/utils/src/mathupgradeable.rs b/crates/utils/src/mathupgradeable.rs new file mode 100644 index 00000000..0c92a85b --- /dev/null +++ b/crates/utils/src/mathupgradeable.rs @@ -0,0 +1,221 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface MathUpgradeable {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod MathUpgradeable { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220acb5e3863367fe7d20bcfab8fe1086dd581a1992874fa17cde246e67611f745464736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xAC\xB5\xE3\x863g\xFE} \xBC\xFA\xB8\xFE\x10\x86\xDDX\x1A\x19\x92\x87O\xA1|\xDE$nga\x1FtTdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220acb5e3863367fe7d20bcfab8fe1086dd581a1992874fa17cde246e67611f745464736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xAC\xB5\xE3\x863g\xFE} \xBC\xFA\xB8\xFE\x10\x86\xDDX\x1A\x19\x92\x87O\xA1|\xDE$nga\x1FtTdsolcC\0\x08\x0C\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MathUpgradeable`](self) contract instance. + + See the [wrapper's documentation](`MathUpgradeableInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MathUpgradeableInstance { + MathUpgradeableInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + MathUpgradeableInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + MathUpgradeableInstance::::deploy_builder(provider) + } + /**A [`MathUpgradeable`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`MathUpgradeable`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MathUpgradeableInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MathUpgradeableInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MathUpgradeableInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MathUpgradeableInstance + { + /**Creates a new wrapper around an on-chain [`MathUpgradeable`](self) contract instance. + + See the [wrapper's documentation](`MathUpgradeableInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MathUpgradeableInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MathUpgradeableInstance { + MathUpgradeableInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MathUpgradeableInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MathUpgradeableInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/merkle.rs b/crates/utils/src/merkle.rs new file mode 100644 index 00000000..e5cc52f5 --- /dev/null +++ b/crates/utils/src/merkle.rs @@ -0,0 +1,218 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface Merkle {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod Merkle { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202e749e3fd90ba9436ceb6143bff97485e8ae021e3bf949d69b767df5fae8c68164736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 .t\x9E?\xD9\x0B\xA9Cl\xEBaC\xBF\xF9t\x85\xE8\xAE\x02\x1E;\xF9I\xD6\x9Bv}\xF5\xFA\xE8\xC6\x81dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202e749e3fd90ba9436ceb6143bff97485e8ae021e3bf949d69b767df5fae8c68164736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 .t\x9E?\xD9\x0B\xA9Cl\xEBaC\xBF\xF9t\x85\xE8\xAE\x02\x1E;\xF9I\xD6\x9Bv}\xF5\xFA\xE8\xC6\x81dsolcC\0\x08\x0C\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Merkle`](self) contract instance. + + See the [wrapper's documentation](`MerkleInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MerkleInstance { + MerkleInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> { + MerkleInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + MerkleInstance::::deploy_builder(provider) + } + /**A [`Merkle`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`Merkle`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MerkleInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MerkleInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MerkleInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MerkleInstance + { + /**Creates a new wrapper around an on-chain [`Merkle`](self) contract instance. + + See the [wrapper's documentation](`MerkleInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MerkleInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MerkleInstance { + MerkleInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MerkleInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MerkleInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/mockavscontractsparser.rs b/crates/utils/src/mockavscontractsparser.rs new file mode 100644 index 00000000..a41c6907 --- /dev/null +++ b/crates/utils/src/mockavscontractsparser.rs @@ -0,0 +1,426 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface MockAvsContractsParser { + function IS_SCRIPT() external view returns (bool); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_SCRIPT", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod MockAvsContractsParser { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052600c805462ff00ff191662010001179055348015602057600080fd5b5060898061002f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063f8ccbf4714602d575b600080fd5b600c54603f9062010000900460ff1681565b604051901515815260200160405180910390f3fea2646970667358221220c65119aa8cc832d79ddc4ea20ab4e8f49f2a10485cfd987d42c351ca6cf9614a64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15` W`\0\x80\xFD[P`\x89\x80a\0/`\09`\0\xF3\xFE`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`(W`\x005`\xE0\x1C\x80c\xF8\xCC\xBFG\x14`-W[`\0\x80\xFD[`\x0CT`?\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3\xFE\xA2dipfsX\"\x12 \xC6Q\x19\xAA\x8C\xC82\xD7\x9D\xDCN\xA2\n\xB4\xE8\xF4\x9F*\x10H\\\xFD\x98}B\xC3Q\xCAl\xF9aJdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063f8ccbf4714602d575b600080fd5b600c54603f9062010000900460ff1681565b604051901515815260200160405180910390f3fea2646970667358221220c65119aa8cc832d79ddc4ea20ab4e8f49f2a10485cfd987d42c351ca6cf9614a64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`(W`\x005`\xE0\x1C\x80c\xF8\xCC\xBFG\x14`-W[`\0\x80\xFD[`\x0CT`?\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3\xFE\xA2dipfsX\"\x12 \xC6Q\x19\xAA\x8C\xC82\xD7\x9D\xDCN\xA2\n\xB4\xE8\xF4\x9F*\x10H\\\xFD\x98}B\xC3Q\xCAl\xF9aJdsolcC\0\x08\x0C\x003", + ); + /**Function with signature `IS_SCRIPT()` and selector `0xf8ccbf47`. + ```solidity + function IS_SCRIPT() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_SCRIPTCall {} + ///Container type for the return parameters of the [`IS_SCRIPT()`](IS_SCRIPTCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_SCRIPTReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_SCRIPTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_SCRIPTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_SCRIPT()"; + const SELECTOR: [u8; 4] = [248u8, 204u8, 191u8, 71u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`MockAvsContractsParser`](self) function calls. + pub enum MockAvsContractsParserCalls { + IS_SCRIPT(IS_SCRIPTCall), + } + #[automatically_derived] + impl MockAvsContractsParserCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[248u8, 204u8, 191u8, 71u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockAvsContractsParserCalls { + const NAME: &'static str = "MockAvsContractsParserCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_SCRIPT(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[{ + fn IS_SCRIPT( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(MockAvsContractsParserCalls::IS_SCRIPT) + } + IS_SCRIPT + }]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MockAvsContractsParser`](self) contract instance. + + See the [wrapper's documentation](`MockAvsContractsParserInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MockAvsContractsParserInstance { + MockAvsContractsParserInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + MockAvsContractsParserInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + MockAvsContractsParserInstance::::deploy_builder(provider) + } + /**A [`MockAvsContractsParser`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`MockAvsContractsParser`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MockAvsContractsParserInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MockAvsContractsParserInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MockAvsContractsParserInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockAvsContractsParserInstance + { + /**Creates a new wrapper around an on-chain [`MockAvsContractsParser`](self) contract instance. + + See the [wrapper's documentation](`MockAvsContractsParserInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MockAvsContractsParserInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MockAvsContractsParserInstance { + MockAvsContractsParserInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockAvsContractsParserInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`IS_SCRIPT`] function. + pub fn IS_SCRIPT(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_SCRIPTCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockAvsContractsParserInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/mockavsservicemanager.rs b/crates/utils/src/mockavsservicemanager.rs new file mode 100644 index 00000000..30681c1c --- /dev/null +++ b/crates/utils/src/mockavsservicemanager.rs @@ -0,0 +1,6864 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library BN254 { + struct G1Point { uint256 X; uint256 Y; } + struct G2Point { uint256[2] X; uint256[2] Y; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod BN254 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct G1Point { uint256 X; uint256 Y; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct G1Point { + pub X: alloy::sol_types::private::primitives::aliases::U256, + pub Y: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: G1Point) -> Self { + (value.X, value.Y) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for G1Point { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + X: tuple.0, + Y: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for G1Point { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for G1Point { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.X, + ), + as alloy_sol_types::SolType>::tokenize( + &self.Y, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for G1Point { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for G1Point { + const NAME: &'static str = "G1Point"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 X,uint256 Y)") + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word(&self.X) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.Y) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for G1Point { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.X) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.Y) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.X, out); + as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.Y, out); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct G2Point { uint256[2] X; uint256[2] Y; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct G2Point { + pub X: [alloy::sol_types::private::primitives::aliases::U256; 2usize], + pub Y: [alloy::sol_types::private::primitives::aliases::U256; 2usize], + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedArray, 2usize>, + alloy::sol_types::sol_data::FixedArray, 2usize>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + [alloy::sol_types::private::primitives::aliases::U256; 2usize], + [alloy::sol_types::private::primitives::aliases::U256; 2usize], + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: G2Point) -> Self { + (value.X, value.Y) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for G2Point { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + X: tuple.0, + Y: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for G2Point { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for G2Point { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + , + 2usize, + > as alloy_sol_types::SolType>::tokenize(&self.X), + , + 2usize, + > as alloy_sol_types::SolType>::tokenize(&self.Y), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for G2Point { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for G2Point { + const NAME: &'static str = "G2Point"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed("G2Point(uint256[2] X,uint256[2] Y)") + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + , + 2usize, + > as alloy_sol_types::SolType>::eip712_data_word(&self.X) + .0, + , + 2usize, + > as alloy_sol_types::SolType>::eip712_data_word(&self.Y) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for G2Point { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + , + 2usize, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.X + ) + + , + 2usize, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.Y + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + , + 2usize, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.X, out + ); + , + 2usize, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.Y, out + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance. + + See the [wrapper's documentation](`BN254Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> BN254Instance { + BN254Instance::::new(address, provider) + } + /**A [`BN254`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`BN254`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct BN254Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for BN254Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("BN254Instance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BN254Instance + { + /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance. + + See the [wrapper's documentation](`BN254Instance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl BN254Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> BN254Instance { + BN254Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BN254Instance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BN254Instance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library IBLSSignatureChecker { + struct NonSignerStakesAndSignature { uint32[] nonSignerQuorumBitmapIndices; BN254.G1Point[] nonSignerPubkeys; BN254.G1Point[] quorumApks; BN254.G2Point apkG2; BN254.G1Point sigma; uint32[] quorumApkIndices; uint32[] totalStakeIndices; uint32[][] nonSignerStakeIndices; } + struct QuorumStakeTotals { uint96[] signedStakeForQuorum; uint96[] totalStakeForQuorum; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IBLSSignatureChecker { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct NonSignerStakesAndSignature { uint32[] nonSignerQuorumBitmapIndices; BN254.G1Point[] nonSignerPubkeys; BN254.G1Point[] quorumApks; BN254.G2Point apkG2; BN254.G1Point sigma; uint32[] quorumApkIndices; uint32[] totalStakeIndices; uint32[][] nonSignerStakeIndices; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct NonSignerStakesAndSignature { + pub nonSignerQuorumBitmapIndices: alloy::sol_types::private::Vec, + pub nonSignerPubkeys: + alloy::sol_types::private::Vec<::RustType>, + pub quorumApks: + alloy::sol_types::private::Vec<::RustType>, + pub apkG2: ::RustType, + pub sigma: ::RustType, + pub quorumApkIndices: alloy::sol_types::private::Vec, + pub totalStakeIndices: alloy::sol_types::private::Vec, + pub nonSignerStakeIndices: + alloy::sol_types::private::Vec>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array, + BN254::G2Point, + BN254::G1Point, + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array>, + >, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec<::RustType>, + alloy::sol_types::private::Vec<::RustType>, + ::RustType, + ::RustType, + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: NonSignerStakesAndSignature) -> Self { + ( + value.nonSignerQuorumBitmapIndices, + value.nonSignerPubkeys, + value.quorumApks, + value.apkG2, + value.sigma, + value.quorumApkIndices, + value.totalStakeIndices, + value.nonSignerStakeIndices, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for NonSignerStakesAndSignature { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + nonSignerQuorumBitmapIndices: tuple.0, + nonSignerPubkeys: tuple.1, + quorumApks: tuple.2, + apkG2: tuple.3, + sigma: tuple.4, + quorumApkIndices: tuple.5, + totalStakeIndices: tuple.6, + nonSignerStakeIndices: tuple.7, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for NonSignerStakesAndSignature { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for NonSignerStakesAndSignature { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + , + > as alloy_sol_types::SolType>::tokenize( + &self.nonSignerQuorumBitmapIndices, + ), + as alloy_sol_types::SolType>::tokenize(&self.nonSignerPubkeys), + as alloy_sol_types::SolType>::tokenize(&self.quorumApks), + ::tokenize(&self.apkG2), + ::tokenize(&self.sigma), + , + > as alloy_sol_types::SolType>::tokenize(&self.quorumApkIndices), + , + > as alloy_sol_types::SolType>::tokenize(&self.totalStakeIndices), + , + >, + > as alloy_sol_types::SolType>::tokenize(&self.nonSignerStakeIndices), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for NonSignerStakesAndSignature { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for NonSignerStakesAndSignature { + const NAME: &'static str = "NonSignerStakesAndSignature"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "NonSignerStakesAndSignature(uint32[] nonSignerQuorumBitmapIndices,BN254.G1Point[] nonSignerPubkeys,BN254.G1Point[] quorumApks,BN254.G2Point apkG2,BN254.G1Point sigma,uint32[] quorumApkIndices,uint32[] totalStakeIndices,uint32[][] nonSignerStakeIndices)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + let mut components = alloy_sol_types::private::Vec::with_capacity(4); + components.push(::eip712_root_type()); + components + .extend(::eip712_components()); + components.push(::eip712_root_type()); + components + .extend(::eip712_components()); + components.push(::eip712_root_type()); + components + .extend(::eip712_components()); + components.push(::eip712_root_type()); + components + .extend(::eip712_components()); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + , + > as alloy_sol_types::SolType>::eip712_data_word( + &self.nonSignerQuorumBitmapIndices, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.nonSignerPubkeys, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.quorumApks) + .0, + ::eip712_data_word( + &self.apkG2, + ) + .0, + ::eip712_data_word( + &self.sigma, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word( + &self.quorumApkIndices, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word( + &self.totalStakeIndices, + ) + .0, + , + >, + > as alloy_sol_types::SolType>::eip712_data_word( + &self.nonSignerStakeIndices, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for NonSignerStakesAndSignature { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.nonSignerQuorumBitmapIndices, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.nonSignerPubkeys, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.quorumApks, + ) + + ::topic_preimage_length( + &rust.apkG2, + ) + + ::topic_preimage_length( + &rust.sigma, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.quorumApkIndices, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.totalStakeIndices, + ) + + , + >, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.nonSignerStakeIndices, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonSignerQuorumBitmapIndices, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonSignerPubkeys, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.quorumApks, + out, + ); + ::encode_topic_preimage( + &rust.apkG2, + out, + ); + ::encode_topic_preimage( + &rust.sigma, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.quorumApkIndices, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.totalStakeIndices, + out, + ); + >, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonSignerStakeIndices, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct QuorumStakeTotals { uint96[] signedStakeForQuorum; uint96[] totalStakeForQuorum; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct QuorumStakeTotals { + pub signedStakeForQuorum: + alloy::sol_types::private::Vec, + pub totalStakeForQuorum: + alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: QuorumStakeTotals) -> Self { + (value.signedStakeForQuorum, value.totalStakeForQuorum) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for QuorumStakeTotals { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + signedStakeForQuorum: tuple.0, + totalStakeForQuorum: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for QuorumStakeTotals { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for QuorumStakeTotals { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + , + > as alloy_sol_types::SolType>::tokenize(&self.signedStakeForQuorum), + , + > as alloy_sol_types::SolType>::tokenize(&self.totalStakeForQuorum), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for QuorumStakeTotals { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for QuorumStakeTotals { + const NAME: &'static str = "QuorumStakeTotals"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "QuorumStakeTotals(uint96[] signedStakeForQuorum,uint96[] totalStakeForQuorum)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + , + > as alloy_sol_types::SolType>::eip712_data_word( + &self.signedStakeForQuorum, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word( + &self.totalStakeForQuorum, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for QuorumStakeTotals { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.signedStakeForQuorum, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.totalStakeForQuorum, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.signedStakeForQuorum, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.totalStakeForQuorum, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IBLSSignatureChecker`](self) contract instance. + + See the [wrapper's documentation](`IBLSSignatureCheckerInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IBLSSignatureCheckerInstance { + IBLSSignatureCheckerInstance::::new(address, provider) + } + /**A [`IBLSSignatureChecker`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IBLSSignatureChecker`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IBLSSignatureCheckerInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IBLSSignatureCheckerInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IBLSSignatureCheckerInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IBLSSignatureCheckerInstance + { + /**Creates a new wrapper around an on-chain [`IBLSSignatureChecker`](self) contract instance. + + See the [wrapper's documentation](`IBLSSignatureCheckerInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IBLSSignatureCheckerInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IBLSSignatureCheckerInstance { + IBLSSignatureCheckerInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IBLSSignatureCheckerInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IBLSSignatureCheckerInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library IRewardsCoordinator { + struct RewardsSubmission { StrategyAndMultiplier[] strategiesAndMultipliers; address token; uint256 amount; uint32 startTimestamp; uint32 duration; } + struct StrategyAndMultiplier { address strategy; uint96 multiplier; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IRewardsCoordinator { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct RewardsSubmission { StrategyAndMultiplier[] strategiesAndMultipliers; address token; uint256 amount; uint32 startTimestamp; uint32 duration; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct RewardsSubmission { + pub strategiesAndMultipliers: alloy::sol_types::private::Vec< + ::RustType, + >, + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::primitives::aliases::U256, + pub startTimestamp: u32, + pub duration: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + u32, + u32, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: RewardsSubmission) -> Self { + ( + value.strategiesAndMultipliers, + value.token, + value.amount, + value.startTimestamp, + value.duration, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for RewardsSubmission { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategiesAndMultipliers: tuple.0, + token: tuple.1, + amount: tuple.2, + startTimestamp: tuple.3, + duration: tuple.4, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for RewardsSubmission { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for RewardsSubmission { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.strategiesAndMultipliers, + ), + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.startTimestamp), + as alloy_sol_types::SolType>::tokenize(&self.duration), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for RewardsSubmission { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for RewardsSubmission { + const NAME: &'static str = "RewardsSubmission"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "RewardsSubmission(StrategyAndMultiplier[] strategiesAndMultipliers,address token,uint256 amount,uint32 startTimestamp,uint32 duration)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + let mut components = alloy_sol_types::private::Vec::with_capacity(1); + components.push( + ::eip712_root_type(), + ); + components.extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word( + &self.strategiesAndMultipliers, + ) + .0, + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.startTimestamp, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.duration) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for RewardsSubmission { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.strategiesAndMultipliers, + ) + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.startTimestamp, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.duration, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.strategiesAndMultipliers, + out, + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.startTimestamp, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.duration, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct StrategyAndMultiplier { address strategy; uint96 multiplier; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct StrategyAndMultiplier { + pub strategy: alloy::sol_types::private::Address, + pub multiplier: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<96>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U96, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: StrategyAndMultiplier) -> Self { + (value.strategy, value.multiplier) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for StrategyAndMultiplier { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategy: tuple.0, + multiplier: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for StrategyAndMultiplier { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for StrategyAndMultiplier { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.multiplier, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for StrategyAndMultiplier { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for StrategyAndMultiplier { + const NAME: &'static str = "StrategyAndMultiplier"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "StrategyAndMultiplier(address strategy,uint96 multiplier)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.strategy, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.multiplier) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for StrategyAndMultiplier { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.strategy, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.multiplier, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.strategy, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.multiplier, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IRewardsCoordinator`](self) contract instance. + + See the [wrapper's documentation](`IRewardsCoordinatorInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IRewardsCoordinatorInstance { + IRewardsCoordinatorInstance::::new(address, provider) + } + /**A [`IRewardsCoordinator`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IRewardsCoordinator`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IRewardsCoordinatorInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IRewardsCoordinatorInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IRewardsCoordinatorInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IRewardsCoordinatorInstance + { + /**Creates a new wrapper around an on-chain [`IRewardsCoordinator`](self) contract instance. + + See the [wrapper's documentation](`IRewardsCoordinatorInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IRewardsCoordinatorInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IRewardsCoordinatorInstance { + IRewardsCoordinatorInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IRewardsCoordinatorInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IRewardsCoordinatorInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library ISignatureUtils { + struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ISignatureUtils { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SignatureWithSaltAndExpiry { + pub signature: alloy::sol_types::private::Bytes, + pub salt: alloy::sol_types::private::FixedBytes<32>, + pub expiry: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: SignatureWithSaltAndExpiry) -> Self { + (value.signature, value.salt, value.expiry) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for SignatureWithSaltAndExpiry { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + signature: tuple.0, + salt: tuple.1, + expiry: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for SignatureWithSaltAndExpiry { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for SignatureWithSaltAndExpiry { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.signature, + ), + as alloy_sol_types::SolType>::tokenize(&self.salt), + as alloy_sol_types::SolType>::tokenize(&self.expiry), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for SignatureWithSaltAndExpiry { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for SignatureWithSaltAndExpiry { + const NAME: &'static str = "SignatureWithSaltAndExpiry"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "SignatureWithSaltAndExpiry(bytes signature,bytes32 salt,uint256 expiry)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.signature, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.salt) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.expiry) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for SignatureWithSaltAndExpiry { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.signature, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.salt) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.expiry, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.signature, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.salt, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.expiry, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ISignatureUtilsInstance { + ISignatureUtilsInstance::::new(address, provider) + } + /**A [`ISignatureUtils`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ISignatureUtils`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ISignatureUtilsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ISignatureUtilsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ISignatureUtilsInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ISignatureUtilsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ISignatureUtilsInstance { + ISignatureUtilsInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library BN254 { + struct G1Point { + uint256 X; + uint256 Y; + } + struct G2Point { + uint256[2] X; + uint256[2] Y; + } +} + +library IBLSSignatureChecker { + struct NonSignerStakesAndSignature { + uint32[] nonSignerQuorumBitmapIndices; + BN254.G1Point[] nonSignerPubkeys; + BN254.G1Point[] quorumApks; + BN254.G2Point apkG2; + BN254.G1Point sigma; + uint32[] quorumApkIndices; + uint32[] totalStakeIndices; + uint32[][] nonSignerStakeIndices; + } + struct QuorumStakeTotals { + uint96[] signedStakeForQuorum; + uint96[] totalStakeForQuorum; + } +} + +library IRewardsCoordinator { + struct RewardsSubmission { + StrategyAndMultiplier[] strategiesAndMultipliers; + address token; + uint256 amount; + uint32 startTimestamp; + uint32 duration; + } + struct StrategyAndMultiplier { + address strategy; + uint96 multiplier; + } +} + +library ISignatureUtils { + struct SignatureWithSaltAndExpiry { + bytes signature; + bytes32 salt; + uint256 expiry; + } +} + +interface MockAvsServiceManager { + event Initialized(uint8 version); + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + event RewardsInitiatorUpdated(address prevRewardsInitiator, address newRewardsInitiator); + event StaleStakesForbiddenUpdate(bool value); + + constructor(address _registryCoordinator, address _avsDirectory, address _rewardsCoordinator); + + function avsDirectory() external view returns (address); + function blsApkRegistry() external view returns (address); + function checkSignatures(bytes32 msgHash, bytes memory quorumNumbers, uint32 referenceBlockNumber, IBLSSignatureChecker.NonSignerStakesAndSignature memory params) external view returns (IBLSSignatureChecker.QuorumStakeTotals memory, bytes32); + function createAVSRewardsSubmission(IRewardsCoordinator.RewardsSubmission[] memory rewardsSubmissions) external; + function delegation() external view returns (address); + function deregisterOperatorFromAVS(address operator) external; + function getOperatorRestakedStrategies(address operator) external view returns (address[] memory); + function getRestakeableStrategies() external view returns (address[] memory); + function initialize(address _initialOwner) external; + function owner() external view returns (address); + function registerOperatorToAVS(address operator, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external; + function registryCoordinator() external view returns (address); + function renounceOwnership() external; + function rewardsInitiator() external view returns (address); + function setRewardsInitiator(address newRewardsInitiator) external; + function setStaleStakesForbidden(bool value) external; + function stakeRegistry() external view returns (address); + function staleStakesForbidden() external view returns (bool); + function transferOwnership(address newOwner) external; + function trySignatureAndApkVerification(bytes32 msgHash, BN254.G1Point memory apk, BN254.G2Point memory apkG2, BN254.G1Point memory sigma) external view returns (bool pairingSuccessful, bool siganatureIsValid); + function updateAVSMetadataURI(string memory _metadataURI) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_registryCoordinator", + "type": "address", + "internalType": "contract IRegistryCoordinator" + }, + { + "name": "_avsDirectory", + "type": "address", + "internalType": "contract IAVSDirectory" + }, + { + "name": "_rewardsCoordinator", + "type": "address", + "internalType": "contract IRewardsCoordinator" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "avsDirectory", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "blsApkRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IBLSApkRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "checkSignatures", + "inputs": [ + { + "name": "msgHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "referenceBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "params", + "type": "tuple", + "internalType": "struct IBLSSignatureChecker.NonSignerStakesAndSignature", + "components": [ + { + "name": "nonSignerQuorumBitmapIndices", + "type": "uint32[]", + "internalType": "uint32[]" + }, + { + "name": "nonSignerPubkeys", + "type": "tuple[]", + "internalType": "struct BN254.G1Point[]", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "quorumApks", + "type": "tuple[]", + "internalType": "struct BN254.G1Point[]", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "apkG2", + "type": "tuple", + "internalType": "struct BN254.G2Point", + "components": [ + { + "name": "X", + "type": "uint256[2]", + "internalType": "uint256[2]" + }, + { + "name": "Y", + "type": "uint256[2]", + "internalType": "uint256[2]" + } + ] + }, + { + "name": "sigma", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "quorumApkIndices", + "type": "uint32[]", + "internalType": "uint32[]" + }, + { + "name": "totalStakeIndices", + "type": "uint32[]", + "internalType": "uint32[]" + }, + { + "name": "nonSignerStakeIndices", + "type": "uint32[][]", + "internalType": "uint32[][]" + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IBLSSignatureChecker.QuorumStakeTotals", + "components": [ + { + "name": "signedStakeForQuorum", + "type": "uint96[]", + "internalType": "uint96[]" + }, + { + "name": "totalStakeForQuorum", + "type": "uint96[]", + "internalType": "uint96[]" + } + ] + }, + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "createAVSRewardsSubmission", + "inputs": [ + { + "name": "rewardsSubmissions", + "type": "tuple[]", + "internalType": "struct IRewardsCoordinator.RewardsSubmission[]", + "components": [ + { + "name": "strategiesAndMultipliers", + "type": "tuple[]", + "internalType": "struct IRewardsCoordinator.StrategyAndMultiplier[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "startTimestamp", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "duration", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "delegation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IDelegationManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "deregisterOperatorFromAVS", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getOperatorRestakedStrategies", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getRestakeableStrategies", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "_initialOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registerOperatorToAVS", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "operatorSignature", + "type": "tuple", + "internalType": "struct ISignatureUtils.SignatureWithSaltAndExpiry", + "components": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "salt", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registryCoordinator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IRegistryCoordinator" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "rewardsInitiator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setRewardsInitiator", + "inputs": [ + { + "name": "newRewardsInitiator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setStaleStakesForbidden", + "inputs": [ + { + "name": "value", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "stakeRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStakeRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "staleStakesForbidden", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "trySignatureAndApkVerification", + "inputs": [ + { + "name": "msgHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "apk", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "apkG2", + "type": "tuple", + "internalType": "struct BN254.G2Point", + "components": [ + { + "name": "X", + "type": "uint256[2]", + "internalType": "uint256[2]" + }, + { + "name": "Y", + "type": "uint256[2]", + "internalType": "uint256[2]" + } + ] + }, + { + "name": "sigma", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ], + "outputs": [ + { + "name": "pairingSuccessful", + "type": "bool", + "internalType": "bool" + }, + { + "name": "siganatureIsValid", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "updateAVSMetadataURI", + "inputs": [ + { + "name": "_metadataURI", + "type": "string", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RewardsInitiatorUpdated", + "inputs": [ + { + "name": "prevRewardsInitiator", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newRewardsInitiator", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StaleStakesForbiddenUpdate", + "inputs": [ + { + "name": "value", + "type": "bool", + "indexed": false, + "internalType": "bool" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod MockAvsServiceManager { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6101806040523480156200001257600080fd5b50604051620044ed380380620044ed83398101604081905262000035916200033f565b82828285866001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000078573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009e919062000393565b6001600160a01b0380851660805280841660a05280831660c052811660e052620000c762000264565b50505050806001600160a01b0316610100816001600160a01b031681525050806001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000125573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014b919062000393565b6001600160a01b0316610120816001600160a01b031681525050806001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ca919062000393565b6001600160a01b0316610140816001600160a01b031681525050610120516001600160a01b031663df5cf7236040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000226573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024c919062000393565b6001600160a01b03166101605250620003ba92505050565b600054610100900460ff1615620002d15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000324576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200033c57600080fd5b50565b6000806000606084860312156200035557600080fd5b8351620003628162000326565b6020850151909350620003758162000326565b6040850151909250620003888162000326565b809150509250925092565b600060208284031215620003a657600080fd5b8151620003b38162000326565b9392505050565b60805160a05160c05160e05161010051610120516101405161016051614025620004c86000396000818161030e01526112020152600081816101b801526113e40152600081816101f7015281816115ba015261177c015260008181610244015281816109e001528181610ecd01528181611065015261129f0152600081816106f501528181610850015281816108e701528181611e0801528181611f8b015261202a015260008181610520015281816105af0152818161062f01528181611a5001528181611b1c01528181611d460152611ee60152600081816122cb01528181612387015261247301526000818161021b01528181611aa401528181611b780152611bf701526140256000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80638da5cb5b116100b8578063c4d66de81161007c578063c4d66de8146102f6578063df5cf72314610309578063e481af9d14610330578063f2fde38b14610338578063fc299dee1461034b578063fce36c7d1461035e57600080fd5b80638da5cb5b1461028f5780639926ee7d146102a0578063a364f4da146102b3578063a98fb355146102c6578063b98d0908146102d957600080fd5b806368304835116100ff57806368304835146101f25780636b3aa72e146102195780636d14a9871461023f5780636efb463614610266578063715018a61461028757600080fd5b8063171f1d5b1461013c57806333cfb7b71461016b5780633bc28c8c1461018b578063416c7e5e146101a05780635df45946146101b3575b600080fd5b61014f61014a3660046133ba565b610371565b6040805192151583529015156020830152015b60405180910390f35b61017e610179366004613420565b6104fb565b604051610162919061343d565b61019e610199366004613420565b6109ca565b005b61019e6101ae366004613498565b6109de565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610162565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b7f00000000000000000000000000000000000000000000000000000000000000006101da565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b61027961027436600461376b565b610b1a565b60405161016292919061385e565b61019e611a31565b6033546001600160a01b03166101da565b61019e6102ae3660046138fe565b611a45565b61019e6102c1366004613420565b611b11565b61019e6102d43660046139a8565b611bd8565b6097546102e69060ff1681565b6040519015158152602001610162565b61019e610304366004613420565b611c2c565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b61017e611d40565b61019e610346366004613420565b612109565b6065546101da906001600160a01b031681565b61019e61036c3660046139f8565b61217f565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001878760000151886020015188600001516000600281106103b9576103b9613a6c565b60200201518951600160200201518a602001516000600281106103de576103de613a6c565b60200201518b602001516001600281106103fa576103fa613a6c565b602090810291909101518c518d8301516040516104579a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c61047a9190613a82565b90506104ed61049361048c88846124aa565b8690612541565b61049b6125d5565b6104e36104d4856104ce604080518082018252600080825260209182015281518083019092526001825260029082015290565b906124aa565b6104dd8c612695565b90612541565b886201d4c0612725565b909890975095505050505050565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa158015610567573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058b9190613aa4565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa1580156105f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061a9190613abd565b90506001600160c01b03811615806106b457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106af9190613ae6565b60ff16155b156106d057505060408051600081526020810190915292915050565b60006106e4826001600160c01b0316612949565b90506000805b82518110156107ba577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f584838151811061073457610734613a6c565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610778573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079c9190613aa4565b6107a69083613b1f565b9150806107b281613b37565b9150506106ea565b506000816001600160401b038111156107d5576107d5613247565b6040519080825280602002602001820160405280156107fe578160200160208202803683370190505b5090506000805b84518110156109bd57600085828151811061082257610822613a6c565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610897573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108bb9190613aa4565b905060005b818110156109a7576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015610935573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109599190613b67565b6000015186868151811061096f5761096f613a6c565b6001600160a01b03909216602092830291909101909101528461099181613b37565b955050808061099f90613b37565b9150506108c0565b50505080806109b590613b37565b915050610805565b5090979650505050505050565b6109d2612a0b565b6109db81612a65565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a609190613ba8565b6001600160a01b0316336001600160a01b031614610b115760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a4015b60405180910390fd5b6109db81612ace565b6040805180820190915260608082526020820152600084610b915760405162461bcd60e51b81526020600482015260376024820152600080516020613fd083398151915260448201527f7265733a20656d7074792071756f72756d20696e7075740000000000000000006064820152608401610b08565b60408301515185148015610ba9575060a08301515185145b8015610bb9575060c08301515185145b8015610bc9575060e08301515185145b610c335760405162461bcd60e51b81526020600482015260416024820152600080516020613fd083398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610b08565b82515160208401515114610cab5760405162461bcd60e51b815260206004820152604460248201819052600080516020613fd0833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610b08565b4363ffffffff168463ffffffff1610610d1a5760405162461bcd60e51b815260206004820152603c6024820152600080516020613fd083398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610b08565b6040805180820182526000808252602080830191909152825180840190935260608084529083015290866001600160401b03811115610d5b57610d5b613247565b604051908082528060200260200182016040528015610d84578160200160208202803683370190505b506020820152866001600160401b03811115610da257610da2613247565b604051908082528060200260200182016040528015610dcb578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b03811115610dff57610dff613247565b604051908082528060200260200182016040528015610e28578160200160208202803683370190505b5081526020860151516001600160401b03811115610e4857610e48613247565b604051908082528060200260200182016040528015610e71578160200160208202803683370190505b5081602001819052506000610f438a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e9190613ae6565b612b15565b905060005b8760200151518110156111de57610f8d88602001518281518110610f6e57610f6e613a6c565b6020026020010151805160009081526020918201519091526040902090565b83602001518281518110610fa357610fa3613a6c565b60209081029190910101528015611063576020830151610fc4600183613bc5565b81518110610fd457610fd4613a6c565b602002602001015160001c83602001518281518110610ff557610ff5613a6c565b602002602001015160001c11611063576040805162461bcd60e51b8152602060048201526024810191909152600080516020613fd083398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610b08565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec6351846020015183815181106110a8576110a8613a6c565b60200260200101518b8b6000015185815181106110c7576110c7613a6c565b60200260200101516040518463ffffffff1660e01b81526004016111049392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015611121573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111459190613abd565b6001600160c01b03168360000151828151811061116457611164613a6c565b6020026020010181815250506111ca61048c61119e848660000151858151811061119057611190613a6c565b602002602001015116612ba8565b8a6020015184815181106111b4576111b4613a6c565b6020026020010151612bd390919063ffffffff16565b9450806111d681613b37565b915050610f48565b50506111e983612cb7565b60975490935060ff16600081611200576000611282565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561125e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112829190613aa4565b905060005b8a8110156119005782156113e2578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c428f8f868181106112de576112de613a6c565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa15801561131e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113429190613aa4565b61134c9190613b1f565b116113e25760405162461bcd60e51b81526020600482015260666024820152600080516020613fd083398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610b08565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8d8d8481811061142357611423613a6c565b9050013560f81c60f81b60f81c8c8c60a00151858151811061144757611447613a6c565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa1580156114a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c79190613bdc565b6001600160401b0319166114ea8a604001518381518110610f6e57610f6e613a6c565b67ffffffffffffffff1916146115865760405162461bcd60e51b81526020600482015260616024820152600080516020613fd083398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610b08565b6115b68960400151828151811061159f5761159f613a6c565b60200260200101518761254190919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568d8d848181106115f9576115f9613a6c565b9050013560f81c60f81b60f81c8c8c60c00151858151811061161d5761161d613a6c565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015611679573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169d9190613c07565b856020015182815181106116b3576116b3613a6c565b6001600160601b039092166020928302919091018201528501518051829081106116df576116df613a6c565b6020026020010151856000015182815181106116fd576116fd613a6c565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a60200151518110156118eb576117758660000151828151811061174757611747613a6c565b60200260200101518f8f8681811061176157611761613a6c565b600192013560f81c9290921c811614919050565b156118d9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8f8f868181106117bb576117bb613a6c565b9050013560f81c60f81b60f81c8e896020015185815181106117df576117df613a6c565b60200260200101518f60e0015188815181106117fd576117fd613a6c565b6020026020010151878151811061181657611816613a6c565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa15801561187a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189e9190613c07565b87518051859081106118b2576118b2613a6c565b602002602001018181516118c69190613c24565b6001600160601b03169052506001909101905b806118e381613b37565b915050611721565b505080806118f890613b37565b915050611287565b50505060008061191a8c868a606001518b60800151610371565b915091508161198b5760405162461bcd60e51b81526020600482015260436024820152600080516020613fd083398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610b08565b806119ec5760405162461bcd60e51b81526020600482015260396024820152600080516020613fd083398151915260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610b08565b50506000878260200151604051602001611a07929190613c4c565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b611a39612a0b565b611a436000612d52565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611a8d5760405162461bcd60e51b8152600401610b0890613c94565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d90611adb9085908590600401613d59565b600060405180830381600087803b158015611af557600080fd5b505af1158015611b09573d6000803e3d6000fd5b505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b595760405162461bcd60e51b8152600401610b0890613c94565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b158015611bbd57600080fd5b505af1158015611bd1573d6000803e3d6000fd5b5050505050565b611be0612a0b565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb35590611ba3908490600401613da4565b600054610100900460ff1615808015611c4c5750600054600160ff909116105b80611c665750303b158015611c66575060005460ff166001145b611cc95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b08565b6000805460ff191660011790558015611cec576000805461ff0019166101001790555b611cf68283612da4565b8015611d3c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611da2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc69190613ae6565b60ff16905080611de457505060408051600081526020810190915290565b6000805b82811015611e9957604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015611e57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7b9190613aa4565b611e859083613b1f565b915080611e9181613b37565b915050611de8565b506000816001600160401b03811115611eb457611eb4613247565b604051908082528060200260200182016040528015611edd578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f669190613ae6565b60ff168110156120ff57604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015611fda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ffe9190613aa4565b905060005b818110156120ea576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015612078573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209c9190613b67565b600001518585815181106120b2576120b2613a6c565b6001600160a01b0390921660209283029190910190910152836120d481613b37565b94505080806120e290613b37565b915050612003565b505080806120f790613b37565b915050611ee4565b5090949350505050565b612111612a0b565b6001600160a01b0381166121765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b08565b6109db81612d52565b612187612e21565b60005b8181101561245b578282828181106121a4576121a4613a6c565b90506020028101906121b69190613dbe565b6121c7906040810190602001613420565b6001600160a01b03166323b872dd33308686868181106121e9576121e9613a6c565b90506020028101906121fb9190613dbe565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152013560448201526064016020604051808303816000875af1158015612252573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122769190613de9565b50600083838381811061228b5761228b613a6c565b905060200281019061229d9190613dbe565b6122ae906040810190602001613420565b604051636eb1769f60e11b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063dd62ed3e90604401602060405180830381865afa15801561231c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123409190613aa4565b905083838381811061235457612354613a6c565b90506020028101906123669190613dbe565b612377906040810190602001613420565b6001600160a01b031663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000838787878181106123b9576123b9613a6c565b90506020028101906123cb9190613dbe565b604001356123d99190613b1f565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612424573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124489190613de9565b50508061245490613b37565b905061218a565b5060405163fce36c7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fce36c7d90611adb9085908590600401613e61565b60408051808201909152600080825260208201526124c661316d565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156124f9576124fb565bfe5b50806125395760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610b08565b505092915050565b604080518082019091526000808252602082015261255d61318b565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156124f95750806125395760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610b08565b6125dd6131a9565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820190915260008082526020820152600080806126c5600080516020613fb083398151915286613a82565b90505b6126d181612eb6565b9093509150600080516020613fb083398151915282830983141561270b576040805180820190915290815260208101919091529392505050565b600080516020613fb08339815191526001820890506126c8565b6040805180820182528681526020808201869052825180840190935286835282018490526000918291906127576131ce565b60005b600281101561291c576000612770826006613f6e565b905084826002811061278457612784613a6c565b60200201515183612796836000613b1f565b600c81106127a6576127a6613a6c565b60200201528482600281106127bd576127bd613a6c565b602002015160200151838260016127d49190613b1f565b600c81106127e4576127e4613a6c565b60200201528382600281106127fb576127fb613a6c565b602002015151518361280e836002613b1f565b600c811061281e5761281e613a6c565b602002015283826002811061283557612835613a6c565b602002015151600160200201518361284e836003613b1f565b600c811061285e5761285e613a6c565b602002015283826002811061287557612875613a6c565b60200201516020015160006002811061289057612890613a6c565b6020020151836128a1836004613b1f565b600c81106128b1576128b1613a6c565b60200201528382600281106128c8576128c8613a6c565b6020020151602001516001600281106128e3576128e3613a6c565b6020020151836128f4836005613b1f565b600c811061290457612904613a6c565b6020020152508061291481613b37565b91505061275a565b506129256131ed565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b606060008061295784612ba8565b61ffff166001600160401b0381111561297257612972613247565b6040519080825280601f01601f19166020018201604052801561299c576020820181803683370190505b5090506000805b8251821080156129b4575061010081105b156120ff576001811b9350858416156129fb578060f81b8383815181106129dd576129dd613a6c565b60200101906001600160f81b031916908160001a9053508160010191505b612a0481613b37565b90506129a3565b6033546001600160a01b03163314611a435760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b08565b606554604080516001600160a01b03928316815291831660208301527fe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6097805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b600080612b2184612f38565b9050808360ff166001901b11612b9f5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610b08565b90505b92915050565b6000805b8215612ba257612bbd600184613bc5565b9092169180612bcb81613f8d565b915050612bac565b60408051808201909152600080825260208201526102008261ffff1610612c2f5760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610b08565b8161ffff1660011415612c43575081612ba2565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff1610612cac57600161ffff871660ff83161c81161415612c8f57612c8c8484612541565b93505b612c998384612541565b92506201fffe600192831b169101612c5f565b509195945050505050565b60408051808201909152600080825260208201528151158015612cdc57506020820151155b15612cfa575050604080518082019091526000808252602082015290565b604051806040016040528083600001518152602001600080516020613fb08339815191528460200151612d2d9190613a82565b612d4590600080516020613fb0833981519152613bc5565b905292915050565b919050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16612e0f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610b08565b612e1882612d52565b611d3c81612a65565b6065546001600160a01b03163314611a435760405162461bcd60e51b815260206004820152604c60248201527f536572766963654d616e61676572426173652e6f6e6c7952657761726473496e60448201527f69746961746f723a2063616c6c6572206973206e6f742074686520726577617260648201526b32399034b734ba34b0ba37b960a11b608482015260a401610b08565b60008080600080516020613fb08339815191526003600080516020613fb083398151915286600080516020613fb0833981519152888909090890506000612f2c827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020613fb08339815191526130c5565b91959194509092505050565b600061010082511115612fc15760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610b08565b8151612fcf57506000919050565b60008083600081518110612fe557612fe5613a6c565b0160200151600160f89190911c81901b92505b84518110156130bc5784818151811061301357613013613a6c565b0160200151600160f89190911c1b91508282116130a85760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610b08565b918117916130b581613b37565b9050612ff8565b50909392505050565b6000806130d06131ed565b6130d861320b565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280156124f95750826131625760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610b08565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806131bc613229565b81526020016131c9613229565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561327f5761327f613247565b60405290565b60405161010081016001600160401b038111828210171561327f5761327f613247565b604051606081016001600160401b038111828210171561327f5761327f613247565b604051601f8201601f191681016001600160401b03811182821017156132f2576132f2613247565b604052919050565b60006040828403121561330c57600080fd5b61331461325d565b9050813581526020820135602082015292915050565b600082601f83011261333b57600080fd5b61334361325d565b80604084018581111561335557600080fd5b845b8181101561336f578035845260209384019301613357565b509095945050505050565b60006080828403121561338c57600080fd5b61339461325d565b90506133a0838361332a565b81526133af836040840161332a565b602082015292915050565b60008060008061012085870312156133d157600080fd5b843593506133e286602087016132fa565b92506133f1866060870161337a565b91506134008660e087016132fa565b905092959194509250565b6001600160a01b03811681146109db57600080fd5b60006020828403121561343257600080fd5b8135612b9f8161340b565b6020808252825182820181905260009190848201906040850190845b8181101561347e5783516001600160a01b031683529284019291840191600101613459565b50909695505050505050565b80151581146109db57600080fd5b6000602082840312156134aa57600080fd5b8135612b9f8161348a565b803563ffffffff81168114612d4d57600080fd5b60006001600160401b038211156134e2576134e2613247565b5060051b60200190565b600082601f8301126134fd57600080fd5b8135602061351261350d836134c9565b6132ca565b82815260059290921b8401810191818101908684111561353157600080fd5b8286015b8481101561355357613546816134b5565b8352918301918301613535565b509695505050505050565b600082601f83011261356f57600080fd5b8135602061357f61350d836134c9565b82815260069290921b8401810191818101908684111561359e57600080fd5b8286015b84811015613553576135b488826132fa565b8352918301916040016135a2565b600082601f8301126135d357600080fd5b813560206135e361350d836134c9565b82815260059290921b8401810191818101908684111561360257600080fd5b8286015b848110156135535780356001600160401b038111156136255760008081fd5b6136338986838b01016134ec565b845250918301918301613606565b6000610180828403121561365457600080fd5b61365c613285565b905081356001600160401b038082111561367557600080fd5b613681858386016134ec565b8352602084013591508082111561369757600080fd5b6136a38583860161355e565b602084015260408401359150808211156136bc57600080fd5b6136c88583860161355e565b60408401526136da856060860161337a565b60608401526136ec8560e086016132fa565b608084015261012084013591508082111561370657600080fd5b613712858386016134ec565b60a084015261014084013591508082111561372c57600080fd5b613738858386016134ec565b60c084015261016084013591508082111561375257600080fd5b5061375f848285016135c2565b60e08301525092915050565b60008060008060006080868803121561378357600080fd5b8535945060208601356001600160401b03808211156137a157600080fd5b818801915088601f8301126137b557600080fd5b8135818111156137c457600080fd5b8960208285010111156137d657600080fd5b60208301965094506137ea604089016134b5565b9350606088013591508082111561380057600080fd5b5061380d88828901613641565b9150509295509295909350565b600081518084526020808501945080840160005b838110156138535781516001600160601b03168752958201959082019060010161382e565b509495945050505050565b6040815260008351604080840152613879608084018261381a565b90506020850151603f19848303016060850152613896828261381a565b925050508260208301529392505050565b60006001600160401b038311156138c0576138c0613247565b6138d3601f8401601f19166020016132ca565b90508281528383830111156138e757600080fd5b828260208301376000602084830101529392505050565b6000806040838503121561391157600080fd5b823561391c8161340b565b915060208301356001600160401b038082111561393857600080fd5b908401906060828703121561394c57600080fd5b6139546132a8565b82358281111561396357600080fd5b83019150601f8201871361397657600080fd5b613985878335602085016138a7565b815260208301356020820152604083013560408201528093505050509250929050565b6000602082840312156139ba57600080fd5b81356001600160401b038111156139d057600080fd5b8201601f810184136139e157600080fd5b6139f0848235602084016138a7565b949350505050565b60008060208385031215613a0b57600080fd5b82356001600160401b0380821115613a2257600080fd5b818501915085601f830112613a3657600080fd5b813581811115613a4557600080fd5b8660208260051b8501011115613a5a57600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052603260045260246000fd5b600082613a9f57634e487b7160e01b600052601260045260246000fd5b500690565b600060208284031215613ab657600080fd5b5051919050565b600060208284031215613acf57600080fd5b81516001600160c01b0381168114612b9f57600080fd5b600060208284031215613af857600080fd5b815160ff81168114612b9f57600080fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115613b3257613b32613b09565b500190565b6000600019821415613b4b57613b4b613b09565b5060010190565b6001600160601b03811681146109db57600080fd5b600060408284031215613b7957600080fd5b613b8161325d565b8251613b8c8161340b565b81526020830151613b9c81613b52565b60208201529392505050565b600060208284031215613bba57600080fd5b8151612b9f8161340b565b600082821015613bd757613bd7613b09565b500390565b600060208284031215613bee57600080fd5b815167ffffffffffffffff1981168114612b9f57600080fd5b600060208284031215613c1957600080fd5b8151612b9f81613b52565b60006001600160601b0383811690831681811015613c4457613c44613b09565b039392505050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b83811015613c8757815185529382019390820190600101613c6b565b5092979650505050505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b81811015613d3257602081850181015186830182015201613d16565b81811115613d44576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b0383168152604060208201526000825160606040840152613d8360a0840182613d0c565b90506020840151606084015260408401516080840152809150509392505050565b602081526000613db76020830184613d0c565b9392505050565b60008235609e19833603018112613dd457600080fd5b9190910192915050565b8035612d4d8161340b565b600060208284031215613dfb57600080fd5b8151612b9f8161348a565b8183526000602080850194508260005b85811015613853578135613e298161340b565b6001600160a01b0316875281830135613e4181613b52565b6001600160601b0316878401526040968701969190910190600101613e16565b60208082528181018390526000906040808401600586901b8501820187855b88811015613f6057878303603f190184528135368b9003609e19018112613ea657600080fd5b8a0160a0813536839003601e19018112613ebf57600080fd5b820180356001600160401b03811115613ed757600080fd5b8060061b3603841315613ee957600080fd5b828752613efb838801828c8501613e06565b92505050613f0a888301613dde565b6001600160a01b03168886015281870135878601526060613f2c8184016134b5565b63ffffffff16908601526080613f438382016134b5565b63ffffffff16950194909452509285019290850190600101613e80565b509098975050505050505050565b6000816000190483118215151615613f8857613f88613b09565b500290565b600061ffff80831681811415613fa557613fa5613b09565b600101939250505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47424c535369676e6174757265436865636b65722e636865636b5369676e617475a264697066735822122004d14b0c67491c6f81fc686090c2b801587e5f7717760407a276dc8b517e6fc064736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"a\x01\x80`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0D\xED8\x03\x80b\0D\xED\x839\x81\x01`@\x81\x90Rb\0\x005\x91b\0\x03?V[\x82\x82\x82\x85\x86`\x01`\x01`\xA0\x1B\x03\x16ch0H5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\0xW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\x9E\x91\x90b\0\x03\x93V[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\x80R\x80\x84\x16`\xA0R\x80\x83\x16`\xC0R\x81\x16`\xE0Rb\0\0\xC7b\0\x02dV[PPPP\x80`\x01`\x01`\xA0\x1B\x03\x16a\x01\0\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80`\x01`\x01`\xA0\x1B\x03\x16ch0H5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x01%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01K\x91\x90b\0\x03\x93V[`\x01`\x01`\xA0\x1B\x03\x16a\x01 \x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80`\x01`\x01`\xA0\x1B\x03\x16c]\xF4YF`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x01\xA4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01\xCA\x91\x90b\0\x03\x93V[`\x01`\x01`\xA0\x1B\x03\x16a\x01@\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPPa\x01 Q`\x01`\x01`\xA0\x1B\x03\x16c\xDF\\\xF7#`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x02&W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02L\x91\x90b\0\x03\x93V[`\x01`\x01`\xA0\x1B\x03\x16a\x01`RPb\0\x03\xBA\x92PPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\x02\xD1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FInitializable: contract is initi`D\x82\x01Rfalizing`\xC8\x1B`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[`\0T`\xFF\x90\x81\x16\x10\x15b\0\x03$W`\0\x80T`\xFF\x19\x16`\xFF\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x03=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x8B\x91\x90a:\xA4V[`@Qc\x87\x1E\xF0I`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R\x90\x91P`\0\x90`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x87\x1E\xF0I\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\xF6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\x1A\x91\x90a:\xBDV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15\x80a\x06\xB4WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x9A\xA1e=`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\x8BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xAF\x91\x90a:\xE6V[`\xFF\x16\x15[\x15a\x06\xD0WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x92\x91PPV[`\0a\x06\xE4\x82`\x01`\x01`\xC0\x1B\x03\x16a)IV[\x90P`\0\x80[\x82Q\x81\x10\x15a\x07\xBAW\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c<\xA5\xA5\xF5\x84\x83\x81Q\x81\x10a\x074Wa\x074a:lV[\x01` \x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01R`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07xW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\x9C\x91\x90a:\xA4V[a\x07\xA6\x90\x83a;\x1FV[\x91P\x80a\x07\xB2\x81a;7V[\x91PPa\x06\xEAV[P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\xD5Wa\x07\xD5a2GV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\xFEW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80[\x84Q\x81\x10\x15a\t\xBDW`\0\x85\x82\x81Q\x81\x10a\x08\"Wa\x08\"a:lV[\x01` \x01Q`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01\x81\x90R\x91P`\0\x90`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c<\xA5\xA5\xF5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\x97W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xBB\x91\x90a:\xA4V[\x90P`\0[\x81\x81\x10\x15a\t\xA7W`@QcV\xE4\x02m`\xE1\x1B\x81R`\xFF\x84\x16`\x04\x82\x01R`$\x81\x01\x82\x90R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90c\xAD\xC8\x04\xDA\x90`D\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\tY\x91\x90a;gV[`\0\x01Q\x86\x86\x81Q\x81\x10a\toWa\toa:lV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x84a\t\x91\x81a;7V[\x95PP\x80\x80a\t\x9F\x90a;7V[\x91PPa\x08\xC0V[PPP\x80\x80a\t\xB5\x90a;7V[\x91PPa\x08\x05V[P\x90\x97\x96PPPPPPPV[a\t\xD2a*\x0BV[a\t\xDB\x81a*eV[PV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n`\x91\x90a;\xA8V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0B\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R\x7FBLSSignatureChecker.onlyCoordina`D\x82\x01R\x7FtorOwner: caller is not the owne`d\x82\x01R\x7Fr of the registryCoordinator\0\0\0\0`\x84\x82\x01R`\xA4\x01[`@Q\x80\x91\x03\x90\xFD[a\t\xDB\x81a*\xCEV[`@\x80Q\x80\x82\x01\x90\x91R``\x80\x82R` \x82\x01R`\0\x84a\x0B\x91W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: empty quorum input\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x0B\x08V[`@\x83\x01QQ\x85\x14\x80\x15a\x0B\xA9WP`\xA0\x83\x01QQ\x85\x14[\x80\x15a\x0B\xB9WP`\xC0\x83\x01QQ\x85\x14[\x80\x15a\x0B\xC9WP`\xE0\x83\x01QQ\x85\x14[a\x0C3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: input quorum length mismatc`d\x82\x01R`\r`\xFB\x1B`\x84\x82\x01R`\xA4\x01a\x0B\x08V[\x82QQ` \x84\x01QQ\x14a\x0C\xABW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R`\0\x80Q` a?\xD0\x839\x81Q\x91R\x90\x82\x01R\x7Fres: input nonsigner length mism`d\x82\x01Rc\x0C.\x8Cm`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x0B\x08V[Cc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10a\r\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: invalid reference block\0\0\0\0`d\x82\x01R`\x84\x01a\x0B\x08V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x80\x83\x01\x91\x90\x91R\x82Q\x80\x84\x01\x90\x93R``\x80\x84R\x90\x83\x01R\x90\x86`\x01`\x01`@\x1B\x03\x81\x11\x15a\r[Wa\r[a2GV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\r\x84W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P` \x82\x01R\x86`\x01`\x01`@\x1B\x03\x81\x11\x15a\r\xA2Wa\r\xA2a2GV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\r\xCBW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R`@\x80Q\x80\x82\x01\x90\x91R``\x80\x82R` \x82\x01R\x85` \x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a\r\xFFWa\r\xFFa2GV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0E(W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x86\x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0EHWa\x0EHa2GV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0EqW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81` \x01\x81\x90RP`\0a\x0FC\x8A\x8A\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`@\x80Qc\x9A\xA1e=`\xE0\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x93Pc\x9A\xA1e=\x92P`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x0F\x1AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F>\x91\x90a:\xE6V[a+\x15V[\x90P`\0[\x87` \x01QQ\x81\x10\x15a\x11\xDEWa\x0F\x8D\x88` \x01Q\x82\x81Q\x81\x10a\x0FnWa\x0Fna:lV[` \x02` \x01\x01Q\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x83` \x01Q\x82\x81Q\x81\x10a\x0F\xA3Wa\x0F\xA3a:lV[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80\x15a\x10cW` \x83\x01Qa\x0F\xC4`\x01\x83a;\xC5V[\x81Q\x81\x10a\x0F\xD4Wa\x0F\xD4a:lV[` \x02` \x01\x01Q`\0\x1C\x83` \x01Q\x82\x81Q\x81\x10a\x0F\xF5Wa\x0F\xF5a:lV[` \x02` \x01\x01Q`\0\x1C\x11a\x10cW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: nonSignerPubkeys not sorted`d\x82\x01R`\x84\x01a\x0B\x08V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x84` \x01Q\x83\x81Q\x81\x10a\x10\xA8Wa\x10\xA8a:lV[` \x02` \x01\x01Q\x8B\x8B`\0\x01Q\x85\x81Q\x81\x10a\x10\xC7Wa\x10\xC7a:lV[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x11\x04\x93\x92\x91\x90\x92\x83Rc\xFF\xFF\xFF\xFF\x91\x82\x16` \x84\x01R\x16`@\x82\x01R``\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11!W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11E\x91\x90a:\xBDV[`\x01`\x01`\xC0\x1B\x03\x16\x83`\0\x01Q\x82\x81Q\x81\x10a\x11dWa\x11da:lV[` \x02` \x01\x01\x81\x81RPPa\x11\xCAa\x04\x8Ca\x11\x9E\x84\x86`\0\x01Q\x85\x81Q\x81\x10a\x11\x90Wa\x11\x90a:lV[` \x02` \x01\x01Q\x16a+\xA8V[\x8A` \x01Q\x84\x81Q\x81\x10a\x11\xB4Wa\x11\xB4a:lV[` \x02` \x01\x01Qa+\xD3\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x94P\x80a\x11\xD6\x81a;7V[\x91PPa\x0FHV[PPa\x11\xE9\x83a,\xB7V[`\x97T\x90\x93P`\xFF\x16`\0\x81a\x12\0W`\0a\x12\x82V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xC4H\xFE\xB8`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12^W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12\x82\x91\x90a:\xA4V[\x90P`\0[\x8A\x81\x10\x15a\x19\0W\x82\x15a\x13\xE2W\x89c\xFF\xFF\xFF\xFF\x16\x82\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c$\x9A\x0CB\x8F\x8F\x86\x81\x81\x10a\x12\xDEWa\x12\xDEa:lV[`@Q`\xE0\x85\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R\x92\x015`\xF8\x1C`\x04\x83\x01RP`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x13\x1EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13B\x91\x90a:\xA4V[a\x13L\x91\x90a;\x1FV[\x11a\x13\xE2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: StakeRegistry updates must `d\x82\x01R\x7Fbe within withdrawalDelayBlocks `\x84\x82\x01Rewindow`\xD0\x1B`\xA4\x82\x01R`\xC4\x01a\x0B\x08V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16ch\xBC\xCA\xAC\x8D\x8D\x84\x81\x81\x10a\x14#Wa\x14#a:lV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xA0\x01Q\x85\x81Q\x81\x10a\x14GWa\x14Ga:lV[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81R`\xFF\x90\x93\x16`\x04\x84\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x84\x01R\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\xA3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x14\xC7\x91\x90a;\xDCV[`\x01`\x01`@\x1B\x03\x19\x16a\x14\xEA\x8A`@\x01Q\x83\x81Q\x81\x10a\x0FnWa\x0Fna:lV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x14a\x15\x86W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`a`$\x82\x01R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: quorumApk hash in storage d`d\x82\x01R\x7Foes not match provided quorum ap`\x84\x82\x01R`k`\xF8\x1B`\xA4\x82\x01R`\xC4\x01a\x0B\x08V[a\x15\xB6\x89`@\x01Q\x82\x81Q\x81\x10a\x15\x9FWa\x15\x9Fa:lV[` \x02` \x01\x01Q\x87a%A\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x95P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xC8)LV\x8D\x8D\x84\x81\x81\x10a\x15\xF9Wa\x15\xF9a:lV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xC0\x01Q\x85\x81Q\x81\x10a\x16\x1DWa\x16\x1Da:lV[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81R`\xFF\x90\x93\x16`\x04\x84\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x84\x01R\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16yW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\x9D\x91\x90a<\x07V[\x85` \x01Q\x82\x81Q\x81\x10a\x16\xB3Wa\x16\xB3a:lV[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x82\x01R\x85\x01Q\x80Q\x82\x90\x81\x10a\x16\xDFWa\x16\xDFa:lV[` \x02` \x01\x01Q\x85`\0\x01Q\x82\x81Q\x81\x10a\x16\xFDWa\x16\xFDa:lV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPP`\0\x80[\x8A` \x01QQ\x81\x10\x15a\x18\xEBWa\x17u\x86`\0\x01Q\x82\x81Q\x81\x10a\x17GWa\x17Ga:lV[` \x02` \x01\x01Q\x8F\x8F\x86\x81\x81\x10a\x17aWa\x17aa:lV[`\x01\x92\x015`\xF8\x1C\x92\x90\x92\x1C\x81\x16\x14\x91\x90PV[\x15a\x18\xD9W\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xF2\xBE\x94\xAE\x8F\x8F\x86\x81\x81\x10a\x17\xBBWa\x17\xBBa:lV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8E\x89` \x01Q\x85\x81Q\x81\x10a\x17\xDFWa\x17\xDFa:lV[` \x02` \x01\x01Q\x8F`\xE0\x01Q\x88\x81Q\x81\x10a\x17\xFDWa\x17\xFDa:lV[` \x02` \x01\x01Q\x87\x81Q\x81\x10a\x18\x16Wa\x18\x16a:lV[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x87\x90\x1B\x16\x81R`\xFF\x90\x94\x16`\x04\x85\x01Rc\xFF\xFF\xFF\xFF\x92\x83\x16`$\x85\x01R`D\x84\x01\x91\x90\x91R\x16`d\x82\x01R`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x18zW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x18\x9E\x91\x90a<\x07V[\x87Q\x80Q\x85\x90\x81\x10a\x18\xB2Wa\x18\xB2a:lV[` \x02` \x01\x01\x81\x81Qa\x18\xC6\x91\x90a<$V[`\x01`\x01``\x1B\x03\x16\x90RP`\x01\x90\x91\x01\x90[\x80a\x18\xE3\x81a;7V[\x91PPa\x17!V[PP\x80\x80a\x18\xF8\x90a;7V[\x91PPa\x12\x87V[PPP`\0\x80a\x19\x1A\x8C\x86\x8A``\x01Q\x8B`\x80\x01Qa\x03qV[\x91P\x91P\x81a\x19\x8BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: pairing precompile call fai`d\x82\x01Rb\x1B\x19Y`\xEA\x1B`\x84\x82\x01R`\xA4\x01a\x0B\x08V[\x80a\x19\xECW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`9`$\x82\x01R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: signature is invalid\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x0B\x08V[PP`\0\x87\x82` \x01Q`@Q` \x01a\x1A\x07\x92\x91\x90a=`\0\xFD[PPPPPPV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x1BYW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x0B\x08\x90a<\x94V[`@QcQ\xB2zm`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xA3d\xF4\xDA\x90`$\x01[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1B\xBDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1B\xD1W=`\0\x80>=`\0\xFD[PPPPPV[a\x1B\xE0a*\x0BV[`@Qc\xA9\x8F\xB3U`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xA9\x8F\xB3U\x90a\x1B\xA3\x90\x84\x90`\x04\x01a=\xA4V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x1CLWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x1CfWP0;\x15\x80\x15a\x1CfWP`\0T`\xFF\x16`\x01\x14[a\x1C\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01a\x0B\x08V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x1C\xECW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x1C\xF6\x82\x83a-\xA4V[\x80\x15a\x1D=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1D\xC6\x91\x90a:\xE6V[`\xFF\x16\x90P\x80a\x1D\xE4WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x90V[`\0\x80[\x82\x81\x10\x15a\x1E\x99W`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xFF\x82\x16`\x04\x82\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90c<\xA5\xA5\xF5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1EWW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1E{\x91\x90a:\xA4V[a\x1E\x85\x90\x83a;\x1FV[\x91P\x80a\x1E\x91\x81a;7V[\x91PPa\x1D\xE8V[P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\xB4Wa\x1E\xB4a2GV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1E\xDDW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x9A\xA1e=`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1FBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Ff\x91\x90a:\xE6V[`\xFF\x16\x81\x10\x15a \xFFW`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xFF\x82\x16`\x04\x82\x01R`\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90c<\xA5\xA5\xF5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1F\xDAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F\xFE\x91\x90a:\xA4V[\x90P`\0[\x81\x81\x10\x15a \xEAW`@QcV\xE4\x02m`\xE1\x1B\x81R`\xFF\x84\x16`\x04\x82\x01R`$\x81\x01\x82\x90R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90c\xAD\xC8\x04\xDA\x90`D\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a xW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a \x9C\x91\x90a;gV[`\0\x01Q\x85\x85\x81Q\x81\x10a \xB2Wa \xB2a:lV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x83a \xD4\x81a;7V[\x94PP\x80\x80a \xE2\x90a;7V[\x91PPa \x03V[PP\x80\x80a \xF7\x90a;7V[\x91PPa\x1E\xE4V[P\x90\x94\x93PPPPV[a!\x11a*\x0BV[`\x01`\x01`\xA0\x1B\x03\x81\x16a!vW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x0B\x08V[a\t\xDB\x81a-RV[a!\x87a.!V[`\0[\x81\x81\x10\x15a$[W\x82\x82\x82\x81\x81\x10a!\xA4Wa!\xA4a:lV[\x90P` \x02\x81\x01\x90a!\xB6\x91\x90a=\xBEV[a!\xC7\x90`@\x81\x01\x90` \x01a4 V[`\x01`\x01`\xA0\x1B\x03\x16c#\xB8r\xDD30\x86\x86\x86\x81\x81\x10a!\xE9Wa!\xE9a:lV[\x90P` \x02\x81\x01\x90a!\xFB\x91\x90a=\xBEV[`@\x80Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x87\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`\x04\x82\x01R\x93\x90\x92\x16`$\x84\x01R\x015`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\"RW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\"v\x91\x90a=\xE9V[P`\0\x83\x83\x83\x81\x81\x10a\"\x8BWa\"\x8Ba:lV[\x90P` \x02\x81\x01\x90a\"\x9D\x91\x90a=\xBEV[a\"\xAE\x90`@\x81\x01\x90` \x01a4 V[`@Qcn\xB1v\x9F`\xE1\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16`$\x83\x01R\x91\x90\x91\x16\x90c\xDDb\xED>\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a#\x1CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a#@\x91\x90a:\xA4V[\x90P\x83\x83\x83\x81\x81\x10a#TWa#Ta:lV[\x90P` \x02\x81\x01\x90a#f\x91\x90a=\xBEV[a#w\x90`@\x81\x01\x90` \x01a4 V[`\x01`\x01`\xA0\x1B\x03\x16c\t^\xA7\xB3\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x87\x87\x87\x81\x81\x10a#\xB9Wa#\xB9a:lV[\x90P` \x02\x81\x01\x90a#\xCB\x91\x90a=\xBEV[`@\x015a#\xD9\x91\x90a;\x1FV[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x85\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16`\x04\x83\x01R`$\x82\x01R`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a$$W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a$H\x91\x90a=\xE9V[PP\x80a$T\x90a;7V[\x90Pa!\x8AV[P`@Qc\xFC\xE3l}`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xFC\xE3l}\x90a\x1A\xDB\x90\x85\x90\x85\x90`\x04\x01a>aV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra$\xC6a1mV[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R`\0\x90\x83``\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a$\xF9Wa$\xFBV[\xFE[P\x80a%9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x0B\x08V[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra%]a1\x8BV[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x80\x84\x01\x91\x90\x91R\x90\x84\x01Q``\x83\x01R`\0\x90\x83`\x80\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a$\xF9WP\x80a%9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCBXY\x19\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x0B\x08V[a%\xDDa1\xA9V[P`@\x80Q`\x80\x81\x01\x82R\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81\x83\x01\x90\x81R\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED``\x83\x01R\x81R\x81Q\x80\x83\x01\x90\x92R\x7F']\xC4\xA2\x88\xD1\xAF\xB3\xCB\xB1\xAC\t\x18u$\xC7\xDB69]\xF7\xBE;\x99\xE6s\xB1:\x07Ze\xEC\x82R\x7F\x1D\x9B\xEF\xCD\x05\xA52>m\xA4\xD45\xF3\xB6\x17\xCD\xB3\xAF\x83(\\-\xF7\x11\xEF9\xC0\x15q\x82\x7F\x9D` \x83\x81\x01\x91\x90\x91R\x81\x01\x91\x90\x91R\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0\x80\x80a&\xC5`\0\x80Q` a?\xB0\x839\x81Q\x91R\x86a:\x82V[\x90P[a&\xD1\x81a.\xB6V[\x90\x93P\x91P`\0\x80Q` a?\xB0\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a'\x0BW`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` a?\xB0\x839\x81Q\x91R`\x01\x82\x08\x90Pa&\xC8V[`@\x80Q\x80\x82\x01\x82R\x86\x81R` \x80\x82\x01\x86\x90R\x82Q\x80\x84\x01\x90\x93R\x86\x83R\x82\x01\x84\x90R`\0\x91\x82\x91\x90a'Wa1\xCEV[`\0[`\x02\x81\x10\x15a)\x1CW`\0a'p\x82`\x06a?nV[\x90P\x84\x82`\x02\x81\x10a'\x84Wa'\x84a:lV[` \x02\x01QQ\x83a'\x96\x83`\0a;\x1FV[`\x0C\x81\x10a'\xA6Wa'\xA6a:lV[` \x02\x01R\x84\x82`\x02\x81\x10a'\xBDWa'\xBDa:lV[` \x02\x01Q` \x01Q\x83\x82`\x01a'\xD4\x91\x90a;\x1FV[`\x0C\x81\x10a'\xE4Wa'\xE4a:lV[` \x02\x01R\x83\x82`\x02\x81\x10a'\xFBWa'\xFBa:lV[` \x02\x01QQQ\x83a(\x0E\x83`\x02a;\x1FV[`\x0C\x81\x10a(\x1EWa(\x1Ea:lV[` \x02\x01R\x83\x82`\x02\x81\x10a(5Wa(5a:lV[` \x02\x01QQ`\x01` \x02\x01Q\x83a(N\x83`\x03a;\x1FV[`\x0C\x81\x10a(^Wa(^a:lV[` \x02\x01R\x83\x82`\x02\x81\x10a(uWa(ua:lV[` \x02\x01Q` \x01Q`\0`\x02\x81\x10a(\x90Wa(\x90a:lV[` \x02\x01Q\x83a(\xA1\x83`\x04a;\x1FV[`\x0C\x81\x10a(\xB1Wa(\xB1a:lV[` \x02\x01R\x83\x82`\x02\x81\x10a(\xC8Wa(\xC8a:lV[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a(\xE3Wa(\xE3a:lV[` \x02\x01Q\x83a(\xF4\x83`\x05a;\x1FV[`\x0C\x81\x10a)\x04Wa)\x04a:lV[` \x02\x01RP\x80a)\x14\x81a;7V[\x91PPa'ZV[Pa)%a1\xEDV[`\0` \x82a\x01\x80\x85`\x08\x8C\xFA\x91Q\x91\x9C\x91\x15\x15\x9BP\x90\x99PPPPPPPPPPV[```\0\x80a)W\x84a+\xA8V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a)rWa)ra2GV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a)\x9CW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a)\xB4WPa\x01\0\x81\x10[\x15a \xFFW`\x01\x81\x1B\x93P\x85\x84\x16\x15a)\xFBW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a)\xDDWa)\xDDa:lV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a*\x04\x81a;7V[\x90Pa)\xA3V[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x1ACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x0B\x08V[`eT`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\xE1\x1C\xDD\xF1\x81jC1\x8C\xA1u\xBB\xC5,\xD0\x18T6\xE9\xCB\xEA\xD7\xC8:\xCCT\xA7>F\x17\x17\xE3\x91\x01`@Q\x80\x91\x03\x90\xA1`e\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x97\x80T`\xFF\x19\x16\x82\x15\x15\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F@\xE4\xED\x88\n)\xE0\xF6\xDD\xCE0tW\xFBu\xCD\xDFO\xEE\xF7\xD3\xEC\xB00\x1B\xFD\xF4\x97j\x0E-\xFC\x90` \x01`@Q\x80\x91\x03\x90\xA1PV[`\0\x80a+!\x84a/8V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a+\x9FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`?`$\x82\x01R\x7FBitmapUtils.orderedBytesArrayToB`D\x82\x01R\x7Fitmap: bitmap exceeds max value\0`d\x82\x01R`\x84\x01a\x0B\x08V[\x90P[\x92\x91PPV[`\0\x80[\x82\x15a+\xA2Wa+\xBD`\x01\x84a;\xC5V[\x90\x92\x16\x91\x80a+\xCB\x81a?\x8DV[\x91PPa+\xACV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x02\0\x82a\xFF\xFF\x16\x10a,/W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01Roscalar-too-large`\x80\x1B`D\x82\x01R`d\x01a\x0B\x08V[\x81a\xFF\xFF\x16`\x01\x14\x15a,CWP\x81a+\xA2V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01\x81\x90R\x84\x90`\x01\x90[\x81a\xFF\xFF\x16\x86a\xFF\xFF\x16\x10a,\xACW`\x01a\xFF\xFF\x87\x16`\xFF\x83\x16\x1C\x81\x16\x14\x15a,\x8FWa,\x8C\x84\x84a%AV[\x93P[a,\x99\x83\x84a%AV[\x92Pb\x01\xFF\xFE`\x01\x92\x83\x1B\x16\x91\x01a,_V[P\x91\x95\x94PPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a,\xDCWP` \x82\x01Q\x15[\x15a,\xFAWPP`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x90V[`@Q\x80`@\x01`@R\x80\x83`\0\x01Q\x81R` \x01`\0\x80Q` a?\xB0\x839\x81Q\x91R\x84` \x01Qa--\x91\x90a:\x82V[a-E\x90`\0\x80Q` a?\xB0\x839\x81Q\x91Ra;\xC5V[\x90R\x92\x91PPV[\x91\x90PV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[`\0Ta\x01\0\x90\x04`\xFF\x16a.\x0FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`+`$\x82\x01R\x7FInitializable: contract is not i`D\x82\x01Rjnitializing`\xA8\x1B`d\x82\x01R`\x84\x01a\x0B\x08V[a.\x18\x82a-RV[a\x1D<\x81a*eV[`eT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x1ACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`L`$\x82\x01R\x7FServiceManagerBase.onlyRewardsIn`D\x82\x01R\x7Fitiator: caller is not the rewar`d\x82\x01Rk29\x904\xB74\xBA4\xB0\xBA7\xB9`\xA1\x1B`\x84\x82\x01R`\xA4\x01a\x0B\x08V[`\0\x80\x80`\0\x80Q` a?\xB0\x839\x81Q\x91R`\x03`\0\x80Q` a?\xB0\x839\x81Q\x91R\x86`\0\x80Q` a?\xB0\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0a/,\x82\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R`\0\x80Q` a?\xB0\x839\x81Q\x91Ra0\xC5V[\x91\x95\x91\x94P\x90\x92PPPV[`\0a\x01\0\x82Q\x11\x15a/\xC1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FBitmapUtils.orderedBytesArrayToB\x90\x82\x01R\x7Fitmap: orderedBytesArray is too `d\x82\x01Rclong`\xE0\x1B`\x84\x82\x01R`\xA4\x01a\x0B\x08V[\x81Qa/\xCFWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a/\xE5Wa/\xE5a:lV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a0\xBCW\x84\x81\x81Q\x81\x10a0\x13Wa0\x13a:lV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a0\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FBitmapUtils.orderedBytesArrayToB`D\x82\x01R\x7Fitmap: orderedBytesArray is not `d\x82\x01Rf\x1B\xDC\x99\x19\\\x99Y`\xCA\x1B`\x84\x82\x01R`\xA4\x01a\x0B\x08V[\x91\x81\x17\x91a0\xB5\x81a;7V[\x90Pa/\xF8V[P\x90\x93\x92PPPV[`\0\x80a0\xD0a1\xEDV[a0\xD8a2\x0BV[` \x80\x82R\x81\x81\x01\x81\x90R`@\x82\x01\x81\x90R``\x82\x01\x88\x90R`\x80\x82\x01\x87\x90R`\xA0\x82\x01\x86\x90R\x82`\xC0\x83`\x05a\x07\xD0Z\x03\xFA\x92P\x82\x80\x15a$\xF9WP\x82a1bW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7FBN254.expMod: call failure\0\0\0\0\0\0`D\x82\x01R`d\x01a\x0B\x08V[PQ\x95\x94PPPPPV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\x80\x01`@R\x80`\x04\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80a1\xBCa2)V[\x81R` \x01a1\xC9a2)V[\x90R\x90V[`@Q\x80a\x01\x80\x01`@R\x80`\x0C\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80` \x01`@R\x80`\x01\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\xC0\x01`@R\x80`\x06\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2\x7FWa2\x7Fa2GV[`@R\x90V[`@Qa\x01\0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2\x7FWa2\x7Fa2GV[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2\x7FWa2\x7Fa2GV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2\xF2Wa2\xF2a2GV[`@R\x91\x90PV[`\0`@\x82\x84\x03\x12\x15a3\x0CW`\0\x80\xFD[a3\x14a2]V[\x90P\x815\x81R` \x82\x015` \x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a3;W`\0\x80\xFD[a3Ca2]V[\x80`@\x84\x01\x85\x81\x11\x15a3UW`\0\x80\xFD[\x84[\x81\x81\x10\x15a3oW\x805\x84R` \x93\x84\x01\x93\x01a3WV[P\x90\x95\x94PPPPPV[`\0`\x80\x82\x84\x03\x12\x15a3\x8CW`\0\x80\xFD[a3\x94a2]V[\x90Pa3\xA0\x83\x83a3*V[\x81Ra3\xAF\x83`@\x84\x01a3*V[` \x82\x01R\x92\x91PPV[`\0\x80`\0\x80a\x01 \x85\x87\x03\x12\x15a3\xD1W`\0\x80\xFD[\x845\x93Pa3\xE2\x86` \x87\x01a2\xFAV[\x92Pa3\xF1\x86``\x87\x01a3zV[\x91Pa4\0\x86`\xE0\x87\x01a2\xFAV[\x90P\x92\x95\x91\x94P\x92PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\xDBW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a42W`\0\x80\xFD[\x815a+\x9F\x81a4\x0BV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a4~W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a4YV[P\x90\x96\x95PPPPPPV[\x80\x15\x15\x81\x14a\t\xDBW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a4\xAAW`\0\x80\xFD[\x815a+\x9F\x81a4\x8AV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a-MW`\0\x80\xFD[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a4\xE2Wa4\xE2a2GV[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a4\xFDW`\0\x80\xFD[\x815` a5\x12a5\r\x83a4\xC9V[a2\xCAV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a51W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a5SWa5F\x81a4\xB5V[\x83R\x91\x83\x01\x91\x83\x01a55V[P\x96\x95PPPPPPV[`\0\x82`\x1F\x83\x01\x12a5oW`\0\x80\xFD[\x815` a5\x7Fa5\r\x83a4\xC9V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a5\x9EW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a5SWa5\xB4\x88\x82a2\xFAV[\x83R\x91\x83\x01\x91`@\x01a5\xA2V[`\0\x82`\x1F\x83\x01\x12a5\xD3W`\0\x80\xFD[\x815` a5\xE3a5\r\x83a4\xC9V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a6\x02W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a5SW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a6%W`\0\x80\x81\xFD[a63\x89\x86\x83\x8B\x01\x01a4\xECV[\x84RP\x91\x83\x01\x91\x83\x01a6\x06V[`\0a\x01\x80\x82\x84\x03\x12\x15a6TW`\0\x80\xFD[a6\\a2\x85V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a6uW`\0\x80\xFD[a6\x81\x85\x83\x86\x01a4\xECV[\x83R` \x84\x015\x91P\x80\x82\x11\x15a6\x97W`\0\x80\xFD[a6\xA3\x85\x83\x86\x01a5^V[` \x84\x01R`@\x84\x015\x91P\x80\x82\x11\x15a6\xBCW`\0\x80\xFD[a6\xC8\x85\x83\x86\x01a5^V[`@\x84\x01Ra6\xDA\x85``\x86\x01a3zV[``\x84\x01Ra6\xEC\x85`\xE0\x86\x01a2\xFAV[`\x80\x84\x01Ra\x01 \x84\x015\x91P\x80\x82\x11\x15a7\x06W`\0\x80\xFD[a7\x12\x85\x83\x86\x01a4\xECV[`\xA0\x84\x01Ra\x01@\x84\x015\x91P\x80\x82\x11\x15a7,W`\0\x80\xFD[a78\x85\x83\x86\x01a4\xECV[`\xC0\x84\x01Ra\x01`\x84\x015\x91P\x80\x82\x11\x15a7RW`\0\x80\xFD[Pa7_\x84\x82\x85\x01a5\xC2V[`\xE0\x83\x01RP\x92\x91PPV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a7\x83W`\0\x80\xFD[\x855\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a7\xA1W`\0\x80\xFD[\x81\x88\x01\x91P\x88`\x1F\x83\x01\x12a7\xB5W`\0\x80\xFD[\x815\x81\x81\x11\x15a7\xC4W`\0\x80\xFD[\x89` \x82\x85\x01\x01\x11\x15a7\xD6W`\0\x80\xFD[` \x83\x01\x96P\x94Pa7\xEA`@\x89\x01a4\xB5V[\x93P``\x88\x015\x91P\x80\x82\x11\x15a8\0W`\0\x80\xFD[Pa8\r\x88\x82\x89\x01a6AV[\x91PP\x92\x95P\x92\x95\x90\x93PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a8SW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a8.V[P\x94\x95\x94PPPPPV[`@\x81R`\0\x83Q`@\x80\x84\x01Ra8y`\x80\x84\x01\x82a8\x1AV[\x90P` \x85\x01Q`?\x19\x84\x83\x03\x01``\x85\x01Ra8\x96\x82\x82a8\x1AV[\x92PPP\x82` \x83\x01R\x93\x92PPPV[`\0`\x01`\x01`@\x1B\x03\x83\x11\x15a8\xC0Wa8\xC0a2GV[a8\xD3`\x1F\x84\x01`\x1F\x19\x16` \x01a2\xCAV[\x90P\x82\x81R\x83\x83\x83\x01\x11\x15a8\xE7W`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a9\x11W`\0\x80\xFD[\x825a9\x1C\x81a4\x0BV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a98W`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a9LW`\0\x80\xFD[a9Ta2\xA8V[\x825\x82\x81\x11\x15a9cW`\0\x80\xFD[\x83\x01\x91P`\x1F\x82\x01\x87\x13a9vW`\0\x80\xFD[a9\x85\x87\x835` \x85\x01a8\xA7V[\x81R` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x93PPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a9\xBAW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a9\xD0W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a9\xE1W`\0\x80\xFD[a9\xF0\x84\x825` \x84\x01a8\xA7V[\x94\x93PPPPV[`\0\x80` \x83\x85\x03\x12\x15a:\x0BW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a:\"W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a:6W`\0\x80\xFD[\x815\x81\x81\x11\x15a:EW`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a:ZW`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x82a:\x9FWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`\0` \x82\x84\x03\x12\x15a:\xB6W`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a:\xCFW`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a+\x9FW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a:\xF8W`\0\x80\xFD[\x81Q`\xFF\x81\x16\x81\x14a+\x9FW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a;2Wa;2a;\tV[P\x01\x90V[`\0`\0\x19\x82\x14\x15a;KWa;Ka;\tV[P`\x01\x01\x90V[`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\t\xDBW`\0\x80\xFD[`\0`@\x82\x84\x03\x12\x15a;yW`\0\x80\xFD[a;\x81a2]V[\x82Qa;\x8C\x81a4\x0BV[\x81R` \x83\x01Qa;\x9C\x81a;RV[` \x82\x01R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a;\xBAW`\0\x80\xFD[\x81Qa+\x9F\x81a4\x0BV[`\0\x82\x82\x10\x15a;\xD7Wa;\xD7a;\tV[P\x03\x90V[`\0` \x82\x84\x03\x12\x15a;\xEEW`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x16\x81\x14a+\x9FW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a<\x19W`\0\x80\xFD[\x81Qa+\x9F\x81a;RV[`\0`\x01`\x01``\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15a)\x81a4\x0BV[`\x01`\x01`\xA0\x1B\x03\x16\x87R\x81\x83\x015a>A\x81a;RV[`\x01`\x01``\x1B\x03\x16\x87\x84\x01R`@\x96\x87\x01\x96\x91\x90\x91\x01\x90`\x01\x01a>\x16V[` \x80\x82R\x81\x81\x01\x83\x90R`\0\x90`@\x80\x84\x01`\x05\x86\x90\x1B\x85\x01\x82\x01\x87\x85[\x88\x81\x10\x15a?`W\x87\x83\x03`?\x19\x01\x84R\x8156\x8B\x90\x03`\x9E\x19\x01\x81\x12a>\xA6W`\0\x80\xFD[\x8A\x01`\xA0\x8156\x83\x90\x03`\x1E\x19\x01\x81\x12a>\xBFW`\0\x80\xFD[\x82\x01\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a>\xD7W`\0\x80\xFD[\x80`\x06\x1B6\x03\x84\x13\x15a>\xE9W`\0\x80\xFD[\x82\x87Ra>\xFB\x83\x88\x01\x82\x8C\x85\x01a>\x06V[\x92PPPa?\n\x88\x83\x01a=\xDEV[`\x01`\x01`\xA0\x1B\x03\x16\x88\x86\x01R\x81\x87\x015\x87\x86\x01R``a?,\x81\x84\x01a4\xB5V[c\xFF\xFF\xFF\xFF\x16\x90\x86\x01R`\x80a?C\x83\x82\x01a4\xB5V[c\xFF\xFF\xFF\xFF\x16\x95\x01\x94\x90\x94RP\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a>\x80V[P\x90\x98\x97PPPPPPPPV[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a?\x88Wa?\x88a;\tV[P\x02\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a?\xA5Wa?\xA5a;\tV[`\x01\x01\x93\x92PPPV\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGBLSSignatureChecker.checkSignatu\xA2dipfsX\"\x12 \x04\xD1K\x0CgI\x1Co\x81\xFCh`\x90\xC2\xB8\x01X~_w\x17v\x04\x07\xA2v\xDC\x8BQ~o\xC0dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106101375760003560e01c80638da5cb5b116100b8578063c4d66de81161007c578063c4d66de8146102f6578063df5cf72314610309578063e481af9d14610330578063f2fde38b14610338578063fc299dee1461034b578063fce36c7d1461035e57600080fd5b80638da5cb5b1461028f5780639926ee7d146102a0578063a364f4da146102b3578063a98fb355146102c6578063b98d0908146102d957600080fd5b806368304835116100ff57806368304835146101f25780636b3aa72e146102195780636d14a9871461023f5780636efb463614610266578063715018a61461028757600080fd5b8063171f1d5b1461013c57806333cfb7b71461016b5780633bc28c8c1461018b578063416c7e5e146101a05780635df45946146101b3575b600080fd5b61014f61014a3660046133ba565b610371565b6040805192151583529015156020830152015b60405180910390f35b61017e610179366004613420565b6104fb565b604051610162919061343d565b61019e610199366004613420565b6109ca565b005b61019e6101ae366004613498565b6109de565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610162565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b7f00000000000000000000000000000000000000000000000000000000000000006101da565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b61027961027436600461376b565b610b1a565b60405161016292919061385e565b61019e611a31565b6033546001600160a01b03166101da565b61019e6102ae3660046138fe565b611a45565b61019e6102c1366004613420565b611b11565b61019e6102d43660046139a8565b611bd8565b6097546102e69060ff1681565b6040519015158152602001610162565b61019e610304366004613420565b611c2c565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b61017e611d40565b61019e610346366004613420565b612109565b6065546101da906001600160a01b031681565b61019e61036c3660046139f8565b61217f565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001878760000151886020015188600001516000600281106103b9576103b9613a6c565b60200201518951600160200201518a602001516000600281106103de576103de613a6c565b60200201518b602001516001600281106103fa576103fa613a6c565b602090810291909101518c518d8301516040516104579a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c61047a9190613a82565b90506104ed61049361048c88846124aa565b8690612541565b61049b6125d5565b6104e36104d4856104ce604080518082018252600080825260209182015281518083019092526001825260029082015290565b906124aa565b6104dd8c612695565b90612541565b886201d4c0612725565b909890975095505050505050565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa158015610567573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058b9190613aa4565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa1580156105f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061a9190613abd565b90506001600160c01b03811615806106b457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106af9190613ae6565b60ff16155b156106d057505060408051600081526020810190915292915050565b60006106e4826001600160c01b0316612949565b90506000805b82518110156107ba577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f584838151811061073457610734613a6c565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610778573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079c9190613aa4565b6107a69083613b1f565b9150806107b281613b37565b9150506106ea565b506000816001600160401b038111156107d5576107d5613247565b6040519080825280602002602001820160405280156107fe578160200160208202803683370190505b5090506000805b84518110156109bd57600085828151811061082257610822613a6c565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610897573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108bb9190613aa4565b905060005b818110156109a7576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015610935573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109599190613b67565b6000015186868151811061096f5761096f613a6c565b6001600160a01b03909216602092830291909101909101528461099181613b37565b955050808061099f90613b37565b9150506108c0565b50505080806109b590613b37565b915050610805565b5090979650505050505050565b6109d2612a0b565b6109db81612a65565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a609190613ba8565b6001600160a01b0316336001600160a01b031614610b115760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a4015b60405180910390fd5b6109db81612ace565b6040805180820190915260608082526020820152600084610b915760405162461bcd60e51b81526020600482015260376024820152600080516020613fd083398151915260448201527f7265733a20656d7074792071756f72756d20696e7075740000000000000000006064820152608401610b08565b60408301515185148015610ba9575060a08301515185145b8015610bb9575060c08301515185145b8015610bc9575060e08301515185145b610c335760405162461bcd60e51b81526020600482015260416024820152600080516020613fd083398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610b08565b82515160208401515114610cab5760405162461bcd60e51b815260206004820152604460248201819052600080516020613fd0833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610b08565b4363ffffffff168463ffffffff1610610d1a5760405162461bcd60e51b815260206004820152603c6024820152600080516020613fd083398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610b08565b6040805180820182526000808252602080830191909152825180840190935260608084529083015290866001600160401b03811115610d5b57610d5b613247565b604051908082528060200260200182016040528015610d84578160200160208202803683370190505b506020820152866001600160401b03811115610da257610da2613247565b604051908082528060200260200182016040528015610dcb578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b03811115610dff57610dff613247565b604051908082528060200260200182016040528015610e28578160200160208202803683370190505b5081526020860151516001600160401b03811115610e4857610e48613247565b604051908082528060200260200182016040528015610e71578160200160208202803683370190505b5081602001819052506000610f438a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e9190613ae6565b612b15565b905060005b8760200151518110156111de57610f8d88602001518281518110610f6e57610f6e613a6c565b6020026020010151805160009081526020918201519091526040902090565b83602001518281518110610fa357610fa3613a6c565b60209081029190910101528015611063576020830151610fc4600183613bc5565b81518110610fd457610fd4613a6c565b602002602001015160001c83602001518281518110610ff557610ff5613a6c565b602002602001015160001c11611063576040805162461bcd60e51b8152602060048201526024810191909152600080516020613fd083398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610b08565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec6351846020015183815181106110a8576110a8613a6c565b60200260200101518b8b6000015185815181106110c7576110c7613a6c565b60200260200101516040518463ffffffff1660e01b81526004016111049392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015611121573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111459190613abd565b6001600160c01b03168360000151828151811061116457611164613a6c565b6020026020010181815250506111ca61048c61119e848660000151858151811061119057611190613a6c565b602002602001015116612ba8565b8a6020015184815181106111b4576111b4613a6c565b6020026020010151612bd390919063ffffffff16565b9450806111d681613b37565b915050610f48565b50506111e983612cb7565b60975490935060ff16600081611200576000611282565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561125e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112829190613aa4565b905060005b8a8110156119005782156113e2578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c428f8f868181106112de576112de613a6c565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa15801561131e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113429190613aa4565b61134c9190613b1f565b116113e25760405162461bcd60e51b81526020600482015260666024820152600080516020613fd083398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610b08565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8d8d8481811061142357611423613a6c565b9050013560f81c60f81b60f81c8c8c60a00151858151811061144757611447613a6c565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa1580156114a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c79190613bdc565b6001600160401b0319166114ea8a604001518381518110610f6e57610f6e613a6c565b67ffffffffffffffff1916146115865760405162461bcd60e51b81526020600482015260616024820152600080516020613fd083398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610b08565b6115b68960400151828151811061159f5761159f613a6c565b60200260200101518761254190919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568d8d848181106115f9576115f9613a6c565b9050013560f81c60f81b60f81c8c8c60c00151858151811061161d5761161d613a6c565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015611679573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169d9190613c07565b856020015182815181106116b3576116b3613a6c565b6001600160601b039092166020928302919091018201528501518051829081106116df576116df613a6c565b6020026020010151856000015182815181106116fd576116fd613a6c565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a60200151518110156118eb576117758660000151828151811061174757611747613a6c565b60200260200101518f8f8681811061176157611761613a6c565b600192013560f81c9290921c811614919050565b156118d9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8f8f868181106117bb576117bb613a6c565b9050013560f81c60f81b60f81c8e896020015185815181106117df576117df613a6c565b60200260200101518f60e0015188815181106117fd576117fd613a6c565b6020026020010151878151811061181657611816613a6c565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa15801561187a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189e9190613c07565b87518051859081106118b2576118b2613a6c565b602002602001018181516118c69190613c24565b6001600160601b03169052506001909101905b806118e381613b37565b915050611721565b505080806118f890613b37565b915050611287565b50505060008061191a8c868a606001518b60800151610371565b915091508161198b5760405162461bcd60e51b81526020600482015260436024820152600080516020613fd083398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610b08565b806119ec5760405162461bcd60e51b81526020600482015260396024820152600080516020613fd083398151915260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610b08565b50506000878260200151604051602001611a07929190613c4c565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b611a39612a0b565b611a436000612d52565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611a8d5760405162461bcd60e51b8152600401610b0890613c94565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d90611adb9085908590600401613d59565b600060405180830381600087803b158015611af557600080fd5b505af1158015611b09573d6000803e3d6000fd5b505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b595760405162461bcd60e51b8152600401610b0890613c94565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b158015611bbd57600080fd5b505af1158015611bd1573d6000803e3d6000fd5b5050505050565b611be0612a0b565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb35590611ba3908490600401613da4565b600054610100900460ff1615808015611c4c5750600054600160ff909116105b80611c665750303b158015611c66575060005460ff166001145b611cc95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b08565b6000805460ff191660011790558015611cec576000805461ff0019166101001790555b611cf68283612da4565b8015611d3c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611da2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc69190613ae6565b60ff16905080611de457505060408051600081526020810190915290565b6000805b82811015611e9957604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015611e57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7b9190613aa4565b611e859083613b1f565b915080611e9181613b37565b915050611de8565b506000816001600160401b03811115611eb457611eb4613247565b604051908082528060200260200182016040528015611edd578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f669190613ae6565b60ff168110156120ff57604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015611fda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ffe9190613aa4565b905060005b818110156120ea576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015612078573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209c9190613b67565b600001518585815181106120b2576120b2613a6c565b6001600160a01b0390921660209283029190910190910152836120d481613b37565b94505080806120e290613b37565b915050612003565b505080806120f790613b37565b915050611ee4565b5090949350505050565b612111612a0b565b6001600160a01b0381166121765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b08565b6109db81612d52565b612187612e21565b60005b8181101561245b578282828181106121a4576121a4613a6c565b90506020028101906121b69190613dbe565b6121c7906040810190602001613420565b6001600160a01b03166323b872dd33308686868181106121e9576121e9613a6c565b90506020028101906121fb9190613dbe565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152013560448201526064016020604051808303816000875af1158015612252573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122769190613de9565b50600083838381811061228b5761228b613a6c565b905060200281019061229d9190613dbe565b6122ae906040810190602001613420565b604051636eb1769f60e11b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063dd62ed3e90604401602060405180830381865afa15801561231c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123409190613aa4565b905083838381811061235457612354613a6c565b90506020028101906123669190613dbe565b612377906040810190602001613420565b6001600160a01b031663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000838787878181106123b9576123b9613a6c565b90506020028101906123cb9190613dbe565b604001356123d99190613b1f565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612424573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124489190613de9565b50508061245490613b37565b905061218a565b5060405163fce36c7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fce36c7d90611adb9085908590600401613e61565b60408051808201909152600080825260208201526124c661316d565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156124f9576124fb565bfe5b50806125395760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610b08565b505092915050565b604080518082019091526000808252602082015261255d61318b565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156124f95750806125395760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610b08565b6125dd6131a9565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820190915260008082526020820152600080806126c5600080516020613fb083398151915286613a82565b90505b6126d181612eb6565b9093509150600080516020613fb083398151915282830983141561270b576040805180820190915290815260208101919091529392505050565b600080516020613fb08339815191526001820890506126c8565b6040805180820182528681526020808201869052825180840190935286835282018490526000918291906127576131ce565b60005b600281101561291c576000612770826006613f6e565b905084826002811061278457612784613a6c565b60200201515183612796836000613b1f565b600c81106127a6576127a6613a6c565b60200201528482600281106127bd576127bd613a6c565b602002015160200151838260016127d49190613b1f565b600c81106127e4576127e4613a6c565b60200201528382600281106127fb576127fb613a6c565b602002015151518361280e836002613b1f565b600c811061281e5761281e613a6c565b602002015283826002811061283557612835613a6c565b602002015151600160200201518361284e836003613b1f565b600c811061285e5761285e613a6c565b602002015283826002811061287557612875613a6c565b60200201516020015160006002811061289057612890613a6c565b6020020151836128a1836004613b1f565b600c81106128b1576128b1613a6c565b60200201528382600281106128c8576128c8613a6c565b6020020151602001516001600281106128e3576128e3613a6c565b6020020151836128f4836005613b1f565b600c811061290457612904613a6c565b6020020152508061291481613b37565b91505061275a565b506129256131ed565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b606060008061295784612ba8565b61ffff166001600160401b0381111561297257612972613247565b6040519080825280601f01601f19166020018201604052801561299c576020820181803683370190505b5090506000805b8251821080156129b4575061010081105b156120ff576001811b9350858416156129fb578060f81b8383815181106129dd576129dd613a6c565b60200101906001600160f81b031916908160001a9053508160010191505b612a0481613b37565b90506129a3565b6033546001600160a01b03163314611a435760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b08565b606554604080516001600160a01b03928316815291831660208301527fe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6097805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b600080612b2184612f38565b9050808360ff166001901b11612b9f5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610b08565b90505b92915050565b6000805b8215612ba257612bbd600184613bc5565b9092169180612bcb81613f8d565b915050612bac565b60408051808201909152600080825260208201526102008261ffff1610612c2f5760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610b08565b8161ffff1660011415612c43575081612ba2565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff1610612cac57600161ffff871660ff83161c81161415612c8f57612c8c8484612541565b93505b612c998384612541565b92506201fffe600192831b169101612c5f565b509195945050505050565b60408051808201909152600080825260208201528151158015612cdc57506020820151155b15612cfa575050604080518082019091526000808252602082015290565b604051806040016040528083600001518152602001600080516020613fb08339815191528460200151612d2d9190613a82565b612d4590600080516020613fb0833981519152613bc5565b905292915050565b919050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16612e0f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610b08565b612e1882612d52565b611d3c81612a65565b6065546001600160a01b03163314611a435760405162461bcd60e51b815260206004820152604c60248201527f536572766963654d616e61676572426173652e6f6e6c7952657761726473496e60448201527f69746961746f723a2063616c6c6572206973206e6f742074686520726577617260648201526b32399034b734ba34b0ba37b960a11b608482015260a401610b08565b60008080600080516020613fb08339815191526003600080516020613fb083398151915286600080516020613fb0833981519152888909090890506000612f2c827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020613fb08339815191526130c5565b91959194509092505050565b600061010082511115612fc15760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610b08565b8151612fcf57506000919050565b60008083600081518110612fe557612fe5613a6c565b0160200151600160f89190911c81901b92505b84518110156130bc5784818151811061301357613013613a6c565b0160200151600160f89190911c1b91508282116130a85760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610b08565b918117916130b581613b37565b9050612ff8565b50909392505050565b6000806130d06131ed565b6130d861320b565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280156124f95750826131625760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610b08565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806131bc613229565b81526020016131c9613229565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561327f5761327f613247565b60405290565b60405161010081016001600160401b038111828210171561327f5761327f613247565b604051606081016001600160401b038111828210171561327f5761327f613247565b604051601f8201601f191681016001600160401b03811182821017156132f2576132f2613247565b604052919050565b60006040828403121561330c57600080fd5b61331461325d565b9050813581526020820135602082015292915050565b600082601f83011261333b57600080fd5b61334361325d565b80604084018581111561335557600080fd5b845b8181101561336f578035845260209384019301613357565b509095945050505050565b60006080828403121561338c57600080fd5b61339461325d565b90506133a0838361332a565b81526133af836040840161332a565b602082015292915050565b60008060008061012085870312156133d157600080fd5b843593506133e286602087016132fa565b92506133f1866060870161337a565b91506134008660e087016132fa565b905092959194509250565b6001600160a01b03811681146109db57600080fd5b60006020828403121561343257600080fd5b8135612b9f8161340b565b6020808252825182820181905260009190848201906040850190845b8181101561347e5783516001600160a01b031683529284019291840191600101613459565b50909695505050505050565b80151581146109db57600080fd5b6000602082840312156134aa57600080fd5b8135612b9f8161348a565b803563ffffffff81168114612d4d57600080fd5b60006001600160401b038211156134e2576134e2613247565b5060051b60200190565b600082601f8301126134fd57600080fd5b8135602061351261350d836134c9565b6132ca565b82815260059290921b8401810191818101908684111561353157600080fd5b8286015b8481101561355357613546816134b5565b8352918301918301613535565b509695505050505050565b600082601f83011261356f57600080fd5b8135602061357f61350d836134c9565b82815260069290921b8401810191818101908684111561359e57600080fd5b8286015b84811015613553576135b488826132fa565b8352918301916040016135a2565b600082601f8301126135d357600080fd5b813560206135e361350d836134c9565b82815260059290921b8401810191818101908684111561360257600080fd5b8286015b848110156135535780356001600160401b038111156136255760008081fd5b6136338986838b01016134ec565b845250918301918301613606565b6000610180828403121561365457600080fd5b61365c613285565b905081356001600160401b038082111561367557600080fd5b613681858386016134ec565b8352602084013591508082111561369757600080fd5b6136a38583860161355e565b602084015260408401359150808211156136bc57600080fd5b6136c88583860161355e565b60408401526136da856060860161337a565b60608401526136ec8560e086016132fa565b608084015261012084013591508082111561370657600080fd5b613712858386016134ec565b60a084015261014084013591508082111561372c57600080fd5b613738858386016134ec565b60c084015261016084013591508082111561375257600080fd5b5061375f848285016135c2565b60e08301525092915050565b60008060008060006080868803121561378357600080fd5b8535945060208601356001600160401b03808211156137a157600080fd5b818801915088601f8301126137b557600080fd5b8135818111156137c457600080fd5b8960208285010111156137d657600080fd5b60208301965094506137ea604089016134b5565b9350606088013591508082111561380057600080fd5b5061380d88828901613641565b9150509295509295909350565b600081518084526020808501945080840160005b838110156138535781516001600160601b03168752958201959082019060010161382e565b509495945050505050565b6040815260008351604080840152613879608084018261381a565b90506020850151603f19848303016060850152613896828261381a565b925050508260208301529392505050565b60006001600160401b038311156138c0576138c0613247565b6138d3601f8401601f19166020016132ca565b90508281528383830111156138e757600080fd5b828260208301376000602084830101529392505050565b6000806040838503121561391157600080fd5b823561391c8161340b565b915060208301356001600160401b038082111561393857600080fd5b908401906060828703121561394c57600080fd5b6139546132a8565b82358281111561396357600080fd5b83019150601f8201871361397657600080fd5b613985878335602085016138a7565b815260208301356020820152604083013560408201528093505050509250929050565b6000602082840312156139ba57600080fd5b81356001600160401b038111156139d057600080fd5b8201601f810184136139e157600080fd5b6139f0848235602084016138a7565b949350505050565b60008060208385031215613a0b57600080fd5b82356001600160401b0380821115613a2257600080fd5b818501915085601f830112613a3657600080fd5b813581811115613a4557600080fd5b8660208260051b8501011115613a5a57600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052603260045260246000fd5b600082613a9f57634e487b7160e01b600052601260045260246000fd5b500690565b600060208284031215613ab657600080fd5b5051919050565b600060208284031215613acf57600080fd5b81516001600160c01b0381168114612b9f57600080fd5b600060208284031215613af857600080fd5b815160ff81168114612b9f57600080fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115613b3257613b32613b09565b500190565b6000600019821415613b4b57613b4b613b09565b5060010190565b6001600160601b03811681146109db57600080fd5b600060408284031215613b7957600080fd5b613b8161325d565b8251613b8c8161340b565b81526020830151613b9c81613b52565b60208201529392505050565b600060208284031215613bba57600080fd5b8151612b9f8161340b565b600082821015613bd757613bd7613b09565b500390565b600060208284031215613bee57600080fd5b815167ffffffffffffffff1981168114612b9f57600080fd5b600060208284031215613c1957600080fd5b8151612b9f81613b52565b60006001600160601b0383811690831681811015613c4457613c44613b09565b039392505050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b83811015613c8757815185529382019390820190600101613c6b565b5092979650505050505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b81811015613d3257602081850181015186830182015201613d16565b81811115613d44576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b0383168152604060208201526000825160606040840152613d8360a0840182613d0c565b90506020840151606084015260408401516080840152809150509392505050565b602081526000613db76020830184613d0c565b9392505050565b60008235609e19833603018112613dd457600080fd5b9190910192915050565b8035612d4d8161340b565b600060208284031215613dfb57600080fd5b8151612b9f8161348a565b8183526000602080850194508260005b85811015613853578135613e298161340b565b6001600160a01b0316875281830135613e4181613b52565b6001600160601b0316878401526040968701969190910190600101613e16565b60208082528181018390526000906040808401600586901b8501820187855b88811015613f6057878303603f190184528135368b9003609e19018112613ea657600080fd5b8a0160a0813536839003601e19018112613ebf57600080fd5b820180356001600160401b03811115613ed757600080fd5b8060061b3603841315613ee957600080fd5b828752613efb838801828c8501613e06565b92505050613f0a888301613dde565b6001600160a01b03168886015281870135878601526060613f2c8184016134b5565b63ffffffff16908601526080613f438382016134b5565b63ffffffff16950194909452509285019290850190600101613e80565b509098975050505050505050565b6000816000190483118215151615613f8857613f88613b09565b500290565b600061ffff80831681811415613fa557613fa5613b09565b600101939250505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47424c535369676e6174757265436865636b65722e636865636b5369676e617475a264697066735822122004d14b0c67491c6f81fc686090c2b801587e5f7717760407a276dc8b517e6fc064736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x017W`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0\xB8W\x80c\xC4\xD6m\xE8\x11a\0|W\x80c\xC4\xD6m\xE8\x14a\x02\xF6W\x80c\xDF\\\xF7#\x14a\x03\tW\x80c\xE4\x81\xAF\x9D\x14a\x030W\x80c\xF2\xFD\xE3\x8B\x14a\x038W\x80c\xFC)\x9D\xEE\x14a\x03KW\x80c\xFC\xE3l}\x14a\x03^W`\0\x80\xFD[\x80c\x8D\xA5\xCB[\x14a\x02\x8FW\x80c\x99&\xEE}\x14a\x02\xA0W\x80c\xA3d\xF4\xDA\x14a\x02\xB3W\x80c\xA9\x8F\xB3U\x14a\x02\xC6W\x80c\xB9\x8D\t\x08\x14a\x02\xD9W`\0\x80\xFD[\x80ch0H5\x11a\0\xFFW\x80ch0H5\x14a\x01\xF2W\x80ck:\xA7.\x14a\x02\x19W\x80cm\x14\xA9\x87\x14a\x02?W\x80cn\xFBF6\x14a\x02fW\x80cqP\x18\xA6\x14a\x02\x87W`\0\x80\xFD[\x80c\x17\x1F\x1D[\x14a\x01=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x8B\x91\x90a:\xA4V[`@Qc\x87\x1E\xF0I`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R\x90\x91P`\0\x90`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x87\x1E\xF0I\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\xF6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\x1A\x91\x90a:\xBDV[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15\x80a\x06\xB4WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x9A\xA1e=`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\x8BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xAF\x91\x90a:\xE6V[`\xFF\x16\x15[\x15a\x06\xD0WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x92\x91PPV[`\0a\x06\xE4\x82`\x01`\x01`\xC0\x1B\x03\x16a)IV[\x90P`\0\x80[\x82Q\x81\x10\x15a\x07\xBAW\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c<\xA5\xA5\xF5\x84\x83\x81Q\x81\x10a\x074Wa\x074a:lV[\x01` \x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01R`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07xW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\x9C\x91\x90a:\xA4V[a\x07\xA6\x90\x83a;\x1FV[\x91P\x80a\x07\xB2\x81a;7V[\x91PPa\x06\xEAV[P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\xD5Wa\x07\xD5a2GV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\xFEW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80[\x84Q\x81\x10\x15a\t\xBDW`\0\x85\x82\x81Q\x81\x10a\x08\"Wa\x08\"a:lV[\x01` \x01Q`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01\x81\x90R\x91P`\0\x90`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c<\xA5\xA5\xF5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\x97W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xBB\x91\x90a:\xA4V[\x90P`\0[\x81\x81\x10\x15a\t\xA7W`@QcV\xE4\x02m`\xE1\x1B\x81R`\xFF\x84\x16`\x04\x82\x01R`$\x81\x01\x82\x90R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90c\xAD\xC8\x04\xDA\x90`D\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\tY\x91\x90a;gV[`\0\x01Q\x86\x86\x81Q\x81\x10a\toWa\toa:lV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x84a\t\x91\x81a;7V[\x95PP\x80\x80a\t\x9F\x90a;7V[\x91PPa\x08\xC0V[PPP\x80\x80a\t\xB5\x90a;7V[\x91PPa\x08\x05V[P\x90\x97\x96PPPPPPPV[a\t\xD2a*\x0BV[a\t\xDB\x81a*eV[PV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n`\x91\x90a;\xA8V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0B\x11W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R\x7FBLSSignatureChecker.onlyCoordina`D\x82\x01R\x7FtorOwner: caller is not the owne`d\x82\x01R\x7Fr of the registryCoordinator\0\0\0\0`\x84\x82\x01R`\xA4\x01[`@Q\x80\x91\x03\x90\xFD[a\t\xDB\x81a*\xCEV[`@\x80Q\x80\x82\x01\x90\x91R``\x80\x82R` \x82\x01R`\0\x84a\x0B\x91W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: empty quorum input\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x0B\x08V[`@\x83\x01QQ\x85\x14\x80\x15a\x0B\xA9WP`\xA0\x83\x01QQ\x85\x14[\x80\x15a\x0B\xB9WP`\xC0\x83\x01QQ\x85\x14[\x80\x15a\x0B\xC9WP`\xE0\x83\x01QQ\x85\x14[a\x0C3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: input quorum length mismatc`d\x82\x01R`\r`\xFB\x1B`\x84\x82\x01R`\xA4\x01a\x0B\x08V[\x82QQ` \x84\x01QQ\x14a\x0C\xABW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R`\0\x80Q` a?\xD0\x839\x81Q\x91R\x90\x82\x01R\x7Fres: input nonsigner length mism`d\x82\x01Rc\x0C.\x8Cm`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x0B\x08V[Cc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10a\r\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: invalid reference block\0\0\0\0`d\x82\x01R`\x84\x01a\x0B\x08V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x80\x83\x01\x91\x90\x91R\x82Q\x80\x84\x01\x90\x93R``\x80\x84R\x90\x83\x01R\x90\x86`\x01`\x01`@\x1B\x03\x81\x11\x15a\r[Wa\r[a2GV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\r\x84W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P` \x82\x01R\x86`\x01`\x01`@\x1B\x03\x81\x11\x15a\r\xA2Wa\r\xA2a2GV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\r\xCBW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R`@\x80Q\x80\x82\x01\x90\x91R``\x80\x82R` \x82\x01R\x85` \x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a\r\xFFWa\r\xFFa2GV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0E(W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x86\x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0EHWa\x0EHa2GV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0EqW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81` \x01\x81\x90RP`\0a\x0FC\x8A\x8A\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`@\x80Qc\x9A\xA1e=`\xE0\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x93Pc\x9A\xA1e=\x92P`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x0F\x1AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F>\x91\x90a:\xE6V[a+\x15V[\x90P`\0[\x87` \x01QQ\x81\x10\x15a\x11\xDEWa\x0F\x8D\x88` \x01Q\x82\x81Q\x81\x10a\x0FnWa\x0Fna:lV[` \x02` \x01\x01Q\x80Q`\0\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x83` \x01Q\x82\x81Q\x81\x10a\x0F\xA3Wa\x0F\xA3a:lV[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80\x15a\x10cW` \x83\x01Qa\x0F\xC4`\x01\x83a;\xC5V[\x81Q\x81\x10a\x0F\xD4Wa\x0F\xD4a:lV[` \x02` \x01\x01Q`\0\x1C\x83` \x01Q\x82\x81Q\x81\x10a\x0F\xF5Wa\x0F\xF5a:lV[` \x02` \x01\x01Q`\0\x1C\x11a\x10cW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: nonSignerPubkeys not sorted`d\x82\x01R`\x84\x01a\x0B\x08V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x84` \x01Q\x83\x81Q\x81\x10a\x10\xA8Wa\x10\xA8a:lV[` \x02` \x01\x01Q\x8B\x8B`\0\x01Q\x85\x81Q\x81\x10a\x10\xC7Wa\x10\xC7a:lV[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x11\x04\x93\x92\x91\x90\x92\x83Rc\xFF\xFF\xFF\xFF\x91\x82\x16` \x84\x01R\x16`@\x82\x01R``\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11!W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11E\x91\x90a:\xBDV[`\x01`\x01`\xC0\x1B\x03\x16\x83`\0\x01Q\x82\x81Q\x81\x10a\x11dWa\x11da:lV[` \x02` \x01\x01\x81\x81RPPa\x11\xCAa\x04\x8Ca\x11\x9E\x84\x86`\0\x01Q\x85\x81Q\x81\x10a\x11\x90Wa\x11\x90a:lV[` \x02` \x01\x01Q\x16a+\xA8V[\x8A` \x01Q\x84\x81Q\x81\x10a\x11\xB4Wa\x11\xB4a:lV[` \x02` \x01\x01Qa+\xD3\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x94P\x80a\x11\xD6\x81a;7V[\x91PPa\x0FHV[PPa\x11\xE9\x83a,\xB7V[`\x97T\x90\x93P`\xFF\x16`\0\x81a\x12\0W`\0a\x12\x82V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xC4H\xFE\xB8`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12^W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12\x82\x91\x90a:\xA4V[\x90P`\0[\x8A\x81\x10\x15a\x19\0W\x82\x15a\x13\xE2W\x89c\xFF\xFF\xFF\xFF\x16\x82\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c$\x9A\x0CB\x8F\x8F\x86\x81\x81\x10a\x12\xDEWa\x12\xDEa:lV[`@Q`\xE0\x85\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R\x92\x015`\xF8\x1C`\x04\x83\x01RP`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x13\x1EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13B\x91\x90a:\xA4V[a\x13L\x91\x90a;\x1FV[\x11a\x13\xE2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: StakeRegistry updates must `d\x82\x01R\x7Fbe within withdrawalDelayBlocks `\x84\x82\x01Rewindow`\xD0\x1B`\xA4\x82\x01R`\xC4\x01a\x0B\x08V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16ch\xBC\xCA\xAC\x8D\x8D\x84\x81\x81\x10a\x14#Wa\x14#a:lV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xA0\x01Q\x85\x81Q\x81\x10a\x14GWa\x14Ga:lV[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81R`\xFF\x90\x93\x16`\x04\x84\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x84\x01R\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\xA3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x14\xC7\x91\x90a;\xDCV[`\x01`\x01`@\x1B\x03\x19\x16a\x14\xEA\x8A`@\x01Q\x83\x81Q\x81\x10a\x0FnWa\x0Fna:lV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x14a\x15\x86W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`a`$\x82\x01R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: quorumApk hash in storage d`d\x82\x01R\x7Foes not match provided quorum ap`\x84\x82\x01R`k`\xF8\x1B`\xA4\x82\x01R`\xC4\x01a\x0B\x08V[a\x15\xB6\x89`@\x01Q\x82\x81Q\x81\x10a\x15\x9FWa\x15\x9Fa:lV[` \x02` \x01\x01Q\x87a%A\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x95P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xC8)LV\x8D\x8D\x84\x81\x81\x10a\x15\xF9Wa\x15\xF9a:lV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xC0\x01Q\x85\x81Q\x81\x10a\x16\x1DWa\x16\x1Da:lV[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81R`\xFF\x90\x93\x16`\x04\x84\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x84\x01R\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16yW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\x9D\x91\x90a<\x07V[\x85` \x01Q\x82\x81Q\x81\x10a\x16\xB3Wa\x16\xB3a:lV[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x82\x01R\x85\x01Q\x80Q\x82\x90\x81\x10a\x16\xDFWa\x16\xDFa:lV[` \x02` \x01\x01Q\x85`\0\x01Q\x82\x81Q\x81\x10a\x16\xFDWa\x16\xFDa:lV[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPP`\0\x80[\x8A` \x01QQ\x81\x10\x15a\x18\xEBWa\x17u\x86`\0\x01Q\x82\x81Q\x81\x10a\x17GWa\x17Ga:lV[` \x02` \x01\x01Q\x8F\x8F\x86\x81\x81\x10a\x17aWa\x17aa:lV[`\x01\x92\x015`\xF8\x1C\x92\x90\x92\x1C\x81\x16\x14\x91\x90PV[\x15a\x18\xD9W\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xF2\xBE\x94\xAE\x8F\x8F\x86\x81\x81\x10a\x17\xBBWa\x17\xBBa:lV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8E\x89` \x01Q\x85\x81Q\x81\x10a\x17\xDFWa\x17\xDFa:lV[` \x02` \x01\x01Q\x8F`\xE0\x01Q\x88\x81Q\x81\x10a\x17\xFDWa\x17\xFDa:lV[` \x02` \x01\x01Q\x87\x81Q\x81\x10a\x18\x16Wa\x18\x16a:lV[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x87\x90\x1B\x16\x81R`\xFF\x90\x94\x16`\x04\x85\x01Rc\xFF\xFF\xFF\xFF\x92\x83\x16`$\x85\x01R`D\x84\x01\x91\x90\x91R\x16`d\x82\x01R`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x18zW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x18\x9E\x91\x90a<\x07V[\x87Q\x80Q\x85\x90\x81\x10a\x18\xB2Wa\x18\xB2a:lV[` \x02` \x01\x01\x81\x81Qa\x18\xC6\x91\x90a<$V[`\x01`\x01``\x1B\x03\x16\x90RP`\x01\x90\x91\x01\x90[\x80a\x18\xE3\x81a;7V[\x91PPa\x17!V[PP\x80\x80a\x18\xF8\x90a;7V[\x91PPa\x12\x87V[PPP`\0\x80a\x19\x1A\x8C\x86\x8A``\x01Q\x8B`\x80\x01Qa\x03qV[\x91P\x91P\x81a\x19\x8BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: pairing precompile call fai`d\x82\x01Rb\x1B\x19Y`\xEA\x1B`\x84\x82\x01R`\xA4\x01a\x0B\x08V[\x80a\x19\xECW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`9`$\x82\x01R`\0\x80Q` a?\xD0\x839\x81Q\x91R`D\x82\x01R\x7Fres: signature is invalid\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x0B\x08V[PP`\0\x87\x82` \x01Q`@Q` \x01a\x1A\x07\x92\x91\x90a=`\0\xFD[PPPPPPV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x1BYW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x0B\x08\x90a<\x94V[`@QcQ\xB2zm`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xA3d\xF4\xDA\x90`$\x01[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1B\xBDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1B\xD1W=`\0\x80>=`\0\xFD[PPPPPV[a\x1B\xE0a*\x0BV[`@Qc\xA9\x8F\xB3U`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xA9\x8F\xB3U\x90a\x1B\xA3\x90\x84\x90`\x04\x01a=\xA4V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x1CLWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x1CfWP0;\x15\x80\x15a\x1CfWP`\0T`\xFF\x16`\x01\x14[a\x1C\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01a\x0B\x08V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x1C\xECW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x1C\xF6\x82\x83a-\xA4V[\x80\x15a\x1D=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1D\xC6\x91\x90a:\xE6V[`\xFF\x16\x90P\x80a\x1D\xE4WPP`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x90V[`\0\x80[\x82\x81\x10\x15a\x1E\x99W`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xFF\x82\x16`\x04\x82\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90c<\xA5\xA5\xF5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1EWW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1E{\x91\x90a:\xA4V[a\x1E\x85\x90\x83a;\x1FV[\x91P\x80a\x1E\x91\x81a;7V[\x91PPa\x1D\xE8V[P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\xB4Wa\x1E\xB4a2GV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1E\xDDW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x80[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x9A\xA1e=`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1FBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Ff\x91\x90a:\xE6V[`\xFF\x16\x81\x10\x15a \xFFW`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xFF\x82\x16`\x04\x82\x01R`\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90c<\xA5\xA5\xF5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1F\xDAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F\xFE\x91\x90a:\xA4V[\x90P`\0[\x81\x81\x10\x15a \xEAW`@QcV\xE4\x02m`\xE1\x1B\x81R`\xFF\x84\x16`\x04\x82\x01R`$\x81\x01\x82\x90R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90c\xAD\xC8\x04\xDA\x90`D\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a xW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a \x9C\x91\x90a;gV[`\0\x01Q\x85\x85\x81Q\x81\x10a \xB2Wa \xB2a:lV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x83a \xD4\x81a;7V[\x94PP\x80\x80a \xE2\x90a;7V[\x91PPa \x03V[PP\x80\x80a \xF7\x90a;7V[\x91PPa\x1E\xE4V[P\x90\x94\x93PPPPV[a!\x11a*\x0BV[`\x01`\x01`\xA0\x1B\x03\x81\x16a!vW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x0B\x08V[a\t\xDB\x81a-RV[a!\x87a.!V[`\0[\x81\x81\x10\x15a$[W\x82\x82\x82\x81\x81\x10a!\xA4Wa!\xA4a:lV[\x90P` \x02\x81\x01\x90a!\xB6\x91\x90a=\xBEV[a!\xC7\x90`@\x81\x01\x90` \x01a4 V[`\x01`\x01`\xA0\x1B\x03\x16c#\xB8r\xDD30\x86\x86\x86\x81\x81\x10a!\xE9Wa!\xE9a:lV[\x90P` \x02\x81\x01\x90a!\xFB\x91\x90a=\xBEV[`@\x80Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x87\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16`\x04\x82\x01R\x93\x90\x92\x16`$\x84\x01R\x015`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\"RW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\"v\x91\x90a=\xE9V[P`\0\x83\x83\x83\x81\x81\x10a\"\x8BWa\"\x8Ba:lV[\x90P` \x02\x81\x01\x90a\"\x9D\x91\x90a=\xBEV[a\"\xAE\x90`@\x81\x01\x90` \x01a4 V[`@Qcn\xB1v\x9F`\xE1\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16`$\x83\x01R\x91\x90\x91\x16\x90c\xDDb\xED>\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a#\x1CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a#@\x91\x90a:\xA4V[\x90P\x83\x83\x83\x81\x81\x10a#TWa#Ta:lV[\x90P` \x02\x81\x01\x90a#f\x91\x90a=\xBEV[a#w\x90`@\x81\x01\x90` \x01a4 V[`\x01`\x01`\xA0\x1B\x03\x16c\t^\xA7\xB3\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x87\x87\x87\x81\x81\x10a#\xB9Wa#\xB9a:lV[\x90P` \x02\x81\x01\x90a#\xCB\x91\x90a=\xBEV[`@\x015a#\xD9\x91\x90a;\x1FV[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x85\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16`\x04\x83\x01R`$\x82\x01R`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a$$W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a$H\x91\x90a=\xE9V[PP\x80a$T\x90a;7V[\x90Pa!\x8AV[P`@Qc\xFC\xE3l}`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xFC\xE3l}\x90a\x1A\xDB\x90\x85\x90\x85\x90`\x04\x01a>aV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra$\xC6a1mV[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R`\0\x90\x83``\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a$\xF9Wa$\xFBV[\xFE[P\x80a%9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCB[][\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x0B\x08V[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra%]a1\x8BV[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x80\x84\x01\x91\x90\x91R\x90\x84\x01Q``\x83\x01R`\0\x90\x83`\x80\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80\x15a$\xF9WP\x80a%9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCBXY\x19\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x01a\x0B\x08V[a%\xDDa1\xA9V[P`@\x80Q`\x80\x81\x01\x82R\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81\x83\x01\x90\x81R\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED``\x83\x01R\x81R\x81Q\x80\x83\x01\x90\x92R\x7F']\xC4\xA2\x88\xD1\xAF\xB3\xCB\xB1\xAC\t\x18u$\xC7\xDB69]\xF7\xBE;\x99\xE6s\xB1:\x07Ze\xEC\x82R\x7F\x1D\x9B\xEF\xCD\x05\xA52>m\xA4\xD45\xF3\xB6\x17\xCD\xB3\xAF\x83(\\-\xF7\x11\xEF9\xC0\x15q\x82\x7F\x9D` \x83\x81\x01\x91\x90\x91R\x81\x01\x91\x90\x91R\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0\x80\x80a&\xC5`\0\x80Q` a?\xB0\x839\x81Q\x91R\x86a:\x82V[\x90P[a&\xD1\x81a.\xB6V[\x90\x93P\x91P`\0\x80Q` a?\xB0\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a'\x0BW`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` a?\xB0\x839\x81Q\x91R`\x01\x82\x08\x90Pa&\xC8V[`@\x80Q\x80\x82\x01\x82R\x86\x81R` \x80\x82\x01\x86\x90R\x82Q\x80\x84\x01\x90\x93R\x86\x83R\x82\x01\x84\x90R`\0\x91\x82\x91\x90a'Wa1\xCEV[`\0[`\x02\x81\x10\x15a)\x1CW`\0a'p\x82`\x06a?nV[\x90P\x84\x82`\x02\x81\x10a'\x84Wa'\x84a:lV[` \x02\x01QQ\x83a'\x96\x83`\0a;\x1FV[`\x0C\x81\x10a'\xA6Wa'\xA6a:lV[` \x02\x01R\x84\x82`\x02\x81\x10a'\xBDWa'\xBDa:lV[` \x02\x01Q` \x01Q\x83\x82`\x01a'\xD4\x91\x90a;\x1FV[`\x0C\x81\x10a'\xE4Wa'\xE4a:lV[` \x02\x01R\x83\x82`\x02\x81\x10a'\xFBWa'\xFBa:lV[` \x02\x01QQQ\x83a(\x0E\x83`\x02a;\x1FV[`\x0C\x81\x10a(\x1EWa(\x1Ea:lV[` \x02\x01R\x83\x82`\x02\x81\x10a(5Wa(5a:lV[` \x02\x01QQ`\x01` \x02\x01Q\x83a(N\x83`\x03a;\x1FV[`\x0C\x81\x10a(^Wa(^a:lV[` \x02\x01R\x83\x82`\x02\x81\x10a(uWa(ua:lV[` \x02\x01Q` \x01Q`\0`\x02\x81\x10a(\x90Wa(\x90a:lV[` \x02\x01Q\x83a(\xA1\x83`\x04a;\x1FV[`\x0C\x81\x10a(\xB1Wa(\xB1a:lV[` \x02\x01R\x83\x82`\x02\x81\x10a(\xC8Wa(\xC8a:lV[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a(\xE3Wa(\xE3a:lV[` \x02\x01Q\x83a(\xF4\x83`\x05a;\x1FV[`\x0C\x81\x10a)\x04Wa)\x04a:lV[` \x02\x01RP\x80a)\x14\x81a;7V[\x91PPa'ZV[Pa)%a1\xEDV[`\0` \x82a\x01\x80\x85`\x08\x8C\xFA\x91Q\x91\x9C\x91\x15\x15\x9BP\x90\x99PPPPPPPPPPV[```\0\x80a)W\x84a+\xA8V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a)rWa)ra2GV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a)\x9CW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a)\xB4WPa\x01\0\x81\x10[\x15a \xFFW`\x01\x81\x1B\x93P\x85\x84\x16\x15a)\xFBW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a)\xDDWa)\xDDa:lV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a*\x04\x81a;7V[\x90Pa)\xA3V[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x1ACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x0B\x08V[`eT`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\xE1\x1C\xDD\xF1\x81jC1\x8C\xA1u\xBB\xC5,\xD0\x18T6\xE9\xCB\xEA\xD7\xC8:\xCCT\xA7>F\x17\x17\xE3\x91\x01`@Q\x80\x91\x03\x90\xA1`e\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x97\x80T`\xFF\x19\x16\x82\x15\x15\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F@\xE4\xED\x88\n)\xE0\xF6\xDD\xCE0tW\xFBu\xCD\xDFO\xEE\xF7\xD3\xEC\xB00\x1B\xFD\xF4\x97j\x0E-\xFC\x90` \x01`@Q\x80\x91\x03\x90\xA1PV[`\0\x80a+!\x84a/8V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a+\x9FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`?`$\x82\x01R\x7FBitmapUtils.orderedBytesArrayToB`D\x82\x01R\x7Fitmap: bitmap exceeds max value\0`d\x82\x01R`\x84\x01a\x0B\x08V[\x90P[\x92\x91PPV[`\0\x80[\x82\x15a+\xA2Wa+\xBD`\x01\x84a;\xC5V[\x90\x92\x16\x91\x80a+\xCB\x81a?\x8DV[\x91PPa+\xACV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x02\0\x82a\xFF\xFF\x16\x10a,/W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01Roscalar-too-large`\x80\x1B`D\x82\x01R`d\x01a\x0B\x08V[\x81a\xFF\xFF\x16`\x01\x14\x15a,CWP\x81a+\xA2V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01\x81\x90R\x84\x90`\x01\x90[\x81a\xFF\xFF\x16\x86a\xFF\xFF\x16\x10a,\xACW`\x01a\xFF\xFF\x87\x16`\xFF\x83\x16\x1C\x81\x16\x14\x15a,\x8FWa,\x8C\x84\x84a%AV[\x93P[a,\x99\x83\x84a%AV[\x92Pb\x01\xFF\xFE`\x01\x92\x83\x1B\x16\x91\x01a,_V[P\x91\x95\x94PPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a,\xDCWP` \x82\x01Q\x15[\x15a,\xFAWPP`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x90V[`@Q\x80`@\x01`@R\x80\x83`\0\x01Q\x81R` \x01`\0\x80Q` a?\xB0\x839\x81Q\x91R\x84` \x01Qa--\x91\x90a:\x82V[a-E\x90`\0\x80Q` a?\xB0\x839\x81Q\x91Ra;\xC5V[\x90R\x92\x91PPV[\x91\x90PV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[`\0Ta\x01\0\x90\x04`\xFF\x16a.\x0FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`+`$\x82\x01R\x7FInitializable: contract is not i`D\x82\x01Rjnitializing`\xA8\x1B`d\x82\x01R`\x84\x01a\x0B\x08V[a.\x18\x82a-RV[a\x1D<\x81a*eV[`eT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x1ACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`L`$\x82\x01R\x7FServiceManagerBase.onlyRewardsIn`D\x82\x01R\x7Fitiator: caller is not the rewar`d\x82\x01Rk29\x904\xB74\xBA4\xB0\xBA7\xB9`\xA1\x1B`\x84\x82\x01R`\xA4\x01a\x0B\x08V[`\0\x80\x80`\0\x80Q` a?\xB0\x839\x81Q\x91R`\x03`\0\x80Q` a?\xB0\x839\x81Q\x91R\x86`\0\x80Q` a?\xB0\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0a/,\x82\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R`\0\x80Q` a?\xB0\x839\x81Q\x91Ra0\xC5V[\x91\x95\x91\x94P\x90\x92PPPV[`\0a\x01\0\x82Q\x11\x15a/\xC1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FBitmapUtils.orderedBytesArrayToB\x90\x82\x01R\x7Fitmap: orderedBytesArray is too `d\x82\x01Rclong`\xE0\x1B`\x84\x82\x01R`\xA4\x01a\x0B\x08V[\x81Qa/\xCFWP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10a/\xE5Wa/\xE5a:lV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a0\xBCW\x84\x81\x81Q\x81\x10a0\x13Wa0\x13a:lV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a0\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FBitmapUtils.orderedBytesArrayToB`D\x82\x01R\x7Fitmap: orderedBytesArray is not `d\x82\x01Rf\x1B\xDC\x99\x19\\\x99Y`\xCA\x1B`\x84\x82\x01R`\xA4\x01a\x0B\x08V[\x91\x81\x17\x91a0\xB5\x81a;7V[\x90Pa/\xF8V[P\x90\x93\x92PPPV[`\0\x80a0\xD0a1\xEDV[a0\xD8a2\x0BV[` \x80\x82R\x81\x81\x01\x81\x90R`@\x82\x01\x81\x90R``\x82\x01\x88\x90R`\x80\x82\x01\x87\x90R`\xA0\x82\x01\x86\x90R\x82`\xC0\x83`\x05a\x07\xD0Z\x03\xFA\x92P\x82\x80\x15a$\xF9WP\x82a1bW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7FBN254.expMod: call failure\0\0\0\0\0\0`D\x82\x01R`d\x01a\x0B\x08V[PQ\x95\x94PPPPPV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\x80\x01`@R\x80`\x04\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80a1\xBCa2)V[\x81R` \x01a1\xC9a2)V[\x90R\x90V[`@Q\x80a\x01\x80\x01`@R\x80`\x0C\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80` \x01`@R\x80`\x01\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\xC0\x01`@R\x80`\x06\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2\x7FWa2\x7Fa2GV[`@R\x90V[`@Qa\x01\0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2\x7FWa2\x7Fa2GV[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2\x7FWa2\x7Fa2GV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2\xF2Wa2\xF2a2GV[`@R\x91\x90PV[`\0`@\x82\x84\x03\x12\x15a3\x0CW`\0\x80\xFD[a3\x14a2]V[\x90P\x815\x81R` \x82\x015` \x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a3;W`\0\x80\xFD[a3Ca2]V[\x80`@\x84\x01\x85\x81\x11\x15a3UW`\0\x80\xFD[\x84[\x81\x81\x10\x15a3oW\x805\x84R` \x93\x84\x01\x93\x01a3WV[P\x90\x95\x94PPPPPV[`\0`\x80\x82\x84\x03\x12\x15a3\x8CW`\0\x80\xFD[a3\x94a2]V[\x90Pa3\xA0\x83\x83a3*V[\x81Ra3\xAF\x83`@\x84\x01a3*V[` \x82\x01R\x92\x91PPV[`\0\x80`\0\x80a\x01 \x85\x87\x03\x12\x15a3\xD1W`\0\x80\xFD[\x845\x93Pa3\xE2\x86` \x87\x01a2\xFAV[\x92Pa3\xF1\x86``\x87\x01a3zV[\x91Pa4\0\x86`\xE0\x87\x01a2\xFAV[\x90P\x92\x95\x91\x94P\x92PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\xDBW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a42W`\0\x80\xFD[\x815a+\x9F\x81a4\x0BV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a4~W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a4YV[P\x90\x96\x95PPPPPPV[\x80\x15\x15\x81\x14a\t\xDBW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a4\xAAW`\0\x80\xFD[\x815a+\x9F\x81a4\x8AV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a-MW`\0\x80\xFD[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a4\xE2Wa4\xE2a2GV[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a4\xFDW`\0\x80\xFD[\x815` a5\x12a5\r\x83a4\xC9V[a2\xCAV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a51W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a5SWa5F\x81a4\xB5V[\x83R\x91\x83\x01\x91\x83\x01a55V[P\x96\x95PPPPPPV[`\0\x82`\x1F\x83\x01\x12a5oW`\0\x80\xFD[\x815` a5\x7Fa5\r\x83a4\xC9V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a5\x9EW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a5SWa5\xB4\x88\x82a2\xFAV[\x83R\x91\x83\x01\x91`@\x01a5\xA2V[`\0\x82`\x1F\x83\x01\x12a5\xD3W`\0\x80\xFD[\x815` a5\xE3a5\r\x83a4\xC9V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a6\x02W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a5SW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a6%W`\0\x80\x81\xFD[a63\x89\x86\x83\x8B\x01\x01a4\xECV[\x84RP\x91\x83\x01\x91\x83\x01a6\x06V[`\0a\x01\x80\x82\x84\x03\x12\x15a6TW`\0\x80\xFD[a6\\a2\x85V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a6uW`\0\x80\xFD[a6\x81\x85\x83\x86\x01a4\xECV[\x83R` \x84\x015\x91P\x80\x82\x11\x15a6\x97W`\0\x80\xFD[a6\xA3\x85\x83\x86\x01a5^V[` \x84\x01R`@\x84\x015\x91P\x80\x82\x11\x15a6\xBCW`\0\x80\xFD[a6\xC8\x85\x83\x86\x01a5^V[`@\x84\x01Ra6\xDA\x85``\x86\x01a3zV[``\x84\x01Ra6\xEC\x85`\xE0\x86\x01a2\xFAV[`\x80\x84\x01Ra\x01 \x84\x015\x91P\x80\x82\x11\x15a7\x06W`\0\x80\xFD[a7\x12\x85\x83\x86\x01a4\xECV[`\xA0\x84\x01Ra\x01@\x84\x015\x91P\x80\x82\x11\x15a7,W`\0\x80\xFD[a78\x85\x83\x86\x01a4\xECV[`\xC0\x84\x01Ra\x01`\x84\x015\x91P\x80\x82\x11\x15a7RW`\0\x80\xFD[Pa7_\x84\x82\x85\x01a5\xC2V[`\xE0\x83\x01RP\x92\x91PPV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a7\x83W`\0\x80\xFD[\x855\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a7\xA1W`\0\x80\xFD[\x81\x88\x01\x91P\x88`\x1F\x83\x01\x12a7\xB5W`\0\x80\xFD[\x815\x81\x81\x11\x15a7\xC4W`\0\x80\xFD[\x89` \x82\x85\x01\x01\x11\x15a7\xD6W`\0\x80\xFD[` \x83\x01\x96P\x94Pa7\xEA`@\x89\x01a4\xB5V[\x93P``\x88\x015\x91P\x80\x82\x11\x15a8\0W`\0\x80\xFD[Pa8\r\x88\x82\x89\x01a6AV[\x91PP\x92\x95P\x92\x95\x90\x93PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a8SW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a8.V[P\x94\x95\x94PPPPPV[`@\x81R`\0\x83Q`@\x80\x84\x01Ra8y`\x80\x84\x01\x82a8\x1AV[\x90P` \x85\x01Q`?\x19\x84\x83\x03\x01``\x85\x01Ra8\x96\x82\x82a8\x1AV[\x92PPP\x82` \x83\x01R\x93\x92PPPV[`\0`\x01`\x01`@\x1B\x03\x83\x11\x15a8\xC0Wa8\xC0a2GV[a8\xD3`\x1F\x84\x01`\x1F\x19\x16` \x01a2\xCAV[\x90P\x82\x81R\x83\x83\x83\x01\x11\x15a8\xE7W`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a9\x11W`\0\x80\xFD[\x825a9\x1C\x81a4\x0BV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a98W`\0\x80\xFD[\x90\x84\x01\x90``\x82\x87\x03\x12\x15a9LW`\0\x80\xFD[a9Ta2\xA8V[\x825\x82\x81\x11\x15a9cW`\0\x80\xFD[\x83\x01\x91P`\x1F\x82\x01\x87\x13a9vW`\0\x80\xFD[a9\x85\x87\x835` \x85\x01a8\xA7V[\x81R` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R\x80\x93PPPP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a9\xBAW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a9\xD0W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a9\xE1W`\0\x80\xFD[a9\xF0\x84\x825` \x84\x01a8\xA7V[\x94\x93PPPPV[`\0\x80` \x83\x85\x03\x12\x15a:\x0BW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a:\"W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a:6W`\0\x80\xFD[\x815\x81\x81\x11\x15a:EW`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a:ZW`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x82a:\x9FWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`\0` \x82\x84\x03\x12\x15a:\xB6W`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a:\xCFW`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a+\x9FW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a:\xF8W`\0\x80\xFD[\x81Q`\xFF\x81\x16\x81\x14a+\x9FW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a;2Wa;2a;\tV[P\x01\x90V[`\0`\0\x19\x82\x14\x15a;KWa;Ka;\tV[P`\x01\x01\x90V[`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\t\xDBW`\0\x80\xFD[`\0`@\x82\x84\x03\x12\x15a;yW`\0\x80\xFD[a;\x81a2]V[\x82Qa;\x8C\x81a4\x0BV[\x81R` \x83\x01Qa;\x9C\x81a;RV[` \x82\x01R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a;\xBAW`\0\x80\xFD[\x81Qa+\x9F\x81a4\x0BV[`\0\x82\x82\x10\x15a;\xD7Wa;\xD7a;\tV[P\x03\x90V[`\0` \x82\x84\x03\x12\x15a;\xEEW`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x16\x81\x14a+\x9FW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a<\x19W`\0\x80\xFD[\x81Qa+\x9F\x81a;RV[`\0`\x01`\x01``\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15a)\x81a4\x0BV[`\x01`\x01`\xA0\x1B\x03\x16\x87R\x81\x83\x015a>A\x81a;RV[`\x01`\x01``\x1B\x03\x16\x87\x84\x01R`@\x96\x87\x01\x96\x91\x90\x91\x01\x90`\x01\x01a>\x16V[` \x80\x82R\x81\x81\x01\x83\x90R`\0\x90`@\x80\x84\x01`\x05\x86\x90\x1B\x85\x01\x82\x01\x87\x85[\x88\x81\x10\x15a?`W\x87\x83\x03`?\x19\x01\x84R\x8156\x8B\x90\x03`\x9E\x19\x01\x81\x12a>\xA6W`\0\x80\xFD[\x8A\x01`\xA0\x8156\x83\x90\x03`\x1E\x19\x01\x81\x12a>\xBFW`\0\x80\xFD[\x82\x01\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a>\xD7W`\0\x80\xFD[\x80`\x06\x1B6\x03\x84\x13\x15a>\xE9W`\0\x80\xFD[\x82\x87Ra>\xFB\x83\x88\x01\x82\x8C\x85\x01a>\x06V[\x92PPPa?\n\x88\x83\x01a=\xDEV[`\x01`\x01`\xA0\x1B\x03\x16\x88\x86\x01R\x81\x87\x015\x87\x86\x01R``a?,\x81\x84\x01a4\xB5V[c\xFF\xFF\xFF\xFF\x16\x90\x86\x01R`\x80a?C\x83\x82\x01a4\xB5V[c\xFF\xFF\xFF\xFF\x16\x95\x01\x94\x90\x94RP\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a>\x80V[P\x90\x98\x97PPPPPPPPV[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a?\x88Wa?\x88a;\tV[P\x02\x90V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a?\xA5Wa?\xA5a;\tV[`\x01\x01\x93\x92PPPV\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGBLSSignatureChecker.checkSignatu\xA2dipfsX\"\x12 \x04\xD1K\x0CgI\x1Co\x81\xFCh`\x90\xC2\xB8\x01X~_w\x17v\x04\x07\xA2v\xDC\x8BQ~o\xC0dsolcC\0\x08\x0C\x003", + ); + /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`. + ```solidity + event Initialized(uint8 version); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Initialized { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "Initialized(uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, + 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, + 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { version: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.version, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Initialized { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Initialized> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Initialized) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. + ```solidity + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub previousOwner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, + 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, + 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + previousOwner: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.previousOwner.clone(), + self.newOwner.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.previousOwner, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `RewardsInitiatorUpdated(address,address)` and selector `0xe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3`. + ```solidity + event RewardsInitiatorUpdated(address prevRewardsInitiator, address newRewardsInitiator); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct RewardsInitiatorUpdated { + #[allow(missing_docs)] + pub prevRewardsInitiator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newRewardsInitiator: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for RewardsInitiatorUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "RewardsInitiatorUpdated(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 225u8, 28u8, 221u8, 241u8, 129u8, 106u8, 67u8, 49u8, 140u8, 161u8, 117u8, + 187u8, 197u8, 44u8, 208u8, 24u8, 84u8, 54u8, 233u8, 203u8, 234u8, 215u8, 200u8, + 58u8, 204u8, 84u8, 167u8, 62u8, 70u8, 23u8, 23u8, 227u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + prevRewardsInitiator: data.0, + newRewardsInitiator: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.prevRewardsInitiator, + ), + ::tokenize( + &self.newRewardsInitiator, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for RewardsInitiatorUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&RewardsInitiatorUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &RewardsInitiatorUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `StaleStakesForbiddenUpdate(bool)` and selector `0x40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc`. + ```solidity + event StaleStakesForbiddenUpdate(bool value); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct StaleStakesForbiddenUpdate { + #[allow(missing_docs)] + pub value: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for StaleStakesForbiddenUpdate { + type DataTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "StaleStakesForbiddenUpdate(bool)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 64u8, 228u8, 237u8, 136u8, 10u8, 41u8, 224u8, 246u8, 221u8, 206u8, 48u8, 116u8, + 87u8, 251u8, 117u8, 205u8, 223u8, 79u8, 238u8, 247u8, 211u8, 236u8, 176u8, + 48u8, 27u8, 253u8, 244u8, 151u8, 106u8, 14u8, 45u8, 252u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { value: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.value, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for StaleStakesForbiddenUpdate { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&StaleStakesForbiddenUpdate> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &StaleStakesForbiddenUpdate) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. + ```solidity + constructor(address _registryCoordinator, address _avsDirectory, address _rewardsCoordinator); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _registryCoordinator: alloy::sol_types::private::Address, + pub _avsDirectory: alloy::sol_types::private::Address, + pub _rewardsCoordinator: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + ( + value._registryCoordinator, + value._avsDirectory, + value._rewardsCoordinator, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _registryCoordinator: tuple.0, + _avsDirectory: tuple.1, + _rewardsCoordinator: tuple.2, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._registryCoordinator, + ), + ::tokenize( + &self._avsDirectory, + ), + ::tokenize( + &self._rewardsCoordinator, + ), + ) + } + } + }; + /**Function with signature `avsDirectory()` and selector `0x6b3aa72e`. + ```solidity + function avsDirectory() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct avsDirectoryCall {} + ///Container type for the return parameters of the [`avsDirectory()`](avsDirectoryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct avsDirectoryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: avsDirectoryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for avsDirectoryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: avsDirectoryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for avsDirectoryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for avsDirectoryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = avsDirectoryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "avsDirectory()"; + const SELECTOR: [u8; 4] = [107u8, 58u8, 167u8, 46u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `blsApkRegistry()` and selector `0x5df45946`. + ```solidity + function blsApkRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct blsApkRegistryCall {} + ///Container type for the return parameters of the [`blsApkRegistry()`](blsApkRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct blsApkRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: blsApkRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for blsApkRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: blsApkRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for blsApkRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for blsApkRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = blsApkRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "blsApkRegistry()"; + const SELECTOR: [u8; 4] = [93u8, 244u8, 89u8, 70u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))` and selector `0x6efb4636`. + ```solidity + function checkSignatures(bytes32 msgHash, bytes memory quorumNumbers, uint32 referenceBlockNumber, IBLSSignatureChecker.NonSignerStakesAndSignature memory params) external view returns (IBLSSignatureChecker.QuorumStakeTotals memory, bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct checkSignaturesCall { + pub msgHash: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumbers: alloy::sol_types::private::Bytes, + pub referenceBlockNumber: u32, + pub params: ::RustType, + } + ///Container type for the return parameters of the [`checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))`](checkSignaturesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct checkSignaturesReturn { + pub _0: ::RustType, + pub _1: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Uint<32>, + IBLSSignatureChecker::NonSignerStakesAndSignature, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::Bytes, + u32, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: checkSignaturesCall) -> Self { + ( + value.msgHash, + value.quorumNumbers, + value.referenceBlockNumber, + value.params, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for checkSignaturesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + msgHash: tuple.0, + quorumNumbers: tuple.1, + referenceBlockNumber: tuple.2, + params: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + IBLSSignatureChecker::QuorumStakeTotals, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: checkSignaturesReturn) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for checkSignaturesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for checkSignaturesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Uint<32>, + IBLSSignatureChecker::NonSignerStakesAndSignature, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = checkSignaturesReturn; + type ReturnTuple<'a> = ( + IBLSSignatureChecker::QuorumStakeTotals, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))"; + const SELECTOR: [u8; 4] = [110u8, 251u8, 70u8, 54u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.msgHash), + ::tokenize( + &self.quorumNumbers, + ), + as alloy_sol_types::SolType>::tokenize(&self.referenceBlockNumber), + ::tokenize( + &self.params, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])` and selector `0xfce36c7d`. + ```solidity + function createAVSRewardsSubmission(IRewardsCoordinator.RewardsSubmission[] memory rewardsSubmissions) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct createAVSRewardsSubmissionCall { + pub rewardsSubmissions: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])`](createAVSRewardsSubmissionCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct createAVSRewardsSubmissionReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: createAVSRewardsSubmissionCall) -> Self { + (value.rewardsSubmissions,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for createAVSRewardsSubmissionCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + rewardsSubmissions: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: createAVSRewardsSubmissionReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for createAVSRewardsSubmissionReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for createAVSRewardsSubmissionCall { + type Parameters<'a> = + (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = createAVSRewardsSubmissionReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])"; + const SELECTOR: [u8; 4] = [252u8, 227u8, 108u8, 125u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( as alloy_sol_types::SolType>::tokenize( + &self.rewardsSubmissions, + ),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `delegation()` and selector `0xdf5cf723`. + ```solidity + function delegation() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegationCall {} + ///Container type for the return parameters of the [`delegation()`](delegationCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for delegationCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = delegationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "delegation()"; + const SELECTOR: [u8; 4] = [223u8, 92u8, 247u8, 35u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `deregisterOperatorFromAVS(address)` and selector `0xa364f4da`. + ```solidity + function deregisterOperatorFromAVS(address operator) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorFromAVSCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`deregisterOperatorFromAVS(address)`](deregisterOperatorFromAVSCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorFromAVSReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorFromAVSCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorFromAVSCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorFromAVSReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorFromAVSReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for deregisterOperatorFromAVSCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = deregisterOperatorFromAVSReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "deregisterOperatorFromAVS(address)"; + const SELECTOR: [u8; 4] = [163u8, 100u8, 244u8, 218u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorRestakedStrategies(address)` and selector `0x33cfb7b7`. + ```solidity + function getOperatorRestakedStrategies(address operator) external view returns (address[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorRestakedStrategiesCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getOperatorRestakedStrategies(address)`](getOperatorRestakedStrategiesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorRestakedStrategiesReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorRestakedStrategiesCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorRestakedStrategiesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorRestakedStrategiesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorRestakedStrategiesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorRestakedStrategiesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorRestakedStrategiesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorRestakedStrategies(address)"; + const SELECTOR: [u8; 4] = [51u8, 207u8, 183u8, 183u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getRestakeableStrategies()` and selector `0xe481af9d`. + ```solidity + function getRestakeableStrategies() external view returns (address[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getRestakeableStrategiesCall {} + ///Container type for the return parameters of the [`getRestakeableStrategies()`](getRestakeableStrategiesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getRestakeableStrategiesReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getRestakeableStrategiesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getRestakeableStrategiesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getRestakeableStrategiesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getRestakeableStrategiesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getRestakeableStrategiesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getRestakeableStrategiesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getRestakeableStrategies()"; + const SELECTOR: [u8; 4] = [228u8, 129u8, 175u8, 157u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `initialize(address)` and selector `0xc4d66de8`. + ```solidity + function initialize(address _initialOwner) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeCall { + pub _initialOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`initialize(address)`](initializeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeCall) -> Self { + (value._initialOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _initialOwner: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for initializeCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = initializeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "initialize(address)"; + const SELECTOR: [u8; 4] = [196u8, 214u8, 109u8, 232u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._initialOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. + ```solidity + function owner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registerOperatorToAVS(address,(bytes,bytes32,uint256))` and selector `0x9926ee7d`. + ```solidity + function registerOperatorToAVS(address operator, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorToAVSCall { + pub operator: alloy::sol_types::private::Address, + pub operatorSignature: + ::RustType, + } + ///Container type for the return parameters of the [`registerOperatorToAVS(address,(bytes,bytes32,uint256))`](registerOperatorToAVSCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorToAVSReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithSaltAndExpiry, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorToAVSCall) -> Self { + (value.operator, value.operatorSignature) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorToAVSCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + operatorSignature: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorToAVSReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorToAVSReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registerOperatorToAVSCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithSaltAndExpiry, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registerOperatorToAVSReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "registerOperatorToAVS(address,(bytes,bytes32,uint256))"; + const SELECTOR: [u8; 4] = [153u8, 38u8, 238u8, 125u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.operatorSignature, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registryCoordinator()` and selector `0x6d14a987`. + ```solidity + function registryCoordinator() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registryCoordinatorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registryCoordinatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registryCoordinator()"; + const SELECTOR: [u8; 4] = [109u8, 20u8, 169u8, 135u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `renounceOwnership()` and selector `0x715018a6`. + ```solidity + function renounceOwnership() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct renounceOwnershipCall {} + ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct renounceOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for renounceOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for renounceOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for renounceOwnershipCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = renounceOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "renounceOwnership()"; + const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `rewardsInitiator()` and selector `0xfc299dee`. + ```solidity + function rewardsInitiator() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct rewardsInitiatorCall {} + ///Container type for the return parameters of the [`rewardsInitiator()`](rewardsInitiatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct rewardsInitiatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: rewardsInitiatorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for rewardsInitiatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: rewardsInitiatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for rewardsInitiatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for rewardsInitiatorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = rewardsInitiatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "rewardsInitiator()"; + const SELECTOR: [u8; 4] = [252u8, 41u8, 157u8, 238u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setRewardsInitiator(address)` and selector `0x3bc28c8c`. + ```solidity + function setRewardsInitiator(address newRewardsInitiator) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setRewardsInitiatorCall { + pub newRewardsInitiator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setRewardsInitiator(address)`](setRewardsInitiatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setRewardsInitiatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setRewardsInitiatorCall) -> Self { + (value.newRewardsInitiator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setRewardsInitiatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newRewardsInitiator: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setRewardsInitiatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setRewardsInitiatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setRewardsInitiatorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setRewardsInitiatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setRewardsInitiator(address)"; + const SELECTOR: [u8; 4] = [59u8, 194u8, 140u8, 140u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newRewardsInitiator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setStaleStakesForbidden(bool)` and selector `0x416c7e5e`. + ```solidity + function setStaleStakesForbidden(bool value) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setStaleStakesForbiddenCall { + pub value: bool, + } + ///Container type for the return parameters of the [`setStaleStakesForbidden(bool)`](setStaleStakesForbiddenCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setStaleStakesForbiddenReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setStaleStakesForbiddenCall) -> Self { + (value.value,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setStaleStakesForbiddenCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { value: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setStaleStakesForbiddenReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setStaleStakesForbiddenReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setStaleStakesForbiddenCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Bool,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setStaleStakesForbiddenReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setStaleStakesForbidden(bool)"; + const SELECTOR: [u8; 4] = [65u8, 108u8, 126u8, 94u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.value, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `stakeRegistry()` and selector `0x68304835`. + ```solidity + function stakeRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakeRegistryCall {} + ///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakeRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakeRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakeRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakeRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakeRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for stakeRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = stakeRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "stakeRegistry()"; + const SELECTOR: [u8; 4] = [104u8, 48u8, 72u8, 53u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `staleStakesForbidden()` and selector `0xb98d0908`. + ```solidity + function staleStakesForbidden() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct staleStakesForbiddenCall {} + ///Container type for the return parameters of the [`staleStakesForbidden()`](staleStakesForbiddenCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct staleStakesForbiddenReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: staleStakesForbiddenCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for staleStakesForbiddenCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: staleStakesForbiddenReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for staleStakesForbiddenReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for staleStakesForbiddenCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = staleStakesForbiddenReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "staleStakesForbidden()"; + const SELECTOR: [u8; 4] = [185u8, 141u8, 9u8, 8u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. + ```solidity + function transferOwnership(address newOwner) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `trySignatureAndApkVerification(bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256))` and selector `0x171f1d5b`. + ```solidity + function trySignatureAndApkVerification(bytes32 msgHash, BN254.G1Point memory apk, BN254.G2Point memory apkG2, BN254.G1Point memory sigma) external view returns (bool pairingSuccessful, bool siganatureIsValid); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct trySignatureAndApkVerificationCall { + pub msgHash: alloy::sol_types::private::FixedBytes<32>, + pub apk: ::RustType, + pub apkG2: ::RustType, + pub sigma: ::RustType, + } + ///Container type for the return parameters of the [`trySignatureAndApkVerification(bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256))`](trySignatureAndApkVerificationCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct trySignatureAndApkVerificationReturn { + pub pairingSuccessful: bool, + pub siganatureIsValid: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + BN254::G1Point, + BN254::G2Point, + BN254::G1Point, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + ::RustType, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: trySignatureAndApkVerificationCall) -> Self { + (value.msgHash, value.apk, value.apkG2, value.sigma) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for trySignatureAndApkVerificationCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + msgHash: tuple.0, + apk: tuple.1, + apkG2: tuple.2, + sigma: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bool, + alloy::sol_types::sol_data::Bool, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool, bool); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: trySignatureAndApkVerificationReturn) -> Self { + (value.pairingSuccessful, value.siganatureIsValid) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for trySignatureAndApkVerificationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + pairingSuccessful: tuple.0, + siganatureIsValid: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for trySignatureAndApkVerificationCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + BN254::G1Point, + BN254::G2Point, + BN254::G1Point, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = trySignatureAndApkVerificationReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Bool, + alloy::sol_types::sol_data::Bool, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "trySignatureAndApkVerification(bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256))"; + const SELECTOR: [u8; 4] = [23u8, 31u8, 29u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.msgHash), + ::tokenize(&self.apk), + ::tokenize(&self.apkG2), + ::tokenize(&self.sigma), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateAVSMetadataURI(string)` and selector `0xa98fb355`. + ```solidity + function updateAVSMetadataURI(string memory _metadataURI) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateAVSMetadataURICall { + pub _metadataURI: alloy::sol_types::private::String, + } + ///Container type for the return parameters of the [`updateAVSMetadataURI(string)`](updateAVSMetadataURICall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateAVSMetadataURIReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateAVSMetadataURICall) -> Self { + (value._metadataURI,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateAVSMetadataURICall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _metadataURI: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateAVSMetadataURIReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateAVSMetadataURIReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateAVSMetadataURICall { + type Parameters<'a> = (alloy::sol_types::sol_data::String,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateAVSMetadataURIReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateAVSMetadataURI(string)"; + const SELECTOR: [u8; 4] = [169u8, 143u8, 179u8, 85u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._metadataURI, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`MockAvsServiceManager`](self) function calls. + pub enum MockAvsServiceManagerCalls { + avsDirectory(avsDirectoryCall), + blsApkRegistry(blsApkRegistryCall), + checkSignatures(checkSignaturesCall), + createAVSRewardsSubmission(createAVSRewardsSubmissionCall), + delegation(delegationCall), + deregisterOperatorFromAVS(deregisterOperatorFromAVSCall), + getOperatorRestakedStrategies(getOperatorRestakedStrategiesCall), + getRestakeableStrategies(getRestakeableStrategiesCall), + initialize(initializeCall), + owner(ownerCall), + registerOperatorToAVS(registerOperatorToAVSCall), + registryCoordinator(registryCoordinatorCall), + renounceOwnership(renounceOwnershipCall), + rewardsInitiator(rewardsInitiatorCall), + setRewardsInitiator(setRewardsInitiatorCall), + setStaleStakesForbidden(setStaleStakesForbiddenCall), + stakeRegistry(stakeRegistryCall), + staleStakesForbidden(staleStakesForbiddenCall), + transferOwnership(transferOwnershipCall), + trySignatureAndApkVerification(trySignatureAndApkVerificationCall), + updateAVSMetadataURI(updateAVSMetadataURICall), + } + #[automatically_derived] + impl MockAvsServiceManagerCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [23u8, 31u8, 29u8, 91u8], + [51u8, 207u8, 183u8, 183u8], + [59u8, 194u8, 140u8, 140u8], + [65u8, 108u8, 126u8, 94u8], + [93u8, 244u8, 89u8, 70u8], + [104u8, 48u8, 72u8, 53u8], + [107u8, 58u8, 167u8, 46u8], + [109u8, 20u8, 169u8, 135u8], + [110u8, 251u8, 70u8, 54u8], + [113u8, 80u8, 24u8, 166u8], + [141u8, 165u8, 203u8, 91u8], + [153u8, 38u8, 238u8, 125u8], + [163u8, 100u8, 244u8, 218u8], + [169u8, 143u8, 179u8, 85u8], + [185u8, 141u8, 9u8, 8u8], + [196u8, 214u8, 109u8, 232u8], + [223u8, 92u8, 247u8, 35u8], + [228u8, 129u8, 175u8, 157u8], + [242u8, 253u8, 227u8, 139u8], + [252u8, 41u8, 157u8, 238u8], + [252u8, 227u8, 108u8, 125u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockAvsServiceManagerCalls { + const NAME: &'static str = "MockAvsServiceManagerCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 21usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::avsDirectory(_) => ::SELECTOR, + Self::blsApkRegistry(_) => { + ::SELECTOR + } + Self::checkSignatures(_) => { + ::SELECTOR + } + Self::createAVSRewardsSubmission(_) => { + ::SELECTOR + } + Self::delegation(_) => ::SELECTOR, + Self::deregisterOperatorFromAVS(_) => { + ::SELECTOR + } + Self::getOperatorRestakedStrategies(_) => { + ::SELECTOR + } + Self::getRestakeableStrategies(_) => { + ::SELECTOR + } + Self::initialize(_) => ::SELECTOR, + Self::owner(_) => ::SELECTOR, + Self::registerOperatorToAVS(_) => { + ::SELECTOR + } + Self::registryCoordinator(_) => { + ::SELECTOR + } + Self::renounceOwnership(_) => { + ::SELECTOR + } + Self::rewardsInitiator(_) => { + ::SELECTOR + } + Self::setRewardsInitiator(_) => { + ::SELECTOR + } + Self::setStaleStakesForbidden(_) => { + ::SELECTOR + } + Self::stakeRegistry(_) => ::SELECTOR, + Self::staleStakesForbidden(_) => { + ::SELECTOR + } + Self::transferOwnership(_) => { + ::SELECTOR + } + Self::trySignatureAndApkVerification(_) => { + ::SELECTOR + } + Self::updateAVSMetadataURI(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn trySignatureAndApkVerification( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + MockAvsServiceManagerCalls::trySignatureAndApkVerification, + ) + } + trySignatureAndApkVerification + }, + { + fn getOperatorRestakedStrategies( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + MockAvsServiceManagerCalls::getOperatorRestakedStrategies, + ) + } + getOperatorRestakedStrategies + }, + { + fn setRewardsInitiator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAvsServiceManagerCalls::setRewardsInitiator) + } + setRewardsInitiator + }, + { + fn setStaleStakesForbidden( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAvsServiceManagerCalls::setStaleStakesForbidden) + } + setStaleStakesForbidden + }, + { + fn blsApkRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAvsServiceManagerCalls::blsApkRegistry) + } + blsApkRegistry + }, + { + fn stakeRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAvsServiceManagerCalls::stakeRegistry) + } + stakeRegistry + }, + { + fn avsDirectory( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAvsServiceManagerCalls::avsDirectory) + } + avsDirectory + }, + { + fn registryCoordinator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAvsServiceManagerCalls::registryCoordinator) + } + registryCoordinator + }, + { + fn checkSignatures( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAvsServiceManagerCalls::checkSignatures) + } + checkSignatures + }, + { + fn renounceOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAvsServiceManagerCalls::renounceOwnership) + } + renounceOwnership + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(MockAvsServiceManagerCalls::owner) + } + owner + }, + { + fn registerOperatorToAVS( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAvsServiceManagerCalls::registerOperatorToAVS) + } + registerOperatorToAVS + }, + { + fn deregisterOperatorFromAVS( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAvsServiceManagerCalls::deregisterOperatorFromAVS) + } + deregisterOperatorFromAVS + }, + { + fn updateAVSMetadataURI( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAvsServiceManagerCalls::updateAVSMetadataURI) + } + updateAVSMetadataURI + }, + { + fn staleStakesForbidden( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAvsServiceManagerCalls::staleStakesForbidden) + } + staleStakesForbidden + }, + { + fn initialize( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(MockAvsServiceManagerCalls::initialize) + } + initialize + }, + { + fn delegation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(MockAvsServiceManagerCalls::delegation) + } + delegation + }, + { + fn getRestakeableStrategies( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAvsServiceManagerCalls::getRestakeableStrategies) + } + getRestakeableStrategies + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAvsServiceManagerCalls::transferOwnership) + } + transferOwnership + }, + { + fn rewardsInitiator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockAvsServiceManagerCalls::rewardsInitiator) + } + rewardsInitiator + }, + { + fn createAVSRewardsSubmission( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockAvsServiceManagerCalls::createAVSRewardsSubmission) + } + createAVSRewardsSubmission + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::avsDirectory(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::blsApkRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::checkSignatures(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::createAVSRewardsSubmission(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::delegation(inner) => { + ::abi_encoded_size(inner) + } + Self::deregisterOperatorFromAVS(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorRestakedStrategies(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getRestakeableStrategies(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::initialize(inner) => { + ::abi_encoded_size(inner) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::registerOperatorToAVS(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registryCoordinator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::renounceOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::rewardsInitiator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setRewardsInitiator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setStaleStakesForbidden(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::stakeRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::staleStakesForbidden(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::trySignatureAndApkVerification(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::updateAVSMetadataURI(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::avsDirectory(inner) => { + ::abi_encode_raw(inner, out) + } + Self::blsApkRegistry(inner) => { + ::abi_encode_raw(inner, out) + } + Self::checkSignatures(inner) => { + ::abi_encode_raw(inner, out) + } + Self::createAVSRewardsSubmission(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::delegation(inner) => { + ::abi_encode_raw(inner, out) + } + Self::deregisterOperatorFromAVS(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getOperatorRestakedStrategies(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getRestakeableStrategies(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::initialize(inner) => { + ::abi_encode_raw(inner, out) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::registerOperatorToAVS(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::registryCoordinator(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::renounceOwnership(inner) => { + ::abi_encode_raw(inner, out) + } + Self::rewardsInitiator(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setRewardsInitiator(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::setStaleStakesForbidden(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::stakeRegistry(inner) => { + ::abi_encode_raw(inner, out) + } + Self::staleStakesForbidden(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw(inner, out) + } + Self::trySignatureAndApkVerification(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::updateAVSMetadataURI(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + } + } + } + ///Container for all the [`MockAvsServiceManager`](self) events. + pub enum MockAvsServiceManagerEvents { + Initialized(Initialized), + OwnershipTransferred(OwnershipTransferred), + RewardsInitiatorUpdated(RewardsInitiatorUpdated), + StaleStakesForbiddenUpdate(StaleStakesForbiddenUpdate), + } + #[automatically_derived] + impl MockAvsServiceManagerEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 64u8, 228u8, 237u8, 136u8, 10u8, 41u8, 224u8, 246u8, 221u8, 206u8, 48u8, 116u8, + 87u8, 251u8, 117u8, 205u8, 223u8, 79u8, 238u8, 247u8, 211u8, 236u8, 176u8, 48u8, + 27u8, 253u8, 244u8, 151u8, 106u8, 14u8, 45u8, 252u8, + ], + [ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, 56u8, + 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, 96u8, + 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ], + [ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, 208u8, + 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, 175u8, 227u8, + 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ], + [ + 225u8, 28u8, 221u8, 241u8, 129u8, 106u8, 67u8, 49u8, 140u8, 161u8, 117u8, 187u8, + 197u8, 44u8, 208u8, 24u8, 84u8, 54u8, 233u8, 203u8, 234u8, 215u8, 200u8, 58u8, + 204u8, 84u8, 167u8, 62u8, 70u8, 23u8, 23u8, 227u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for MockAvsServiceManagerEvents { + const NAME: &'static str = "MockAvsServiceManagerEvents"; + const COUNT: usize = 4usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::Initialized) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OwnershipTransferred) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::RewardsInitiatorUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::StaleStakesForbiddenUpdate) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for MockAvsServiceManagerEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::RewardsInitiatorUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::StaleStakesForbiddenUpdate(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::RewardsInitiatorUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::StaleStakesForbiddenUpdate(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MockAvsServiceManager`](self) contract instance. + + See the [wrapper's documentation](`MockAvsServiceManagerInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MockAvsServiceManagerInstance { + MockAvsServiceManagerInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _registryCoordinator: alloy::sol_types::private::Address, + _avsDirectory: alloy::sol_types::private::Address, + _rewardsCoordinator: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + MockAvsServiceManagerInstance::::deploy( + provider, + _registryCoordinator, + _avsDirectory, + _rewardsCoordinator, + ) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _registryCoordinator: alloy::sol_types::private::Address, + _avsDirectory: alloy::sol_types::private::Address, + _rewardsCoordinator: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + MockAvsServiceManagerInstance::::deploy_builder( + provider, + _registryCoordinator, + _avsDirectory, + _rewardsCoordinator, + ) + } + /**A [`MockAvsServiceManager`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`MockAvsServiceManager`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MockAvsServiceManagerInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MockAvsServiceManagerInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MockAvsServiceManagerInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockAvsServiceManagerInstance + { + /**Creates a new wrapper around an on-chain [`MockAvsServiceManager`](self) contract instance. + + See the [wrapper's documentation](`MockAvsServiceManagerInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _registryCoordinator: alloy::sol_types::private::Address, + _avsDirectory: alloy::sol_types::private::Address, + _rewardsCoordinator: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder( + provider, + _registryCoordinator, + _avsDirectory, + _rewardsCoordinator, + ); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _registryCoordinator: alloy::sol_types::private::Address, + _avsDirectory: alloy::sol_types::private::Address, + _rewardsCoordinator: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode(&constructorCall { + _registryCoordinator, + _avsDirectory, + _rewardsCoordinator, + })[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MockAvsServiceManagerInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MockAvsServiceManagerInstance { + MockAvsServiceManagerInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockAvsServiceManagerInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`avsDirectory`] function. + pub fn avsDirectory(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&avsDirectoryCall {}) + } + ///Creates a new call builder for the [`blsApkRegistry`] function. + pub fn blsApkRegistry( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&blsApkRegistryCall {}) + } + ///Creates a new call builder for the [`checkSignatures`] function. + pub fn checkSignatures( + &self, + msgHash: alloy::sol_types::private::FixedBytes<32>, + quorumNumbers: alloy::sol_types::private::Bytes, + referenceBlockNumber: u32, + params: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&checkSignaturesCall { + msgHash, + quorumNumbers, + referenceBlockNumber, + params, + }) + } + ///Creates a new call builder for the [`createAVSRewardsSubmission`] function. + pub fn createAVSRewardsSubmission( + &self, + rewardsSubmissions: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&createAVSRewardsSubmissionCall { rewardsSubmissions }) + } + ///Creates a new call builder for the [`delegation`] function. + pub fn delegation(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&delegationCall {}) + } + ///Creates a new call builder for the [`deregisterOperatorFromAVS`] function. + pub fn deregisterOperatorFromAVS( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&deregisterOperatorFromAVSCall { operator }) + } + ///Creates a new call builder for the [`getOperatorRestakedStrategies`] function. + pub fn getOperatorRestakedStrategies( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorRestakedStrategiesCall { operator }) + } + ///Creates a new call builder for the [`getRestakeableStrategies`] function. + pub fn getRestakeableStrategies( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getRestakeableStrategiesCall {}) + } + ///Creates a new call builder for the [`initialize`] function. + pub fn initialize( + &self, + _initialOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initializeCall { _initialOwner }) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`registerOperatorToAVS`] function. + pub fn registerOperatorToAVS( + &self, + operator: alloy::sol_types::private::Address, + operatorSignature: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterOperatorToAVSCall { + operator, + operatorSignature, + }) + } + ///Creates a new call builder for the [`registryCoordinator`] function. + pub fn registryCoordinator( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®istryCoordinatorCall {}) + } + ///Creates a new call builder for the [`renounceOwnership`] function. + pub fn renounceOwnership( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&renounceOwnershipCall {}) + } + ///Creates a new call builder for the [`rewardsInitiator`] function. + pub fn rewardsInitiator( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&rewardsInitiatorCall {}) + } + ///Creates a new call builder for the [`setRewardsInitiator`] function. + pub fn setRewardsInitiator( + &self, + newRewardsInitiator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setRewardsInitiatorCall { + newRewardsInitiator, + }) + } + ///Creates a new call builder for the [`setStaleStakesForbidden`] function. + pub fn setStaleStakesForbidden( + &self, + value: bool, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setStaleStakesForbiddenCall { value }) + } + ///Creates a new call builder for the [`stakeRegistry`] function. + pub fn stakeRegistry(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&stakeRegistryCall {}) + } + ///Creates a new call builder for the [`staleStakesForbidden`] function. + pub fn staleStakesForbidden( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&staleStakesForbiddenCall {}) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + ///Creates a new call builder for the [`trySignatureAndApkVerification`] function. + pub fn trySignatureAndApkVerification( + &self, + msgHash: alloy::sol_types::private::FixedBytes<32>, + apk: ::RustType, + apkG2: ::RustType, + sigma: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&trySignatureAndApkVerificationCall { + msgHash, + apk, + apkG2, + sigma, + }) + } + ///Creates a new call builder for the [`updateAVSMetadataURI`] function. + pub fn updateAVSMetadataURI( + &self, + _metadataURI: alloy::sol_types::private::String, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateAVSMetadataURICall { _metadataURI }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockAvsServiceManagerInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Initialized`] event. + pub fn Initialized_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`RewardsInitiatorUpdated`] event. + pub fn RewardsInitiatorUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`StaleStakesForbiddenUpdate`] event. + pub fn StaleStakesForbiddenUpdate_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/mockerc20.rs b/crates/utils/src/mockerc20.rs new file mode 100644 index 00000000..89369f3b --- /dev/null +++ b/crates/utils/src/mockerc20.rs @@ -0,0 +1,2639 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface MockERC20 { + event Approval(address indexed owner, address indexed spender, uint256 value); + event Transfer(address indexed from, address indexed to, uint256 value); + + function allowance(address owner, address spender) external view returns (uint256); + function approve(address spender, uint256 amount) external returns (bool); + function balanceOf(address account) external view returns (uint256); + function decimals() external view returns (uint8); + function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool); + function increaseAllowance(address spender, uint256 addedValue) external returns (bool); + function mint(address account, uint256 amount) external; + function name() external view returns (string memory); + function symbol() external view returns (string memory); + function totalSupply() external view returns (uint256); + function transfer(address to, uint256 amount) external returns (bool); + function transferFrom(address from, address to, uint256 amount) external returns (bool); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "allowance", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "approve", + "inputs": [ + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "balanceOf", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "decimals", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "decreaseAllowance", + "inputs": [ + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "subtractedValue", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "increaseAllowance", + "inputs": [ + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "addedValue", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "mint", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "symbol", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "totalSupply", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transfer", + "inputs": [ + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Approval", + "inputs": [ + { + "name": "owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Transfer", + "inputs": [ + { + "name": "from", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod MockERC20 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b506040518060400160405280600a81526020016926b7b1b5902a37b5b2b760b11b815250604051806040016040528060038152602001624d434b60e81b8152508160039080519060200190610066929190610082565b50805161007a906004906020840190610082565b505050610156565b82805461008e9061011b565b90600052602060002090601f0160209004810192826100b057600085556100f6565b82601f106100c957805160ff19168380011785556100f6565b828001600101855582156100f6579182015b828111156100f65782518255916020019190600101906100db565b50610102929150610106565b5090565b5b808211156101025760008155600101610107565b600181811c9082168061012f57607f821691505b6020821081141561015057634e487b7160e01b600052602260045260246000fd5b50919050565b61090f806101656000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806340c10f191161007157806340c10f191461014157806370a082311461015657806395d89b411461017f578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce919061074c565b60405180910390f35b6100ea6100e53660046107bd565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a3660046107e7565b61026a565b604051601281526020016100ce565b6100ea61013c3660046107bd565b610277565b61015461014f3660046107bd565b610299565b005b6100fe610164366004610823565b6001600160a01b031660009081526020819052604090205490565b6100c16102a7565b6100ea6101953660046107bd565b6102b6565b6100ea6101a83660046107bd565b610341565b6100fe6101bb366004610845565b61034f565b6060600380546101cf90610878565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb90610878565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b60003361026081858561037a565b5060019392505050565b600061026084848461049e565b60003361026081858561028a838361034f565b61029491906108b3565b61037a565b6102a3828261066d565b5050565b6060600480546101cf90610878565b600033816102c4828661034f565b9050838110156103295760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b610336828686840361037a565b506001949350505050565b60003361026081858561049e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103dc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610320565b6001600160a01b03821661043d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610320565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166105025760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610320565b6001600160a01b0382166105645760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610320565b6001600160a01b038316600090815260208190526040902054818110156105dc5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610320565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106139084906108b3565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161065f91815260200190565b60405180910390a350505050565b6001600160a01b0382166106c35760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610320565b80600260008282546106d591906108b3565b90915550506001600160a01b038216600090815260208190526040812080548392906107029084906108b3565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600060208083528351808285015260005b818110156107795785810183015185820160400152820161075d565b8181111561078b576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146107b857600080fd5b919050565b600080604083850312156107d057600080fd5b6107d9836107a1565b946020939093013593505050565b6000806000606084860312156107fc57600080fd5b610805846107a1565b9250610813602085016107a1565b9150604084013590509250925092565b60006020828403121561083557600080fd5b61083e826107a1565b9392505050565b6000806040838503121561085857600080fd5b610861836107a1565b915061086f602084016107a1565b90509250929050565b600181811c9082168061088c57607f821691505b602082108114156108ad57634e487b7160e01b600052602260045260246000fd5b50919050565b600082198211156108d457634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220cdd5dacf8932073a3caffc72e84d1bc1b5bd6191303c553cc00319f525760ef364736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Q\x80`@\x01`@R\x80`\n\x81R` \x01i&\xB7\xB1\xB5\x90*7\xB5\xB2\xB7`\xB1\x1B\x81RP`@Q\x80`@\x01`@R\x80`\x03\x81R` \x01bMCK`\xE8\x1B\x81RP\x81`\x03\x90\x80Q\x90` \x01\x90a\0f\x92\x91\x90a\0\x82V[P\x80Qa\0z\x90`\x04\x90` \x84\x01\x90a\0\x82V[PPPa\x01VV[\x82\x80Ta\0\x8E\x90a\x01\x1BV[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82a\0\xB0W`\0\x85Ua\0\xF6V[\x82`\x1F\x10a\0\xC9W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ua\0\xF6V[\x82\x80\x01`\x01\x01\x85U\x82\x15a\0\xF6W\x91\x82\x01[\x82\x81\x11\x15a\0\xF6W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90a\0\xDBV[Pa\x01\x02\x92\x91Pa\x01\x06V[P\x90V[[\x80\x82\x11\x15a\x01\x02W`\0\x81U`\x01\x01a\x01\x07V[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x01/W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x01PWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[a\t\x0F\x80a\x01e`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xB4W`\x005`\xE0\x1C\x80c@\xC1\x0F\x19\x11a\0qW\x80c@\xC1\x0F\x19\x14a\x01AW\x80cp\xA0\x821\x14a\x01VW\x80c\x95\xD8\x9BA\x14a\x01\x7FW\x80c\xA4W\xC2\xD7\x14a\x01\x87W\x80c\xA9\x05\x9C\xBB\x14a\x01\x9AW\x80c\xDDb\xED>\x14a\x01\xADW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xB9W\x80c\t^\xA7\xB3\x14a\0\xD7W\x80c\x18\x16\r\xDD\x14a\0\xFAW\x80c#\xB8r\xDD\x14a\x01\x0CW\x80c1<\xE5g\x14a\x01\x1FW\x80c9P\x93Q\x14a\x01.W[`\0\x80\xFD[a\0\xC1a\x01\xC0V[`@Qa\0\xCE\x91\x90a\x07LV[`@Q\x80\x91\x03\x90\xF3[a\0\xEAa\0\xE56`\x04a\x07\xBDV[a\x02RV[`@Q\x90\x15\x15\x81R` \x01a\0\xCEV[`\x02T[`@Q\x90\x81R` \x01a\0\xCEV[a\0\xEAa\x01\x1A6`\x04a\x07\xE7V[a\x02jV[`@Q`\x12\x81R` \x01a\0\xCEV[a\0\xEAa\x01<6`\x04a\x07\xBDV[a\x02wV[a\x01Ta\x01O6`\x04a\x07\xBDV[a\x02\x99V[\0[a\0\xFEa\x01d6`\x04a\x08#V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\0\xC1a\x02\xA7V[a\0\xEAa\x01\x956`\x04a\x07\xBDV[a\x02\xB6V[a\0\xEAa\x01\xA86`\x04a\x07\xBDV[a\x03AV[a\0\xFEa\x01\xBB6`\x04a\x08EV[a\x03OV[```\x03\x80Ta\x01\xCF\x90a\x08xV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01\xFB\x90a\x08xV[\x80\x15a\x02HW\x80`\x1F\x10a\x02\x1DWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02HV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02+W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02`\x81\x85\x85a\x03zV[P`\x01\x93\x92PPPV[`\0a\x02`\x84\x84\x84a\x04\x9EV[`\x003a\x02`\x81\x85\x85a\x02\x8A\x83\x83a\x03OV[a\x02\x94\x91\x90a\x08\xB3V[a\x03zV[a\x02\xA3\x82\x82a\x06mV[PPV[```\x04\x80Ta\x01\xCF\x90a\x08xV[`\x003\x81a\x02\xC4\x82\x86a\x03OV[\x90P\x83\x81\x10\x15a\x03)W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: decreased allowance below`D\x82\x01Rd zero`\xD8\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x036\x82\x86\x86\x84\x03a\x03zV[P`\x01\x94\x93PPPPV[`\x003a\x02`\x81\x85\x85a\x04\x9EV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x03\xDCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FERC20: approve from the zero add`D\x82\x01Rcress`\xE0\x1B`d\x82\x01R`\x84\x01a\x03 V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x04=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: approve to the zero addre`D\x82\x01Rass`\xF0\x1B`d\x82\x01R`\x84\x01a\x03 V[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x81\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x87\x16\x80\x84R\x94\x82R\x91\x82\x90 \x85\x90U\x90Q\x84\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x05\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: transfer from the zero ad`D\x82\x01Rddress`\xD8\x1B`d\x82\x01R`\x84\x01a\x03 V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x05dW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7FERC20: transfer to the zero addr`D\x82\x01Rbess`\xE8\x1B`d\x82\x01R`\x84\x01a\x03 V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x05\xDCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC20: transfer amount exceeds b`D\x82\x01Realance`\xD0\x1B`d\x82\x01R`\x84\x01a\x03 V[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R` \x81\x90R`@\x80\x82 \x85\x85\x03\x90U\x91\x85\x16\x81R\x90\x81 \x80T\x84\x92\x90a\x06\x13\x90\x84\x90a\x08\xB3V[\x92PP\x81\x90UP\x82`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x84`@Qa\x06_\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x06\xC3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FERC20: mint to the zero address\0`D\x82\x01R`d\x01a\x03 V[\x80`\x02`\0\x82\x82Ta\x06\xD5\x91\x90a\x08\xB3V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x83\x92\x90a\x07\x02\x90\x84\x90a\x08\xB3V[\x90\x91UPP`@Q\x81\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90`\0\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90` \x01`@Q\x80\x91\x03\x90\xA3PPV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x07yW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x07]V[\x81\x81\x11\x15a\x07\x8BW`\0`@\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\xB8W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x07\xD0W`\0\x80\xFD[a\x07\xD9\x83a\x07\xA1V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x07\xFCW`\0\x80\xFD[a\x08\x05\x84a\x07\xA1V[\x92Pa\x08\x13` \x85\x01a\x07\xA1V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x085W`\0\x80\xFD[a\x08>\x82a\x07\xA1V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x08XW`\0\x80\xFD[a\x08a\x83a\x07\xA1V[\x91Pa\x08o` \x84\x01a\x07\xA1V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x08\x8CW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x08\xADWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0\x82\x19\x82\x11\x15a\x08\xD4WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P\x01\x90V\xFE\xA2dipfsX\"\x12 \xCD\xD5\xDA\xCF\x892\x07:<\xAF\xFCr\xE8M\x1B\xC1\xB5\xBDa\x910\x14a\x01\xADW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xB9W\x80c\t^\xA7\xB3\x14a\0\xD7W\x80c\x18\x16\r\xDD\x14a\0\xFAW\x80c#\xB8r\xDD\x14a\x01\x0CW\x80c1<\xE5g\x14a\x01\x1FW\x80c9P\x93Q\x14a\x01.W[`\0\x80\xFD[a\0\xC1a\x01\xC0V[`@Qa\0\xCE\x91\x90a\x07LV[`@Q\x80\x91\x03\x90\xF3[a\0\xEAa\0\xE56`\x04a\x07\xBDV[a\x02RV[`@Q\x90\x15\x15\x81R` \x01a\0\xCEV[`\x02T[`@Q\x90\x81R` \x01a\0\xCEV[a\0\xEAa\x01\x1A6`\x04a\x07\xE7V[a\x02jV[`@Q`\x12\x81R` \x01a\0\xCEV[a\0\xEAa\x01<6`\x04a\x07\xBDV[a\x02wV[a\x01Ta\x01O6`\x04a\x07\xBDV[a\x02\x99V[\0[a\0\xFEa\x01d6`\x04a\x08#V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\0\xC1a\x02\xA7V[a\0\xEAa\x01\x956`\x04a\x07\xBDV[a\x02\xB6V[a\0\xEAa\x01\xA86`\x04a\x07\xBDV[a\x03AV[a\0\xFEa\x01\xBB6`\x04a\x08EV[a\x03OV[```\x03\x80Ta\x01\xCF\x90a\x08xV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01\xFB\x90a\x08xV[\x80\x15a\x02HW\x80`\x1F\x10a\x02\x1DWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02HV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02+W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02`\x81\x85\x85a\x03zV[P`\x01\x93\x92PPPV[`\0a\x02`\x84\x84\x84a\x04\x9EV[`\x003a\x02`\x81\x85\x85a\x02\x8A\x83\x83a\x03OV[a\x02\x94\x91\x90a\x08\xB3V[a\x03zV[a\x02\xA3\x82\x82a\x06mV[PPV[```\x04\x80Ta\x01\xCF\x90a\x08xV[`\x003\x81a\x02\xC4\x82\x86a\x03OV[\x90P\x83\x81\x10\x15a\x03)W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: decreased allowance below`D\x82\x01Rd zero`\xD8\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x036\x82\x86\x86\x84\x03a\x03zV[P`\x01\x94\x93PPPPV[`\x003a\x02`\x81\x85\x85a\x04\x9EV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x03\xDCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FERC20: approve from the zero add`D\x82\x01Rcress`\xE0\x1B`d\x82\x01R`\x84\x01a\x03 V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x04=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: approve to the zero addre`D\x82\x01Rass`\xF0\x1B`d\x82\x01R`\x84\x01a\x03 V[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x81\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x87\x16\x80\x84R\x94\x82R\x91\x82\x90 \x85\x90U\x90Q\x84\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x05\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: transfer from the zero ad`D\x82\x01Rddress`\xD8\x1B`d\x82\x01R`\x84\x01a\x03 V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x05dW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7FERC20: transfer to the zero addr`D\x82\x01Rbess`\xE8\x1B`d\x82\x01R`\x84\x01a\x03 V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x05\xDCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC20: transfer amount exceeds b`D\x82\x01Realance`\xD0\x1B`d\x82\x01R`\x84\x01a\x03 V[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R` \x81\x90R`@\x80\x82 \x85\x85\x03\x90U\x91\x85\x16\x81R\x90\x81 \x80T\x84\x92\x90a\x06\x13\x90\x84\x90a\x08\xB3V[\x92PP\x81\x90UP\x82`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x84`@Qa\x06_\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x06\xC3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FERC20: mint to the zero address\0`D\x82\x01R`d\x01a\x03 V[\x80`\x02`\0\x82\x82Ta\x06\xD5\x91\x90a\x08\xB3V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x83\x92\x90a\x07\x02\x90\x84\x90a\x08\xB3V[\x90\x91UPP`@Q\x81\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90`\0\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90` \x01`@Q\x80\x91\x03\x90\xA3PPV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x07yW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x07]V[\x81\x81\x11\x15a\x07\x8BW`\0`@\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\xB8W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x07\xD0W`\0\x80\xFD[a\x07\xD9\x83a\x07\xA1V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x07\xFCW`\0\x80\xFD[a\x08\x05\x84a\x07\xA1V[\x92Pa\x08\x13` \x85\x01a\x07\xA1V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x085W`\0\x80\xFD[a\x08>\x82a\x07\xA1V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x08XW`\0\x80\xFD[a\x08a\x83a\x07\xA1V[\x91Pa\x08o` \x84\x01a\x07\xA1V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x08\x8CW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x08\xADWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0\x82\x19\x82\x11\x15a\x08\xD4WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P\x01\x90V\xFE\xA2dipfsX\"\x12 \xCD\xD5\xDA\xCF\x892\x07:<\xAF\xFCr\xE8M\x1B\xC1\xB5\xBDa\x910 = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Approval(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 140u8, 91u8, 225u8, 229u8, 235u8, 236u8, 125u8, 91u8, 209u8, 79u8, 113u8, 66u8, + 125u8, 30u8, 132u8, 243u8, 221u8, 3u8, 20u8, 192u8, 247u8, 178u8, 41u8, 30u8, + 91u8, 32u8, 10u8, 200u8, 199u8, 195u8, 185u8, 37u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + owner: topics.1, + spender: topics.2, + value: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.value, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.owner.clone(), + self.spender.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.owner, + ); + out[2usize] = ::encode_topic( + &self.spender, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Approval { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Approval> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Approval) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Transfer(address,address,uint256)` and selector `0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef`. + ```solidity + event Transfer(address indexed from, address indexed to, uint256 value); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Transfer { + #[allow(missing_docs)] + pub from: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub to: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub value: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Transfer { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Transfer(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 221u8, 242u8, 82u8, 173u8, 27u8, 226u8, 200u8, 155u8, 105u8, 194u8, 176u8, + 104u8, 252u8, 55u8, 141u8, 170u8, 149u8, 43u8, 167u8, 241u8, 99u8, 196u8, + 161u8, 22u8, 40u8, 245u8, 90u8, 77u8, 245u8, 35u8, 179u8, 239u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + from: topics.1, + to: topics.2, + value: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.value, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.from.clone(), + self.to.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.from, + ); + out[2usize] = ::encode_topic( + &self.to, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Transfer { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Transfer> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Transfer) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `allowance(address,address)` and selector `0xdd62ed3e`. + ```solidity + function allowance(address owner, address spender) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct allowanceCall { + pub owner: alloy::sol_types::private::Address, + pub spender: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`allowance(address,address)`](allowanceCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct allowanceReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: allowanceCall) -> Self { + (value.owner, value.spender) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for allowanceCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + owner: tuple.0, + spender: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: allowanceReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for allowanceReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for allowanceCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = allowanceReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "allowance(address,address)"; + const SELECTOR: [u8; 4] = [221u8, 98u8, 237u8, 62u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.owner, + ), + ::tokenize( + &self.spender, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `approve(address,uint256)` and selector `0x095ea7b3`. + ```solidity + function approve(address spender, uint256 amount) external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveCall { + pub spender: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`approve(address,uint256)`](approveCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveCall) -> Self { + (value.spender, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + spender: tuple.0, + amount: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for approveCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = approveReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "approve(address,uint256)"; + const SELECTOR: [u8; 4] = [9u8, 94u8, 167u8, 179u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.spender, + ), + as alloy_sol_types::SolType>::tokenize( + &self.amount, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `balanceOf(address)` and selector `0x70a08231`. + ```solidity + function balanceOf(address account) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfCall { + pub account: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`balanceOf(address)`](balanceOfCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfCall) -> Self { + (value.account,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { account: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for balanceOfCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = balanceOfReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "balanceOf(address)"; + const SELECTOR: [u8; 4] = [112u8, 160u8, 130u8, 49u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.account, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `decimals()` and selector `0x313ce567`. + ```solidity + function decimals() external view returns (uint8); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct decimalsCall {} + ///Container type for the return parameters of the [`decimals()`](decimalsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct decimalsReturn { + pub _0: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: decimalsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for decimalsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: decimalsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for decimalsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for decimalsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = decimalsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "decimals()"; + const SELECTOR: [u8; 4] = [49u8, 60u8, 229u8, 103u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `decreaseAllowance(address,uint256)` and selector `0xa457c2d7`. + ```solidity + function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct decreaseAllowanceCall { + pub spender: alloy::sol_types::private::Address, + pub subtractedValue: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`decreaseAllowance(address,uint256)`](decreaseAllowanceCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct decreaseAllowanceReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: decreaseAllowanceCall) -> Self { + (value.spender, value.subtractedValue) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for decreaseAllowanceCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + spender: tuple.0, + subtractedValue: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: decreaseAllowanceReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for decreaseAllowanceReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for decreaseAllowanceCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = decreaseAllowanceReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "decreaseAllowance(address,uint256)"; + const SELECTOR: [u8; 4] = [164u8, 87u8, 194u8, 215u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.spender, + ), + as alloy_sol_types::SolType>::tokenize( + &self.subtractedValue, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `increaseAllowance(address,uint256)` and selector `0x39509351`. + ```solidity + function increaseAllowance(address spender, uint256 addedValue) external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct increaseAllowanceCall { + pub spender: alloy::sol_types::private::Address, + pub addedValue: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`increaseAllowance(address,uint256)`](increaseAllowanceCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct increaseAllowanceReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: increaseAllowanceCall) -> Self { + (value.spender, value.addedValue) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for increaseAllowanceCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + spender: tuple.0, + addedValue: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: increaseAllowanceReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for increaseAllowanceReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for increaseAllowanceCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = increaseAllowanceReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "increaseAllowance(address,uint256)"; + const SELECTOR: [u8; 4] = [57u8, 80u8, 147u8, 81u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.spender, + ), + as alloy_sol_types::SolType>::tokenize( + &self.addedValue, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `mint(address,uint256)` and selector `0x40c10f19`. + ```solidity + function mint(address account, uint256 amount) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct mintCall { + pub account: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`mint(address,uint256)`](mintCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct mintReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: mintCall) -> Self { + (value.account, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mintCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + account: tuple.0, + amount: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: mintReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mintReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for mintCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = mintReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "mint(address,uint256)"; + const SELECTOR: [u8; 4] = [64u8, 193u8, 15u8, 25u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.account, + ), + as alloy_sol_types::SolType>::tokenize( + &self.amount, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `name()` and selector `0x06fdde03`. + ```solidity + function name() external view returns (string memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct nameCall {} + ///Container type for the return parameters of the [`name()`](nameCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct nameReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: nameCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for nameCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: nameReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for nameReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for nameCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = nameReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "name()"; + const SELECTOR: [u8; 4] = [6u8, 253u8, 222u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `symbol()` and selector `0x95d89b41`. + ```solidity + function symbol() external view returns (string memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct symbolCall {} + ///Container type for the return parameters of the [`symbol()`](symbolCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct symbolReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: symbolCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for symbolCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: symbolReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for symbolReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for symbolCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = symbolReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "symbol()"; + const SELECTOR: [u8; 4] = [149u8, 216u8, 155u8, 65u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `totalSupply()` and selector `0x18160ddd`. + ```solidity + function totalSupply() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalSupplyCall {} + ///Container type for the return parameters of the [`totalSupply()`](totalSupplyCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalSupplyReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalSupplyCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalSupplyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalSupplyReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalSupplyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for totalSupplyCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = totalSupplyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "totalSupply()"; + const SELECTOR: [u8; 4] = [24u8, 22u8, 13u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `transfer(address,uint256)` and selector `0xa9059cbb`. + ```solidity + function transfer(address to, uint256 amount) external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferCall { + pub to: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`transfer(address,uint256)`](transferCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferCall) -> Self { + (value.to, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + to: tuple.0, + amount: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transfer(address,uint256)"; + const SELECTOR: [u8; 4] = [169u8, 5u8, 156u8, 187u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.to, + ), + as alloy_sol_types::SolType>::tokenize( + &self.amount, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd`. + ```solidity + function transferFrom(address from, address to, uint256 amount) external returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromCall { + pub from: alloy::sol_types::private::Address, + pub to: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`transferFrom(address,address,uint256)`](transferFromCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromCall) -> Self { + (value.from, value.to, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + from: tuple.0, + to: tuple.1, + amount: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferFromCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferFromReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferFrom(address,address,uint256)"; + const SELECTOR: [u8; 4] = [35u8, 184u8, 114u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.from, + ), + ::tokenize( + &self.to, + ), + as alloy_sol_types::SolType>::tokenize( + &self.amount, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`MockERC20`](self) function calls. + pub enum MockERC20Calls { + allowance(allowanceCall), + approve(approveCall), + balanceOf(balanceOfCall), + decimals(decimalsCall), + decreaseAllowance(decreaseAllowanceCall), + increaseAllowance(increaseAllowanceCall), + mint(mintCall), + name(nameCall), + symbol(symbolCall), + totalSupply(totalSupplyCall), + transfer(transferCall), + transferFrom(transferFromCall), + } + #[automatically_derived] + impl MockERC20Calls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [6u8, 253u8, 222u8, 3u8], + [9u8, 94u8, 167u8, 179u8], + [24u8, 22u8, 13u8, 221u8], + [35u8, 184u8, 114u8, 221u8], + [49u8, 60u8, 229u8, 103u8], + [57u8, 80u8, 147u8, 81u8], + [64u8, 193u8, 15u8, 25u8], + [112u8, 160u8, 130u8, 49u8], + [149u8, 216u8, 155u8, 65u8], + [164u8, 87u8, 194u8, 215u8], + [169u8, 5u8, 156u8, 187u8], + [221u8, 98u8, 237u8, 62u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockERC20Calls { + const NAME: &'static str = "MockERC20Calls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 12usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::allowance(_) => ::SELECTOR, + Self::approve(_) => ::SELECTOR, + Self::balanceOf(_) => ::SELECTOR, + Self::decimals(_) => ::SELECTOR, + Self::decreaseAllowance(_) => { + ::SELECTOR + } + Self::increaseAllowance(_) => { + ::SELECTOR + } + Self::mint(_) => ::SELECTOR, + Self::name(_) => ::SELECTOR, + Self::symbol(_) => ::SELECTOR, + Self::totalSupply(_) => ::SELECTOR, + Self::transfer(_) => ::SELECTOR, + Self::transferFrom(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn(&[u8], bool) -> alloy_sol_types::Result] = &[ + { + fn name( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(MockERC20Calls::name) + } + name + }, + { + fn approve( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(MockERC20Calls::approve) + } + approve + }, + { + fn totalSupply( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockERC20Calls::totalSupply) + } + totalSupply + }, + { + fn transferFrom( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockERC20Calls::transferFrom) + } + transferFrom + }, + { + fn decimals( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(MockERC20Calls::decimals) + } + decimals + }, + { + fn increaseAllowance( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockERC20Calls::increaseAllowance) + } + increaseAllowance + }, + { + fn mint( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(MockERC20Calls::mint) + } + mint + }, + { + fn balanceOf( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(MockERC20Calls::balanceOf) + } + balanceOf + }, + { + fn symbol( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(MockERC20Calls::symbol) + } + symbol + }, + { + fn decreaseAllowance( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockERC20Calls::decreaseAllowance) + } + decreaseAllowance + }, + { + fn transfer( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(MockERC20Calls::transfer) + } + transfer + }, + { + fn allowance( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(MockERC20Calls::allowance) + } + allowance + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::allowance(inner) => { + ::abi_encoded_size(inner) + } + Self::approve(inner) => { + ::abi_encoded_size(inner) + } + Self::balanceOf(inner) => { + ::abi_encoded_size(inner) + } + Self::decimals(inner) => { + ::abi_encoded_size(inner) + } + Self::decreaseAllowance(inner) => { + ::abi_encoded_size(inner) + } + Self::increaseAllowance(inner) => { + ::abi_encoded_size(inner) + } + Self::mint(inner) => { + ::abi_encoded_size(inner) + } + Self::name(inner) => { + ::abi_encoded_size(inner) + } + Self::symbol(inner) => { + ::abi_encoded_size(inner) + } + Self::totalSupply(inner) => { + ::abi_encoded_size(inner) + } + Self::transfer(inner) => { + ::abi_encoded_size(inner) + } + Self::transferFrom(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::allowance(inner) => { + ::abi_encode_raw(inner, out) + } + Self::approve(inner) => { + ::abi_encode_raw(inner, out) + } + Self::balanceOf(inner) => { + ::abi_encode_raw(inner, out) + } + Self::decimals(inner) => { + ::abi_encode_raw(inner, out) + } + Self::decreaseAllowance(inner) => { + ::abi_encode_raw(inner, out) + } + Self::increaseAllowance(inner) => { + ::abi_encode_raw(inner, out) + } + Self::mint(inner) => { + ::abi_encode_raw(inner, out) + } + Self::name(inner) => { + ::abi_encode_raw(inner, out) + } + Self::symbol(inner) => { + ::abi_encode_raw(inner, out) + } + Self::totalSupply(inner) => { + ::abi_encode_raw(inner, out) + } + Self::transfer(inner) => { + ::abi_encode_raw(inner, out) + } + Self::transferFrom(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`MockERC20`](self) events. + pub enum MockERC20Events { + Approval(Approval), + Transfer(Transfer), + } + #[automatically_derived] + impl MockERC20Events { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 140u8, 91u8, 225u8, 229u8, 235u8, 236u8, 125u8, 91u8, 209u8, 79u8, 113u8, 66u8, + 125u8, 30u8, 132u8, 243u8, 221u8, 3u8, 20u8, 192u8, 247u8, 178u8, 41u8, 30u8, 91u8, + 32u8, 10u8, 200u8, 199u8, 195u8, 185u8, 37u8, + ], + [ + 221u8, 242u8, 82u8, 173u8, 27u8, 226u8, 200u8, 155u8, 105u8, 194u8, 176u8, 104u8, + 252u8, 55u8, 141u8, 170u8, 149u8, 43u8, 167u8, 241u8, 99u8, 196u8, 161u8, 22u8, + 40u8, 245u8, 90u8, 77u8, 245u8, 35u8, 179u8, 239u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for MockERC20Events { + const NAME: &'static str = "MockERC20Events"; + const COUNT: usize = 2usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::Approval) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::Transfer) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for MockERC20Events { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::Transfer(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Transfer(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MockERC20`](self) contract instance. + + See the [wrapper's documentation](`MockERC20Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MockERC20Instance { + MockERC20Instance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + MockERC20Instance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + MockERC20Instance::::deploy_builder(provider) + } + /**A [`MockERC20`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`MockERC20`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MockERC20Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MockERC20Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MockERC20Instance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockERC20Instance + { + /**Creates a new wrapper around an on-chain [`MockERC20`](self) contract instance. + + See the [wrapper's documentation](`MockERC20Instance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MockERC20Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MockERC20Instance { + MockERC20Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockERC20Instance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`allowance`] function. + pub fn allowance( + &self, + owner: alloy::sol_types::private::Address, + spender: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&allowanceCall { owner, spender }) + } + ///Creates a new call builder for the [`approve`] function. + pub fn approve( + &self, + spender: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&approveCall { spender, amount }) + } + ///Creates a new call builder for the [`balanceOf`] function. + pub fn balanceOf( + &self, + account: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&balanceOfCall { account }) + } + ///Creates a new call builder for the [`decimals`] function. + pub fn decimals(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&decimalsCall {}) + } + ///Creates a new call builder for the [`decreaseAllowance`] function. + pub fn decreaseAllowance( + &self, + spender: alloy::sol_types::private::Address, + subtractedValue: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&decreaseAllowanceCall { + spender, + subtractedValue, + }) + } + ///Creates a new call builder for the [`increaseAllowance`] function. + pub fn increaseAllowance( + &self, + spender: alloy::sol_types::private::Address, + addedValue: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&increaseAllowanceCall { + spender, + addedValue, + }) + } + ///Creates a new call builder for the [`mint`] function. + pub fn mint( + &self, + account: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&mintCall { account, amount }) + } + ///Creates a new call builder for the [`name`] function. + pub fn name(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&nameCall {}) + } + ///Creates a new call builder for the [`symbol`] function. + pub fn symbol(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&symbolCall {}) + } + ///Creates a new call builder for the [`totalSupply`] function. + pub fn totalSupply(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&totalSupplyCall {}) + } + ///Creates a new call builder for the [`transfer`] function. + pub fn transfer( + &self, + to: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferCall { to, amount }) + } + ///Creates a new call builder for the [`transferFrom`] function. + pub fn transferFrom( + &self, + from: alloy::sol_types::private::Address, + to: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferFromCall { from, to, amount }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockERC20Instance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Approval`] event. + pub fn Approval_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Transfer`] event. + pub fn Transfer_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/mockerc721.rs b/crates/utils/src/mockerc721.rs new file mode 100644 index 00000000..36b13ee2 --- /dev/null +++ b/crates/utils/src/mockerc721.rs @@ -0,0 +1,3150 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface MockERC721 { + event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); + event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); + event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); + + function approve(address spender, uint256 id) external payable; + function balanceOf(address owner) external view returns (uint256); + function getApproved(uint256 id) external view returns (address); + function initialize(string memory name_, string memory symbol_) external; + function isApprovedForAll(address owner, address operator) external view returns (bool); + function name() external view returns (string memory); + function ownerOf(uint256 id) external view returns (address owner); + function safeTransferFrom(address from, address to, uint256 id) external payable; + function safeTransferFrom(address from, address to, uint256 id, bytes memory data) external payable; + function setApprovalForAll(address operator, bool approved) external; + function supportsInterface(bytes4 interfaceId) external view returns (bool); + function symbol() external view returns (string memory); + function tokenURI(uint256 id) external view returns (string memory); + function transferFrom(address from, address to, uint256 id) external payable; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "approve", + "inputs": [ + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "id", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "balanceOf", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getApproved", + "inputs": [ + { + "name": "id", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "name_", + "type": "string", + "internalType": "string" + }, + { + "name": "symbol_", + "type": "string", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "isApprovedForAll", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "ownerOf", + "inputs": [ + { + "name": "id", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "safeTransferFrom", + "inputs": [ + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "id", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "safeTransferFrom", + "inputs": [ + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "id", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "setApprovalForAll", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "approved", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "supportsInterface", + "inputs": [ + { + "name": "interfaceId", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "symbol", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "tokenURI", + "inputs": [ + { + "name": "id", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "id", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "event", + "name": "Approval", + "inputs": [ + { + "name": "_owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_approved", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ApprovalForAll", + "inputs": [ + { + "name": "_owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_approved", + "type": "bool", + "indexed": false, + "internalType": "bool" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Transfer", + "inputs": [ + { + "name": "_from", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_to", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod MockERC721 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50610f1d806100206000396000f3fe6080604052600436106100dd5760003560e01c80636352211e1161007f578063a22cb46511610059578063a22cb46514610245578063b88d4fde14610265578063c87b56dd14610278578063e985e9c51461029957600080fd5b80636352211e146101e257806370a082311461020257806395d89b411461023057600080fd5b8063095ea7b3116100bb578063095ea7b31461018757806323b872dd1461019c57806342842e0e146101af5780634cd88b76146101c257600080fd5b806301ffc9a7146100e257806306fdde0314610117578063081812fc14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610ada565b6102e2565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b5061012c610334565b60405161010e9190610b4b565b34801561014557600080fd5b5061016f610154366004610b5e565b6000908152600460205260409020546001600160a01b031690565b6040516001600160a01b03909116815260200161010e565b61019a610195366004610b8e565b6103c6565b005b61019a6101aa366004610bb8565b6104ad565b61019a6101bd366004610bb8565b6106a6565b3480156101ce57600080fd5b5061019a6101dd366004610ca0565b610795565b3480156101ee57600080fd5b5061016f6101fd366004610b5e565b610817565b34801561020e57600080fd5b5061022261021d366004610d04565b61086e565b60405190815260200161010e565b34801561023c57600080fd5b5061012c6108d1565b34801561025157600080fd5b5061019a610260366004610d1f565b6108e0565b61019a610273366004610d5b565b61094c565b34801561028457600080fd5b5061012c610293366004610b5e565b50606090565b3480156102a557600080fd5b506101026102b4366004610dd7565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006301ffc9a760e01b6001600160e01b03198316148061031357506380ac58cd60e01b6001600160e01b03198316145b8061032e5750635b5e139f60e01b6001600160e01b03198316145b92915050565b60606000805461034390610e0a565b80601f016020809104026020016040519081016040528092919081815260200182805461036f90610e0a565b80156103bc5780601f10610391576101008083540402835291602001916103bc565b820191906000526020600020905b81548152906001019060200180831161039f57829003601f168201915b5050505050905090565b6000818152600260205260409020546001600160a01b03163381148061040f57506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b6104515760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000818152600260205260409020546001600160a01b038481169116146105035760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b6044820152606401610448565b6001600160a01b03821661054d5760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610448565b336001600160a01b038416148061058757506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b806105a857506000818152600460205260409020546001600160a01b031633145b6105e55760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610448565b6001600160a01b038316600090815260036020526040812080549161060983610e5b565b90915550506001600160a01b038216600090815260036020526040812080549161063283610e72565b9091555050600081815260026020908152604080832080546001600160a01b038088166001600160a01b031992831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6106b18383836104ad565b813b15806107515750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610721573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107459190610e8d565b6001600160e01b031916145b6107905760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610448565b505050565b60065460ff16156107de5760405162461bcd60e51b81526020600482015260136024820152721053149150511657d253925512505312569151606a1b6044820152606401610448565b81516107f1906000906020850190610a28565b508051610805906001906020840190610a28565b50506006805460ff1916600117905550565b6000818152600260205260409020546001600160a01b0316806108695760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b6044820152606401610448565b919050565b60006001600160a01b0382166108b55760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610448565b506001600160a01b031660009081526003602052604090205490565b60606001805461034390610e0a565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6109578484846104ad565b823b15806109e35750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a0290610994903390899088908890600401610eaa565b6020604051808303816000875af11580156109b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d79190610e8d565b6001600160e01b031916145b610a225760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610448565b50505050565b828054610a3490610e0a565b90600052602060002090601f016020900481019282610a565760008555610a9c565b82601f10610a6f57805160ff1916838001178555610a9c565b82800160010185558215610a9c579182015b82811115610a9c578251825591602001919060010190610a81565b50610aa8929150610aac565b5090565b5b80821115610aa85760008155600101610aad565b6001600160e01b031981168114610ad757600080fd5b50565b600060208284031215610aec57600080fd5b8135610af781610ac1565b9392505050565b6000815180845260005b81811015610b2457602081850181015186830182015201610b08565b81811115610b36576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610af76020830184610afe565b600060208284031215610b7057600080fd5b5035919050565b80356001600160a01b038116811461086957600080fd5b60008060408385031215610ba157600080fd5b610baa83610b77565b946020939093013593505050565b600080600060608486031215610bcd57600080fd5b610bd684610b77565b9250610be460208501610b77565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115610c2557610c25610bf4565b604051601f8501601f19908116603f01168101908282118183101715610c4d57610c4d610bf4565b81604052809350858152868686011115610c6657600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112610c9157600080fd5b610af783833560208501610c0a565b60008060408385031215610cb357600080fd5b823567ffffffffffffffff80821115610ccb57600080fd5b610cd786838701610c80565b93506020850135915080821115610ced57600080fd5b50610cfa85828601610c80565b9150509250929050565b600060208284031215610d1657600080fd5b610af782610b77565b60008060408385031215610d3257600080fd5b610d3b83610b77565b915060208301358015158114610d5057600080fd5b809150509250929050565b60008060008060808587031215610d7157600080fd5b610d7a85610b77565b9350610d8860208601610b77565b925060408501359150606085013567ffffffffffffffff811115610dab57600080fd5b8501601f81018713610dbc57600080fd5b610dcb87823560208401610c0a565b91505092959194509250565b60008060408385031215610dea57600080fd5b610df383610b77565b9150610e0160208401610b77565b90509250929050565b600181811c90821680610e1e57607f821691505b60208210811415610e3f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081610e6a57610e6a610e45565b506000190190565b6000600019821415610e8657610e86610e45565b5060010190565b600060208284031215610e9f57600080fd5b8151610af781610ac1565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090610edd90830184610afe565b969550505050505056fea2646970667358221220b79b5f39d2ab626efb68c2f6f351020c420dbbeb54db9ca63adb51425abda4e964736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x0F\x1D\x80a\0 `\09`\0\xF3\xFE`\x80`@R`\x046\x10a\0\xDDW`\x005`\xE0\x1C\x80ccR!\x1E\x11a\0\x7FW\x80c\xA2,\xB4e\x11a\0YW\x80c\xA2,\xB4e\x14a\x02EW\x80c\xB8\x8DO\xDE\x14a\x02eW\x80c\xC8{V\xDD\x14a\x02xW\x80c\xE9\x85\xE9\xC5\x14a\x02\x99W`\0\x80\xFD[\x80ccR!\x1E\x14a\x01\xE2W\x80cp\xA0\x821\x14a\x02\x02W\x80c\x95\xD8\x9BA\x14a\x020W`\0\x80\xFD[\x80c\t^\xA7\xB3\x11a\0\xBBW\x80c\t^\xA7\xB3\x14a\x01\x87W\x80c#\xB8r\xDD\x14a\x01\x9CW\x80cB\x84.\x0E\x14a\x01\xAFW\x80cL\xD8\x8Bv\x14a\x01\xC2W`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\0\xE2W\x80c\x06\xFD\xDE\x03\x14a\x01\x17W\x80c\x08\x18\x12\xFC\x14a\x019W[`\0\x80\xFD[4\x80\x15a\0\xEEW`\0\x80\xFD[Pa\x01\x02a\0\xFD6`\x04a\n\xDAV[a\x02\xE2V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01#W`\0\x80\xFD[Pa\x01,a\x034V[`@Qa\x01\x0E\x91\x90a\x0BKV[4\x80\x15a\x01EW`\0\x80\xFD[Pa\x01oa\x01T6`\x04a\x0B^V[`\0\x90\x81R`\x04` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\x0EV[a\x01\x9Aa\x01\x956`\x04a\x0B\x8EV[a\x03\xC6V[\0[a\x01\x9Aa\x01\xAA6`\x04a\x0B\xB8V[a\x04\xADV[a\x01\x9Aa\x01\xBD6`\x04a\x0B\xB8V[a\x06\xA6V[4\x80\x15a\x01\xCEW`\0\x80\xFD[Pa\x01\x9Aa\x01\xDD6`\x04a\x0C\xA0V[a\x07\x95V[4\x80\x15a\x01\xEEW`\0\x80\xFD[Pa\x01oa\x01\xFD6`\x04a\x0B^V[a\x08\x17V[4\x80\x15a\x02\x0EW`\0\x80\xFD[Pa\x02\"a\x02\x1D6`\x04a\r\x04V[a\x08nV[`@Q\x90\x81R` \x01a\x01\x0EV[4\x80\x15a\x02=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07E\x91\x90a\x0E\x8DV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[a\x07\x90W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01Ro\x15S\x94\xD0Q\x91W\xD4\x91P\xD2T\x12QS\x95`\x82\x1B`D\x82\x01R`d\x01a\x04HV[PPPV[`\x06T`\xFF\x16\x15a\x07\xDEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x10S\x14\x91PQ\x16W\xD2S\x92U\x12PS\x12V\x91Q`j\x1B`D\x82\x01R`d\x01a\x04HV[\x81Qa\x07\xF1\x90`\0\x90` \x85\x01\x90a\n(V[P\x80Qa\x08\x05\x90`\x01\x90` \x84\x01\x90a\n(V[PP`\x06\x80T`\xFF\x19\x16`\x01\x17\x90UPV[`\0\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x80a\x08iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\n`$\x82\x01Ri\x13\x93\xD5\x17\xD3RS\x95\x11Q`\xB2\x1B`D\x82\x01R`d\x01a\x04HV[\x91\x90PV[`\0`\x01`\x01`\xA0\x1B\x03\x82\x16a\x08\xB5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkZERO_ADDRESS`\xA0\x1B`D\x82\x01R`d\x01a\x04HV[P`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[```\x01\x80Ta\x03C\x90a\x0E\nV[3`\0\x81\x81R`\x05` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x90\x83R\x92\x81\x90 \x80T`\xFF\x19\x16\x86\x15\x15\x90\x81\x17\x90\x91U\x90Q\x90\x81R\x91\x92\x91\x7F\x170~\xAB9\xABa\x07\xE8\x89\x98E\xAD=Y\xBD\x96S\xF2\0\xF2 \x92\x04\x89\xCA+Y7il1\x91\x01`@Q\x80\x91\x03\x90\xA3PPV[a\tW\x84\x84\x84a\x04\xADV[\x82;\x15\x80a\t\xE3WP`@Qc\n\x85\xBD\x01`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x15\x0Bz\x02\x90a\t\x94\x903\x90\x89\x90\x88\x90\x88\x90`\x04\x01a\x0E\xAAV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\t\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xD7\x91\x90a\x0E\x8DV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[a\n\"W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01Ro\x15S\x94\xD0Q\x91W\xD4\x91P\xD2T\x12QS\x95`\x82\x1B`D\x82\x01R`d\x01a\x04HV[PPPPV[\x82\x80Ta\n4\x90a\x0E\nV[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82a\nVW`\0\x85Ua\n\x9CV[\x82`\x1F\x10a\noW\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ua\n\x9CV[\x82\x80\x01`\x01\x01\x85U\x82\x15a\n\x9CW\x91\x82\x01[\x82\x81\x11\x15a\n\x9CW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90a\n\x81V[Pa\n\xA8\x92\x91Pa\n\xACV[P\x90V[[\x80\x82\x11\x15a\n\xA8W`\0\x81U`\x01\x01a\n\xADV[`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\n\xD7W`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15a\n\xECW`\0\x80\xFD[\x815a\n\xF7\x81a\n\xC1V[\x93\x92PPPV[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x0B$W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x0B\x08V[\x81\x81\x11\x15a\x0B6W`\0` \x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a\n\xF7` \x83\x01\x84a\n\xFEV[`\0` \x82\x84\x03\x12\x15a\x0BpW`\0\x80\xFD[P5\x91\x90PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x08iW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xA1W`\0\x80\xFD[a\x0B\xAA\x83a\x0BwV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0B\xCDW`\0\x80\xFD[a\x0B\xD6\x84a\x0BwV[\x92Pa\x0B\xE4` \x85\x01a\x0BwV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x0C%Wa\x0C%a\x0B\xF4V[`@Q`\x1F\x85\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x0CMWa\x0CMa\x0B\xF4V[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x0CfW`\0\x80\xFD[\x85\x85` \x83\x017`\0` \x87\x83\x01\x01RPPP\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a\x0C\x91W`\0\x80\xFD[a\n\xF7\x83\x835` \x85\x01a\x0C\nV[`\0\x80`@\x83\x85\x03\x12\x15a\x0C\xB3W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\xCBW`\0\x80\xFD[a\x0C\xD7\x86\x83\x87\x01a\x0C\x80V[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x0C\xEDW`\0\x80\xFD[Pa\x0C\xFA\x85\x82\x86\x01a\x0C\x80V[\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\r\x16W`\0\x80\xFD[a\n\xF7\x82a\x0BwV[`\0\x80`@\x83\x85\x03\x12\x15a\r2W`\0\x80\xFD[a\r;\x83a\x0BwV[\x91P` \x83\x015\x80\x15\x15\x81\x14a\rPW`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\rqW`\0\x80\xFD[a\rz\x85a\x0BwV[\x93Pa\r\x88` \x86\x01a\x0BwV[\x92P`@\x85\x015\x91P``\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\xABW`\0\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\r\xBCW`\0\x80\xFD[a\r\xCB\x87\x825` \x84\x01a\x0C\nV[\x91PP\x92\x95\x91\x94P\x92PV[`\0\x80`@\x83\x85\x03\x12\x15a\r\xEAW`\0\x80\xFD[a\r\xF3\x83a\x0BwV[\x91Pa\x0E\x01` \x84\x01a\x0BwV[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0E\x1EW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x0E?WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x81a\x0EjWa\x0Eja\x0EEV[P`\0\x19\x01\x90V[`\0`\0\x19\x82\x14\x15a\x0E\x86Wa\x0E\x86a\x0EEV[P`\x01\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x0E\x9FW`\0\x80\xFD[\x81Qa\n\xF7\x81a\n\xC1V[`\x01`\x01`\xA0\x1B\x03\x85\x81\x16\x82R\x84\x16` \x82\x01R`@\x81\x01\x83\x90R`\x80``\x82\x01\x81\x90R`\0\x90a\x0E\xDD\x90\x83\x01\x84a\n\xFEV[\x96\x95PPPPPPV\xFE\xA2dipfsX\"\x12 \xB7\x9B_9\xD2\xABbn\xFBh\xC2\xF6\xF3Q\x02\x0CB\r\xBB\xEBT\xDB\x9C\xA6:\xDBQBZ\xBD\xA4\xE9dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x6080604052600436106100dd5760003560e01c80636352211e1161007f578063a22cb46511610059578063a22cb46514610245578063b88d4fde14610265578063c87b56dd14610278578063e985e9c51461029957600080fd5b80636352211e146101e257806370a082311461020257806395d89b411461023057600080fd5b8063095ea7b3116100bb578063095ea7b31461018757806323b872dd1461019c57806342842e0e146101af5780634cd88b76146101c257600080fd5b806301ffc9a7146100e257806306fdde0314610117578063081812fc14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610ada565b6102e2565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b5061012c610334565b60405161010e9190610b4b565b34801561014557600080fd5b5061016f610154366004610b5e565b6000908152600460205260409020546001600160a01b031690565b6040516001600160a01b03909116815260200161010e565b61019a610195366004610b8e565b6103c6565b005b61019a6101aa366004610bb8565b6104ad565b61019a6101bd366004610bb8565b6106a6565b3480156101ce57600080fd5b5061019a6101dd366004610ca0565b610795565b3480156101ee57600080fd5b5061016f6101fd366004610b5e565b610817565b34801561020e57600080fd5b5061022261021d366004610d04565b61086e565b60405190815260200161010e565b34801561023c57600080fd5b5061012c6108d1565b34801561025157600080fd5b5061019a610260366004610d1f565b6108e0565b61019a610273366004610d5b565b61094c565b34801561028457600080fd5b5061012c610293366004610b5e565b50606090565b3480156102a557600080fd5b506101026102b4366004610dd7565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006301ffc9a760e01b6001600160e01b03198316148061031357506380ac58cd60e01b6001600160e01b03198316145b8061032e5750635b5e139f60e01b6001600160e01b03198316145b92915050565b60606000805461034390610e0a565b80601f016020809104026020016040519081016040528092919081815260200182805461036f90610e0a565b80156103bc5780601f10610391576101008083540402835291602001916103bc565b820191906000526020600020905b81548152906001019060200180831161039f57829003601f168201915b5050505050905090565b6000818152600260205260409020546001600160a01b03163381148061040f57506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b6104515760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000818152600260205260409020546001600160a01b038481169116146105035760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b6044820152606401610448565b6001600160a01b03821661054d5760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610448565b336001600160a01b038416148061058757506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b806105a857506000818152600460205260409020546001600160a01b031633145b6105e55760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610448565b6001600160a01b038316600090815260036020526040812080549161060983610e5b565b90915550506001600160a01b038216600090815260036020526040812080549161063283610e72565b9091555050600081815260026020908152604080832080546001600160a01b038088166001600160a01b031992831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6106b18383836104ad565b813b15806107515750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610721573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107459190610e8d565b6001600160e01b031916145b6107905760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610448565b505050565b60065460ff16156107de5760405162461bcd60e51b81526020600482015260136024820152721053149150511657d253925512505312569151606a1b6044820152606401610448565b81516107f1906000906020850190610a28565b508051610805906001906020840190610a28565b50506006805460ff1916600117905550565b6000818152600260205260409020546001600160a01b0316806108695760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b6044820152606401610448565b919050565b60006001600160a01b0382166108b55760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610448565b506001600160a01b031660009081526003602052604090205490565b60606001805461034390610e0a565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6109578484846104ad565b823b15806109e35750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a0290610994903390899088908890600401610eaa565b6020604051808303816000875af11580156109b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d79190610e8d565b6001600160e01b031916145b610a225760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610448565b50505050565b828054610a3490610e0a565b90600052602060002090601f016020900481019282610a565760008555610a9c565b82601f10610a6f57805160ff1916838001178555610a9c565b82800160010185558215610a9c579182015b82811115610a9c578251825591602001919060010190610a81565b50610aa8929150610aac565b5090565b5b80821115610aa85760008155600101610aad565b6001600160e01b031981168114610ad757600080fd5b50565b600060208284031215610aec57600080fd5b8135610af781610ac1565b9392505050565b6000815180845260005b81811015610b2457602081850181015186830182015201610b08565b81811115610b36576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610af76020830184610afe565b600060208284031215610b7057600080fd5b5035919050565b80356001600160a01b038116811461086957600080fd5b60008060408385031215610ba157600080fd5b610baa83610b77565b946020939093013593505050565b600080600060608486031215610bcd57600080fd5b610bd684610b77565b9250610be460208501610b77565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115610c2557610c25610bf4565b604051601f8501601f19908116603f01168101908282118183101715610c4d57610c4d610bf4565b81604052809350858152868686011115610c6657600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112610c9157600080fd5b610af783833560208501610c0a565b60008060408385031215610cb357600080fd5b823567ffffffffffffffff80821115610ccb57600080fd5b610cd786838701610c80565b93506020850135915080821115610ced57600080fd5b50610cfa85828601610c80565b9150509250929050565b600060208284031215610d1657600080fd5b610af782610b77565b60008060408385031215610d3257600080fd5b610d3b83610b77565b915060208301358015158114610d5057600080fd5b809150509250929050565b60008060008060808587031215610d7157600080fd5b610d7a85610b77565b9350610d8860208601610b77565b925060408501359150606085013567ffffffffffffffff811115610dab57600080fd5b8501601f81018713610dbc57600080fd5b610dcb87823560208401610c0a565b91505092959194509250565b60008060408385031215610dea57600080fd5b610df383610b77565b9150610e0160208401610b77565b90509250929050565b600181811c90821680610e1e57607f821691505b60208210811415610e3f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081610e6a57610e6a610e45565b506000190190565b6000600019821415610e8657610e86610e45565b5060010190565b600060208284031215610e9f57600080fd5b8151610af781610ac1565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090610edd90830184610afe565b969550505050505056fea2646970667358221220b79b5f39d2ab626efb68c2f6f351020c420dbbeb54db9ca63adb51425abda4e964736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x046\x10a\0\xDDW`\x005`\xE0\x1C\x80ccR!\x1E\x11a\0\x7FW\x80c\xA2,\xB4e\x11a\0YW\x80c\xA2,\xB4e\x14a\x02EW\x80c\xB8\x8DO\xDE\x14a\x02eW\x80c\xC8{V\xDD\x14a\x02xW\x80c\xE9\x85\xE9\xC5\x14a\x02\x99W`\0\x80\xFD[\x80ccR!\x1E\x14a\x01\xE2W\x80cp\xA0\x821\x14a\x02\x02W\x80c\x95\xD8\x9BA\x14a\x020W`\0\x80\xFD[\x80c\t^\xA7\xB3\x11a\0\xBBW\x80c\t^\xA7\xB3\x14a\x01\x87W\x80c#\xB8r\xDD\x14a\x01\x9CW\x80cB\x84.\x0E\x14a\x01\xAFW\x80cL\xD8\x8Bv\x14a\x01\xC2W`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\0\xE2W\x80c\x06\xFD\xDE\x03\x14a\x01\x17W\x80c\x08\x18\x12\xFC\x14a\x019W[`\0\x80\xFD[4\x80\x15a\0\xEEW`\0\x80\xFD[Pa\x01\x02a\0\xFD6`\x04a\n\xDAV[a\x02\xE2V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01#W`\0\x80\xFD[Pa\x01,a\x034V[`@Qa\x01\x0E\x91\x90a\x0BKV[4\x80\x15a\x01EW`\0\x80\xFD[Pa\x01oa\x01T6`\x04a\x0B^V[`\0\x90\x81R`\x04` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\x0EV[a\x01\x9Aa\x01\x956`\x04a\x0B\x8EV[a\x03\xC6V[\0[a\x01\x9Aa\x01\xAA6`\x04a\x0B\xB8V[a\x04\xADV[a\x01\x9Aa\x01\xBD6`\x04a\x0B\xB8V[a\x06\xA6V[4\x80\x15a\x01\xCEW`\0\x80\xFD[Pa\x01\x9Aa\x01\xDD6`\x04a\x0C\xA0V[a\x07\x95V[4\x80\x15a\x01\xEEW`\0\x80\xFD[Pa\x01oa\x01\xFD6`\x04a\x0B^V[a\x08\x17V[4\x80\x15a\x02\x0EW`\0\x80\xFD[Pa\x02\"a\x02\x1D6`\x04a\r\x04V[a\x08nV[`@Q\x90\x81R` \x01a\x01\x0EV[4\x80\x15a\x02=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07E\x91\x90a\x0E\x8DV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[a\x07\x90W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01Ro\x15S\x94\xD0Q\x91W\xD4\x91P\xD2T\x12QS\x95`\x82\x1B`D\x82\x01R`d\x01a\x04HV[PPPV[`\x06T`\xFF\x16\x15a\x07\xDEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x10S\x14\x91PQ\x16W\xD2S\x92U\x12PS\x12V\x91Q`j\x1B`D\x82\x01R`d\x01a\x04HV[\x81Qa\x07\xF1\x90`\0\x90` \x85\x01\x90a\n(V[P\x80Qa\x08\x05\x90`\x01\x90` \x84\x01\x90a\n(V[PP`\x06\x80T`\xFF\x19\x16`\x01\x17\x90UPV[`\0\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x80a\x08iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\n`$\x82\x01Ri\x13\x93\xD5\x17\xD3RS\x95\x11Q`\xB2\x1B`D\x82\x01R`d\x01a\x04HV[\x91\x90PV[`\0`\x01`\x01`\xA0\x1B\x03\x82\x16a\x08\xB5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkZERO_ADDRESS`\xA0\x1B`D\x82\x01R`d\x01a\x04HV[P`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[```\x01\x80Ta\x03C\x90a\x0E\nV[3`\0\x81\x81R`\x05` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x90\x83R\x92\x81\x90 \x80T`\xFF\x19\x16\x86\x15\x15\x90\x81\x17\x90\x91U\x90Q\x90\x81R\x91\x92\x91\x7F\x170~\xAB9\xABa\x07\xE8\x89\x98E\xAD=Y\xBD\x96S\xF2\0\xF2 \x92\x04\x89\xCA+Y7il1\x91\x01`@Q\x80\x91\x03\x90\xA3PPV[a\tW\x84\x84\x84a\x04\xADV[\x82;\x15\x80a\t\xE3WP`@Qc\n\x85\xBD\x01`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x15\x0Bz\x02\x90a\t\x94\x903\x90\x89\x90\x88\x90\x88\x90`\x04\x01a\x0E\xAAV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\t\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xD7\x91\x90a\x0E\x8DV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[a\n\"W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01Ro\x15S\x94\xD0Q\x91W\xD4\x91P\xD2T\x12QS\x95`\x82\x1B`D\x82\x01R`d\x01a\x04HV[PPPPV[\x82\x80Ta\n4\x90a\x0E\nV[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82a\nVW`\0\x85Ua\n\x9CV[\x82`\x1F\x10a\noW\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ua\n\x9CV[\x82\x80\x01`\x01\x01\x85U\x82\x15a\n\x9CW\x91\x82\x01[\x82\x81\x11\x15a\n\x9CW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90a\n\x81V[Pa\n\xA8\x92\x91Pa\n\xACV[P\x90V[[\x80\x82\x11\x15a\n\xA8W`\0\x81U`\x01\x01a\n\xADV[`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\n\xD7W`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15a\n\xECW`\0\x80\xFD[\x815a\n\xF7\x81a\n\xC1V[\x93\x92PPPV[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x0B$W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x0B\x08V[\x81\x81\x11\x15a\x0B6W`\0` \x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a\n\xF7` \x83\x01\x84a\n\xFEV[`\0` \x82\x84\x03\x12\x15a\x0BpW`\0\x80\xFD[P5\x91\x90PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x08iW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xA1W`\0\x80\xFD[a\x0B\xAA\x83a\x0BwV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0B\xCDW`\0\x80\xFD[a\x0B\xD6\x84a\x0BwV[\x92Pa\x0B\xE4` \x85\x01a\x0BwV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x0C%Wa\x0C%a\x0B\xF4V[`@Q`\x1F\x85\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x0CMWa\x0CMa\x0B\xF4V[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x0CfW`\0\x80\xFD[\x85\x85` \x83\x017`\0` \x87\x83\x01\x01RPPP\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a\x0C\x91W`\0\x80\xFD[a\n\xF7\x83\x835` \x85\x01a\x0C\nV[`\0\x80`@\x83\x85\x03\x12\x15a\x0C\xB3W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\xCBW`\0\x80\xFD[a\x0C\xD7\x86\x83\x87\x01a\x0C\x80V[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x0C\xEDW`\0\x80\xFD[Pa\x0C\xFA\x85\x82\x86\x01a\x0C\x80V[\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\r\x16W`\0\x80\xFD[a\n\xF7\x82a\x0BwV[`\0\x80`@\x83\x85\x03\x12\x15a\r2W`\0\x80\xFD[a\r;\x83a\x0BwV[\x91P` \x83\x015\x80\x15\x15\x81\x14a\rPW`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\rqW`\0\x80\xFD[a\rz\x85a\x0BwV[\x93Pa\r\x88` \x86\x01a\x0BwV[\x92P`@\x85\x015\x91P``\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\xABW`\0\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\r\xBCW`\0\x80\xFD[a\r\xCB\x87\x825` \x84\x01a\x0C\nV[\x91PP\x92\x95\x91\x94P\x92PV[`\0\x80`@\x83\x85\x03\x12\x15a\r\xEAW`\0\x80\xFD[a\r\xF3\x83a\x0BwV[\x91Pa\x0E\x01` \x84\x01a\x0BwV[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0E\x1EW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x0E?WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x81a\x0EjWa\x0Eja\x0EEV[P`\0\x19\x01\x90V[`\0`\0\x19\x82\x14\x15a\x0E\x86Wa\x0E\x86a\x0EEV[P`\x01\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x0E\x9FW`\0\x80\xFD[\x81Qa\n\xF7\x81a\n\xC1V[`\x01`\x01`\xA0\x1B\x03\x85\x81\x16\x82R\x84\x16` \x82\x01R`@\x81\x01\x83\x90R`\x80``\x82\x01\x81\x90R`\0\x90a\x0E\xDD\x90\x83\x01\x84a\n\xFEV[\x96\x95PPPPPPV\xFE\xA2dipfsX\"\x12 \xB7\x9B_9\xD2\xABbn\xFBh\xC2\xF6\xF3Q\x02\x0CB\r\xBB\xEBT\xDB\x9C\xA6:\xDBQBZ\xBD\xA4\xE9dsolcC\0\x08\x0C\x003", + ); + /**Event with signature `Approval(address,address,uint256)` and selector `0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925`. + ```solidity + event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Approval { + #[allow(missing_docs)] + pub _owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _approved: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Approval { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + const SIGNATURE: &'static str = "Approval(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 140u8, 91u8, 225u8, 229u8, 235u8, 236u8, 125u8, 91u8, 209u8, 79u8, 113u8, 66u8, + 125u8, 30u8, 132u8, 243u8, 221u8, 3u8, 20u8, 192u8, 247u8, 178u8, 41u8, 30u8, + 91u8, 32u8, 10u8, 200u8, 199u8, 195u8, 185u8, 37u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _owner: topics.1, + _approved: topics.2, + _tokenId: topics.3, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._owner.clone(), + self._approved.clone(), + self._tokenId.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self._owner, + ); + out[2usize] = ::encode_topic( + &self._approved, + ); + out[3usize] = as alloy_sol_types::EventTopic>::encode_topic(&self._tokenId); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Approval { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Approval> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Approval) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `ApprovalForAll(address,address,bool)` and selector `0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31`. + ```solidity + event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct ApprovalForAll { + #[allow(missing_docs)] + pub _owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _approved: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ApprovalForAll { + type DataTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "ApprovalForAll(address,address,bool)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 23u8, 48u8, 126u8, 171u8, 57u8, 171u8, 97u8, 7u8, 232u8, 137u8, 152u8, 69u8, + 173u8, 61u8, 89u8, 189u8, 150u8, 83u8, 242u8, 0u8, 242u8, 32u8, 146u8, 4u8, + 137u8, 202u8, 43u8, 89u8, 55u8, 105u8, 108u8, 49u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _owner: topics.1, + _operator: topics.2, + _approved: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self._approved, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._owner.clone(), + self._operator.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self._owner, + ); + out[2usize] = ::encode_topic( + &self._operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ApprovalForAll { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ApprovalForAll> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ApprovalForAll) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Transfer(address,address,uint256)` and selector `0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef`. + ```solidity + event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Transfer { + #[allow(missing_docs)] + pub _from: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _to: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Transfer { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + const SIGNATURE: &'static str = "Transfer(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 221u8, 242u8, 82u8, 173u8, 27u8, 226u8, 200u8, 155u8, 105u8, 194u8, 176u8, + 104u8, 252u8, 55u8, 141u8, 170u8, 149u8, 43u8, 167u8, 241u8, 99u8, 196u8, + 161u8, 22u8, 40u8, 245u8, 90u8, 77u8, 245u8, 35u8, 179u8, 239u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _from: topics.1, + _to: topics.2, + _tokenId: topics.3, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._from.clone(), + self._to.clone(), + self._tokenId.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self._from, + ); + out[2usize] = ::encode_topic( + &self._to, + ); + out[3usize] = as alloy_sol_types::EventTopic>::encode_topic(&self._tokenId); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Transfer { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Transfer> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Transfer) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `approve(address,uint256)` and selector `0x095ea7b3`. + ```solidity + function approve(address spender, uint256 id) external payable; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveCall { + pub spender: alloy::sol_types::private::Address, + pub id: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`approve(address,uint256)`](approveCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveCall) -> Self { + (value.spender, value.id) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + spender: tuple.0, + id: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for approveCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = approveReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "approve(address,uint256)"; + const SELECTOR: [u8; 4] = [9u8, 94u8, 167u8, 179u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.spender, + ), + as alloy_sol_types::SolType>::tokenize( + &self.id, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `balanceOf(address)` and selector `0x70a08231`. + ```solidity + function balanceOf(address owner) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfCall { + pub owner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`balanceOf(address)`](balanceOfCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfCall) -> Self { + (value.owner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { owner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for balanceOfCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = balanceOfReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "balanceOf(address)"; + const SELECTOR: [u8; 4] = [112u8, 160u8, 130u8, 49u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.owner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getApproved(uint256)` and selector `0x081812fc`. + ```solidity + function getApproved(uint256 id) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApprovedCall { + pub id: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getApproved(uint256)`](getApprovedCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApprovedReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApprovedCall) -> Self { + (value.id,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApprovedCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { id: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApprovedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApprovedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getApprovedCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getApprovedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getApproved(uint256)"; + const SELECTOR: [u8; 4] = [8u8, 24u8, 18u8, 252u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.id, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `initialize(string,string)` and selector `0x4cd88b76`. + ```solidity + function initialize(string memory name_, string memory symbol_) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeCall { + pub name_: alloy::sol_types::private::String, + pub symbol_: alloy::sol_types::private::String, + } + ///Container type for the return parameters of the [`initialize(string,string)`](initializeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::String, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::String, + alloy::sol_types::private::String, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeCall) -> Self { + (value.name_, value.symbol_) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + name_: tuple.0, + symbol_: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for initializeCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::String, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = initializeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "initialize(string,string)"; + const SELECTOR: [u8; 4] = [76u8, 216u8, 139u8, 118u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.name_, + ), + ::tokenize( + &self.symbol_, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `isApprovedForAll(address,address)` and selector `0xe985e9c5`. + ```solidity + function isApprovedForAll(address owner, address operator) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isApprovedForAllCall { + pub owner: alloy::sol_types::private::Address, + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`isApprovedForAll(address,address)`](isApprovedForAllCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isApprovedForAllReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isApprovedForAllCall) -> Self { + (value.owner, value.operator) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isApprovedForAllCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + owner: tuple.0, + operator: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isApprovedForAllReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isApprovedForAllReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for isApprovedForAllCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = isApprovedForAllReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "isApprovedForAll(address,address)"; + const SELECTOR: [u8; 4] = [233u8, 133u8, 233u8, 197u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.owner, + ), + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `name()` and selector `0x06fdde03`. + ```solidity + function name() external view returns (string memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct nameCall {} + ///Container type for the return parameters of the [`name()`](nameCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct nameReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: nameCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for nameCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: nameReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for nameReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for nameCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = nameReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "name()"; + const SELECTOR: [u8; 4] = [6u8, 253u8, 222u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `ownerOf(uint256)` and selector `0x6352211e`. + ```solidity + function ownerOf(uint256 id) external view returns (address owner); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerOfCall { + pub id: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`ownerOf(uint256)`](ownerOfCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerOfReturn { + pub owner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerOfCall) -> Self { + (value.id,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerOfCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { id: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerOfReturn) -> Self { + (value.owner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerOfReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { owner: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerOfCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerOfReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ownerOf(uint256)"; + const SELECTOR: [u8; 4] = [99u8, 82u8, 33u8, 30u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.id, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `safeTransferFrom(address,address,uint256)` and selector `0x42842e0e`. + ```solidity + function safeTransferFrom(address from, address to, uint256 id) external payable; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_0Call { + pub from: alloy::sol_types::private::Address, + pub to: alloy::sol_types::private::Address, + pub id: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`safeTransferFrom(address,address,uint256)`](safeTransferFrom_0Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_0Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_0Call) -> Self { + (value.from, value.to, value.id) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for safeTransferFrom_0Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + from: tuple.0, + to: tuple.1, + id: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_0Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for safeTransferFrom_0Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for safeTransferFrom_0Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = safeTransferFrom_0Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "safeTransferFrom(address,address,uint256)"; + const SELECTOR: [u8; 4] = [66u8, 132u8, 46u8, 14u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.from, + ), + ::tokenize( + &self.to, + ), + as alloy_sol_types::SolType>::tokenize( + &self.id, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `safeTransferFrom(address,address,uint256,bytes)` and selector `0xb88d4fde`. + ```solidity + function safeTransferFrom(address from, address to, uint256 id, bytes memory data) external payable; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_1Call { + pub from: alloy::sol_types::private::Address, + pub to: alloy::sol_types::private::Address, + pub id: alloy::sol_types::private::primitives::aliases::U256, + pub data: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`safeTransferFrom(address,address,uint256,bytes)`](safeTransferFrom_1Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_1Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_1Call) -> Self { + (value.from, value.to, value.id, value.data) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for safeTransferFrom_1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + from: tuple.0, + to: tuple.1, + id: tuple.2, + data: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_1Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for safeTransferFrom_1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for safeTransferFrom_1Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = safeTransferFrom_1Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "safeTransferFrom(address,address,uint256,bytes)"; + const SELECTOR: [u8; 4] = [184u8, 141u8, 79u8, 222u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.from, + ), + ::tokenize( + &self.to, + ), + as alloy_sol_types::SolType>::tokenize( + &self.id, + ), + ::tokenize( + &self.data, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setApprovalForAll(address,bool)` and selector `0xa22cb465`. + ```solidity + function setApprovalForAll(address operator, bool approved) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setApprovalForAllCall { + pub operator: alloy::sol_types::private::Address, + pub approved: bool, + } + ///Container type for the return parameters of the [`setApprovalForAll(address,bool)`](setApprovalForAllCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setApprovalForAllReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address, bool); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setApprovalForAllCall) -> Self { + (value.operator, value.approved) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setApprovalForAllCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + approved: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setApprovalForAllReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setApprovalForAllReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setApprovalForAllCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setApprovalForAllReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setApprovalForAll(address,bool)"; + const SELECTOR: [u8; 4] = [162u8, 44u8, 180u8, 101u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.approved, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7`. + ```solidity + function supportsInterface(bytes4 interfaceId) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct supportsInterfaceCall { + pub interfaceId: alloy::sol_types::private::FixedBytes<4>, + } + ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct supportsInterfaceReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: supportsInterfaceCall) -> Self { + (value.interfaceId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for supportsInterfaceCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + interfaceId: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: supportsInterfaceReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for supportsInterfaceReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for supportsInterfaceCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = supportsInterfaceReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "supportsInterface(bytes4)"; + const SELECTOR: [u8; 4] = [1u8, 255u8, 201u8, 167u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.interfaceId), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `symbol()` and selector `0x95d89b41`. + ```solidity + function symbol() external view returns (string memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct symbolCall {} + ///Container type for the return parameters of the [`symbol()`](symbolCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct symbolReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: symbolCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for symbolCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: symbolReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for symbolReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for symbolCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = symbolReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "symbol()"; + const SELECTOR: [u8; 4] = [149u8, 216u8, 155u8, 65u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `tokenURI(uint256)` and selector `0xc87b56dd`. + ```solidity + function tokenURI(uint256 id) external view returns (string memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct tokenURICall { + pub id: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`tokenURI(uint256)`](tokenURICall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct tokenURIReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: tokenURICall) -> Self { + (value.id,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for tokenURICall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { id: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: tokenURIReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for tokenURIReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for tokenURICall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = tokenURIReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "tokenURI(uint256)"; + const SELECTOR: [u8; 4] = [200u8, 123u8, 86u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.id, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd`. + ```solidity + function transferFrom(address from, address to, uint256 id) external payable; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromCall { + pub from: alloy::sol_types::private::Address, + pub to: alloy::sol_types::private::Address, + pub id: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`transferFrom(address,address,uint256)`](transferFromCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromCall) -> Self { + (value.from, value.to, value.id) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + from: tuple.0, + to: tuple.1, + id: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferFromCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferFromReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferFrom(address,address,uint256)"; + const SELECTOR: [u8; 4] = [35u8, 184u8, 114u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.from, + ), + ::tokenize( + &self.to, + ), + as alloy_sol_types::SolType>::tokenize( + &self.id, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`MockERC721`](self) function calls. + pub enum MockERC721Calls { + approve(approveCall), + balanceOf(balanceOfCall), + getApproved(getApprovedCall), + initialize(initializeCall), + isApprovedForAll(isApprovedForAllCall), + name(nameCall), + ownerOf(ownerOfCall), + safeTransferFrom_0(safeTransferFrom_0Call), + safeTransferFrom_1(safeTransferFrom_1Call), + setApprovalForAll(setApprovalForAllCall), + supportsInterface(supportsInterfaceCall), + symbol(symbolCall), + tokenURI(tokenURICall), + transferFrom(transferFromCall), + } + #[automatically_derived] + impl MockERC721Calls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [1u8, 255u8, 201u8, 167u8], + [6u8, 253u8, 222u8, 3u8], + [8u8, 24u8, 18u8, 252u8], + [9u8, 94u8, 167u8, 179u8], + [35u8, 184u8, 114u8, 221u8], + [66u8, 132u8, 46u8, 14u8], + [76u8, 216u8, 139u8, 118u8], + [99u8, 82u8, 33u8, 30u8], + [112u8, 160u8, 130u8, 49u8], + [149u8, 216u8, 155u8, 65u8], + [162u8, 44u8, 180u8, 101u8], + [184u8, 141u8, 79u8, 222u8], + [200u8, 123u8, 86u8, 221u8], + [233u8, 133u8, 233u8, 197u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockERC721Calls { + const NAME: &'static str = "MockERC721Calls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 14usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::approve(_) => ::SELECTOR, + Self::balanceOf(_) => ::SELECTOR, + Self::getApproved(_) => ::SELECTOR, + Self::initialize(_) => ::SELECTOR, + Self::isApprovedForAll(_) => { + ::SELECTOR + } + Self::name(_) => ::SELECTOR, + Self::ownerOf(_) => ::SELECTOR, + Self::safeTransferFrom_0(_) => { + ::SELECTOR + } + Self::safeTransferFrom_1(_) => { + ::SELECTOR + } + Self::setApprovalForAll(_) => { + ::SELECTOR + } + Self::supportsInterface(_) => { + ::SELECTOR + } + Self::symbol(_) => ::SELECTOR, + Self::tokenURI(_) => ::SELECTOR, + Self::transferFrom(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn(&[u8], bool) -> alloy_sol_types::Result] = &[ + { + fn supportsInterface( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockERC721Calls::supportsInterface) + } + supportsInterface + }, + { + fn name( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(MockERC721Calls::name) + } + name + }, + { + fn getApproved( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockERC721Calls::getApproved) + } + getApproved + }, + { + fn approve( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(MockERC721Calls::approve) + } + approve + }, + { + fn transferFrom( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockERC721Calls::transferFrom) + } + transferFrom + }, + { + fn safeTransferFrom_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockERC721Calls::safeTransferFrom_0) + } + safeTransferFrom_0 + }, + { + fn initialize( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(MockERC721Calls::initialize) + } + initialize + }, + { + fn ownerOf( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(MockERC721Calls::ownerOf) + } + ownerOf + }, + { + fn balanceOf( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(MockERC721Calls::balanceOf) + } + balanceOf + }, + { + fn symbol( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(MockERC721Calls::symbol) + } + symbol + }, + { + fn setApprovalForAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockERC721Calls::setApprovalForAll) + } + setApprovalForAll + }, + { + fn safeTransferFrom_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockERC721Calls::safeTransferFrom_1) + } + safeTransferFrom_1 + }, + { + fn tokenURI( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(MockERC721Calls::tokenURI) + } + tokenURI + }, + { + fn isApprovedForAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(MockERC721Calls::isApprovedForAll) + } + isApprovedForAll + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::approve(inner) => { + ::abi_encoded_size(inner) + } + Self::balanceOf(inner) => { + ::abi_encoded_size(inner) + } + Self::getApproved(inner) => { + ::abi_encoded_size(inner) + } + Self::initialize(inner) => { + ::abi_encoded_size(inner) + } + Self::isApprovedForAll(inner) => { + ::abi_encoded_size(inner) + } + Self::name(inner) => { + ::abi_encoded_size(inner) + } + Self::ownerOf(inner) => { + ::abi_encoded_size(inner) + } + Self::safeTransferFrom_0(inner) => { + ::abi_encoded_size(inner) + } + Self::safeTransferFrom_1(inner) => { + ::abi_encoded_size(inner) + } + Self::setApprovalForAll(inner) => { + ::abi_encoded_size(inner) + } + Self::supportsInterface(inner) => { + ::abi_encoded_size(inner) + } + Self::symbol(inner) => { + ::abi_encoded_size(inner) + } + Self::tokenURI(inner) => { + ::abi_encoded_size(inner) + } + Self::transferFrom(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::approve(inner) => { + ::abi_encode_raw(inner, out) + } + Self::balanceOf(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getApproved(inner) => { + ::abi_encode_raw(inner, out) + } + Self::initialize(inner) => { + ::abi_encode_raw(inner, out) + } + Self::isApprovedForAll(inner) => { + ::abi_encode_raw(inner, out) + } + Self::name(inner) => { + ::abi_encode_raw(inner, out) + } + Self::ownerOf(inner) => { + ::abi_encode_raw(inner, out) + } + Self::safeTransferFrom_0(inner) => { + ::abi_encode_raw(inner, out) + } + Self::safeTransferFrom_1(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setApprovalForAll(inner) => { + ::abi_encode_raw(inner, out) + } + Self::supportsInterface(inner) => { + ::abi_encode_raw(inner, out) + } + Self::symbol(inner) => { + ::abi_encode_raw(inner, out) + } + Self::tokenURI(inner) => { + ::abi_encode_raw(inner, out) + } + Self::transferFrom(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`MockERC721`](self) events. + pub enum MockERC721Events { + Approval(Approval), + ApprovalForAll(ApprovalForAll), + Transfer(Transfer), + } + #[automatically_derived] + impl MockERC721Events { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 23u8, 48u8, 126u8, 171u8, 57u8, 171u8, 97u8, 7u8, 232u8, 137u8, 152u8, 69u8, 173u8, + 61u8, 89u8, 189u8, 150u8, 83u8, 242u8, 0u8, 242u8, 32u8, 146u8, 4u8, 137u8, 202u8, + 43u8, 89u8, 55u8, 105u8, 108u8, 49u8, + ], + [ + 140u8, 91u8, 225u8, 229u8, 235u8, 236u8, 125u8, 91u8, 209u8, 79u8, 113u8, 66u8, + 125u8, 30u8, 132u8, 243u8, 221u8, 3u8, 20u8, 192u8, 247u8, 178u8, 41u8, 30u8, 91u8, + 32u8, 10u8, 200u8, 199u8, 195u8, 185u8, 37u8, + ], + [ + 221u8, 242u8, 82u8, 173u8, 27u8, 226u8, 200u8, 155u8, 105u8, 194u8, 176u8, 104u8, + 252u8, 55u8, 141u8, 170u8, 149u8, 43u8, 167u8, 241u8, 99u8, 196u8, 161u8, 22u8, + 40u8, 245u8, 90u8, 77u8, 245u8, 35u8, 179u8, 239u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for MockERC721Events { + const NAME: &'static str = "MockERC721Events"; + const COUNT: usize = 3usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::Approval) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ApprovalForAll) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::Transfer) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for MockERC721Events { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::ApprovalForAll(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Transfer(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ApprovalForAll(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Transfer(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MockERC721`](self) contract instance. + + See the [wrapper's documentation](`MockERC721Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MockERC721Instance { + MockERC721Instance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + MockERC721Instance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + MockERC721Instance::::deploy_builder(provider) + } + /**A [`MockERC721`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`MockERC721`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MockERC721Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MockERC721Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MockERC721Instance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockERC721Instance + { + /**Creates a new wrapper around an on-chain [`MockERC721`](self) contract instance. + + See the [wrapper's documentation](`MockERC721Instance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MockERC721Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MockERC721Instance { + MockERC721Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockERC721Instance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`approve`] function. + pub fn approve( + &self, + spender: alloy::sol_types::private::Address, + id: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&approveCall { spender, id }) + } + ///Creates a new call builder for the [`balanceOf`] function. + pub fn balanceOf( + &self, + owner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&balanceOfCall { owner }) + } + ///Creates a new call builder for the [`getApproved`] function. + pub fn getApproved( + &self, + id: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getApprovedCall { id }) + } + ///Creates a new call builder for the [`initialize`] function. + pub fn initialize( + &self, + name_: alloy::sol_types::private::String, + symbol_: alloy::sol_types::private::String, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initializeCall { name_, symbol_ }) + } + ///Creates a new call builder for the [`isApprovedForAll`] function. + pub fn isApprovedForAll( + &self, + owner: alloy::sol_types::private::Address, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&isApprovedForAllCall { owner, operator }) + } + ///Creates a new call builder for the [`name`] function. + pub fn name(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&nameCall {}) + } + ///Creates a new call builder for the [`ownerOf`] function. + pub fn ownerOf( + &self, + id: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerOfCall { id }) + } + ///Creates a new call builder for the [`safeTransferFrom_0`] function. + pub fn safeTransferFrom_0( + &self, + from: alloy::sol_types::private::Address, + to: alloy::sol_types::private::Address, + id: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&safeTransferFrom_0Call { from, to, id }) + } + ///Creates a new call builder for the [`safeTransferFrom_1`] function. + pub fn safeTransferFrom_1( + &self, + from: alloy::sol_types::private::Address, + to: alloy::sol_types::private::Address, + id: alloy::sol_types::private::primitives::aliases::U256, + data: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&safeTransferFrom_1Call { from, to, id, data }) + } + ///Creates a new call builder for the [`setApprovalForAll`] function. + pub fn setApprovalForAll( + &self, + operator: alloy::sol_types::private::Address, + approved: bool, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setApprovalForAllCall { operator, approved }) + } + ///Creates a new call builder for the [`supportsInterface`] function. + pub fn supportsInterface( + &self, + interfaceId: alloy::sol_types::private::FixedBytes<4>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&supportsInterfaceCall { interfaceId }) + } + ///Creates a new call builder for the [`symbol`] function. + pub fn symbol(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&symbolCall {}) + } + ///Creates a new call builder for the [`tokenURI`] function. + pub fn tokenURI( + &self, + id: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&tokenURICall { id }) + } + ///Creates a new call builder for the [`transferFrom`] function. + pub fn transferFrom( + &self, + from: alloy::sol_types::private::Address, + to: alloy::sol_types::private::Address, + id: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferFromCall { from, to, id }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockERC721Instance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Approval`] event. + pub fn Approval_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ApprovalForAll`] event. + pub fn ApprovalForAll_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Transfer`] event. + pub fn Transfer_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/operatorstateretriever.rs b/crates/utils/src/operatorstateretriever.rs new file mode 100644 index 00000000..526e1ed6 --- /dev/null +++ b/crates/utils/src/operatorstateretriever.rs @@ -0,0 +1,2112 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface OperatorStateRetriever { + struct CheckSignaturesIndices { + uint32[] nonSignerQuorumBitmapIndices; + uint32[] quorumApkIndices; + uint32[] totalStakeIndices; + uint32[][] nonSignerStakeIndices; + } + struct Operator { + address operator; + bytes32 operatorId; + uint96 stake; + } + + function getBatchOperatorFromId(address registryCoordinator, bytes32[] memory operatorIds) external view returns (address[] memory operators); + function getBatchOperatorId(address registryCoordinator, address[] memory operators) external view returns (bytes32[] memory operatorIds); + function getCheckSignaturesIndices(address registryCoordinator, uint32 referenceBlockNumber, bytes memory quorumNumbers, bytes32[] memory nonSignerOperatorIds) external view returns (CheckSignaturesIndices memory); + function getOperatorState(address registryCoordinator, bytes memory quorumNumbers, uint32 blockNumber) external view returns (Operator[][] memory); + function getOperatorState(address registryCoordinator, bytes32 operatorId, uint32 blockNumber) external view returns (uint256, Operator[][] memory); + function getQuorumBitmapsAtBlockNumber(address registryCoordinator, bytes32[] memory operatorIds, uint32 blockNumber) external view returns (uint256[] memory); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "getBatchOperatorFromId", + "inputs": [ + { + "name": "registryCoordinator", + "type": "address", + "internalType": "contract IRegistryCoordinator" + }, + { + "name": "operatorIds", + "type": "bytes32[]", + "internalType": "bytes32[]" + } + ], + "outputs": [ + { + "name": "operators", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getBatchOperatorId", + "inputs": [ + { + "name": "registryCoordinator", + "type": "address", + "internalType": "contract IRegistryCoordinator" + }, + { + "name": "operators", + "type": "address[]", + "internalType": "address[]" + } + ], + "outputs": [ + { + "name": "operatorIds", + "type": "bytes32[]", + "internalType": "bytes32[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getCheckSignaturesIndices", + "inputs": [ + { + "name": "registryCoordinator", + "type": "address", + "internalType": "contract IRegistryCoordinator" + }, + { + "name": "referenceBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "nonSignerOperatorIds", + "type": "bytes32[]", + "internalType": "bytes32[]" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct OperatorStateRetriever.CheckSignaturesIndices", + "components": [ + { + "name": "nonSignerQuorumBitmapIndices", + "type": "uint32[]", + "internalType": "uint32[]" + }, + { + "name": "quorumApkIndices", + "type": "uint32[]", + "internalType": "uint32[]" + }, + { + "name": "totalStakeIndices", + "type": "uint32[]", + "internalType": "uint32[]" + }, + { + "name": "nonSignerStakeIndices", + "type": "uint32[][]", + "internalType": "uint32[][]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorState", + "inputs": [ + { + "name": "registryCoordinator", + "type": "address", + "internalType": "contract IRegistryCoordinator" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple[][]", + "internalType": "struct OperatorStateRetriever.Operator[][]", + "components": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "stake", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorState", + "inputs": [ + { + "name": "registryCoordinator", + "type": "address", + "internalType": "contract IRegistryCoordinator" + }, + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "", + "type": "tuple[][]", + "internalType": "struct OperatorStateRetriever.Operator[][]", + "components": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "stake", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getQuorumBitmapsAtBlockNumber", + "inputs": [ + { + "name": "registryCoordinator", + "type": "address", + "internalType": "contract IRegistryCoordinator" + }, + { + "name": "operatorIds", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "stateMutability": "view" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod OperatorStateRetriever { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50611e03806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806331b36bd9146100675780633563b0d1146100905780634d2b57fe146100b05780634f739f74146100d05780635c155662146100f0578063cefdc1d414610110575b600080fd5b61007a6100753660046113fa565b610131565b60405161008791906114e8565b60405180910390f35b6100a361009e366004611524565b61024d565b604051610087919061167f565b6100c36100be3660046116f8565b6106e3565b6040516100879190611747565b6100e36100de3660046117df565b6107f8565b60405161008791906118d7565b6101036100fe366004611992565b610f22565b60405161008791906119f5565b61012361011e366004611a2d565b6110ea565b604051610087929190611a64565b606081516001600160401b0381111561014c5761014c611391565b604051908082528060200260200182016040528015610175578160200160208202803683370190505b50905060005b825181101561024657836001600160a01b03166313542a4e8483815181106101a5576101a5611a85565b60200260200101516040518263ffffffff1660e01b81526004016101d891906001600160a01b0391909116815260200190565b602060405180830381865afa1580156101f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102199190611a9b565b82828151811061022b5761022b611a85565b602090810291909101015261023f81611aca565b905061017b565b5092915050565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561028f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b39190611ae5565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103199190611ae5565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa15801561035b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037f9190611ae5565b9050600086516001600160401b0381111561039c5761039c611391565b6040519080825280602002602001820160405280156103cf57816020015b60608152602001906001900390816103ba5790505b50905060005b87518110156106d75760008882815181106103f2576103f2611a85565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa158015610453573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261047b9190810190611b02565b905080516001600160401b0381111561049657610496611391565b6040519080825280602002602001820160405280156104e157816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816104b45790505b508484815181106104f4576104f4611a85565b602002602001018190525060005b81518110156106c1576040518060600160405280876001600160a01b03166347b314e885858151811061053757610537611a85565b60200260200101516040518263ffffffff1660e01b815260040161055d91815260200190565b602060405180830381865afa15801561057a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059e9190611ae5565b6001600160a01b031681526020018383815181106105be576105be611a85565b60200260200101518152602001896001600160a01b031663fa28c6278585815181106105ec576105ec611a85565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa158015610648573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066c9190611b92565b6001600160601b031681525085858151811061068a5761068a611a85565b602002602001015182815181106106a3576106a3611a85565b602002602001018190525080806106b990611aca565b915050610502565b50505080806106cf90611aca565b9150506103d5565b50979650505050505050565b606081516001600160401b038111156106fe576106fe611391565b604051908082528060200260200182016040528015610727578160200160208202803683370190505b50905060005b825181101561024657836001600160a01b031663296bb06484838151811061075757610757611a85565b60200260200101516040518263ffffffff1660e01b815260040161077d91815260200190565b602060405180830381865afa15801561079a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107be9190611ae5565b8282815181106107d0576107d0611a85565b6001600160a01b03909216602092830291909101909101526107f181611aca565b905061072d565b6108236040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610863573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108879190611ae5565b90506108b46040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e906108e4908b9089908990600401611bbb565b600060405180830381865afa158015610901573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109299190810190611c05565b81526040516340e03a8160e11b81526001600160a01b038316906381c075029061095b908b908b908b90600401611cbc565b600060405180830381865afa158015610978573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109a09190810190611c05565b6040820152856001600160401b038111156109bd576109bd611391565b6040519080825280602002602001820160405280156109f057816020015b60608152602001906001900390816109db5790505b50606082015260005b60ff8116871115610e33576000856001600160401b03811115610a1e57610a1e611391565b604051908082528060200260200182016040528015610a47578160200160208202803683370190505b5083606001518360ff1681518110610a6157610a61611a85565b602002602001018190525060005b86811015610d335760008c6001600160a01b03166304ec63518a8a85818110610a9a57610a9a611a85565b905060200201358e88600001518681518110610ab857610ab8611a85565b60200260200101516040518463ffffffff1660e01b8152600401610af59392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610b12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b369190611ce5565b90506001600160c01b038116610bde5760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff16818110610bf357610bf3611a85565b6001600160c01b03841692013560f81c9190911c600190811614159050610d2057856001600160a01b031663dd9846b98a8a85818110610c3557610c35611a85565b905060200201358d8d8860ff16818110610c5157610c51611a85565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015610ca7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccb9190611d0e565b85606001518560ff1681518110610ce457610ce4611a85565b60200260200101518481518110610cfd57610cfd611a85565b63ffffffff9092166020928302919091019091015282610d1c81611aca565b9350505b5080610d2b81611aca565b915050610a6f565b506000816001600160401b03811115610d4e57610d4e611391565b604051908082528060200260200182016040528015610d77578160200160208202803683370190505b50905060005b82811015610df85784606001518460ff1681518110610d9e57610d9e611a85565b60200260200101518181518110610db757610db7611a85565b6020026020010151828281518110610dd157610dd1611a85565b63ffffffff9092166020928302919091019091015280610df081611aca565b915050610d7d565b508084606001518460ff1681518110610e1357610e13611a85565b602002602001018190525050508080610e2b90611d2b565b9150506109f9565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e989190611ae5565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610ecb908b908b908e90600401611d4b565b600060405180830381865afa158015610ee8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f109190810190611c05565b60208301525098975050505050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610f54929190611d75565b600060405180830381865afa158015610f71573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f999190810190611c05565b9050600084516001600160401b03811115610fb657610fb6611391565b604051908082528060200260200182016040528015610fdf578160200160208202803683370190505b50905060005b85518110156110e057866001600160a01b03166304ec635187838151811061100f5761100f611a85565b60200260200101518786858151811061102a5761102a611a85565b60200260200101516040518463ffffffff1660e01b81526004016110679392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015611084573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a89190611ce5565b6001600160c01b03168282815181106110c3576110c3611a85565b6020908102919091010152806110d881611aca565b915050610fe5565b5095945050505050565b604080516001808252818301909252600091606091839160208083019080368337019050509050848160008151811061112557611125611a85565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e906111619088908690600401611d75565b600060405180830381865afa15801561117e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111a69190810190611c05565b6000815181106111b8576111b8611a85565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa158015611224573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112489190611ce5565b6001600160c01b03169050600061125e8261127c565b90508161126c8a838a61024d565b9550955050505050935093915050565b606060008061128a84611348565b61ffff166001600160401b038111156112a5576112a5611391565b6040519080825280601f01601f1916602001820160405280156112cf576020820181803683370190505b5090506000805b8251821080156112e7575061010081105b1561133e576001811b93508584161561132e578060f81b83838151811061131057611310611a85565b60200101906001600160f81b031916908160001a9053508160010191505b61133781611aca565b90506112d6565b5090949350505050565b6000805b82156113735761135d600184611d94565b909216918061136b81611dab565b91505061134c565b92915050565b6001600160a01b038116811461138e57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156113cf576113cf611391565b604052919050565b60006001600160401b038211156113f0576113f0611391565b5060051b60200190565b6000806040838503121561140d57600080fd5b823561141881611379565b91506020838101356001600160401b0381111561143457600080fd5b8401601f8101861361144557600080fd5b8035611458611453826113d7565b6113a7565b81815260059190911b8201830190838101908883111561147757600080fd5b928401925b8284101561149e57833561148f81611379565b8252928401929084019061147c565b80955050505050509250929050565b600081518084526020808501945080840160005b838110156114dd578151875295820195908201906001016114c1565b509495945050505050565b6020815260006114fb60208301846114ad565b9392505050565b63ffffffff8116811461138e57600080fd5b803561151f81611502565b919050565b60008060006060848603121561153957600080fd5b833561154481611379565b92506020848101356001600160401b038082111561156157600080fd5b818701915087601f83011261157557600080fd5b81358181111561158757611587611391565b611599601f8201601f191685016113a7565b915080825288848285010111156115af57600080fd5b80848401858401376000848284010152508094505050506115d260408501611514565b90509250925092565b600081518084526020808501808196508360051b810191508286016000805b86811015611671578385038a52825180518087529087019087870190845b8181101561165c57835180516001600160a01b031684528a8101518b8501526040908101516001600160601b03169084015292890192606090920191600101611618565b50509a87019a955050918501916001016115fa565b509298975050505050505050565b6020815260006114fb60208301846115db565b600082601f8301126116a357600080fd5b813560206116b3611453836113d7565b82815260059290921b840181019181810190868411156116d257600080fd5b8286015b848110156116ed57803583529183019183016116d6565b509695505050505050565b6000806040838503121561170b57600080fd5b823561171681611379565b915060208301356001600160401b0381111561173157600080fd5b61173d85828601611692565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b818110156117885783516001600160a01b031683529284019291840191600101611763565b50909695505050505050565b60008083601f8401126117a657600080fd5b5081356001600160401b038111156117bd57600080fd5b6020830191508360208260051b85010111156117d857600080fd5b9250929050565b600080600080600080608087890312156117f857600080fd5b863561180381611379565b9550602087013561181381611502565b945060408701356001600160401b038082111561182f57600080fd5b818901915089601f83011261184357600080fd5b81358181111561185257600080fd5b8a602082850101111561186457600080fd5b60208301965080955050606089013591508082111561188257600080fd5b5061188f89828a01611794565b979a9699509497509295939492505050565b600081518084526020808501945080840160005b838110156114dd57815163ffffffff16875295820195908201906001016118b5565b6000602080835283516080828501526118f360a08501826118a1565b905081850151601f198086840301604087015261191083836118a1565b9250604087015191508086840301606087015261192d83836118a1565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b8281101561198457848783030184526119728287516118a1565b95880195938801939150600101611958565b509998505050505050505050565b6000806000606084860312156119a757600080fd5b83356119b281611379565b925060208401356001600160401b038111156119cd57600080fd5b6119d986828701611692565b92505060408401356119ea81611502565b809150509250925092565b6020808252825182820181905260009190848201906040850190845b8181101561178857835183529284019291840191600101611a11565b600080600060608486031215611a4257600080fd5b8335611a4d81611379565b92506020840135915060408401356119ea81611502565b828152604060208201526000611a7d60408301846115db565b949350505050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611aad57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000600019821415611ade57611ade611ab4565b5060010190565b600060208284031215611af757600080fd5b81516114fb81611379565b60006020808385031215611b1557600080fd5b82516001600160401b03811115611b2b57600080fd5b8301601f81018513611b3c57600080fd5b8051611b4a611453826113d7565b81815260059190911b82018301908381019087831115611b6957600080fd5b928401925b82841015611b8757835182529284019290840190611b6e565b979650505050505050565b600060208284031215611ba457600080fd5b81516001600160601b03811681146114fb57600080fd5b63ffffffff84168152604060208201819052810182905260006001600160fb1b03831115611be857600080fd5b8260051b8085606085013760009201606001918252509392505050565b60006020808385031215611c1857600080fd5b82516001600160401b03811115611c2e57600080fd5b8301601f81018513611c3f57600080fd5b8051611c4d611453826113d7565b81815260059190911b82018301908381019087831115611c6c57600080fd5b928401925b82841015611b87578351611c8481611502565b82529284019290840190611c71565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff84168152604060208201526000611cdc604083018486611c93565b95945050505050565b600060208284031215611cf757600080fd5b81516001600160c01b03811681146114fb57600080fd5b600060208284031215611d2057600080fd5b81516114fb81611502565b600060ff821660ff811415611d4257611d42611ab4565b60010192915050565b604081526000611d5f604083018587611c93565b905063ffffffff83166020830152949350505050565b63ffffffff83168152604060208201526000611a7d60408301846114ad565b600082821015611da657611da6611ab4565b500390565b600061ffff80831681811415611dc357611dc3611ab4565b600101939250505056fea2646970667358221220f5eda3f040e501199d72cb503d0f2436742d1a0c7e5bffadd7a834d6274bf34b64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x1E\x03\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0bW`\x005`\xE0\x1C\x80c1\xB3k\xD9\x14a\0gW\x80c5c\xB0\xD1\x14a\0\x90W\x80cM+W\xFE\x14a\0\xB0W\x80cOs\x9Ft\x14a\0\xD0W\x80c\\\x15Vb\x14a\0\xF0W\x80c\xCE\xFD\xC1\xD4\x14a\x01\x10W[`\0\x80\xFD[a\0za\0u6`\x04a\x13\xFAV[a\x011V[`@Qa\0\x87\x91\x90a\x14\xE8V[`@Q\x80\x91\x03\x90\xF3[a\0\xA3a\0\x9E6`\x04a\x15$V[a\x02MV[`@Qa\0\x87\x91\x90a\x16\x7FV[a\0\xC3a\0\xBE6`\x04a\x16\xF8V[a\x06\xE3V[`@Qa\0\x87\x91\x90a\x17GV[a\0\xE3a\0\xDE6`\x04a\x17\xDFV[a\x07\xF8V[`@Qa\0\x87\x91\x90a\x18\xD7V[a\x01\x03a\0\xFE6`\x04a\x19\x92V[a\x0F\"V[`@Qa\0\x87\x91\x90a\x19\xF5V[a\x01#a\x01\x1E6`\x04a\x1A-V[a\x10\xEAV[`@Qa\0\x87\x92\x91\x90a\x1AdV[``\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x01LWa\x01La\x13\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01uW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82Q\x81\x10\x15a\x02FW\x83`\x01`\x01`\xA0\x1B\x03\x16c\x13T*N\x84\x83\x81Q\x81\x10a\x01\xA5Wa\x01\xA5a\x1A\x85V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x01\xD8\x91\x90`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xF5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x19\x91\x90a\x1A\x9BV[\x82\x82\x81Q\x81\x10a\x02+Wa\x02+a\x1A\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01Ra\x02?\x81a\x1A\xCAV[\x90Pa\x01{V[P\x92\x91PPV[```\0\x84`\x01`\x01`\xA0\x1B\x03\x16ch0H5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\x8FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xB3\x91\x90a\x1A\xE5V[\x90P`\0\x85`\x01`\x01`\xA0\x1B\x03\x16c\x9E\x99#\xC2`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\xF5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\x19\x91\x90a\x1A\xE5V[\x90P`\0\x86`\x01`\x01`\xA0\x1B\x03\x16c]\xF4YF`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03[W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\x7F\x91\x90a\x1A\xE5V[\x90P`\0\x86Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03\x9CWa\x03\x9Ca\x13\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x03\xCFW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x03\xBAW\x90P[P\x90P`\0[\x87Q\x81\x10\x15a\x06\xD7W`\0\x88\x82\x81Q\x81\x10a\x03\xF2Wa\x03\xF2a\x1A\x85V[\x01` \x01Q`@Qc\x89\x02bE`\xE0\x1B\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01\x81\x90Rc\xFF\xFF\xFF\xFF\x8A\x16`$\x83\x01R\x91P`\0\x90`\x01`\x01`\xA0\x1B\x03\x87\x16\x90c\x89\x02bE\x90`D\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04SW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x04{\x91\x90\x81\x01\x90a\x1B\x02V[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x04\x96Wa\x04\x96a\x13\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04\xE1W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R`\0\x19\x90\x92\x01\x91\x01\x81a\x04\xB4W\x90P[P\x84\x84\x81Q\x81\x10a\x04\xF4Wa\x04\xF4a\x1A\x85V[` \x02` \x01\x01\x81\x90RP`\0[\x81Q\x81\x10\x15a\x06\xC1W`@Q\x80``\x01`@R\x80\x87`\x01`\x01`\xA0\x1B\x03\x16cG\xB3\x14\xE8\x85\x85\x81Q\x81\x10a\x057Wa\x057a\x1A\x85V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x05]\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05zW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x9E\x91\x90a\x1A\xE5V[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x83\x81Q\x81\x10a\x05\xBEWa\x05\xBEa\x1A\x85V[` \x02` \x01\x01Q\x81R` \x01\x89`\x01`\x01`\xA0\x1B\x03\x16c\xFA(\xC6'\x85\x85\x81Q\x81\x10a\x05\xECWa\x05\xECa\x1A\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\x04\x81\x01\x91\x90\x91R`\xFF\x88\x16`$\x82\x01Rc\xFF\xFF\xFF\xFF\x8F\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06HW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06l\x91\x90a\x1B\x92V[`\x01`\x01``\x1B\x03\x16\x81RP\x85\x85\x81Q\x81\x10a\x06\x8AWa\x06\x8Aa\x1A\x85V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\x06\xA3Wa\x06\xA3a\x1A\x85V[` \x02` \x01\x01\x81\x90RP\x80\x80a\x06\xB9\x90a\x1A\xCAV[\x91PPa\x05\x02V[PPP\x80\x80a\x06\xCF\x90a\x1A\xCAV[\x91PPa\x03\xD5V[P\x97\x96PPPPPPPV[``\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x06\xFEWa\x06\xFEa\x13\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07'W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82Q\x81\x10\x15a\x02FW\x83`\x01`\x01`\xA0\x1B\x03\x16c)k\xB0d\x84\x83\x81Q\x81\x10a\x07WWa\x07Wa\x1A\x85V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x07}\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\x9AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xBE\x91\x90a\x1A\xE5V[\x82\x82\x81Q\x81\x10a\x07\xD0Wa\x07\xD0a\x1A\x85V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01Ra\x07\xF1\x81a\x1A\xCAV[\x90Pa\x07-V[a\x08#`@Q\x80`\x80\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`\0\x87`\x01`\x01`\xA0\x1B\x03\x16ch0H5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08cW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\x87\x91\x90a\x1A\xE5V[\x90Pa\x08\xB4`@Q\x80`\x80\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`@Qca\xC8\xA1/`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x8A\x16\x90c\xC3\x91B^\x90a\x08\xE4\x90\x8B\x90\x89\x90\x89\x90`\x04\x01a\x1B\xBBV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\x01W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\t)\x91\x90\x81\x01\x90a\x1C\x05V[\x81R`@Qc@\xE0:\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x81\xC0u\x02\x90a\t[\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a\x1C\xBCV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\txW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\t\xA0\x91\x90\x81\x01\x90a\x1C\x05V[`@\x82\x01R\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xBDWa\t\xBDa\x13\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\xF0W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\t\xDBW\x90P[P``\x82\x01R`\0[`\xFF\x81\x16\x87\x11\x15a\x0E3W`\0\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\x1EWa\n\x1Ea\x13\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\nGW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x83``\x01Q\x83`\xFF\x16\x81Q\x81\x10a\naWa\naa\x1A\x85V[` \x02` \x01\x01\x81\x90RP`\0[\x86\x81\x10\x15a\r3W`\0\x8C`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x8A\x8A\x85\x81\x81\x10a\n\x9AWa\n\x9Aa\x1A\x85V[\x90P` \x02\x015\x8E\x88`\0\x01Q\x86\x81Q\x81\x10a\n\xB8Wa\n\xB8a\x1A\x85V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\n\xF5\x93\x92\x91\x90\x92\x83Rc\xFF\xFF\xFF\xFF\x91\x82\x16` \x84\x01R\x16`@\x82\x01R``\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\x12W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B6\x91\x90a\x1C\xE5V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16a\x0B\xDEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R\x7FOperatorStateRetriever.getCheckS`D\x82\x01R\x7FignaturesIndices: operator must `d\x82\x01R\x7Fbe registered at blocknumber\0\0\0\0`\x84\x82\x01R`\xA4\x01`@Q\x80\x91\x03\x90\xFD[\x8A\x8A\x85`\xFF\x16\x81\x81\x10a\x0B\xF3Wa\x0B\xF3a\x1A\x85V[`\x01`\x01`\xC0\x1B\x03\x84\x16\x92\x015`\xF8\x1C\x91\x90\x91\x1C`\x01\x90\x81\x16\x14\x15\x90Pa\r W\x85`\x01`\x01`\xA0\x1B\x03\x16c\xDD\x98F\xB9\x8A\x8A\x85\x81\x81\x10a\x0C5Wa\x0C5a\x1A\x85V[\x90P` \x02\x015\x8D\x8D\x88`\xFF\x16\x81\x81\x10a\x0CQWa\x0CQa\x1A\x85V[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x87\x90\x1B\x16\x81R`\x04\x81\x01\x94\x90\x94R\x91\x90\x91\x015`\xF8\x1C`$\x83\x01RPc\xFF\xFF\xFF\xFF\x8F\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\xA7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xCB\x91\x90a\x1D\x0EV[\x85``\x01Q\x85`\xFF\x16\x81Q\x81\x10a\x0C\xE4Wa\x0C\xE4a\x1A\x85V[` \x02` \x01\x01Q\x84\x81Q\x81\x10a\x0C\xFDWa\x0C\xFDa\x1A\x85V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x82a\r\x1C\x81a\x1A\xCAV[\x93PP[P\x80a\r+\x81a\x1A\xCAV[\x91PPa\noV[P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\rNWa\rNa\x13\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\rwW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82\x81\x10\x15a\r\xF8W\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\r\x9EWa\r\x9Ea\x1A\x85V[` \x02` \x01\x01Q\x81\x81Q\x81\x10a\r\xB7Wa\r\xB7a\x1A\x85V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\r\xD1Wa\r\xD1a\x1A\x85V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\r\xF0\x81a\x1A\xCAV[\x91PPa\r}V[P\x80\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0E\x13Wa\x0E\x13a\x1A\x85V[` \x02` \x01\x01\x81\x90RPPP\x80\x80a\x0E+\x90a\x1D+V[\x91PPa\t\xF9V[P`\0\x89`\x01`\x01`\xA0\x1B\x03\x16c]\xF4YF`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0EtW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\x98\x91\x90a\x1A\xE5V[`@Qc5IR\xA3`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xD5%J\x8C\x90a\x0E\xCB\x90\x8B\x90\x8B\x90\x8E\x90`\x04\x01a\x1DKV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xE8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0F\x10\x91\x90\x81\x01\x90a\x1C\x05V[` \x83\x01RP\x98\x97PPPPPPPPV[```\0\x84`\x01`\x01`\xA0\x1B\x03\x16c\xC3\x91B^\x84\x86`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0FT\x92\x91\x90a\x1DuV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0FqW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0F\x99\x91\x90\x81\x01\x90a\x1C\x05V[\x90P`\0\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0F\xB6Wa\x0F\xB6a\x13\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F\xDFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85Q\x81\x10\x15a\x10\xE0W\x86`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x87\x83\x81Q\x81\x10a\x10\x0FWa\x10\x0Fa\x1A\x85V[` \x02` \x01\x01Q\x87\x86\x85\x81Q\x81\x10a\x10*Wa\x10*a\x1A\x85V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10g\x93\x92\x91\x90\x92\x83Rc\xFF\xFF\xFF\xFF\x91\x82\x16` \x84\x01R\x16`@\x82\x01R``\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\x84W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xA8\x91\x90a\x1C\xE5V[`\x01`\x01`\xC0\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x10\xC3Wa\x10\xC3a\x1A\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a\x10\xD8\x81a\x1A\xCAV[\x91PPa\x0F\xE5V[P\x95\x94PPPPPV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91``\x91\x83\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P\x84\x81`\0\x81Q\x81\x10a\x11%Wa\x11%a\x1A\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qca\xC8\xA1/`\xE1\x1B\x81R`\0\x90`\x01`\x01`\xA0\x1B\x03\x88\x16\x90c\xC3\x91B^\x90a\x11a\x90\x88\x90\x86\x90`\x04\x01a\x1DuV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x11\xA6\x91\x90\x81\x01\x90a\x1C\x05V[`\0\x81Q\x81\x10a\x11\xB8Wa\x11\xB8a\x1A\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Qc\x04\xECcQ`\xE0\x1B\x81R`\x04\x81\x01\x88\x90Rc\xFF\xFF\xFF\xFF\x87\x81\x16`$\x83\x01R\x90\x91\x16`D\x82\x01\x81\x90R\x91P`\0\x90`\x01`\x01`\xA0\x1B\x03\x89\x16\x90c\x04\xECcQ\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12$W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12H\x91\x90a\x1C\xE5V[`\x01`\x01`\xC0\x1B\x03\x16\x90P`\0a\x12^\x82a\x12|V[\x90P\x81a\x12l\x8A\x83\x8Aa\x02MV[\x95P\x95PPPPP\x93P\x93\x91PPV[```\0\x80a\x12\x8A\x84a\x13HV[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12\xA5Wa\x12\xA5a\x13\x91V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x12\xCFW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x12\xE7WPa\x01\0\x81\x10[\x15a\x13>W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x13.W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x13\x10Wa\x13\x10a\x1A\x85V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x137\x81a\x1A\xCAV[\x90Pa\x12\xD6V[P\x90\x94\x93PPPPV[`\0\x80[\x82\x15a\x13sWa\x13]`\x01\x84a\x1D\x94V[\x90\x92\x16\x91\x80a\x13k\x81a\x1D\xABV[\x91PPa\x13LV[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x13\x8EW`\0\x80\xFD[PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x13\xCFWa\x13\xCFa\x13\x91V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x13\xF0Wa\x13\xF0a\x13\x91V[P`\x05\x1B` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x14\rW`\0\x80\xFD[\x825a\x14\x18\x81a\x13yV[\x91P` \x83\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x144W`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x14EW`\0\x80\xFD[\x805a\x14Xa\x14S\x82a\x13\xD7V[a\x13\xA7V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15a\x14wW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x14\x9EW\x835a\x14\x8F\x81a\x13yV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x14|V[\x80\x95PPPPPP\x92P\x92\x90PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a\x14\xDDW\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x14\xC1V[P\x94\x95\x94PPPPPV[` \x81R`\0a\x14\xFB` \x83\x01\x84a\x14\xADV[\x93\x92PPPV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x13\x8EW`\0\x80\xFD[\x805a\x15\x1F\x81a\x15\x02V[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x159W`\0\x80\xFD[\x835a\x15D\x81a\x13yV[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x15aW`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a\x15uW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x15\x87Wa\x15\x87a\x13\x91V[a\x15\x99`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x13\xA7V[\x91P\x80\x82R\x88\x84\x82\x85\x01\x01\x11\x15a\x15\xAFW`\0\x80\xFD[\x80\x84\x84\x01\x85\x84\x017`\0\x84\x82\x84\x01\x01RP\x80\x94PPPPa\x15\xD2`@\x85\x01a\x15\x14V[\x90P\x92P\x92P\x92V[`\0\x81Q\x80\x84R` \x80\x85\x01\x80\x81\x96P\x83`\x05\x1B\x81\x01\x91P\x82\x86\x01`\0\x80[\x86\x81\x10\x15a\x16qW\x83\x85\x03\x8AR\x82Q\x80Q\x80\x87R\x90\x87\x01\x90\x87\x87\x01\x90\x84[\x81\x81\x10\x15a\x16\\W\x83Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x8A\x81\x01Q\x8B\x85\x01R`@\x90\x81\x01Q`\x01`\x01``\x1B\x03\x16\x90\x84\x01R\x92\x89\x01\x92``\x90\x92\x01\x91`\x01\x01a\x16\x18V[PP\x9A\x87\x01\x9A\x95PP\x91\x85\x01\x91`\x01\x01a\x15\xFAV[P\x92\x98\x97PPPPPPPPV[` \x81R`\0a\x14\xFB` \x83\x01\x84a\x15\xDBV[`\0\x82`\x1F\x83\x01\x12a\x16\xA3W`\0\x80\xFD[\x815` a\x16\xB3a\x14S\x83a\x13\xD7V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\x16\xD2W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x16\xEDW\x805\x83R\x91\x83\x01\x91\x83\x01a\x16\xD6V[P\x96\x95PPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x17\x0BW`\0\x80\xFD[\x825a\x17\x16\x81a\x13yV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x171W`\0\x80\xFD[a\x17=\x85\x82\x86\x01a\x16\x92V[\x91PP\x92P\x92\x90PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x17\x88W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x17cV[P\x90\x96\x95PPPPPPV[`\0\x80\x83`\x1F\x84\x01\x12a\x17\xA6W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\xBDW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x17\xD8W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\x80\x87\x89\x03\x12\x15a\x17\xF8W`\0\x80\xFD[\x865a\x18\x03\x81a\x13yV[\x95P` \x87\x015a\x18\x13\x81a\x15\x02V[\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x18/W`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a\x18CW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x18RW`\0\x80\xFD[\x8A` \x82\x85\x01\x01\x11\x15a\x18dW`\0\x80\xFD[` \x83\x01\x96P\x80\x95PP``\x89\x015\x91P\x80\x82\x11\x15a\x18\x82W`\0\x80\xFD[Pa\x18\x8F\x89\x82\x8A\x01a\x17\x94V[\x97\x9A\x96\x99P\x94\x97P\x92\x95\x93\x94\x92PPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a\x14\xDDW\x81Qc\xFF\xFF\xFF\xFF\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x18\xB5V[`\0` \x80\x83R\x83Q`\x80\x82\x85\x01Ra\x18\xF3`\xA0\x85\x01\x82a\x18\xA1V[\x90P\x81\x85\x01Q`\x1F\x19\x80\x86\x84\x03\x01`@\x87\x01Ra\x19\x10\x83\x83a\x18\xA1V[\x92P`@\x87\x01Q\x91P\x80\x86\x84\x03\x01``\x87\x01Ra\x19-\x83\x83a\x18\xA1V[``\x88\x01Q\x87\x82\x03\x83\x01`\x80\x89\x01R\x80Q\x80\x83R\x91\x94P\x85\x01\x92P\x84\x84\x01\x90`\x05\x81\x90\x1B\x85\x01\x86\x01`\0[\x82\x81\x10\x15a\x19\x84W\x84\x87\x83\x03\x01\x84Ra\x19r\x82\x87Qa\x18\xA1V[\x95\x88\x01\x95\x93\x88\x01\x93\x91P`\x01\x01a\x19XV[P\x99\x98PPPPPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x19\xA7W`\0\x80\xFD[\x835a\x19\xB2\x81a\x13yV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\xCDW`\0\x80\xFD[a\x19\xD9\x86\x82\x87\x01a\x16\x92V[\x92PP`@\x84\x015a\x19\xEA\x81a\x15\x02V[\x80\x91PP\x92P\x92P\x92V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x17\x88W\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1A\x11V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x1ABW`\0\x80\xFD[\x835a\x1AM\x81a\x13yV[\x92P` \x84\x015\x91P`@\x84\x015a\x19\xEA\x81a\x15\x02V[\x82\x81R`@` \x82\x01R`\0a\x1A}`@\x83\x01\x84a\x15\xDBV[\x94\x93PPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x1A\xADW`\0\x80\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x1A\xDEWa\x1A\xDEa\x1A\xB4V[P`\x01\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x1A\xF7W`\0\x80\xFD[\x81Qa\x14\xFB\x81a\x13yV[`\0` \x80\x83\x85\x03\x12\x15a\x1B\x15W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1B+W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x1B=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x19\x91\x90a\x1A\x9BV[\x82\x82\x81Q\x81\x10a\x02+Wa\x02+a\x1A\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01Ra\x02?\x81a\x1A\xCAV[\x90Pa\x01{V[P\x92\x91PPV[```\0\x84`\x01`\x01`\xA0\x1B\x03\x16ch0H5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\x8FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xB3\x91\x90a\x1A\xE5V[\x90P`\0\x85`\x01`\x01`\xA0\x1B\x03\x16c\x9E\x99#\xC2`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\xF5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\x19\x91\x90a\x1A\xE5V[\x90P`\0\x86`\x01`\x01`\xA0\x1B\x03\x16c]\xF4YF`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03[W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\x7F\x91\x90a\x1A\xE5V[\x90P`\0\x86Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03\x9CWa\x03\x9Ca\x13\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x03\xCFW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x03\xBAW\x90P[P\x90P`\0[\x87Q\x81\x10\x15a\x06\xD7W`\0\x88\x82\x81Q\x81\x10a\x03\xF2Wa\x03\xF2a\x1A\x85V[\x01` \x01Q`@Qc\x89\x02bE`\xE0\x1B\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01\x81\x90Rc\xFF\xFF\xFF\xFF\x8A\x16`$\x83\x01R\x91P`\0\x90`\x01`\x01`\xA0\x1B\x03\x87\x16\x90c\x89\x02bE\x90`D\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04SW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x04{\x91\x90\x81\x01\x90a\x1B\x02V[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x04\x96Wa\x04\x96a\x13\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04\xE1W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R`\0\x19\x90\x92\x01\x91\x01\x81a\x04\xB4W\x90P[P\x84\x84\x81Q\x81\x10a\x04\xF4Wa\x04\xF4a\x1A\x85V[` \x02` \x01\x01\x81\x90RP`\0[\x81Q\x81\x10\x15a\x06\xC1W`@Q\x80``\x01`@R\x80\x87`\x01`\x01`\xA0\x1B\x03\x16cG\xB3\x14\xE8\x85\x85\x81Q\x81\x10a\x057Wa\x057a\x1A\x85V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x05]\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05zW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x9E\x91\x90a\x1A\xE5V[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x83\x81Q\x81\x10a\x05\xBEWa\x05\xBEa\x1A\x85V[` \x02` \x01\x01Q\x81R` \x01\x89`\x01`\x01`\xA0\x1B\x03\x16c\xFA(\xC6'\x85\x85\x81Q\x81\x10a\x05\xECWa\x05\xECa\x1A\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\x04\x81\x01\x91\x90\x91R`\xFF\x88\x16`$\x82\x01Rc\xFF\xFF\xFF\xFF\x8F\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06HW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06l\x91\x90a\x1B\x92V[`\x01`\x01``\x1B\x03\x16\x81RP\x85\x85\x81Q\x81\x10a\x06\x8AWa\x06\x8Aa\x1A\x85V[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\x06\xA3Wa\x06\xA3a\x1A\x85V[` \x02` \x01\x01\x81\x90RP\x80\x80a\x06\xB9\x90a\x1A\xCAV[\x91PPa\x05\x02V[PPP\x80\x80a\x06\xCF\x90a\x1A\xCAV[\x91PPa\x03\xD5V[P\x97\x96PPPPPPPV[``\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x06\xFEWa\x06\xFEa\x13\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07'W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82Q\x81\x10\x15a\x02FW\x83`\x01`\x01`\xA0\x1B\x03\x16c)k\xB0d\x84\x83\x81Q\x81\x10a\x07WWa\x07Wa\x1A\x85V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x07}\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\x9AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xBE\x91\x90a\x1A\xE5V[\x82\x82\x81Q\x81\x10a\x07\xD0Wa\x07\xD0a\x1A\x85V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01Ra\x07\xF1\x81a\x1A\xCAV[\x90Pa\x07-V[a\x08#`@Q\x80`\x80\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`\0\x87`\x01`\x01`\xA0\x1B\x03\x16ch0H5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08cW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\x87\x91\x90a\x1A\xE5V[\x90Pa\x08\xB4`@Q\x80`\x80\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`@Qca\xC8\xA1/`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x8A\x16\x90c\xC3\x91B^\x90a\x08\xE4\x90\x8B\x90\x89\x90\x89\x90`\x04\x01a\x1B\xBBV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\x01W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\t)\x91\x90\x81\x01\x90a\x1C\x05V[\x81R`@Qc@\xE0:\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x81\xC0u\x02\x90a\t[\x90\x8B\x90\x8B\x90\x8B\x90`\x04\x01a\x1C\xBCV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\txW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\t\xA0\x91\x90\x81\x01\x90a\x1C\x05V[`@\x82\x01R\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xBDWa\t\xBDa\x13\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\xF0W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\t\xDBW\x90P[P``\x82\x01R`\0[`\xFF\x81\x16\x87\x11\x15a\x0E3W`\0\x85`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\x1EWa\n\x1Ea\x13\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\nGW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x83``\x01Q\x83`\xFF\x16\x81Q\x81\x10a\naWa\naa\x1A\x85V[` \x02` \x01\x01\x81\x90RP`\0[\x86\x81\x10\x15a\r3W`\0\x8C`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x8A\x8A\x85\x81\x81\x10a\n\x9AWa\n\x9Aa\x1A\x85V[\x90P` \x02\x015\x8E\x88`\0\x01Q\x86\x81Q\x81\x10a\n\xB8Wa\n\xB8a\x1A\x85V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\n\xF5\x93\x92\x91\x90\x92\x83Rc\xFF\xFF\xFF\xFF\x91\x82\x16` \x84\x01R\x16`@\x82\x01R``\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\x12W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B6\x91\x90a\x1C\xE5V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16a\x0B\xDEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R\x7FOperatorStateRetriever.getCheckS`D\x82\x01R\x7FignaturesIndices: operator must `d\x82\x01R\x7Fbe registered at blocknumber\0\0\0\0`\x84\x82\x01R`\xA4\x01`@Q\x80\x91\x03\x90\xFD[\x8A\x8A\x85`\xFF\x16\x81\x81\x10a\x0B\xF3Wa\x0B\xF3a\x1A\x85V[`\x01`\x01`\xC0\x1B\x03\x84\x16\x92\x015`\xF8\x1C\x91\x90\x91\x1C`\x01\x90\x81\x16\x14\x15\x90Pa\r W\x85`\x01`\x01`\xA0\x1B\x03\x16c\xDD\x98F\xB9\x8A\x8A\x85\x81\x81\x10a\x0C5Wa\x0C5a\x1A\x85V[\x90P` \x02\x015\x8D\x8D\x88`\xFF\x16\x81\x81\x10a\x0CQWa\x0CQa\x1A\x85V[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x87\x90\x1B\x16\x81R`\x04\x81\x01\x94\x90\x94R\x91\x90\x91\x015`\xF8\x1C`$\x83\x01RPc\xFF\xFF\xFF\xFF\x8F\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\xA7W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xCB\x91\x90a\x1D\x0EV[\x85``\x01Q\x85`\xFF\x16\x81Q\x81\x10a\x0C\xE4Wa\x0C\xE4a\x1A\x85V[` \x02` \x01\x01Q\x84\x81Q\x81\x10a\x0C\xFDWa\x0C\xFDa\x1A\x85V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x82a\r\x1C\x81a\x1A\xCAV[\x93PP[P\x80a\r+\x81a\x1A\xCAV[\x91PPa\noV[P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\rNWa\rNa\x13\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\rwW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82\x81\x10\x15a\r\xF8W\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\r\x9EWa\r\x9Ea\x1A\x85V[` \x02` \x01\x01Q\x81\x81Q\x81\x10a\r\xB7Wa\r\xB7a\x1A\x85V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\r\xD1Wa\r\xD1a\x1A\x85V[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\r\xF0\x81a\x1A\xCAV[\x91PPa\r}V[P\x80\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0E\x13Wa\x0E\x13a\x1A\x85V[` \x02` \x01\x01\x81\x90RPPP\x80\x80a\x0E+\x90a\x1D+V[\x91PPa\t\xF9V[P`\0\x89`\x01`\x01`\xA0\x1B\x03\x16c]\xF4YF`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0EtW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\x98\x91\x90a\x1A\xE5V[`@Qc5IR\xA3`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xD5%J\x8C\x90a\x0E\xCB\x90\x8B\x90\x8B\x90\x8E\x90`\x04\x01a\x1DKV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xE8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0F\x10\x91\x90\x81\x01\x90a\x1C\x05V[` \x83\x01RP\x98\x97PPPPPPPPV[```\0\x84`\x01`\x01`\xA0\x1B\x03\x16c\xC3\x91B^\x84\x86`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0FT\x92\x91\x90a\x1DuV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0FqW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0F\x99\x91\x90\x81\x01\x90a\x1C\x05V[\x90P`\0\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0F\xB6Wa\x0F\xB6a\x13\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F\xDFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85Q\x81\x10\x15a\x10\xE0W\x86`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x87\x83\x81Q\x81\x10a\x10\x0FWa\x10\x0Fa\x1A\x85V[` \x02` \x01\x01Q\x87\x86\x85\x81Q\x81\x10a\x10*Wa\x10*a\x1A\x85V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10g\x93\x92\x91\x90\x92\x83Rc\xFF\xFF\xFF\xFF\x91\x82\x16` \x84\x01R\x16`@\x82\x01R``\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\x84W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xA8\x91\x90a\x1C\xE5V[`\x01`\x01`\xC0\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x10\xC3Wa\x10\xC3a\x1A\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a\x10\xD8\x81a\x1A\xCAV[\x91PPa\x0F\xE5V[P\x95\x94PPPPPV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91``\x91\x83\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P\x84\x81`\0\x81Q\x81\x10a\x11%Wa\x11%a\x1A\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qca\xC8\xA1/`\xE1\x1B\x81R`\0\x90`\x01`\x01`\xA0\x1B\x03\x88\x16\x90c\xC3\x91B^\x90a\x11a\x90\x88\x90\x86\x90`\x04\x01a\x1DuV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x11\xA6\x91\x90\x81\x01\x90a\x1C\x05V[`\0\x81Q\x81\x10a\x11\xB8Wa\x11\xB8a\x1A\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Qc\x04\xECcQ`\xE0\x1B\x81R`\x04\x81\x01\x88\x90Rc\xFF\xFF\xFF\xFF\x87\x81\x16`$\x83\x01R\x90\x91\x16`D\x82\x01\x81\x90R\x91P`\0\x90`\x01`\x01`\xA0\x1B\x03\x89\x16\x90c\x04\xECcQ\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12$W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12H\x91\x90a\x1C\xE5V[`\x01`\x01`\xC0\x1B\x03\x16\x90P`\0a\x12^\x82a\x12|V[\x90P\x81a\x12l\x8A\x83\x8Aa\x02MV[\x95P\x95PPPPP\x93P\x93\x91PPV[```\0\x80a\x12\x8A\x84a\x13HV[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12\xA5Wa\x12\xA5a\x13\x91V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x12\xCFW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0\x80[\x82Q\x82\x10\x80\x15a\x12\xE7WPa\x01\0\x81\x10[\x15a\x13>W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x13.W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x13\x10Wa\x13\x10a\x1A\x85V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP\x81`\x01\x01\x91P[a\x137\x81a\x1A\xCAV[\x90Pa\x12\xD6V[P\x90\x94\x93PPPPV[`\0\x80[\x82\x15a\x13sWa\x13]`\x01\x84a\x1D\x94V[\x90\x92\x16\x91\x80a\x13k\x81a\x1D\xABV[\x91PPa\x13LV[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x13\x8EW`\0\x80\xFD[PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x13\xCFWa\x13\xCFa\x13\x91V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x13\xF0Wa\x13\xF0a\x13\x91V[P`\x05\x1B` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x14\rW`\0\x80\xFD[\x825a\x14\x18\x81a\x13yV[\x91P` \x83\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x144W`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x14EW`\0\x80\xFD[\x805a\x14Xa\x14S\x82a\x13\xD7V[a\x13\xA7V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15a\x14wW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a\x14\x9EW\x835a\x14\x8F\x81a\x13yV[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a\x14|V[\x80\x95PPPPPP\x92P\x92\x90PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a\x14\xDDW\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x14\xC1V[P\x94\x95\x94PPPPPV[` \x81R`\0a\x14\xFB` \x83\x01\x84a\x14\xADV[\x93\x92PPPV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x13\x8EW`\0\x80\xFD[\x805a\x15\x1F\x81a\x15\x02V[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x159W`\0\x80\xFD[\x835a\x15D\x81a\x13yV[\x92P` \x84\x81\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x15aW`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a\x15uW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x15\x87Wa\x15\x87a\x13\x91V[a\x15\x99`\x1F\x82\x01`\x1F\x19\x16\x85\x01a\x13\xA7V[\x91P\x80\x82R\x88\x84\x82\x85\x01\x01\x11\x15a\x15\xAFW`\0\x80\xFD[\x80\x84\x84\x01\x85\x84\x017`\0\x84\x82\x84\x01\x01RP\x80\x94PPPPa\x15\xD2`@\x85\x01a\x15\x14V[\x90P\x92P\x92P\x92V[`\0\x81Q\x80\x84R` \x80\x85\x01\x80\x81\x96P\x83`\x05\x1B\x81\x01\x91P\x82\x86\x01`\0\x80[\x86\x81\x10\x15a\x16qW\x83\x85\x03\x8AR\x82Q\x80Q\x80\x87R\x90\x87\x01\x90\x87\x87\x01\x90\x84[\x81\x81\x10\x15a\x16\\W\x83Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x8A\x81\x01Q\x8B\x85\x01R`@\x90\x81\x01Q`\x01`\x01``\x1B\x03\x16\x90\x84\x01R\x92\x89\x01\x92``\x90\x92\x01\x91`\x01\x01a\x16\x18V[PP\x9A\x87\x01\x9A\x95PP\x91\x85\x01\x91`\x01\x01a\x15\xFAV[P\x92\x98\x97PPPPPPPPV[` \x81R`\0a\x14\xFB` \x83\x01\x84a\x15\xDBV[`\0\x82`\x1F\x83\x01\x12a\x16\xA3W`\0\x80\xFD[\x815` a\x16\xB3a\x14S\x83a\x13\xD7V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\x16\xD2W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x16\xEDW\x805\x83R\x91\x83\x01\x91\x83\x01a\x16\xD6V[P\x96\x95PPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x17\x0BW`\0\x80\xFD[\x825a\x17\x16\x81a\x13yV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x171W`\0\x80\xFD[a\x17=\x85\x82\x86\x01a\x16\x92V[\x91PP\x92P\x92\x90PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x17\x88W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x17cV[P\x90\x96\x95PPPPPPV[`\0\x80\x83`\x1F\x84\x01\x12a\x17\xA6W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\xBDW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x17\xD8W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\x80\x87\x89\x03\x12\x15a\x17\xF8W`\0\x80\xFD[\x865a\x18\x03\x81a\x13yV[\x95P` \x87\x015a\x18\x13\x81a\x15\x02V[\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x18/W`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a\x18CW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x18RW`\0\x80\xFD[\x8A` \x82\x85\x01\x01\x11\x15a\x18dW`\0\x80\xFD[` \x83\x01\x96P\x80\x95PP``\x89\x015\x91P\x80\x82\x11\x15a\x18\x82W`\0\x80\xFD[Pa\x18\x8F\x89\x82\x8A\x01a\x17\x94V[\x97\x9A\x96\x99P\x94\x97P\x92\x95\x93\x94\x92PPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a\x14\xDDW\x81Qc\xFF\xFF\xFF\xFF\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x18\xB5V[`\0` \x80\x83R\x83Q`\x80\x82\x85\x01Ra\x18\xF3`\xA0\x85\x01\x82a\x18\xA1V[\x90P\x81\x85\x01Q`\x1F\x19\x80\x86\x84\x03\x01`@\x87\x01Ra\x19\x10\x83\x83a\x18\xA1V[\x92P`@\x87\x01Q\x91P\x80\x86\x84\x03\x01``\x87\x01Ra\x19-\x83\x83a\x18\xA1V[``\x88\x01Q\x87\x82\x03\x83\x01`\x80\x89\x01R\x80Q\x80\x83R\x91\x94P\x85\x01\x92P\x84\x84\x01\x90`\x05\x81\x90\x1B\x85\x01\x86\x01`\0[\x82\x81\x10\x15a\x19\x84W\x84\x87\x83\x03\x01\x84Ra\x19r\x82\x87Qa\x18\xA1V[\x95\x88\x01\x95\x93\x88\x01\x93\x91P`\x01\x01a\x19XV[P\x99\x98PPPPPPPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x19\xA7W`\0\x80\xFD[\x835a\x19\xB2\x81a\x13yV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\xCDW`\0\x80\xFD[a\x19\xD9\x86\x82\x87\x01a\x16\x92V[\x92PP`@\x84\x015a\x19\xEA\x81a\x15\x02V[\x80\x91PP\x92P\x92P\x92V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x17\x88W\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1A\x11V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x1ABW`\0\x80\xFD[\x835a\x1AM\x81a\x13yV[\x92P` \x84\x015\x91P`@\x84\x015a\x19\xEA\x81a\x15\x02V[\x82\x81R`@` \x82\x01R`\0a\x1A}`@\x83\x01\x84a\x15\xDBV[\x94\x93PPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x1A\xADW`\0\x80\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x1A\xDEWa\x1A\xDEa\x1A\xB4V[P`\x01\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x1A\xF7W`\0\x80\xFD[\x81Qa\x14\xFB\x81a\x13yV[`\0` \x80\x83\x85\x03\x12\x15a\x1B\x15W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1B+W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x1B, + pub quorumApkIndices: alloy::sol_types::private::Vec, + pub totalStakeIndices: alloy::sol_types::private::Vec, + pub nonSignerStakeIndices: + alloy::sol_types::private::Vec>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array>, + >, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: CheckSignaturesIndices) -> Self { + ( + value.nonSignerQuorumBitmapIndices, + value.quorumApkIndices, + value.totalStakeIndices, + value.nonSignerStakeIndices, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for CheckSignaturesIndices { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + nonSignerQuorumBitmapIndices: tuple.0, + quorumApkIndices: tuple.1, + totalStakeIndices: tuple.2, + nonSignerStakeIndices: tuple.3, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for CheckSignaturesIndices { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for CheckSignaturesIndices { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + , + > as alloy_sol_types::SolType>::tokenize( + &self.nonSignerQuorumBitmapIndices, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.quorumApkIndices), + , + > as alloy_sol_types::SolType>::tokenize(&self.totalStakeIndices), + , + >, + > as alloy_sol_types::SolType>::tokenize(&self.nonSignerStakeIndices), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for CheckSignaturesIndices { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for CheckSignaturesIndices { + const NAME: &'static str = "CheckSignaturesIndices"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "CheckSignaturesIndices(uint32[] nonSignerQuorumBitmapIndices,uint32[] quorumApkIndices,uint32[] totalStakeIndices,uint32[][] nonSignerStakeIndices)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + , + > as alloy_sol_types::SolType>::eip712_data_word( + &self.nonSignerQuorumBitmapIndices, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word( + &self.quorumApkIndices, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word( + &self.totalStakeIndices, + ) + .0, + , + >, + > as alloy_sol_types::SolType>::eip712_data_word( + &self.nonSignerStakeIndices, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for CheckSignaturesIndices { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.nonSignerQuorumBitmapIndices, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.quorumApkIndices, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.totalStakeIndices, + ) + + , + >, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.nonSignerStakeIndices, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonSignerQuorumBitmapIndices, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.quorumApkIndices, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.totalStakeIndices, + out, + ); + >, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonSignerStakeIndices, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct Operator { address operator; bytes32 operatorId; uint96 stake; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct Operator { + pub operator: alloy::sol_types::private::Address, + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub stake: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<96>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U96, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: Operator) -> Self { + (value.operator, value.operatorId, value.stake) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for Operator { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + operatorId: tuple.1, + stake: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for Operator { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for Operator { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.stake), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Operator { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for Operator { + const NAME: &'static str = "Operator"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "Operator(address operator,bytes32 operatorId,uint96 stake)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.operator, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.operatorId) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.stake) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Operator { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.operator, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.operatorId, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.stake) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.operator, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.operatorId, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.stake, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**Function with signature `getBatchOperatorFromId(address,bytes32[])` and selector `0x4d2b57fe`. + ```solidity + function getBatchOperatorFromId(address registryCoordinator, bytes32[] memory operatorIds) external view returns (address[] memory operators); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getBatchOperatorFromIdCall { + pub registryCoordinator: alloy::sol_types::private::Address, + pub operatorIds: alloy::sol_types::private::Vec>, + } + ///Container type for the return parameters of the [`getBatchOperatorFromId(address,bytes32[])`](getBatchOperatorFromIdCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getBatchOperatorFromIdReturn { + pub operators: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Array>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Vec>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getBatchOperatorFromIdCall) -> Self { + (value.registryCoordinator, value.operatorIds) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getBatchOperatorFromIdCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + registryCoordinator: tuple.0, + operatorIds: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getBatchOperatorFromIdReturn) -> Self { + (value.operators,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getBatchOperatorFromIdReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operators: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getBatchOperatorFromIdCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Array>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getBatchOperatorFromIdReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getBatchOperatorFromId(address,bytes32[])"; + const SELECTOR: [u8; 4] = [77u8, 43u8, 87u8, 254u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.registryCoordinator, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.operatorIds), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getBatchOperatorId(address,address[])` and selector `0x31b36bd9`. + ```solidity + function getBatchOperatorId(address registryCoordinator, address[] memory operators) external view returns (bytes32[] memory operatorIds); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getBatchOperatorIdCall { + pub registryCoordinator: alloy::sol_types::private::Address, + pub operators: alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`getBatchOperatorId(address,address[])`](getBatchOperatorIdCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getBatchOperatorIdReturn { + pub operatorIds: alloy::sol_types::private::Vec>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getBatchOperatorIdCall) -> Self { + (value.registryCoordinator, value.operators) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getBatchOperatorIdCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + registryCoordinator: tuple.0, + operators: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getBatchOperatorIdReturn) -> Self { + (value.operatorIds,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getBatchOperatorIdReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorIds: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getBatchOperatorIdCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Array, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getBatchOperatorIdReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getBatchOperatorId(address,address[])"; + const SELECTOR: [u8; 4] = [49u8, 179u8, 107u8, 217u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.registryCoordinator, + ), + as alloy_sol_types::SolType>::tokenize(&self.operators), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getCheckSignaturesIndices(address,uint32,bytes,bytes32[])` and selector `0x4f739f74`. + ```solidity + function getCheckSignaturesIndices(address registryCoordinator, uint32 referenceBlockNumber, bytes memory quorumNumbers, bytes32[] memory nonSignerOperatorIds) external view returns (CheckSignaturesIndices memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getCheckSignaturesIndicesCall { + pub registryCoordinator: alloy::sol_types::private::Address, + pub referenceBlockNumber: u32, + pub quorumNumbers: alloy::sol_types::private::Bytes, + pub nonSignerOperatorIds: + alloy::sol_types::private::Vec>, + } + ///Container type for the return parameters of the [`getCheckSignaturesIndices(address,uint32,bytes,bytes32[])`](getCheckSignaturesIndicesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getCheckSignaturesIndicesReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Array>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + u32, + alloy::sol_types::private::Bytes, + alloy::sol_types::private::Vec>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCheckSignaturesIndicesCall) -> Self { + ( + value.registryCoordinator, + value.referenceBlockNumber, + value.quorumNumbers, + value.nonSignerOperatorIds, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCheckSignaturesIndicesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + registryCoordinator: tuple.0, + referenceBlockNumber: tuple.1, + quorumNumbers: tuple.2, + nonSignerOperatorIds: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (CheckSignaturesIndices,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCheckSignaturesIndicesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCheckSignaturesIndicesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getCheckSignaturesIndicesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Array>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getCheckSignaturesIndicesReturn; + type ReturnTuple<'a> = (CheckSignaturesIndices,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "getCheckSignaturesIndices(address,uint32,bytes,bytes32[])"; + const SELECTOR: [u8; 4] = [79u8, 115u8, 159u8, 116u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.registryCoordinator, + ), + as alloy_sol_types::SolType>::tokenize(&self.referenceBlockNumber), + ::tokenize( + &self.quorumNumbers, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.nonSignerOperatorIds), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorState(address,bytes,uint32)` and selector `0x3563b0d1`. + ```solidity + function getOperatorState(address registryCoordinator, bytes memory quorumNumbers, uint32 blockNumber) external view returns (Operator[][] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorState_0Call { + pub registryCoordinator: alloy::sol_types::private::Address, + pub quorumNumbers: alloy::sol_types::private::Bytes, + pub blockNumber: u32, + } + ///Container type for the return parameters of the [`getOperatorState(address,bytes,uint32)`](getOperatorState_0Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorState_0Return { + pub _0: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec<::RustType>, + >, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + u32, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorState_0Call) -> Self { + ( + value.registryCoordinator, + value.quorumNumbers, + value.blockNumber, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorState_0Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + registryCoordinator: tuple.0, + quorumNumbers: tuple.1, + blockNumber: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec< + ::RustType, + >, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorState_0Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorState_0Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorState_0Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorState_0Return; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorState(address,bytes,uint32)"; + const SELECTOR: [u8; 4] = [53u8, 99u8, 176u8, 209u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.registryCoordinator, + ), + ::tokenize( + &self.quorumNumbers, + ), + as alloy_sol_types::SolType>::tokenize( + &self.blockNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorState(address,bytes32,uint32)` and selector `0xcefdc1d4`. + ```solidity + function getOperatorState(address registryCoordinator, bytes32 operatorId, uint32 blockNumber) external view returns (uint256, Operator[][] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorState_1Call { + pub registryCoordinator: alloy::sol_types::private::Address, + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub blockNumber: u32, + } + ///Container type for the return parameters of the [`getOperatorState(address,bytes32,uint32)`](getOperatorState_1Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorState_1Return { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + pub _1: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec<::RustType>, + >, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::FixedBytes<32>, + u32, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorState_1Call) -> Self { + ( + value.registryCoordinator, + value.operatorId, + value.blockNumber, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorState_1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + registryCoordinator: tuple.0, + operatorId: tuple.1, + blockNumber: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Array>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec< + ::RustType, + >, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorState_1Return) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorState_1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorState_1Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorState_1Return; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Array>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorState(address,bytes32,uint32)"; + const SELECTOR: [u8; 4] = [206u8, 253u8, 193u8, 212u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.registryCoordinator, + ), + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.blockNumber), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getQuorumBitmapsAtBlockNumber(address,bytes32[],uint32)` and selector `0x5c155662`. + ```solidity + function getQuorumBitmapsAtBlockNumber(address registryCoordinator, bytes32[] memory operatorIds, uint32 blockNumber) external view returns (uint256[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumBitmapsAtBlockNumberCall { + pub registryCoordinator: alloy::sol_types::private::Address, + pub operatorIds: alloy::sol_types::private::Vec>, + pub blockNumber: u32, + } + ///Container type for the return parameters of the [`getQuorumBitmapsAtBlockNumber(address,bytes32[],uint32)`](getQuorumBitmapsAtBlockNumberCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumBitmapsAtBlockNumberReturn { + pub _0: + alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Vec>, + u32, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumBitmapsAtBlockNumberCall) -> Self { + ( + value.registryCoordinator, + value.operatorIds, + value.blockNumber, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumBitmapsAtBlockNumberCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + registryCoordinator: tuple.0, + operatorIds: tuple.1, + blockNumber: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumBitmapsAtBlockNumberReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumBitmapsAtBlockNumberReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getQuorumBitmapsAtBlockNumberCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getQuorumBitmapsAtBlockNumberReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "getQuorumBitmapsAtBlockNumber(address,bytes32[],uint32)"; + const SELECTOR: [u8; 4] = [92u8, 21u8, 86u8, 98u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.registryCoordinator, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.operatorIds), + as alloy_sol_types::SolType>::tokenize(&self.blockNumber), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`OperatorStateRetriever`](self) function calls. + pub enum OperatorStateRetrieverCalls { + getBatchOperatorFromId(getBatchOperatorFromIdCall), + getBatchOperatorId(getBatchOperatorIdCall), + getCheckSignaturesIndices(getCheckSignaturesIndicesCall), + getOperatorState_0(getOperatorState_0Call), + getOperatorState_1(getOperatorState_1Call), + getQuorumBitmapsAtBlockNumber(getQuorumBitmapsAtBlockNumberCall), + } + #[automatically_derived] + impl OperatorStateRetrieverCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [49u8, 179u8, 107u8, 217u8], + [53u8, 99u8, 176u8, 209u8], + [77u8, 43u8, 87u8, 254u8], + [79u8, 115u8, 159u8, 116u8], + [92u8, 21u8, 86u8, 98u8], + [206u8, 253u8, 193u8, 212u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for OperatorStateRetrieverCalls { + const NAME: &'static str = "OperatorStateRetrieverCalls"; + const MIN_DATA_LENGTH: usize = 96usize; + const COUNT: usize = 6usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::getBatchOperatorFromId(_) => { + ::SELECTOR + } + Self::getBatchOperatorId(_) => { + ::SELECTOR + } + Self::getCheckSignaturesIndices(_) => { + ::SELECTOR + } + Self::getOperatorState_0(_) => { + ::SELECTOR + } + Self::getOperatorState_1(_) => { + ::SELECTOR + } + Self::getQuorumBitmapsAtBlockNumber(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn getBatchOperatorId( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OperatorStateRetrieverCalls::getBatchOperatorId) + } + getBatchOperatorId + }, + { + fn getOperatorState_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OperatorStateRetrieverCalls::getOperatorState_0) + } + getOperatorState_0 + }, + { + fn getBatchOperatorFromId( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OperatorStateRetrieverCalls::getBatchOperatorFromId) + } + getBatchOperatorFromId + }, + { + fn getCheckSignaturesIndices( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OperatorStateRetrieverCalls::getCheckSignaturesIndices) + } + getCheckSignaturesIndices + }, + { + fn getQuorumBitmapsAtBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + OperatorStateRetrieverCalls::getQuorumBitmapsAtBlockNumber, + ) + } + getQuorumBitmapsAtBlockNumber + }, + { + fn getOperatorState_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OperatorStateRetrieverCalls::getOperatorState_1) + } + getOperatorState_1 + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::getBatchOperatorFromId(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getBatchOperatorId(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getCheckSignaturesIndices(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorState_0(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorState_1(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getQuorumBitmapsAtBlockNumber(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::getBatchOperatorFromId(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getBatchOperatorId(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getCheckSignaturesIndices(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getOperatorState_0(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getOperatorState_1(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getQuorumBitmapsAtBlockNumber(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`OperatorStateRetriever`](self) contract instance. + + See the [wrapper's documentation](`OperatorStateRetrieverInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> OperatorStateRetrieverInstance { + OperatorStateRetrieverInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + OperatorStateRetrieverInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + OperatorStateRetrieverInstance::::deploy_builder(provider) + } + /**A [`OperatorStateRetriever`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`OperatorStateRetriever`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct OperatorStateRetrieverInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for OperatorStateRetrieverInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("OperatorStateRetrieverInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > OperatorStateRetrieverInstance + { + /**Creates a new wrapper around an on-chain [`OperatorStateRetriever`](self) contract instance. + + See the [wrapper's documentation](`OperatorStateRetrieverInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl OperatorStateRetrieverInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> OperatorStateRetrieverInstance { + OperatorStateRetrieverInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > OperatorStateRetrieverInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`getBatchOperatorFromId`] function. + pub fn getBatchOperatorFromId( + &self, + registryCoordinator: alloy::sol_types::private::Address, + operatorIds: alloy::sol_types::private::Vec>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getBatchOperatorFromIdCall { + registryCoordinator, + operatorIds, + }) + } + ///Creates a new call builder for the [`getBatchOperatorId`] function. + pub fn getBatchOperatorId( + &self, + registryCoordinator: alloy::sol_types::private::Address, + operators: alloy::sol_types::private::Vec, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getBatchOperatorIdCall { + registryCoordinator, + operators, + }) + } + ///Creates a new call builder for the [`getCheckSignaturesIndices`] function. + pub fn getCheckSignaturesIndices( + &self, + registryCoordinator: alloy::sol_types::private::Address, + referenceBlockNumber: u32, + quorumNumbers: alloy::sol_types::private::Bytes, + nonSignerOperatorIds: alloy::sol_types::private::Vec< + alloy::sol_types::private::FixedBytes<32>, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getCheckSignaturesIndicesCall { + registryCoordinator, + referenceBlockNumber, + quorumNumbers, + nonSignerOperatorIds, + }) + } + ///Creates a new call builder for the [`getOperatorState_0`] function. + pub fn getOperatorState_0( + &self, + registryCoordinator: alloy::sol_types::private::Address, + quorumNumbers: alloy::sol_types::private::Bytes, + blockNumber: u32, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorState_0Call { + registryCoordinator, + quorumNumbers, + blockNumber, + }) + } + ///Creates a new call builder for the [`getOperatorState_1`] function. + pub fn getOperatorState_1( + &self, + registryCoordinator: alloy::sol_types::private::Address, + operatorId: alloy::sol_types::private::FixedBytes<32>, + blockNumber: u32, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorState_1Call { + registryCoordinator, + operatorId, + blockNumber, + }) + } + ///Creates a new call builder for the [`getQuorumBitmapsAtBlockNumber`] function. + pub fn getQuorumBitmapsAtBlockNumber( + &self, + registryCoordinator: alloy::sol_types::private::Address, + operatorIds: alloy::sol_types::private::Vec>, + blockNumber: u32, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getQuorumBitmapsAtBlockNumberCall { + registryCoordinator, + operatorIds, + blockNumber, + }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > OperatorStateRetrieverInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/ownable.rs b/crates/utils/src/ownable.rs new file mode 100644 index 00000000..c5b58677 --- /dev/null +++ b/crates/utils/src/ownable.rs @@ -0,0 +1,906 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface Ownable { + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + + function owner() external view returns (address); + function renounceOwnership() external; + function transferOwnership(address newOwner) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod Ownable { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. + ```solidity + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub previousOwner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, + 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, + 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + previousOwner: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.previousOwner.clone(), + self.newOwner.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.previousOwner, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. + ```solidity + function owner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `renounceOwnership()` and selector `0x715018a6`. + ```solidity + function renounceOwnership() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct renounceOwnershipCall {} + ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct renounceOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for renounceOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for renounceOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for renounceOwnershipCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = renounceOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "renounceOwnership()"; + const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. + ```solidity + function transferOwnership(address newOwner) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`Ownable`](self) function calls. + pub enum OwnableCalls { + owner(ownerCall), + renounceOwnership(renounceOwnershipCall), + transferOwnership(transferOwnershipCall), + } + #[automatically_derived] + impl OwnableCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [113u8, 80u8, 24u8, 166u8], + [141u8, 165u8, 203u8, 91u8], + [242u8, 253u8, 227u8, 139u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for OwnableCalls { + const NAME: &'static str = "OwnableCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 3usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::owner(_) => ::SELECTOR, + Self::renounceOwnership(_) => { + ::SELECTOR + } + Self::transferOwnership(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn(&[u8], bool) -> alloy_sol_types::Result] = &[ + { + fn renounceOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OwnableCalls::renounceOwnership) + } + renounceOwnership + }, + { + fn owner(data: &[u8], validate: bool) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(OwnableCalls::owner) + } + owner + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OwnableCalls::transferOwnership) + } + transferOwnership + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::renounceOwnership(inner) => { + ::abi_encoded_size(inner) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::renounceOwnership(inner) => { + ::abi_encode_raw(inner, out) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`Ownable`](self) events. + pub enum OwnableEvents { + OwnershipTransferred(OwnershipTransferred), + } + #[automatically_derived] + impl OwnableEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[[ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, 208u8, + 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, 175u8, 227u8, 180u8, + 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ]]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for OwnableEvents { + const NAME: &'static str = "OwnableEvents"; + const COUNT: usize = 1usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OwnershipTransferred) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnableEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Ownable`](self) contract instance. + + See the [wrapper's documentation](`OwnableInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> OwnableInstance { + OwnableInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + OwnableInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + OwnableInstance::::deploy_builder(provider) + } + /**A [`Ownable`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`Ownable`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct OwnableInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for OwnableInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("OwnableInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > OwnableInstance + { + /**Creates a new wrapper around an on-chain [`Ownable`](self) contract instance. + + See the [wrapper's documentation](`OwnableInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl OwnableInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> OwnableInstance { + OwnableInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > OwnableInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`renounceOwnership`] function. + pub fn renounceOwnership( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&renounceOwnershipCall {}) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > OwnableInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/ownableupgradeable.rs b/crates/utils/src/ownableupgradeable.rs new file mode 100644 index 00000000..4c697278 --- /dev/null +++ b/crates/utils/src/ownableupgradeable.rs @@ -0,0 +1,1041 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface OwnableUpgradeable { + event Initialized(uint8 version); + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + + function owner() external view returns (address); + function renounceOwnership() external; + function transferOwnership(address newOwner) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod OwnableUpgradeable { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`. + ```solidity + event Initialized(uint8 version); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Initialized { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "Initialized(uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, + 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, + 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { version: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.version, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Initialized { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Initialized> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Initialized) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. + ```solidity + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub previousOwner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, + 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, + 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + previousOwner: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.previousOwner.clone(), + self.newOwner.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.previousOwner, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. + ```solidity + function owner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `renounceOwnership()` and selector `0x715018a6`. + ```solidity + function renounceOwnership() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct renounceOwnershipCall {} + ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct renounceOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for renounceOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for renounceOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for renounceOwnershipCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = renounceOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "renounceOwnership()"; + const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. + ```solidity + function transferOwnership(address newOwner) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`OwnableUpgradeable`](self) function calls. + pub enum OwnableUpgradeableCalls { + owner(ownerCall), + renounceOwnership(renounceOwnershipCall), + transferOwnership(transferOwnershipCall), + } + #[automatically_derived] + impl OwnableUpgradeableCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [113u8, 80u8, 24u8, 166u8], + [141u8, 165u8, 203u8, 91u8], + [242u8, 253u8, 227u8, 139u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for OwnableUpgradeableCalls { + const NAME: &'static str = "OwnableUpgradeableCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 3usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::owner(_) => ::SELECTOR, + Self::renounceOwnership(_) => { + ::SELECTOR + } + Self::transferOwnership(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn renounceOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OwnableUpgradeableCalls::renounceOwnership) + } + renounceOwnership + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(OwnableUpgradeableCalls::owner) + } + owner + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(OwnableUpgradeableCalls::transferOwnership) + } + transferOwnership + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::renounceOwnership(inner) => { + ::abi_encoded_size(inner) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::renounceOwnership(inner) => { + ::abi_encode_raw(inner, out) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`OwnableUpgradeable`](self) events. + pub enum OwnableUpgradeableEvents { + Initialized(Initialized), + OwnershipTransferred(OwnershipTransferred), + } + #[automatically_derived] + impl OwnableUpgradeableEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, 56u8, + 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, 96u8, + 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ], + [ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, 208u8, + 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, 175u8, 227u8, + 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for OwnableUpgradeableEvents { + const NAME: &'static str = "OwnableUpgradeableEvents"; + const COUNT: usize = 2usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::Initialized) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OwnershipTransferred) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnableUpgradeableEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`OwnableUpgradeable`](self) contract instance. + + See the [wrapper's documentation](`OwnableUpgradeableInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> OwnableUpgradeableInstance { + OwnableUpgradeableInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + OwnableUpgradeableInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + OwnableUpgradeableInstance::::deploy_builder(provider) + } + /**A [`OwnableUpgradeable`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`OwnableUpgradeable`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct OwnableUpgradeableInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for OwnableUpgradeableInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("OwnableUpgradeableInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > OwnableUpgradeableInstance + { + /**Creates a new wrapper around an on-chain [`OwnableUpgradeable`](self) contract instance. + + See the [wrapper's documentation](`OwnableUpgradeableInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl OwnableUpgradeableInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> OwnableUpgradeableInstance { + OwnableUpgradeableInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > OwnableUpgradeableInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`renounceOwnership`] function. + pub fn renounceOwnership( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&renounceOwnershipCall {}) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > OwnableUpgradeableInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Initialized`] event. + pub fn Initialized_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/pausable.rs b/crates/utils/src/pausable.rs new file mode 100644 index 00000000..d4cd7653 --- /dev/null +++ b/crates/utils/src/pausable.rs @@ -0,0 +1,1782 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface Pausable { + event Paused(address indexed account, uint256 newPausedStatus); + event PauserRegistrySet(address pauserRegistry, address newPauserRegistry); + event Unpaused(address indexed account, uint256 newPausedStatus); + + function pause(uint256 newPausedStatus) external; + function pauseAll() external; + function paused(uint8 index) external view returns (bool); + function paused() external view returns (uint256); + function pauserRegistry() external view returns (address); + function setPauserRegistry(address newPauserRegistry) external; + function unpause(uint256 newPausedStatus) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "pause", + "inputs": [ + { + "name": "newPausedStatus", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "pauseAll", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "paused", + "inputs": [ + { + "name": "index", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "paused", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pauserRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setPauserRegistry", + "inputs": [ + { + "name": "newPauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "unpause", + "inputs": [ + { + "name": "newPausedStatus", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Paused", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newPausedStatus", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "PauserRegistrySet", + "inputs": [ + { + "name": "pauserRegistry", + "type": "address", + "indexed": false, + "internalType": "contract IPauserRegistry" + }, + { + "name": "newPauserRegistry", + "type": "address", + "indexed": false, + "internalType": "contract IPauserRegistry" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Unpaused", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newPausedStatus", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod Pausable { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b506107c2806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80635ac86ab71161005b5780635ac86ab7146100b25780635c975abb146100e6578063886f1195146100f7578063fabc1cbc1461012257600080fd5b806310d67a2f14610082578063136439dd14610097578063595c6a67146100aa575b600080fd5b61009561009036600461065b565b610135565b005b6100956100a536600461067f565b6101ef565b61009561032e565b6100d16100c0366004610698565b6001805460ff9092161b9081161490565b60405190151581526020015b60405180910390f35b6001546040519081526020016100dd565b60005461010a906001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b61009561013036600461067f565b6103f5565b60008054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101aa91906106bb565b6001600160a01b0316336001600160a01b0316146101e35760405162461bcd60e51b81526004016101da906106d8565b60405180910390fd5b6101ec8161054f565b50565b60005460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025b9190610722565b6102775760405162461bcd60e51b81526004016101da90610744565b600154818116146102f05760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016101da565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60005460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610376573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039a9190610722565b6103b65760405162461bcd60e51b81526004016101da90610744565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610446573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046a91906106bb565b6001600160a01b0316336001600160a01b03161461049a5760405162461bcd60e51b81526004016101da906106d8565b6001541981196001541916146105185760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016101da565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610323565b6001600160a01b0381166105dd5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016101da565b600054604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811681146101ec57600080fd5b60006020828403121561066d57600080fd5b813561067881610646565b9392505050565b60006020828403121561069157600080fd5b5035919050565b6000602082840312156106aa57600080fd5b813560ff8116811461067857600080fd5b6000602082840312156106cd57600080fd5b815161067881610646565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561073457600080fd5b8151801515811461067857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea26469706673582212201708735d0325577983acabd67000e3f0a89722ff7c28346f4fa4129cce1190aa64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x07\xC2\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0}W`\x005`\xE0\x1C\x80cZ\xC8j\xB7\x11a\0[W\x80cZ\xC8j\xB7\x14a\0\xB2W\x80c\\\x97Z\xBB\x14a\0\xE6W\x80c\x88o\x11\x95\x14a\0\xF7W\x80c\xFA\xBC\x1C\xBC\x14a\x01\"W`\0\x80\xFD[\x80c\x10\xD6z/\x14a\0\x82W\x80c\x13d9\xDD\x14a\0\x97W\x80cY\\jg\x14a\0\xAAW[`\0\x80\xFD[a\0\x95a\0\x906`\x04a\x06[V[a\x015V[\0[a\0\x95a\0\xA56`\x04a\x06\x7FV[a\x01\xEFV[a\0\x95a\x03.V[a\0\xD1a\0\xC06`\x04a\x06\x98V[`\x01\x80T`\xFF\x90\x92\x16\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\x01T`@Q\x90\x81R` \x01a\0\xDDV[`\0Ta\x01\n\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xDDV[a\0\x95a\x0106`\x04a\x06\x7FV[a\x03\xF5V[`\0\x80T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xEA\xB6mz`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\x86W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xAA\x91\x90a\x06\xBBV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x01\xE3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xDA\x90a\x06\xD8V[`@Q\x80\x91\x03\x90\xFD[a\x01\xEC\x81a\x05OV[PV[`\0T`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x027W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02[\x91\x90a\x07\"V[a\x02wW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xDA\x90a\x07DV[`\x01T\x81\x81\x16\x14a\x02\xF0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.pause: invalid attempt `D\x82\x01R\x7Fto unpause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x01\xDAV[`\x01\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01[`@Q\x80\x91\x03\x90\xA2PV[`\0T`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03vW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\x9A\x91\x90a\x07\"V[a\x03\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xDA\x90a\x07DV[`\0\x19`\x01\x81\x90U`@Q\x90\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2V[`\0\x80T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xEA\xB6mz`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04j\x91\x90a\x06\xBBV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x04\x9AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xDA\x90a\x06\xD8V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\x05\x18W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.unpause: invalid attemp`D\x82\x01R\x7Ft to pause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x01\xDAV[`\x01\x81\x90U`@Q\x81\x81R3\x90\x7F5\x82\xD1\x82\x8E&\xBFV\xBD\x80\x15\x02\xBC\x02\x1A\xC0\xBC\x8A\xFBW\xC8&\xE4\x98kEY<\x8F\xAD8\x9C\x90` \x01a\x03#V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FPausable._setPauserRegistry: new`D\x82\x01R\x7FPauserRegistry cannot be the zer`d\x82\x01Rho address`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\x01\xDAV[`\0T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7Fn\x9F\xCDS\x98\x96\xFC\xA6\x0E\x8B\x0F\x01\xDDX\x023\xE4\x8Ak\x0F}\xF0\x13\xB8\x9B\xA7\xF5e\x86\x9A\xCD\xB6\x91\x01`@Q\x80\x91\x03\x90\xA1`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\xECW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x06mW`\0\x80\xFD[\x815a\x06x\x81a\x06FV[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x06\x91W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x06\xAAW`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x06xW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x06\xCDW`\0\x80\xFD[\x81Qa\x06x\x81a\x06FV[` \x80\x82R`*\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Ri9\x90:\xB780\xBA\xB9\xB2\xB9`\xB1\x1B``\x82\x01R`\x80\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x074W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x06xW`\0\x80\xFD[` \x80\x82R`(\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Rg9\x9080\xBA\xB9\xB2\xB9`\xC1\x1B``\x82\x01R`\x80\x01\x90V\xFE\xA2dipfsX\"\x12 \x17\x08s]\x03%Wy\x83\xAC\xAB\xD6p\0\xE3\xF0\xA8\x97\"\xFF|(4oO\xA4\x12\x9C\xCE\x11\x90\xAAdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80635ac86ab71161005b5780635ac86ab7146100b25780635c975abb146100e6578063886f1195146100f7578063fabc1cbc1461012257600080fd5b806310d67a2f14610082578063136439dd14610097578063595c6a67146100aa575b600080fd5b61009561009036600461065b565b610135565b005b6100956100a536600461067f565b6101ef565b61009561032e565b6100d16100c0366004610698565b6001805460ff9092161b9081161490565b60405190151581526020015b60405180910390f35b6001546040519081526020016100dd565b60005461010a906001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b61009561013036600461067f565b6103f5565b60008054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101aa91906106bb565b6001600160a01b0316336001600160a01b0316146101e35760405162461bcd60e51b81526004016101da906106d8565b60405180910390fd5b6101ec8161054f565b50565b60005460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025b9190610722565b6102775760405162461bcd60e51b81526004016101da90610744565b600154818116146102f05760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016101da565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60005460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610376573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039a9190610722565b6103b65760405162461bcd60e51b81526004016101da90610744565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610446573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046a91906106bb565b6001600160a01b0316336001600160a01b03161461049a5760405162461bcd60e51b81526004016101da906106d8565b6001541981196001541916146105185760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016101da565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610323565b6001600160a01b0381166105dd5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016101da565b600054604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811681146101ec57600080fd5b60006020828403121561066d57600080fd5b813561067881610646565b9392505050565b60006020828403121561069157600080fd5b5035919050565b6000602082840312156106aa57600080fd5b813560ff8116811461067857600080fd5b6000602082840312156106cd57600080fd5b815161067881610646565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561073457600080fd5b8151801515811461067857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea26469706673582212201708735d0325577983acabd67000e3f0a89722ff7c28346f4fa4129cce1190aa64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0}W`\x005`\xE0\x1C\x80cZ\xC8j\xB7\x11a\0[W\x80cZ\xC8j\xB7\x14a\0\xB2W\x80c\\\x97Z\xBB\x14a\0\xE6W\x80c\x88o\x11\x95\x14a\0\xF7W\x80c\xFA\xBC\x1C\xBC\x14a\x01\"W`\0\x80\xFD[\x80c\x10\xD6z/\x14a\0\x82W\x80c\x13d9\xDD\x14a\0\x97W\x80cY\\jg\x14a\0\xAAW[`\0\x80\xFD[a\0\x95a\0\x906`\x04a\x06[V[a\x015V[\0[a\0\x95a\0\xA56`\x04a\x06\x7FV[a\x01\xEFV[a\0\x95a\x03.V[a\0\xD1a\0\xC06`\x04a\x06\x98V[`\x01\x80T`\xFF\x90\x92\x16\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\x01T`@Q\x90\x81R` \x01a\0\xDDV[`\0Ta\x01\n\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xDDV[a\0\x95a\x0106`\x04a\x06\x7FV[a\x03\xF5V[`\0\x80T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xEA\xB6mz`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\x86W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xAA\x91\x90a\x06\xBBV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x01\xE3W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xDA\x90a\x06\xD8V[`@Q\x80\x91\x03\x90\xFD[a\x01\xEC\x81a\x05OV[PV[`\0T`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x027W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02[\x91\x90a\x07\"V[a\x02wW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xDA\x90a\x07DV[`\x01T\x81\x81\x16\x14a\x02\xF0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.pause: invalid attempt `D\x82\x01R\x7Fto unpause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x01\xDAV[`\x01\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01[`@Q\x80\x91\x03\x90\xA2PV[`\0T`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03vW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\x9A\x91\x90a\x07\"V[a\x03\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xDA\x90a\x07DV[`\0\x19`\x01\x81\x90U`@Q\x90\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2V[`\0\x80T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xEA\xB6mz`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04j\x91\x90a\x06\xBBV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x04\x9AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xDA\x90a\x06\xD8V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\x05\x18W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.unpause: invalid attemp`D\x82\x01R\x7Ft to pause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x01\xDAV[`\x01\x81\x90U`@Q\x81\x81R3\x90\x7F5\x82\xD1\x82\x8E&\xBFV\xBD\x80\x15\x02\xBC\x02\x1A\xC0\xBC\x8A\xFBW\xC8&\xE4\x98kEY<\x8F\xAD8\x9C\x90` \x01a\x03#V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FPausable._setPauserRegistry: new`D\x82\x01R\x7FPauserRegistry cannot be the zer`d\x82\x01Rho address`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\x01\xDAV[`\0T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7Fn\x9F\xCDS\x98\x96\xFC\xA6\x0E\x8B\x0F\x01\xDDX\x023\xE4\x8Ak\x0F}\xF0\x13\xB8\x9B\xA7\xF5e\x86\x9A\xCD\xB6\x91\x01`@Q\x80\x91\x03\x90\xA1`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\xECW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x06mW`\0\x80\xFD[\x815a\x06x\x81a\x06FV[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x06\x91W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x06\xAAW`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x06xW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x06\xCDW`\0\x80\xFD[\x81Qa\x06x\x81a\x06FV[` \x80\x82R`*\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Ri9\x90:\xB780\xBA\xB9\xB2\xB9`\xB1\x1B``\x82\x01R`\x80\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x074W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x06xW`\0\x80\xFD[` \x80\x82R`(\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Rg9\x9080\xBA\xB9\xB2\xB9`\xC1\x1B``\x82\x01R`\x80\x01\x90V\xFE\xA2dipfsX\"\x12 \x17\x08s]\x03%Wy\x83\xAC\xAB\xD6p\0\xE3\xF0\xA8\x97\"\xFF|(4oO\xA4\x12\x9C\xCE\x11\x90\xAAdsolcC\0\x08\x0C\x003", + ); + /**Event with signature `Paused(address,uint256)` and selector `0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d`. + ```solidity + event Paused(address indexed account, uint256 newPausedStatus); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Paused { + #[allow(missing_docs)] + pub account: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Paused { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Paused(address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8, 188u8, + 152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8, 11u8, 182u8, + 224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + account: topics.1, + newPausedStatus: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.account.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.account, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Paused { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Paused> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Paused) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `PauserRegistrySet(address,address)` and selector `0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6`. + ```solidity + event PauserRegistrySet(address pauserRegistry, address newPauserRegistry); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct PauserRegistrySet { + #[allow(missing_docs)] + pub pauserRegistry: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newPauserRegistry: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for PauserRegistrySet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "PauserRegistrySet(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 110u8, 159u8, 205u8, 83u8, 152u8, 150u8, 252u8, 166u8, 14u8, 139u8, 15u8, 1u8, + 221u8, 88u8, 2u8, 51u8, 228u8, 138u8, 107u8, 15u8, 125u8, 240u8, 19u8, 184u8, + 155u8, 167u8, 245u8, 101u8, 134u8, 154u8, 205u8, 182u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + pauserRegistry: data.0, + newPauserRegistry: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.pauserRegistry, + ), + ::tokenize( + &self.newPauserRegistry, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for PauserRegistrySet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&PauserRegistrySet> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &PauserRegistrySet) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Unpaused(address,uint256)` and selector `0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c`. + ```solidity + event Unpaused(address indexed account, uint256 newPausedStatus); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Unpaused { + #[allow(missing_docs)] + pub account: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Unpaused { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Unpaused(address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8, 2u8, + 188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8, 228u8, 152u8, + 107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + account: topics.1, + newPausedStatus: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.account.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.account, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Unpaused { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Unpaused> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Unpaused) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `pause(uint256)` and selector `0x136439dd`. + ```solidity + function pause(uint256 newPausedStatus) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseCall { + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`pause(uint256)`](pauseCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseCall) -> Self { + (value.newPausedStatus,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newPausedStatus: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauseCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pauseReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pause(uint256)"; + const SELECTOR: [u8; 4] = [19u8, 100u8, 57u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pauseAll()` and selector `0x595c6a67`. + ```solidity + function pauseAll() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseAllCall {} + ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseAllReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseAllCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseAllCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseAllReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseAllReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauseAllCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pauseAllReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pauseAll()"; + const SELECTOR: [u8; 4] = [89u8, 92u8, 106u8, 103u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `paused(uint8)` and selector `0x5ac86ab7`. + ```solidity + function paused(uint8 index) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_0Call { + pub index: u8, + } + ///Container type for the return parameters of the [`paused(uint8)`](paused_0Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_0Return { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_0Call) -> Self { + (value.index,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_0Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { index: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_0Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_0Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for paused_0Call { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = paused_0Return; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "paused(uint8)"; + const SELECTOR: [u8; 4] = [90u8, 200u8, 106u8, 183u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `paused()` and selector `0x5c975abb`. + ```solidity + function paused() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_1Call {} + ///Container type for the return parameters of the [`paused()`](paused_1Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_1Return { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_1Call) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_1Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for paused_1Call { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = paused_1Return; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "paused()"; + const SELECTOR: [u8; 4] = [92u8, 151u8, 90u8, 187u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pauserRegistry()` and selector `0x886f1195`. + ```solidity + function pauserRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauserRegistryCall {} + ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauserRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauserRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauserRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauserRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauserRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauserRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pauserRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pauserRegistry()"; + const SELECTOR: [u8; 4] = [136u8, 111u8, 17u8, 149u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setPauserRegistry(address)` and selector `0x10d67a2f`. + ```solidity + function setPauserRegistry(address newPauserRegistry) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setPauserRegistryCall { + pub newPauserRegistry: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setPauserRegistry(address)`](setPauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setPauserRegistryReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setPauserRegistryCall) -> Self { + (value.newPauserRegistry,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setPauserRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newPauserRegistry: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setPauserRegistryReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setPauserRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setPauserRegistryCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setPauserRegistryReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setPauserRegistry(address)"; + const SELECTOR: [u8; 4] = [16u8, 214u8, 122u8, 47u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newPauserRegistry, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `unpause(uint256)` and selector `0xfabc1cbc`. + ```solidity + function unpause(uint256 newPausedStatus) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct unpauseCall { + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`unpause(uint256)`](unpauseCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct unpauseReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: unpauseCall) -> Self { + (value.newPausedStatus,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for unpauseCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newPausedStatus: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: unpauseReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for unpauseReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for unpauseCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = unpauseReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "unpause(uint256)"; + const SELECTOR: [u8; 4] = [250u8, 188u8, 28u8, 188u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`Pausable`](self) function calls. + pub enum PausableCalls { + pause(pauseCall), + pauseAll(pauseAllCall), + paused_0(paused_0Call), + paused_1(paused_1Call), + pauserRegistry(pauserRegistryCall), + setPauserRegistry(setPauserRegistryCall), + unpause(unpauseCall), + } + #[automatically_derived] + impl PausableCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [16u8, 214u8, 122u8, 47u8], + [19u8, 100u8, 57u8, 221u8], + [89u8, 92u8, 106u8, 103u8], + [90u8, 200u8, 106u8, 183u8], + [92u8, 151u8, 90u8, 187u8], + [136u8, 111u8, 17u8, 149u8], + [250u8, 188u8, 28u8, 188u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for PausableCalls { + const NAME: &'static str = "PausableCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 7usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::pause(_) => ::SELECTOR, + Self::pauseAll(_) => ::SELECTOR, + Self::paused_0(_) => ::SELECTOR, + Self::paused_1(_) => ::SELECTOR, + Self::pauserRegistry(_) => { + ::SELECTOR + } + Self::setPauserRegistry(_) => { + ::SELECTOR + } + Self::unpause(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn(&[u8], bool) -> alloy_sol_types::Result] = &[ + { + fn setPauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(PausableCalls::setPauserRegistry) + } + setPauserRegistry + }, + { + fn pause( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(PausableCalls::pause) + } + pause + }, + { + fn pauseAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(PausableCalls::pauseAll) + } + pauseAll + }, + { + fn paused_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(PausableCalls::paused_0) + } + paused_0 + }, + { + fn paused_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(PausableCalls::paused_1) + } + paused_1 + }, + { + fn pauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(PausableCalls::pauserRegistry) + } + pauserRegistry + }, + { + fn unpause( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(PausableCalls::unpause) + } + unpause + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::pause(inner) => { + ::abi_encoded_size(inner) + } + Self::pauseAll(inner) => { + ::abi_encoded_size(inner) + } + Self::paused_0(inner) => { + ::abi_encoded_size(inner) + } + Self::paused_1(inner) => { + ::abi_encoded_size(inner) + } + Self::pauserRegistry(inner) => { + ::abi_encoded_size(inner) + } + Self::setPauserRegistry(inner) => { + ::abi_encoded_size(inner) + } + Self::unpause(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::pause(inner) => { + ::abi_encode_raw(inner, out) + } + Self::pauseAll(inner) => { + ::abi_encode_raw(inner, out) + } + Self::paused_0(inner) => { + ::abi_encode_raw(inner, out) + } + Self::paused_1(inner) => { + ::abi_encode_raw(inner, out) + } + Self::pauserRegistry(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setPauserRegistry(inner) => { + ::abi_encode_raw(inner, out) + } + Self::unpause(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`Pausable`](self) events. + pub enum PausableEvents { + Paused(Paused), + PauserRegistrySet(PauserRegistrySet), + Unpaused(Unpaused), + } + #[automatically_derived] + impl PausableEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8, 2u8, + 188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8, 228u8, 152u8, + 107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8, + ], + [ + 110u8, 159u8, 205u8, 83u8, 152u8, 150u8, 252u8, 166u8, 14u8, 139u8, 15u8, 1u8, + 221u8, 88u8, 2u8, 51u8, 228u8, 138u8, 107u8, 15u8, 125u8, 240u8, 19u8, 184u8, + 155u8, 167u8, 245u8, 101u8, 134u8, 154u8, 205u8, 182u8, + ], + [ + 171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8, 188u8, + 152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8, 11u8, 182u8, + 224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for PausableEvents { + const NAME: &'static str = "PausableEvents"; + const COUNT: usize = 3usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::Paused) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::PauserRegistrySet) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::Unpaused) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for PausableEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Paused(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::PauserRegistrySet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Unpaused(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Paused(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::PauserRegistrySet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Unpaused(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Pausable`](self) contract instance. + + See the [wrapper's documentation](`PausableInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> PausableInstance { + PausableInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + PausableInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + PausableInstance::::deploy_builder(provider) + } + /**A [`Pausable`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`Pausable`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct PausableInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for PausableInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("PausableInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > PausableInstance + { + /**Creates a new wrapper around an on-chain [`Pausable`](self) contract instance. + + See the [wrapper's documentation](`PausableInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl PausableInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> PausableInstance { + PausableInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > PausableInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`pause`] function. + pub fn pause( + &self, + newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&pauseCall { newPausedStatus }) + } + ///Creates a new call builder for the [`pauseAll`] function. + pub fn pauseAll(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&pauseAllCall {}) + } + ///Creates a new call builder for the [`paused_0`] function. + pub fn paused_0( + &self, + index: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&paused_0Call { index }) + } + ///Creates a new call builder for the [`paused_1`] function. + pub fn paused_1(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&paused_1Call {}) + } + ///Creates a new call builder for the [`pauserRegistry`] function. + pub fn pauserRegistry( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&pauserRegistryCall {}) + } + ///Creates a new call builder for the [`setPauserRegistry`] function. + pub fn setPauserRegistry( + &self, + newPauserRegistry: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setPauserRegistryCall { newPauserRegistry }) + } + ///Creates a new call builder for the [`unpause`] function. + pub fn unpause( + &self, + newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&unpauseCall { newPausedStatus }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > PausableInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Paused`] event. + pub fn Paused_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`PauserRegistrySet`] event. + pub fn PauserRegistrySet_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Unpaused`] event. + pub fn Unpaused_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/pauserregistry.rs b/crates/utils/src/pauserregistry.rs new file mode 100644 index 00000000..ed21b79e --- /dev/null +++ b/crates/utils/src/pauserregistry.rs @@ -0,0 +1,1356 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface PauserRegistry { + event PauserStatusChanged(address pauser, bool canPause); + event UnpauserChanged(address previousUnpauser, address newUnpauser); + + constructor(address[] _pausers, address _unpauser); + + function isPauser(address) external view returns (bool); + function setIsPauser(address newPauser, bool canPause) external; + function setUnpauser(address newUnpauser) external; + function unpauser() external view returns (address); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_pausers", + "type": "address[]", + "internalType": "address[]" + }, + { + "name": "_unpauser", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "isPauser", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setIsPauser", + "inputs": [ + { + "name": "newPauser", + "type": "address", + "internalType": "address" + }, + { + "name": "canPause", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setUnpauser", + "inputs": [ + { + "name": "newUnpauser", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "unpauser", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "PauserStatusChanged", + "inputs": [ + { + "name": "pauser", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "canPause", + "type": "bool", + "indexed": false, + "internalType": "bool" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "UnpauserChanged", + "inputs": [ + { + "name": "previousUnpauser", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newUnpauser", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod PauserRegistry { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b5060405161077838038061077883398101604081905261002f91610263565b60005b82518110156100775761006583828151811061005057610050610339565b6020026020010151600161008860201b60201c565b8061006f8161034f565b915050610032565b506100818161015a565b5050610378565b6001600160a01b0382166100f95760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b60648201526084015b60405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101c85760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b60648201526084016100f0565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461025e57600080fd5b919050565b6000806040838503121561027657600080fd5b82516001600160401b038082111561028d57600080fd5b818501915085601f8301126102a157600080fd5b81516020828211156102b5576102b5610231565b8160051b604051601f19603f830116810181811086821117156102da576102da610231565b6040529283528183019350848101820192898411156102f857600080fd5b948201945b8386101561031d5761030e86610247565b855294820194938201936102fd565b965061032c9050878201610247565b9450505050509250929050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561037157634e487b7160e01b600052601160045260246000fd5b5060010190565b6103f1806103876000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea264697066735822122027e896eed5afe944d6cc172aef72e26108db4cb82871c29ee297686046c2ee4d64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x07x8\x03\x80a\x07x\x839\x81\x01`@\x81\x90Ra\0/\x91a\x02cV[`\0[\x82Q\x81\x10\x15a\0wWa\0e\x83\x82\x81Q\x81\x10a\0PWa\0Pa\x039V[` \x02` \x01\x01Q`\x01a\0\x88` \x1B` \x1CV[\x80a\0o\x81a\x03OV[\x91PPa\x002V[Pa\0\x81\x81a\x01ZV[PPa\x03xV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\0\xF9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FPauserRegistry._setPauser: zero `D\x82\x01Rl\x18Y\x19\x1C\x99\\\xDC\xC8\x1A[\x9C\x1D]`\x9A\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x81\x81R` \x81\x81R`@\x91\x82\x90 \x80T`\xFF\x19\x16\x85\x15\x15\x90\x81\x17\x90\x91U\x82Q\x93\x84R\x90\x83\x01R\x7Fe\xD3\xA1\xFDL\x13\xF0\\\xBA\x16O\x80\xD0<\xE9\x0F\xB4\xB5\xE2\x19F\xBF\xC3\xAB}\xBDCL-\x0B\x91R\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x01\xC8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FPauserRegistry._setUnpauser: zer`D\x82\x01Rn\x1B\xC8\x18Y\x19\x1C\x99\\\xDC\xC8\x1A[\x9C\x1D]`\x8A\x1B`d\x82\x01R`\x84\x01a\0\xF0V[`\x01T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\x06\xB4\x16z%(\x88z\x1E\x97\xA3f\xEE\xFE\x85I\xBF\xBF\x1E\xA3\xE6\xAC\x81\xCB%d\xA94\xD2\x0E\x88\x92\x91\x01`@Q\x80\x91\x03\x90\xA1`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x02^W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x02vW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x02\x8DW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x02\xA1W`\0\x80\xFD[\x81Q` \x82\x82\x11\x15a\x02\xB5Wa\x02\xB5a\x021V[\x81`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x86\x82\x11\x17\x15a\x02\xDAWa\x02\xDAa\x021V[`@R\x92\x83R\x81\x83\x01\x93P\x84\x81\x01\x82\x01\x92\x89\x84\x11\x15a\x02\xF8W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15a\x03\x1DWa\x03\x0E\x86a\x02GV[\x85R\x94\x82\x01\x94\x93\x82\x01\x93a\x02\xFDV[\x96Pa\x03,\x90P\x87\x82\x01a\x02GV[\x94PPPPP\x92P\x92\x90PV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x03qWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V[a\x03\xF1\x80a\x03\x87`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0LW`\x005`\xE0\x1C\x80cF\xFB\xF6\x8E\x14a\0QW\x80c\x85hR\x06\x14a\0\x89W\x80c\xCET\x84(\x14a\0\x9EW\x80c\xEA\xB6mz\x14a\0\xB1W[`\0\x80\xFD[a\0ta\0_6`\x04a\x03\x13V[`\0` \x81\x90R\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\x9Ca\0\x976`\x04a\x035V[a\0\xDCV[\0[a\0\x9Ca\0\xAC6`\x04a\x03\x13V[a\x01\x1DV[`\x01Ta\0\xC4\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\x80V[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01\x0FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\x06\x90a\x03qV[`@Q\x80\x91\x03\x90\xFD[a\x01\x19\x82\x82a\x01SV[PPV[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01GW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\x06\x90a\x03qV[a\x01P\x81a\x02 V[PV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x01\xBFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FPauserRegistry._setPauser: zero `D\x82\x01Rl\x18Y\x19\x1C\x99\\\xDC\xC8\x1A[\x9C\x1D]`\x9A\x1B`d\x82\x01R`\x84\x01a\x01\x06V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x81\x81R` \x81\x81R`@\x91\x82\x90 \x80T`\xFF\x19\x16\x85\x15\x15\x90\x81\x17\x90\x91U\x82Q\x93\x84R\x90\x83\x01R\x7Fe\xD3\xA1\xFDL\x13\xF0\\\xBA\x16O\x80\xD0<\xE9\x0F\xB4\xB5\xE2\x19F\xBF\xC3\xAB}\xBDCL-\x0B\x91R\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x02\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FPauserRegistry._setUnpauser: zer`D\x82\x01Rn\x1B\xC8\x18Y\x19\x1C\x99\\\xDC\xC8\x1A[\x9C\x1D]`\x8A\x1B`d\x82\x01R`\x84\x01a\x01\x06V[`\x01T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\x06\xB4\x16z%(\x88z\x1E\x97\xA3f\xEE\xFE\x85I\xBF\xBF\x1E\xA3\xE6\xAC\x81\xCB%d\xA94\xD2\x0E\x88\x92\x91\x01`@Q\x80\x91\x03\x90\xA1`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x0EW`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x03%W`\0\x80\xFD[a\x03.\x82a\x02\xF7V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x03HW`\0\x80\xFD[a\x03Q\x83a\x02\xF7V[\x91P` \x83\x015\x80\x15\x15\x81\x14a\x03fW`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[` \x80\x82R`*\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Ri9\x90:\xB780\xBA\xB9\xB2\xB9`\xB1\x1B``\x82\x01R`\x80\x01\x90V\xFE\xA2dipfsX\"\x12 '\xE8\x96\xEE\xD5\xAF\xE9D\xD6\xCC\x17*\xEFr\xE2a\x08\xDBL\xB8(q\xC2\x9E\xE2\x97h`F\xC2\xEEMdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea264697066735822122027e896eed5afe944d6cc172aef72e26108db4cb82871c29ee297686046c2ee4d64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0LW`\x005`\xE0\x1C\x80cF\xFB\xF6\x8E\x14a\0QW\x80c\x85hR\x06\x14a\0\x89W\x80c\xCET\x84(\x14a\0\x9EW\x80c\xEA\xB6mz\x14a\0\xB1W[`\0\x80\xFD[a\0ta\0_6`\x04a\x03\x13V[`\0` \x81\x90R\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\x9Ca\0\x976`\x04a\x035V[a\0\xDCV[\0[a\0\x9Ca\0\xAC6`\x04a\x03\x13V[a\x01\x1DV[`\x01Ta\0\xC4\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\x80V[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01\x0FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\x06\x90a\x03qV[`@Q\x80\x91\x03\x90\xFD[a\x01\x19\x82\x82a\x01SV[PPV[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01GW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\x06\x90a\x03qV[a\x01P\x81a\x02 V[PV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x01\xBFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FPauserRegistry._setPauser: zero `D\x82\x01Rl\x18Y\x19\x1C\x99\\\xDC\xC8\x1A[\x9C\x1D]`\x9A\x1B`d\x82\x01R`\x84\x01a\x01\x06V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x81\x81R` \x81\x81R`@\x91\x82\x90 \x80T`\xFF\x19\x16\x85\x15\x15\x90\x81\x17\x90\x91U\x82Q\x93\x84R\x90\x83\x01R\x7Fe\xD3\xA1\xFDL\x13\xF0\\\xBA\x16O\x80\xD0<\xE9\x0F\xB4\xB5\xE2\x19F\xBF\xC3\xAB}\xBDCL-\x0B\x91R\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x02\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FPauserRegistry._setUnpauser: zer`D\x82\x01Rn\x1B\xC8\x18Y\x19\x1C\x99\\\xDC\xC8\x1A[\x9C\x1D]`\x8A\x1B`d\x82\x01R`\x84\x01a\x01\x06V[`\x01T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\x06\xB4\x16z%(\x88z\x1E\x97\xA3f\xEE\xFE\x85I\xBF\xBF\x1E\xA3\xE6\xAC\x81\xCB%d\xA94\xD2\x0E\x88\x92\x91\x01`@Q\x80\x91\x03\x90\xA1`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x0EW`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x03%W`\0\x80\xFD[a\x03.\x82a\x02\xF7V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x03HW`\0\x80\xFD[a\x03Q\x83a\x02\xF7V[\x91P` \x83\x015\x80\x15\x15\x81\x14a\x03fW`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[` \x80\x82R`*\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Ri9\x90:\xB780\xBA\xB9\xB2\xB9`\xB1\x1B``\x82\x01R`\x80\x01\x90V\xFE\xA2dipfsX\"\x12 '\xE8\x96\xEE\xD5\xAF\xE9D\xD6\xCC\x17*\xEFr\xE2a\x08\xDBL\xB8(q\xC2\x9E\xE2\x97h`F\xC2\xEEMdsolcC\0\x08\x0C\x003", + ); + /**Event with signature `PauserStatusChanged(address,bool)` and selector `0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152`. + ```solidity + event PauserStatusChanged(address pauser, bool canPause); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct PauserStatusChanged { + #[allow(missing_docs)] + pub pauser: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub canPause: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for PauserStatusChanged { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "PauserStatusChanged(address,bool)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 101u8, 211u8, 161u8, 253u8, 76u8, 19u8, 240u8, 92u8, 186u8, 22u8, 79u8, 128u8, + 208u8, 60u8, 233u8, 15u8, 180u8, 181u8, 226u8, 25u8, 70u8, 191u8, 195u8, 171u8, + 125u8, 189u8, 67u8, 76u8, 45u8, 11u8, 145u8, 82u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + pauser: data.0, + canPause: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.pauser, + ), + ::tokenize( + &self.canPause, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for PauserStatusChanged { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&PauserStatusChanged> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &PauserStatusChanged) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `UnpauserChanged(address,address)` and selector `0x06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892`. + ```solidity + event UnpauserChanged(address previousUnpauser, address newUnpauser); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct UnpauserChanged { + #[allow(missing_docs)] + pub previousUnpauser: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newUnpauser: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for UnpauserChanged { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "UnpauserChanged(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 6u8, 180u8, 22u8, 122u8, 37u8, 40u8, 136u8, 122u8, 30u8, 151u8, 163u8, 102u8, + 238u8, 254u8, 133u8, 73u8, 191u8, 191u8, 30u8, 163u8, 230u8, 172u8, 129u8, + 203u8, 37u8, 100u8, 169u8, 52u8, 210u8, 14u8, 136u8, 146u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + previousUnpauser: data.0, + newUnpauser: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.previousUnpauser, + ), + ::tokenize( + &self.newUnpauser, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for UnpauserChanged { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&UnpauserChanged> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &UnpauserChanged) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. + ```solidity + constructor(address[] _pausers, address _unpauser); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _pausers: alloy::sol_types::private::Vec, + pub _unpauser: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value._pausers, value._unpauser) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _pausers: tuple.0, + _unpauser: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._pausers), + ::tokenize( + &self._unpauser, + ), + ) + } + } + }; + /**Function with signature `isPauser(address)` and selector `0x46fbf68e`. + ```solidity + function isPauser(address) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isPauserCall { + pub _0: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`isPauser(address)`](isPauserCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isPauserReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isPauserCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isPauserCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isPauserReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isPauserReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for isPauserCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = isPauserReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "isPauser(address)"; + const SELECTOR: [u8; 4] = [70u8, 251u8, 246u8, 142u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setIsPauser(address,bool)` and selector `0x85685206`. + ```solidity + function setIsPauser(address newPauser, bool canPause) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setIsPauserCall { + pub newPauser: alloy::sol_types::private::Address, + pub canPause: bool, + } + ///Container type for the return parameters of the [`setIsPauser(address,bool)`](setIsPauserCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setIsPauserReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address, bool); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setIsPauserCall) -> Self { + (value.newPauser, value.canPause) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setIsPauserCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newPauser: tuple.0, + canPause: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setIsPauserReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setIsPauserReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setIsPauserCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setIsPauserReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setIsPauser(address,bool)"; + const SELECTOR: [u8; 4] = [133u8, 104u8, 82u8, 6u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newPauser, + ), + ::tokenize( + &self.canPause, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setUnpauser(address)` and selector `0xce548428`. + ```solidity + function setUnpauser(address newUnpauser) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setUnpauserCall { + pub newUnpauser: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setUnpauser(address)`](setUnpauserCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setUnpauserReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setUnpauserCall) -> Self { + (value.newUnpauser,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setUnpauserCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newUnpauser: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setUnpauserReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setUnpauserReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setUnpauserCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setUnpauserReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setUnpauser(address)"; + const SELECTOR: [u8; 4] = [206u8, 84u8, 132u8, 40u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newUnpauser, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `unpauser()` and selector `0xeab66d7a`. + ```solidity + function unpauser() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct unpauserCall {} + ///Container type for the return parameters of the [`unpauser()`](unpauserCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct unpauserReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: unpauserCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for unpauserCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: unpauserReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for unpauserReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for unpauserCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = unpauserReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "unpauser()"; + const SELECTOR: [u8; 4] = [234u8, 182u8, 109u8, 122u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`PauserRegistry`](self) function calls. + pub enum PauserRegistryCalls { + isPauser(isPauserCall), + setIsPauser(setIsPauserCall), + setUnpauser(setUnpauserCall), + unpauser(unpauserCall), + } + #[automatically_derived] + impl PauserRegistryCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [70u8, 251u8, 246u8, 142u8], + [133u8, 104u8, 82u8, 6u8], + [206u8, 84u8, 132u8, 40u8], + [234u8, 182u8, 109u8, 122u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for PauserRegistryCalls { + const NAME: &'static str = "PauserRegistryCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 4usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::isPauser(_) => ::SELECTOR, + Self::setIsPauser(_) => ::SELECTOR, + Self::setUnpauser(_) => ::SELECTOR, + Self::unpauser(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn isPauser( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(PauserRegistryCalls::isPauser) + } + isPauser + }, + { + fn setIsPauser( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(PauserRegistryCalls::setIsPauser) + } + setIsPauser + }, + { + fn setUnpauser( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(PauserRegistryCalls::setUnpauser) + } + setUnpauser + }, + { + fn unpauser( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(PauserRegistryCalls::unpauser) + } + unpauser + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::isPauser(inner) => { + ::abi_encoded_size(inner) + } + Self::setIsPauser(inner) => { + ::abi_encoded_size(inner) + } + Self::setUnpauser(inner) => { + ::abi_encoded_size(inner) + } + Self::unpauser(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::isPauser(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setIsPauser(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setUnpauser(inner) => { + ::abi_encode_raw(inner, out) + } + Self::unpauser(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`PauserRegistry`](self) events. + pub enum PauserRegistryEvents { + PauserStatusChanged(PauserStatusChanged), + UnpauserChanged(UnpauserChanged), + } + #[automatically_derived] + impl PauserRegistryEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 6u8, 180u8, 22u8, 122u8, 37u8, 40u8, 136u8, 122u8, 30u8, 151u8, 163u8, 102u8, + 238u8, 254u8, 133u8, 73u8, 191u8, 191u8, 30u8, 163u8, 230u8, 172u8, 129u8, 203u8, + 37u8, 100u8, 169u8, 52u8, 210u8, 14u8, 136u8, 146u8, + ], + [ + 101u8, 211u8, 161u8, 253u8, 76u8, 19u8, 240u8, 92u8, 186u8, 22u8, 79u8, 128u8, + 208u8, 60u8, 233u8, 15u8, 180u8, 181u8, 226u8, 25u8, 70u8, 191u8, 195u8, 171u8, + 125u8, 189u8, 67u8, 76u8, 45u8, 11u8, 145u8, 82u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for PauserRegistryEvents { + const NAME: &'static str = "PauserRegistryEvents"; + const COUNT: usize = 2usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::PauserStatusChanged) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::UnpauserChanged) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for PauserRegistryEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::PauserStatusChanged(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::UnpauserChanged(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::PauserStatusChanged(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::UnpauserChanged(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`PauserRegistry`](self) contract instance. + + See the [wrapper's documentation](`PauserRegistryInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> PauserRegistryInstance { + PauserRegistryInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _pausers: alloy::sol_types::private::Vec, + _unpauser: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future>> + { + PauserRegistryInstance::::deploy(provider, _pausers, _unpauser) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _pausers: alloy::sol_types::private::Vec, + _unpauser: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + PauserRegistryInstance::::deploy_builder(provider, _pausers, _unpauser) + } + /**A [`PauserRegistry`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`PauserRegistry`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct PauserRegistryInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for PauserRegistryInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("PauserRegistryInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > PauserRegistryInstance + { + /**Creates a new wrapper around an on-chain [`PauserRegistry`](self) contract instance. + + See the [wrapper's documentation](`PauserRegistryInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _pausers: alloy::sol_types::private::Vec, + _unpauser: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, _pausers, _unpauser); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _pausers: alloy::sol_types::private::Vec, + _unpauser: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode(&constructorCall { + _pausers, + _unpauser, + })[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl PauserRegistryInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> PauserRegistryInstance { + PauserRegistryInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > PauserRegistryInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`isPauser`] function. + pub fn isPauser( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&isPauserCall { _0 }) + } + ///Creates a new call builder for the [`setIsPauser`] function. + pub fn setIsPauser( + &self, + newPauser: alloy::sol_types::private::Address, + canPause: bool, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setIsPauserCall { + newPauser, + canPause, + }) + } + ///Creates a new call builder for the [`setUnpauser`] function. + pub fn setUnpauser( + &self, + newUnpauser: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setUnpauserCall { newUnpauser }) + } + ///Creates a new call builder for the [`unpauser`] function. + pub fn unpauser(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&unpauserCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > PauserRegistryInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`PauserStatusChanged`] event. + pub fn PauserStatusChanged_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`UnpauserChanged`] event. + pub fn UnpauserChanged_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/proxy.rs b/crates/utils/src/proxy.rs new file mode 100644 index 00000000..6c24dd5f --- /dev/null +++ b/crates/utils/src/proxy.rs @@ -0,0 +1,229 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface Proxy { + fallback() external payable; + + receive() external payable; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "fallback", + "stateMutability": "payable" + }, + { + "type": "receive", + "stateMutability": "payable" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod Proxy { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Proxy`](self) contract instance. + + See the [wrapper's documentation](`ProxyInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ProxyInstance { + ProxyInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> { + ProxyInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + ProxyInstance::::deploy_builder(provider) + } + /**A [`Proxy`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`Proxy`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ProxyInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ProxyInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ProxyInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ProxyInstance + { + /**Creates a new wrapper around an on-chain [`Proxy`](self) contract instance. + + See the [wrapper's documentation](`ProxyInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ProxyInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ProxyInstance { + ProxyInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ProxyInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ProxyInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/proxyadmin.rs b/crates/utils/src/proxyadmin.rs new file mode 100644 index 00000000..edb4ed78 --- /dev/null +++ b/crates/utils/src/proxyadmin.rs @@ -0,0 +1,1775 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ProxyAdmin { + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + + function changeProxyAdmin(address proxy, address newAdmin) external; + function getProxyAdmin(address proxy) external view returns (address); + function getProxyImplementation(address proxy) external view returns (address); + function owner() external view returns (address); + function renounceOwnership() external; + function transferOwnership(address newOwner) external; + function upgrade(address proxy, address implementation) external; + function upgradeAndCall(address proxy, address implementation, bytes memory data) external payable; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "changeProxyAdmin", + "inputs": [ + { + "name": "proxy", + "type": "address", + "internalType": "contract TransparentUpgradeableProxy" + }, + { + "name": "newAdmin", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getProxyAdmin", + "inputs": [ + { + "name": "proxy", + "type": "address", + "internalType": "contract TransparentUpgradeableProxy" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getProxyImplementation", + "inputs": [ + { + "name": "proxy", + "type": "address", + "internalType": "contract TransparentUpgradeableProxy" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "proxy", + "type": "address", + "internalType": "contract TransparentUpgradeableProxy" + }, + { + "name": "implementation", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "upgradeAndCall", + "inputs": [ + { + "name": "proxy", + "type": "address", + "internalType": "contract TransparentUpgradeableProxy" + }, + { + "name": "implementation", + "type": "address", + "internalType": "address" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ProxyAdmin { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea2646970667358221220d2defa3201be949322800c3098b574d26d9d6a6cbac4560c147ae4c675a9d47a64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\0\x1A3a\0\x1FV[a\0oV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[a\x06\x9A\x80a\0~`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\0{W`\x005`\xE0\x1C\x80c\x96#`\x9D\x11a\0NW\x80c\x96#`\x9D\x14a\x01\x11W\x80c\x99\xA8\x8E\xC4\x14a\x01$W\x80c\xF2\xFD\xE3\x8B\x14a\x01DW\x80c\xF3\xB7\xDE\xAD\x14a\x01dW`\0\x80\xFD[\x80c N\x1Cz\x14a\0\x80W\x80cqP\x18\xA6\x14a\0\xBCW\x80c~\xFF'^\x14a\0\xD3W\x80c\x8D\xA5\xCB[\x14a\0\xF3W[`\0\x80\xFD[4\x80\x15a\0\x8CW`\0\x80\xFD[Pa\0\xA0a\0\x9B6`\x04a\x04\x99V[a\x01\x84V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xC8W`\0\x80\xFD[Pa\0\xD1a\x02\x15V[\0[4\x80\x15a\0\xDFW`\0\x80\xFD[Pa\0\xD1a\0\xEE6`\x04a\x04\xBDV[a\x02)V[4\x80\x15a\0\xFFW`\0\x80\xFD[P`\0T`\x01`\x01`\xA0\x1B\x03\x16a\0\xA0V[a\0\xD1a\x01\x1F6`\x04a\x05\x0CV[a\x02\x91V[4\x80\x15a\x010W`\0\x80\xFD[Pa\0\xD1a\x01?6`\x04a\x04\xBDV[a\x03\0V[4\x80\x15a\x01PW`\0\x80\xFD[Pa\0\xD1a\x01_6`\x04a\x04\x99V[a\x036V[4\x80\x15a\x01pW`\0\x80\xFD[Pa\0\xA0a\x01\x7F6`\x04a\x04\x99V[a\x03\xB4V[`\0\x80`\0\x83`\x01`\x01`\xA0\x1B\x03\x16`@Qa\x01\xAA\x90c\\`\xDA\x1B`\xE0\x1B\x81R`\x04\x01\x90V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x01\xE5W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\xEAV[``\x91P[P\x91P\x91P\x81a\x01\xF9W`\0\x80\xFD[\x80\x80` \x01\x90Q\x81\x01\x90a\x02\r\x91\x90a\x05\xE2V[\x94\x93PPPPV[a\x02\x1Da\x03\xDAV[a\x02'`\0a\x044V[V[a\x021a\x03\xDAV[`@Qc\x08\xF2\x83\x97`\xE4\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R\x83\x16\x90c\x8F(9p\x90`$\x01[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02uW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\x89W=`\0\x80>=`\0\xFD[PPPPPPV[a\x02\x99a\x03\xDAV[`@Qc'\x8FyC`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90cO\x1E\xF2\x86\x904\x90a\x02\xC9\x90\x86\x90\x86\x90`\x04\x01a\x05\xFFV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x02\xE2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\xF6W=`\0\x80>=`\0\xFD[PPPPPPPPV[a\x03\x08a\x03\xDAV[`@Qc\x1B,\xE7\xF3`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R\x83\x16\x90c6Y\xCF\xE6\x90`$\x01a\x02[V[a\x03>a\x03\xDAV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x03\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x03\xB1\x81a\x044V[PV[`\0\x80`\0\x83`\x01`\x01`\xA0\x1B\x03\x16`@Qa\x01\xAA\x90c\x03\xE1F\x91`\xE6\x1B\x81R`\x04\x01\x90V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02'W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x03\x9FV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xB1W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x04\xABW`\0\x80\xFD[\x815a\x04\xB6\x81a\x04\x84V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x04\xD0W`\0\x80\xFD[\x825a\x04\xDB\x81a\x04\x84V[\x91P` \x83\x015a\x04\xEB\x81a\x04\x84V[\x80\x91PP\x92P\x92\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15a\x05!W`\0\x80\xFD[\x835a\x05,\x81a\x04\x84V[\x92P` \x84\x015a\x05<\x81a\x04\x84V[\x91P`@\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x05YW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x05mW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x05\x7FWa\x05\x7Fa\x04\xF6V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x05\xA7Wa\x05\xA7a\x04\xF6V[\x81`@R\x82\x81R\x89` \x84\x87\x01\x01\x11\x15a\x05\xC0W`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0` \x84\x83\x01\x01R\x80\x95PPPPPP\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x05\xF4W`\0\x80\xFD[\x81Qa\x04\xB6\x81a\x04\x84V[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`\0` `@\x81\x84\x01R\x83Q\x80`@\x85\x01R`\0[\x81\x81\x10\x15a\x06;W\x85\x81\x01\x83\x01Q\x85\x82\x01``\x01R\x82\x01a\x06\x1FV[\x81\x81\x11\x15a\x06MW`\0``\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01``\x01\x94\x93PPPPV\xFE\xA2dipfsX\"\x12 \xD2\xDE\xFA2\x01\xBE\x94\x93\"\x80\x0C0\x98\xB5t\xD2m\x9Djl\xBA\xC4V\x0C\x14z\xE4\xC6u\xA9\xD4zdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea2646970667358221220d2defa3201be949322800c3098b574d26d9d6a6cbac4560c147ae4c675a9d47a64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x046\x10a\0{W`\x005`\xE0\x1C\x80c\x96#`\x9D\x11a\0NW\x80c\x96#`\x9D\x14a\x01\x11W\x80c\x99\xA8\x8E\xC4\x14a\x01$W\x80c\xF2\xFD\xE3\x8B\x14a\x01DW\x80c\xF3\xB7\xDE\xAD\x14a\x01dW`\0\x80\xFD[\x80c N\x1Cz\x14a\0\x80W\x80cqP\x18\xA6\x14a\0\xBCW\x80c~\xFF'^\x14a\0\xD3W\x80c\x8D\xA5\xCB[\x14a\0\xF3W[`\0\x80\xFD[4\x80\x15a\0\x8CW`\0\x80\xFD[Pa\0\xA0a\0\x9B6`\x04a\x04\x99V[a\x01\x84V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xC8W`\0\x80\xFD[Pa\0\xD1a\x02\x15V[\0[4\x80\x15a\0\xDFW`\0\x80\xFD[Pa\0\xD1a\0\xEE6`\x04a\x04\xBDV[a\x02)V[4\x80\x15a\0\xFFW`\0\x80\xFD[P`\0T`\x01`\x01`\xA0\x1B\x03\x16a\0\xA0V[a\0\xD1a\x01\x1F6`\x04a\x05\x0CV[a\x02\x91V[4\x80\x15a\x010W`\0\x80\xFD[Pa\0\xD1a\x01?6`\x04a\x04\xBDV[a\x03\0V[4\x80\x15a\x01PW`\0\x80\xFD[Pa\0\xD1a\x01_6`\x04a\x04\x99V[a\x036V[4\x80\x15a\x01pW`\0\x80\xFD[Pa\0\xA0a\x01\x7F6`\x04a\x04\x99V[a\x03\xB4V[`\0\x80`\0\x83`\x01`\x01`\xA0\x1B\x03\x16`@Qa\x01\xAA\x90c\\`\xDA\x1B`\xE0\x1B\x81R`\x04\x01\x90V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x01\xE5W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\xEAV[``\x91P[P\x91P\x91P\x81a\x01\xF9W`\0\x80\xFD[\x80\x80` \x01\x90Q\x81\x01\x90a\x02\r\x91\x90a\x05\xE2V[\x94\x93PPPPV[a\x02\x1Da\x03\xDAV[a\x02'`\0a\x044V[V[a\x021a\x03\xDAV[`@Qc\x08\xF2\x83\x97`\xE4\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R\x83\x16\x90c\x8F(9p\x90`$\x01[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02uW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\x89W=`\0\x80>=`\0\xFD[PPPPPPV[a\x02\x99a\x03\xDAV[`@Qc'\x8FyC`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90cO\x1E\xF2\x86\x904\x90a\x02\xC9\x90\x86\x90\x86\x90`\x04\x01a\x05\xFFV[`\0`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x02\xE2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\xF6W=`\0\x80>=`\0\xFD[PPPPPPPPV[a\x03\x08a\x03\xDAV[`@Qc\x1B,\xE7\xF3`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R\x83\x16\x90c6Y\xCF\xE6\x90`$\x01a\x02[V[a\x03>a\x03\xDAV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x03\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x03\xB1\x81a\x044V[PV[`\0\x80`\0\x83`\x01`\x01`\xA0\x1B\x03\x16`@Qa\x01\xAA\x90c\x03\xE1F\x91`\xE6\x1B\x81R`\x04\x01\x90V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02'W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x03\x9FV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xB1W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x04\xABW`\0\x80\xFD[\x815a\x04\xB6\x81a\x04\x84V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x04\xD0W`\0\x80\xFD[\x825a\x04\xDB\x81a\x04\x84V[\x91P` \x83\x015a\x04\xEB\x81a\x04\x84V[\x80\x91PP\x92P\x92\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15a\x05!W`\0\x80\xFD[\x835a\x05,\x81a\x04\x84V[\x92P` \x84\x015a\x05<\x81a\x04\x84V[\x91P`@\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x05YW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x05mW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x05\x7FWa\x05\x7Fa\x04\xF6V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x05\xA7Wa\x05\xA7a\x04\xF6V[\x81`@R\x82\x81R\x89` \x84\x87\x01\x01\x11\x15a\x05\xC0W`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0` \x84\x83\x01\x01R\x80\x95PPPPPP\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x05\xF4W`\0\x80\xFD[\x81Qa\x04\xB6\x81a\x04\x84V[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`\0` `@\x81\x84\x01R\x83Q\x80`@\x85\x01R`\0[\x81\x81\x10\x15a\x06;W\x85\x81\x01\x83\x01Q\x85\x82\x01``\x01R\x82\x01a\x06\x1FV[\x81\x81\x11\x15a\x06MW`\0``\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01``\x01\x94\x93PPPPV\xFE\xA2dipfsX\"\x12 \xD2\xDE\xFA2\x01\xBE\x94\x93\"\x80\x0C0\x98\xB5t\xD2m\x9Djl\xBA\xC4V\x0C\x14z\xE4\xC6u\xA9\xD4zdsolcC\0\x08\x0C\x003", + ); + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. + ```solidity + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub previousOwner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, + 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, + 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + previousOwner: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.previousOwner.clone(), + self.newOwner.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.previousOwner, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `changeProxyAdmin(address,address)` and selector `0x7eff275e`. + ```solidity + function changeProxyAdmin(address proxy, address newAdmin) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct changeProxyAdminCall { + pub proxy: alloy::sol_types::private::Address, + pub newAdmin: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`changeProxyAdmin(address,address)`](changeProxyAdminCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct changeProxyAdminReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: changeProxyAdminCall) -> Self { + (value.proxy, value.newAdmin) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for changeProxyAdminCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + proxy: tuple.0, + newAdmin: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: changeProxyAdminReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for changeProxyAdminReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for changeProxyAdminCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = changeProxyAdminReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "changeProxyAdmin(address,address)"; + const SELECTOR: [u8; 4] = [126u8, 255u8, 39u8, 94u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.proxy, + ), + ::tokenize( + &self.newAdmin, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getProxyAdmin(address)` and selector `0xf3b7dead`. + ```solidity + function getProxyAdmin(address proxy) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getProxyAdminCall { + pub proxy: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getProxyAdmin(address)`](getProxyAdminCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getProxyAdminReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getProxyAdminCall) -> Self { + (value.proxy,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getProxyAdminCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { proxy: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getProxyAdminReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getProxyAdminReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getProxyAdminCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getProxyAdminReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getProxyAdmin(address)"; + const SELECTOR: [u8; 4] = [243u8, 183u8, 222u8, 173u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.proxy, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getProxyImplementation(address)` and selector `0x204e1c7a`. + ```solidity + function getProxyImplementation(address proxy) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getProxyImplementationCall { + pub proxy: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getProxyImplementation(address)`](getProxyImplementationCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getProxyImplementationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getProxyImplementationCall) -> Self { + (value.proxy,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getProxyImplementationCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { proxy: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getProxyImplementationReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getProxyImplementationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getProxyImplementationCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getProxyImplementationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getProxyImplementation(address)"; + const SELECTOR: [u8; 4] = [32u8, 78u8, 28u8, 122u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.proxy, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. + ```solidity + function owner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `renounceOwnership()` and selector `0x715018a6`. + ```solidity + function renounceOwnership() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct renounceOwnershipCall {} + ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct renounceOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for renounceOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for renounceOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for renounceOwnershipCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = renounceOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "renounceOwnership()"; + const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. + ```solidity + function transferOwnership(address newOwner) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `upgrade(address,address)` and selector `0x99a88ec4`. + ```solidity + function upgrade(address proxy, address implementation) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct upgradeCall { + pub proxy: alloy::sol_types::private::Address, + pub implementation: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`upgrade(address,address)`](upgradeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct upgradeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: upgradeCall) -> Self { + (value.proxy, value.implementation) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for upgradeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + proxy: tuple.0, + implementation: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: upgradeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for upgradeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for upgradeCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = upgradeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "upgrade(address,address)"; + const SELECTOR: [u8; 4] = [153u8, 168u8, 142u8, 196u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.proxy, + ), + ::tokenize( + &self.implementation, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `upgradeAndCall(address,address,bytes)` and selector `0x9623609d`. + ```solidity + function upgradeAndCall(address proxy, address implementation, bytes memory data) external payable; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct upgradeAndCallCall { + pub proxy: alloy::sol_types::private::Address, + pub implementation: alloy::sol_types::private::Address, + pub data: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`upgradeAndCall(address,address,bytes)`](upgradeAndCallCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct upgradeAndCallReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: upgradeAndCallCall) -> Self { + (value.proxy, value.implementation, value.data) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for upgradeAndCallCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + proxy: tuple.0, + implementation: tuple.1, + data: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: upgradeAndCallReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for upgradeAndCallReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for upgradeAndCallCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = upgradeAndCallReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "upgradeAndCall(address,address,bytes)"; + const SELECTOR: [u8; 4] = [150u8, 35u8, 96u8, 157u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.proxy, + ), + ::tokenize( + &self.implementation, + ), + ::tokenize( + &self.data, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`ProxyAdmin`](self) function calls. + pub enum ProxyAdminCalls { + changeProxyAdmin(changeProxyAdminCall), + getProxyAdmin(getProxyAdminCall), + getProxyImplementation(getProxyImplementationCall), + owner(ownerCall), + renounceOwnership(renounceOwnershipCall), + transferOwnership(transferOwnershipCall), + upgrade(upgradeCall), + upgradeAndCall(upgradeAndCallCall), + } + #[automatically_derived] + impl ProxyAdminCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [32u8, 78u8, 28u8, 122u8], + [113u8, 80u8, 24u8, 166u8], + [126u8, 255u8, 39u8, 94u8], + [141u8, 165u8, 203u8, 91u8], + [150u8, 35u8, 96u8, 157u8], + [153u8, 168u8, 142u8, 196u8], + [242u8, 253u8, 227u8, 139u8], + [243u8, 183u8, 222u8, 173u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ProxyAdminCalls { + const NAME: &'static str = "ProxyAdminCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 8usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::changeProxyAdmin(_) => { + ::SELECTOR + } + Self::getProxyAdmin(_) => ::SELECTOR, + Self::getProxyImplementation(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::renounceOwnership(_) => { + ::SELECTOR + } + Self::transferOwnership(_) => { + ::SELECTOR + } + Self::upgrade(_) => ::SELECTOR, + Self::upgradeAndCall(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn(&[u8], bool) -> alloy_sol_types::Result] = &[ + { + fn getProxyImplementation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProxyAdminCalls::getProxyImplementation) + } + getProxyImplementation + }, + { + fn renounceOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProxyAdminCalls::renounceOwnership) + } + renounceOwnership + }, + { + fn changeProxyAdmin( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProxyAdminCalls::changeProxyAdmin) + } + changeProxyAdmin + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ProxyAdminCalls::owner) + } + owner + }, + { + fn upgradeAndCall( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProxyAdminCalls::upgradeAndCall) + } + upgradeAndCall + }, + { + fn upgrade( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ProxyAdminCalls::upgrade) + } + upgrade + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProxyAdminCalls::transferOwnership) + } + transferOwnership + }, + { + fn getProxyAdmin( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ProxyAdminCalls::getProxyAdmin) + } + getProxyAdmin + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::changeProxyAdmin(inner) => { + ::abi_encoded_size(inner) + } + Self::getProxyAdmin(inner) => { + ::abi_encoded_size(inner) + } + Self::getProxyImplementation(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::renounceOwnership(inner) => { + ::abi_encoded_size(inner) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size(inner) + } + Self::upgrade(inner) => { + ::abi_encoded_size(inner) + } + Self::upgradeAndCall(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::changeProxyAdmin(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getProxyAdmin(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getProxyImplementation(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::renounceOwnership(inner) => { + ::abi_encode_raw(inner, out) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw(inner, out) + } + Self::upgrade(inner) => { + ::abi_encode_raw(inner, out) + } + Self::upgradeAndCall(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`ProxyAdmin`](self) events. + pub enum ProxyAdminEvents { + OwnershipTransferred(OwnershipTransferred), + } + #[automatically_derived] + impl ProxyAdminEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[[ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, 208u8, + 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, 175u8, 227u8, 180u8, + 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ]]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for ProxyAdminEvents { + const NAME: &'static str = "ProxyAdminEvents"; + const COUNT: usize = 1usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OwnershipTransferred) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ProxyAdminEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ProxyAdmin`](self) contract instance. + + See the [wrapper's documentation](`ProxyAdminInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ProxyAdminInstance { + ProxyAdminInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + ProxyAdminInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + ProxyAdminInstance::::deploy_builder(provider) + } + /**A [`ProxyAdmin`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ProxyAdmin`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ProxyAdminInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ProxyAdminInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ProxyAdminInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ProxyAdminInstance + { + /**Creates a new wrapper around an on-chain [`ProxyAdmin`](self) contract instance. + + See the [wrapper's documentation](`ProxyAdminInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ProxyAdminInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ProxyAdminInstance { + ProxyAdminInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ProxyAdminInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`changeProxyAdmin`] function. + pub fn changeProxyAdmin( + &self, + proxy: alloy::sol_types::private::Address, + newAdmin: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&changeProxyAdminCall { proxy, newAdmin }) + } + ///Creates a new call builder for the [`getProxyAdmin`] function. + pub fn getProxyAdmin( + &self, + proxy: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getProxyAdminCall { proxy }) + } + ///Creates a new call builder for the [`getProxyImplementation`] function. + pub fn getProxyImplementation( + &self, + proxy: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getProxyImplementationCall { proxy }) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`renounceOwnership`] function. + pub fn renounceOwnership( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&renounceOwnershipCall {}) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + ///Creates a new call builder for the [`upgrade`] function. + pub fn upgrade( + &self, + proxy: alloy::sol_types::private::Address, + implementation: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&upgradeCall { + proxy, + implementation, + }) + } + ///Creates a new call builder for the [`upgradeAndCall`] function. + pub fn upgradeAndCall( + &self, + proxy: alloy::sol_types::private::Address, + implementation: alloy::sol_types::private::Address, + data: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&upgradeAndCallCall { + proxy, + implementation, + data, + }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ProxyAdminInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/registeroperators.rs b/crates/utils/src/registeroperators.rs new file mode 100644 index 00000000..2a3f9bba --- /dev/null +++ b/crates/utils/src/registeroperators.rs @@ -0,0 +1,695 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface RegisterOperators { + function IS_SCRIPT() external view returns (bool); + function run() external; + function setUp() external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_SCRIPT", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "run", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setUp", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod RegisterOperators { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052600c805462ff00ff19166201000117905534801561002157600080fd5b50611a00806100316000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630a9254e414610046578063c040622614610050578063f8ccbf4714610058575b600080fd5b61004e61007f565b005b61004e61016e565b600c5461006b9062010000900460ff1681565b604051901515815260200160405180910390f35b600a600e55617a69461480610095575046610539145b156100ca576040518060600160405280603b815260200161196c603b913980516100c791600d916020909101906113f8565b50565b60405163f877cb1960e01b81526020600482015260086024820152674d4e454d4f4e494360c01b6044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f877cb1990606401600060405180830381865afa158015610132573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261015a9190810190611547565b80516100c791600d916020909101906113f8565b600f80546001600160a01b031916735fbdb2315678afecb367f032d93f642f64180aa3179055600061019e610922565b905060006101aa610b9f565b90506000600e5467ffffffffffffffff8111156101c9576101c9611491565b6040519080825280602002602001820160405280156101f2578160200160208202803683370190505b5090506000600e5467ffffffffffffffff81111561021257610212611491565b60405190808252806020026020018201604052801561023b578160200160208202803683370190505b5090506000600e5467ffffffffffffffff81111561025b5761025b611491565b604051908082528060200260200182016040528015610284578160200160208202803683370190505b50905060005b600e5481101561040057600061032a600d80546102a690611590565b80601f01602080910402602001604051908101604052809291908181526020018280546102d290611590565b801561031f5780601f106102f45761010080835404028352916020019161031f565b820191906000526020600020905b81548152906001019060200180831161030257829003601f168201915b505050505083610c26565b50905080858381518110610340576103406115cb565b60200260200101906001600160a01b031690816001600160a01b031681525050674563918244f4000084838151811061037b5761037b6115cb565b6020026020010181815250506103d08260001b6040516020016103a091815260200190565b6040516020818303038152906040528051906020012060001c670de0b6b3a7640000678ac7230489e80000610d27565b8383815181106103e2576103e26115cb565b602090810291909101015250806103f8816115f7565b91505061028a565b5060008051602061194c83398151915260001c6001600160a01b0316637fb5297f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561044d57600080fd5b505af1158015610461573d6000803e3d6000fd5b5050505061047160008484610d6b565b835161047e908483610d6b565b60008051602061194c83398151915260001c6001600160a01b03166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156104ca57600080fd5b505af11580156104de573d6000803e3d6000fd5b5050505060005b600e5481101561091a5760405163348051d760e11b8152600481018290526000906064908290737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015610547573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261056f9190810190611547565b60405160200161057f9190611612565b60405160208183030381529060405290506000610626600d80546105a290611590565b80601f01602080910402602001604051908101604052809291908181526020018280546105ce90611590565b801561061b5780601f106105f05761010080835404028352916020019161061b565b820191906000526020600020905b8154815290600101906020018083116105fe57829003601f168201915b505050505086610c26565b60405163ce817d4760e01b815260048101829052909250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063ce817d4790602401600060405180830381600087803b15801561067757600080fd5b505af115801561068b573d6000803e3d6000fd5b5050505046617a6914806106a0575046610539145b1561073d57600f5460405163566add5160e11b81526080600482015260166084820152753a32b9ba2fb932b3b4b9ba32b92fb7b832b930ba37b960511b60a4820152602481018790524360448201524260648201526001600160a01b039091169063acd5baa29060c401600060405180830381600087803b15801561072457600080fd5b505af1158015610738573d6000803e3d6000fd5b505050505b89606001516001600160a01b0316630f589e5960405180606001604052808b898151811061076d5761076d6115cb565b60200260200101516001600160a01b03168152602001876001600160a01b031681526020018663ffffffff16815250846040518363ffffffff1660e01b81526004016107ba929190611683565b600060405180830381600087803b1580156107d457600080fd5b505af11580156107e8573d6000803e3d6000fd5b5050505089604001516001600160a01b031663e7a050aa8a602001518b6000015189898151811061081b5761081b6115cb565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af115801561087a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089e91906116c3565b5060008051602061194c83398151915260001c6001600160a01b03166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108eb57600080fd5b505af11580156108ff573d6000803e3d6000fd5b50505050505050508080610912906115f7565b9150506104e5565b505050505050565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915260006109a36040518060400160405280601c81526020017f656967656e6c617965725f6465706c6f796d656e745f6f757470757400000000815250610ec7565b905060006109e6826040518060400160405280601f81526020017f2e6164647265737365732e656967656e4c6179657250726f787941646d696e008152506110ca565b90506000610a29836040518060400160405280601e81526020017f2e6164647265737365732e656967656e4c6179657250617573657252656700008152506110ca565b90506000610a6c846040518060400160405280601a81526020017f2e6164647265737365732e73747261746567794d616e616765720000000000008152506110ca565b90506000610aa785604051806040016040528060158152602001741730b2323932b9b9b2b9973232b632b3b0ba34b7b760591b8152506110ca565b90506000610aea866040518060400160405280601781526020017f2e6164647265737365732e6176734469726563746f72790000000000000000008152506110ca565b90506000610b2287604051806040016040528060128152602001711730b2323932b9b9b2b99739b630b9b432b960711b8152506110ca565b90506000610b4888604051806060016040528060258152602001611927602591396110ca565b60408051610100810182526001600160a01b03998a1681529789166020890152958816958701959095525091851660608501529084166080840152831660a0830152600060c083015290911660e082015292915050565b60408051808201909152600080825260208201526000610bd66040518060600160405280602481526020016119a760249139610ec7565b90506000610c06826040518060400160405280600a8152602001692e61646472657373657360b01b815250611147565b9050600081806020019051810190610c1e91906116f1565b949350505050565b604051636229498b60e01b81526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90636229498b90610c649087908790600401611750565b602060405180830381865afa158015610c81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca591906116c3565b604051630884001960e21b815260048101829052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906322100064906024016020604051808303816000875af1158015610cfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1e9190611778565b91509250929050565b6000610d348484846111c8565b9050610d646040518060400160405280600c81526020016b109bdd5b99081c995cdd5b1d60a21b8152508261138a565b9392505050565b60005b8251811015610ec1576001600160a01b038416610df657828181518110610d9757610d976115cb565b60200260200101516001600160a01b03166108fc838381518110610dbd57610dbd6115cb565b60200260200101519081150290604051600060405180830381858888f19350505050158015610df0573d6000803e3d6000fd5b50610eaf565b836001600160a01b031663a9059cbb848381518110610e1757610e176115cb565b6020026020010151848481518110610e3157610e316115cb565b60200260200101516040518363ffffffff1660e01b8152600401610e6a9291906001600160a01b03929092168252602082015260400190565b6020604051808303816000875af1158015610e89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ead9190611795565b505b80610eb9816115f7565b915050610d6e565b50505050565b6060600060008051602061194c83398151915260001c6001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015610f1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f429190810190611547565b604051602001610f5291906117b7565b60408051808303601f190181529082905263348051d760e11b82524660048301529150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015610fb4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fdc9190810190611547565b604051602001610fec91906117ea565b6040516020818303038152906040529050600084604051602001611010919061180f565b60408051601f19818403018152908290529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906360f9bb119061105190869086908690602001611838565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161107c919061187b565b600060405180830381865afa158015611099573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110c19190810190611547565b95945050505050565b604051631e19e65760e01b8152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90631e19e65790611106908690869060040161188e565b602060405180830381865afa158015611123573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d649190611778565b6040516385940ef160e01b8152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d906385940ef190611183908690869060040161188e565b600060405180830381865afa1580156111a0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d649190810190611547565b6000818311156112445760405162461bcd60e51b815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e0000606482015260840160405180910390fd5b8284101580156112545750818411155b15611260575082610d64565b600061126c84846118b3565b6112779060016118ca565b90506003851115801561128957508481115b156112a05761129885856118ca565b915050610d64565b6112ad60036000196118b3565b85101580156112c657506112c3856000196118b3565b81115b156112e1576112d7856000196118b3565b61129890846118b3565b828511156113345760006112f584876118b3565b9050600061130383836118e2565b90508061131557849350505050610d64565b600161132182886118ca565b61132b91906118b3565b93505050611382565b8385101561138257600061134886866118b3565b9050600061135683836118e2565b90508061136857859350505050610d64565b61137281866118b3565b61137d9060016118ca565b935050505b509392505050565b6113cf82826040516024016113a0929190611904565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b1790526113d3565b5050565b6100c78180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b82805461140490611590565b90600052602060002090601f016020900481019282611426576000855561146c565b82601f1061143f57805160ff191683800117855561146c565b8280016001018555821561146c579182015b8281111561146c578251825591602001919060010190611451565b5061147892915061147c565b5090565b5b80821115611478576000815560010161147d565b634e487b7160e01b600052604160045260246000fd5b60005b838110156114c25781810151838201526020016114aa565b83811115610ec15750506000910152565b600067ffffffffffffffff808411156114ee576114ee611491565b604051601f8501601f19908116603f0116810190828211818310171561151657611516611491565b8160405280935085815286868601111561152f57600080fd5b61153d8660208301876114a7565b5050509392505050565b60006020828403121561155957600080fd5b815167ffffffffffffffff81111561157057600080fd5b8201601f8101841361158157600080fd5b610c1e848251602084016114d3565b600181811c908216806115a457607f821691505b602082108114156115c557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561160b5761160b6115e1565b5060010190565b7f68747470733a2f2f636f6f6c73747566662e636f6d2f6f70657261746f722f0081526000825161164a81601f8501602087016114a7565b91909101601f0192915050565b6000815180845261166f8160208601602086016114a7565b601f01601f19169290920160200192915050565b600060018060a01b038085511683528060208601511660208401525063ffffffff604085015116604083015260806060830152610c1e6080830184611657565b6000602082840312156116d557600080fd5b5051919050565b6001600160a01b03811681146100c757600080fd5b60006040828403121561170357600080fd5b6040516040810181811067ffffffffffffffff8211171561172657611726611491565b6040528251611734816116dc565b81526020830151611744816116dc565b60208201529392505050565b6040815260006117636040830185611657565b905063ffffffff831660208301529392505050565b60006020828403121561178a57600080fd5b8151610d64816116dc565b6000602082840312156117a757600080fd5b81518015158114610d6457600080fd5b600082516117c98184602087016114a7565b6e2f7363726970742f6f75747075742f60881b920191825250600f01919050565b600082516117fc8184602087016114a7565b602f60f81b920191825250600101919050565b600082516118218184602087016114a7565b64173539b7b760d91b920191825250600501919050565b6000845161184a8184602089016114a7565b84519083019061185e8183602089016114a7565b84519101906118718183602088016114a7565b0195945050505050565b602081526000610d646020830184611657565b6040815260006118a16040830185611657565b82810360208401526110c18185611657565b6000828210156118c5576118c56115e1565b500390565b600082198211156118dd576118dd6115e1565b500190565b6000826118ff57634e487b7160e01b600052601260045260246000fd5b500690565b6040815260006119176040830185611657565b9050826020830152939250505056fe2e6164647265737365732e626173655374726174656779496d706c656d656e746174696f6e885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d746573742074657374207465737420746573742074657374207465737420746573742074657374207465737420746573742074657374206a756e6b746f6b656e5f616e645f73747261746567795f6465706c6f796d656e745f6f7574707574a2646970667358221220b4d5d15724df6be814465601cc0f8d174e4fb157f35f114111a400421e44f91864736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0!W`\0\x80\xFD[Pa\x1A\0\x80a\x001`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\n\x92T\xE4\x14a\0FW\x80c\xC0@b&\x14a\0PW\x80c\xF8\xCC\xBFG\x14a\0XW[`\0\x80\xFD[a\0Na\0\x7FV[\0[a\0Na\x01nV[`\x0CTa\0k\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\n`\x0EUaziF\x14\x80a\0\x95WPFa\x059\x14[\x15a\0\xCAW`@Q\x80``\x01`@R\x80`;\x81R` \x01a\x19l`;\x919\x80Qa\0\xC7\x91`\r\x91` \x90\x91\x01\x90a\x13\xF8V[PV[`@Qc\xF8w\xCB\x19`\xE0\x1B\x81R` `\x04\x82\x01R`\x08`$\x82\x01RgMNEMONIC`\xC0\x1B`D\x82\x01Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xF8w\xCB\x19\x90`d\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x012W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x01Z\x91\x90\x81\x01\x90a\x15GV[\x80Qa\0\xC7\x91`\r\x91` \x90\x91\x01\x90a\x13\xF8V[`\x0F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16s_\xBD\xB21Vx\xAF\xEC\xB3g\xF02\xD9?d/d\x18\n\xA3\x17\x90U`\0a\x01\x9Ea\t\"V[\x90P`\0a\x01\xAAa\x0B\x9FV[\x90P`\0`\x0ETg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\xC9Wa\x01\xC9a\x14\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01\xF2W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0`\x0ETg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02\x12Wa\x02\x12a\x14\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02;W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0`\x0ETg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02[Wa\x02[a\x14\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02\x84W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[`\x0ET\x81\x10\x15a\x04\0W`\0a\x03*`\r\x80Ta\x02\xA6\x90a\x15\x90V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02\xD2\x90a\x15\x90V[\x80\x15a\x03\x1FW\x80`\x1F\x10a\x02\xF4Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\x1FV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03\x02W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x83a\x0C&V[P\x90P\x80\x85\x83\x81Q\x81\x10a\x03@Wa\x03@a\x15\xCBV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPPgEc\x91\x82D\xF4\0\0\x84\x83\x81Q\x81\x10a\x03{Wa\x03{a\x15\xCBV[` \x02` \x01\x01\x81\x81RPPa\x03\xD0\x82`\0\x1B`@Q` \x01a\x03\xA0\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1Cg\r\xE0\xB6\xB3\xA7d\0\0g\x8A\xC7#\x04\x89\xE8\0\0a\r'V[\x83\x83\x81Q\x81\x10a\x03\xE2Wa\x03\xE2a\x15\xCBV[` \x90\x81\x02\x91\x90\x91\x01\x01RP\x80a\x03\xF8\x81a\x15\xF7V[\x91PPa\x02\x8AV[P`\0\x80Q` a\x19L\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04MW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04aW=`\0\x80>=`\0\xFD[PPPPa\x04q`\0\x84\x84a\rkV[\x83Qa\x04~\x90\x84\x83a\rkV[`\0\x80Q` a\x19L\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04\xCAW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xDEW=`\0\x80>=`\0\xFD[PPPP`\0[`\x0ET\x81\x10\x15a\t\x1AW`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x90`d\x90\x82\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05GW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x05o\x91\x90\x81\x01\x90a\x15GV[`@Q` \x01a\x05\x7F\x91\x90a\x16\x12V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0a\x06&`\r\x80Ta\x05\xA2\x90a\x15\x90V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\xCE\x90a\x15\x90V[\x80\x15a\x06\x1BW\x80`\x1F\x10a\x05\xF0Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06\x1BV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05\xFEW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x86a\x0C&V[`@Qc\xCE\x81}G`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R\x90\x92Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x91Pc\xCE\x81}G\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06wW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06\x8BW=`\0\x80>=`\0\xFD[PPPPFazi\x14\x80a\x06\xA0WPFa\x059\x14[\x15a\x07=W`\x0FT`@QcVj\xDDQ`\xE1\x1B\x81R`\x80`\x04\x82\x01R`\x16`\x84\x82\x01Ru:2\xB9\xBA/\xB92\xB3\xB4\xB9\xBA2\xB9/\xB7\xB82\xB90\xBA7\xB9`Q\x1B`\xA4\x82\x01R`$\x81\x01\x87\x90RC`D\x82\x01RB`d\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xAC\xD5\xBA\xA2\x90`\xC4\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07$W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x078W=`\0\x80>=`\0\xFD[PPPP[\x89``\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\x0FX\x9EY`@Q\x80``\x01`@R\x80\x8B\x89\x81Q\x81\x10a\x07mWa\x07ma\x15\xCBV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x87`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x86c\xFF\xFF\xFF\xFF\x16\x81RP\x84`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x07\xBA\x92\x91\x90a\x16\x83V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07\xD4W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x07\xE8W=`\0\x80>=`\0\xFD[PPPP\x89`@\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xE7\xA0P\xAA\x8A` \x01Q\x8B`\0\x01Q\x89\x89\x81Q\x81\x10a\x08\x1BWa\x08\x1Ba\x15\xCBV[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`\x04\x82\x01R\x92\x90\x91\x16`$\x83\x01R`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x08zW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\x9E\x91\x90a\x16\xC3V[P`\0\x80Q` a\x19L\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\xEBW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\xFFW=`\0\x80>=`\0\xFD[PPPPPPPP\x80\x80a\t\x12\x90a\x15\xF7V[\x91PPa\x04\xE5V[PPPPPPV[`@\x80Qa\x01\0\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x82\x90R`\x80\x81\x01\x82\x90R`\xA0\x81\x01\x82\x90R`\xC0\x81\x01\x82\x90R`\xE0\x81\x01\x91\x90\x91R`\0a\t\xA3`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7Feigenlayer_deployment_output\0\0\0\0\x81RPa\x0E\xC7V[\x90P`\0a\t\xE6\x82`@Q\x80`@\x01`@R\x80`\x1F\x81R` \x01\x7F.addresses.eigenLayerProxyAdmin\0\x81RPa\x10\xCAV[\x90P`\0a\n)\x83`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7F.addresses.eigenLayerPauserReg\0\0\x81RPa\x10\xCAV[\x90P`\0a\nl\x84`@Q\x80`@\x01`@R\x80`\x1A\x81R` \x01\x7F.addresses.strategyManager\0\0\0\0\0\0\x81RPa\x10\xCAV[\x90P`\0a\n\xA7\x85`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01t\x170\xB2292\xB9\xB9\xB2\xB9\x9722\xB62\xB3\xB0\xBA4\xB7\xB7`Y\x1B\x81RPa\x10\xCAV[\x90P`\0a\n\xEA\x86`@Q\x80`@\x01`@R\x80`\x17\x81R` \x01\x7F.addresses.avsDirectory\0\0\0\0\0\0\0\0\0\x81RPa\x10\xCAV[\x90P`\0a\x0B\"\x87`@Q\x80`@\x01`@R\x80`\x12\x81R` \x01q\x170\xB2292\xB9\xB9\xB2\xB9\x979\xB60\xB9\xB42\xB9`q\x1B\x81RPa\x10\xCAV[\x90P`\0a\x0BH\x88`@Q\x80``\x01`@R\x80`%\x81R` \x01a\x19'`%\x919a\x10\xCAV[`@\x80Qa\x01\0\x81\x01\x82R`\x01`\x01`\xA0\x1B\x03\x99\x8A\x16\x81R\x97\x89\x16` \x89\x01R\x95\x88\x16\x95\x87\x01\x95\x90\x95RP\x91\x85\x16``\x85\x01R\x90\x84\x16`\x80\x84\x01R\x83\x16`\xA0\x83\x01R`\0`\xC0\x83\x01R\x90\x91\x16`\xE0\x82\x01R\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0a\x0B\xD6`@Q\x80``\x01`@R\x80`$\x81R` \x01a\x19\xA7`$\x919a\x0E\xC7V[\x90P`\0a\x0C\x06\x82`@Q\x80`@\x01`@R\x80`\n\x81R` \x01i.addresses`\xB0\x1B\x81RPa\x11GV[\x90P`\0\x81\x80` \x01\x90Q\x81\x01\x90a\x0C\x1E\x91\x90a\x16\xF1V[\x94\x93PPPPV[`@Qcb)I\x8B`\xE0\x1B\x81R`\0\x90\x81\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90cb)I\x8B\x90a\x0Cd\x90\x87\x90\x87\x90`\x04\x01a\x17PV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\x81W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xA5\x91\x90a\x16\xC3V[`@Qc\x08\x84\0\x19`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\"\x10\0d\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0C\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x1E\x91\x90a\x17xV[\x91P\x92P\x92\x90PV[`\0a\r4\x84\x84\x84a\x11\xC8V[\x90Pa\rd`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01k\x10\x9B\xDD[\x99\x08\x1C\x99\\\xDD[\x1D`\xA2\x1B\x81RP\x82a\x13\x8AV[\x93\x92PPPV[`\0[\x82Q\x81\x10\x15a\x0E\xC1W`\x01`\x01`\xA0\x1B\x03\x84\x16a\r\xF6W\x82\x81\x81Q\x81\x10a\r\x97Wa\r\x97a\x15\xCBV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16a\x08\xFC\x83\x83\x81Q\x81\x10a\r\xBDWa\r\xBDa\x15\xCBV[` \x02` \x01\x01Q\x90\x81\x15\x02\x90`@Q`\0`@Q\x80\x83\x03\x81\x85\x88\x88\xF1\x93PPPP\x15\x80\x15a\r\xF0W=`\0\x80>=`\0\xFD[Pa\x0E\xAFV[\x83`\x01`\x01`\xA0\x1B\x03\x16c\xA9\x05\x9C\xBB\x84\x83\x81Q\x81\x10a\x0E\x17Wa\x0E\x17a\x15\xCBV[` \x02` \x01\x01Q\x84\x84\x81Q\x81\x10a\x0E1Wa\x0E1a\x15\xCBV[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0Ej\x92\x91\x90`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x82R` \x82\x01R`@\x01\x90V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0E\x89W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xAD\x91\x90a\x17\x95V[P[\x80a\x0E\xB9\x81a\x15\xF7V[\x91PPa\rnV[PPPPV[```\0`\0\x80Q` a\x19L\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16c\xD90\xA0\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\x1AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0FB\x91\x90\x81\x01\x90a\x15GV[`@Q` \x01a\x0FR\x91\x90a\x17\xB7V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x90\x82\x90Rc4\x80Q\xD7`\xE1\x1B\x82RF`\x04\x83\x01R\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\xB4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0F\xDC\x91\x90\x81\x01\x90a\x15GV[`@Q` \x01a\x0F\xEC\x91\x90a\x17\xEAV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x84`@Q` \x01a\x10\x10\x91\x90a\x18\x0FV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c`\xF9\xBB\x11\x90a\x10Q\x90\x86\x90\x86\x90\x86\x90` \x01a\x188V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10|\x91\x90a\x18{V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\x99W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x10\xC1\x91\x90\x81\x01\x90a\x15GV[\x95\x94PPPPPV[`@Qc\x1E\x19\xE6W`\xE0\x1B\x81R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x1E\x19\xE6W\x90a\x11\x06\x90\x86\x90\x86\x90`\x04\x01a\x18\x8EV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11#W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\rd\x91\x90a\x17xV[`@Qc\x85\x94\x0E\xF1`\xE0\x1B\x81R``\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x85\x94\x0E\xF1\x90a\x11\x83\x90\x86\x90\x86\x90`\x04\x01a\x18\x8EV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11\xA0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\rd\x91\x90\x81\x01\x90a\x15GV[`\0\x81\x83\x11\x15a\x12DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FStdUtils bound(uint256,uint256,u`D\x82\x01R\x7Fint256): Max is less than min.\0\0`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[\x82\x84\x10\x15\x80\x15a\x12TWP\x81\x84\x11\x15[\x15a\x12`WP\x82a\rdV[`\0a\x12l\x84\x84a\x18\xB3V[a\x12w\x90`\x01a\x18\xCAV[\x90P`\x03\x85\x11\x15\x80\x15a\x12\x89WP\x84\x81\x11[\x15a\x12\xA0Wa\x12\x98\x85\x85a\x18\xCAV[\x91PPa\rdV[a\x12\xAD`\x03`\0\x19a\x18\xB3V[\x85\x10\x15\x80\x15a\x12\xC6WPa\x12\xC3\x85`\0\x19a\x18\xB3V[\x81\x11[\x15a\x12\xE1Wa\x12\xD7\x85`\0\x19a\x18\xB3V[a\x12\x98\x90\x84a\x18\xB3V[\x82\x85\x11\x15a\x134W`\0a\x12\xF5\x84\x87a\x18\xB3V[\x90P`\0a\x13\x03\x83\x83a\x18\xE2V[\x90P\x80a\x13\x15W\x84\x93PPPPa\rdV[`\x01a\x13!\x82\x88a\x18\xCAV[a\x13+\x91\x90a\x18\xB3V[\x93PPPa\x13\x82V[\x83\x85\x10\x15a\x13\x82W`\0a\x13H\x86\x86a\x18\xB3V[\x90P`\0a\x13V\x83\x83a\x18\xE2V[\x90P\x80a\x13hW\x85\x93PPPPa\rdV[a\x13r\x81\x86a\x18\xB3V[a\x13}\x90`\x01a\x18\xCAV[\x93PPP[P\x93\x92PPPV[a\x13\xCF\x82\x82`@Q`$\x01a\x13\xA0\x92\x91\x90a\x19\x04V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c-\x83\x9C\xB3`\xE2\x1B\x17\x90Ra\x13\xD3V[PPV[a\0\xC7\x81\x80Qjconsole.log` \x83\x01`\0\x80\x84\x83\x85Z\xFAPPPPPV[\x82\x80Ta\x14\x04\x90a\x15\x90V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82a\x14&W`\0\x85Ua\x14lV[\x82`\x1F\x10a\x14?W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ua\x14lV[\x82\x80\x01`\x01\x01\x85U\x82\x15a\x14lW\x91\x82\x01[\x82\x81\x11\x15a\x14lW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90a\x14QV[Pa\x14x\x92\x91Pa\x14|V[P\x90V[[\x80\x82\x11\x15a\x14xW`\0\x81U`\x01\x01a\x14}V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x14\xC2W\x81\x81\x01Q\x83\x82\x01R` \x01a\x14\xAAV[\x83\x81\x11\x15a\x0E\xC1WPP`\0\x91\x01RV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x14\xEEWa\x14\xEEa\x14\x91V[`@Q`\x1F\x85\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x15\x16Wa\x15\x16a\x14\x91V[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x15/W`\0\x80\xFD[a\x15=\x86` \x83\x01\x87a\x14\xA7V[PPP\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x15YW`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15pW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x15\x81W`\0\x80\xFD[a\x0C\x1E\x84\x82Q` \x84\x01a\x14\xD3V[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x15\xA4W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x15\xC5WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x16\x0BWa\x16\x0Ba\x15\xE1V[P`\x01\x01\x90V[\x7Fhttps://coolstuff.com/operator/\0\x81R`\0\x82Qa\x16J\x81`\x1F\x85\x01` \x87\x01a\x14\xA7V[\x91\x90\x91\x01`\x1F\x01\x92\x91PPV[`\0\x81Q\x80\x84Ra\x16o\x81` \x86\x01` \x86\x01a\x14\xA7V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0`\x01\x80`\xA0\x1B\x03\x80\x85Q\x16\x83R\x80` \x86\x01Q\x16` \x84\x01RPc\xFF\xFF\xFF\xFF`@\x85\x01Q\x16`@\x83\x01R`\x80``\x83\x01Ra\x0C\x1E`\x80\x83\x01\x84a\x16WV[`\0` \x82\x84\x03\x12\x15a\x16\xD5W`\0\x80\xFD[PQ\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xC7W`\0\x80\xFD[`\0`@\x82\x84\x03\x12\x15a\x17\x03W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x17&Wa\x17&a\x14\x91V[`@R\x82Qa\x174\x81a\x16\xDCV[\x81R` \x83\x01Qa\x17D\x81a\x16\xDCV[` \x82\x01R\x93\x92PPPV[`@\x81R`\0a\x17c`@\x83\x01\x85a\x16WV[\x90Pc\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x17\x8AW`\0\x80\xFD[\x81Qa\rd\x81a\x16\xDCV[`\0` \x82\x84\x03\x12\x15a\x17\xA7W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\rdW`\0\x80\xFD[`\0\x82Qa\x17\xC9\x81\x84` \x87\x01a\x14\xA7V[n/script/output/`\x88\x1B\x92\x01\x91\x82RP`\x0F\x01\x91\x90PV[`\0\x82Qa\x17\xFC\x81\x84` \x87\x01a\x14\xA7V[`/`\xF8\x1B\x92\x01\x91\x82RP`\x01\x01\x91\x90PV[`\0\x82Qa\x18!\x81\x84` \x87\x01a\x14\xA7V[d\x1759\xB7\xB7`\xD9\x1B\x92\x01\x91\x82RP`\x05\x01\x91\x90PV[`\0\x84Qa\x18J\x81\x84` \x89\x01a\x14\xA7V[\x84Q\x90\x83\x01\x90a\x18^\x81\x83` \x89\x01a\x14\xA7V[\x84Q\x91\x01\x90a\x18q\x81\x83` \x88\x01a\x14\xA7V[\x01\x95\x94PPPPPV[` \x81R`\0a\rd` \x83\x01\x84a\x16WV[`@\x81R`\0a\x18\xA1`@\x83\x01\x85a\x16WV[\x82\x81\x03` \x84\x01Ra\x10\xC1\x81\x85a\x16WV[`\0\x82\x82\x10\x15a\x18\xC5Wa\x18\xC5a\x15\xE1V[P\x03\x90V[`\0\x82\x19\x82\x11\x15a\x18\xDDWa\x18\xDDa\x15\xE1V[P\x01\x90V[`\0\x82a\x18\xFFWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`@\x81R`\0a\x19\x17`@\x83\x01\x85a\x16WV[\x90P\x82` \x83\x01R\x93\x92PPPV\xFE.addresses.baseStrategyImplementation\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-test test test test test test test test test test test junktoken_and_strategy_deployment_output\xA2dipfsX\"\x12 \xB4\xD5\xD1W$\xDFk\xE8\x14FV\x01\xCC\x0F\x8D\x17NO\xB1W\xF3_\x11A\x11\xA4\0B\x1ED\xF9\x18dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100415760003560e01c80630a9254e414610046578063c040622614610050578063f8ccbf4714610058575b600080fd5b61004e61007f565b005b61004e61016e565b600c5461006b9062010000900460ff1681565b604051901515815260200160405180910390f35b600a600e55617a69461480610095575046610539145b156100ca576040518060600160405280603b815260200161196c603b913980516100c791600d916020909101906113f8565b50565b60405163f877cb1960e01b81526020600482015260086024820152674d4e454d4f4e494360c01b6044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f877cb1990606401600060405180830381865afa158015610132573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261015a9190810190611547565b80516100c791600d916020909101906113f8565b600f80546001600160a01b031916735fbdb2315678afecb367f032d93f642f64180aa3179055600061019e610922565b905060006101aa610b9f565b90506000600e5467ffffffffffffffff8111156101c9576101c9611491565b6040519080825280602002602001820160405280156101f2578160200160208202803683370190505b5090506000600e5467ffffffffffffffff81111561021257610212611491565b60405190808252806020026020018201604052801561023b578160200160208202803683370190505b5090506000600e5467ffffffffffffffff81111561025b5761025b611491565b604051908082528060200260200182016040528015610284578160200160208202803683370190505b50905060005b600e5481101561040057600061032a600d80546102a690611590565b80601f01602080910402602001604051908101604052809291908181526020018280546102d290611590565b801561031f5780601f106102f45761010080835404028352916020019161031f565b820191906000526020600020905b81548152906001019060200180831161030257829003601f168201915b505050505083610c26565b50905080858381518110610340576103406115cb565b60200260200101906001600160a01b031690816001600160a01b031681525050674563918244f4000084838151811061037b5761037b6115cb565b6020026020010181815250506103d08260001b6040516020016103a091815260200190565b6040516020818303038152906040528051906020012060001c670de0b6b3a7640000678ac7230489e80000610d27565b8383815181106103e2576103e26115cb565b602090810291909101015250806103f8816115f7565b91505061028a565b5060008051602061194c83398151915260001c6001600160a01b0316637fb5297f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561044d57600080fd5b505af1158015610461573d6000803e3d6000fd5b5050505061047160008484610d6b565b835161047e908483610d6b565b60008051602061194c83398151915260001c6001600160a01b03166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156104ca57600080fd5b505af11580156104de573d6000803e3d6000fd5b5050505060005b600e5481101561091a5760405163348051d760e11b8152600481018290526000906064908290737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015610547573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261056f9190810190611547565b60405160200161057f9190611612565b60405160208183030381529060405290506000610626600d80546105a290611590565b80601f01602080910402602001604051908101604052809291908181526020018280546105ce90611590565b801561061b5780601f106105f05761010080835404028352916020019161061b565b820191906000526020600020905b8154815290600101906020018083116105fe57829003601f168201915b505050505086610c26565b60405163ce817d4760e01b815260048101829052909250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063ce817d4790602401600060405180830381600087803b15801561067757600080fd5b505af115801561068b573d6000803e3d6000fd5b5050505046617a6914806106a0575046610539145b1561073d57600f5460405163566add5160e11b81526080600482015260166084820152753a32b9ba2fb932b3b4b9ba32b92fb7b832b930ba37b960511b60a4820152602481018790524360448201524260648201526001600160a01b039091169063acd5baa29060c401600060405180830381600087803b15801561072457600080fd5b505af1158015610738573d6000803e3d6000fd5b505050505b89606001516001600160a01b0316630f589e5960405180606001604052808b898151811061076d5761076d6115cb565b60200260200101516001600160a01b03168152602001876001600160a01b031681526020018663ffffffff16815250846040518363ffffffff1660e01b81526004016107ba929190611683565b600060405180830381600087803b1580156107d457600080fd5b505af11580156107e8573d6000803e3d6000fd5b5050505089604001516001600160a01b031663e7a050aa8a602001518b6000015189898151811061081b5761081b6115cb565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af115801561087a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089e91906116c3565b5060008051602061194c83398151915260001c6001600160a01b03166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108eb57600080fd5b505af11580156108ff573d6000803e3d6000fd5b50505050505050508080610912906115f7565b9150506104e5565b505050505050565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915260006109a36040518060400160405280601c81526020017f656967656e6c617965725f6465706c6f796d656e745f6f757470757400000000815250610ec7565b905060006109e6826040518060400160405280601f81526020017f2e6164647265737365732e656967656e4c6179657250726f787941646d696e008152506110ca565b90506000610a29836040518060400160405280601e81526020017f2e6164647265737365732e656967656e4c6179657250617573657252656700008152506110ca565b90506000610a6c846040518060400160405280601a81526020017f2e6164647265737365732e73747261746567794d616e616765720000000000008152506110ca565b90506000610aa785604051806040016040528060158152602001741730b2323932b9b9b2b9973232b632b3b0ba34b7b760591b8152506110ca565b90506000610aea866040518060400160405280601781526020017f2e6164647265737365732e6176734469726563746f72790000000000000000008152506110ca565b90506000610b2287604051806040016040528060128152602001711730b2323932b9b9b2b99739b630b9b432b960711b8152506110ca565b90506000610b4888604051806060016040528060258152602001611927602591396110ca565b60408051610100810182526001600160a01b03998a1681529789166020890152958816958701959095525091851660608501529084166080840152831660a0830152600060c083015290911660e082015292915050565b60408051808201909152600080825260208201526000610bd66040518060600160405280602481526020016119a760249139610ec7565b90506000610c06826040518060400160405280600a8152602001692e61646472657373657360b01b815250611147565b9050600081806020019051810190610c1e91906116f1565b949350505050565b604051636229498b60e01b81526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90636229498b90610c649087908790600401611750565b602060405180830381865afa158015610c81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca591906116c3565b604051630884001960e21b815260048101829052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906322100064906024016020604051808303816000875af1158015610cfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1e9190611778565b91509250929050565b6000610d348484846111c8565b9050610d646040518060400160405280600c81526020016b109bdd5b99081c995cdd5b1d60a21b8152508261138a565b9392505050565b60005b8251811015610ec1576001600160a01b038416610df657828181518110610d9757610d976115cb565b60200260200101516001600160a01b03166108fc838381518110610dbd57610dbd6115cb565b60200260200101519081150290604051600060405180830381858888f19350505050158015610df0573d6000803e3d6000fd5b50610eaf565b836001600160a01b031663a9059cbb848381518110610e1757610e176115cb565b6020026020010151848481518110610e3157610e316115cb565b60200260200101516040518363ffffffff1660e01b8152600401610e6a9291906001600160a01b03929092168252602082015260400190565b6020604051808303816000875af1158015610e89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ead9190611795565b505b80610eb9816115f7565b915050610d6e565b50505050565b6060600060008051602061194c83398151915260001c6001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015610f1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f429190810190611547565b604051602001610f5291906117b7565b60408051808303601f190181529082905263348051d760e11b82524660048301529150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015610fb4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fdc9190810190611547565b604051602001610fec91906117ea565b6040516020818303038152906040529050600084604051602001611010919061180f565b60408051601f19818403018152908290529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906360f9bb119061105190869086908690602001611838565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161107c919061187b565b600060405180830381865afa158015611099573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110c19190810190611547565b95945050505050565b604051631e19e65760e01b8152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90631e19e65790611106908690869060040161188e565b602060405180830381865afa158015611123573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d649190611778565b6040516385940ef160e01b8152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d906385940ef190611183908690869060040161188e565b600060405180830381865afa1580156111a0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d649190810190611547565b6000818311156112445760405162461bcd60e51b815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e0000606482015260840160405180910390fd5b8284101580156112545750818411155b15611260575082610d64565b600061126c84846118b3565b6112779060016118ca565b90506003851115801561128957508481115b156112a05761129885856118ca565b915050610d64565b6112ad60036000196118b3565b85101580156112c657506112c3856000196118b3565b81115b156112e1576112d7856000196118b3565b61129890846118b3565b828511156113345760006112f584876118b3565b9050600061130383836118e2565b90508061131557849350505050610d64565b600161132182886118ca565b61132b91906118b3565b93505050611382565b8385101561138257600061134886866118b3565b9050600061135683836118e2565b90508061136857859350505050610d64565b61137281866118b3565b61137d9060016118ca565b935050505b509392505050565b6113cf82826040516024016113a0929190611904565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b1790526113d3565b5050565b6100c78180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b82805461140490611590565b90600052602060002090601f016020900481019282611426576000855561146c565b82601f1061143f57805160ff191683800117855561146c565b8280016001018555821561146c579182015b8281111561146c578251825591602001919060010190611451565b5061147892915061147c565b5090565b5b80821115611478576000815560010161147d565b634e487b7160e01b600052604160045260246000fd5b60005b838110156114c25781810151838201526020016114aa565b83811115610ec15750506000910152565b600067ffffffffffffffff808411156114ee576114ee611491565b604051601f8501601f19908116603f0116810190828211818310171561151657611516611491565b8160405280935085815286868601111561152f57600080fd5b61153d8660208301876114a7565b5050509392505050565b60006020828403121561155957600080fd5b815167ffffffffffffffff81111561157057600080fd5b8201601f8101841361158157600080fd5b610c1e848251602084016114d3565b600181811c908216806115a457607f821691505b602082108114156115c557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561160b5761160b6115e1565b5060010190565b7f68747470733a2f2f636f6f6c73747566662e636f6d2f6f70657261746f722f0081526000825161164a81601f8501602087016114a7565b91909101601f0192915050565b6000815180845261166f8160208601602086016114a7565b601f01601f19169290920160200192915050565b600060018060a01b038085511683528060208601511660208401525063ffffffff604085015116604083015260806060830152610c1e6080830184611657565b6000602082840312156116d557600080fd5b5051919050565b6001600160a01b03811681146100c757600080fd5b60006040828403121561170357600080fd5b6040516040810181811067ffffffffffffffff8211171561172657611726611491565b6040528251611734816116dc565b81526020830151611744816116dc565b60208201529392505050565b6040815260006117636040830185611657565b905063ffffffff831660208301529392505050565b60006020828403121561178a57600080fd5b8151610d64816116dc565b6000602082840312156117a757600080fd5b81518015158114610d6457600080fd5b600082516117c98184602087016114a7565b6e2f7363726970742f6f75747075742f60881b920191825250600f01919050565b600082516117fc8184602087016114a7565b602f60f81b920191825250600101919050565b600082516118218184602087016114a7565b64173539b7b760d91b920191825250600501919050565b6000845161184a8184602089016114a7565b84519083019061185e8183602089016114a7565b84519101906118718183602088016114a7565b0195945050505050565b602081526000610d646020830184611657565b6040815260006118a16040830185611657565b82810360208401526110c18185611657565b6000828210156118c5576118c56115e1565b500390565b600082198211156118dd576118dd6115e1565b500190565b6000826118ff57634e487b7160e01b600052601260045260246000fd5b500690565b6040815260006119176040830185611657565b9050826020830152939250505056fe2e6164647265737365732e626173655374726174656779496d706c656d656e746174696f6e885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d746573742074657374207465737420746573742074657374207465737420746573742074657374207465737420746573742074657374206a756e6b746f6b656e5f616e645f73747261746567795f6465706c6f796d656e745f6f7574707574a2646970667358221220b4d5d15724df6be814465601cc0f8d174e4fb157f35f114111a400421e44f91864736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\n\x92T\xE4\x14a\0FW\x80c\xC0@b&\x14a\0PW\x80c\xF8\xCC\xBFG\x14a\0XW[`\0\x80\xFD[a\0Na\0\x7FV[\0[a\0Na\x01nV[`\x0CTa\0k\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\n`\x0EUaziF\x14\x80a\0\x95WPFa\x059\x14[\x15a\0\xCAW`@Q\x80``\x01`@R\x80`;\x81R` \x01a\x19l`;\x919\x80Qa\0\xC7\x91`\r\x91` \x90\x91\x01\x90a\x13\xF8V[PV[`@Qc\xF8w\xCB\x19`\xE0\x1B\x81R` `\x04\x82\x01R`\x08`$\x82\x01RgMNEMONIC`\xC0\x1B`D\x82\x01Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xF8w\xCB\x19\x90`d\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x012W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x01Z\x91\x90\x81\x01\x90a\x15GV[\x80Qa\0\xC7\x91`\r\x91` \x90\x91\x01\x90a\x13\xF8V[`\x0F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16s_\xBD\xB21Vx\xAF\xEC\xB3g\xF02\xD9?d/d\x18\n\xA3\x17\x90U`\0a\x01\x9Ea\t\"V[\x90P`\0a\x01\xAAa\x0B\x9FV[\x90P`\0`\x0ETg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\xC9Wa\x01\xC9a\x14\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01\xF2W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0`\x0ETg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02\x12Wa\x02\x12a\x14\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02;W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0`\x0ETg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02[Wa\x02[a\x14\x91V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02\x84W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[`\x0ET\x81\x10\x15a\x04\0W`\0a\x03*`\r\x80Ta\x02\xA6\x90a\x15\x90V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02\xD2\x90a\x15\x90V[\x80\x15a\x03\x1FW\x80`\x1F\x10a\x02\xF4Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\x1FV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03\x02W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x83a\x0C&V[P\x90P\x80\x85\x83\x81Q\x81\x10a\x03@Wa\x03@a\x15\xCBV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPPgEc\x91\x82D\xF4\0\0\x84\x83\x81Q\x81\x10a\x03{Wa\x03{a\x15\xCBV[` \x02` \x01\x01\x81\x81RPPa\x03\xD0\x82`\0\x1B`@Q` \x01a\x03\xA0\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1Cg\r\xE0\xB6\xB3\xA7d\0\0g\x8A\xC7#\x04\x89\xE8\0\0a\r'V[\x83\x83\x81Q\x81\x10a\x03\xE2Wa\x03\xE2a\x15\xCBV[` \x90\x81\x02\x91\x90\x91\x01\x01RP\x80a\x03\xF8\x81a\x15\xF7V[\x91PPa\x02\x8AV[P`\0\x80Q` a\x19L\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04MW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04aW=`\0\x80>=`\0\xFD[PPPPa\x04q`\0\x84\x84a\rkV[\x83Qa\x04~\x90\x84\x83a\rkV[`\0\x80Q` a\x19L\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04\xCAW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xDEW=`\0\x80>=`\0\xFD[PPPP`\0[`\x0ET\x81\x10\x15a\t\x1AW`@Qc4\x80Q\xD7`\xE1\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x90`d\x90\x82\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05GW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x05o\x91\x90\x81\x01\x90a\x15GV[`@Q` \x01a\x05\x7F\x91\x90a\x16\x12V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0a\x06&`\r\x80Ta\x05\xA2\x90a\x15\x90V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\xCE\x90a\x15\x90V[\x80\x15a\x06\x1BW\x80`\x1F\x10a\x05\xF0Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06\x1BV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05\xFEW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x86a\x0C&V[`@Qc\xCE\x81}G`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R\x90\x92Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x91Pc\xCE\x81}G\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06wW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06\x8BW=`\0\x80>=`\0\xFD[PPPPFazi\x14\x80a\x06\xA0WPFa\x059\x14[\x15a\x07=W`\x0FT`@QcVj\xDDQ`\xE1\x1B\x81R`\x80`\x04\x82\x01R`\x16`\x84\x82\x01Ru:2\xB9\xBA/\xB92\xB3\xB4\xB9\xBA2\xB9/\xB7\xB82\xB90\xBA7\xB9`Q\x1B`\xA4\x82\x01R`$\x81\x01\x87\x90RC`D\x82\x01RB`d\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xAC\xD5\xBA\xA2\x90`\xC4\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07$W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x078W=`\0\x80>=`\0\xFD[PPPP[\x89``\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\x0FX\x9EY`@Q\x80``\x01`@R\x80\x8B\x89\x81Q\x81\x10a\x07mWa\x07ma\x15\xCBV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x87`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x86c\xFF\xFF\xFF\xFF\x16\x81RP\x84`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x07\xBA\x92\x91\x90a\x16\x83V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07\xD4W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x07\xE8W=`\0\x80>=`\0\xFD[PPPP\x89`@\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xE7\xA0P\xAA\x8A` \x01Q\x8B`\0\x01Q\x89\x89\x81Q\x81\x10a\x08\x1BWa\x08\x1Ba\x15\xCBV[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`\x04\x82\x01R\x92\x90\x91\x16`$\x83\x01R`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x08zW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\x9E\x91\x90a\x16\xC3V[P`\0\x80Q` a\x19L\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\xEBW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\xFFW=`\0\x80>=`\0\xFD[PPPPPPPP\x80\x80a\t\x12\x90a\x15\xF7V[\x91PPa\x04\xE5V[PPPPPPV[`@\x80Qa\x01\0\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x82\x90R`\x80\x81\x01\x82\x90R`\xA0\x81\x01\x82\x90R`\xC0\x81\x01\x82\x90R`\xE0\x81\x01\x91\x90\x91R`\0a\t\xA3`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7Feigenlayer_deployment_output\0\0\0\0\x81RPa\x0E\xC7V[\x90P`\0a\t\xE6\x82`@Q\x80`@\x01`@R\x80`\x1F\x81R` \x01\x7F.addresses.eigenLayerProxyAdmin\0\x81RPa\x10\xCAV[\x90P`\0a\n)\x83`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7F.addresses.eigenLayerPauserReg\0\0\x81RPa\x10\xCAV[\x90P`\0a\nl\x84`@Q\x80`@\x01`@R\x80`\x1A\x81R` \x01\x7F.addresses.strategyManager\0\0\0\0\0\0\x81RPa\x10\xCAV[\x90P`\0a\n\xA7\x85`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01t\x170\xB2292\xB9\xB9\xB2\xB9\x9722\xB62\xB3\xB0\xBA4\xB7\xB7`Y\x1B\x81RPa\x10\xCAV[\x90P`\0a\n\xEA\x86`@Q\x80`@\x01`@R\x80`\x17\x81R` \x01\x7F.addresses.avsDirectory\0\0\0\0\0\0\0\0\0\x81RPa\x10\xCAV[\x90P`\0a\x0B\"\x87`@Q\x80`@\x01`@R\x80`\x12\x81R` \x01q\x170\xB2292\xB9\xB9\xB2\xB9\x979\xB60\xB9\xB42\xB9`q\x1B\x81RPa\x10\xCAV[\x90P`\0a\x0BH\x88`@Q\x80``\x01`@R\x80`%\x81R` \x01a\x19'`%\x919a\x10\xCAV[`@\x80Qa\x01\0\x81\x01\x82R`\x01`\x01`\xA0\x1B\x03\x99\x8A\x16\x81R\x97\x89\x16` \x89\x01R\x95\x88\x16\x95\x87\x01\x95\x90\x95RP\x91\x85\x16``\x85\x01R\x90\x84\x16`\x80\x84\x01R\x83\x16`\xA0\x83\x01R`\0`\xC0\x83\x01R\x90\x91\x16`\xE0\x82\x01R\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0a\x0B\xD6`@Q\x80``\x01`@R\x80`$\x81R` \x01a\x19\xA7`$\x919a\x0E\xC7V[\x90P`\0a\x0C\x06\x82`@Q\x80`@\x01`@R\x80`\n\x81R` \x01i.addresses`\xB0\x1B\x81RPa\x11GV[\x90P`\0\x81\x80` \x01\x90Q\x81\x01\x90a\x0C\x1E\x91\x90a\x16\xF1V[\x94\x93PPPPV[`@Qcb)I\x8B`\xE0\x1B\x81R`\0\x90\x81\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90cb)I\x8B\x90a\x0Cd\x90\x87\x90\x87\x90`\x04\x01a\x17PV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\x81W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xA5\x91\x90a\x16\xC3V[`@Qc\x08\x84\0\x19`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\"\x10\0d\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0C\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x1E\x91\x90a\x17xV[\x91P\x92P\x92\x90PV[`\0a\r4\x84\x84\x84a\x11\xC8V[\x90Pa\rd`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01k\x10\x9B\xDD[\x99\x08\x1C\x99\\\xDD[\x1D`\xA2\x1B\x81RP\x82a\x13\x8AV[\x93\x92PPPV[`\0[\x82Q\x81\x10\x15a\x0E\xC1W`\x01`\x01`\xA0\x1B\x03\x84\x16a\r\xF6W\x82\x81\x81Q\x81\x10a\r\x97Wa\r\x97a\x15\xCBV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16a\x08\xFC\x83\x83\x81Q\x81\x10a\r\xBDWa\r\xBDa\x15\xCBV[` \x02` \x01\x01Q\x90\x81\x15\x02\x90`@Q`\0`@Q\x80\x83\x03\x81\x85\x88\x88\xF1\x93PPPP\x15\x80\x15a\r\xF0W=`\0\x80>=`\0\xFD[Pa\x0E\xAFV[\x83`\x01`\x01`\xA0\x1B\x03\x16c\xA9\x05\x9C\xBB\x84\x83\x81Q\x81\x10a\x0E\x17Wa\x0E\x17a\x15\xCBV[` \x02` \x01\x01Q\x84\x84\x81Q\x81\x10a\x0E1Wa\x0E1a\x15\xCBV[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0Ej\x92\x91\x90`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x82R` \x82\x01R`@\x01\x90V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0E\x89W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xAD\x91\x90a\x17\x95V[P[\x80a\x0E\xB9\x81a\x15\xF7V[\x91PPa\rnV[PPPPV[```\0`\0\x80Q` a\x19L\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16c\xD90\xA0\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\x1AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0FB\x91\x90\x81\x01\x90a\x15GV[`@Q` \x01a\x0FR\x91\x90a\x17\xB7V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x90\x82\x90Rc4\x80Q\xD7`\xE1\x1B\x82RF`\x04\x83\x01R\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\xB4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0F\xDC\x91\x90\x81\x01\x90a\x15GV[`@Q` \x01a\x0F\xEC\x91\x90a\x17\xEAV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x84`@Q` \x01a\x10\x10\x91\x90a\x18\x0FV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c`\xF9\xBB\x11\x90a\x10Q\x90\x86\x90\x86\x90\x86\x90` \x01a\x188V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10|\x91\x90a\x18{V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\x99W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x10\xC1\x91\x90\x81\x01\x90a\x15GV[\x95\x94PPPPPV[`@Qc\x1E\x19\xE6W`\xE0\x1B\x81R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x1E\x19\xE6W\x90a\x11\x06\x90\x86\x90\x86\x90`\x04\x01a\x18\x8EV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11#W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\rd\x91\x90a\x17xV[`@Qc\x85\x94\x0E\xF1`\xE0\x1B\x81R``\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x85\x94\x0E\xF1\x90a\x11\x83\x90\x86\x90\x86\x90`\x04\x01a\x18\x8EV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11\xA0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\rd\x91\x90\x81\x01\x90a\x15GV[`\0\x81\x83\x11\x15a\x12DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FStdUtils bound(uint256,uint256,u`D\x82\x01R\x7Fint256): Max is less than min.\0\0`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[\x82\x84\x10\x15\x80\x15a\x12TWP\x81\x84\x11\x15[\x15a\x12`WP\x82a\rdV[`\0a\x12l\x84\x84a\x18\xB3V[a\x12w\x90`\x01a\x18\xCAV[\x90P`\x03\x85\x11\x15\x80\x15a\x12\x89WP\x84\x81\x11[\x15a\x12\xA0Wa\x12\x98\x85\x85a\x18\xCAV[\x91PPa\rdV[a\x12\xAD`\x03`\0\x19a\x18\xB3V[\x85\x10\x15\x80\x15a\x12\xC6WPa\x12\xC3\x85`\0\x19a\x18\xB3V[\x81\x11[\x15a\x12\xE1Wa\x12\xD7\x85`\0\x19a\x18\xB3V[a\x12\x98\x90\x84a\x18\xB3V[\x82\x85\x11\x15a\x134W`\0a\x12\xF5\x84\x87a\x18\xB3V[\x90P`\0a\x13\x03\x83\x83a\x18\xE2V[\x90P\x80a\x13\x15W\x84\x93PPPPa\rdV[`\x01a\x13!\x82\x88a\x18\xCAV[a\x13+\x91\x90a\x18\xB3V[\x93PPPa\x13\x82V[\x83\x85\x10\x15a\x13\x82W`\0a\x13H\x86\x86a\x18\xB3V[\x90P`\0a\x13V\x83\x83a\x18\xE2V[\x90P\x80a\x13hW\x85\x93PPPPa\rdV[a\x13r\x81\x86a\x18\xB3V[a\x13}\x90`\x01a\x18\xCAV[\x93PPP[P\x93\x92PPPV[a\x13\xCF\x82\x82`@Q`$\x01a\x13\xA0\x92\x91\x90a\x19\x04V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c-\x83\x9C\xB3`\xE2\x1B\x17\x90Ra\x13\xD3V[PPV[a\0\xC7\x81\x80Qjconsole.log` \x83\x01`\0\x80\x84\x83\x85Z\xFAPPPPPV[\x82\x80Ta\x14\x04\x90a\x15\x90V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82a\x14&W`\0\x85Ua\x14lV[\x82`\x1F\x10a\x14?W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ua\x14lV[\x82\x80\x01`\x01\x01\x85U\x82\x15a\x14lW\x91\x82\x01[\x82\x81\x11\x15a\x14lW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90a\x14QV[Pa\x14x\x92\x91Pa\x14|V[P\x90V[[\x80\x82\x11\x15a\x14xW`\0\x81U`\x01\x01a\x14}V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x14\xC2W\x81\x81\x01Q\x83\x82\x01R` \x01a\x14\xAAV[\x83\x81\x11\x15a\x0E\xC1WPP`\0\x91\x01RV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x14\xEEWa\x14\xEEa\x14\x91V[`@Q`\x1F\x85\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x15\x16Wa\x15\x16a\x14\x91V[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x15/W`\0\x80\xFD[a\x15=\x86` \x83\x01\x87a\x14\xA7V[PPP\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x15YW`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15pW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x15\x81W`\0\x80\xFD[a\x0C\x1E\x84\x82Q` \x84\x01a\x14\xD3V[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x15\xA4W`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x15\xC5WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x16\x0BWa\x16\x0Ba\x15\xE1V[P`\x01\x01\x90V[\x7Fhttps://coolstuff.com/operator/\0\x81R`\0\x82Qa\x16J\x81`\x1F\x85\x01` \x87\x01a\x14\xA7V[\x91\x90\x91\x01`\x1F\x01\x92\x91PPV[`\0\x81Q\x80\x84Ra\x16o\x81` \x86\x01` \x86\x01a\x14\xA7V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0`\x01\x80`\xA0\x1B\x03\x80\x85Q\x16\x83R\x80` \x86\x01Q\x16` \x84\x01RPc\xFF\xFF\xFF\xFF`@\x85\x01Q\x16`@\x83\x01R`\x80``\x83\x01Ra\x0C\x1E`\x80\x83\x01\x84a\x16WV[`\0` \x82\x84\x03\x12\x15a\x16\xD5W`\0\x80\xFD[PQ\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xC7W`\0\x80\xFD[`\0`@\x82\x84\x03\x12\x15a\x17\x03W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x17&Wa\x17&a\x14\x91V[`@R\x82Qa\x174\x81a\x16\xDCV[\x81R` \x83\x01Qa\x17D\x81a\x16\xDCV[` \x82\x01R\x93\x92PPPV[`@\x81R`\0a\x17c`@\x83\x01\x85a\x16WV[\x90Pc\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x17\x8AW`\0\x80\xFD[\x81Qa\rd\x81a\x16\xDCV[`\0` \x82\x84\x03\x12\x15a\x17\xA7W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\rdW`\0\x80\xFD[`\0\x82Qa\x17\xC9\x81\x84` \x87\x01a\x14\xA7V[n/script/output/`\x88\x1B\x92\x01\x91\x82RP`\x0F\x01\x91\x90PV[`\0\x82Qa\x17\xFC\x81\x84` \x87\x01a\x14\xA7V[`/`\xF8\x1B\x92\x01\x91\x82RP`\x01\x01\x91\x90PV[`\0\x82Qa\x18!\x81\x84` \x87\x01a\x14\xA7V[d\x1759\xB7\xB7`\xD9\x1B\x92\x01\x91\x82RP`\x05\x01\x91\x90PV[`\0\x84Qa\x18J\x81\x84` \x89\x01a\x14\xA7V[\x84Q\x90\x83\x01\x90a\x18^\x81\x83` \x89\x01a\x14\xA7V[\x84Q\x91\x01\x90a\x18q\x81\x83` \x88\x01a\x14\xA7V[\x01\x95\x94PPPPPV[` \x81R`\0a\rd` \x83\x01\x84a\x16WV[`@\x81R`\0a\x18\xA1`@\x83\x01\x85a\x16WV[\x82\x81\x03` \x84\x01Ra\x10\xC1\x81\x85a\x16WV[`\0\x82\x82\x10\x15a\x18\xC5Wa\x18\xC5a\x15\xE1V[P\x03\x90V[`\0\x82\x19\x82\x11\x15a\x18\xDDWa\x18\xDDa\x15\xE1V[P\x01\x90V[`\0\x82a\x18\xFFWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`@\x81R`\0a\x19\x17`@\x83\x01\x85a\x16WV[\x90P\x82` \x83\x01R\x93\x92PPPV\xFE.addresses.baseStrategyImplementation\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-test test test test test test test test test test test junktoken_and_strategy_deployment_output\xA2dipfsX\"\x12 \xB4\xD5\xD1W$\xDFk\xE8\x14FV\x01\xCC\x0F\x8D\x17NO\xB1W\xF3_\x11A\x11\xA4\0B\x1ED\xF9\x18dsolcC\0\x08\x0C\x003", + ); + /**Function with signature `IS_SCRIPT()` and selector `0xf8ccbf47`. + ```solidity + function IS_SCRIPT() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_SCRIPTCall {} + ///Container type for the return parameters of the [`IS_SCRIPT()`](IS_SCRIPTCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_SCRIPTReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_SCRIPTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_SCRIPTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_SCRIPT()"; + const SELECTOR: [u8; 4] = [248u8, 204u8, 191u8, 71u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `run()` and selector `0xc0406226`. + ```solidity + function run() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct runCall {} + ///Container type for the return parameters of the [`run()`](runCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct runReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: runCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for runCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: runReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for runReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for runCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = runReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "run()"; + const SELECTOR: [u8; 4] = [192u8, 64u8, 98u8, 38u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setUp()` and selector `0x0a9254e4`. + ```solidity + function setUp() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setUpCall {} + ///Container type for the return parameters of the [`setUp()`](setUpCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setUpReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setUpCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setUpCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setUpReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setUpReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setUpCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setUpReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setUp()"; + const SELECTOR: [u8; 4] = [10u8, 146u8, 84u8, 228u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`RegisterOperators`](self) function calls. + pub enum RegisterOperatorsCalls { + IS_SCRIPT(IS_SCRIPTCall), + run(runCall), + setUp(setUpCall), + } + #[automatically_derived] + impl RegisterOperatorsCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [10u8, 146u8, 84u8, 228u8], + [192u8, 64u8, 98u8, 38u8], + [248u8, 204u8, 191u8, 71u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for RegisterOperatorsCalls { + const NAME: &'static str = "RegisterOperatorsCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 3usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_SCRIPT(_) => ::SELECTOR, + Self::run(_) => ::SELECTOR, + Self::setUp(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn setUp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(RegisterOperatorsCalls::setUp) + } + setUp + }, + { + fn run( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(RegisterOperatorsCalls::run) + } + run + }, + { + fn IS_SCRIPT( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(RegisterOperatorsCalls::IS_SCRIPT) + } + IS_SCRIPT + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encoded_size(inner) + } + Self::run(inner) => ::abi_encoded_size(inner), + Self::setUp(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encode_raw(inner, out) + } + Self::run(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setUp(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`RegisterOperators`](self) contract instance. + + See the [wrapper's documentation](`RegisterOperatorsInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> RegisterOperatorsInstance { + RegisterOperatorsInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + RegisterOperatorsInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + RegisterOperatorsInstance::::deploy_builder(provider) + } + /**A [`RegisterOperators`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`RegisterOperators`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct RegisterOperatorsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for RegisterOperatorsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("RegisterOperatorsInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > RegisterOperatorsInstance + { + /**Creates a new wrapper around an on-chain [`RegisterOperators`](self) contract instance. + + See the [wrapper's documentation](`RegisterOperatorsInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl RegisterOperatorsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> RegisterOperatorsInstance { + RegisterOperatorsInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > RegisterOperatorsInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`IS_SCRIPT`] function. + pub fn IS_SCRIPT(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_SCRIPTCall {}) + } + ///Creates a new call builder for the [`run`] function. + pub fn run(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&runCall {}) + } + ///Creates a new call builder for the [`setUp`] function. + pub fn setUp(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&setUpCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > RegisterOperatorsInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/registrycoordinator.rs b/crates/utils/src/registrycoordinator.rs new file mode 100644 index 00000000..b5f2af1b --- /dev/null +++ b/crates/utils/src/registrycoordinator.rs @@ -0,0 +1,13749 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library BN254 { + struct G1Point { uint256 X; uint256 Y; } + struct G2Point { uint256[2] X; uint256[2] Y; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod BN254 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct G1Point { uint256 X; uint256 Y; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct G1Point { + pub X: alloy::sol_types::private::primitives::aliases::U256, + pub Y: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: G1Point) -> Self { + (value.X, value.Y) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for G1Point { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + X: tuple.0, + Y: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for G1Point { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for G1Point { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.X, + ), + as alloy_sol_types::SolType>::tokenize( + &self.Y, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for G1Point { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for G1Point { + const NAME: &'static str = "G1Point"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 X,uint256 Y)") + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word(&self.X) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.Y) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for G1Point { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.X) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.Y) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.X, out); + as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.Y, out); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct G2Point { uint256[2] X; uint256[2] Y; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct G2Point { + pub X: [alloy::sol_types::private::primitives::aliases::U256; 2usize], + pub Y: [alloy::sol_types::private::primitives::aliases::U256; 2usize], + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedArray, 2usize>, + alloy::sol_types::sol_data::FixedArray, 2usize>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + [alloy::sol_types::private::primitives::aliases::U256; 2usize], + [alloy::sol_types::private::primitives::aliases::U256; 2usize], + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: G2Point) -> Self { + (value.X, value.Y) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for G2Point { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + X: tuple.0, + Y: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for G2Point { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for G2Point { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + , + 2usize, + > as alloy_sol_types::SolType>::tokenize(&self.X), + , + 2usize, + > as alloy_sol_types::SolType>::tokenize(&self.Y), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for G2Point { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for G2Point { + const NAME: &'static str = "G2Point"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed("G2Point(uint256[2] X,uint256[2] Y)") + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + , + 2usize, + > as alloy_sol_types::SolType>::eip712_data_word(&self.X) + .0, + , + 2usize, + > as alloy_sol_types::SolType>::eip712_data_word(&self.Y) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for G2Point { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + , + 2usize, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.X + ) + + , + 2usize, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.Y + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + , + 2usize, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.X, out + ); + , + 2usize, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.Y, out + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance. + + See the [wrapper's documentation](`BN254Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> BN254Instance { + BN254Instance::::new(address, provider) + } + /**A [`BN254`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`BN254`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct BN254Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for BN254Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("BN254Instance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BN254Instance + { + /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance. + + See the [wrapper's documentation](`BN254Instance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl BN254Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> BN254Instance { + BN254Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BN254Instance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BN254Instance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library IBLSApkRegistry { + struct PubkeyRegistrationParams { BN254.G1Point pubkeyRegistrationSignature; BN254.G1Point pubkeyG1; BN254.G2Point pubkeyG2; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IBLSApkRegistry { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct PubkeyRegistrationParams { BN254.G1Point pubkeyRegistrationSignature; BN254.G1Point pubkeyG1; BN254.G2Point pubkeyG2; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct PubkeyRegistrationParams { + pub pubkeyRegistrationSignature: ::RustType, + pub pubkeyG1: ::RustType, + pub pubkeyG2: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (BN254::G1Point, BN254::G1Point, BN254::G2Point); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: PubkeyRegistrationParams) -> Self { + ( + value.pubkeyRegistrationSignature, + value.pubkeyG1, + value.pubkeyG2, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for PubkeyRegistrationParams { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + pubkeyRegistrationSignature: tuple.0, + pubkeyG1: tuple.1, + pubkeyG2: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for PubkeyRegistrationParams { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for PubkeyRegistrationParams { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.pubkeyRegistrationSignature, + ), + ::tokenize(&self.pubkeyG1), + ::tokenize(&self.pubkeyG2), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for PubkeyRegistrationParams { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for PubkeyRegistrationParams { + const NAME: &'static str = "PubkeyRegistrationParams"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "PubkeyRegistrationParams(BN254.G1Point pubkeyRegistrationSignature,BN254.G1Point pubkeyG1,BN254.G2Point pubkeyG2)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + let mut components = alloy_sol_types::private::Vec::with_capacity(3); + components.push(::eip712_root_type()); + components + .extend(::eip712_components()); + components.push(::eip712_root_type()); + components + .extend(::eip712_components()); + components.push(::eip712_root_type()); + components + .extend(::eip712_components()); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.pubkeyRegistrationSignature, + ) + .0, + ::eip712_data_word(&self.pubkeyG1) + .0, + ::eip712_data_word(&self.pubkeyG2) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for PubkeyRegistrationParams { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.pubkeyRegistrationSignature, + ) + + ::topic_preimage_length( + &rust.pubkeyG1, + ) + + ::topic_preimage_length( + &rust.pubkeyG2, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.pubkeyRegistrationSignature, + out, + ); + ::encode_topic_preimage( + &rust.pubkeyG1, + out, + ); + ::encode_topic_preimage( + &rust.pubkeyG2, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IBLSApkRegistry`](self) contract instance. + + See the [wrapper's documentation](`IBLSApkRegistryInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IBLSApkRegistryInstance { + IBLSApkRegistryInstance::::new(address, provider) + } + /**A [`IBLSApkRegistry`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IBLSApkRegistry`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IBLSApkRegistryInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IBLSApkRegistryInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IBLSApkRegistryInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IBLSApkRegistryInstance + { + /**Creates a new wrapper around an on-chain [`IBLSApkRegistry`](self) contract instance. + + See the [wrapper's documentation](`IBLSApkRegistryInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IBLSApkRegistryInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IBLSApkRegistryInstance { + IBLSApkRegistryInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IBLSApkRegistryInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IBLSApkRegistryInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library IRegistryCoordinator { + type OperatorStatus is uint8; + struct OperatorInfo { bytes32 operatorId; OperatorStatus status; } + struct OperatorKickParam { uint8 quorumNumber; address operator; } + struct OperatorSetParam { uint32 maxOperatorCount; uint16 kickBIPsOfOperatorStake; uint16 kickBIPsOfTotalStake; } + struct QuorumBitmapUpdate { uint32 updateBlockNumber; uint32 nextUpdateBlockNumber; uint192 quorumBitmap; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IRegistryCoordinator { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OperatorStatus(u8); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for u8 { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> + { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::Uint<8>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self).0 + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size( + self, + ) + } + } + #[automatically_derived] + impl OperatorStatus { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: u8) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> u8 { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OperatorStatus { + type RustType = u8; + type Token<'a> = + as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OperatorStatus { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic( + rust, + ) + } + } + }; + /**```solidity + struct OperatorInfo { bytes32 operatorId; OperatorStatus status; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OperatorInfo { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub status: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>, OperatorStatus); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OperatorInfo) -> Self { + (value.operatorId, value.status) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OperatorInfo { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + status: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OperatorInfo { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OperatorInfo { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ::tokenize(&self.status), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OperatorInfo { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OperatorInfo { + const NAME: &'static str = "OperatorInfo"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OperatorInfo(bytes32 operatorId,uint8 status)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word(&self.operatorId) + .0, + ::eip712_data_word( + &self.status, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OperatorInfo { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.operatorId, + ) + + ::topic_preimage_length( + &rust.status, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.operatorId, + out, + ); + ::encode_topic_preimage( + &rust.status, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct OperatorKickParam { uint8 quorumNumber; address operator; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OperatorKickParam { + pub quorumNumber: u8, + pub operator: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8, alloy::sol_types::private::Address); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OperatorKickParam) -> Self { + (value.quorumNumber, value.operator) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OperatorKickParam { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + operator: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OperatorKickParam { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OperatorKickParam { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OperatorKickParam { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OperatorKickParam { + const NAME: &'static str = "OperatorKickParam"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OperatorKickParam(uint8 quorumNumber,address operator)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word(&self.quorumNumber) + .0, + ::eip712_data_word( + &self.operator, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OperatorKickParam { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.quorumNumber, + ) + + ::topic_preimage_length( + &rust.operator, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.quorumNumber, + out, + ); + ::encode_topic_preimage( + &rust.operator, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct OperatorSetParam { uint32 maxOperatorCount; uint16 kickBIPsOfOperatorStake; uint16 kickBIPsOfTotalStake; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OperatorSetParam { + pub maxOperatorCount: u32, + pub kickBIPsOfOperatorStake: u16, + pub kickBIPsOfTotalStake: u16, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<16>, + alloy::sol_types::sol_data::Uint<16>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32, u16, u16); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OperatorSetParam) -> Self { + ( + value.maxOperatorCount, + value.kickBIPsOfOperatorStake, + value.kickBIPsOfTotalStake, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OperatorSetParam { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + maxOperatorCount: tuple.0, + kickBIPsOfOperatorStake: tuple.1, + kickBIPsOfTotalStake: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OperatorSetParam { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OperatorSetParam { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.maxOperatorCount, + ), + as alloy_sol_types::SolType>::tokenize( + &self.kickBIPsOfOperatorStake, + ), + as alloy_sol_types::SolType>::tokenize( + &self.kickBIPsOfTotalStake, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OperatorSetParam { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OperatorSetParam { + const NAME: &'static str = "OperatorSetParam"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OperatorSetParam(uint32 maxOperatorCount,uint16 kickBIPsOfOperatorStake,uint16 kickBIPsOfTotalStake)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word( + &self.maxOperatorCount, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.kickBIPsOfOperatorStake, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.kickBIPsOfTotalStake, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OperatorSetParam { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.maxOperatorCount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.kickBIPsOfOperatorStake, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.kickBIPsOfTotalStake, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.maxOperatorCount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.kickBIPsOfOperatorStake, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.kickBIPsOfTotalStake, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct QuorumBitmapUpdate { uint32 updateBlockNumber; uint32 nextUpdateBlockNumber; uint192 quorumBitmap; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct QuorumBitmapUpdate { + pub updateBlockNumber: u32, + pub nextUpdateBlockNumber: u32, + pub quorumBitmap: alloy::sol_types::private::primitives::aliases::U192, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<192>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u32, + u32, + alloy::sol_types::private::primitives::aliases::U192, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: QuorumBitmapUpdate) -> Self { + ( + value.updateBlockNumber, + value.nextUpdateBlockNumber, + value.quorumBitmap, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for QuorumBitmapUpdate { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + updateBlockNumber: tuple.0, + nextUpdateBlockNumber: tuple.1, + quorumBitmap: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for QuorumBitmapUpdate { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for QuorumBitmapUpdate { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.updateBlockNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.nextUpdateBlockNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.quorumBitmap, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for QuorumBitmapUpdate { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for QuorumBitmapUpdate { + const NAME: &'static str = "QuorumBitmapUpdate"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "QuorumBitmapUpdate(uint32 updateBlockNumber,uint32 nextUpdateBlockNumber,uint192 quorumBitmap)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word( + &self.updateBlockNumber, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.nextUpdateBlockNumber, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.quorumBitmap) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for QuorumBitmapUpdate { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.updateBlockNumber, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.nextUpdateBlockNumber, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.quorumBitmap, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.updateBlockNumber, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nextUpdateBlockNumber, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.quorumBitmap, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IRegistryCoordinator`](self) contract instance. + + See the [wrapper's documentation](`IRegistryCoordinatorInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IRegistryCoordinatorInstance { + IRegistryCoordinatorInstance::::new(address, provider) + } + /**A [`IRegistryCoordinator`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IRegistryCoordinator`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IRegistryCoordinatorInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IRegistryCoordinatorInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IRegistryCoordinatorInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IRegistryCoordinatorInstance + { + /**Creates a new wrapper around an on-chain [`IRegistryCoordinator`](self) contract instance. + + See the [wrapper's documentation](`IRegistryCoordinatorInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IRegistryCoordinatorInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IRegistryCoordinatorInstance { + IRegistryCoordinatorInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IRegistryCoordinatorInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IRegistryCoordinatorInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library ISignatureUtils { + struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ISignatureUtils { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SignatureWithSaltAndExpiry { + pub signature: alloy::sol_types::private::Bytes, + pub salt: alloy::sol_types::private::FixedBytes<32>, + pub expiry: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: SignatureWithSaltAndExpiry) -> Self { + (value.signature, value.salt, value.expiry) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for SignatureWithSaltAndExpiry { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + signature: tuple.0, + salt: tuple.1, + expiry: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for SignatureWithSaltAndExpiry { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for SignatureWithSaltAndExpiry { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.signature, + ), + as alloy_sol_types::SolType>::tokenize(&self.salt), + as alloy_sol_types::SolType>::tokenize(&self.expiry), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for SignatureWithSaltAndExpiry { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for SignatureWithSaltAndExpiry { + const NAME: &'static str = "SignatureWithSaltAndExpiry"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "SignatureWithSaltAndExpiry(bytes signature,bytes32 salt,uint256 expiry)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.signature, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.salt) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.expiry) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for SignatureWithSaltAndExpiry { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.signature, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.salt) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.expiry, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.signature, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.salt, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.expiry, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ISignatureUtilsInstance { + ISignatureUtilsInstance::::new(address, provider) + } + /**A [`ISignatureUtils`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ISignatureUtils`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ISignatureUtilsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ISignatureUtilsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ISignatureUtilsInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ISignatureUtilsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ISignatureUtilsInstance { + ISignatureUtilsInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library IStakeRegistry { + struct StrategyParams { address strategy; uint96 multiplier; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IStakeRegistry { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct StrategyParams { address strategy; uint96 multiplier; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct StrategyParams { + pub strategy: alloy::sol_types::private::Address, + pub multiplier: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<96>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U96, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: StrategyParams) -> Self { + (value.strategy, value.multiplier) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for StrategyParams { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategy: tuple.0, + multiplier: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for StrategyParams { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for StrategyParams { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.multiplier, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for StrategyParams { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for StrategyParams { + const NAME: &'static str = "StrategyParams"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "StrategyParams(address strategy,uint96 multiplier)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.strategy, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.multiplier) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for StrategyParams { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.strategy, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.multiplier, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.strategy, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.multiplier, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IStakeRegistry`](self) contract instance. + + See the [wrapper's documentation](`IStakeRegistryInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IStakeRegistryInstance { + IStakeRegistryInstance::::new(address, provider) + } + /**A [`IStakeRegistry`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IStakeRegistry`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IStakeRegistryInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IStakeRegistryInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IStakeRegistryInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IStakeRegistryInstance + { + /**Creates a new wrapper around an on-chain [`IStakeRegistry`](self) contract instance. + + See the [wrapper's documentation](`IStakeRegistryInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IStakeRegistryInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IStakeRegistryInstance { + IStakeRegistryInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IStakeRegistryInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IStakeRegistryInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library BN254 { + struct G1Point { + uint256 X; + uint256 Y; + } + struct G2Point { + uint256[2] X; + uint256[2] Y; + } +} + +library IBLSApkRegistry { + struct PubkeyRegistrationParams { + BN254.G1Point pubkeyRegistrationSignature; + BN254.G1Point pubkeyG1; + BN254.G2Point pubkeyG2; + } +} + +library IRegistryCoordinator { + type OperatorStatus is uint8; + struct OperatorInfo { + bytes32 operatorId; + OperatorStatus status; + } + struct OperatorKickParam { + uint8 quorumNumber; + address operator; + } + struct OperatorSetParam { + uint32 maxOperatorCount; + uint16 kickBIPsOfOperatorStake; + uint16 kickBIPsOfTotalStake; + } + struct QuorumBitmapUpdate { + uint32 updateBlockNumber; + uint32 nextUpdateBlockNumber; + uint192 quorumBitmap; + } +} + +library ISignatureUtils { + struct SignatureWithSaltAndExpiry { + bytes signature; + bytes32 salt; + uint256 expiry; + } +} + +library IStakeRegistry { + struct StrategyParams { + address strategy; + uint96 multiplier; + } +} + +interface RegistryCoordinator { + event ChurnApproverUpdated(address prevChurnApprover, address newChurnApprover); + event EjectorUpdated(address prevEjector, address newEjector); + event Initialized(uint8 version); + event OperatorDeregistered(address indexed operator, bytes32 indexed operatorId); + event OperatorRegistered(address indexed operator, bytes32 indexed operatorId); + event OperatorSetParamsUpdated(uint8 indexed quorumNumber, IRegistryCoordinator.OperatorSetParam operatorSetParams); + event OperatorSocketUpdate(bytes32 indexed operatorId, string socket); + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + event Paused(address indexed account, uint256 newPausedStatus); + event PauserRegistrySet(address pauserRegistry, address newPauserRegistry); + event QuorumBlockNumberUpdated(uint8 indexed quorumNumber, uint256 blocknumber); + event Unpaused(address indexed account, uint256 newPausedStatus); + + constructor(address _serviceManager, address _stakeRegistry, address _blsApkRegistry, address _indexRegistry); + + function OPERATOR_CHURN_APPROVAL_TYPEHASH() external view returns (bytes32); + function PUBKEY_REGISTRATION_TYPEHASH() external view returns (bytes32); + function blsApkRegistry() external view returns (address); + function calculateOperatorChurnApprovalDigestHash(address registeringOperator, bytes32 registeringOperatorId, IRegistryCoordinator.OperatorKickParam[] memory operatorKickParams, bytes32 salt, uint256 expiry) external view returns (bytes32); + function churnApprover() external view returns (address); + function createQuorum(IRegistryCoordinator.OperatorSetParam memory operatorSetParams, uint96 minimumStake, IStakeRegistry.StrategyParams[] memory strategyParams) external; + function deregisterOperator(bytes memory quorumNumbers) external; + function ejectOperator(address operator, bytes memory quorumNumbers) external; + function ejectionCooldown() external view returns (uint256); + function ejector() external view returns (address); + function getCurrentQuorumBitmap(bytes32 operatorId) external view returns (uint192); + function getOperator(address operator) external view returns (IRegistryCoordinator.OperatorInfo memory); + function getOperatorFromId(bytes32 operatorId) external view returns (address); + function getOperatorId(address operator) external view returns (bytes32); + function getOperatorSetParams(uint8 quorumNumber) external view returns (IRegistryCoordinator.OperatorSetParam memory); + function getOperatorStatus(address operator) external view returns (IRegistryCoordinator.OperatorStatus); + function getQuorumBitmapAtBlockNumberByIndex(bytes32 operatorId, uint32 blockNumber, uint256 index) external view returns (uint192); + function getQuorumBitmapHistoryLength(bytes32 operatorId) external view returns (uint256); + function getQuorumBitmapIndicesAtBlockNumber(uint32 blockNumber, bytes32[] memory operatorIds) external view returns (uint32[] memory); + function getQuorumBitmapUpdateByIndex(bytes32 operatorId, uint256 index) external view returns (IRegistryCoordinator.QuorumBitmapUpdate memory); + function indexRegistry() external view returns (address); + function initialize(address _initialOwner, address _churnApprover, address _ejector, address _pauserRegistry, uint256 _initialPausedStatus, IRegistryCoordinator.OperatorSetParam[] memory _operatorSetParams, uint96[] memory _minimumStakes, IStakeRegistry.StrategyParams[][] memory _strategyParams) external; + function isChurnApproverSaltUsed(bytes32) external view returns (bool); + function lastEjectionTimestamp(address) external view returns (uint256); + function numRegistries() external view returns (uint256); + function owner() external view returns (address); + function pause(uint256 newPausedStatus) external; + function pauseAll() external; + function paused(uint8 index) external view returns (bool); + function paused() external view returns (uint256); + function pauserRegistry() external view returns (address); + function pubkeyRegistrationMessageHash(address operator) external view returns (BN254.G1Point memory); + function quorumCount() external view returns (uint8); + function quorumUpdateBlockNumber(uint8) external view returns (uint256); + function registerOperator(bytes memory quorumNumbers, string memory socket, IBLSApkRegistry.PubkeyRegistrationParams memory params, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external; + function registerOperatorWithChurn(bytes memory quorumNumbers, string memory socket, IBLSApkRegistry.PubkeyRegistrationParams memory params, IRegistryCoordinator.OperatorKickParam[] memory operatorKickParams, ISignatureUtils.SignatureWithSaltAndExpiry memory churnApproverSignature, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external; + function registries(uint256) external view returns (address); + function renounceOwnership() external; + function serviceManager() external view returns (address); + function setChurnApprover(address _churnApprover) external; + function setEjectionCooldown(uint256 _ejectionCooldown) external; + function setEjector(address _ejector) external; + function setOperatorSetParams(uint8 quorumNumber, IRegistryCoordinator.OperatorSetParam memory operatorSetParams) external; + function setPauserRegistry(address newPauserRegistry) external; + function stakeRegistry() external view returns (address); + function transferOwnership(address newOwner) external; + function unpause(uint256 newPausedStatus) external; + function updateOperators(address[] memory operators) external; + function updateOperatorsForQuorum(address[][] memory operatorsPerQuorum, bytes memory quorumNumbers) external; + function updateSocket(string memory socket) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_serviceManager", + "type": "address", + "internalType": "contract IServiceManager" + }, + { + "name": "_stakeRegistry", + "type": "address", + "internalType": "contract IStakeRegistry" + }, + { + "name": "_blsApkRegistry", + "type": "address", + "internalType": "contract IBLSApkRegistry" + }, + { + "name": "_indexRegistry", + "type": "address", + "internalType": "contract IIndexRegistry" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "OPERATOR_CHURN_APPROVAL_TYPEHASH", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "PUBKEY_REGISTRATION_TYPEHASH", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "blsApkRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IBLSApkRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "calculateOperatorChurnApprovalDigestHash", + "inputs": [ + { + "name": "registeringOperator", + "type": "address", + "internalType": "address" + }, + { + "name": "registeringOperatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "operatorKickParams", + "type": "tuple[]", + "internalType": "struct IRegistryCoordinator.OperatorKickParam[]", + "components": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ] + }, + { + "name": "salt", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "churnApprover", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "createQuorum", + "inputs": [ + { + "name": "operatorSetParams", + "type": "tuple", + "internalType": "struct IRegistryCoordinator.OperatorSetParam", + "components": [ + { + "name": "maxOperatorCount", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "kickBIPsOfOperatorStake", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "kickBIPsOfTotalStake", + "type": "uint16", + "internalType": "uint16" + } + ] + }, + { + "name": "minimumStake", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "strategyParams", + "type": "tuple[]", + "internalType": "struct IStakeRegistry.StrategyParams[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "deregisterOperator", + "inputs": [ + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "ejectOperator", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "ejectionCooldown", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "ejector", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getCurrentQuorumBitmap", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint192", + "internalType": "uint192" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperator", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IRegistryCoordinator.OperatorInfo", + "components": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "status", + "type": "uint8", + "internalType": "enum IRegistryCoordinator.OperatorStatus" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorFromId", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorId", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorSetParams", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IRegistryCoordinator.OperatorSetParam", + "components": [ + { + "name": "maxOperatorCount", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "kickBIPsOfOperatorStake", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "kickBIPsOfTotalStake", + "type": "uint16", + "internalType": "uint16" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorStatus", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "enum IRegistryCoordinator.OperatorStatus" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getQuorumBitmapAtBlockNumberByIndex", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint192", + "internalType": "uint192" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getQuorumBitmapHistoryLength", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getQuorumBitmapIndicesAtBlockNumber", + "inputs": [ + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "operatorIds", + "type": "bytes32[]", + "internalType": "bytes32[]" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32[]", + "internalType": "uint32[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getQuorumBitmapUpdateByIndex", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IRegistryCoordinator.QuorumBitmapUpdate", + "components": [ + { + "name": "updateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "nextUpdateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "quorumBitmap", + "type": "uint192", + "internalType": "uint192" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "indexRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IIndexRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "_initialOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "_churnApprover", + "type": "address", + "internalType": "address" + }, + { + "name": "_ejector", + "type": "address", + "internalType": "address" + }, + { + "name": "_pauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + }, + { + "name": "_initialPausedStatus", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_operatorSetParams", + "type": "tuple[]", + "internalType": "struct IRegistryCoordinator.OperatorSetParam[]", + "components": [ + { + "name": "maxOperatorCount", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "kickBIPsOfOperatorStake", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "kickBIPsOfTotalStake", + "type": "uint16", + "internalType": "uint16" + } + ] + }, + { + "name": "_minimumStakes", + "type": "uint96[]", + "internalType": "uint96[]" + }, + { + "name": "_strategyParams", + "type": "tuple[][]", + "internalType": "struct IStakeRegistry.StrategyParams[][]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "isChurnApproverSaltUsed", + "inputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "lastEjectionTimestamp", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "numRegistries", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pause", + "inputs": [ + { + "name": "newPausedStatus", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "pauseAll", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "paused", + "inputs": [ + { + "name": "index", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "paused", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pauserRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pubkeyRegistrationMessageHash", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "quorumCount", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "quorumUpdateBlockNumber", + "inputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registerOperator", + "inputs": [ + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "socket", + "type": "string", + "internalType": "string" + }, + { + "name": "params", + "type": "tuple", + "internalType": "struct IBLSApkRegistry.PubkeyRegistrationParams", + "components": [ + { + "name": "pubkeyRegistrationSignature", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "pubkeyG1", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "pubkeyG2", + "type": "tuple", + "internalType": "struct BN254.G2Point", + "components": [ + { + "name": "X", + "type": "uint256[2]", + "internalType": "uint256[2]" + }, + { + "name": "Y", + "type": "uint256[2]", + "internalType": "uint256[2]" + } + ] + } + ] + }, + { + "name": "operatorSignature", + "type": "tuple", + "internalType": "struct ISignatureUtils.SignatureWithSaltAndExpiry", + "components": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "salt", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registerOperatorWithChurn", + "inputs": [ + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "socket", + "type": "string", + "internalType": "string" + }, + { + "name": "params", + "type": "tuple", + "internalType": "struct IBLSApkRegistry.PubkeyRegistrationParams", + "components": [ + { + "name": "pubkeyRegistrationSignature", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "pubkeyG1", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "pubkeyG2", + "type": "tuple", + "internalType": "struct BN254.G2Point", + "components": [ + { + "name": "X", + "type": "uint256[2]", + "internalType": "uint256[2]" + }, + { + "name": "Y", + "type": "uint256[2]", + "internalType": "uint256[2]" + } + ] + } + ] + }, + { + "name": "operatorKickParams", + "type": "tuple[]", + "internalType": "struct IRegistryCoordinator.OperatorKickParam[]", + "components": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ] + }, + { + "name": "churnApproverSignature", + "type": "tuple", + "internalType": "struct ISignatureUtils.SignatureWithSaltAndExpiry", + "components": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "salt", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "operatorSignature", + "type": "tuple", + "internalType": "struct ISignatureUtils.SignatureWithSaltAndExpiry", + "components": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "salt", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registries", + "inputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "serviceManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IServiceManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setChurnApprover", + "inputs": [ + { + "name": "_churnApprover", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setEjectionCooldown", + "inputs": [ + { + "name": "_ejectionCooldown", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setEjector", + "inputs": [ + { + "name": "_ejector", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setOperatorSetParams", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "operatorSetParams", + "type": "tuple", + "internalType": "struct IRegistryCoordinator.OperatorSetParam", + "components": [ + { + "name": "maxOperatorCount", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "kickBIPsOfOperatorStake", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "kickBIPsOfTotalStake", + "type": "uint16", + "internalType": "uint16" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setPauserRegistry", + "inputs": [ + { + "name": "newPauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "stakeRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStakeRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "unpause", + "inputs": [ + { + "name": "newPausedStatus", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateOperators", + "inputs": [ + { + "name": "operators", + "type": "address[]", + "internalType": "address[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateOperatorsForQuorum", + "inputs": [ + { + "name": "operatorsPerQuorum", + "type": "address[][]", + "internalType": "address[][]" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateSocket", + "inputs": [ + { + "name": "socket", + "type": "string", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "ChurnApproverUpdated", + "inputs": [ + { + "name": "prevChurnApprover", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newChurnApprover", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "EjectorUpdated", + "inputs": [ + { + "name": "prevEjector", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newEjector", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorDeregistered", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "operatorId", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorRegistered", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "operatorId", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorSetParamsUpdated", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "indexed": true, + "internalType": "uint8" + }, + { + "name": "operatorSetParams", + "type": "tuple", + "indexed": false, + "internalType": "struct IRegistryCoordinator.OperatorSetParam", + "components": [ + { + "name": "maxOperatorCount", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "kickBIPsOfOperatorStake", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "kickBIPsOfTotalStake", + "type": "uint16", + "internalType": "uint16" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorSocketUpdate", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "socket", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Paused", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newPausedStatus", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "PauserRegistrySet", + "inputs": [ + { + "name": "pauserRegistry", + "type": "address", + "indexed": false, + "internalType": "contract IPauserRegistry" + }, + { + "name": "newPauserRegistry", + "type": "address", + "indexed": false, + "internalType": "contract IPauserRegistry" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "QuorumBlockNumberUpdated", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "indexed": true, + "internalType": "uint8" + }, + { + "name": "blocknumber", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Unpaused", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newPausedStatus", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod RegistryCoordinator { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6101c06040523480156200001257600080fd5b506040516200639938038062006399833981016040819052620000359162000254565b604080518082018252601681527f4156535265676973747279436f6f7264696e61746f720000000000000000000060208083019182528351808501909452600684526576302e302e3160d01b908401528151902060e08190527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a996101008190524660a05287938793879387939192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620001358184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c05261012052505050506001600160a01b039384166101405291831661018052821661016052166101a0526200016f62000179565b50505050620002bc565b600054610100900460ff1615620001e65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000239576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200025157600080fd5b50565b600080600080608085870312156200026b57600080fd5b845162000278816200023b565b60208601519094506200028b816200023b565b60408601519093506200029e816200023b565b6060860151909250620002b1816200023b565b939692955090935050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615fd5620003c4600039600081816106ab0152818161119d0152818161208501528181612eb50152818161376c0152613d440152600081816105f001528181612010015281816124b801528181612e35015281816136c3015281816139190152613cc30152600081816105b601528181610f380152818161204e01528181612db701528181612f9d01528181613013015281816136430152613dc00152600081816104fa01528181612d0d015261358b01526000613fc70152600061401601526000613ff101526000613f4a01526000613f7401526000613f9e0152615fd56000f3fe608060405234801561001057600080fd5b50600436106102d55760003560e01c80635df45946116101825780639feab859116100e9578063d72d8dd6116100a2578063e65797ad1161007c578063e65797ad14610798578063f2fde38b1461083b578063fabc1cbc1461084e578063fd39105a1461086157600080fd5b8063d72d8dd61461076a578063d75b4c8814610772578063dd8283f31461078557600080fd5b80639feab859146106cd578063a50857bf146106f4578063a96f783e14610707578063c391425e14610710578063ca0de88214610730578063ca4f2d971461075757600080fd5b8063871ef0491161013b578063871ef04914610640578063886f1195146106535780638da5cb5b1461066c5780639aa1653d146106745780639b5d177b146106935780639e9923c2146106a657600080fd5b80635df45946146105b15780636347c900146105d857806368304835146105eb5780636e3b17db14610612578063715018a61461062557806384ca52131461062d57600080fd5b8063249a0c42116102415780633c2a7f4c116101fa578063595c6a67116101d4578063595c6a671461056f5780635ac86ab7146105775780635b0b829f146105965780635c975abb146105a957600080fd5b80633c2a7f4c1461051c5780635140a5481461053c5780635865c60c1461054f57600080fd5b8063249a0c421461048957806328f61b31146104a9578063296bb064146104bc57806329d1e0c3146104cf5780632cdd1e86146104e25780633998fdd3146104f557600080fd5b806310d67a2f1161029357806310d67a2f1461039e578063125e0584146103b157806313542a4e146103d1578063136439dd146103fa5780631478851f1461040d5780631eb812da1461044057600080fd5b8062cf2ab5146102da57806303fd3492146102ef57806304ec635114610322578063054310e61461034d5780630cf4b767146103785780630d3f21341461038b575b600080fd5b6102ed6102e8366004614ac7565b61089d565b005b61030f6102fd366004614b08565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b610335610330366004614b33565b6109b3565b6040516001600160c01b039091168152602001610319565b609d54610360906001600160a01b031681565b6040516001600160a01b039091168152602001610319565b6102ed610386366004614c52565b610ba9565b6102ed610399366004614b08565b610c91565b6102ed6103ac366004614cc7565b610c9e565b61030f6103bf366004614cc7565b609f6020526000908152604090205481565b61030f6103df366004614cc7565b6001600160a01b031660009081526099602052604090205490565b6102ed610408366004614b08565b610d51565b61043061041b366004614b08565b609a6020526000908152604090205460ff1681565b6040519015158152602001610319565b61045361044e366004614ce4565b610e8e565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b031690820152606001610319565b61030f610497366004614d17565b609b6020526000908152604090205481565b609e54610360906001600160a01b031681565b6103606104ca366004614b08565b610f1f565b6102ed6104dd366004614cc7565b610fab565b6102ed6104f0366004614cc7565b610fbc565b6103607f000000000000000000000000000000000000000000000000000000000000000081565b61052f61052a366004614cc7565b610fcd565b6040516103199190614d32565b6102ed61054a366004614d8a565b61104c565b61056261055d366004614cc7565b61155d565b6040516103199190614e2d565b6102ed6115d1565b610430610585366004614d17565b6001805460ff9092161b9081161490565b6102ed6105a4366004614eb2565b61169d565b60015461030f565b6103607f000000000000000000000000000000000000000000000000000000000000000081565b6103606105e6366004614b08565b6116be565b6103607f000000000000000000000000000000000000000000000000000000000000000081565b6102ed610620366004614ee6565b6116e8565b6102ed6117fe565b61030f61063b366004614f9d565b611812565b61033561064e366004614b08565b61185c565b600054610360906201000090046001600160a01b031681565b610360611867565b6096546106819060ff1681565b60405160ff9091168152602001610319565b6102ed6106a1366004615136565b611880565b6103607f000000000000000000000000000000000000000000000000000000000000000081565b61030f7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6102ed61070236600461522f565b611bb8565b61030f60a05481565b61072361071e3660046152d7565b611d3c565b604051610319919061537c565b61030f7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6102ed6107653660046153c6565b611df5565b609c5461030f565b6102ed6107803660046154ac565b611e5c565b6102ed61079336600461565f565b611e6f565b6108076107a6366004614d17565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff908116918301919091529282015190921690820152606001610319565b6102ed610849366004614cc7565b612173565b6102ed61085c366004614b08565b6121e9565b61089061086f366004614cc7565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516103199190615733565b600154600290600490811614156108cf5760405162461bcd60e51b81526004016108c690615741565b60405180910390fd5b60005b828110156109ad5760008484838181106108ee576108ee615778565b90506020020160208101906109039190614cc7565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff16600281111561094e5761094e614df5565b600281111561095f5761095f614df5565b9052508051909150600061097282612345565b90506000610988826001600160c01b03166123ae565b905061099585858361247a565b505050505080806109a5906157a4565b9150506108d2565b50505050565b60008381526098602052604081208054829190849081106109d6576109d6615778565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610ad05760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c4016108c6565b602081015163ffffffff161580610af65750806020015163ffffffff168463ffffffff16105b610b9d5760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c4016108c6565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610bd257610bd2614df5565b14610c455760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f7420726567697374657265640000000060648201526084016108c6565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610c8690849061580c565b60405180910390a250565b610c99612567565b60a055565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d15919061581f565b6001600160a01b0316336001600160a01b031614610d455760405162461bcd60e51b81526004016108c69061583c565b610d4e816125c6565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc29190615886565b610dde5760405162461bcd60e51b81526004016108c6906158a8565b60015481811614610e575760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016108c6565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610c86565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610ecb57610ecb615778565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f19919061581f565b610fb3612567565b610d4e816126cb565b610fc4612567565b610d4e81612734565b6040805180820190915260008082526020820152610f196110477f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de68460405160200161102c9291909182526001600160a01b0316602082015260400190565b6040516020818303038152906040528051906020012061279d565b6127eb565b600154600290600490811614156110755760405162461bcd60e51b81526004016108c690615741565b60006110bd84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff16915061287b9050565b905084831461112e5760405162461bcd60e51b81526020600482015260436024820152600080516020615f4083398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a4016108c6565b60005b8381101561155457600085858381811061114d5761114d615778565b919091013560f81c9150369050600089898581811061116e5761116e615778565b905060200281019061118091906158f0565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa1580156111ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112109190615939565b63ffffffff1681146112ac5760405162461bcd60e51b81526020600482015260656024820152600080516020615f4083398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c4016108c6565b6000805b828110156114f35760008484838181106112cc576112cc615778565b90506020020160208101906112e19190614cc7565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff16600281111561132c5761132c614df5565b600281111561133d5761133d614df5565b9052508051909150600061135082612345565b905060016001600160c01b03821660ff8b161c8116146113d45760405162461bcd60e51b815260206004820152604460248201819052600080516020615f40833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a4016108c6565b856001600160a01b0316846001600160a01b03161161147f5760405162461bcd60e51b81526020600482015260676024820152600080516020615f4083398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c4016108c6565b506114dd83838f8f8d908e60016114969190615956565b926114a39392919061596e565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061247a92505050565b509092506114ec9050816157a4565b90506112b0565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a2505050508061154d906157a4565b9050611131565b50505050505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff1660028111156115b7576115b7614df5565b60028111156115c8576115c8614df5565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561161e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116429190615886565b61165e5760405162461bcd60e51b81526004016108c6906158a8565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6116a5612567565b816116af8161290c565b6116b9838361298a565b505050565b609c81815481106116ce57600080fd5b6000918252602090912001546001600160a01b0316905081565b6116f0612a37565b6001600160a01b0383166000908152609f602090815260408083204290556099825280832080548251601f870185900485028101850190935285835290939092909161175d9187908790819084018382808284376000920191909152505060965460ff16915061287b9050565b9050600061176a83612345565b905060018085015460ff16600281111561178657611786614df5565b14801561179b57506001600160c01b03821615155b80156117b957506117b96001600160c01b0383811690831681161490565b15611554576115548787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ab792505050565b611806612567565b6118106000612f29565b565b60006118527f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a878787878760405160200161102c96959493929190615998565b9695505050505050565b6000610f1982612345565b600061187b6064546001600160a01b031690565b905090565b6001805460009190811614156118a85760405162461bcd60e51b81526004016108c690615741565b83891461192b5760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a4016108c6565b60006119373388612f7b565b905061199733828888808060200260200160405190810160405280939291908181526020016000905b8282101561198c5761197d60408302860136819003810190615a1d565b81526020019060010190611960565b5050505050876130ac565b60006119de33838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613239915050565b905060005b8b811015611ba9576000609760008f8f85818110611a0357611a03615778565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b90910490931691810191909152845180519193509084908110611a7057611a70615778565b602002602001015163ffffffff161115611b9657611b118e8e84818110611a9957611a99615778565b9050013560f81c60f81b60f81c84604001518481518110611abc57611abc615778565b60200260200101513386602001518681518110611adb57611adb615778565b60200260200101518d8d88818110611af557611af5615778565b905060400201803603810190611b0b9190615a1d565b866137fa565b611b96898984818110611b2657611b26615778565b9050604002016020016020810190611b3e9190614cc7565b8f8f8590866001611b4f9190615956565b92611b5c9392919061596e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ab792505050565b5080611ba1816157a4565b9150506119e3565b50505050505050505050505050565b600180546000919081161415611be05760405162461bcd60e51b81526004016108c690615741565b6000611bec3385612f7b565b90506000611c3533838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613239915050565b51905060005b88811015611d305760008a8a83818110611c5757611c57615778565b919091013560f81c600081815260976020526040902054855191935063ffffffff169150849084908110611c8d57611c8d615778565b602002602001015163ffffffff161115611d1d5760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a4016108c6565b5080611d28816157a4565b915050611c3b565b50505050505050505050565b6060600082516001600160401b03811115611d5957611d59614b6b565b604051908082528060200260200182016040528015611d82578160200160208202803683370190505b50905060005b8351811015611ded57611db485858381518110611da757611da7615778565b6020026020010151613acf565b828281518110611dc657611dc6615778565b63ffffffff9092166020928302919091019091015280611de5816157a4565b915050611d88565b509392505050565b6001805460029081161415611e1c5760405162461bcd60e51b81526004016108c690615741565b6116b93384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ab792505050565b611e64612567565b6116b9838383613c0b565b600054610100900460ff1615808015611e8f5750600054600160ff909116105b80611ea95750303b158015611ea9575060005460ff166001145b611f0c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108c6565b6000805460ff191660011790558015611f2f576000805461ff0019166101001790555b82518451148015611f41575081518351145b611fab5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b60648201526084016108c6565b611fb489612f29565b611fbe8686613e22565b611fc7886126cb565b611fd087612734565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b84518110156121215761210f8582815181106120ce576120ce615778565b60200260200101518583815181106120e8576120e8615778565b602002602001015185848151811061210257612102615778565b6020026020010151613c0b565b80612119816157a4565b9150506120b0565b508015612168576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b61217b612567565b6001600160a01b0381166121e05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108c6565b610d4e81612f29565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561223c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612260919061581f565b6001600160a01b0316336001600160a01b0316146122905760405162461bcd60e51b81526004016108c69061583c565b60015419811960015419161461230e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016108c6565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610c86565b600081815260986020526040812054806123625750600092915050565b600083815260986020526040902061237b600183615a39565b8154811061238b5761238b615778565b600091825260209091200154600160401b90046001600160c01b03169392505050565b60606000806123bc84613f12565b61ffff166001600160401b038111156123d7576123d7614b6b565b6040519080825280601f01601f191660200182016040528015612401576020820181803683370190505b5090506000805b825182108015612419575061010081105b15612470576001811b935085841615612460578060f81b83838151811061244257612442615778565b60200101906001600160f81b031916908160001a9053508160010191505b612469816157a4565b9050612408565b5090949350505050565b60018260200151600281111561249257612492614df5565b1461249c57505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe906124f190889086908890600401615a50565b6020604051808303816000875af1158015612510573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125349190615a80565b90506001600160c01b03811615612560576125608561255b836001600160c01b03166123ae565b612ab7565b5050505050565b33612570611867565b6001600160a01b0316146118105760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b6001600160a01b0381166126545760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016108c6565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610f196127aa613f3d565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60408051808201909152600080825260208201526000808061281b600080516020615f8083398151915286615abf565b90505b61282781614064565b9093509150600080516020615f80833981519152828309831415612861576040805180820190915290815260208101919091529392505050565b600080516020615f8083398151915260018208905061281e565b600080612887846140e6565b9050808360ff166001901b116129055760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c75650060648201526084016108c6565b9392505050565b60965460ff90811690821610610d4e5760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f7420657869737400000000000000000060648201526084016108c6565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b609e546001600160a01b031633146118105760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f7200000000000060648201526084016108c6565b6001600160a01b0382166000908152609960205260409020805460018083015460ff166002811115612aeb57612aeb614df5565b14612b6a5760405162461bcd60e51b815260206004820152604360248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a4016108c6565b609654600090612b7e90859060ff1661287b565b90506000612b8b83612345565b90506001600160c01b038216612c095760405162461bcd60e51b815260206004820152603b60248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206269746d61702063616e6e6f742062652030000000000060648201526084016108c6565b612c206001600160c01b0383811690831681161490565b612cb85760405162461bcd60e51b815260206004820152605960248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a4016108c6565b6001600160c01b0382811619821616612cd18482614273565b6001600160c01b038116612da05760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015612d5157600080fd5b505af1158015612d65573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590612dee908a908a90600401615ad3565b600060405180830381600087803b158015612e0857600080fd5b505af1158015612e1c573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612e6e9087908a90600401615af7565b600060405180830381600087803b158015612e8857600080fd5b505af1158015612e9c573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612eee9087908a90600401615af7565b600060405180830381600087803b158015612f0857600080fd5b505af1158015612f1c573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015612fe6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300a9190615b10565b905080610f19577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce58848461304b87610fcd565b6040518463ffffffff1660e01b815260040161306993929190615b29565b6020604051808303816000875af1158015613088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129059190615b10565b6020808201516000908152609a909152604090205460ff16156131525760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a4016108c6565b42816040015110156131e75760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a4016108c6565b602080820180516000908152609a909252604091829020805460ff19166001179055609d549051918301516109ad926001600160a01b03909216916132329188918891889190611812565b8351614433565b61325d60405180606001604052806060815260200160608152602001606081525090565b60006132a586868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff16915061287b9050565b905060006132b288612345565b90506001600160c01b0382166133305760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f7420626520300000000000000060648201526084016108c6565b8082166001600160c01b0316156133e65760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c4016108c6565b60a0546001600160a01b038a166000908152609f60205260409020546001600160c01b038381169085161791429161341e9190615956565b1061349f5760405162461bcd60e51b815260206004820152604560248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f722063616e6e6f74207265726567697374656064820152641c881e595d60da1b608482015260a4016108c6565b6134a98982614273565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516134d9919061580c565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561351357613513614df5565b1461362c576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff19169083600281111561356e5761356e614df5565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d906135c3908d908990600401615ba8565b600060405180830381600087803b1580156135dd57600080fd5b505af11580156135f1573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb279529061367c908d908c908c90600401615c1c565b600060405180830381600087803b15801561369657600080fd5b505af11580156136aa573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063255047779150613700908d908d908d908d90600401615c41565b6000604051808303816000875af115801561371f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137479190810190615ccd565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d906137a4908c908c908c90600401615d30565b6000604051808303816000875af11580156137c3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137eb9190810190615d4a565b84525050509695505050505050565b6020808301516001600160a01b03808216600081815260999094526040909320549192908716141561387a5760405162461bcd60e51b81526020600482015260356024820152600080516020615f6083398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b60648201526084016108c6565b8760ff16846000015160ff16146138f75760405162461bcd60e51b81526020600482015260476024820152600080516020615f6083398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a4016108c6565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015613968573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061398c9190615de3565b905061399881856145ed565b6001600160601b0316866001600160601b031611613a2b5760405162461bcd60e51b81526020600482015260566024820152600080516020615f6083398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a4016108c6565b613a358885614611565b6001600160601b0316816001600160601b0316106121685760405162461bcd60e51b815260206004820152605c6024820152600080516020615f6083398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a4016108c6565b600081815260986020526040812054815b81811015613b61576001613af48284615a39565b613afe9190615a39565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff1681548110613b3157613b31615778565b60009182526020909120015463ffffffff1611613b4f575050610f19565b80613b59816157a4565b915050613ae0565b5060405162461bcd60e51b815260206004820152606c60248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c4016108c6565b60965460ff1660c08110613c7f5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b60648201526084016108c6565b613c8a816001615e00565b6096805460ff191660ff9290921691909117905580613ca9818661298a565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a7790613cfc90849088908890600401615e25565b600060405180830381600087803b158015613d1657600080fd5b505af1158015613d2a573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613d9257600080fd5b505af1158015613da6573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613e0e57600080fd5b505af1158015612168573d6000803e3d6000fd5b6000546201000090046001600160a01b0316158015613e4957506001600160a01b03821615155b613ecb5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016108c6565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2613f0e826125c6565b5050565b6000805b8215610f1957613f27600184615a39565b9092169180613f3581615e9e565b915050613f16565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015613f9657507f000000000000000000000000000000000000000000000000000000000000000046145b15613fc057507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615f808339815191526003600080516020615f8083398151915286600080516020615f808339815191528889090908905060006140da827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615f8083398151915261462b565b91959194509092505050565b60006101008251111561416f5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016108c6565b815161417d57506000919050565b6000808360008151811061419357614193615778565b0160200151600160f89190911c81901b92505b845181101561426a578481815181106141c1576141c1615778565b0160200151600160f89190911c1b91508282116142565760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016108c6565b91811791614263816157a4565b90506141a6565b50909392505050565b60008281526098602052604090205480614318576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b6000838152609860205260408120614331600184615a39565b8154811061434157614341615778565b600091825260209091200180549091504363ffffffff908116911614156143855780546001600160401b0316600160401b6001600160c01b038516021781556109ad565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b1561454d57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906144739086908690600401615af7565b602060405180830381865afa158015614490573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144b49190615ec0565b6001600160e01b031916146116b95760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a4016108c6565b826001600160a01b031661456183836146da565b6001600160a01b0316146116b95760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a4016108c6565b6020810151600090612710906146079061ffff1685615eea565b6129059190615f19565b6040810151600090612710906146079061ffff1685615eea565b600080614636614a47565b61463e614a65565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561467f57614681565bfe5b50826146cf5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c75726500000000000060448201526064016108c6565b505195945050505050565b60008060006146e985856146f6565b91509150611ded81614766565b60008082516041141561472d5760208301516040840151606085015160001a61472187828585614921565b9450945050505061475f565b825160401415614757576020830151604084015161474c868383614a0e565b93509350505061475f565b506000905060025b9250929050565b600081600481111561477a5761477a614df5565b14156147835750565b600181600481111561479757614797614df5565b14156147e55760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016108c6565b60028160048111156147f9576147f9614df5565b14156148475760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016108c6565b600381600481111561485b5761485b614df5565b14156148b45760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016108c6565b60048160048111156148c8576148c8614df5565b1415610d4e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016108c6565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156149585750600090506003614a05565b8460ff16601b1415801561497057508460ff16601c14155b156149815750600090506004614a05565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156149d5573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166149fe57600060019250925050614a05565b9150600090505b94509492505050565b6000806001600160ff1b03831681614a2b60ff86901c601b615956565b9050614a3987828885614921565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f840112614a9557600080fd5b5081356001600160401b03811115614aac57600080fd5b6020830191508360208260051b850101111561475f57600080fd5b60008060208385031215614ada57600080fd5b82356001600160401b03811115614af057600080fd5b614afc85828601614a83565b90969095509350505050565b600060208284031215614b1a57600080fd5b5035919050565b63ffffffff81168114610d4e57600080fd5b600080600060608486031215614b4857600080fd5b833592506020840135614b5a81614b21565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614ba357614ba3614b6b565b60405290565b604080519081016001600160401b0381118282101715614ba357614ba3614b6b565b604051601f8201601f191681016001600160401b0381118282101715614bf357614bf3614b6b565b604052919050565b60006001600160401b03831115614c1457614c14614b6b565b614c27601f8401601f1916602001614bcb565b9050828152838383011115614c3b57600080fd5b828260208301376000602084830101529392505050565b600060208284031215614c6457600080fd5b81356001600160401b03811115614c7a57600080fd5b8201601f81018413614c8b57600080fd5b614c9a84823560208401614bfb565b949350505050565b6001600160a01b0381168114610d4e57600080fd5b8035614cc281614ca2565b919050565b600060208284031215614cd957600080fd5b813561290581614ca2565b60008060408385031215614cf757600080fd5b50508035926020909101359150565b803560ff81168114614cc257600080fd5b600060208284031215614d2957600080fd5b61290582614d06565b815181526020808301519082015260408101610f19565b60008083601f840112614d5b57600080fd5b5081356001600160401b03811115614d7257600080fd5b60208301915083602082850101111561475f57600080fd5b60008060008060408587031215614da057600080fd5b84356001600160401b0380821115614db757600080fd5b614dc388838901614a83565b90965094506020870135915080821115614ddc57600080fd5b50614de987828801614d49565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110614e2957634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614e4890840182614e0b565b5092915050565b803561ffff81168114614cc257600080fd5b600060608284031215614e7357600080fd5b614e7b614b81565b90508135614e8881614b21565b8152614e9660208301614e4f565b6020820152614ea760408301614e4f565b604082015292915050565b60008060808385031215614ec557600080fd5b614ece83614d06565b9150614edd8460208501614e61565b90509250929050565b600080600060408486031215614efb57600080fd5b8335614f0681614ca2565b925060208401356001600160401b03811115614f2157600080fd5b614f2d86828701614d49565b9497909650939450505050565b60006001600160401b03821115614f5357614f53614b6b565b5060051b60200190565b600060408284031215614f6f57600080fd5b614f77614ba9565b9050614f8282614d06565b81526020820135614f9281614ca2565b602082015292915050565b600080600080600060a08688031215614fb557600080fd5b8535614fc081614ca2565b945060208681013594506040808801356001600160401b03811115614fe457600080fd5b8801601f81018a13614ff557600080fd5b803561500861500382614f3a565b614bcb565b81815260069190911b8201840190848101908c83111561502757600080fd5b928501925b8284101561504d5761503e8d85614f5d565b8252928401929085019061502c565b999c989b5098996060810135995060800135979650505050505050565b6000610100828403121561507d57600080fd5b50919050565b60008083601f84011261509557600080fd5b5081356001600160401b038111156150ac57600080fd5b6020830191508360208260061b850101111561475f57600080fd5b6000606082840312156150d957600080fd5b6150e1614b81565b905081356001600160401b038111156150f957600080fd5b8201601f8101841361510a57600080fd5b61511984823560208401614bfb565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c03121561515557600080fd5b89356001600160401b038082111561516c57600080fd5b6151788d838e01614d49565b909b50995060208c013591508082111561519157600080fd5b61519d8d838e01614d49565b90995097508791506151b28d60408e0161506a565b96506101408c01359150808211156151c957600080fd5b6151d58d838e01615083565b90965094506101608c01359150808211156151ef57600080fd5b6151fb8d838e016150c7565b93506101808c013591508082111561521257600080fd5b5061521f8c828d016150c7565b9150509295985092959850929598565b600080600080600080610160878903121561524957600080fd5b86356001600160401b038082111561526057600080fd5b61526c8a838b01614d49565b9098509650602089013591508082111561528557600080fd5b6152918a838b01614d49565b90965094508491506152a68a60408b0161506a565b93506101408901359150808211156152bd57600080fd5b506152ca89828a016150c7565b9150509295509295509295565b600080604083850312156152ea57600080fd5b82356152f581614b21565b91506020838101356001600160401b0381111561531157600080fd5b8401601f8101861361532257600080fd5b803561533061500382614f3a565b81815260059190911b8201830190838101908883111561534f57600080fd5b928401925b8284101561536d57833582529284019290840190615354565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156153ba57835163ffffffff1683529284019291840191600101615398565b50909695505050505050565b600080602083850312156153d957600080fd5b82356001600160401b038111156153ef57600080fd5b614afc85828601614d49565b6001600160601b0381168114610d4e57600080fd5b600082601f83011261542157600080fd5b8135602061543161500383614f3a565b82815260069290921b8401810191818101908684111561545057600080fd5b8286015b848110156154a1576040818903121561546d5760008081fd5b615475614ba9565b813561548081614ca2565b81528185013561548f816153fb565b81860152835291830191604001615454565b509695505050505050565b600080600060a084860312156154c157600080fd5b6154cb8585614e61565b925060608401356154db816153fb565b915060808401356001600160401b038111156154f657600080fd5b61550286828701615410565b9150509250925092565b600082601f83011261551d57600080fd5b8135602061552d61500383614f3a565b8281526060928302850182019282820191908785111561554c57600080fd5b8387015b8581101561556f576155628982614e61565b8452928401928101615550565b5090979650505050505050565b600082601f83011261558d57600080fd5b8135602061559d61500383614f3a565b82815260059290921b840181019181810190868411156155bc57600080fd5b8286015b848110156154a15780356155d3816153fb565b83529183019183016155c0565b600082601f8301126155f157600080fd5b8135602061560161500383614f3a565b82815260059290921b8401810191818101908684111561562057600080fd5b8286015b848110156154a15780356001600160401b038111156156435760008081fd5b6156518986838b0101615410565b845250918301918301615624565b600080600080600080600080610100898b03121561567c57600080fd5b61568589614cb7565b975061569360208a01614cb7565b96506156a160408a01614cb7565b95506156af60608a01614cb7565b94506080890135935060a08901356001600160401b03808211156156d257600080fd5b6156de8c838d0161550c565b945060c08b01359150808211156156f457600080fd5b6157008c838d0161557c565b935060e08b013591508082111561571657600080fd5b506157238b828c016155e0565b9150509295985092959890939650565b60208101610f198284614e0b565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156157b8576157b861578e565b5060010190565b6000815180845260005b818110156157e5576020818501810151868301820152016157c9565b818111156157f7576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061290560208301846157bf565b60006020828403121561583157600080fd5b815161290581614ca2565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561589857600080fd5b8151801515811461290557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000808335601e1984360301811261590757600080fd5b8301803591506001600160401b0382111561592157600080fd5b6020019150600581901b360382131561475f57600080fd5b60006020828403121561594b57600080fd5b815161290581614b21565b600082198211156159695761596961578e565b500190565b6000808585111561597e57600080fd5b8386111561598b57600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a16828601526040898187015260c0606087015283895180865260e088019150848b01955060005b818110156159fd578651805160ff16845286015185168684015295850195918301916001016159d3565b505060808701989098525050505060a09091019190915250949350505050565b600060408284031215615a2f57600080fd5b6129058383614f5d565b600082821015615a4b57615a4b61578e565b500390565b60018060a01b0384168152826020820152606060408201526000615a7760608301846157bf565b95945050505050565b600060208284031215615a9257600080fd5b81516001600160c01b038116811461290557600080fd5b634e487b7160e01b600052601260045260246000fd5b600082615ace57615ace615aa9565b500690565b6001600160a01b0383168152604060208201819052600090614c9a908301846157bf565b828152604060208201526000614c9a60408301846157bf565b600060208284031215615b2257600080fd5b5051919050565b6001600160a01b03841681526101608101615b51602083018580358252602090810135910152565b615b6b606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b60018060a01b0383168152604060208201526000825160606040840152615bd260a08401826157bf565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b0384168152604060208201819052600090615a779083018486615bf3565b60018060a01b0385168152836020820152606060408201526000611852606083018486615bf3565b600082601f830112615c7a57600080fd5b81516020615c8a61500383614f3a565b82815260059290921b84018101918181019086841115615ca957600080fd5b8286015b848110156154a1578051615cc0816153fb565b8352918301918301615cad565b60008060408385031215615ce057600080fd5b82516001600160401b0380821115615cf757600080fd5b615d0386838701615c69565b93506020850151915080821115615d1957600080fd5b50615d2685828601615c69565b9150509250929050565b838152604060208201526000615a77604083018486615bf3565b60006020808385031215615d5d57600080fd5b82516001600160401b03811115615d7357600080fd5b8301601f81018513615d8457600080fd5b8051615d9261500382614f3a565b81815260059190911b82018301908381019087831115615db157600080fd5b928401925b82841015615dd8578351615dc981614b21565b82529284019290840190615db6565b979650505050505050565b600060208284031215615df557600080fd5b8151612905816153fb565b600060ff821660ff84168060ff03821115615e1d57615e1d61578e565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015615e8e57865180516001600160a01b031684528601518516868401529585019591830191600101615e5e565b50909a9950505050505050505050565b600061ffff80831681811415615eb657615eb661578e565b6001019392505050565b600060208284031215615ed257600080fd5b81516001600160e01b03198116811461290557600080fd5b60006001600160601b0380831681851681830481118215151615615f1057615f1061578e565b02949350505050565b60006001600160601b0380841680615f3357615f33615aa9565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212207491ac76a1cd7fce1d2d0cd906754d5efdf6335a0dcbfeda2692424d777b4a4a64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"a\x01\xC0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0c\x998\x03\x80b\0c\x99\x839\x81\x01`@\x81\x90Rb\0\x005\x91b\0\x02TV[`@\x80Q\x80\x82\x01\x82R`\x16\x81R\x7FAVSRegistryCoordinator\0\0\0\0\0\0\0\0\0\0` \x80\x83\x01\x91\x82R\x83Q\x80\x85\x01\x90\x94R`\x06\x84Rev0.0.1`\xD0\x1B\x90\x84\x01R\x81Q\x90 `\xE0\x81\x90R\x7Fk\xDA~?8^H\x84\x10H9\x04D\xCC\xED\\\xC7\x95\xAF\x87u\x8A\xF6v\"\xE5\xF4\xF0\x88,J\x99a\x01\0\x81\x90RF`\xA0R\x87\x93\x87\x93\x87\x93\x87\x93\x91\x92\x91\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0Fb\0\x015\x81\x84\x84`@\x80Q` \x81\x01\x85\x90R\x90\x81\x01\x83\x90R``\x81\x01\x82\x90RF`\x80\x82\x01R0`\xA0\x82\x01R`\0\x90`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x93\x92PPPV[`\x80R0`\xC0Ra\x01 RPPPP`\x01`\x01`\xA0\x1B\x03\x93\x84\x16a\x01@R\x91\x83\x16a\x01\x80R\x82\x16a\x01`R\x16a\x01\xA0Rb\0\x01ob\0\x01yV[PPPPb\0\x02\xBCV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\x01\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FInitializable: contract is initi`D\x82\x01Rfalizing`\xC8\x1B`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[`\0T`\xFF\x90\x81\x16\x10\x15b\0\x029W`\0\x80T`\xFF\x19\x16`\xFF\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x02QW`\0\x80\xFD[PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x02kW`\0\x80\xFD[\x84Qb\0\x02x\x81b\0\x02;V[` \x86\x01Q\x90\x94Pb\0\x02\x8B\x81b\0\x02;V[`@\x86\x01Q\x90\x93Pb\0\x02\x9E\x81b\0\x02;V[``\x86\x01Q\x90\x92Pb\0\x02\xB1\x81b\0\x02;V[\x93\x96\x92\x95P\x90\x93PPV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x01\0Qa\x01 Qa\x01@Qa\x01`Qa\x01\x80Qa\x01\xA0Qa_\xD5b\0\x03\xC4`\09`\0\x81\x81a\x06\xAB\x01R\x81\x81a\x11\x9D\x01R\x81\x81a \x85\x01R\x81\x81a.\xB5\x01R\x81\x81a7l\x01Ra=D\x01R`\0\x81\x81a\x05\xF0\x01R\x81\x81a \x10\x01R\x81\x81a$\xB8\x01R\x81\x81a.5\x01R\x81\x81a6\xC3\x01R\x81\x81a9\x19\x01Ra<\xC3\x01R`\0\x81\x81a\x05\xB6\x01R\x81\x81a\x0F8\x01R\x81\x81a N\x01R\x81\x81a-\xB7\x01R\x81\x81a/\x9D\x01R\x81\x81a0\x13\x01R\x81\x81a6C\x01Ra=\xC0\x01R`\0\x81\x81a\x04\xFA\x01R\x81\x81a-\r\x01Ra5\x8B\x01R`\0a?\xC7\x01R`\0a@\x16\x01R`\0a?\xF1\x01R`\0a?J\x01R`\0a?t\x01R`\0a?\x9E\x01Ra_\xD5`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x02\xD5W`\x005`\xE0\x1C\x80c]\xF4YF\x11a\x01\x82W\x80c\x9F\xEA\xB8Y\x11a\0\xE9W\x80c\xD7-\x8D\xD6\x11a\0\xA2W\x80c\xE6W\x97\xAD\x11a\0|W\x80c\xE6W\x97\xAD\x14a\x07\x98W\x80c\xF2\xFD\xE3\x8B\x14a\x08;W\x80c\xFA\xBC\x1C\xBC\x14a\x08NW\x80c\xFD9\x10Z\x14a\x08aW`\0\x80\xFD[\x80c\xD7-\x8D\xD6\x14a\x07jW\x80c\xD7[L\x88\x14a\x07rW\x80c\xDD\x82\x83\xF3\x14a\x07\x85W`\0\x80\xFD[\x80c\x9F\xEA\xB8Y\x14a\x06\xCDW\x80c\xA5\x08W\xBF\x14a\x06\xF4W\x80c\xA9ox>\x14a\x07\x07W\x80c\xC3\x91B^\x14a\x07\x10W\x80c\xCA\r\xE8\x82\x14a\x070W\x80c\xCAO-\x97\x14a\x07WW`\0\x80\xFD[\x80c\x87\x1E\xF0I\x11a\x01;W\x80c\x87\x1E\xF0I\x14a\x06@W\x80c\x88o\x11\x95\x14a\x06SW\x80c\x8D\xA5\xCB[\x14a\x06lW\x80c\x9A\xA1e=\x14a\x06tW\x80c\x9B]\x17{\x14a\x06\x93W\x80c\x9E\x99#\xC2\x14a\x06\xA6W`\0\x80\xFD[\x80c]\xF4YF\x14a\x05\xB1W\x80ccG\xC9\0\x14a\x05\xD8W\x80ch0H5\x14a\x05\xEBW\x80cn;\x17\xDB\x14a\x06\x12W\x80cqP\x18\xA6\x14a\x06%W\x80c\x84\xCAR\x13\x14a\x06-W`\0\x80\xFD[\x80c$\x9A\x0CB\x11a\x02AW\x80c<*\x7FL\x11a\x01\xFAW\x80cY\\jg\x11a\x01\xD4W\x80cY\\jg\x14a\x05oW\x80cZ\xC8j\xB7\x14a\x05wW\x80c[\x0B\x82\x9F\x14a\x05\x96W\x80c\\\x97Z\xBB\x14a\x05\xA9W`\0\x80\xFD[\x80c<*\x7FL\x14a\x05\x1CW\x80cQ@\xA5H\x14a\x05\x80W\xC1\xAD\x1F5\x10\xFC\x83w\x8B\xE2\x0F\x10\xEC]\xE6\x81V[a\x02\xEDa\x07\x026`\x04aR/V[a\x1B\xB8V[a\x03\x0F`\xA0T\x81V[a\x07#a\x07\x1E6`\x04aR\xD7V[a\x1D=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x15\x91\x90aX\x1FV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\rEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aX=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xC2\x91\x90aX\x86V[a\r\xDEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aX\xA8V[`\x01T\x81\x81\x16\x14a\x0EWW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.pause: invalid attempt `D\x82\x01R\x7Fto unpause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x08\xC6V[`\x01\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01a\x0C\x86V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`\0\x83\x81R`\x98` R`@\x90 \x80T\x83\x90\x81\x10a\x0E\xCBWa\x0E\xCBaWxV[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x82\x04\x16\x93\x82\x01\x93\x90\x93R`\x01`\x01`\xC0\x1B\x03`\x01`@\x1B\x90\x93\x04\x92\x90\x92\x16\x90\x82\x01R\x90P[\x92\x91PPV[`@Qc\x08\xF6b\x9D`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90cG\xB3\x14\xE8\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\x87W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\x19\x91\x90aX\x1FV[a\x0F\xB3a%gV[a\rN\x81a&\xCBV[a\x0F\xC4a%gV[a\rN\x81a'4V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x0F\x19a\x10G\x7F+\xD8!$\x05\x7F\t\x13\xBC;w,\xE7\xB8>\x80W\xC1\xAD\x1F5\x10\xFC\x83w\x8B\xE2\x0F\x10\xEC]\xE6\x84`@Q` \x01a\x10,\x92\x91\x90\x91\x82R`\x01`\x01`\xA0\x1B\x03\x16` \x82\x01R`@\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a'\x9DV[a'\xEBV[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x10uW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aWAV[`\0a\x10\xBD\x84\x84\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`\x96T`\xFF\x16\x91Pa({\x90PV[\x90P\x84\x83\x14a\x11.W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` a_@\x839\x81Q\x91R`D\x82\x01R\x7ForsForQuorum: input length misma`d\x82\x01Rb\x0E\x8Cm`\xEB\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`\0[\x83\x81\x10\x15a\x15TW`\0\x85\x85\x83\x81\x81\x10a\x11MWa\x11MaWxV[\x91\x90\x91\x015`\xF8\x1C\x91P6\x90P`\0\x89\x89\x85\x81\x81\x10a\x11nWa\x11naWxV[\x90P` \x02\x81\x01\x90a\x11\x80\x91\x90aX\xF0V[`@Qcy\xA0\x84\x91`\xE1\x1B\x81R`\xFF\x86\x16`\x04\x82\x01R\x91\x93P\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90c\xF3A\t\"\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11\xECW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12\x10\x91\x90aY9V[c\xFF\xFF\xFF\xFF\x16\x81\x14a\x12\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`e`$\x82\x01R`\0\x80Q` a_@\x839\x81Q\x91R`D\x82\x01R\x7ForsForQuorum: number of updated `d\x82\x01R\x7Foperators does not match quorum `\x84\x82\x01Rd\x1D\x1B\xDD\x18[`\xDA\x1B`\xA4\x82\x01R`\xC4\x01a\x08\xC6V[`\0\x80[\x82\x81\x10\x15a\x14\xF3W`\0\x84\x84\x83\x81\x81\x10a\x12\xCCWa\x12\xCCaWxV[\x90P` \x02\x01` \x81\x01\x90a\x12\xE1\x91\x90aL\xC7V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\x99` \x90\x81R`@\x80\x83 \x81Q\x80\x83\x01\x90\x92R\x80T\x82R`\x01\x81\x01T\x94\x95P\x92\x93\x90\x92\x91\x83\x01\x90`\xFF\x16`\x02\x81\x11\x15a\x13,Wa\x13,aM\xF5V[`\x02\x81\x11\x15a\x13=Wa\x13=aM\xF5V[\x90RP\x80Q\x90\x91P`\0a\x13P\x82a#EV[\x90P`\x01`\x01`\x01`\xC0\x1B\x03\x82\x16`\xFF\x8B\x16\x1C\x81\x16\x14a\x13\xD4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R`\0\x80Q` a_@\x839\x81Q\x91R\x90\x82\x01R\x7ForsForQuorum: operator not in qu`d\x82\x01Rcorum`\xE0\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[\x85`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x11a\x14\x7FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`g`$\x82\x01R`\0\x80Q` a_@\x839\x81Q\x91R`D\x82\x01R\x7ForsForQuorum: operators array mu`d\x82\x01R\x7Fst be sorted in ascending addres`\x84\x82\x01Rf9\x907\xB922\xB9`\xC9\x1B`\xA4\x82\x01R`\xC4\x01a\x08\xC6V[Pa\x14\xDD\x83\x83\x8F\x8F\x8D\x90\x8E`\x01a\x14\x96\x91\x90aYVV[\x92a\x14\xA3\x93\x92\x91\x90aYnV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa$z\x92PPPV[P\x90\x92Pa\x14\xEC\x90P\x81aW\xA4V[\x90Pa\x12\xB0V[P`\xFF\x84\x16`\0\x81\x81R`\x9B` \x90\x81R`@\x91\x82\x90 C\x90\x81\x90U\x91Q\x91\x82R\x7FF\x07}U3\x07c\xF1bi\xFDu\xE5v\x16c\xF4\x19-'\x91t|\x01\x89\xB1j\xD3\x1D\xB0}\xB4\x91\x01`@Q\x80\x91\x03\x90\xA2PPPP\x80a\x15M\x90aW\xA4V[\x90Pa\x111V[PPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` \x90\x81R`@\x91\x82\x90 \x82Q\x80\x84\x01\x90\x93R\x80T\x83R`\x01\x81\x01T\x90\x91\x83\x01\x90`\xFF\x16`\x02\x81\x11\x15a\x15\xB7Wa\x15\xB7aM\xF5V[`\x02\x81\x11\x15a\x15\xC8Wa\x15\xC8aM\xF5V[\x90RP\x92\x91PPV[`\0T`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01Rb\x01\0\0\x90\x91\x04`\x01`\x01`\xA0\x1B\x03\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16\x1EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16B\x91\x90aX\x86V[a\x16^W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aX\xA8V[`\0\x19`\x01\x81\x90U`@Q\x90\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2V[a\x16\xA5a%gV[\x81a\x16\xAF\x81a)\x0CV[a\x16\xB9\x83\x83a)\x8AV[PPPV[`\x9C\x81\x81T\x81\x10a\x16\xCEW`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x90P\x81V[a\x16\xF0a*7V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9F` \x90\x81R`@\x80\x83 B\x90U`\x99\x82R\x80\x83 \x80T\x82Q`\x1F\x87\x01\x85\x90\x04\x85\x02\x81\x01\x85\x01\x90\x93R\x85\x83R\x90\x93\x90\x92\x90\x91a\x17]\x91\x87\x90\x87\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`\x96T`\xFF\x16\x91Pa({\x90PV[\x90P`\0a\x17j\x83a#EV[\x90P`\x01\x80\x85\x01T`\xFF\x16`\x02\x81\x11\x15a\x17\x86Wa\x17\x86aM\xF5V[\x14\x80\x15a\x17\x9BWP`\x01`\x01`\xC0\x1B\x03\x82\x16\x15\x15[\x80\x15a\x17\xB9WPa\x17\xB9`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x16\x14\x90V[\x15a\x15TWa\x15T\x87\x87\x87\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa*\xB7\x92PPPV[a\x18\x06a%gV[a\x18\x10`\0a/)V[V[`\0a\x18R\x7FM@N2v\xE7\xAC!c\xD8\xEEGj\xFAjA\xD1\xF6\x8F\xB7\x1F-\x8BeF\xB2NU\xCE\x01\xB7*\x87\x87\x87\x87\x87`@Q` \x01a\x10,\x96\x95\x94\x93\x92\x91\x90aY\x98V[\x96\x95PPPPPPV[`\0a\x0F\x19\x82a#EV[`\0a\x18{`dT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90P\x90V[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x18\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aWAV[\x83\x89\x14a\x19+W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FRegistryCoordinator.registerOper\x90\x82\x01R\x7FatorWithChurn: input length mism`d\x82\x01Rc\x0C.\x8Cm`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`\0a\x1973\x88a/{V[\x90Pa\x19\x973\x82\x88\x88\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x19\x8CWa\x19}`@\x83\x02\x86\x016\x81\x90\x03\x81\x01\x90aZ\x1DV[\x81R` \x01\x90`\x01\x01\x90a\x19`V[PPPPP\x87a0\xACV[`\0a\x19\xDE3\x83\x8E\x8E\x8E\x8E\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RP\x8C\x92Pa29\x91PPV[\x90P`\0[\x8B\x81\x10\x15a\x1B\xA9W`\0`\x97`\0\x8F\x8F\x85\x81\x81\x10a\x1A\x03Wa\x1A\x03aWxV[\x91\x90\x91\x015`\xF8\x1C\x82RP` \x80\x82\x01\x92\x90\x92R`@\x90\x81\x01`\0 \x81Q``\x81\x01\x83R\x90Tc\xFF\xFF\xFF\xFF\x81\x16\x80\x83Ra\xFF\xFF`\x01` \x1B\x83\x04\x81\x16\x95\x84\x01\x95\x90\x95R`\x01`0\x1B\x90\x91\x04\x90\x93\x16\x91\x81\x01\x91\x90\x91R\x84Q\x80Q\x91\x93P\x90\x84\x90\x81\x10a\x1ApWa\x1ApaWxV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1B\x96Wa\x1B\x11\x8E\x8E\x84\x81\x81\x10a\x1A\x99Wa\x1A\x99aWxV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x84`@\x01Q\x84\x81Q\x81\x10a\x1A\xBCWa\x1A\xBCaWxV[` \x02` \x01\x01Q3\x86` \x01Q\x86\x81Q\x81\x10a\x1A\xDBWa\x1A\xDBaWxV[` \x02` \x01\x01Q\x8D\x8D\x88\x81\x81\x10a\x1A\xF5Wa\x1A\xF5aWxV[\x90P`@\x02\x01\x806\x03\x81\x01\x90a\x1B\x0B\x91\x90aZ\x1DV[\x86a7\xFAV[a\x1B\x96\x89\x89\x84\x81\x81\x10a\x1B&Wa\x1B&aWxV[\x90P`@\x02\x01` \x01` \x81\x01\x90a\x1B>\x91\x90aL\xC7V[\x8F\x8F\x85\x90\x86`\x01a\x1BO\x91\x90aYVV[\x92a\x1B\\\x93\x92\x91\x90aYnV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa*\xB7\x92PPPV[P\x80a\x1B\xA1\x81aW\xA4V[\x91PPa\x19\xE3V[PPPPPPPPPPPPPV[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x1B\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aWAV[`\0a\x1B\xEC3\x85a/{V[\x90P`\0a\x1C53\x83\x8B\x8B\x8B\x8B\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RP\x8C\x92Pa29\x91PPV[Q\x90P`\0[\x88\x81\x10\x15a\x1D0W`\0\x8A\x8A\x83\x81\x81\x10a\x1CWWa\x1CWaWxV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x97` R`@\x90 T\x85Q\x91\x93Pc\xFF\xFF\xFF\xFF\x16\x91P\x84\x90\x84\x90\x81\x10a\x1C\x8DWa\x1C\x8DaWxV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1D\x1DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FRegistryCoordinator.registerOper\x90\x82\x01R\x7Fator: operator count exceeds max`d\x82\x01Rcimum`\xE0\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[P\x80a\x1D(\x81aW\xA4V[\x91PPa\x1C;V[PPPPPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1DYWa\x1DYaKkV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x82W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1D\xEDWa\x1D\xB4\x85\x85\x83\x81Q\x81\x10a\x1D\xA7Wa\x1D\xA7aWxV[` \x02` \x01\x01Qa:\xCFV[\x82\x82\x81Q\x81\x10a\x1D\xC6Wa\x1D\xC6aWxV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x1D\xE5\x81aW\xA4V[\x91PPa\x1D\x88V[P\x93\x92PPPV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\x1E\x1CW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aWAV[a\x16\xB93\x84\x84\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa*\xB7\x92PPPV[a\x1Eda%gV[a\x16\xB9\x83\x83\x83a<\x0BV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x1E\x8FWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x1E\xA9WP0;\x15\x80\x15a\x1E\xA9WP`\0T`\xFF\x16`\x01\x14[a\x1F\x0CW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01a\x08\xC6V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x1F/W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[\x82Q\x84Q\x14\x80\x15a\x1FAWP\x81Q\x83Q\x14[a\x1F\xABW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FRegistryCoordinator.initialize: `D\x82\x01Rt\r-\xCE\x0E\xAE\x84\r\x8C\xAD\xCC\xEE\x8D\x04\r\xAD.m\xAC.\x8Cm`[\x1B`d\x82\x01R`\x84\x01a\x08\xC6V[a\x1F\xB4\x89a/)V[a\x1F\xBE\x86\x86a>\"V[a\x1F\xC7\x88a&\xCBV[a\x1F\xD0\x87a'4V[`\x9C\x80T`\x01\x81\x81\x01\x83U`\0\x83\x81R\x7F\xAF\x85\xB9\x07\x1D\xFA\xFE\xAC\x14\t\xD3\xF1\xD1\x9B\xAF\xC9\xBC|7\x97L\xDE\x8D\xF0\xEEah\xF0\x08nS\x9C\x92\x83\x01\x80T`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90\x92U\x85T\x80\x85\x01\x87U\x85\x01\x80T\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x16\x90\x83\x16\x17\x90U\x85T\x93\x84\x01\x90\x95U\x91\x90\x92\x01\x80T\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x92\x16\x91\x90\x93\x16\x17\x90\x91U[\x84Q\x81\x10\x15a!!Wa!\x0F\x85\x82\x81Q\x81\x10a \xCEWa \xCEaWxV[` \x02` \x01\x01Q\x85\x83\x81Q\x81\x10a \xE8Wa \xE8aWxV[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a!\x02Wa!\x02aWxV[` \x02` \x01\x01Qa<\x0BV[\x80a!\x19\x81aW\xA4V[\x91PPa \xB0V[P\x80\x15a!hW`\0\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[a!{a%gV[`\x01`\x01`\xA0\x1B\x03\x81\x16a!\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x08\xC6V[a\rN\x81a/)V[`\0`\x02\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xEA\xB6mz`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\"=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\"`\x91\x90aX\x1FV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\"\x90W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aX=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a%4\x91\x90aZ\x80V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15a%`Wa%`\x85a%[\x83`\x01`\x01`\xC0\x1B\x03\x16a#\xAEV[a*\xB7V[PPPPPV[3a%pa\x18gV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x18\x10W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x08\xC6V[`\x01`\x01`\xA0\x1B\x03\x81\x16a&TW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FPausable._setPauserRegistry: new`D\x82\x01R\x7FPauserRegistry cannot be the zer`d\x82\x01Rho address`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`\0T`@\x80Q`\x01`\x01`\xA0\x1B\x03b\x01\0\0\x90\x93\x04\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7Fn\x9F\xCDS\x98\x96\xFC\xA6\x0E\x8B\x0F\x01\xDDX\x023\xE4\x8Ak\x0F}\xF0\x13\xB8\x9B\xA7\xF5e\x86\x9A\xCD\xB6\x91\x01`@Q\x80\x91\x03\x90\xA1`\0\x80T`\x01`\x01`\xA0\x1B\x03\x90\x92\x16b\x01\0\0\x02b\x01\0\0`\x01`\xB0\x1B\x03\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x9DT`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F1TW\xD8\xA8\xFE`\xF0J\xF1|\x16\xE2\xF5\xA5\xE1\xDBa+1d\x8EX\x03\x03`u\x9E\xF8\xF3R\x8C\x91\x01`@Q\x80\x91\x03\x90\xA1`\x9D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x9ET`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\x8F0\xAB\t\xF4:l\x15}\x7F\xCE~\n\x13\xC0\x03\x04,\x1C\x95\xE8\xA7.z\x14j!\xC0\xCA\xA2M\xC9\x91\x01`@Q\x80\x91\x03\x90\xA1`\x9E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\0a\x0F\x19a'\xAAa?=V[\x83`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x83\x90R`B\x81\x01\x82\x90R`\0\x90`b\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0\x80\x80a(\x1B`\0\x80Q` a_\x80\x839\x81Q\x91R\x86aZ\xBFV[\x90P[a('\x81a@dV[\x90\x93P\x91P`\0\x80Q` a_\x80\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a(aW`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` a_\x80\x839\x81Q\x91R`\x01\x82\x08\x90Pa(\x1EV[`\0\x80a(\x87\x84a@\xE6V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a)\x05W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`?`$\x82\x01R\x7FBitmapUtils.orderedBytesArrayToB`D\x82\x01R\x7Fitmap: bitmap exceeds max value\0`d\x82\x01R`\x84\x01a\x08\xC6V[\x93\x92PPPV[`\x96T`\xFF\x90\x81\x16\x90\x82\x16\x10a\rNW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FRegistryCoordinator.quorumExists`D\x82\x01R\x7F: quorum does not exist\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x08\xC6V[`\xFF\x82\x16`\0\x81\x81R`\x97` \x90\x81R`@\x91\x82\x90 \x84Q\x81T\x86\x84\x01\x80Q\x88\x87\x01\x80Qc\xFF\xFF\xFF\xFF\x90\x95\x16e\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x94\x16\x84\x17`\x01` \x1Ba\xFF\xFF\x93\x84\x16\x02\x17g\xFF\xFF\0\0\0\0\0\0\x19\x16`\x01`0\x1B\x95\x83\x16\x95\x90\x95\x02\x94\x90\x94\x17\x90\x94U\x85Q\x91\x82RQ\x83\x16\x93\x81\x01\x93\x90\x93RQ\x16\x91\x81\x01\x91\x90\x91R\x7F>\xE6\xFE\x8DTa\x02D\xC3\xE9\xD3\xC0f\xAEJ\xEE\x99x\x84\xAA(\xF1\x06\x16\xAE\x82\x19%@\x13\x18\xAC\x90``\x01`@Q\x80\x91\x03\x90\xA2PPV[`\x9ET`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18\x10W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FRegistryCoordinator.onlyEjector:`D\x82\x01R\x7F caller is not the ejector\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x08\xC6V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` R`@\x90 \x80T`\x01\x80\x83\x01T`\xFF\x16`\x02\x81\x11\x15a*\xEBWa*\xEBaM\xF5V[\x14a+jW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R\x7FRegistryCoordinator._deregisterO`D\x82\x01R\x7Fperator: operator is not registe`d\x82\x01Rb\x1C\x99Y`\xEA\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`\x96T`\0\x90a+~\x90\x85\x90`\xFF\x16a({V[\x90P`\0a+\x8B\x83a#EV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a,\tW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`;`$\x82\x01R\x7FRegistryCoordinator._deregisterO`D\x82\x01R\x7Fperator: bitmap cannot be 0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x08\xC6V[a, `\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x16\x14\x90V[a,\xB8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`Y`$\x82\x01R\x7FRegistryCoordinator._deregisterO`D\x82\x01R\x7Fperator: operator is not registe`d\x82\x01R\x7Fred for specified quorums\0\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`\x01`\x01`\xC0\x1B\x03\x82\x81\x16\x19\x82\x16\x16a,\xD1\x84\x82aBsV[`\x01`\x01`\xC0\x1B\x03\x81\x16a-\xA0W`\x01\x85\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`@QcQ\xB2zm`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x88\x81\x16`\x04\x83\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xA3d\xF4\xDA\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a-QW`\0\x80\xFD[PZ\xF1\x15\x80\x15a-eW=`\0\x80>=`\0\xFD[PP`@Q\x86\x92P`\x01`\x01`\xA0\x1B\x03\x8A\x16\x91P\x7F9o\xDC\xB1\x80\xCB\x0F\xEA&\x92\x81\x13\xFB\x0F\xD1\xC3T\x98c\xF9\xCDV>j\x18O\x1DW\x81\x16\xC8\xE4\x90`\0\x90\xA3[`@Qc\xF4\xE2O\xE5`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xF4\xE2O\xE5\x90a-\xEE\x90\x8A\x90\x8A\x90`\x04\x01aZ\xD3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a.\x08W`\0\x80\xFD[PZ\xF1\x15\x80\x15a.\x1CW=`\0\x80>=`\0\xFD[PP`@Qc\xBD)\xB8\xCD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x92Pc\xBD)\xB8\xCD\x91Pa.n\x90\x87\x90\x8A\x90`\x04\x01aZ\xF7V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a.\x88W`\0\x80\xFD[PZ\xF1\x15\x80\x15a.\x9CW=`\0\x80>=`\0\xFD[PP`@Qc\xBD)\xB8\xCD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x92Pc\xBD)\xB8\xCD\x91Pa.\xEE\x90\x87\x90\x8A\x90`\x04\x01aZ\xF7V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a/\x08W`\0\x80\xFD[PZ\xF1\x15\x80\x15a/\x1CW=`\0\x80>=`\0\xFD[PPPPPPPPPPPV[`d\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x04\x83\x01R`\0\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90c\x13T*N\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a/\xE6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a0\n\x91\x90a[\x10V[\x90P\x80a\x0F\x19W\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xBFy\xCEX\x84\x84a0K\x87a\x0F\xCDV[`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a0i\x93\x92\x91\x90a[)V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a0\x88W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a)\x05\x91\x90a[\x10V[` \x80\x82\x01Q`\0\x90\x81R`\x9A\x90\x91R`@\x90 T`\xFF\x16\x15a1RW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`R`$\x82\x01R\x7FRegistryCoordinator._verifyChurn`D\x82\x01R\x7FApproverSignature: churnApprover`d\x82\x01Rq\x08\x1C\xD8[\x1D\x08\x18[\x1C\x99XY\x1EH\x1D\\\xD9Y`r\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[B\x81`@\x01Q\x10\x15a1\xE7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`R`$\x82\x01R\x7FRegistryCoordinator._verifyChurn`D\x82\x01R\x7FApproverSignature: churnApprover`d\x82\x01Rq\x08\x1C\xDAY\xDB\x98]\x1D\\\x99H\x19^\x1C\x1A\\\x99Y`r\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[` \x80\x82\x01\x80Q`\0\x90\x81R`\x9A\x90\x92R`@\x91\x82\x90 \x80T`\xFF\x19\x16`\x01\x17\x90U`\x9DT\x90Q\x91\x83\x01Qa\t\xAD\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91a22\x91\x88\x91\x88\x91\x88\x91\x90a\x18\x12V[\x83QaD3V[a2]`@Q\x80``\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`\0a2\xA5\x86\x86\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`\x96T`\xFF\x16\x91Pa({\x90PV[\x90P`\0a2\xB2\x88a#EV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a30W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`9`$\x82\x01R\x7FRegistryCoordinator._registerOpe`D\x82\x01R\x7Frator: bitmap cannot be 0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x08\xC6V[\x80\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x15a3\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`h`$\x82\x01R\x7FRegistryCoordinator._registerOpe`D\x82\x01R\x7Frator: operator already register`d\x82\x01R\x7Fed for some quorums being regist`\x84\x82\x01Rg2\xB92\xB2\x1037\xB9`\xC1\x1B`\xA4\x82\x01R`\xC4\x01a\x08\xC6V[`\xA0T`\x01`\x01`\xA0\x1B\x03\x8A\x16`\0\x90\x81R`\x9F` R`@\x90 T`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x85\x16\x17\x91B\x91a4\x1E\x91\x90aYVV[\x10a4\x9FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`E`$\x82\x01R\x7FRegistryCoordinator._registerOpe`D\x82\x01R\x7Frator: operator cannot reregiste`d\x82\x01Rd\x1C\x88\x1EY]`\xDA\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[a4\xA9\x89\x82aBsV[\x88\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x87`@Qa4\xD9\x91\x90aX\x0CV[`@Q\x80\x91\x03\x90\xA2`\x01`\x01`\x01`\xA0\x1B\x03\x8B\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a5\x13Wa5\x13aM\xF5V[\x14a6,W`@\x80Q\x80\x82\x01\x82R\x8A\x81R`\x01` \x80\x83\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x8F\x16`\0\x90\x81R`\x99\x90\x92R\x93\x90 \x82Q\x81U\x92Q\x83\x82\x01\x80T\x93\x94\x93\x91\x92\x90\x91`\xFF\x19\x16\x90\x83`\x02\x81\x11\x15a5nWa5naM\xF5V[\x02\x17\x90UPP`@Qc\x99&\xEE}`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x91Pc\x99&\xEE}\x90a5\xC3\x90\x8D\x90\x89\x90`\x04\x01a[\xA8V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a5\xDDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a5\xF1W=`\0\x80>=`\0\xFD[PP`@Q\x8B\x92P`\x01`\x01`\xA0\x1B\x03\x8D\x16\x91P\x7F\xE8\xE6\x8C\xEF\x1C:v\x1E\xD7\xBE~\x84c\xA3u\xF2\x7F{\xC35\xE5\x18$\"<\xAC\xCEcn\xC5\xC3\xFE\x90`\0\x90\xA3[`@Qc\x1F\xD9<\xA9`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c?\xB2yR\x90a6|\x90\x8D\x90\x8C\x90\x8C\x90`\x04\x01a\\\x1CV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a6\x96W`\0\x80\xFD[PZ\xF1\x15\x80\x15a6\xAAW=`\0\x80>=`\0\xFD[PP`@Qc%PGw`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x92Pc%PGw\x91Pa7\0\x90\x8D\x90\x8D\x90\x8D\x90\x8D\x90`\x04\x01a\\AV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a7\x1FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra7G\x91\x90\x81\x01\x90a\\\xCDV[`@\x80\x87\x01\x91\x90\x91R` \x86\x01\x91\x90\x91RQb\xBF\xF0M`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90b\xBF\xF0M\x90a7\xA4\x90\x8C\x90\x8C\x90\x8C\x90`\x04\x01a]0V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a7\xC3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra7\xEB\x91\x90\x81\x01\x90a]JV[\x84RPPP\x96\x95PPPPPPV[` \x80\x83\x01Q`\x01`\x01`\xA0\x1B\x03\x80\x82\x16`\0\x81\x81R`\x99\x90\x94R`@\x90\x93 T\x91\x92\x90\x87\x16\x14\x15a8zW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R`\0\x80Q` a_`\x839\x81Q\x91R`D\x82\x01Rt97\x1D\x101\xB0\xB777\xBA\x101\xB4:\xB97\x109\xB2\xB63`Y\x1B`d\x82\x01R`\x84\x01a\x08\xC6V[\x87`\xFF\x16\x84`\0\x01Q`\xFF\x16\x14a8\xF7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a_`\x839\x81Q\x91R`D\x82\x01R\x7Frn: quorumNumber not the same as`d\x82\x01Rf\x08\x1C\xDAY\xDB\x99Y`\xCA\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`@QcT\x01\xED'`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`\xFF\x89\x16`$\x82\x01R`\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90cT\x01\xED'\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a9hW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a9\x8C\x91\x90a]\xE3V[\x90Pa9\x98\x81\x85aE\xEDV[`\x01`\x01``\x1B\x03\x16\x86`\x01`\x01``\x1B\x03\x16\x11a:+W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R`\0\x80Q` a_`\x839\x81Q\x91R`D\x82\x01R\x7Frn: incoming operator has insuff`d\x82\x01Ru4\xB1\xB4\xB2\xB7:\x109\xBA0\xB5\xB2\x9037\xB9\x101\xB4:\xB97`Q\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[a:5\x88\x85aF\x11V[`\x01`\x01``\x1B\x03\x16\x81`\x01`\x01``\x1B\x03\x16\x10a!hW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R`\0\x80Q` a_`\x839\x81Q\x91R`D\x82\x01R\x7Frn: cannot kick operator with mo`d\x82\x01R\x7Fre than kickBIPsOfTotalStake\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`\0\x81\x81R`\x98` R`@\x81 T\x81[\x81\x81\x10\x15a;aW`\x01a:\xF4\x82\x84aZ9V[a:\xFE\x91\x90aZ9V[\x92P\x84c\xFF\xFF\xFF\xFF\x16`\x98`\0\x86\x81R` \x01\x90\x81R` \x01`\0 \x84c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a;1Wa;1aWxV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a;OWPPa\x0F\x19V[\x80a;Y\x81aW\xA4V[\x91PPa:\xE0V[P`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapIndexAtBlockNumber: no bitmap`d\x82\x01R\x7F update found for operatorId at `\x84\x82\x01Rk167\xB1\xB5\x907:\xB6\xB12\xB9`\xA1\x1B`\xA4\x82\x01R`\xC4\x01a\x08\xC6V[`\x96T`\xFF\x16`\xC0\x81\x10a<\x7FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FRegistryCoordinator.createQuorum`D\x82\x01Rt\x0E\x88\x1BX^\x08\x1C][\xDC\x9D[\\\xC8\x1C\x99XX\xDA\x19Y`Z\x1B`d\x82\x01R`\x84\x01a\x08\xC6V[a<\x8A\x81`\x01a^\0V[`\x96\x80T`\xFF\x19\x16`\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x80a<\xA9\x81\x86a)\x8AV[`@Q`\x01b\x96\xB5\x89`\xE0\x1B\x03\x19\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xFFiJw\x90a<\xFC\x90\x84\x90\x88\x90\x88\x90`\x04\x01a^%V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a=\x16W`\0\x80\xFD[PZ\xF1\x15\x80\x15a=*W=`\0\x80>=`\0\xFD[PP`@Qc\x13l\xA0\xF9`\xE1\x1B\x81R`\xFF\x84\x16`\x04\x82\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x92Pc&\xD9A\xF2\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a=\x92W`\0\x80\xFD[PZ\xF1\x15\x80\x15a=\xA6W=`\0\x80>=`\0\xFD[PP`@Qc\x13l\xA0\xF9`\xE1\x1B\x81R`\xFF\x84\x16`\x04\x82\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x92Pc&\xD9A\xF2\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a>\x0EW`\0\x80\xFD[PZ\xF1\x15\x80\x15a!hW=`\0\x80>=`\0\xFD[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a>IWP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a>\xCBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FPausable._initializePauser: _ini`D\x82\x01R\x7FtializePauser() can only be call`d\x82\x01Rfed once`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`\x01\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2a?\x0E\x82a%\xC6V[PPV[`\0\x80[\x82\x15a\x0F\x19Wa?'`\x01\x84aZ9V[\x90\x92\x16\x91\x80a?5\x81a^\x9EV[\x91PPa?\x16V[`\x000`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80\x15a?\x96WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0F\x14[\x15a?\xC0WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[P`@\x80Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x80\x83\x01\x91\x90\x91R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x84\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0``\x83\x01RF`\x80\x83\x01R0`\xA0\x80\x84\x01\x91\x90\x91R\x83Q\x80\x84\x03\x90\x91\x01\x81R`\xC0\x90\x92\x01\x90\x92R\x80Q\x91\x01 \x90V[`\0\x80\x80`\0\x80Q` a_\x80\x839\x81Q\x91R`\x03`\0\x80Q` a_\x80\x839\x81Q\x91R\x86`\0\x80Q` a_\x80\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0a@\xDA\x82\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R`\0\x80Q` a_\x80\x839\x81Q\x91RaF+V[\x91\x95\x91\x94P\x90\x92PPPV[`\0a\x01\0\x82Q\x11\x15aAoW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FBitmapUtils.orderedBytesArrayToB\x90\x82\x01R\x7Fitmap: orderedBytesArray is too `d\x82\x01Rclong`\xE0\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[\x81QaA}WP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10aA\x93WaA\x93aWxV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15aBjW\x84\x81\x81Q\x81\x10aA\xC1WaA\xC1aWxV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11aBVW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FBitmapUtils.orderedBytesArrayToB`D\x82\x01R\x7Fitmap: orderedBytesArray is not `d\x82\x01Rf\x1B\xDC\x99\x19\\\x99Y`\xCA\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[\x91\x81\x17\x91aBc\x81aW\xA4V[\x90PaA\xA6V[P\x90\x93\x92PPPV[`\0\x82\x81R`\x98` R`@\x90 T\x80aC\x18W`\0\x83\x81R`\x98` \x90\x81R`@\x80\x83 \x81Q``\x81\x01\x83Rc\xFF\xFF\xFF\xFFC\x81\x16\x82R\x81\x85\x01\x86\x81R`\x01`\x01`\xC0\x1B\x03\x80\x8A\x16\x95\x84\x01\x95\x86R\x84T`\x01\x81\x01\x86U\x94\x88R\x95\x90\x96 \x91Q\x91\x90\x92\x01\x80T\x95Q\x93Q\x90\x94\x16`\x01`@\x1B\x02`\x01`\x01`@\x1B\x03\x93\x83\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x96\x16\x91\x90\x92\x16\x17\x93\x90\x93\x17\x16\x91\x90\x91\x17\x90UPPPV[`\0\x83\x81R`\x98` R`@\x81 aC1`\x01\x84aZ9V[\x81T\x81\x10aCAWaCAaWxV[`\0\x91\x82R` \x90\x91 \x01\x80T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15aC\x85W\x80T`\x01`\x01`@\x1B\x03\x16`\x01`@\x1B`\x01`\x01`\xC0\x1B\x03\x85\x16\x02\x17\x81Ua\t\xADV[\x80Tc\xFF\xFF\xFF\xFFC\x81\x16`\x01` \x1B\x81\x81\x02g\xFF\xFF\xFF\xFF\0\0\0\0\x19\x90\x94\x16\x93\x90\x93\x17\x84U`\0\x87\x81R`\x98` \x90\x81R`@\x80\x83 \x81Q``\x81\x01\x83R\x94\x85R\x84\x83\x01\x84\x81R`\x01`\x01`\xC0\x1B\x03\x80\x8C\x16\x93\x87\x01\x93\x84R\x82T`\x01\x81\x01\x84U\x92\x86R\x93\x90\x94 \x94Q\x94\x01\x80T\x93Q\x91Q\x90\x92\x16`\x01`@\x1B\x02`\x01`\x01`@\x1B\x03\x91\x86\x16\x90\x96\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x93\x16\x93\x90\x94\x16\x92\x90\x92\x17\x17\x91\x90\x91\x16\x91\x90\x91\x17\x90UPPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16;\x15aEMW`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aDs\x90\x86\x90\x86\x90`\x04\x01aZ\xF7V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aD\x90W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aD\xB4\x91\x90a^\xC0V[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x16\xB9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`S`$\x82\x01R\x7FEIP1271SignatureUtils.checkSigna`D\x82\x01R\x7Fture_EIP1271: ERC1271 signature `d\x82\x01Rr\x1D\x99\\\x9AY\x9AX\xD8]\x1A[\xDB\x88\x19\x98Z[\x19Y`j\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[\x82`\x01`\x01`\xA0\x1B\x03\x16aEa\x83\x83aF\xDAV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x16\xB9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FEIP1271SignatureUtils.checkSigna`D\x82\x01R\x7Fture_EIP1271: signature not from`d\x82\x01Rf\x109\xB4\xB3\xB72\xB9`\xC9\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[` \x81\x01Q`\0\x90a'\x10\x90aF\x07\x90a\xFF\xFF\x16\x85a^\xEAV[a)\x05\x91\x90a_\x19V[`@\x81\x01Q`\0\x90a'\x10\x90aF\x07\x90a\xFF\xFF\x16\x85a^\xEAV[`\0\x80aF6aJGV[aF>aJeV[` \x80\x82R\x81\x81\x01\x81\x90R`@\x82\x01\x81\x90R``\x82\x01\x88\x90R`\x80\x82\x01\x87\x90R`\xA0\x82\x01\x86\x90R\x82`\xC0\x83`\x05a\x07\xD0Z\x03\xFA\x92P\x82\x80\x15aF\x7FWaF\x81V[\xFE[P\x82aF\xCFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7FBN254.expMod: call failure\0\0\0\0\0\0`D\x82\x01R`d\x01a\x08\xC6V[PQ\x95\x94PPPPPV[`\0\x80`\0aF\xE9\x85\x85aF\xF6V[\x91P\x91Pa\x1D\xED\x81aGfV[`\0\x80\x82Q`A\x14\x15aG-W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaG!\x87\x82\x85\x85aI!V[\x94P\x94PPPPaG_V[\x82Q`@\x14\x15aGWW` \x83\x01Q`@\x84\x01QaGL\x86\x83\x83aJ\x0EV[\x93P\x93PPPaG_V[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aGzWaGzaM\xF5V[\x14\x15aG\x83WPV[`\x01\x81`\x04\x81\x11\x15aG\x97WaG\x97aM\xF5V[\x14\x15aG\xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FECDSA: invalid signature\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x08\xC6V[`\x02\x81`\x04\x81\x11\x15aG\xF9WaG\xF9aM\xF5V[\x14\x15aHGW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x08\xC6V[`\x03\x81`\x04\x81\x11\x15aH[WaH[aM\xF5V[\x14\x15aH\xB4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 's' val`D\x82\x01Raue`\xF0\x1B`d\x82\x01R`\x84\x01a\x08\xC6V[`\x04\x81`\x04\x81\x11\x15aH\xC8WaH\xC8aM\xF5V[\x14\x15a\rNW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 'v' val`D\x82\x01Raue`\xF0\x1B`d\x82\x01R`\x84\x01a\x08\xC6V[`\0\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x83\x11\x15aIXWP`\0\x90P`\x03aJ\x05V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aIpWP\x84`\xFF\x16`\x1C\x14\x15[\x15aI\x81WP`\0\x90P`\x04aJ\x05V[`@\x80Q`\0\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15aI\xD5W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aI\xFEW`\0`\x01\x92P\x92PPaJ\x05V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aJ+`\xFF\x86\x90\x1C`\x1BaYVV[\x90PaJ9\x87\x82\x88\x85aI!V[\x93P\x93PPP\x93P\x93\x91PPV[`@Q\x80` \x01`@R\x80`\x01\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\xC0\x01`@R\x80`\x06\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`\0\x80\x83`\x1F\x84\x01\x12aJ\x95W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aJ\xACW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aG_W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aJ\xDAW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aJ\xF0W`\0\x80\xFD[aJ\xFC\x85\x82\x86\x01aJ\x83V[\x90\x96\x90\x95P\x93PPPPV[`\0` \x82\x84\x03\x12\x15aK\x1AW`\0\x80\xFD[P5\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\rNW`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15aKHW`\0\x80\xFD[\x835\x92P` \x84\x015aKZ\x81aK!V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aK\xA3WaK\xA3aKkV[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aK\xA3WaK\xA3aKkV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aK\xF3WaK\xF3aKkV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x83\x11\x15aL\x14WaL\x14aKkV[aL'`\x1F\x84\x01`\x1F\x19\x16` \x01aK\xCBV[\x90P\x82\x81R\x83\x83\x83\x01\x11\x15aL;W`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15aLdW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aLzW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aL\x8BW`\0\x80\xFD[aL\x9A\x84\x825` \x84\x01aK\xFBV[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\rNW`\0\x80\xFD[\x805aL\xC2\x81aL\xA2V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15aL\xD9W`\0\x80\xFD[\x815a)\x05\x81aL\xA2V[`\0\x80`@\x83\x85\x03\x12\x15aL\xF7W`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[\x805`\xFF\x81\x16\x81\x14aL\xC2W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aM)W`\0\x80\xFD[a)\x05\x82aM\x06V[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x0F\x19V[`\0\x80\x83`\x1F\x84\x01\x12aM[W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aMrW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aG_W`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aM\xA0W`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aM\xB7W`\0\x80\xFD[aM\xC3\x88\x83\x89\x01aJ\x83V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aM\xDCW`\0\x80\xFD[PaM\xE9\x87\x82\x88\x01aMIV[\x95\x98\x94\x97P\x95PPPPV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`\x03\x81\x10aN)WcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[\x81Q\x81R` \x80\x83\x01Q`@\x83\x01\x91aNH\x90\x84\x01\x82aN\x0BV[P\x92\x91PPV[\x805a\xFF\xFF\x81\x16\x81\x14aL\xC2W`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aNsW`\0\x80\xFD[aN{aK\x81V[\x90P\x815aN\x88\x81aK!V[\x81RaN\x96` \x83\x01aNOV[` \x82\x01RaN\xA7`@\x83\x01aNOV[`@\x82\x01R\x92\x91PPV[`\0\x80`\x80\x83\x85\x03\x12\x15aN\xC5W`\0\x80\xFD[aN\xCE\x83aM\x06V[\x91PaN\xDD\x84` \x85\x01aNaV[\x90P\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15aN\xFBW`\0\x80\xFD[\x835aO\x06\x81aL\xA2V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aO!W`\0\x80\xFD[aO-\x86\x82\x87\x01aMIV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aOSWaOSaKkV[P`\x05\x1B` \x01\x90V[`\0`@\x82\x84\x03\x12\x15aOoW`\0\x80\xFD[aOwaK\xA9V[\x90PaO\x82\x82aM\x06V[\x81R` \x82\x015aO\x92\x81aL\xA2V[` \x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aO\xB5W`\0\x80\xFD[\x855aO\xC0\x81aL\xA2V[\x94P` \x86\x81\x015\x94P`@\x80\x88\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aO\xE4W`\0\x80\xFD[\x88\x01`\x1F\x81\x01\x8A\x13aO\xF5W`\0\x80\xFD[\x805aP\x08aP\x03\x82aO:V[aK\xCBV[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x84\x01\x90\x84\x81\x01\x90\x8C\x83\x11\x15aP'W`\0\x80\xFD[\x92\x85\x01\x92[\x82\x84\x10\x15aPMWaP>\x8D\x85aO]V[\x82R\x92\x84\x01\x92\x90\x85\x01\x90aP,V[\x99\x9C\x98\x9BP\x98\x99``\x81\x015\x99P`\x80\x015\x97\x96PPPPPPPV[`\0a\x01\0\x82\x84\x03\x12\x15aP}W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aP\x95W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aP\xACW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x06\x1B\x85\x01\x01\x11\x15aG_W`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aP\xD9W`\0\x80\xFD[aP\xE1aK\x81V[\x90P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aP\xF9W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aQ\nW`\0\x80\xFD[aQ\x19\x84\x825` \x84\x01aK\xFBV[\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01\xA0\x8A\x8C\x03\x12\x15aQUW`\0\x80\xFD[\x895`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aQlW`\0\x80\xFD[aQx\x8D\x83\x8E\x01aMIV[\x90\x9BP\x99P` \x8C\x015\x91P\x80\x82\x11\x15aQ\x91W`\0\x80\xFD[aQ\x9D\x8D\x83\x8E\x01aMIV[\x90\x99P\x97P\x87\x91PaQ\xB2\x8D`@\x8E\x01aPjV[\x96Pa\x01@\x8C\x015\x91P\x80\x82\x11\x15aQ\xC9W`\0\x80\xFD[aQ\xD5\x8D\x83\x8E\x01aP\x83V[\x90\x96P\x94Pa\x01`\x8C\x015\x91P\x80\x82\x11\x15aQ\xEFW`\0\x80\xFD[aQ\xFB\x8D\x83\x8E\x01aP\xC7V[\x93Pa\x01\x80\x8C\x015\x91P\x80\x82\x11\x15aR\x12W`\0\x80\xFD[PaR\x1F\x8C\x82\x8D\x01aP\xC7V[\x91PP\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80a\x01`\x87\x89\x03\x12\x15aRIW`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aR`W`\0\x80\xFD[aRl\x8A\x83\x8B\x01aMIV[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15aR\x85W`\0\x80\xFD[aR\x91\x8A\x83\x8B\x01aMIV[\x90\x96P\x94P\x84\x91PaR\xA6\x8A`@\x8B\x01aPjV[\x93Pa\x01@\x89\x015\x91P\x80\x82\x11\x15aR\xBDW`\0\x80\xFD[PaR\xCA\x89\x82\x8A\x01aP\xC7V[\x91PP\x92\x95P\x92\x95P\x92\x95V[`\0\x80`@\x83\x85\x03\x12\x15aR\xEAW`\0\x80\xFD[\x825aR\xF5\x81aK!V[\x91P` \x83\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aS\x11W`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13aS\"W`\0\x80\xFD[\x805aS0aP\x03\x82aO:V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15aSOW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15aSmW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90aSTV[\x80\x95PPPPPP\x92P\x92\x90PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15aS\xBAW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aS\x98V[P\x90\x96\x95PPPPPPV[`\0\x80` \x83\x85\x03\x12\x15aS\xD9W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aS\xEFW`\0\x80\xFD[aJ\xFC\x85\x82\x86\x01aMIV[`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\rNW`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12aT!W`\0\x80\xFD[\x815` aT1aP\x03\x83aO:V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aTPW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aT\xA1W`@\x81\x89\x03\x12\x15aTmW`\0\x80\x81\xFD[aTuaK\xA9V[\x815aT\x80\x81aL\xA2V[\x81R\x81\x85\x015aT\x8F\x81aS\xFBV[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01aTTV[P\x96\x95PPPPPPV[`\0\x80`\0`\xA0\x84\x86\x03\x12\x15aT\xC1W`\0\x80\xFD[aT\xCB\x85\x85aNaV[\x92P``\x84\x015aT\xDB\x81aS\xFBV[\x91P`\x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aT\xF6W`\0\x80\xFD[aU\x02\x86\x82\x87\x01aT\x10V[\x91PP\x92P\x92P\x92V[`\0\x82`\x1F\x83\x01\x12aU\x1DW`\0\x80\xFD[\x815` aU-aP\x03\x83aO:V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15aULW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15aUoWaUb\x89\x82aNaV[\x84R\x92\x84\x01\x92\x81\x01aUPV[P\x90\x97\x96PPPPPPPV[`\0\x82`\x1F\x83\x01\x12aU\x8DW`\0\x80\xFD[\x815` aU\x9DaP\x03\x83aO:V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aU\xBCW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aT\xA1W\x805aU\xD3\x81aS\xFBV[\x83R\x91\x83\x01\x91\x83\x01aU\xC0V[`\0\x82`\x1F\x83\x01\x12aU\xF1W`\0\x80\xFD[\x815` aV\x01aP\x03\x83aO:V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aV W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aT\xA1W\x805`\x01`\x01`@\x1B\x03\x81\x11\x15aVCW`\0\x80\x81\xFD[aVQ\x89\x86\x83\x8B\x01\x01aT\x10V[\x84RP\x91\x83\x01\x91\x83\x01aV$V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15aV|W`\0\x80\xFD[aV\x85\x89aL\xB7V[\x97PaV\x93` \x8A\x01aL\xB7V[\x96PaV\xA1`@\x8A\x01aL\xB7V[\x95PaV\xAF``\x8A\x01aL\xB7V[\x94P`\x80\x89\x015\x93P`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aV\xD2W`\0\x80\xFD[aV\xDE\x8C\x83\x8D\x01aU\x0CV[\x94P`\xC0\x8B\x015\x91P\x80\x82\x11\x15aV\xF4W`\0\x80\xFD[aW\0\x8C\x83\x8D\x01aU|V[\x93P`\xE0\x8B\x015\x91P\x80\x82\x11\x15aW\x16W`\0\x80\xFD[PaW#\x8B\x82\x8C\x01aU\xE0V[\x91PP\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[` \x81\x01a\x0F\x19\x82\x84aN\x0BV[` \x80\x82R`\x19\x90\x82\x01R\x7FPausable: index is paused\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15aW\xB8WaW\xB8aW\x8EV[P`\x01\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15aW\xE5W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01aW\xC9V[\x81\x81\x11\x15aW\xF7W`\0` \x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a)\x05` \x83\x01\x84aW\xBFV[`\0` \x82\x84\x03\x12\x15aX1W`\0\x80\xFD[\x81Qa)\x05\x81aL\xA2V[` \x80\x82R`*\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Ri9\x90:\xB780\xBA\xB9\xB2\xB9`\xB1\x1B``\x82\x01R`\x80\x01\x90V[`\0` \x82\x84\x03\x12\x15aX\x98W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a)\x05W`\0\x80\xFD[` \x80\x82R`(\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Rg9\x9080\xBA\xB9\xB2\xB9`\xC1\x1B``\x82\x01R`\x80\x01\x90V[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aY\x07W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aY!W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aG_W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aYKW`\0\x80\xFD[\x81Qa)\x05\x81aK!V[`\0\x82\x19\x82\x11\x15aYiWaYiaW\x8EV[P\x01\x90V[`\0\x80\x85\x85\x11\x15aY~W`\0\x80\xFD[\x83\x86\x11\x15aY\x8BW`\0\x80\xFD[PP\x82\x01\x93\x91\x90\x92\x03\x91PV[`\0`\xC0\x82\x01\x88\x83R` `\x01\x80`\xA0\x1B\x03\x80\x8A\x16\x82\x86\x01R`@\x89\x81\x87\x01R`\xC0``\x87\x01R\x83\x89Q\x80\x86R`\xE0\x88\x01\x91P\x84\x8B\x01\x95P`\0[\x81\x81\x10\x15aY\xFDW\x86Q\x80Q`\xFF\x16\x84R\x86\x01Q\x85\x16\x86\x84\x01R\x95\x85\x01\x95\x91\x83\x01\x91`\x01\x01aY\xD3V[PP`\x80\x87\x01\x98\x90\x98RPPPP`\xA0\x90\x91\x01\x91\x90\x91RP\x94\x93PPPPV[`\0`@\x82\x84\x03\x12\x15aZ/W`\0\x80\xFD[a)\x05\x83\x83aO]V[`\0\x82\x82\x10\x15aZKWaZKaW\x8EV[P\x03\x90V[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\0aZw``\x83\x01\x84aW\xBFV[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15aZ\x92W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a)\x05W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aZ\xCEWaZ\xCEaZ\xA9V[P\x06\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\0\x90aL\x9A\x90\x83\x01\x84aW\xBFV[\x82\x81R`@` \x82\x01R`\0aL\x9A`@\x83\x01\x84aW\xBFV[`\0` \x82\x84\x03\x12\x15a[\"W`\0\x80\xFD[PQ\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81Ra\x01`\x81\x01a[Q` \x83\x01\x85\x805\x82R` \x90\x81\x015\x91\x01RV[a[k``\x83\x01`@\x86\x01\x805\x82R` \x90\x81\x015\x91\x01RV[`@`\x80\x85\x01`\xA0\x84\x017`\xE0\x82\x01`\0\x81R`@`\xC0\x86\x01\x827P`\0a\x01 \x83\x01\x90\x81R\x83Q\x90R` \x90\x92\x01Qa\x01@\x90\x91\x01R\x92\x91PPV[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01R`\0\x82Q```@\x84\x01Ra[\xD2`\xA0\x84\x01\x82aW\xBFV[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[\x81\x83R\x81\x81` \x85\x017P`\0\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\0\x90aZw\x90\x83\x01\x84\x86a[\xF3V[`\x01\x80`\xA0\x1B\x03\x85\x16\x81R\x83` \x82\x01R```@\x82\x01R`\0a\x18R``\x83\x01\x84\x86a[\xF3V[`\0\x82`\x1F\x83\x01\x12a\\zW`\0\x80\xFD[\x81Q` a\\\x8AaP\x03\x83aO:V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\\\xA9W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aT\xA1W\x80Qa\\\xC0\x81aS\xFBV[\x83R\x91\x83\x01\x91\x83\x01a\\\xADV[`\0\x80`@\x83\x85\x03\x12\x15a\\\xE0W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\\\xF7W`\0\x80\xFD[a]\x03\x86\x83\x87\x01a\\iV[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15a]\x19W`\0\x80\xFD[Pa]&\x85\x82\x86\x01a\\iV[\x91PP\x92P\x92\x90PV[\x83\x81R`@` \x82\x01R`\0aZw`@\x83\x01\x84\x86a[\xF3V[`\0` \x80\x83\x85\x03\x12\x15a]]W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a]sW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a]\x84W`\0\x80\xFD[\x80Qa]\x92aP\x03\x82aO:V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a]\xB1W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a]\xD8W\x83Qa]\xC9\x81aK!V[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a]\xB6V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a]\xF5W`\0\x80\xFD[\x81Qa)\x05\x81aS\xFBV[`\0`\xFF\x82\x16`\xFF\x84\x16\x80`\xFF\x03\x82\x11\x15a^\x1DWa^\x1DaW\x8EV[\x01\x93\x92PPPV[`\0``\x82\x01`\xFF\x86\x16\x83R` `\x01`\x01``\x1B\x03\x80\x87\x16\x82\x86\x01R`@``\x81\x87\x01R\x83\x87Q\x80\x86R`\x80\x88\x01\x91P\x84\x89\x01\x95P`\0[\x81\x81\x10\x15a^\x8EW\x86Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x86\x01Q\x85\x16\x86\x84\x01R\x95\x85\x01\x95\x91\x83\x01\x91`\x01\x01a^^V[P\x90\x9A\x99PPPPPPPPPPV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a^\xB6Wa^\xB6aW\x8EV[`\x01\x01\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a^\xD2W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a)\x05W`\0\x80\xFD[`\0`\x01`\x01``\x1B\x03\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15a_\x10Wa_\x10aW\x8EV[\x02\x94\x93PPPPV[`\0`\x01`\x01``\x1B\x03\x80\x84\x16\x80a_3Wa_3aZ\xA9V[\x92\x16\x91\x90\x91\x04\x92\x91PPV\xFERegistryCoordinator.updateOperatRegistryCoordinator._validateChu0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\xA2dipfsX\"\x12 t\x91\xACv\xA1\xCD\x7F\xCE\x1D-\x0C\xD9\x06uM^\xFD\xF63Z\r\xCB\xFE\xDA&\x92BMw{JJdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106102d55760003560e01c80635df45946116101825780639feab859116100e9578063d72d8dd6116100a2578063e65797ad1161007c578063e65797ad14610798578063f2fde38b1461083b578063fabc1cbc1461084e578063fd39105a1461086157600080fd5b8063d72d8dd61461076a578063d75b4c8814610772578063dd8283f31461078557600080fd5b80639feab859146106cd578063a50857bf146106f4578063a96f783e14610707578063c391425e14610710578063ca0de88214610730578063ca4f2d971461075757600080fd5b8063871ef0491161013b578063871ef04914610640578063886f1195146106535780638da5cb5b1461066c5780639aa1653d146106745780639b5d177b146106935780639e9923c2146106a657600080fd5b80635df45946146105b15780636347c900146105d857806368304835146105eb5780636e3b17db14610612578063715018a61461062557806384ca52131461062d57600080fd5b8063249a0c42116102415780633c2a7f4c116101fa578063595c6a67116101d4578063595c6a671461056f5780635ac86ab7146105775780635b0b829f146105965780635c975abb146105a957600080fd5b80633c2a7f4c1461051c5780635140a5481461053c5780635865c60c1461054f57600080fd5b8063249a0c421461048957806328f61b31146104a9578063296bb064146104bc57806329d1e0c3146104cf5780632cdd1e86146104e25780633998fdd3146104f557600080fd5b806310d67a2f1161029357806310d67a2f1461039e578063125e0584146103b157806313542a4e146103d1578063136439dd146103fa5780631478851f1461040d5780631eb812da1461044057600080fd5b8062cf2ab5146102da57806303fd3492146102ef57806304ec635114610322578063054310e61461034d5780630cf4b767146103785780630d3f21341461038b575b600080fd5b6102ed6102e8366004614ac7565b61089d565b005b61030f6102fd366004614b08565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b610335610330366004614b33565b6109b3565b6040516001600160c01b039091168152602001610319565b609d54610360906001600160a01b031681565b6040516001600160a01b039091168152602001610319565b6102ed610386366004614c52565b610ba9565b6102ed610399366004614b08565b610c91565b6102ed6103ac366004614cc7565b610c9e565b61030f6103bf366004614cc7565b609f6020526000908152604090205481565b61030f6103df366004614cc7565b6001600160a01b031660009081526099602052604090205490565b6102ed610408366004614b08565b610d51565b61043061041b366004614b08565b609a6020526000908152604090205460ff1681565b6040519015158152602001610319565b61045361044e366004614ce4565b610e8e565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b031690820152606001610319565b61030f610497366004614d17565b609b6020526000908152604090205481565b609e54610360906001600160a01b031681565b6103606104ca366004614b08565b610f1f565b6102ed6104dd366004614cc7565b610fab565b6102ed6104f0366004614cc7565b610fbc565b6103607f000000000000000000000000000000000000000000000000000000000000000081565b61052f61052a366004614cc7565b610fcd565b6040516103199190614d32565b6102ed61054a366004614d8a565b61104c565b61056261055d366004614cc7565b61155d565b6040516103199190614e2d565b6102ed6115d1565b610430610585366004614d17565b6001805460ff9092161b9081161490565b6102ed6105a4366004614eb2565b61169d565b60015461030f565b6103607f000000000000000000000000000000000000000000000000000000000000000081565b6103606105e6366004614b08565b6116be565b6103607f000000000000000000000000000000000000000000000000000000000000000081565b6102ed610620366004614ee6565b6116e8565b6102ed6117fe565b61030f61063b366004614f9d565b611812565b61033561064e366004614b08565b61185c565b600054610360906201000090046001600160a01b031681565b610360611867565b6096546106819060ff1681565b60405160ff9091168152602001610319565b6102ed6106a1366004615136565b611880565b6103607f000000000000000000000000000000000000000000000000000000000000000081565b61030f7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6102ed61070236600461522f565b611bb8565b61030f60a05481565b61072361071e3660046152d7565b611d3c565b604051610319919061537c565b61030f7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6102ed6107653660046153c6565b611df5565b609c5461030f565b6102ed6107803660046154ac565b611e5c565b6102ed61079336600461565f565b611e6f565b6108076107a6366004614d17565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff908116918301919091529282015190921690820152606001610319565b6102ed610849366004614cc7565b612173565b6102ed61085c366004614b08565b6121e9565b61089061086f366004614cc7565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516103199190615733565b600154600290600490811614156108cf5760405162461bcd60e51b81526004016108c690615741565b60405180910390fd5b60005b828110156109ad5760008484838181106108ee576108ee615778565b90506020020160208101906109039190614cc7565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff16600281111561094e5761094e614df5565b600281111561095f5761095f614df5565b9052508051909150600061097282612345565b90506000610988826001600160c01b03166123ae565b905061099585858361247a565b505050505080806109a5906157a4565b9150506108d2565b50505050565b60008381526098602052604081208054829190849081106109d6576109d6615778565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610ad05760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c4016108c6565b602081015163ffffffff161580610af65750806020015163ffffffff168463ffffffff16105b610b9d5760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c4016108c6565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610bd257610bd2614df5565b14610c455760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f7420726567697374657265640000000060648201526084016108c6565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610c8690849061580c565b60405180910390a250565b610c99612567565b60a055565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d15919061581f565b6001600160a01b0316336001600160a01b031614610d455760405162461bcd60e51b81526004016108c69061583c565b610d4e816125c6565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc29190615886565b610dde5760405162461bcd60e51b81526004016108c6906158a8565b60015481811614610e575760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016108c6565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610c86565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610ecb57610ecb615778565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f19919061581f565b610fb3612567565b610d4e816126cb565b610fc4612567565b610d4e81612734565b6040805180820190915260008082526020820152610f196110477f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de68460405160200161102c9291909182526001600160a01b0316602082015260400190565b6040516020818303038152906040528051906020012061279d565b6127eb565b600154600290600490811614156110755760405162461bcd60e51b81526004016108c690615741565b60006110bd84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff16915061287b9050565b905084831461112e5760405162461bcd60e51b81526020600482015260436024820152600080516020615f4083398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a4016108c6565b60005b8381101561155457600085858381811061114d5761114d615778565b919091013560f81c9150369050600089898581811061116e5761116e615778565b905060200281019061118091906158f0565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa1580156111ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112109190615939565b63ffffffff1681146112ac5760405162461bcd60e51b81526020600482015260656024820152600080516020615f4083398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c4016108c6565b6000805b828110156114f35760008484838181106112cc576112cc615778565b90506020020160208101906112e19190614cc7565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff16600281111561132c5761132c614df5565b600281111561133d5761133d614df5565b9052508051909150600061135082612345565b905060016001600160c01b03821660ff8b161c8116146113d45760405162461bcd60e51b815260206004820152604460248201819052600080516020615f40833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a4016108c6565b856001600160a01b0316846001600160a01b03161161147f5760405162461bcd60e51b81526020600482015260676024820152600080516020615f4083398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c4016108c6565b506114dd83838f8f8d908e60016114969190615956565b926114a39392919061596e565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061247a92505050565b509092506114ec9050816157a4565b90506112b0565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a2505050508061154d906157a4565b9050611131565b50505050505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff1660028111156115b7576115b7614df5565b60028111156115c8576115c8614df5565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561161e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116429190615886565b61165e5760405162461bcd60e51b81526004016108c6906158a8565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6116a5612567565b816116af8161290c565b6116b9838361298a565b505050565b609c81815481106116ce57600080fd5b6000918252602090912001546001600160a01b0316905081565b6116f0612a37565b6001600160a01b0383166000908152609f602090815260408083204290556099825280832080548251601f870185900485028101850190935285835290939092909161175d9187908790819084018382808284376000920191909152505060965460ff16915061287b9050565b9050600061176a83612345565b905060018085015460ff16600281111561178657611786614df5565b14801561179b57506001600160c01b03821615155b80156117b957506117b96001600160c01b0383811690831681161490565b15611554576115548787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ab792505050565b611806612567565b6118106000612f29565b565b60006118527f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a878787878760405160200161102c96959493929190615998565b9695505050505050565b6000610f1982612345565b600061187b6064546001600160a01b031690565b905090565b6001805460009190811614156118a85760405162461bcd60e51b81526004016108c690615741565b83891461192b5760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a4016108c6565b60006119373388612f7b565b905061199733828888808060200260200160405190810160405280939291908181526020016000905b8282101561198c5761197d60408302860136819003810190615a1d565b81526020019060010190611960565b5050505050876130ac565b60006119de33838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613239915050565b905060005b8b811015611ba9576000609760008f8f85818110611a0357611a03615778565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b90910490931691810191909152845180519193509084908110611a7057611a70615778565b602002602001015163ffffffff161115611b9657611b118e8e84818110611a9957611a99615778565b9050013560f81c60f81b60f81c84604001518481518110611abc57611abc615778565b60200260200101513386602001518681518110611adb57611adb615778565b60200260200101518d8d88818110611af557611af5615778565b905060400201803603810190611b0b9190615a1d565b866137fa565b611b96898984818110611b2657611b26615778565b9050604002016020016020810190611b3e9190614cc7565b8f8f8590866001611b4f9190615956565b92611b5c9392919061596e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ab792505050565b5080611ba1816157a4565b9150506119e3565b50505050505050505050505050565b600180546000919081161415611be05760405162461bcd60e51b81526004016108c690615741565b6000611bec3385612f7b565b90506000611c3533838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613239915050565b51905060005b88811015611d305760008a8a83818110611c5757611c57615778565b919091013560f81c600081815260976020526040902054855191935063ffffffff169150849084908110611c8d57611c8d615778565b602002602001015163ffffffff161115611d1d5760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a4016108c6565b5080611d28816157a4565b915050611c3b565b50505050505050505050565b6060600082516001600160401b03811115611d5957611d59614b6b565b604051908082528060200260200182016040528015611d82578160200160208202803683370190505b50905060005b8351811015611ded57611db485858381518110611da757611da7615778565b6020026020010151613acf565b828281518110611dc657611dc6615778565b63ffffffff9092166020928302919091019091015280611de5816157a4565b915050611d88565b509392505050565b6001805460029081161415611e1c5760405162461bcd60e51b81526004016108c690615741565b6116b93384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ab792505050565b611e64612567565b6116b9838383613c0b565b600054610100900460ff1615808015611e8f5750600054600160ff909116105b80611ea95750303b158015611ea9575060005460ff166001145b611f0c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108c6565b6000805460ff191660011790558015611f2f576000805461ff0019166101001790555b82518451148015611f41575081518351145b611fab5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b60648201526084016108c6565b611fb489612f29565b611fbe8686613e22565b611fc7886126cb565b611fd087612734565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b84518110156121215761210f8582815181106120ce576120ce615778565b60200260200101518583815181106120e8576120e8615778565b602002602001015185848151811061210257612102615778565b6020026020010151613c0b565b80612119816157a4565b9150506120b0565b508015612168576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b61217b612567565b6001600160a01b0381166121e05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108c6565b610d4e81612f29565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561223c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612260919061581f565b6001600160a01b0316336001600160a01b0316146122905760405162461bcd60e51b81526004016108c69061583c565b60015419811960015419161461230e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016108c6565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610c86565b600081815260986020526040812054806123625750600092915050565b600083815260986020526040902061237b600183615a39565b8154811061238b5761238b615778565b600091825260209091200154600160401b90046001600160c01b03169392505050565b60606000806123bc84613f12565b61ffff166001600160401b038111156123d7576123d7614b6b565b6040519080825280601f01601f191660200182016040528015612401576020820181803683370190505b5090506000805b825182108015612419575061010081105b15612470576001811b935085841615612460578060f81b83838151811061244257612442615778565b60200101906001600160f81b031916908160001a9053508160010191505b612469816157a4565b9050612408565b5090949350505050565b60018260200151600281111561249257612492614df5565b1461249c57505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe906124f190889086908890600401615a50565b6020604051808303816000875af1158015612510573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125349190615a80565b90506001600160c01b03811615612560576125608561255b836001600160c01b03166123ae565b612ab7565b5050505050565b33612570611867565b6001600160a01b0316146118105760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b6001600160a01b0381166126545760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016108c6565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610f196127aa613f3d565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60408051808201909152600080825260208201526000808061281b600080516020615f8083398151915286615abf565b90505b61282781614064565b9093509150600080516020615f80833981519152828309831415612861576040805180820190915290815260208101919091529392505050565b600080516020615f8083398151915260018208905061281e565b600080612887846140e6565b9050808360ff166001901b116129055760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c75650060648201526084016108c6565b9392505050565b60965460ff90811690821610610d4e5760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f7420657869737400000000000000000060648201526084016108c6565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b609e546001600160a01b031633146118105760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f7200000000000060648201526084016108c6565b6001600160a01b0382166000908152609960205260409020805460018083015460ff166002811115612aeb57612aeb614df5565b14612b6a5760405162461bcd60e51b815260206004820152604360248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a4016108c6565b609654600090612b7e90859060ff1661287b565b90506000612b8b83612345565b90506001600160c01b038216612c095760405162461bcd60e51b815260206004820152603b60248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206269746d61702063616e6e6f742062652030000000000060648201526084016108c6565b612c206001600160c01b0383811690831681161490565b612cb85760405162461bcd60e51b815260206004820152605960248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a4016108c6565b6001600160c01b0382811619821616612cd18482614273565b6001600160c01b038116612da05760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015612d5157600080fd5b505af1158015612d65573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590612dee908a908a90600401615ad3565b600060405180830381600087803b158015612e0857600080fd5b505af1158015612e1c573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612e6e9087908a90600401615af7565b600060405180830381600087803b158015612e8857600080fd5b505af1158015612e9c573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612eee9087908a90600401615af7565b600060405180830381600087803b158015612f0857600080fd5b505af1158015612f1c573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015612fe6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300a9190615b10565b905080610f19577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce58848461304b87610fcd565b6040518463ffffffff1660e01b815260040161306993929190615b29565b6020604051808303816000875af1158015613088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129059190615b10565b6020808201516000908152609a909152604090205460ff16156131525760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a4016108c6565b42816040015110156131e75760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a4016108c6565b602080820180516000908152609a909252604091829020805460ff19166001179055609d549051918301516109ad926001600160a01b03909216916132329188918891889190611812565b8351614433565b61325d60405180606001604052806060815260200160608152602001606081525090565b60006132a586868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff16915061287b9050565b905060006132b288612345565b90506001600160c01b0382166133305760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f7420626520300000000000000060648201526084016108c6565b8082166001600160c01b0316156133e65760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c4016108c6565b60a0546001600160a01b038a166000908152609f60205260409020546001600160c01b038381169085161791429161341e9190615956565b1061349f5760405162461bcd60e51b815260206004820152604560248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f722063616e6e6f74207265726567697374656064820152641c881e595d60da1b608482015260a4016108c6565b6134a98982614273565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516134d9919061580c565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561351357613513614df5565b1461362c576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff19169083600281111561356e5761356e614df5565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d906135c3908d908990600401615ba8565b600060405180830381600087803b1580156135dd57600080fd5b505af11580156135f1573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb279529061367c908d908c908c90600401615c1c565b600060405180830381600087803b15801561369657600080fd5b505af11580156136aa573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063255047779150613700908d908d908d908d90600401615c41565b6000604051808303816000875af115801561371f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137479190810190615ccd565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d906137a4908c908c908c90600401615d30565b6000604051808303816000875af11580156137c3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137eb9190810190615d4a565b84525050509695505050505050565b6020808301516001600160a01b03808216600081815260999094526040909320549192908716141561387a5760405162461bcd60e51b81526020600482015260356024820152600080516020615f6083398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b60648201526084016108c6565b8760ff16846000015160ff16146138f75760405162461bcd60e51b81526020600482015260476024820152600080516020615f6083398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a4016108c6565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015613968573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061398c9190615de3565b905061399881856145ed565b6001600160601b0316866001600160601b031611613a2b5760405162461bcd60e51b81526020600482015260566024820152600080516020615f6083398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a4016108c6565b613a358885614611565b6001600160601b0316816001600160601b0316106121685760405162461bcd60e51b815260206004820152605c6024820152600080516020615f6083398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a4016108c6565b600081815260986020526040812054815b81811015613b61576001613af48284615a39565b613afe9190615a39565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff1681548110613b3157613b31615778565b60009182526020909120015463ffffffff1611613b4f575050610f19565b80613b59816157a4565b915050613ae0565b5060405162461bcd60e51b815260206004820152606c60248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c4016108c6565b60965460ff1660c08110613c7f5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b60648201526084016108c6565b613c8a816001615e00565b6096805460ff191660ff9290921691909117905580613ca9818661298a565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a7790613cfc90849088908890600401615e25565b600060405180830381600087803b158015613d1657600080fd5b505af1158015613d2a573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613d9257600080fd5b505af1158015613da6573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613e0e57600080fd5b505af1158015612168573d6000803e3d6000fd5b6000546201000090046001600160a01b0316158015613e4957506001600160a01b03821615155b613ecb5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016108c6565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2613f0e826125c6565b5050565b6000805b8215610f1957613f27600184615a39565b9092169180613f3581615e9e565b915050613f16565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015613f9657507f000000000000000000000000000000000000000000000000000000000000000046145b15613fc057507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615f808339815191526003600080516020615f8083398151915286600080516020615f808339815191528889090908905060006140da827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615f8083398151915261462b565b91959194509092505050565b60006101008251111561416f5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016108c6565b815161417d57506000919050565b6000808360008151811061419357614193615778565b0160200151600160f89190911c81901b92505b845181101561426a578481815181106141c1576141c1615778565b0160200151600160f89190911c1b91508282116142565760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016108c6565b91811791614263816157a4565b90506141a6565b50909392505050565b60008281526098602052604090205480614318576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b6000838152609860205260408120614331600184615a39565b8154811061434157614341615778565b600091825260209091200180549091504363ffffffff908116911614156143855780546001600160401b0316600160401b6001600160c01b038516021781556109ad565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b1561454d57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906144739086908690600401615af7565b602060405180830381865afa158015614490573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144b49190615ec0565b6001600160e01b031916146116b95760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a4016108c6565b826001600160a01b031661456183836146da565b6001600160a01b0316146116b95760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a4016108c6565b6020810151600090612710906146079061ffff1685615eea565b6129059190615f19565b6040810151600090612710906146079061ffff1685615eea565b600080614636614a47565b61463e614a65565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561467f57614681565bfe5b50826146cf5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c75726500000000000060448201526064016108c6565b505195945050505050565b60008060006146e985856146f6565b91509150611ded81614766565b60008082516041141561472d5760208301516040840151606085015160001a61472187828585614921565b9450945050505061475f565b825160401415614757576020830151604084015161474c868383614a0e565b93509350505061475f565b506000905060025b9250929050565b600081600481111561477a5761477a614df5565b14156147835750565b600181600481111561479757614797614df5565b14156147e55760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016108c6565b60028160048111156147f9576147f9614df5565b14156148475760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016108c6565b600381600481111561485b5761485b614df5565b14156148b45760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016108c6565b60048160048111156148c8576148c8614df5565b1415610d4e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016108c6565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156149585750600090506003614a05565b8460ff16601b1415801561497057508460ff16601c14155b156149815750600090506004614a05565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156149d5573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166149fe57600060019250925050614a05565b9150600090505b94509492505050565b6000806001600160ff1b03831681614a2b60ff86901c601b615956565b9050614a3987828885614921565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f840112614a9557600080fd5b5081356001600160401b03811115614aac57600080fd5b6020830191508360208260051b850101111561475f57600080fd5b60008060208385031215614ada57600080fd5b82356001600160401b03811115614af057600080fd5b614afc85828601614a83565b90969095509350505050565b600060208284031215614b1a57600080fd5b5035919050565b63ffffffff81168114610d4e57600080fd5b600080600060608486031215614b4857600080fd5b833592506020840135614b5a81614b21565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614ba357614ba3614b6b565b60405290565b604080519081016001600160401b0381118282101715614ba357614ba3614b6b565b604051601f8201601f191681016001600160401b0381118282101715614bf357614bf3614b6b565b604052919050565b60006001600160401b03831115614c1457614c14614b6b565b614c27601f8401601f1916602001614bcb565b9050828152838383011115614c3b57600080fd5b828260208301376000602084830101529392505050565b600060208284031215614c6457600080fd5b81356001600160401b03811115614c7a57600080fd5b8201601f81018413614c8b57600080fd5b614c9a84823560208401614bfb565b949350505050565b6001600160a01b0381168114610d4e57600080fd5b8035614cc281614ca2565b919050565b600060208284031215614cd957600080fd5b813561290581614ca2565b60008060408385031215614cf757600080fd5b50508035926020909101359150565b803560ff81168114614cc257600080fd5b600060208284031215614d2957600080fd5b61290582614d06565b815181526020808301519082015260408101610f19565b60008083601f840112614d5b57600080fd5b5081356001600160401b03811115614d7257600080fd5b60208301915083602082850101111561475f57600080fd5b60008060008060408587031215614da057600080fd5b84356001600160401b0380821115614db757600080fd5b614dc388838901614a83565b90965094506020870135915080821115614ddc57600080fd5b50614de987828801614d49565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110614e2957634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614e4890840182614e0b565b5092915050565b803561ffff81168114614cc257600080fd5b600060608284031215614e7357600080fd5b614e7b614b81565b90508135614e8881614b21565b8152614e9660208301614e4f565b6020820152614ea760408301614e4f565b604082015292915050565b60008060808385031215614ec557600080fd5b614ece83614d06565b9150614edd8460208501614e61565b90509250929050565b600080600060408486031215614efb57600080fd5b8335614f0681614ca2565b925060208401356001600160401b03811115614f2157600080fd5b614f2d86828701614d49565b9497909650939450505050565b60006001600160401b03821115614f5357614f53614b6b565b5060051b60200190565b600060408284031215614f6f57600080fd5b614f77614ba9565b9050614f8282614d06565b81526020820135614f9281614ca2565b602082015292915050565b600080600080600060a08688031215614fb557600080fd5b8535614fc081614ca2565b945060208681013594506040808801356001600160401b03811115614fe457600080fd5b8801601f81018a13614ff557600080fd5b803561500861500382614f3a565b614bcb565b81815260069190911b8201840190848101908c83111561502757600080fd5b928501925b8284101561504d5761503e8d85614f5d565b8252928401929085019061502c565b999c989b5098996060810135995060800135979650505050505050565b6000610100828403121561507d57600080fd5b50919050565b60008083601f84011261509557600080fd5b5081356001600160401b038111156150ac57600080fd5b6020830191508360208260061b850101111561475f57600080fd5b6000606082840312156150d957600080fd5b6150e1614b81565b905081356001600160401b038111156150f957600080fd5b8201601f8101841361510a57600080fd5b61511984823560208401614bfb565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c03121561515557600080fd5b89356001600160401b038082111561516c57600080fd5b6151788d838e01614d49565b909b50995060208c013591508082111561519157600080fd5b61519d8d838e01614d49565b90995097508791506151b28d60408e0161506a565b96506101408c01359150808211156151c957600080fd5b6151d58d838e01615083565b90965094506101608c01359150808211156151ef57600080fd5b6151fb8d838e016150c7565b93506101808c013591508082111561521257600080fd5b5061521f8c828d016150c7565b9150509295985092959850929598565b600080600080600080610160878903121561524957600080fd5b86356001600160401b038082111561526057600080fd5b61526c8a838b01614d49565b9098509650602089013591508082111561528557600080fd5b6152918a838b01614d49565b90965094508491506152a68a60408b0161506a565b93506101408901359150808211156152bd57600080fd5b506152ca89828a016150c7565b9150509295509295509295565b600080604083850312156152ea57600080fd5b82356152f581614b21565b91506020838101356001600160401b0381111561531157600080fd5b8401601f8101861361532257600080fd5b803561533061500382614f3a565b81815260059190911b8201830190838101908883111561534f57600080fd5b928401925b8284101561536d57833582529284019290840190615354565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156153ba57835163ffffffff1683529284019291840191600101615398565b50909695505050505050565b600080602083850312156153d957600080fd5b82356001600160401b038111156153ef57600080fd5b614afc85828601614d49565b6001600160601b0381168114610d4e57600080fd5b600082601f83011261542157600080fd5b8135602061543161500383614f3a565b82815260069290921b8401810191818101908684111561545057600080fd5b8286015b848110156154a1576040818903121561546d5760008081fd5b615475614ba9565b813561548081614ca2565b81528185013561548f816153fb565b81860152835291830191604001615454565b509695505050505050565b600080600060a084860312156154c157600080fd5b6154cb8585614e61565b925060608401356154db816153fb565b915060808401356001600160401b038111156154f657600080fd5b61550286828701615410565b9150509250925092565b600082601f83011261551d57600080fd5b8135602061552d61500383614f3a565b8281526060928302850182019282820191908785111561554c57600080fd5b8387015b8581101561556f576155628982614e61565b8452928401928101615550565b5090979650505050505050565b600082601f83011261558d57600080fd5b8135602061559d61500383614f3a565b82815260059290921b840181019181810190868411156155bc57600080fd5b8286015b848110156154a15780356155d3816153fb565b83529183019183016155c0565b600082601f8301126155f157600080fd5b8135602061560161500383614f3a565b82815260059290921b8401810191818101908684111561562057600080fd5b8286015b848110156154a15780356001600160401b038111156156435760008081fd5b6156518986838b0101615410565b845250918301918301615624565b600080600080600080600080610100898b03121561567c57600080fd5b61568589614cb7565b975061569360208a01614cb7565b96506156a160408a01614cb7565b95506156af60608a01614cb7565b94506080890135935060a08901356001600160401b03808211156156d257600080fd5b6156de8c838d0161550c565b945060c08b01359150808211156156f457600080fd5b6157008c838d0161557c565b935060e08b013591508082111561571657600080fd5b506157238b828c016155e0565b9150509295985092959890939650565b60208101610f198284614e0b565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156157b8576157b861578e565b5060010190565b6000815180845260005b818110156157e5576020818501810151868301820152016157c9565b818111156157f7576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061290560208301846157bf565b60006020828403121561583157600080fd5b815161290581614ca2565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561589857600080fd5b8151801515811461290557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000808335601e1984360301811261590757600080fd5b8301803591506001600160401b0382111561592157600080fd5b6020019150600581901b360382131561475f57600080fd5b60006020828403121561594b57600080fd5b815161290581614b21565b600082198211156159695761596961578e565b500190565b6000808585111561597e57600080fd5b8386111561598b57600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a16828601526040898187015260c0606087015283895180865260e088019150848b01955060005b818110156159fd578651805160ff16845286015185168684015295850195918301916001016159d3565b505060808701989098525050505060a09091019190915250949350505050565b600060408284031215615a2f57600080fd5b6129058383614f5d565b600082821015615a4b57615a4b61578e565b500390565b60018060a01b0384168152826020820152606060408201526000615a7760608301846157bf565b95945050505050565b600060208284031215615a9257600080fd5b81516001600160c01b038116811461290557600080fd5b634e487b7160e01b600052601260045260246000fd5b600082615ace57615ace615aa9565b500690565b6001600160a01b0383168152604060208201819052600090614c9a908301846157bf565b828152604060208201526000614c9a60408301846157bf565b600060208284031215615b2257600080fd5b5051919050565b6001600160a01b03841681526101608101615b51602083018580358252602090810135910152565b615b6b606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b60018060a01b0383168152604060208201526000825160606040840152615bd260a08401826157bf565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b0384168152604060208201819052600090615a779083018486615bf3565b60018060a01b0385168152836020820152606060408201526000611852606083018486615bf3565b600082601f830112615c7a57600080fd5b81516020615c8a61500383614f3a565b82815260059290921b84018101918181019086841115615ca957600080fd5b8286015b848110156154a1578051615cc0816153fb565b8352918301918301615cad565b60008060408385031215615ce057600080fd5b82516001600160401b0380821115615cf757600080fd5b615d0386838701615c69565b93506020850151915080821115615d1957600080fd5b50615d2685828601615c69565b9150509250929050565b838152604060208201526000615a77604083018486615bf3565b60006020808385031215615d5d57600080fd5b82516001600160401b03811115615d7357600080fd5b8301601f81018513615d8457600080fd5b8051615d9261500382614f3a565b81815260059190911b82018301908381019087831115615db157600080fd5b928401925b82841015615dd8578351615dc981614b21565b82529284019290840190615db6565b979650505050505050565b600060208284031215615df557600080fd5b8151612905816153fb565b600060ff821660ff84168060ff03821115615e1d57615e1d61578e565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015615e8e57865180516001600160a01b031684528601518516868401529585019591830191600101615e5e565b50909a9950505050505050505050565b600061ffff80831681811415615eb657615eb661578e565b6001019392505050565b600060208284031215615ed257600080fd5b81516001600160e01b03198116811461290557600080fd5b60006001600160601b0380831681851681830481118215151615615f1057615f1061578e565b02949350505050565b60006001600160601b0380841680615f3357615f33615aa9565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212207491ac76a1cd7fce1d2d0cd906754d5efdf6335a0dcbfeda2692424d777b4a4a64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x02\xD5W`\x005`\xE0\x1C\x80c]\xF4YF\x11a\x01\x82W\x80c\x9F\xEA\xB8Y\x11a\0\xE9W\x80c\xD7-\x8D\xD6\x11a\0\xA2W\x80c\xE6W\x97\xAD\x11a\0|W\x80c\xE6W\x97\xAD\x14a\x07\x98W\x80c\xF2\xFD\xE3\x8B\x14a\x08;W\x80c\xFA\xBC\x1C\xBC\x14a\x08NW\x80c\xFD9\x10Z\x14a\x08aW`\0\x80\xFD[\x80c\xD7-\x8D\xD6\x14a\x07jW\x80c\xD7[L\x88\x14a\x07rW\x80c\xDD\x82\x83\xF3\x14a\x07\x85W`\0\x80\xFD[\x80c\x9F\xEA\xB8Y\x14a\x06\xCDW\x80c\xA5\x08W\xBF\x14a\x06\xF4W\x80c\xA9ox>\x14a\x07\x07W\x80c\xC3\x91B^\x14a\x07\x10W\x80c\xCA\r\xE8\x82\x14a\x070W\x80c\xCAO-\x97\x14a\x07WW`\0\x80\xFD[\x80c\x87\x1E\xF0I\x11a\x01;W\x80c\x87\x1E\xF0I\x14a\x06@W\x80c\x88o\x11\x95\x14a\x06SW\x80c\x8D\xA5\xCB[\x14a\x06lW\x80c\x9A\xA1e=\x14a\x06tW\x80c\x9B]\x17{\x14a\x06\x93W\x80c\x9E\x99#\xC2\x14a\x06\xA6W`\0\x80\xFD[\x80c]\xF4YF\x14a\x05\xB1W\x80ccG\xC9\0\x14a\x05\xD8W\x80ch0H5\x14a\x05\xEBW\x80cn;\x17\xDB\x14a\x06\x12W\x80cqP\x18\xA6\x14a\x06%W\x80c\x84\xCAR\x13\x14a\x06-W`\0\x80\xFD[\x80c$\x9A\x0CB\x11a\x02AW\x80c<*\x7FL\x11a\x01\xFAW\x80cY\\jg\x11a\x01\xD4W\x80cY\\jg\x14a\x05oW\x80cZ\xC8j\xB7\x14a\x05wW\x80c[\x0B\x82\x9F\x14a\x05\x96W\x80c\\\x97Z\xBB\x14a\x05\xA9W`\0\x80\xFD[\x80c<*\x7FL\x14a\x05\x1CW\x80cQ@\xA5H\x14a\x05\x80W\xC1\xAD\x1F5\x10\xFC\x83w\x8B\xE2\x0F\x10\xEC]\xE6\x81V[a\x02\xEDa\x07\x026`\x04aR/V[a\x1B\xB8V[a\x03\x0F`\xA0T\x81V[a\x07#a\x07\x1E6`\x04aR\xD7V[a\x1D=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x15\x91\x90aX\x1FV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\rEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aX=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xC2\x91\x90aX\x86V[a\r\xDEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aX\xA8V[`\x01T\x81\x81\x16\x14a\x0EWW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.pause: invalid attempt `D\x82\x01R\x7Fto unpause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x08\xC6V[`\x01\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01a\x0C\x86V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`\0\x83\x81R`\x98` R`@\x90 \x80T\x83\x90\x81\x10a\x0E\xCBWa\x0E\xCBaWxV[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x82\x04\x16\x93\x82\x01\x93\x90\x93R`\x01`\x01`\xC0\x1B\x03`\x01`@\x1B\x90\x93\x04\x92\x90\x92\x16\x90\x82\x01R\x90P[\x92\x91PPV[`@Qc\x08\xF6b\x9D`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90cG\xB3\x14\xE8\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\x87W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\x19\x91\x90aX\x1FV[a\x0F\xB3a%gV[a\rN\x81a&\xCBV[a\x0F\xC4a%gV[a\rN\x81a'4V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01Ra\x0F\x19a\x10G\x7F+\xD8!$\x05\x7F\t\x13\xBC;w,\xE7\xB8>\x80W\xC1\xAD\x1F5\x10\xFC\x83w\x8B\xE2\x0F\x10\xEC]\xE6\x84`@Q` \x01a\x10,\x92\x91\x90\x91\x82R`\x01`\x01`\xA0\x1B\x03\x16` \x82\x01R`@\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a'\x9DV[a'\xEBV[`\x01T`\x02\x90`\x04\x90\x81\x16\x14\x15a\x10uW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aWAV[`\0a\x10\xBD\x84\x84\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`\x96T`\xFF\x16\x91Pa({\x90PV[\x90P\x84\x83\x14a\x11.W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` a_@\x839\x81Q\x91R`D\x82\x01R\x7ForsForQuorum: input length misma`d\x82\x01Rb\x0E\x8Cm`\xEB\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`\0[\x83\x81\x10\x15a\x15TW`\0\x85\x85\x83\x81\x81\x10a\x11MWa\x11MaWxV[\x91\x90\x91\x015`\xF8\x1C\x91P6\x90P`\0\x89\x89\x85\x81\x81\x10a\x11nWa\x11naWxV[\x90P` \x02\x81\x01\x90a\x11\x80\x91\x90aX\xF0V[`@Qcy\xA0\x84\x91`\xE1\x1B\x81R`\xFF\x86\x16`\x04\x82\x01R\x91\x93P\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90c\xF3A\t\"\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11\xECW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12\x10\x91\x90aY9V[c\xFF\xFF\xFF\xFF\x16\x81\x14a\x12\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`e`$\x82\x01R`\0\x80Q` a_@\x839\x81Q\x91R`D\x82\x01R\x7ForsForQuorum: number of updated `d\x82\x01R\x7Foperators does not match quorum `\x84\x82\x01Rd\x1D\x1B\xDD\x18[`\xDA\x1B`\xA4\x82\x01R`\xC4\x01a\x08\xC6V[`\0\x80[\x82\x81\x10\x15a\x14\xF3W`\0\x84\x84\x83\x81\x81\x10a\x12\xCCWa\x12\xCCaWxV[\x90P` \x02\x01` \x81\x01\x90a\x12\xE1\x91\x90aL\xC7V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\x99` \x90\x81R`@\x80\x83 \x81Q\x80\x83\x01\x90\x92R\x80T\x82R`\x01\x81\x01T\x94\x95P\x92\x93\x90\x92\x91\x83\x01\x90`\xFF\x16`\x02\x81\x11\x15a\x13,Wa\x13,aM\xF5V[`\x02\x81\x11\x15a\x13=Wa\x13=aM\xF5V[\x90RP\x80Q\x90\x91P`\0a\x13P\x82a#EV[\x90P`\x01`\x01`\x01`\xC0\x1B\x03\x82\x16`\xFF\x8B\x16\x1C\x81\x16\x14a\x13\xD4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R`\0\x80Q` a_@\x839\x81Q\x91R\x90\x82\x01R\x7ForsForQuorum: operator not in qu`d\x82\x01Rcorum`\xE0\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[\x85`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x11a\x14\x7FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`g`$\x82\x01R`\0\x80Q` a_@\x839\x81Q\x91R`D\x82\x01R\x7ForsForQuorum: operators array mu`d\x82\x01R\x7Fst be sorted in ascending addres`\x84\x82\x01Rf9\x907\xB922\xB9`\xC9\x1B`\xA4\x82\x01R`\xC4\x01a\x08\xC6V[Pa\x14\xDD\x83\x83\x8F\x8F\x8D\x90\x8E`\x01a\x14\x96\x91\x90aYVV[\x92a\x14\xA3\x93\x92\x91\x90aYnV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa$z\x92PPPV[P\x90\x92Pa\x14\xEC\x90P\x81aW\xA4V[\x90Pa\x12\xB0V[P`\xFF\x84\x16`\0\x81\x81R`\x9B` \x90\x81R`@\x91\x82\x90 C\x90\x81\x90U\x91Q\x91\x82R\x7FF\x07}U3\x07c\xF1bi\xFDu\xE5v\x16c\xF4\x19-'\x91t|\x01\x89\xB1j\xD3\x1D\xB0}\xB4\x91\x01`@Q\x80\x91\x03\x90\xA2PPPP\x80a\x15M\x90aW\xA4V[\x90Pa\x111V[PPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` \x90\x81R`@\x91\x82\x90 \x82Q\x80\x84\x01\x90\x93R\x80T\x83R`\x01\x81\x01T\x90\x91\x83\x01\x90`\xFF\x16`\x02\x81\x11\x15a\x15\xB7Wa\x15\xB7aM\xF5V[`\x02\x81\x11\x15a\x15\xC8Wa\x15\xC8aM\xF5V[\x90RP\x92\x91PPV[`\0T`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01Rb\x01\0\0\x90\x91\x04`\x01`\x01`\xA0\x1B\x03\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16\x1EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16B\x91\x90aX\x86V[a\x16^W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aX\xA8V[`\0\x19`\x01\x81\x90U`@Q\x90\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2V[a\x16\xA5a%gV[\x81a\x16\xAF\x81a)\x0CV[a\x16\xB9\x83\x83a)\x8AV[PPPV[`\x9C\x81\x81T\x81\x10a\x16\xCEW`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x90P\x81V[a\x16\xF0a*7V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9F` \x90\x81R`@\x80\x83 B\x90U`\x99\x82R\x80\x83 \x80T\x82Q`\x1F\x87\x01\x85\x90\x04\x85\x02\x81\x01\x85\x01\x90\x93R\x85\x83R\x90\x93\x90\x92\x90\x91a\x17]\x91\x87\x90\x87\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`\x96T`\xFF\x16\x91Pa({\x90PV[\x90P`\0a\x17j\x83a#EV[\x90P`\x01\x80\x85\x01T`\xFF\x16`\x02\x81\x11\x15a\x17\x86Wa\x17\x86aM\xF5V[\x14\x80\x15a\x17\x9BWP`\x01`\x01`\xC0\x1B\x03\x82\x16\x15\x15[\x80\x15a\x17\xB9WPa\x17\xB9`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x16\x14\x90V[\x15a\x15TWa\x15T\x87\x87\x87\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa*\xB7\x92PPPV[a\x18\x06a%gV[a\x18\x10`\0a/)V[V[`\0a\x18R\x7FM@N2v\xE7\xAC!c\xD8\xEEGj\xFAjA\xD1\xF6\x8F\xB7\x1F-\x8BeF\xB2NU\xCE\x01\xB7*\x87\x87\x87\x87\x87`@Q` \x01a\x10,\x96\x95\x94\x93\x92\x91\x90aY\x98V[\x96\x95PPPPPPV[`\0a\x0F\x19\x82a#EV[`\0a\x18{`dT`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x90P\x90V[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x18\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aWAV[\x83\x89\x14a\x19+W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FRegistryCoordinator.registerOper\x90\x82\x01R\x7FatorWithChurn: input length mism`d\x82\x01Rc\x0C.\x8Cm`\xE3\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`\0a\x1973\x88a/{V[\x90Pa\x19\x973\x82\x88\x88\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x19\x8CWa\x19}`@\x83\x02\x86\x016\x81\x90\x03\x81\x01\x90aZ\x1DV[\x81R` \x01\x90`\x01\x01\x90a\x19`V[PPPPP\x87a0\xACV[`\0a\x19\xDE3\x83\x8E\x8E\x8E\x8E\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RP\x8C\x92Pa29\x91PPV[\x90P`\0[\x8B\x81\x10\x15a\x1B\xA9W`\0`\x97`\0\x8F\x8F\x85\x81\x81\x10a\x1A\x03Wa\x1A\x03aWxV[\x91\x90\x91\x015`\xF8\x1C\x82RP` \x80\x82\x01\x92\x90\x92R`@\x90\x81\x01`\0 \x81Q``\x81\x01\x83R\x90Tc\xFF\xFF\xFF\xFF\x81\x16\x80\x83Ra\xFF\xFF`\x01` \x1B\x83\x04\x81\x16\x95\x84\x01\x95\x90\x95R`\x01`0\x1B\x90\x91\x04\x90\x93\x16\x91\x81\x01\x91\x90\x91R\x84Q\x80Q\x91\x93P\x90\x84\x90\x81\x10a\x1ApWa\x1ApaWxV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1B\x96Wa\x1B\x11\x8E\x8E\x84\x81\x81\x10a\x1A\x99Wa\x1A\x99aWxV[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x84`@\x01Q\x84\x81Q\x81\x10a\x1A\xBCWa\x1A\xBCaWxV[` \x02` \x01\x01Q3\x86` \x01Q\x86\x81Q\x81\x10a\x1A\xDBWa\x1A\xDBaWxV[` \x02` \x01\x01Q\x8D\x8D\x88\x81\x81\x10a\x1A\xF5Wa\x1A\xF5aWxV[\x90P`@\x02\x01\x806\x03\x81\x01\x90a\x1B\x0B\x91\x90aZ\x1DV[\x86a7\xFAV[a\x1B\x96\x89\x89\x84\x81\x81\x10a\x1B&Wa\x1B&aWxV[\x90P`@\x02\x01` \x01` \x81\x01\x90a\x1B>\x91\x90aL\xC7V[\x8F\x8F\x85\x90\x86`\x01a\x1BO\x91\x90aYVV[\x92a\x1B\\\x93\x92\x91\x90aYnV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa*\xB7\x92PPPV[P\x80a\x1B\xA1\x81aW\xA4V[\x91PPa\x19\xE3V[PPPPPPPPPPPPPV[`\x01\x80T`\0\x91\x90\x81\x16\x14\x15a\x1B\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aWAV[`\0a\x1B\xEC3\x85a/{V[\x90P`\0a\x1C53\x83\x8B\x8B\x8B\x8B\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RP\x8C\x92Pa29\x91PPV[Q\x90P`\0[\x88\x81\x10\x15a\x1D0W`\0\x8A\x8A\x83\x81\x81\x10a\x1CWWa\x1CWaWxV[\x91\x90\x91\x015`\xF8\x1C`\0\x81\x81R`\x97` R`@\x90 T\x85Q\x91\x93Pc\xFF\xFF\xFF\xFF\x16\x91P\x84\x90\x84\x90\x81\x10a\x1C\x8DWa\x1C\x8DaWxV[` \x02` \x01\x01Qc\xFF\xFF\xFF\xFF\x16\x11\x15a\x1D\x1DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FRegistryCoordinator.registerOper\x90\x82\x01R\x7Fator: operator count exceeds max`d\x82\x01Rcimum`\xE0\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[P\x80a\x1D(\x81aW\xA4V[\x91PPa\x1C;V[PPPPPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1DYWa\x1DYaKkV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x82W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1D\xEDWa\x1D\xB4\x85\x85\x83\x81Q\x81\x10a\x1D\xA7Wa\x1D\xA7aWxV[` \x02` \x01\x01Qa:\xCFV[\x82\x82\x81Q\x81\x10a\x1D\xC6Wa\x1D\xC6aWxV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x80a\x1D\xE5\x81aW\xA4V[\x91PPa\x1D\x88V[P\x93\x92PPPV[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\x1E\x1CW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aWAV[a\x16\xB93\x84\x84\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa*\xB7\x92PPPV[a\x1Eda%gV[a\x16\xB9\x83\x83\x83a<\x0BV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x1E\x8FWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x1E\xA9WP0;\x15\x80\x15a\x1E\xA9WP`\0T`\xFF\x16`\x01\x14[a\x1F\x0CW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01a\x08\xC6V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x1F/W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[\x82Q\x84Q\x14\x80\x15a\x1FAWP\x81Q\x83Q\x14[a\x1F\xABW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FRegistryCoordinator.initialize: `D\x82\x01Rt\r-\xCE\x0E\xAE\x84\r\x8C\xAD\xCC\xEE\x8D\x04\r\xAD.m\xAC.\x8Cm`[\x1B`d\x82\x01R`\x84\x01a\x08\xC6V[a\x1F\xB4\x89a/)V[a\x1F\xBE\x86\x86a>\"V[a\x1F\xC7\x88a&\xCBV[a\x1F\xD0\x87a'4V[`\x9C\x80T`\x01\x81\x81\x01\x83U`\0\x83\x81R\x7F\xAF\x85\xB9\x07\x1D\xFA\xFE\xAC\x14\t\xD3\xF1\xD1\x9B\xAF\xC9\xBC|7\x97L\xDE\x8D\xF0\xEEah\xF0\x08nS\x9C\x92\x83\x01\x80T`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90\x92U\x85T\x80\x85\x01\x87U\x85\x01\x80T\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x16\x90\x83\x16\x17\x90U\x85T\x93\x84\x01\x90\x95U\x91\x90\x92\x01\x80T\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x92\x16\x91\x90\x93\x16\x17\x90\x91U[\x84Q\x81\x10\x15a!!Wa!\x0F\x85\x82\x81Q\x81\x10a \xCEWa \xCEaWxV[` \x02` \x01\x01Q\x85\x83\x81Q\x81\x10a \xE8Wa \xE8aWxV[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a!\x02Wa!\x02aWxV[` \x02` \x01\x01Qa<\x0BV[\x80a!\x19\x81aW\xA4V[\x91PPa \xB0V[P\x80\x15a!hW`\0\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[a!{a%gV[`\x01`\x01`\xA0\x1B\x03\x81\x16a!\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x08\xC6V[a\rN\x81a/)V[`\0`\x02\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xEA\xB6mz`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\"=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\"`\x91\x90aX\x1FV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\"\x90W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x08\xC6\x90aX=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a%4\x91\x90aZ\x80V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15a%`Wa%`\x85a%[\x83`\x01`\x01`\xC0\x1B\x03\x16a#\xAEV[a*\xB7V[PPPPPV[3a%pa\x18gV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x18\x10W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x08\xC6V[`\x01`\x01`\xA0\x1B\x03\x81\x16a&TW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FPausable._setPauserRegistry: new`D\x82\x01R\x7FPauserRegistry cannot be the zer`d\x82\x01Rho address`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`\0T`@\x80Q`\x01`\x01`\xA0\x1B\x03b\x01\0\0\x90\x93\x04\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7Fn\x9F\xCDS\x98\x96\xFC\xA6\x0E\x8B\x0F\x01\xDDX\x023\xE4\x8Ak\x0F}\xF0\x13\xB8\x9B\xA7\xF5e\x86\x9A\xCD\xB6\x91\x01`@Q\x80\x91\x03\x90\xA1`\0\x80T`\x01`\x01`\xA0\x1B\x03\x90\x92\x16b\x01\0\0\x02b\x01\0\0`\x01`\xB0\x1B\x03\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x9DT`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F1TW\xD8\xA8\xFE`\xF0J\xF1|\x16\xE2\xF5\xA5\xE1\xDBa+1d\x8EX\x03\x03`u\x9E\xF8\xF3R\x8C\x91\x01`@Q\x80\x91\x03\x90\xA1`\x9D\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x9ET`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\x8F0\xAB\t\xF4:l\x15}\x7F\xCE~\n\x13\xC0\x03\x04,\x1C\x95\xE8\xA7.z\x14j!\xC0\xCA\xA2M\xC9\x91\x01`@Q\x80\x91\x03\x90\xA1`\x9E\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\0a\x0F\x19a'\xAAa?=V[\x83`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x83\x90R`B\x81\x01\x82\x90R`\0\x90`b\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0\x80\x80a(\x1B`\0\x80Q` a_\x80\x839\x81Q\x91R\x86aZ\xBFV[\x90P[a('\x81a@dV[\x90\x93P\x91P`\0\x80Q` a_\x80\x839\x81Q\x91R\x82\x83\t\x83\x14\x15a(aW`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[`\0\x80Q` a_\x80\x839\x81Q\x91R`\x01\x82\x08\x90Pa(\x1EV[`\0\x80a(\x87\x84a@\xE6V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a)\x05W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`?`$\x82\x01R\x7FBitmapUtils.orderedBytesArrayToB`D\x82\x01R\x7Fitmap: bitmap exceeds max value\0`d\x82\x01R`\x84\x01a\x08\xC6V[\x93\x92PPPV[`\x96T`\xFF\x90\x81\x16\x90\x82\x16\x10a\rNW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FRegistryCoordinator.quorumExists`D\x82\x01R\x7F: quorum does not exist\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x08\xC6V[`\xFF\x82\x16`\0\x81\x81R`\x97` \x90\x81R`@\x91\x82\x90 \x84Q\x81T\x86\x84\x01\x80Q\x88\x87\x01\x80Qc\xFF\xFF\xFF\xFF\x90\x95\x16e\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x94\x16\x84\x17`\x01` \x1Ba\xFF\xFF\x93\x84\x16\x02\x17g\xFF\xFF\0\0\0\0\0\0\x19\x16`\x01`0\x1B\x95\x83\x16\x95\x90\x95\x02\x94\x90\x94\x17\x90\x94U\x85Q\x91\x82RQ\x83\x16\x93\x81\x01\x93\x90\x93RQ\x16\x91\x81\x01\x91\x90\x91R\x7F>\xE6\xFE\x8DTa\x02D\xC3\xE9\xD3\xC0f\xAEJ\xEE\x99x\x84\xAA(\xF1\x06\x16\xAE\x82\x19%@\x13\x18\xAC\x90``\x01`@Q\x80\x91\x03\x90\xA2PPV[`\x9ET`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18\x10W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FRegistryCoordinator.onlyEjector:`D\x82\x01R\x7F caller is not the ejector\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x08\xC6V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` R`@\x90 \x80T`\x01\x80\x83\x01T`\xFF\x16`\x02\x81\x11\x15a*\xEBWa*\xEBaM\xF5V[\x14a+jW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R\x7FRegistryCoordinator._deregisterO`D\x82\x01R\x7Fperator: operator is not registe`d\x82\x01Rb\x1C\x99Y`\xEA\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`\x96T`\0\x90a+~\x90\x85\x90`\xFF\x16a({V[\x90P`\0a+\x8B\x83a#EV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a,\tW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`;`$\x82\x01R\x7FRegistryCoordinator._deregisterO`D\x82\x01R\x7Fperator: bitmap cannot be 0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x08\xC6V[a, `\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x16\x14\x90V[a,\xB8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`Y`$\x82\x01R\x7FRegistryCoordinator._deregisterO`D\x82\x01R\x7Fperator: operator is not registe`d\x82\x01R\x7Fred for specified quorums\0\0\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`\x01`\x01`\xC0\x1B\x03\x82\x81\x16\x19\x82\x16\x16a,\xD1\x84\x82aBsV[`\x01`\x01`\xC0\x1B\x03\x81\x16a-\xA0W`\x01\x85\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`@QcQ\xB2zm`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x88\x81\x16`\x04\x83\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xA3d\xF4\xDA\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a-QW`\0\x80\xFD[PZ\xF1\x15\x80\x15a-eW=`\0\x80>=`\0\xFD[PP`@Q\x86\x92P`\x01`\x01`\xA0\x1B\x03\x8A\x16\x91P\x7F9o\xDC\xB1\x80\xCB\x0F\xEA&\x92\x81\x13\xFB\x0F\xD1\xC3T\x98c\xF9\xCDV>j\x18O\x1DW\x81\x16\xC8\xE4\x90`\0\x90\xA3[`@Qc\xF4\xE2O\xE5`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xF4\xE2O\xE5\x90a-\xEE\x90\x8A\x90\x8A\x90`\x04\x01aZ\xD3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a.\x08W`\0\x80\xFD[PZ\xF1\x15\x80\x15a.\x1CW=`\0\x80>=`\0\xFD[PP`@Qc\xBD)\xB8\xCD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x92Pc\xBD)\xB8\xCD\x91Pa.n\x90\x87\x90\x8A\x90`\x04\x01aZ\xF7V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a.\x88W`\0\x80\xFD[PZ\xF1\x15\x80\x15a.\x9CW=`\0\x80>=`\0\xFD[PP`@Qc\xBD)\xB8\xCD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x92Pc\xBD)\xB8\xCD\x91Pa.\xEE\x90\x87\x90\x8A\x90`\x04\x01aZ\xF7V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a/\x08W`\0\x80\xFD[PZ\xF1\x15\x80\x15a/\x1CW=`\0\x80>=`\0\xFD[PPPPPPPPPPPV[`d\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x04\x83\x01R`\0\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90c\x13T*N\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a/\xE6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a0\n\x91\x90a[\x10V[\x90P\x80a\x0F\x19W\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xBFy\xCEX\x84\x84a0K\x87a\x0F\xCDV[`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a0i\x93\x92\x91\x90a[)V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a0\x88W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a)\x05\x91\x90a[\x10V[` \x80\x82\x01Q`\0\x90\x81R`\x9A\x90\x91R`@\x90 T`\xFF\x16\x15a1RW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`R`$\x82\x01R\x7FRegistryCoordinator._verifyChurn`D\x82\x01R\x7FApproverSignature: churnApprover`d\x82\x01Rq\x08\x1C\xD8[\x1D\x08\x18[\x1C\x99XY\x1EH\x1D\\\xD9Y`r\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[B\x81`@\x01Q\x10\x15a1\xE7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`R`$\x82\x01R\x7FRegistryCoordinator._verifyChurn`D\x82\x01R\x7FApproverSignature: churnApprover`d\x82\x01Rq\x08\x1C\xDAY\xDB\x98]\x1D\\\x99H\x19^\x1C\x1A\\\x99Y`r\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[` \x80\x82\x01\x80Q`\0\x90\x81R`\x9A\x90\x92R`@\x91\x82\x90 \x80T`\xFF\x19\x16`\x01\x17\x90U`\x9DT\x90Q\x91\x83\x01Qa\t\xAD\x92`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91a22\x91\x88\x91\x88\x91\x88\x91\x90a\x18\x12V[\x83QaD3V[a2]`@Q\x80``\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`\0a2\xA5\x86\x86\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPP`\x96T`\xFF\x16\x91Pa({\x90PV[\x90P`\0a2\xB2\x88a#EV[\x90P`\x01`\x01`\xC0\x1B\x03\x82\x16a30W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`9`$\x82\x01R\x7FRegistryCoordinator._registerOpe`D\x82\x01R\x7Frator: bitmap cannot be 0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x08\xC6V[\x80\x82\x16`\x01`\x01`\xC0\x1B\x03\x16\x15a3\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`h`$\x82\x01R\x7FRegistryCoordinator._registerOpe`D\x82\x01R\x7Frator: operator already register`d\x82\x01R\x7Fed for some quorums being regist`\x84\x82\x01Rg2\xB92\xB2\x1037\xB9`\xC1\x1B`\xA4\x82\x01R`\xC4\x01a\x08\xC6V[`\xA0T`\x01`\x01`\xA0\x1B\x03\x8A\x16`\0\x90\x81R`\x9F` R`@\x90 T`\x01`\x01`\xC0\x1B\x03\x83\x81\x16\x90\x85\x16\x17\x91B\x91a4\x1E\x91\x90aYVV[\x10a4\x9FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`E`$\x82\x01R\x7FRegistryCoordinator._registerOpe`D\x82\x01R\x7Frator: operator cannot reregiste`d\x82\x01Rd\x1C\x88\x1EY]`\xDA\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[a4\xA9\x89\x82aBsV[\x88\x7F\xEC)c\xAB!\xC1\xE5\x0E\x1EX*\xA5B\xAF.K\xF7\xBF8\xE6\xE1@<'\xB4.\x1C]nb\x1E\xAA\x87`@Qa4\xD9\x91\x90aX\x0CV[`@Q\x80\x91\x03\x90\xA2`\x01`\x01`\x01`\xA0\x1B\x03\x8B\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a5\x13Wa5\x13aM\xF5V[\x14a6,W`@\x80Q\x80\x82\x01\x82R\x8A\x81R`\x01` \x80\x83\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x8F\x16`\0\x90\x81R`\x99\x90\x92R\x93\x90 \x82Q\x81U\x92Q\x83\x82\x01\x80T\x93\x94\x93\x91\x92\x90\x91`\xFF\x19\x16\x90\x83`\x02\x81\x11\x15a5nWa5naM\xF5V[\x02\x17\x90UPP`@Qc\x99&\xEE}`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x91Pc\x99&\xEE}\x90a5\xC3\x90\x8D\x90\x89\x90`\x04\x01a[\xA8V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a5\xDDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a5\xF1W=`\0\x80>=`\0\xFD[PP`@Q\x8B\x92P`\x01`\x01`\xA0\x1B\x03\x8D\x16\x91P\x7F\xE8\xE6\x8C\xEF\x1C:v\x1E\xD7\xBE~\x84c\xA3u\xF2\x7F{\xC35\xE5\x18$\"<\xAC\xCEcn\xC5\xC3\xFE\x90`\0\x90\xA3[`@Qc\x1F\xD9<\xA9`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c?\xB2yR\x90a6|\x90\x8D\x90\x8C\x90\x8C\x90`\x04\x01a\\\x1CV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a6\x96W`\0\x80\xFD[PZ\xF1\x15\x80\x15a6\xAAW=`\0\x80>=`\0\xFD[PP`@Qc%PGw`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x92Pc%PGw\x91Pa7\0\x90\x8D\x90\x8D\x90\x8D\x90\x8D\x90`\x04\x01a\\AV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a7\x1FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra7G\x91\x90\x81\x01\x90a\\\xCDV[`@\x80\x87\x01\x91\x90\x91R` \x86\x01\x91\x90\x91RQb\xBF\xF0M`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90b\xBF\xF0M\x90a7\xA4\x90\x8C\x90\x8C\x90\x8C\x90`\x04\x01a]0V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a7\xC3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra7\xEB\x91\x90\x81\x01\x90a]JV[\x84RPPP\x96\x95PPPPPPV[` \x80\x83\x01Q`\x01`\x01`\xA0\x1B\x03\x80\x82\x16`\0\x81\x81R`\x99\x90\x94R`@\x90\x93 T\x91\x92\x90\x87\x16\x14\x15a8zW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R`\0\x80Q` a_`\x839\x81Q\x91R`D\x82\x01Rt97\x1D\x101\xB0\xB777\xBA\x101\xB4:\xB97\x109\xB2\xB63`Y\x1B`d\x82\x01R`\x84\x01a\x08\xC6V[\x87`\xFF\x16\x84`\0\x01Q`\xFF\x16\x14a8\xF7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R`\0\x80Q` a_`\x839\x81Q\x91R`D\x82\x01R\x7Frn: quorumNumber not the same as`d\x82\x01Rf\x08\x1C\xDAY\xDB\x99Y`\xCA\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`@QcT\x01\xED'`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`\xFF\x89\x16`$\x82\x01R`\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90cT\x01\xED'\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a9hW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a9\x8C\x91\x90a]\xE3V[\x90Pa9\x98\x81\x85aE\xEDV[`\x01`\x01``\x1B\x03\x16\x86`\x01`\x01``\x1B\x03\x16\x11a:+W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R`\0\x80Q` a_`\x839\x81Q\x91R`D\x82\x01R\x7Frn: incoming operator has insuff`d\x82\x01Ru4\xB1\xB4\xB2\xB7:\x109\xBA0\xB5\xB2\x9037\xB9\x101\xB4:\xB97`Q\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[a:5\x88\x85aF\x11V[`\x01`\x01``\x1B\x03\x16\x81`\x01`\x01``\x1B\x03\x16\x10a!hW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R`\0\x80Q` a_`\x839\x81Q\x91R`D\x82\x01R\x7Frn: cannot kick operator with mo`d\x82\x01R\x7Fre than kickBIPsOfTotalStake\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`\0\x81\x81R`\x98` R`@\x81 T\x81[\x81\x81\x10\x15a;aW`\x01a:\xF4\x82\x84aZ9V[a:\xFE\x91\x90aZ9V[\x92P\x84c\xFF\xFF\xFF\xFF\x16`\x98`\0\x86\x81R` \x01\x90\x81R` \x01`\0 \x84c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a;1Wa;1aWxV[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a;OWPPa\x0F\x19V[\x80a;Y\x81aW\xA4V[\x91PPa:\xE0V[P`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R\x7FRegistryCoordinator.getQuorumBit`D\x82\x01R\x7FmapIndexAtBlockNumber: no bitmap`d\x82\x01R\x7F update found for operatorId at `\x84\x82\x01Rk167\xB1\xB5\x907:\xB6\xB12\xB9`\xA1\x1B`\xA4\x82\x01R`\xC4\x01a\x08\xC6V[`\x96T`\xFF\x16`\xC0\x81\x10a<\x7FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FRegistryCoordinator.createQuorum`D\x82\x01Rt\x0E\x88\x1BX^\x08\x1C][\xDC\x9D[\\\xC8\x1C\x99XX\xDA\x19Y`Z\x1B`d\x82\x01R`\x84\x01a\x08\xC6V[a<\x8A\x81`\x01a^\0V[`\x96\x80T`\xFF\x19\x16`\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90U\x80a<\xA9\x81\x86a)\x8AV[`@Q`\x01b\x96\xB5\x89`\xE0\x1B\x03\x19\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xFFiJw\x90a<\xFC\x90\x84\x90\x88\x90\x88\x90`\x04\x01a^%V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a=\x16W`\0\x80\xFD[PZ\xF1\x15\x80\x15a=*W=`\0\x80>=`\0\xFD[PP`@Qc\x13l\xA0\xF9`\xE1\x1B\x81R`\xFF\x84\x16`\x04\x82\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x92Pc&\xD9A\xF2\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a=\x92W`\0\x80\xFD[PZ\xF1\x15\x80\x15a=\xA6W=`\0\x80>=`\0\xFD[PP`@Qc\x13l\xA0\xF9`\xE1\x1B\x81R`\xFF\x84\x16`\x04\x82\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x92Pc&\xD9A\xF2\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a>\x0EW`\0\x80\xFD[PZ\xF1\x15\x80\x15a!hW=`\0\x80>=`\0\xFD[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a>IWP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a>\xCBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FPausable._initializePauser: _ini`D\x82\x01R\x7FtializePauser() can only be call`d\x82\x01Rfed once`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[`\x01\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2a?\x0E\x82a%\xC6V[PPV[`\0\x80[\x82\x15a\x0F\x19Wa?'`\x01\x84aZ9V[\x90\x92\x16\x91\x80a?5\x81a^\x9EV[\x91PPa?\x16V[`\x000`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80\x15a?\x96WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0F\x14[\x15a?\xC0WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[P`@\x80Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x80\x83\x01\x91\x90\x91R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x84\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0``\x83\x01RF`\x80\x83\x01R0`\xA0\x80\x84\x01\x91\x90\x91R\x83Q\x80\x84\x03\x90\x91\x01\x81R`\xC0\x90\x92\x01\x90\x92R\x80Q\x91\x01 \x90V[`\0\x80\x80`\0\x80Q` a_\x80\x839\x81Q\x91R`\x03`\0\x80Q` a_\x80\x839\x81Q\x91R\x86`\0\x80Q` a_\x80\x839\x81Q\x91R\x88\x89\t\t\x08\x90P`\0a@\xDA\x82\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R`\0\x80Q` a_\x80\x839\x81Q\x91RaF+V[\x91\x95\x91\x94P\x90\x92PPPV[`\0a\x01\0\x82Q\x11\x15aAoW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FBitmapUtils.orderedBytesArrayToB\x90\x82\x01R\x7Fitmap: orderedBytesArray is too `d\x82\x01Rclong`\xE0\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[\x81QaA}WP`\0\x91\x90PV[`\0\x80\x83`\0\x81Q\x81\x10aA\x93WaA\x93aWxV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15aBjW\x84\x81\x81Q\x81\x10aA\xC1WaA\xC1aWxV[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11aBVW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FBitmapUtils.orderedBytesArrayToB`D\x82\x01R\x7Fitmap: orderedBytesArray is not `d\x82\x01Rf\x1B\xDC\x99\x19\\\x99Y`\xCA\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[\x91\x81\x17\x91aBc\x81aW\xA4V[\x90PaA\xA6V[P\x90\x93\x92PPPV[`\0\x82\x81R`\x98` R`@\x90 T\x80aC\x18W`\0\x83\x81R`\x98` \x90\x81R`@\x80\x83 \x81Q``\x81\x01\x83Rc\xFF\xFF\xFF\xFFC\x81\x16\x82R\x81\x85\x01\x86\x81R`\x01`\x01`\xC0\x1B\x03\x80\x8A\x16\x95\x84\x01\x95\x86R\x84T`\x01\x81\x01\x86U\x94\x88R\x95\x90\x96 \x91Q\x91\x90\x92\x01\x80T\x95Q\x93Q\x90\x94\x16`\x01`@\x1B\x02`\x01`\x01`@\x1B\x03\x93\x83\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x96\x16\x91\x90\x92\x16\x17\x93\x90\x93\x17\x16\x91\x90\x91\x17\x90UPPPV[`\0\x83\x81R`\x98` R`@\x81 aC1`\x01\x84aZ9V[\x81T\x81\x10aCAWaCAaWxV[`\0\x91\x82R` \x90\x91 \x01\x80T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15aC\x85W\x80T`\x01`\x01`@\x1B\x03\x16`\x01`@\x1B`\x01`\x01`\xC0\x1B\x03\x85\x16\x02\x17\x81Ua\t\xADV[\x80Tc\xFF\xFF\xFF\xFFC\x81\x16`\x01` \x1B\x81\x81\x02g\xFF\xFF\xFF\xFF\0\0\0\0\x19\x90\x94\x16\x93\x90\x93\x17\x84U`\0\x87\x81R`\x98` \x90\x81R`@\x80\x83 \x81Q``\x81\x01\x83R\x94\x85R\x84\x83\x01\x84\x81R`\x01`\x01`\xC0\x1B\x03\x80\x8C\x16\x93\x87\x01\x93\x84R\x82T`\x01\x81\x01\x84U\x92\x86R\x93\x90\x94 \x94Q\x94\x01\x80T\x93Q\x91Q\x90\x92\x16`\x01`@\x1B\x02`\x01`\x01`@\x1B\x03\x91\x86\x16\x90\x96\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x93\x16\x93\x90\x94\x16\x92\x90\x92\x17\x17\x91\x90\x91\x16\x91\x90\x91\x17\x90UPPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16;\x15aEMW`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aDs\x90\x86\x90\x86\x90`\x04\x01aZ\xF7V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aD\x90W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aD\xB4\x91\x90a^\xC0V[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x16\xB9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`S`$\x82\x01R\x7FEIP1271SignatureUtils.checkSigna`D\x82\x01R\x7Fture_EIP1271: ERC1271 signature `d\x82\x01Rr\x1D\x99\\\x9AY\x9AX\xD8]\x1A[\xDB\x88\x19\x98Z[\x19Y`j\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[\x82`\x01`\x01`\xA0\x1B\x03\x16aEa\x83\x83aF\xDAV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x16\xB9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FEIP1271SignatureUtils.checkSigna`D\x82\x01R\x7Fture_EIP1271: signature not from`d\x82\x01Rf\x109\xB4\xB3\xB72\xB9`\xC9\x1B`\x84\x82\x01R`\xA4\x01a\x08\xC6V[` \x81\x01Q`\0\x90a'\x10\x90aF\x07\x90a\xFF\xFF\x16\x85a^\xEAV[a)\x05\x91\x90a_\x19V[`@\x81\x01Q`\0\x90a'\x10\x90aF\x07\x90a\xFF\xFF\x16\x85a^\xEAV[`\0\x80aF6aJGV[aF>aJeV[` \x80\x82R\x81\x81\x01\x81\x90R`@\x82\x01\x81\x90R``\x82\x01\x88\x90R`\x80\x82\x01\x87\x90R`\xA0\x82\x01\x86\x90R\x82`\xC0\x83`\x05a\x07\xD0Z\x03\xFA\x92P\x82\x80\x15aF\x7FWaF\x81V[\xFE[P\x82aF\xCFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7FBN254.expMod: call failure\0\0\0\0\0\0`D\x82\x01R`d\x01a\x08\xC6V[PQ\x95\x94PPPPPV[`\0\x80`\0aF\xE9\x85\x85aF\xF6V[\x91P\x91Pa\x1D\xED\x81aGfV[`\0\x80\x82Q`A\x14\x15aG-W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaG!\x87\x82\x85\x85aI!V[\x94P\x94PPPPaG_V[\x82Q`@\x14\x15aGWW` \x83\x01Q`@\x84\x01QaGL\x86\x83\x83aJ\x0EV[\x93P\x93PPPaG_V[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aGzWaGzaM\xF5V[\x14\x15aG\x83WPV[`\x01\x81`\x04\x81\x11\x15aG\x97WaG\x97aM\xF5V[\x14\x15aG\xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FECDSA: invalid signature\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x08\xC6V[`\x02\x81`\x04\x81\x11\x15aG\xF9WaG\xF9aM\xF5V[\x14\x15aHGW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x08\xC6V[`\x03\x81`\x04\x81\x11\x15aH[WaH[aM\xF5V[\x14\x15aH\xB4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 's' val`D\x82\x01Raue`\xF0\x1B`d\x82\x01R`\x84\x01a\x08\xC6V[`\x04\x81`\x04\x81\x11\x15aH\xC8WaH\xC8aM\xF5V[\x14\x15a\rNW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 'v' val`D\x82\x01Raue`\xF0\x1B`d\x82\x01R`\x84\x01a\x08\xC6V[`\0\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x83\x11\x15aIXWP`\0\x90P`\x03aJ\x05V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aIpWP\x84`\xFF\x16`\x1C\x14\x15[\x15aI\x81WP`\0\x90P`\x04aJ\x05V[`@\x80Q`\0\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15aI\xD5W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aI\xFEW`\0`\x01\x92P\x92PPaJ\x05V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aJ+`\xFF\x86\x90\x1C`\x1BaYVV[\x90PaJ9\x87\x82\x88\x85aI!V[\x93P\x93PPP\x93P\x93\x91PPV[`@Q\x80` \x01`@R\x80`\x01\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\xC0\x01`@R\x80`\x06\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`\0\x80\x83`\x1F\x84\x01\x12aJ\x95W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aJ\xACW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aG_W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aJ\xDAW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aJ\xF0W`\0\x80\xFD[aJ\xFC\x85\x82\x86\x01aJ\x83V[\x90\x96\x90\x95P\x93PPPPV[`\0` \x82\x84\x03\x12\x15aK\x1AW`\0\x80\xFD[P5\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\rNW`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15aKHW`\0\x80\xFD[\x835\x92P` \x84\x015aKZ\x81aK!V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aK\xA3WaK\xA3aKkV[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aK\xA3WaK\xA3aKkV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aK\xF3WaK\xF3aKkV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x83\x11\x15aL\x14WaL\x14aKkV[aL'`\x1F\x84\x01`\x1F\x19\x16` \x01aK\xCBV[\x90P\x82\x81R\x83\x83\x83\x01\x11\x15aL;W`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15aLdW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aLzW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aL\x8BW`\0\x80\xFD[aL\x9A\x84\x825` \x84\x01aK\xFBV[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\rNW`\0\x80\xFD[\x805aL\xC2\x81aL\xA2V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15aL\xD9W`\0\x80\xFD[\x815a)\x05\x81aL\xA2V[`\0\x80`@\x83\x85\x03\x12\x15aL\xF7W`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[\x805`\xFF\x81\x16\x81\x14aL\xC2W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aM)W`\0\x80\xFD[a)\x05\x82aM\x06V[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x0F\x19V[`\0\x80\x83`\x1F\x84\x01\x12aM[W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aMrW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aG_W`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aM\xA0W`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aM\xB7W`\0\x80\xFD[aM\xC3\x88\x83\x89\x01aJ\x83V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aM\xDCW`\0\x80\xFD[PaM\xE9\x87\x82\x88\x01aMIV[\x95\x98\x94\x97P\x95PPPPV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`\x03\x81\x10aN)WcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[\x81Q\x81R` \x80\x83\x01Q`@\x83\x01\x91aNH\x90\x84\x01\x82aN\x0BV[P\x92\x91PPV[\x805a\xFF\xFF\x81\x16\x81\x14aL\xC2W`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aNsW`\0\x80\xFD[aN{aK\x81V[\x90P\x815aN\x88\x81aK!V[\x81RaN\x96` \x83\x01aNOV[` \x82\x01RaN\xA7`@\x83\x01aNOV[`@\x82\x01R\x92\x91PPV[`\0\x80`\x80\x83\x85\x03\x12\x15aN\xC5W`\0\x80\xFD[aN\xCE\x83aM\x06V[\x91PaN\xDD\x84` \x85\x01aNaV[\x90P\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15aN\xFBW`\0\x80\xFD[\x835aO\x06\x81aL\xA2V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aO!W`\0\x80\xFD[aO-\x86\x82\x87\x01aMIV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aOSWaOSaKkV[P`\x05\x1B` \x01\x90V[`\0`@\x82\x84\x03\x12\x15aOoW`\0\x80\xFD[aOwaK\xA9V[\x90PaO\x82\x82aM\x06V[\x81R` \x82\x015aO\x92\x81aL\xA2V[` \x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aO\xB5W`\0\x80\xFD[\x855aO\xC0\x81aL\xA2V[\x94P` \x86\x81\x015\x94P`@\x80\x88\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aO\xE4W`\0\x80\xFD[\x88\x01`\x1F\x81\x01\x8A\x13aO\xF5W`\0\x80\xFD[\x805aP\x08aP\x03\x82aO:V[aK\xCBV[\x81\x81R`\x06\x91\x90\x91\x1B\x82\x01\x84\x01\x90\x84\x81\x01\x90\x8C\x83\x11\x15aP'W`\0\x80\xFD[\x92\x85\x01\x92[\x82\x84\x10\x15aPMWaP>\x8D\x85aO]V[\x82R\x92\x84\x01\x92\x90\x85\x01\x90aP,V[\x99\x9C\x98\x9BP\x98\x99``\x81\x015\x99P`\x80\x015\x97\x96PPPPPPPV[`\0a\x01\0\x82\x84\x03\x12\x15aP}W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aP\x95W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aP\xACW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x06\x1B\x85\x01\x01\x11\x15aG_W`\0\x80\xFD[`\0``\x82\x84\x03\x12\x15aP\xD9W`\0\x80\xFD[aP\xE1aK\x81V[\x90P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aP\xF9W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13aQ\nW`\0\x80\xFD[aQ\x19\x84\x825` \x84\x01aK\xFBV[\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01\xA0\x8A\x8C\x03\x12\x15aQUW`\0\x80\xFD[\x895`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aQlW`\0\x80\xFD[aQx\x8D\x83\x8E\x01aMIV[\x90\x9BP\x99P` \x8C\x015\x91P\x80\x82\x11\x15aQ\x91W`\0\x80\xFD[aQ\x9D\x8D\x83\x8E\x01aMIV[\x90\x99P\x97P\x87\x91PaQ\xB2\x8D`@\x8E\x01aPjV[\x96Pa\x01@\x8C\x015\x91P\x80\x82\x11\x15aQ\xC9W`\0\x80\xFD[aQ\xD5\x8D\x83\x8E\x01aP\x83V[\x90\x96P\x94Pa\x01`\x8C\x015\x91P\x80\x82\x11\x15aQ\xEFW`\0\x80\xFD[aQ\xFB\x8D\x83\x8E\x01aP\xC7V[\x93Pa\x01\x80\x8C\x015\x91P\x80\x82\x11\x15aR\x12W`\0\x80\xFD[PaR\x1F\x8C\x82\x8D\x01aP\xC7V[\x91PP\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80a\x01`\x87\x89\x03\x12\x15aRIW`\0\x80\xFD[\x865`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aR`W`\0\x80\xFD[aRl\x8A\x83\x8B\x01aMIV[\x90\x98P\x96P` \x89\x015\x91P\x80\x82\x11\x15aR\x85W`\0\x80\xFD[aR\x91\x8A\x83\x8B\x01aMIV[\x90\x96P\x94P\x84\x91PaR\xA6\x8A`@\x8B\x01aPjV[\x93Pa\x01@\x89\x015\x91P\x80\x82\x11\x15aR\xBDW`\0\x80\xFD[PaR\xCA\x89\x82\x8A\x01aP\xC7V[\x91PP\x92\x95P\x92\x95P\x92\x95V[`\0\x80`@\x83\x85\x03\x12\x15aR\xEAW`\0\x80\xFD[\x825aR\xF5\x81aK!V[\x91P` \x83\x81\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aS\x11W`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13aS\"W`\0\x80\xFD[\x805aS0aP\x03\x82aO:V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15aSOW`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15aSmW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90aSTV[\x80\x95PPPPPP\x92P\x92\x90PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15aS\xBAW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aS\x98V[P\x90\x96\x95PPPPPPV[`\0\x80` \x83\x85\x03\x12\x15aS\xD9W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aS\xEFW`\0\x80\xFD[aJ\xFC\x85\x82\x86\x01aMIV[`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\rNW`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12aT!W`\0\x80\xFD[\x815` aT1aP\x03\x83aO:V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aTPW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aT\xA1W`@\x81\x89\x03\x12\x15aTmW`\0\x80\x81\xFD[aTuaK\xA9V[\x815aT\x80\x81aL\xA2V[\x81R\x81\x85\x015aT\x8F\x81aS\xFBV[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01aTTV[P\x96\x95PPPPPPV[`\0\x80`\0`\xA0\x84\x86\x03\x12\x15aT\xC1W`\0\x80\xFD[aT\xCB\x85\x85aNaV[\x92P``\x84\x015aT\xDB\x81aS\xFBV[\x91P`\x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aT\xF6W`\0\x80\xFD[aU\x02\x86\x82\x87\x01aT\x10V[\x91PP\x92P\x92P\x92V[`\0\x82`\x1F\x83\x01\x12aU\x1DW`\0\x80\xFD[\x815` aU-aP\x03\x83aO:V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15aULW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15aUoWaUb\x89\x82aNaV[\x84R\x92\x84\x01\x92\x81\x01aUPV[P\x90\x97\x96PPPPPPPV[`\0\x82`\x1F\x83\x01\x12aU\x8DW`\0\x80\xFD[\x815` aU\x9DaP\x03\x83aO:V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aU\xBCW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aT\xA1W\x805aU\xD3\x81aS\xFBV[\x83R\x91\x83\x01\x91\x83\x01aU\xC0V[`\0\x82`\x1F\x83\x01\x12aU\xF1W`\0\x80\xFD[\x815` aV\x01aP\x03\x83aO:V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aV W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aT\xA1W\x805`\x01`\x01`@\x1B\x03\x81\x11\x15aVCW`\0\x80\x81\xFD[aVQ\x89\x86\x83\x8B\x01\x01aT\x10V[\x84RP\x91\x83\x01\x91\x83\x01aV$V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15aV|W`\0\x80\xFD[aV\x85\x89aL\xB7V[\x97PaV\x93` \x8A\x01aL\xB7V[\x96PaV\xA1`@\x8A\x01aL\xB7V[\x95PaV\xAF``\x8A\x01aL\xB7V[\x94P`\x80\x89\x015\x93P`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aV\xD2W`\0\x80\xFD[aV\xDE\x8C\x83\x8D\x01aU\x0CV[\x94P`\xC0\x8B\x015\x91P\x80\x82\x11\x15aV\xF4W`\0\x80\xFD[aW\0\x8C\x83\x8D\x01aU|V[\x93P`\xE0\x8B\x015\x91P\x80\x82\x11\x15aW\x16W`\0\x80\xFD[PaW#\x8B\x82\x8C\x01aU\xE0V[\x91PP\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[` \x81\x01a\x0F\x19\x82\x84aN\x0BV[` \x80\x82R`\x19\x90\x82\x01R\x7FPausable: index is paused\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15aW\xB8WaW\xB8aW\x8EV[P`\x01\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15aW\xE5W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01aW\xC9V[\x81\x81\x11\x15aW\xF7W`\0` \x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a)\x05` \x83\x01\x84aW\xBFV[`\0` \x82\x84\x03\x12\x15aX1W`\0\x80\xFD[\x81Qa)\x05\x81aL\xA2V[` \x80\x82R`*\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Ri9\x90:\xB780\xBA\xB9\xB2\xB9`\xB1\x1B``\x82\x01R`\x80\x01\x90V[`\0` \x82\x84\x03\x12\x15aX\x98W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a)\x05W`\0\x80\xFD[` \x80\x82R`(\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Rg9\x9080\xBA\xB9\xB2\xB9`\xC1\x1B``\x82\x01R`\x80\x01\x90V[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aY\x07W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aY!W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aG_W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aYKW`\0\x80\xFD[\x81Qa)\x05\x81aK!V[`\0\x82\x19\x82\x11\x15aYiWaYiaW\x8EV[P\x01\x90V[`\0\x80\x85\x85\x11\x15aY~W`\0\x80\xFD[\x83\x86\x11\x15aY\x8BW`\0\x80\xFD[PP\x82\x01\x93\x91\x90\x92\x03\x91PV[`\0`\xC0\x82\x01\x88\x83R` `\x01\x80`\xA0\x1B\x03\x80\x8A\x16\x82\x86\x01R`@\x89\x81\x87\x01R`\xC0``\x87\x01R\x83\x89Q\x80\x86R`\xE0\x88\x01\x91P\x84\x8B\x01\x95P`\0[\x81\x81\x10\x15aY\xFDW\x86Q\x80Q`\xFF\x16\x84R\x86\x01Q\x85\x16\x86\x84\x01R\x95\x85\x01\x95\x91\x83\x01\x91`\x01\x01aY\xD3V[PP`\x80\x87\x01\x98\x90\x98RPPPP`\xA0\x90\x91\x01\x91\x90\x91RP\x94\x93PPPPV[`\0`@\x82\x84\x03\x12\x15aZ/W`\0\x80\xFD[a)\x05\x83\x83aO]V[`\0\x82\x82\x10\x15aZKWaZKaW\x8EV[P\x03\x90V[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\0aZw``\x83\x01\x84aW\xBFV[\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15aZ\x92W`\0\x80\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a)\x05W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[`\0\x82aZ\xCEWaZ\xCEaZ\xA9V[P\x06\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\0\x90aL\x9A\x90\x83\x01\x84aW\xBFV[\x82\x81R`@` \x82\x01R`\0aL\x9A`@\x83\x01\x84aW\xBFV[`\0` \x82\x84\x03\x12\x15a[\"W`\0\x80\xFD[PQ\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81Ra\x01`\x81\x01a[Q` \x83\x01\x85\x805\x82R` \x90\x81\x015\x91\x01RV[a[k``\x83\x01`@\x86\x01\x805\x82R` \x90\x81\x015\x91\x01RV[`@`\x80\x85\x01`\xA0\x84\x017`\xE0\x82\x01`\0\x81R`@`\xC0\x86\x01\x827P`\0a\x01 \x83\x01\x90\x81R\x83Q\x90R` \x90\x92\x01Qa\x01@\x90\x91\x01R\x92\x91PPV[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01R`\0\x82Q```@\x84\x01Ra[\xD2`\xA0\x84\x01\x82aW\xBFV[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[\x81\x83R\x81\x81` \x85\x017P`\0\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\0\x90aZw\x90\x83\x01\x84\x86a[\xF3V[`\x01\x80`\xA0\x1B\x03\x85\x16\x81R\x83` \x82\x01R```@\x82\x01R`\0a\x18R``\x83\x01\x84\x86a[\xF3V[`\0\x82`\x1F\x83\x01\x12a\\zW`\0\x80\xFD[\x81Q` a\\\x8AaP\x03\x83aO:V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\\\xA9W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aT\xA1W\x80Qa\\\xC0\x81aS\xFBV[\x83R\x91\x83\x01\x91\x83\x01a\\\xADV[`\0\x80`@\x83\x85\x03\x12\x15a\\\xE0W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\\\xF7W`\0\x80\xFD[a]\x03\x86\x83\x87\x01a\\iV[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15a]\x19W`\0\x80\xFD[Pa]&\x85\x82\x86\x01a\\iV[\x91PP\x92P\x92\x90PV[\x83\x81R`@` \x82\x01R`\0aZw`@\x83\x01\x84\x86a[\xF3V[`\0` \x80\x83\x85\x03\x12\x15a]]W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a]sW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a]\x84W`\0\x80\xFD[\x80Qa]\x92aP\x03\x82aO:V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a]\xB1W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a]\xD8W\x83Qa]\xC9\x81aK!V[\x82R\x92\x84\x01\x92\x90\x84\x01\x90a]\xB6V[\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a]\xF5W`\0\x80\xFD[\x81Qa)\x05\x81aS\xFBV[`\0`\xFF\x82\x16`\xFF\x84\x16\x80`\xFF\x03\x82\x11\x15a^\x1DWa^\x1DaW\x8EV[\x01\x93\x92PPPV[`\0``\x82\x01`\xFF\x86\x16\x83R` `\x01`\x01``\x1B\x03\x80\x87\x16\x82\x86\x01R`@``\x81\x87\x01R\x83\x87Q\x80\x86R`\x80\x88\x01\x91P\x84\x89\x01\x95P`\0[\x81\x81\x10\x15a^\x8EW\x86Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x86\x01Q\x85\x16\x86\x84\x01R\x95\x85\x01\x95\x91\x83\x01\x91`\x01\x01a^^V[P\x90\x9A\x99PPPPPPPPPPV[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x14\x15a^\xB6Wa^\xB6aW\x8EV[`\x01\x01\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a^\xD2W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a)\x05W`\0\x80\xFD[`\0`\x01`\x01``\x1B\x03\x80\x83\x16\x81\x85\x16\x81\x83\x04\x81\x11\x82\x15\x15\x16\x15a_\x10Wa_\x10aW\x8EV[\x02\x94\x93PPPPV[`\0`\x01`\x01``\x1B\x03\x80\x84\x16\x80a_3Wa_3aZ\xA9V[\x92\x16\x91\x90\x91\x04\x92\x91PPV\xFERegistryCoordinator.updateOperatRegistryCoordinator._validateChu0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\xA2dipfsX\"\x12 t\x91\xACv\xA1\xCD\x7F\xCE\x1D-\x0C\xD9\x06uM^\xFD\xF63Z\r\xCB\xFE\xDA&\x92BMw{JJdsolcC\0\x08\x0C\x003", + ); + /**Event with signature `ChurnApproverUpdated(address,address)` and selector `0x315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c`. + ```solidity + event ChurnApproverUpdated(address prevChurnApprover, address newChurnApprover); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct ChurnApproverUpdated { + #[allow(missing_docs)] + pub prevChurnApprover: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newChurnApprover: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ChurnApproverUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "ChurnApproverUpdated(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 49u8, 84u8, 87u8, 216u8, 168u8, 254u8, 96u8, 240u8, 74u8, 241u8, 124u8, 22u8, + 226u8, 245u8, 165u8, 225u8, 219u8, 97u8, 43u8, 49u8, 100u8, 142u8, 88u8, 3u8, + 3u8, 96u8, 117u8, 158u8, 248u8, 243u8, 82u8, 140u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + prevChurnApprover: data.0, + newChurnApprover: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.prevChurnApprover, + ), + ::tokenize( + &self.newChurnApprover, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ChurnApproverUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ChurnApproverUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ChurnApproverUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `EjectorUpdated(address,address)` and selector `0x8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9`. + ```solidity + event EjectorUpdated(address prevEjector, address newEjector); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct EjectorUpdated { + #[allow(missing_docs)] + pub prevEjector: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newEjector: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for EjectorUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "EjectorUpdated(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 143u8, 48u8, 171u8, 9u8, 244u8, 58u8, 108u8, 21u8, 125u8, 127u8, 206u8, 126u8, + 10u8, 19u8, 192u8, 3u8, 4u8, 44u8, 28u8, 149u8, 232u8, 167u8, 46u8, 122u8, + 20u8, 106u8, 33u8, 192u8, 202u8, 162u8, 77u8, 201u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + prevEjector: data.0, + newEjector: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.prevEjector, + ), + ::tokenize( + &self.newEjector, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for EjectorUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&EjectorUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &EjectorUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`. + ```solidity + event Initialized(uint8 version); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Initialized { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "Initialized(uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, + 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, + 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { version: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.version, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Initialized { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Initialized> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Initialized) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorDeregistered(address,bytes32)` and selector `0x396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e4`. + ```solidity + event OperatorDeregistered(address indexed operator, bytes32 indexed operatorId); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorDeregistered { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorDeregistered { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + const SIGNATURE: &'static str = "OperatorDeregistered(address,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 57u8, 111u8, 220u8, 177u8, 128u8, 203u8, 15u8, 234u8, 38u8, 146u8, 129u8, 19u8, + 251u8, 15u8, 209u8, 195u8, 84u8, 152u8, 99u8, 249u8, 205u8, 86u8, 62u8, 106u8, + 24u8, 79u8, 29u8, 87u8, 129u8, 22u8, 200u8, 228u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: topics.1, + operatorId: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.operator.clone(), + self.operatorId.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + out[2usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.operatorId); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorDeregistered { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorDeregistered> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorDeregistered) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorRegistered(address,bytes32)` and selector `0xe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe`. + ```solidity + event OperatorRegistered(address indexed operator, bytes32 indexed operatorId); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorRegistered { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorRegistered { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + const SIGNATURE: &'static str = "OperatorRegistered(address,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 232u8, 230u8, 140u8, 239u8, 28u8, 58u8, 118u8, 30u8, 215u8, 190u8, 126u8, + 132u8, 99u8, 163u8, 117u8, 242u8, 127u8, 123u8, 195u8, 53u8, 229u8, 24u8, 36u8, + 34u8, 60u8, 172u8, 206u8, 99u8, 110u8, 197u8, 195u8, 254u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: topics.1, + operatorId: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.operator.clone(), + self.operatorId.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + out[2usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.operatorId); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorRegistered { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorRegistered> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorRegistered) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorSetParamsUpdated(uint8,(uint32,uint16,uint16))` and selector `0x3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac`. + ```solidity + event OperatorSetParamsUpdated(uint8 indexed quorumNumber, IRegistryCoordinator.OperatorSetParam operatorSetParams); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorSetParamsUpdated { + #[allow(missing_docs)] + pub quorumNumber: u8, + #[allow(missing_docs)] + pub operatorSetParams: + ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorSetParamsUpdated { + type DataTuple<'a> = (IRegistryCoordinator::OperatorSetParam,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + const SIGNATURE: &'static str = + "OperatorSetParamsUpdated(uint8,(uint32,uint16,uint16))"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 62u8, 230u8, 254u8, 141u8, 84u8, 97u8, 2u8, 68u8, 195u8, 233u8, 211u8, 192u8, + 102u8, 174u8, 74u8, 238u8, 153u8, 120u8, 132u8, 170u8, 40u8, 241u8, 6u8, 22u8, + 174u8, 130u8, 25u8, 37u8, 64u8, 19u8, 24u8, 172u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + quorumNumber: topics.1, + operatorSetParams: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.operatorSetParams, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorSetParamsUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorSetParamsUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorSetParamsUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorSocketUpdate(bytes32,string)` and selector `0xec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa`. + ```solidity + event OperatorSocketUpdate(bytes32 indexed operatorId, string socket); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorSocketUpdate { + #[allow(missing_docs)] + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub socket: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorSocketUpdate { + type DataTuple<'a> = (alloy::sol_types::sol_data::String,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + const SIGNATURE: &'static str = "OperatorSocketUpdate(bytes32,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 236u8, 41u8, 99u8, 171u8, 33u8, 193u8, 229u8, 14u8, 30u8, 88u8, 42u8, 165u8, + 66u8, 175u8, 46u8, 75u8, 247u8, 191u8, 56u8, 230u8, 225u8, 64u8, 60u8, 39u8, + 180u8, 46u8, 28u8, 93u8, 110u8, 98u8, 30u8, 170u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operatorId: topics.1, + socket: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.socket, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.operatorId.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.operatorId); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorSocketUpdate { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorSocketUpdate> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorSocketUpdate) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. + ```solidity + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub previousOwner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, + 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, + 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + previousOwner: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.previousOwner.clone(), + self.newOwner.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.previousOwner, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Paused(address,uint256)` and selector `0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d`. + ```solidity + event Paused(address indexed account, uint256 newPausedStatus); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Paused { + #[allow(missing_docs)] + pub account: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Paused { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Paused(address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8, 188u8, + 152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8, 11u8, 182u8, + 224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + account: topics.1, + newPausedStatus: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.account.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.account, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Paused { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Paused> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Paused) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `PauserRegistrySet(address,address)` and selector `0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6`. + ```solidity + event PauserRegistrySet(address pauserRegistry, address newPauserRegistry); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct PauserRegistrySet { + #[allow(missing_docs)] + pub pauserRegistry: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newPauserRegistry: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for PauserRegistrySet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "PauserRegistrySet(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 110u8, 159u8, 205u8, 83u8, 152u8, 150u8, 252u8, 166u8, 14u8, 139u8, 15u8, 1u8, + 221u8, 88u8, 2u8, 51u8, 228u8, 138u8, 107u8, 15u8, 125u8, 240u8, 19u8, 184u8, + 155u8, 167u8, 245u8, 101u8, 134u8, 154u8, 205u8, 182u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + pauserRegistry: data.0, + newPauserRegistry: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.pauserRegistry, + ), + ::tokenize( + &self.newPauserRegistry, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for PauserRegistrySet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&PauserRegistrySet> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &PauserRegistrySet) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `QuorumBlockNumberUpdated(uint8,uint256)` and selector `0x46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4`. + ```solidity + event QuorumBlockNumberUpdated(uint8 indexed quorumNumber, uint256 blocknumber); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct QuorumBlockNumberUpdated { + #[allow(missing_docs)] + pub quorumNumber: u8, + #[allow(missing_docs)] + pub blocknumber: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for QuorumBlockNumberUpdated { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + const SIGNATURE: &'static str = "QuorumBlockNumberUpdated(uint8,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 70u8, 7u8, 125u8, 85u8, 51u8, 7u8, 99u8, 241u8, 98u8, 105u8, 253u8, 117u8, + 229u8, 118u8, 22u8, 99u8, 244u8, 25u8, 45u8, 39u8, 145u8, 116u8, 124u8, 1u8, + 137u8, 177u8, 106u8, 211u8, 29u8, 176u8, 125u8, 180u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + quorumNumber: topics.1, + blocknumber: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.blocknumber, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for QuorumBlockNumberUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&QuorumBlockNumberUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &QuorumBlockNumberUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Unpaused(address,uint256)` and selector `0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c`. + ```solidity + event Unpaused(address indexed account, uint256 newPausedStatus); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Unpaused { + #[allow(missing_docs)] + pub account: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Unpaused { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Unpaused(address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8, 2u8, + 188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8, 228u8, 152u8, + 107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + account: topics.1, + newPausedStatus: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.account.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.account, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Unpaused { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Unpaused> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Unpaused) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. + ```solidity + constructor(address _serviceManager, address _stakeRegistry, address _blsApkRegistry, address _indexRegistry); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _serviceManager: alloy::sol_types::private::Address, + pub _stakeRegistry: alloy::sol_types::private::Address, + pub _blsApkRegistry: alloy::sol_types::private::Address, + pub _indexRegistry: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + ( + value._serviceManager, + value._stakeRegistry, + value._blsApkRegistry, + value._indexRegistry, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _serviceManager: tuple.0, + _stakeRegistry: tuple.1, + _blsApkRegistry: tuple.2, + _indexRegistry: tuple.3, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._serviceManager, + ), + ::tokenize( + &self._stakeRegistry, + ), + ::tokenize( + &self._blsApkRegistry, + ), + ::tokenize( + &self._indexRegistry, + ), + ) + } + } + }; + /**Function with signature `OPERATOR_CHURN_APPROVAL_TYPEHASH()` and selector `0xca0de882`. + ```solidity + function OPERATOR_CHURN_APPROVAL_TYPEHASH() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OPERATOR_CHURN_APPROVAL_TYPEHASHCall {} + ///Container type for the return parameters of the [`OPERATOR_CHURN_APPROVAL_TYPEHASH()`](OPERATOR_CHURN_APPROVAL_TYPEHASHCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OPERATOR_CHURN_APPROVAL_TYPEHASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OPERATOR_CHURN_APPROVAL_TYPEHASHCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OPERATOR_CHURN_APPROVAL_TYPEHASHCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OPERATOR_CHURN_APPROVAL_TYPEHASHReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OPERATOR_CHURN_APPROVAL_TYPEHASHReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for OPERATOR_CHURN_APPROVAL_TYPEHASHCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = OPERATOR_CHURN_APPROVAL_TYPEHASHReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "OPERATOR_CHURN_APPROVAL_TYPEHASH()"; + const SELECTOR: [u8; 4] = [202u8, 13u8, 232u8, 130u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `PUBKEY_REGISTRATION_TYPEHASH()` and selector `0x9feab859`. + ```solidity + function PUBKEY_REGISTRATION_TYPEHASH() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct PUBKEY_REGISTRATION_TYPEHASHCall {} + ///Container type for the return parameters of the [`PUBKEY_REGISTRATION_TYPEHASH()`](PUBKEY_REGISTRATION_TYPEHASHCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct PUBKEY_REGISTRATION_TYPEHASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: PUBKEY_REGISTRATION_TYPEHASHCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for PUBKEY_REGISTRATION_TYPEHASHCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: PUBKEY_REGISTRATION_TYPEHASHReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for PUBKEY_REGISTRATION_TYPEHASHReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for PUBKEY_REGISTRATION_TYPEHASHCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = PUBKEY_REGISTRATION_TYPEHASHReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "PUBKEY_REGISTRATION_TYPEHASH()"; + const SELECTOR: [u8; 4] = [159u8, 234u8, 184u8, 89u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `blsApkRegistry()` and selector `0x5df45946`. + ```solidity + function blsApkRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct blsApkRegistryCall {} + ///Container type for the return parameters of the [`blsApkRegistry()`](blsApkRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct blsApkRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: blsApkRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for blsApkRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: blsApkRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for blsApkRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for blsApkRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = blsApkRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "blsApkRegistry()"; + const SELECTOR: [u8; 4] = [93u8, 244u8, 89u8, 70u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `calculateOperatorChurnApprovalDigestHash(address,bytes32,(uint8,address)[],bytes32,uint256)` and selector `0x84ca5213`. + ```solidity + function calculateOperatorChurnApprovalDigestHash(address registeringOperator, bytes32 registeringOperatorId, IRegistryCoordinator.OperatorKickParam[] memory operatorKickParams, bytes32 salt, uint256 expiry) external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct calculateOperatorChurnApprovalDigestHashCall { + pub registeringOperator: alloy::sol_types::private::Address, + pub registeringOperatorId: alloy::sol_types::private::FixedBytes<32>, + pub operatorKickParams: alloy::sol_types::private::Vec< + ::RustType, + >, + pub salt: alloy::sol_types::private::FixedBytes<32>, + pub expiry: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`calculateOperatorChurnApprovalDigestHash(address,bytes32,(uint8,address)[],bytes32,uint256)`](calculateOperatorChurnApprovalDigestHashCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct calculateOperatorChurnApprovalDigestHashReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: calculateOperatorChurnApprovalDigestHashCall) -> Self { + ( + value.registeringOperator, + value.registeringOperatorId, + value.operatorKickParams, + value.salt, + value.expiry, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for calculateOperatorChurnApprovalDigestHashCall + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + registeringOperator: tuple.0, + registeringOperatorId: tuple.1, + operatorKickParams: tuple.2, + salt: tuple.3, + expiry: tuple.4, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> + { + fn from(value: calculateOperatorChurnApprovalDigestHashReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for calculateOperatorChurnApprovalDigestHashReturn + { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for calculateOperatorChurnApprovalDigestHashCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = calculateOperatorChurnApprovalDigestHashReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "calculateOperatorChurnApprovalDigestHash(address,bytes32,(uint8,address)[],bytes32,uint256)"; + const SELECTOR: [u8; 4] = [132u8, 202u8, 82u8, 19u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.registeringOperator, + ), + as alloy_sol_types::SolType>::tokenize( + &self.registeringOperatorId, + ), + as alloy_sol_types::SolType>::tokenize(&self.operatorKickParams), + as alloy_sol_types::SolType>::tokenize(&self.salt), + as alloy_sol_types::SolType>::tokenize(&self.expiry), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `churnApprover()` and selector `0x054310e6`. + ```solidity + function churnApprover() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct churnApproverCall {} + ///Container type for the return parameters of the [`churnApprover()`](churnApproverCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct churnApproverReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: churnApproverCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for churnApproverCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: churnApproverReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for churnApproverReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for churnApproverCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = churnApproverReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "churnApprover()"; + const SELECTOR: [u8; 4] = [5u8, 67u8, 16u8, 230u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `createQuorum((uint32,uint16,uint16),uint96,(address,uint96)[])` and selector `0xd75b4c88`. + ```solidity + function createQuorum(IRegistryCoordinator.OperatorSetParam memory operatorSetParams, uint96 minimumStake, IStakeRegistry.StrategyParams[] memory strategyParams) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct createQuorumCall { + pub operatorSetParams: + ::RustType, + pub minimumStake: alloy::sol_types::private::primitives::aliases::U96, + pub strategyParams: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`createQuorum((uint32,uint16,uint16),uint96,(address,uint96)[])`](createQuorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct createQuorumReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + IRegistryCoordinator::OperatorSetParam, + alloy::sol_types::sol_data::Uint<96>, + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::primitives::aliases::U96, + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: createQuorumCall) -> Self { + ( + value.operatorSetParams, + value.minimumStake, + value.strategyParams, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for createQuorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorSetParams: tuple.0, + minimumStake: tuple.1, + strategyParams: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: createQuorumReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for createQuorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for createQuorumCall { + type Parameters<'a> = ( + IRegistryCoordinator::OperatorSetParam, + alloy::sol_types::sol_data::Uint<96>, + alloy::sol_types::sol_data::Array, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = createQuorumReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "createQuorum((uint32,uint16,uint16),uint96,(address,uint96)[])"; + const SELECTOR: [u8; 4] = [215u8, 91u8, 76u8, 136u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operatorSetParams, + ), + as alloy_sol_types::SolType>::tokenize(&self.minimumStake), + as alloy_sol_types::SolType>::tokenize(&self.strategyParams), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `deregisterOperator(bytes)` and selector `0xca4f2d97`. + ```solidity + function deregisterOperator(bytes memory quorumNumbers) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorCall { + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`deregisterOperator(bytes)`](deregisterOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bytes,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Bytes,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorCall) -> Self { + (value.quorumNumbers,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumbers: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for deregisterOperatorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Bytes,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = deregisterOperatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "deregisterOperator(bytes)"; + const SELECTOR: [u8; 4] = [202u8, 79u8, 45u8, 151u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `ejectOperator(address,bytes)` and selector `0x6e3b17db`. + ```solidity + function ejectOperator(address operator, bytes memory quorumNumbers) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ejectOperatorCall { + pub operator: alloy::sol_types::private::Address, + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`ejectOperator(address,bytes)`](ejectOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ejectOperatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ejectOperatorCall) -> Self { + (value.operator, value.quorumNumbers) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ejectOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + quorumNumbers: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ejectOperatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ejectOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ejectOperatorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ejectOperatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ejectOperator(address,bytes)"; + const SELECTOR: [u8; 4] = [110u8, 59u8, 23u8, 219u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `ejectionCooldown()` and selector `0xa96f783e`. + ```solidity + function ejectionCooldown() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ejectionCooldownCall {} + ///Container type for the return parameters of the [`ejectionCooldown()`](ejectionCooldownCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ejectionCooldownReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ejectionCooldownCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ejectionCooldownCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ejectionCooldownReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ejectionCooldownReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ejectionCooldownCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ejectionCooldownReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ejectionCooldown()"; + const SELECTOR: [u8; 4] = [169u8, 111u8, 120u8, 62u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `ejector()` and selector `0x28f61b31`. + ```solidity + function ejector() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ejectorCall {} + ///Container type for the return parameters of the [`ejector()`](ejectorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ejectorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ejectorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ejectorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ejectorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ejectorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ejectorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ejectorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ejector()"; + const SELECTOR: [u8; 4] = [40u8, 246u8, 27u8, 49u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getCurrentQuorumBitmap(bytes32)` and selector `0x871ef049`. + ```solidity + function getCurrentQuorumBitmap(bytes32 operatorId) external view returns (uint192); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getCurrentQuorumBitmapCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`getCurrentQuorumBitmap(bytes32)`](getCurrentQuorumBitmapCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getCurrentQuorumBitmapReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U192, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCurrentQuorumBitmapCall) -> Self { + (value.operatorId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCurrentQuorumBitmapCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<192>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U192,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCurrentQuorumBitmapReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCurrentQuorumBitmapReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getCurrentQuorumBitmapCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getCurrentQuorumBitmapReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<192>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getCurrentQuorumBitmap(bytes32)"; + const SELECTOR: [u8; 4] = [135u8, 30u8, 240u8, 73u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperator(address)` and selector `0x5865c60c`. + ```solidity + function getOperator(address operator) external view returns (IRegistryCoordinator.OperatorInfo memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getOperator(address)`](getOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IRegistryCoordinator::OperatorInfo,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorReturn; + type ReturnTuple<'a> = (IRegistryCoordinator::OperatorInfo,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperator(address)"; + const SELECTOR: [u8; 4] = [88u8, 101u8, 198u8, 12u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorFromId(bytes32)` and selector `0x296bb064`. + ```solidity + function getOperatorFromId(bytes32 operatorId) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorFromIdCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`getOperatorFromId(bytes32)`](getOperatorFromIdCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorFromIdReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorFromIdCall) -> Self { + (value.operatorId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorFromIdCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorFromIdReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorFromIdReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorFromIdCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorFromIdReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorFromId(bytes32)"; + const SELECTOR: [u8; 4] = [41u8, 107u8, 176u8, 100u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorId(address)` and selector `0x13542a4e`. + ```solidity + function getOperatorId(address operator) external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorIdCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getOperatorId(address)`](getOperatorIdCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorIdReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorIdCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorIdCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorIdReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorIdReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorIdCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorIdReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorId(address)"; + const SELECTOR: [u8; 4] = [19u8, 84u8, 42u8, 78u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorSetParams(uint8)` and selector `0xe65797ad`. + ```solidity + function getOperatorSetParams(uint8 quorumNumber) external view returns (IRegistryCoordinator.OperatorSetParam memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorSetParamsCall { + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`getOperatorSetParams(uint8)`](getOperatorSetParamsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorSetParamsReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorSetParamsCall) -> Self { + (value.quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorSetParamsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IRegistryCoordinator::OperatorSetParam,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorSetParamsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorSetParamsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorSetParamsCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorSetParamsReturn; + type ReturnTuple<'a> = (IRegistryCoordinator::OperatorSetParam,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorSetParams(uint8)"; + const SELECTOR: [u8; 4] = [230u8, 87u8, 151u8, 173u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorStatus(address)` and selector `0xfd39105a`. + ```solidity + function getOperatorStatus(address operator) external view returns (IRegistryCoordinator.OperatorStatus); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorStatusCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getOperatorStatus(address)`](getOperatorStatusCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorStatusReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorStatusCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorStatusCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IRegistryCoordinator::OperatorStatus,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorStatusReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorStatusReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorStatusCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorStatusReturn; + type ReturnTuple<'a> = (IRegistryCoordinator::OperatorStatus,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorStatus(address)"; + const SELECTOR: [u8; 4] = [253u8, 57u8, 16u8, 90u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getQuorumBitmapAtBlockNumberByIndex(bytes32,uint32,uint256)` and selector `0x04ec6351`. + ```solidity + function getQuorumBitmapAtBlockNumberByIndex(bytes32 operatorId, uint32 blockNumber, uint256 index) external view returns (uint192); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumBitmapAtBlockNumberByIndexCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub blockNumber: u32, + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getQuorumBitmapAtBlockNumberByIndex(bytes32,uint32,uint256)`](getQuorumBitmapAtBlockNumberByIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumBitmapAtBlockNumberByIndexReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U192, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + u32, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumBitmapAtBlockNumberByIndexCall) -> Self { + (value.operatorId, value.blockNumber, value.index) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumBitmapAtBlockNumberByIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + blockNumber: tuple.1, + index: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<192>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U192,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumBitmapAtBlockNumberByIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumBitmapAtBlockNumberByIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getQuorumBitmapAtBlockNumberByIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getQuorumBitmapAtBlockNumberByIndexReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<192>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "getQuorumBitmapAtBlockNumberByIndex(bytes32,uint32,uint256)"; + const SELECTOR: [u8; 4] = [4u8, 236u8, 99u8, 81u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.blockNumber), + as alloy_sol_types::SolType>::tokenize(&self.index), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getQuorumBitmapHistoryLength(bytes32)` and selector `0x03fd3492`. + ```solidity + function getQuorumBitmapHistoryLength(bytes32 operatorId) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumBitmapHistoryLengthCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`getQuorumBitmapHistoryLength(bytes32)`](getQuorumBitmapHistoryLengthCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumBitmapHistoryLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumBitmapHistoryLengthCall) -> Self { + (value.operatorId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumBitmapHistoryLengthCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumBitmapHistoryLengthReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumBitmapHistoryLengthReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getQuorumBitmapHistoryLengthCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getQuorumBitmapHistoryLengthReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getQuorumBitmapHistoryLength(bytes32)"; + const SELECTOR: [u8; 4] = [3u8, 253u8, 52u8, 146u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getQuorumBitmapIndicesAtBlockNumber(uint32,bytes32[])` and selector `0xc391425e`. + ```solidity + function getQuorumBitmapIndicesAtBlockNumber(uint32 blockNumber, bytes32[] memory operatorIds) external view returns (uint32[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumBitmapIndicesAtBlockNumberCall { + pub blockNumber: u32, + pub operatorIds: alloy::sol_types::private::Vec>, + } + ///Container type for the return parameters of the [`getQuorumBitmapIndicesAtBlockNumber(uint32,bytes32[])`](getQuorumBitmapIndicesAtBlockNumberCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumBitmapIndicesAtBlockNumberReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Array>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u32, + alloy::sol_types::private::Vec>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumBitmapIndicesAtBlockNumberCall) -> Self { + (value.blockNumber, value.operatorIds) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumBitmapIndicesAtBlockNumberCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + blockNumber: tuple.0, + operatorIds: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumBitmapIndicesAtBlockNumberReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumBitmapIndicesAtBlockNumberReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getQuorumBitmapIndicesAtBlockNumberCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Array>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getQuorumBitmapIndicesAtBlockNumberReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getQuorumBitmapIndicesAtBlockNumber(uint32,bytes32[])"; + const SELECTOR: [u8; 4] = [195u8, 145u8, 66u8, 94u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.blockNumber), + , + > as alloy_sol_types::SolType>::tokenize(&self.operatorIds), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getQuorumBitmapUpdateByIndex(bytes32,uint256)` and selector `0x1eb812da`. + ```solidity + function getQuorumBitmapUpdateByIndex(bytes32 operatorId, uint256 index) external view returns (IRegistryCoordinator.QuorumBitmapUpdate memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumBitmapUpdateByIndexCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getQuorumBitmapUpdateByIndex(bytes32,uint256)`](getQuorumBitmapUpdateByIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumBitmapUpdateByIndexReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumBitmapUpdateByIndexCall) -> Self { + (value.operatorId, value.index) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumBitmapUpdateByIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + index: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IRegistryCoordinator::QuorumBitmapUpdate,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumBitmapUpdateByIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumBitmapUpdateByIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getQuorumBitmapUpdateByIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getQuorumBitmapUpdateByIndexReturn; + type ReturnTuple<'a> = (IRegistryCoordinator::QuorumBitmapUpdate,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getQuorumBitmapUpdateByIndex(bytes32,uint256)"; + const SELECTOR: [u8; 4] = [30u8, 184u8, 18u8, 218u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.index), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `indexRegistry()` and selector `0x9e9923c2`. + ```solidity + function indexRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct indexRegistryCall {} + ///Container type for the return parameters of the [`indexRegistry()`](indexRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct indexRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: indexRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for indexRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: indexRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for indexRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for indexRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = indexRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "indexRegistry()"; + const SELECTOR: [u8; 4] = [158u8, 153u8, 35u8, 194u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `initialize(address,address,address,address,uint256,(uint32,uint16,uint16)[],uint96[],(address,uint96)[][])` and selector `0xdd8283f3`. + ```solidity + function initialize(address _initialOwner, address _churnApprover, address _ejector, address _pauserRegistry, uint256 _initialPausedStatus, IRegistryCoordinator.OperatorSetParam[] memory _operatorSetParams, uint96[] memory _minimumStakes, IStakeRegistry.StrategyParams[][] memory _strategyParams) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeCall { + pub _initialOwner: alloy::sol_types::private::Address, + pub _churnApprover: alloy::sol_types::private::Address, + pub _ejector: alloy::sol_types::private::Address, + pub _pauserRegistry: alloy::sol_types::private::Address, + pub _initialPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + pub _operatorSetParams: alloy::sol_types::private::Vec< + ::RustType, + >, + pub _minimumStakes: + alloy::sol_types::private::Vec, + pub _strategyParams: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec< + ::RustType, + >, + >, + } + ///Container type for the return parameters of the [`initialize(address,address,address,address,uint256,(uint32,uint16,uint16)[],uint96[],(address,uint96)[][])`](initializeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array, + >, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec< + ::RustType, + >, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeCall) -> Self { + ( + value._initialOwner, + value._churnApprover, + value._ejector, + value._pauserRegistry, + value._initialPausedStatus, + value._operatorSetParams, + value._minimumStakes, + value._strategyParams, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _initialOwner: tuple.0, + _churnApprover: tuple.1, + _ejector: tuple.2, + _pauserRegistry: tuple.3, + _initialPausedStatus: tuple.4, + _operatorSetParams: tuple.5, + _minimumStakes: tuple.6, + _strategyParams: tuple.7, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for initializeCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array, + >, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = initializeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "initialize(address,address,address,address,uint256,(uint32,uint16,uint16)[],uint96[],(address,uint96)[][])"; + const SELECTOR: [u8; 4] = [221u8, 130u8, 131u8, 243u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._initialOwner, + ), + ::tokenize( + &self._churnApprover, + ), + ::tokenize( + &self._ejector, + ), + ::tokenize( + &self._pauserRegistry, + ), + as alloy_sol_types::SolType>::tokenize(&self._initialPausedStatus), + as alloy_sol_types::SolType>::tokenize(&self._operatorSetParams), + , + > as alloy_sol_types::SolType>::tokenize(&self._minimumStakes), + , + > as alloy_sol_types::SolType>::tokenize(&self._strategyParams), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `isChurnApproverSaltUsed(bytes32)` and selector `0x1478851f`. + ```solidity + function isChurnApproverSaltUsed(bytes32) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isChurnApproverSaltUsedCall { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`isChurnApproverSaltUsed(bytes32)`](isChurnApproverSaltUsedCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isChurnApproverSaltUsedReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isChurnApproverSaltUsedCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isChurnApproverSaltUsedCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isChurnApproverSaltUsedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isChurnApproverSaltUsedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for isChurnApproverSaltUsedCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = isChurnApproverSaltUsedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "isChurnApproverSaltUsed(bytes32)"; + const SELECTOR: [u8; 4] = [20u8, 120u8, 133u8, 31u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._0), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `lastEjectionTimestamp(address)` and selector `0x125e0584`. + ```solidity + function lastEjectionTimestamp(address) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct lastEjectionTimestampCall { + pub _0: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`lastEjectionTimestamp(address)`](lastEjectionTimestampCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct lastEjectionTimestampReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: lastEjectionTimestampCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for lastEjectionTimestampCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: lastEjectionTimestampReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for lastEjectionTimestampReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for lastEjectionTimestampCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = lastEjectionTimestampReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "lastEjectionTimestamp(address)"; + const SELECTOR: [u8; 4] = [18u8, 94u8, 5u8, 132u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `numRegistries()` and selector `0xd72d8dd6`. + ```solidity + function numRegistries() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct numRegistriesCall {} + ///Container type for the return parameters of the [`numRegistries()`](numRegistriesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct numRegistriesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: numRegistriesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for numRegistriesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: numRegistriesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for numRegistriesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for numRegistriesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = numRegistriesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "numRegistries()"; + const SELECTOR: [u8; 4] = [215u8, 45u8, 141u8, 214u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. + ```solidity + function owner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pause(uint256)` and selector `0x136439dd`. + ```solidity + function pause(uint256 newPausedStatus) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseCall { + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`pause(uint256)`](pauseCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseCall) -> Self { + (value.newPausedStatus,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newPausedStatus: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauseCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pauseReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pause(uint256)"; + const SELECTOR: [u8; 4] = [19u8, 100u8, 57u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pauseAll()` and selector `0x595c6a67`. + ```solidity + function pauseAll() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseAllCall {} + ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseAllReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseAllCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseAllCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseAllReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseAllReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauseAllCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pauseAllReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pauseAll()"; + const SELECTOR: [u8; 4] = [89u8, 92u8, 106u8, 103u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `paused(uint8)` and selector `0x5ac86ab7`. + ```solidity + function paused(uint8 index) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_0Call { + pub index: u8, + } + ///Container type for the return parameters of the [`paused(uint8)`](paused_0Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_0Return { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_0Call) -> Self { + (value.index,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_0Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { index: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_0Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_0Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for paused_0Call { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = paused_0Return; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "paused(uint8)"; + const SELECTOR: [u8; 4] = [90u8, 200u8, 106u8, 183u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `paused()` and selector `0x5c975abb`. + ```solidity + function paused() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_1Call {} + ///Container type for the return parameters of the [`paused()`](paused_1Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_1Return { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_1Call) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_1Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for paused_1Call { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = paused_1Return; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "paused()"; + const SELECTOR: [u8; 4] = [92u8, 151u8, 90u8, 187u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pauserRegistry()` and selector `0x886f1195`. + ```solidity + function pauserRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauserRegistryCall {} + ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauserRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauserRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauserRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauserRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauserRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauserRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pauserRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pauserRegistry()"; + const SELECTOR: [u8; 4] = [136u8, 111u8, 17u8, 149u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pubkeyRegistrationMessageHash(address)` and selector `0x3c2a7f4c`. + ```solidity + function pubkeyRegistrationMessageHash(address operator) external view returns (BN254.G1Point memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pubkeyRegistrationMessageHashCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`pubkeyRegistrationMessageHash(address)`](pubkeyRegistrationMessageHashCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pubkeyRegistrationMessageHashReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pubkeyRegistrationMessageHashCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pubkeyRegistrationMessageHashCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (BN254::G1Point,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pubkeyRegistrationMessageHashReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pubkeyRegistrationMessageHashReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pubkeyRegistrationMessageHashCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pubkeyRegistrationMessageHashReturn; + type ReturnTuple<'a> = (BN254::G1Point,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pubkeyRegistrationMessageHash(address)"; + const SELECTOR: [u8; 4] = [60u8, 42u8, 127u8, 76u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `quorumCount()` and selector `0x9aa1653d`. + ```solidity + function quorumCount() external view returns (uint8); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct quorumCountCall {} + ///Container type for the return parameters of the [`quorumCount()`](quorumCountCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct quorumCountReturn { + pub _0: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: quorumCountCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for quorumCountCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: quorumCountReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for quorumCountReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for quorumCountCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = quorumCountReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "quorumCount()"; + const SELECTOR: [u8; 4] = [154u8, 161u8, 101u8, 61u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `quorumUpdateBlockNumber(uint8)` and selector `0x249a0c42`. + ```solidity + function quorumUpdateBlockNumber(uint8) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct quorumUpdateBlockNumberCall { + pub _0: u8, + } + ///Container type for the return parameters of the [`quorumUpdateBlockNumber(uint8)`](quorumUpdateBlockNumberCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct quorumUpdateBlockNumberReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: quorumUpdateBlockNumberCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for quorumUpdateBlockNumberCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: quorumUpdateBlockNumberReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for quorumUpdateBlockNumberReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for quorumUpdateBlockNumberCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = quorumUpdateBlockNumberReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "quorumUpdateBlockNumber(uint8)"; + const SELECTOR: [u8; 4] = [36u8, 154u8, 12u8, 66u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registerOperator(bytes,string,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(bytes,bytes32,uint256))` and selector `0xa50857bf`. + ```solidity + function registerOperator(bytes memory quorumNumbers, string memory socket, IBLSApkRegistry.PubkeyRegistrationParams memory params, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorCall { + pub quorumNumbers: alloy::sol_types::private::Bytes, + pub socket: alloy::sol_types::private::String, + pub params: + ::RustType, + pub operatorSignature: + ::RustType, + } + ///Container type for the return parameters of the [`registerOperator(bytes,string,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(bytes,bytes32,uint256))`](registerOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::String, + IBLSApkRegistry::PubkeyRegistrationParams, + ISignatureUtils::SignatureWithSaltAndExpiry, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::String, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorCall) -> Self { + ( + value.quorumNumbers, + value.socket, + value.params, + value.operatorSignature, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumbers: tuple.0, + socket: tuple.1, + params: tuple.2, + operatorSignature: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registerOperatorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::String, + IBLSApkRegistry::PubkeyRegistrationParams, + ISignatureUtils::SignatureWithSaltAndExpiry, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registerOperatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registerOperator(bytes,string,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(bytes,bytes32,uint256))"; + const SELECTOR: [u8; 4] = [165u8, 8u8, 87u8, 191u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.quorumNumbers, + ), + ::tokenize( + &self.socket, + ), + ::tokenize( + &self.params, + ), + ::tokenize( + &self.operatorSignature, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registerOperatorWithChurn(bytes,string,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(uint8,address)[],(bytes,bytes32,uint256),(bytes,bytes32,uint256))` and selector `0x9b5d177b`. + ```solidity + function registerOperatorWithChurn(bytes memory quorumNumbers, string memory socket, IBLSApkRegistry.PubkeyRegistrationParams memory params, IRegistryCoordinator.OperatorKickParam[] memory operatorKickParams, ISignatureUtils.SignatureWithSaltAndExpiry memory churnApproverSignature, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorWithChurnCall { + pub quorumNumbers: alloy::sol_types::private::Bytes, + pub socket: alloy::sol_types::private::String, + pub params: + ::RustType, + pub operatorKickParams: alloy::sol_types::private::Vec< + ::RustType, + >, + pub churnApproverSignature: + ::RustType, + pub operatorSignature: + ::RustType, + } + ///Container type for the return parameters of the [`registerOperatorWithChurn(bytes,string,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(uint8,address)[],(bytes,bytes32,uint256),(bytes,bytes32,uint256))`](registerOperatorWithChurnCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorWithChurnReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::String, + IBLSApkRegistry::PubkeyRegistrationParams, + alloy::sol_types::sol_data::Array, + ISignatureUtils::SignatureWithSaltAndExpiry, + ISignatureUtils::SignatureWithSaltAndExpiry, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::String, + ::RustType, + alloy::sol_types::private::Vec< + ::RustType, + >, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorWithChurnCall) -> Self { + ( + value.quorumNumbers, + value.socket, + value.params, + value.operatorKickParams, + value.churnApproverSignature, + value.operatorSignature, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorWithChurnCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumbers: tuple.0, + socket: tuple.1, + params: tuple.2, + operatorKickParams: tuple.3, + churnApproverSignature: tuple.4, + operatorSignature: tuple.5, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorWithChurnReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorWithChurnReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registerOperatorWithChurnCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::String, + IBLSApkRegistry::PubkeyRegistrationParams, + alloy::sol_types::sol_data::Array, + ISignatureUtils::SignatureWithSaltAndExpiry, + ISignatureUtils::SignatureWithSaltAndExpiry, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registerOperatorWithChurnReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registerOperatorWithChurn(bytes,string,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(uint8,address)[],(bytes,bytes32,uint256),(bytes,bytes32,uint256))"; + const SELECTOR: [u8; 4] = [155u8, 93u8, 23u8, 123u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.quorumNumbers, + ), + ::tokenize( + &self.socket, + ), + ::tokenize( + &self.params, + ), + as alloy_sol_types::SolType>::tokenize(&self.operatorKickParams), + ::tokenize( + &self.churnApproverSignature, + ), + ::tokenize( + &self.operatorSignature, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registries(uint256)` and selector `0x6347c900`. + ```solidity + function registries(uint256) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registriesCall { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`registries(uint256)`](registriesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registriesReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registriesCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registriesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registriesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registriesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registriesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registriesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registries(uint256)"; + const SELECTOR: [u8; 4] = [99u8, 71u8, 201u8, 0u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `renounceOwnership()` and selector `0x715018a6`. + ```solidity + function renounceOwnership() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct renounceOwnershipCall {} + ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct renounceOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for renounceOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for renounceOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for renounceOwnershipCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = renounceOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "renounceOwnership()"; + const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `serviceManager()` and selector `0x3998fdd3`. + ```solidity + function serviceManager() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct serviceManagerCall {} + ///Container type for the return parameters of the [`serviceManager()`](serviceManagerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct serviceManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: serviceManagerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for serviceManagerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: serviceManagerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for serviceManagerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for serviceManagerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = serviceManagerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "serviceManager()"; + const SELECTOR: [u8; 4] = [57u8, 152u8, 253u8, 211u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setChurnApprover(address)` and selector `0x29d1e0c3`. + ```solidity + function setChurnApprover(address _churnApprover) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setChurnApproverCall { + pub _churnApprover: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setChurnApprover(address)`](setChurnApproverCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setChurnApproverReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setChurnApproverCall) -> Self { + (value._churnApprover,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setChurnApproverCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _churnApprover: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setChurnApproverReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setChurnApproverReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setChurnApproverCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setChurnApproverReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setChurnApprover(address)"; + const SELECTOR: [u8; 4] = [41u8, 209u8, 224u8, 195u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._churnApprover, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setEjectionCooldown(uint256)` and selector `0x0d3f2134`. + ```solidity + function setEjectionCooldown(uint256 _ejectionCooldown) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setEjectionCooldownCall { + pub _ejectionCooldown: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`setEjectionCooldown(uint256)`](setEjectionCooldownCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setEjectionCooldownReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setEjectionCooldownCall) -> Self { + (value._ejectionCooldown,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setEjectionCooldownCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _ejectionCooldown: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setEjectionCooldownReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setEjectionCooldownReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setEjectionCooldownCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setEjectionCooldownReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setEjectionCooldown(uint256)"; + const SELECTOR: [u8; 4] = [13u8, 63u8, 33u8, 52u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._ejectionCooldown, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setEjector(address)` and selector `0x2cdd1e86`. + ```solidity + function setEjector(address _ejector) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setEjectorCall { + pub _ejector: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setEjector(address)`](setEjectorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setEjectorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setEjectorCall) -> Self { + (value._ejector,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setEjectorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _ejector: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setEjectorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setEjectorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setEjectorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setEjectorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setEjector(address)"; + const SELECTOR: [u8; 4] = [44u8, 221u8, 30u8, 134u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._ejector, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setOperatorSetParams(uint8,(uint32,uint16,uint16))` and selector `0x5b0b829f`. + ```solidity + function setOperatorSetParams(uint8 quorumNumber, IRegistryCoordinator.OperatorSetParam memory operatorSetParams) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setOperatorSetParamsCall { + pub quorumNumber: u8, + pub operatorSetParams: + ::RustType, + } + ///Container type for the return parameters of the [`setOperatorSetParams(uint8,(uint32,uint16,uint16))`](setOperatorSetParamsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setOperatorSetParamsReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + IRegistryCoordinator::OperatorSetParam, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u8, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setOperatorSetParamsCall) -> Self { + (value.quorumNumber, value.operatorSetParams) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setOperatorSetParamsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + operatorSetParams: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setOperatorSetParamsReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setOperatorSetParamsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setOperatorSetParamsCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + IRegistryCoordinator::OperatorSetParam, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setOperatorSetParamsReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setOperatorSetParams(uint8,(uint32,uint16,uint16))"; + const SELECTOR: [u8; 4] = [91u8, 11u8, 130u8, 159u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ::tokenize( + &self.operatorSetParams, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setPauserRegistry(address)` and selector `0x10d67a2f`. + ```solidity + function setPauserRegistry(address newPauserRegistry) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setPauserRegistryCall { + pub newPauserRegistry: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setPauserRegistry(address)`](setPauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setPauserRegistryReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setPauserRegistryCall) -> Self { + (value.newPauserRegistry,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setPauserRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newPauserRegistry: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setPauserRegistryReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setPauserRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setPauserRegistryCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setPauserRegistryReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setPauserRegistry(address)"; + const SELECTOR: [u8; 4] = [16u8, 214u8, 122u8, 47u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newPauserRegistry, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `stakeRegistry()` and selector `0x68304835`. + ```solidity + function stakeRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakeRegistryCall {} + ///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakeRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakeRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakeRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakeRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakeRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for stakeRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = stakeRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "stakeRegistry()"; + const SELECTOR: [u8; 4] = [104u8, 48u8, 72u8, 53u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. + ```solidity + function transferOwnership(address newOwner) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `unpause(uint256)` and selector `0xfabc1cbc`. + ```solidity + function unpause(uint256 newPausedStatus) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct unpauseCall { + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`unpause(uint256)`](unpauseCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct unpauseReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: unpauseCall) -> Self { + (value.newPausedStatus,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for unpauseCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newPausedStatus: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: unpauseReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for unpauseReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for unpauseCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = unpauseReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "unpause(uint256)"; + const SELECTOR: [u8; 4] = [250u8, 188u8, 28u8, 188u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateOperators(address[])` and selector `0x00cf2ab5`. + ```solidity + function updateOperators(address[] memory operators) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorsCall { + pub operators: alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`updateOperators(address[])`](updateOperatorsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorsReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorsCall) -> Self { + (value.operators,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operators: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorsReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateOperatorsCall { + type Parameters<'a> = + (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateOperatorsReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateOperators(address[])"; + const SELECTOR: [u8; 4] = [0u8, 207u8, 42u8, 181u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( as alloy_sol_types::SolType>::tokenize( + &self.operators + ),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateOperatorsForQuorum(address[][],bytes)` and selector `0x5140a548`. + ```solidity + function updateOperatorsForQuorum(address[][] memory operatorsPerQuorum, bytes memory quorumNumbers) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorsForQuorumCall { + pub operatorsPerQuorum: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec, + >, + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`updateOperatorsForQuorum(address[][],bytes)`](updateOperatorsForQuorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorsForQuorumReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array, + >, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec, + >, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorsForQuorumCall) -> Self { + (value.operatorsPerQuorum, value.quorumNumbers) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorsForQuorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorsPerQuorum: tuple.0, + quorumNumbers: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorsForQuorumReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorsForQuorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateOperatorsForQuorumCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array, + >, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateOperatorsForQuorumReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateOperatorsForQuorum(address[][],bytes)"; + const SELECTOR: [u8; 4] = [81u8, 64u8, 165u8, 72u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + , + > as alloy_sol_types::SolType>::tokenize( + &self.operatorsPerQuorum + ), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateSocket(string)` and selector `0x0cf4b767`. + ```solidity + function updateSocket(string memory socket) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateSocketCall { + pub socket: alloy::sol_types::private::String, + } + ///Container type for the return parameters of the [`updateSocket(string)`](updateSocketCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateSocketReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateSocketCall) -> Self { + (value.socket,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateSocketCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { socket: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateSocketReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateSocketReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateSocketCall { + type Parameters<'a> = (alloy::sol_types::sol_data::String,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateSocketReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateSocket(string)"; + const SELECTOR: [u8; 4] = [12u8, 244u8, 183u8, 103u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.socket, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`RegistryCoordinator`](self) function calls. + pub enum RegistryCoordinatorCalls { + OPERATOR_CHURN_APPROVAL_TYPEHASH(OPERATOR_CHURN_APPROVAL_TYPEHASHCall), + PUBKEY_REGISTRATION_TYPEHASH(PUBKEY_REGISTRATION_TYPEHASHCall), + blsApkRegistry(blsApkRegistryCall), + calculateOperatorChurnApprovalDigestHash(calculateOperatorChurnApprovalDigestHashCall), + churnApprover(churnApproverCall), + createQuorum(createQuorumCall), + deregisterOperator(deregisterOperatorCall), + ejectOperator(ejectOperatorCall), + ejectionCooldown(ejectionCooldownCall), + ejector(ejectorCall), + getCurrentQuorumBitmap(getCurrentQuorumBitmapCall), + getOperator(getOperatorCall), + getOperatorFromId(getOperatorFromIdCall), + getOperatorId(getOperatorIdCall), + getOperatorSetParams(getOperatorSetParamsCall), + getOperatorStatus(getOperatorStatusCall), + getQuorumBitmapAtBlockNumberByIndex(getQuorumBitmapAtBlockNumberByIndexCall), + getQuorumBitmapHistoryLength(getQuorumBitmapHistoryLengthCall), + getQuorumBitmapIndicesAtBlockNumber(getQuorumBitmapIndicesAtBlockNumberCall), + getQuorumBitmapUpdateByIndex(getQuorumBitmapUpdateByIndexCall), + indexRegistry(indexRegistryCall), + initialize(initializeCall), + isChurnApproverSaltUsed(isChurnApproverSaltUsedCall), + lastEjectionTimestamp(lastEjectionTimestampCall), + numRegistries(numRegistriesCall), + owner(ownerCall), + pause(pauseCall), + pauseAll(pauseAllCall), + paused_0(paused_0Call), + paused_1(paused_1Call), + pauserRegistry(pauserRegistryCall), + pubkeyRegistrationMessageHash(pubkeyRegistrationMessageHashCall), + quorumCount(quorumCountCall), + quorumUpdateBlockNumber(quorumUpdateBlockNumberCall), + registerOperator(registerOperatorCall), + registerOperatorWithChurn(registerOperatorWithChurnCall), + registries(registriesCall), + renounceOwnership(renounceOwnershipCall), + serviceManager(serviceManagerCall), + setChurnApprover(setChurnApproverCall), + setEjectionCooldown(setEjectionCooldownCall), + setEjector(setEjectorCall), + setOperatorSetParams(setOperatorSetParamsCall), + setPauserRegistry(setPauserRegistryCall), + stakeRegistry(stakeRegistryCall), + transferOwnership(transferOwnershipCall), + unpause(unpauseCall), + updateOperators(updateOperatorsCall), + updateOperatorsForQuorum(updateOperatorsForQuorumCall), + updateSocket(updateSocketCall), + } + #[automatically_derived] + impl RegistryCoordinatorCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [0u8, 207u8, 42u8, 181u8], + [3u8, 253u8, 52u8, 146u8], + [4u8, 236u8, 99u8, 81u8], + [5u8, 67u8, 16u8, 230u8], + [12u8, 244u8, 183u8, 103u8], + [13u8, 63u8, 33u8, 52u8], + [16u8, 214u8, 122u8, 47u8], + [18u8, 94u8, 5u8, 132u8], + [19u8, 84u8, 42u8, 78u8], + [19u8, 100u8, 57u8, 221u8], + [20u8, 120u8, 133u8, 31u8], + [30u8, 184u8, 18u8, 218u8], + [36u8, 154u8, 12u8, 66u8], + [40u8, 246u8, 27u8, 49u8], + [41u8, 107u8, 176u8, 100u8], + [41u8, 209u8, 224u8, 195u8], + [44u8, 221u8, 30u8, 134u8], + [57u8, 152u8, 253u8, 211u8], + [60u8, 42u8, 127u8, 76u8], + [81u8, 64u8, 165u8, 72u8], + [88u8, 101u8, 198u8, 12u8], + [89u8, 92u8, 106u8, 103u8], + [90u8, 200u8, 106u8, 183u8], + [91u8, 11u8, 130u8, 159u8], + [92u8, 151u8, 90u8, 187u8], + [93u8, 244u8, 89u8, 70u8], + [99u8, 71u8, 201u8, 0u8], + [104u8, 48u8, 72u8, 53u8], + [110u8, 59u8, 23u8, 219u8], + [113u8, 80u8, 24u8, 166u8], + [132u8, 202u8, 82u8, 19u8], + [135u8, 30u8, 240u8, 73u8], + [136u8, 111u8, 17u8, 149u8], + [141u8, 165u8, 203u8, 91u8], + [154u8, 161u8, 101u8, 61u8], + [155u8, 93u8, 23u8, 123u8], + [158u8, 153u8, 35u8, 194u8], + [159u8, 234u8, 184u8, 89u8], + [165u8, 8u8, 87u8, 191u8], + [169u8, 111u8, 120u8, 62u8], + [195u8, 145u8, 66u8, 94u8], + [202u8, 13u8, 232u8, 130u8], + [202u8, 79u8, 45u8, 151u8], + [215u8, 45u8, 141u8, 214u8], + [215u8, 91u8, 76u8, 136u8], + [221u8, 130u8, 131u8, 243u8], + [230u8, 87u8, 151u8, 173u8], + [242u8, 253u8, 227u8, 139u8], + [250u8, 188u8, 28u8, 188u8], + [253u8, 57u8, 16u8, 90u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for RegistryCoordinatorCalls { + const NAME: &'static str = "RegistryCoordinatorCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 50usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::OPERATOR_CHURN_APPROVAL_TYPEHASH(_) => { + ::SELECTOR + } + Self::PUBKEY_REGISTRATION_TYPEHASH(_) => { + ::SELECTOR + } + Self::blsApkRegistry(_) => { + ::SELECTOR + } + Self::calculateOperatorChurnApprovalDigestHash(_) => { + ::SELECTOR + } + Self::churnApprover(_) => { + ::SELECTOR + } + Self::createQuorum(_) => { + ::SELECTOR + } + Self::deregisterOperator(_) => { + ::SELECTOR + } + Self::ejectOperator(_) => { + ::SELECTOR + } + Self::ejectionCooldown(_) => { + ::SELECTOR + } + Self::ejector(_) => ::SELECTOR, + Self::getCurrentQuorumBitmap(_) => { + ::SELECTOR + } + Self::getOperator(_) => { + ::SELECTOR + } + Self::getOperatorFromId(_) => { + ::SELECTOR + } + Self::getOperatorId(_) => { + ::SELECTOR + } + Self::getOperatorSetParams(_) => { + ::SELECTOR + } + Self::getOperatorStatus(_) => { + ::SELECTOR + } + Self::getQuorumBitmapAtBlockNumberByIndex(_) => { + ::SELECTOR + } + Self::getQuorumBitmapHistoryLength(_) => { + ::SELECTOR + } + Self::getQuorumBitmapIndicesAtBlockNumber(_) => { + ::SELECTOR + } + Self::getQuorumBitmapUpdateByIndex(_) => { + ::SELECTOR + } + Self::indexRegistry(_) => { + ::SELECTOR + } + Self::initialize(_) => { + ::SELECTOR + } + Self::isChurnApproverSaltUsed(_) => { + ::SELECTOR + } + Self::lastEjectionTimestamp(_) => { + ::SELECTOR + } + Self::numRegistries(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::pause(_) => ::SELECTOR, + Self::pauseAll(_) => ::SELECTOR, + Self::paused_0(_) => ::SELECTOR, + Self::paused_1(_) => ::SELECTOR, + Self::pauserRegistry(_) => { + ::SELECTOR + } + Self::pubkeyRegistrationMessageHash(_) => { + ::SELECTOR + } + Self::quorumCount(_) => { + ::SELECTOR + } + Self::quorumUpdateBlockNumber(_) => { + ::SELECTOR + } + Self::registerOperator(_) => { + ::SELECTOR + } + Self::registerOperatorWithChurn(_) => { + ::SELECTOR + } + Self::registries(_) => { + ::SELECTOR + } + Self::renounceOwnership(_) => { + ::SELECTOR + } + Self::serviceManager(_) => { + ::SELECTOR + } + Self::setChurnApprover(_) => { + ::SELECTOR + } + Self::setEjectionCooldown(_) => { + ::SELECTOR + } + Self::setEjector(_) => { + ::SELECTOR + } + Self::setOperatorSetParams(_) => { + ::SELECTOR + } + Self::setPauserRegistry(_) => { + ::SELECTOR + } + Self::stakeRegistry(_) => { + ::SELECTOR + } + Self::transferOwnership(_) => { + ::SELECTOR + } + Self::unpause(_) => ::SELECTOR, + Self::updateOperators(_) => { + ::SELECTOR + } + Self::updateOperatorsForQuorum(_) => { + ::SELECTOR + } + Self::updateSocket(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn updateOperators( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::updateOperators) + } + updateOperators + }, + { + fn getQuorumBitmapHistoryLength( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(RegistryCoordinatorCalls::getQuorumBitmapHistoryLength) + } + getQuorumBitmapHistoryLength + }, + { + fn getQuorumBitmapAtBlockNumberByIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + RegistryCoordinatorCalls::getQuorumBitmapAtBlockNumberByIndex, + ) + } + getQuorumBitmapAtBlockNumberByIndex + }, + { + fn churnApprover( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::churnApprover) + } + churnApprover + }, + { + fn updateSocket( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::updateSocket) + } + updateSocket + }, + { + fn setEjectionCooldown( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::setEjectionCooldown) + } + setEjectionCooldown + }, + { + fn setPauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::setPauserRegistry) + } + setPauserRegistry + }, + { + fn lastEjectionTimestamp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::lastEjectionTimestamp) + } + lastEjectionTimestamp + }, + { + fn getOperatorId( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::getOperatorId) + } + getOperatorId + }, + { + fn pause( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(RegistryCoordinatorCalls::pause) + } + pause + }, + { + fn isChurnApproverSaltUsed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::isChurnApproverSaltUsed) + } + isChurnApproverSaltUsed + }, + { + fn getQuorumBitmapUpdateByIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(RegistryCoordinatorCalls::getQuorumBitmapUpdateByIndex) + } + getQuorumBitmapUpdateByIndex + }, + { + fn quorumUpdateBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::quorumUpdateBlockNumber) + } + quorumUpdateBlockNumber + }, + { + fn ejector( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(RegistryCoordinatorCalls::ejector) + } + ejector + }, + { + fn getOperatorFromId( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::getOperatorFromId) + } + getOperatorFromId + }, + { + fn setChurnApprover( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::setChurnApprover) + } + setChurnApprover + }, + { + fn setEjector( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(RegistryCoordinatorCalls::setEjector) + } + setEjector + }, + { + fn serviceManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::serviceManager) + } + serviceManager + }, + { + fn pubkeyRegistrationMessageHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(RegistryCoordinatorCalls::pubkeyRegistrationMessageHash) + } + pubkeyRegistrationMessageHash + }, + { + fn updateOperatorsForQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::updateOperatorsForQuorum) + } + updateOperatorsForQuorum + }, + { + fn getOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::getOperator) + } + getOperator + }, + { + fn pauseAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(RegistryCoordinatorCalls::pauseAll) + } + pauseAll + }, + { + fn paused_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(RegistryCoordinatorCalls::paused_0) + } + paused_0 + }, + { + fn setOperatorSetParams( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::setOperatorSetParams) + } + setOperatorSetParams + }, + { + fn paused_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(RegistryCoordinatorCalls::paused_1) + } + paused_1 + }, + { + fn blsApkRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::blsApkRegistry) + } + blsApkRegistry + }, + { + fn registries( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(RegistryCoordinatorCalls::registries) + } + registries + }, + { + fn stakeRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::stakeRegistry) + } + stakeRegistry + }, + { + fn ejectOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::ejectOperator) + } + ejectOperator + }, + { + fn renounceOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::renounceOwnership) + } + renounceOwnership + }, + { + fn calculateOperatorChurnApprovalDigestHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + RegistryCoordinatorCalls::calculateOperatorChurnApprovalDigestHash, + ) + } + calculateOperatorChurnApprovalDigestHash + }, + { + fn getCurrentQuorumBitmap( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::getCurrentQuorumBitmap) + } + getCurrentQuorumBitmap + }, + { + fn pauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::pauserRegistry) + } + pauserRegistry + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(RegistryCoordinatorCalls::owner) + } + owner + }, + { + fn quorumCount( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::quorumCount) + } + quorumCount + }, + { + fn registerOperatorWithChurn( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::registerOperatorWithChurn) + } + registerOperatorWithChurn + }, + { + fn indexRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::indexRegistry) + } + indexRegistry + }, + { + fn PUBKEY_REGISTRATION_TYPEHASH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(RegistryCoordinatorCalls::PUBKEY_REGISTRATION_TYPEHASH) + } + PUBKEY_REGISTRATION_TYPEHASH + }, + { + fn registerOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::registerOperator) + } + registerOperator + }, + { + fn ejectionCooldown( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::ejectionCooldown) + } + ejectionCooldown + }, + { + fn getQuorumBitmapIndicesAtBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + RegistryCoordinatorCalls::getQuorumBitmapIndicesAtBlockNumber, + ) + } + getQuorumBitmapIndicesAtBlockNumber + }, + { + fn OPERATOR_CHURN_APPROVAL_TYPEHASH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + RegistryCoordinatorCalls::OPERATOR_CHURN_APPROVAL_TYPEHASH, + ) + } + OPERATOR_CHURN_APPROVAL_TYPEHASH + }, + { + fn deregisterOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::deregisterOperator) + } + deregisterOperator + }, + { + fn numRegistries( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::numRegistries) + } + numRegistries + }, + { + fn createQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::createQuorum) + } + createQuorum + }, + { + fn initialize( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(RegistryCoordinatorCalls::initialize) + } + initialize + }, + { + fn getOperatorSetParams( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::getOperatorSetParams) + } + getOperatorSetParams + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::transferOwnership) + } + transferOwnership + }, + { + fn unpause( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(RegistryCoordinatorCalls::unpause) + } + unpause + }, + { + fn getOperatorStatus( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorCalls::getOperatorStatus) + } + getOperatorStatus + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::OPERATOR_CHURN_APPROVAL_TYPEHASH(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::PUBKEY_REGISTRATION_TYPEHASH(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::blsApkRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::calculateOperatorChurnApprovalDigestHash(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::churnApprover(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::createQuorum(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::deregisterOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::ejectOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::ejectionCooldown(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::ejector(inner) => { + ::abi_encoded_size(inner) + } + Self::getCurrentQuorumBitmap(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorFromId(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorId(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorSetParams(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorStatus(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getQuorumBitmapAtBlockNumberByIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getQuorumBitmapHistoryLength(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getQuorumBitmapIndicesAtBlockNumber(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getQuorumBitmapUpdateByIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::indexRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::initialize(inner) => { + ::abi_encoded_size(inner) + } + Self::isChurnApproverSaltUsed(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::lastEjectionTimestamp(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::numRegistries(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::pause(inner) => { + ::abi_encoded_size(inner) + } + Self::pauseAll(inner) => { + ::abi_encoded_size(inner) + } + Self::paused_0(inner) => { + ::abi_encoded_size(inner) + } + Self::paused_1(inner) => { + ::abi_encoded_size(inner) + } + Self::pauserRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::pubkeyRegistrationMessageHash(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::quorumCount(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::quorumUpdateBlockNumber(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registerOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registerOperatorWithChurn(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registries(inner) => { + ::abi_encoded_size(inner) + } + Self::renounceOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::serviceManager(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setChurnApprover(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setEjectionCooldown(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setEjector(inner) => { + ::abi_encoded_size(inner) + } + Self::setOperatorSetParams(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setPauserRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::stakeRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::unpause(inner) => { + ::abi_encoded_size(inner) + } + Self::updateOperators(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::updateOperatorsForQuorum(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::updateSocket(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::OPERATOR_CHURN_APPROVAL_TYPEHASH(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::PUBKEY_REGISTRATION_TYPEHASH(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::blsApkRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::calculateOperatorChurnApprovalDigestHash(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::churnApprover(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::createQuorum(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::deregisterOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::ejectOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::ejectionCooldown(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::ejector(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getCurrentQuorumBitmap(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperatorFromId(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperatorId(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperatorSetParams(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperatorStatus(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getQuorumBitmapAtBlockNumberByIndex(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getQuorumBitmapHistoryLength(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getQuorumBitmapIndicesAtBlockNumber(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getQuorumBitmapUpdateByIndex(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::indexRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::initialize(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::isChurnApproverSaltUsed(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::lastEjectionTimestamp(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::numRegistries(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::pause(inner) => { + ::abi_encode_raw(inner, out) + } + Self::pauseAll(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::paused_0(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::paused_1(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::pauserRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::pubkeyRegistrationMessageHash(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::quorumCount(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::quorumUpdateBlockNumber(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registerOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registerOperatorWithChurn(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registries(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::renounceOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::serviceManager(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setChurnApprover(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setEjectionCooldown(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setEjector(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setOperatorSetParams(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setPauserRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::stakeRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::unpause(inner) => { + ::abi_encode_raw(inner, out) + } + Self::updateOperators(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::updateOperatorsForQuorum(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::updateSocket(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`RegistryCoordinator`](self) events. + pub enum RegistryCoordinatorEvents { + ChurnApproverUpdated(ChurnApproverUpdated), + EjectorUpdated(EjectorUpdated), + Initialized(Initialized), + OperatorDeregistered(OperatorDeregistered), + OperatorRegistered(OperatorRegistered), + OperatorSetParamsUpdated(OperatorSetParamsUpdated), + OperatorSocketUpdate(OperatorSocketUpdate), + OwnershipTransferred(OwnershipTransferred), + Paused(Paused), + PauserRegistrySet(PauserRegistrySet), + QuorumBlockNumberUpdated(QuorumBlockNumberUpdated), + Unpaused(Unpaused), + } + #[automatically_derived] + impl RegistryCoordinatorEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 49u8, 84u8, 87u8, 216u8, 168u8, 254u8, 96u8, 240u8, 74u8, 241u8, 124u8, 22u8, + 226u8, 245u8, 165u8, 225u8, 219u8, 97u8, 43u8, 49u8, 100u8, 142u8, 88u8, 3u8, 3u8, + 96u8, 117u8, 158u8, 248u8, 243u8, 82u8, 140u8, + ], + [ + 53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8, 2u8, + 188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8, 228u8, 152u8, + 107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8, + ], + [ + 57u8, 111u8, 220u8, 177u8, 128u8, 203u8, 15u8, 234u8, 38u8, 146u8, 129u8, 19u8, + 251u8, 15u8, 209u8, 195u8, 84u8, 152u8, 99u8, 249u8, 205u8, 86u8, 62u8, 106u8, + 24u8, 79u8, 29u8, 87u8, 129u8, 22u8, 200u8, 228u8, + ], + [ + 62u8, 230u8, 254u8, 141u8, 84u8, 97u8, 2u8, 68u8, 195u8, 233u8, 211u8, 192u8, + 102u8, 174u8, 74u8, 238u8, 153u8, 120u8, 132u8, 170u8, 40u8, 241u8, 6u8, 22u8, + 174u8, 130u8, 25u8, 37u8, 64u8, 19u8, 24u8, 172u8, + ], + [ + 70u8, 7u8, 125u8, 85u8, 51u8, 7u8, 99u8, 241u8, 98u8, 105u8, 253u8, 117u8, 229u8, + 118u8, 22u8, 99u8, 244u8, 25u8, 45u8, 39u8, 145u8, 116u8, 124u8, 1u8, 137u8, 177u8, + 106u8, 211u8, 29u8, 176u8, 125u8, 180u8, + ], + [ + 110u8, 159u8, 205u8, 83u8, 152u8, 150u8, 252u8, 166u8, 14u8, 139u8, 15u8, 1u8, + 221u8, 88u8, 2u8, 51u8, 228u8, 138u8, 107u8, 15u8, 125u8, 240u8, 19u8, 184u8, + 155u8, 167u8, 245u8, 101u8, 134u8, 154u8, 205u8, 182u8, + ], + [ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, 56u8, + 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, 96u8, + 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ], + [ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, 208u8, + 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, 175u8, 227u8, + 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ], + [ + 143u8, 48u8, 171u8, 9u8, 244u8, 58u8, 108u8, 21u8, 125u8, 127u8, 206u8, 126u8, + 10u8, 19u8, 192u8, 3u8, 4u8, 44u8, 28u8, 149u8, 232u8, 167u8, 46u8, 122u8, 20u8, + 106u8, 33u8, 192u8, 202u8, 162u8, 77u8, 201u8, + ], + [ + 171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8, 188u8, + 152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8, 11u8, 182u8, + 224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8, + ], + [ + 232u8, 230u8, 140u8, 239u8, 28u8, 58u8, 118u8, 30u8, 215u8, 190u8, 126u8, 132u8, + 99u8, 163u8, 117u8, 242u8, 127u8, 123u8, 195u8, 53u8, 229u8, 24u8, 36u8, 34u8, + 60u8, 172u8, 206u8, 99u8, 110u8, 197u8, 195u8, 254u8, + ], + [ + 236u8, 41u8, 99u8, 171u8, 33u8, 193u8, 229u8, 14u8, 30u8, 88u8, 42u8, 165u8, 66u8, + 175u8, 46u8, 75u8, 247u8, 191u8, 56u8, 230u8, 225u8, 64u8, 60u8, 39u8, 180u8, 46u8, + 28u8, 93u8, 110u8, 98u8, 30u8, 170u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for RegistryCoordinatorEvents { + const NAME: &'static str = "RegistryCoordinatorEvents"; + const COUNT: usize = 12usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ChurnApproverUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::EjectorUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::Initialized) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorDeregistered) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorRegistered) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorSetParamsUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorSocketUpdate) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OwnershipTransferred) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::Paused) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::PauserRegistrySet) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::QuorumBlockNumberUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::Unpaused) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for RegistryCoordinatorEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::ChurnApproverUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::EjectorUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorDeregistered(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorRegistered(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorSetParamsUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorSocketUpdate(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Paused(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::PauserRegistrySet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::QuorumBlockNumberUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Unpaused(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::ChurnApproverUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::EjectorUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorDeregistered(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorRegistered(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorSetParamsUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorSocketUpdate(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Paused(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::PauserRegistrySet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::QuorumBlockNumberUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Unpaused(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`RegistryCoordinator`](self) contract instance. + + See the [wrapper's documentation](`RegistryCoordinatorInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> RegistryCoordinatorInstance { + RegistryCoordinatorInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _serviceManager: alloy::sol_types::private::Address, + _stakeRegistry: alloy::sol_types::private::Address, + _blsApkRegistry: alloy::sol_types::private::Address, + _indexRegistry: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future>> + { + RegistryCoordinatorInstance::::deploy( + provider, + _serviceManager, + _stakeRegistry, + _blsApkRegistry, + _indexRegistry, + ) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _serviceManager: alloy::sol_types::private::Address, + _stakeRegistry: alloy::sol_types::private::Address, + _blsApkRegistry: alloy::sol_types::private::Address, + _indexRegistry: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + RegistryCoordinatorInstance::::deploy_builder( + provider, + _serviceManager, + _stakeRegistry, + _blsApkRegistry, + _indexRegistry, + ) + } + /**A [`RegistryCoordinator`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`RegistryCoordinator`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct RegistryCoordinatorInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for RegistryCoordinatorInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("RegistryCoordinatorInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > RegistryCoordinatorInstance + { + /**Creates a new wrapper around an on-chain [`RegistryCoordinator`](self) contract instance. + + See the [wrapper's documentation](`RegistryCoordinatorInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _serviceManager: alloy::sol_types::private::Address, + _stakeRegistry: alloy::sol_types::private::Address, + _blsApkRegistry: alloy::sol_types::private::Address, + _indexRegistry: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder( + provider, + _serviceManager, + _stakeRegistry, + _blsApkRegistry, + _indexRegistry, + ); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _serviceManager: alloy::sol_types::private::Address, + _stakeRegistry: alloy::sol_types::private::Address, + _blsApkRegistry: alloy::sol_types::private::Address, + _indexRegistry: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode(&constructorCall { + _serviceManager, + _stakeRegistry, + _blsApkRegistry, + _indexRegistry, + })[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl RegistryCoordinatorInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> RegistryCoordinatorInstance { + RegistryCoordinatorInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > RegistryCoordinatorInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`OPERATOR_CHURN_APPROVAL_TYPEHASH`] function. + pub fn OPERATOR_CHURN_APPROVAL_TYPEHASH( + &self, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&OPERATOR_CHURN_APPROVAL_TYPEHASHCall {}) + } + ///Creates a new call builder for the [`PUBKEY_REGISTRATION_TYPEHASH`] function. + pub fn PUBKEY_REGISTRATION_TYPEHASH( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&PUBKEY_REGISTRATION_TYPEHASHCall {}) + } + ///Creates a new call builder for the [`blsApkRegistry`] function. + pub fn blsApkRegistry( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&blsApkRegistryCall {}) + } + ///Creates a new call builder for the [`calculateOperatorChurnApprovalDigestHash`] function. + pub fn calculateOperatorChurnApprovalDigestHash( + &self, + registeringOperator: alloy::sol_types::private::Address, + registeringOperatorId: alloy::sol_types::private::FixedBytes<32>, + operatorKickParams: alloy::sol_types::private::Vec< + ::RustType, + >, + salt: alloy::sol_types::private::FixedBytes<32>, + expiry: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&calculateOperatorChurnApprovalDigestHashCall { + registeringOperator, + registeringOperatorId, + operatorKickParams, + salt, + expiry, + }) + } + ///Creates a new call builder for the [`churnApprover`] function. + pub fn churnApprover(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&churnApproverCall {}) + } + ///Creates a new call builder for the [`createQuorum`] function. + pub fn createQuorum( + &self, + operatorSetParams: ::RustType, + minimumStake: alloy::sol_types::private::primitives::aliases::U96, + strategyParams: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&createQuorumCall { + operatorSetParams, + minimumStake, + strategyParams, + }) + } + ///Creates a new call builder for the [`deregisterOperator`] function. + pub fn deregisterOperator( + &self, + quorumNumbers: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&deregisterOperatorCall { quorumNumbers }) + } + ///Creates a new call builder for the [`ejectOperator`] function. + pub fn ejectOperator( + &self, + operator: alloy::sol_types::private::Address, + quorumNumbers: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&ejectOperatorCall { + operator, + quorumNumbers, + }) + } + ///Creates a new call builder for the [`ejectionCooldown`] function. + pub fn ejectionCooldown( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&ejectionCooldownCall {}) + } + ///Creates a new call builder for the [`ejector`] function. + pub fn ejector(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ejectorCall {}) + } + ///Creates a new call builder for the [`getCurrentQuorumBitmap`] function. + pub fn getCurrentQuorumBitmap( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getCurrentQuorumBitmapCall { operatorId }) + } + ///Creates a new call builder for the [`getOperator`] function. + pub fn getOperator( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorCall { operator }) + } + ///Creates a new call builder for the [`getOperatorFromId`] function. + pub fn getOperatorFromId( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorFromIdCall { operatorId }) + } + ///Creates a new call builder for the [`getOperatorId`] function. + pub fn getOperatorId( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorIdCall { operator }) + } + ///Creates a new call builder for the [`getOperatorSetParams`] function. + pub fn getOperatorSetParams( + &self, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorSetParamsCall { quorumNumber }) + } + ///Creates a new call builder for the [`getOperatorStatus`] function. + pub fn getOperatorStatus( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorStatusCall { operator }) + } + ///Creates a new call builder for the [`getQuorumBitmapAtBlockNumberByIndex`] function. + pub fn getQuorumBitmapAtBlockNumberByIndex( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + blockNumber: u32, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&getQuorumBitmapAtBlockNumberByIndexCall { + operatorId, + blockNumber, + index, + }) + } + ///Creates a new call builder for the [`getQuorumBitmapHistoryLength`] function. + pub fn getQuorumBitmapHistoryLength( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getQuorumBitmapHistoryLengthCall { operatorId }) + } + ///Creates a new call builder for the [`getQuorumBitmapIndicesAtBlockNumber`] function. + pub fn getQuorumBitmapIndicesAtBlockNumber( + &self, + blockNumber: u32, + operatorIds: alloy::sol_types::private::Vec>, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&getQuorumBitmapIndicesAtBlockNumberCall { + blockNumber, + operatorIds, + }) + } + ///Creates a new call builder for the [`getQuorumBitmapUpdateByIndex`] function. + pub fn getQuorumBitmapUpdateByIndex( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getQuorumBitmapUpdateByIndexCall { operatorId, index }) + } + ///Creates a new call builder for the [`indexRegistry`] function. + pub fn indexRegistry(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&indexRegistryCall {}) + } + ///Creates a new call builder for the [`initialize`] function. + pub fn initialize( + &self, + _initialOwner: alloy::sol_types::private::Address, + _churnApprover: alloy::sol_types::private::Address, + _ejector: alloy::sol_types::private::Address, + _pauserRegistry: alloy::sol_types::private::Address, + _initialPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + _operatorSetParams: alloy::sol_types::private::Vec< + ::RustType, + >, + _minimumStakes: alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U96, + >, + _strategyParams: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec< + ::RustType, + >, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initializeCall { + _initialOwner, + _churnApprover, + _ejector, + _pauserRegistry, + _initialPausedStatus, + _operatorSetParams, + _minimumStakes, + _strategyParams, + }) + } + ///Creates a new call builder for the [`isChurnApproverSaltUsed`] function. + pub fn isChurnApproverSaltUsed( + &self, + _0: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&isChurnApproverSaltUsedCall { _0 }) + } + ///Creates a new call builder for the [`lastEjectionTimestamp`] function. + pub fn lastEjectionTimestamp( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&lastEjectionTimestampCall { _0 }) + } + ///Creates a new call builder for the [`numRegistries`] function. + pub fn numRegistries(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&numRegistriesCall {}) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`pause`] function. + pub fn pause( + &self, + newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&pauseCall { newPausedStatus }) + } + ///Creates a new call builder for the [`pauseAll`] function. + pub fn pauseAll(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&pauseAllCall {}) + } + ///Creates a new call builder for the [`paused_0`] function. + pub fn paused_0( + &self, + index: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&paused_0Call { index }) + } + ///Creates a new call builder for the [`paused_1`] function. + pub fn paused_1(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&paused_1Call {}) + } + ///Creates a new call builder for the [`pauserRegistry`] function. + pub fn pauserRegistry( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&pauserRegistryCall {}) + } + ///Creates a new call builder for the [`pubkeyRegistrationMessageHash`] function. + pub fn pubkeyRegistrationMessageHash( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&pubkeyRegistrationMessageHashCall { operator }) + } + ///Creates a new call builder for the [`quorumCount`] function. + pub fn quorumCount(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&quorumCountCall {}) + } + ///Creates a new call builder for the [`quorumUpdateBlockNumber`] function. + pub fn quorumUpdateBlockNumber( + &self, + _0: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&quorumUpdateBlockNumberCall { _0 }) + } + ///Creates a new call builder for the [`registerOperator`] function. + pub fn registerOperator( + &self, + quorumNumbers: alloy::sol_types::private::Bytes, + socket: alloy::sol_types::private::String, + params: ::RustType, + operatorSignature: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterOperatorCall { + quorumNumbers, + socket, + params, + operatorSignature, + }) + } + ///Creates a new call builder for the [`registerOperatorWithChurn`] function. + pub fn registerOperatorWithChurn( + &self, + quorumNumbers: alloy::sol_types::private::Bytes, + socket: alloy::sol_types::private::String, + params: ::RustType, + operatorKickParams: alloy::sol_types::private::Vec< + ::RustType, + >, + churnApproverSignature: ::RustType, + operatorSignature: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterOperatorWithChurnCall { + quorumNumbers, + socket, + params, + operatorKickParams, + churnApproverSignature, + operatorSignature, + }) + } + ///Creates a new call builder for the [`registries`] function. + pub fn registries( + &self, + _0: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®istriesCall { _0 }) + } + ///Creates a new call builder for the [`renounceOwnership`] function. + pub fn renounceOwnership( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&renounceOwnershipCall {}) + } + ///Creates a new call builder for the [`serviceManager`] function. + pub fn serviceManager( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&serviceManagerCall {}) + } + ///Creates a new call builder for the [`setChurnApprover`] function. + pub fn setChurnApprover( + &self, + _churnApprover: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setChurnApproverCall { _churnApprover }) + } + ///Creates a new call builder for the [`setEjectionCooldown`] function. + pub fn setEjectionCooldown( + &self, + _ejectionCooldown: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setEjectionCooldownCall { _ejectionCooldown }) + } + ///Creates a new call builder for the [`setEjector`] function. + pub fn setEjector( + &self, + _ejector: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setEjectorCall { _ejector }) + } + ///Creates a new call builder for the [`setOperatorSetParams`] function. + pub fn setOperatorSetParams( + &self, + quorumNumber: u8, + operatorSetParams: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setOperatorSetParamsCall { + quorumNumber, + operatorSetParams, + }) + } + ///Creates a new call builder for the [`setPauserRegistry`] function. + pub fn setPauserRegistry( + &self, + newPauserRegistry: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setPauserRegistryCall { newPauserRegistry }) + } + ///Creates a new call builder for the [`stakeRegistry`] function. + pub fn stakeRegistry(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&stakeRegistryCall {}) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + ///Creates a new call builder for the [`unpause`] function. + pub fn unpause( + &self, + newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&unpauseCall { newPausedStatus }) + } + ///Creates a new call builder for the [`updateOperators`] function. + pub fn updateOperators( + &self, + operators: alloy::sol_types::private::Vec, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateOperatorsCall { operators }) + } + ///Creates a new call builder for the [`updateOperatorsForQuorum`] function. + pub fn updateOperatorsForQuorum( + &self, + operatorsPerQuorum: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec, + >, + quorumNumbers: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateOperatorsForQuorumCall { + operatorsPerQuorum, + quorumNumbers, + }) + } + ///Creates a new call builder for the [`updateSocket`] function. + pub fn updateSocket( + &self, + socket: alloy::sol_types::private::String, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateSocketCall { socket }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > RegistryCoordinatorInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`ChurnApproverUpdated`] event. + pub fn ChurnApproverUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`EjectorUpdated`] event. + pub fn EjectorUpdated_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Initialized`] event. + pub fn Initialized_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorDeregistered`] event. + pub fn OperatorDeregistered_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorRegistered`] event. + pub fn OperatorRegistered_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorSetParamsUpdated`] event. + pub fn OperatorSetParamsUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorSocketUpdate`] event. + pub fn OperatorSocketUpdate_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Paused`] event. + pub fn Paused_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`PauserRegistrySet`] event. + pub fn PauserRegistrySet_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`QuorumBlockNumberUpdated`] event. + pub fn QuorumBlockNumberUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Unpaused`] event. + pub fn Unpaused_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/registrycoordinatorstorage.rs b/crates/utils/src/registrycoordinatorstorage.rs new file mode 100644 index 00000000..7dcf3316 --- /dev/null +++ b/crates/utils/src/registrycoordinatorstorage.rs @@ -0,0 +1,7121 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library BN254 { + struct G1Point { uint256 X; uint256 Y; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod BN254 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct G1Point { uint256 X; uint256 Y; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct G1Point { + pub X: alloy::sol_types::private::primitives::aliases::U256, + pub Y: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: G1Point) -> Self { + (value.X, value.Y) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for G1Point { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + X: tuple.0, + Y: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for G1Point { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for G1Point { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.X, + ), + as alloy_sol_types::SolType>::tokenize( + &self.Y, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for G1Point { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for G1Point { + const NAME: &'static str = "G1Point"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 X,uint256 Y)") + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word(&self.X) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.Y) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for G1Point { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.X) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.Y) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.X, out); + as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.Y, out); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance. + + See the [wrapper's documentation](`BN254Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> BN254Instance { + BN254Instance::::new(address, provider) + } + /**A [`BN254`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`BN254`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct BN254Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for BN254Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("BN254Instance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BN254Instance + { + /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance. + + See the [wrapper's documentation](`BN254Instance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl BN254Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> BN254Instance { + BN254Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BN254Instance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BN254Instance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library IRegistryCoordinator { + type OperatorStatus is uint8; + struct OperatorInfo { bytes32 operatorId; OperatorStatus status; } + struct OperatorSetParam { uint32 maxOperatorCount; uint16 kickBIPsOfOperatorStake; uint16 kickBIPsOfTotalStake; } + struct QuorumBitmapUpdate { uint32 updateBlockNumber; uint32 nextUpdateBlockNumber; uint192 quorumBitmap; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IRegistryCoordinator { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OperatorStatus(u8); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for u8 { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> + { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::Uint<8>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self).0 + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size( + self, + ) + } + } + #[automatically_derived] + impl OperatorStatus { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: u8) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> u8 { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OperatorStatus { + type RustType = u8; + type Token<'a> = + as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OperatorStatus { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic( + rust, + ) + } + } + }; + /**```solidity + struct OperatorInfo { bytes32 operatorId; OperatorStatus status; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OperatorInfo { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub status: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>, OperatorStatus); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OperatorInfo) -> Self { + (value.operatorId, value.status) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OperatorInfo { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + status: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OperatorInfo { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OperatorInfo { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ::tokenize(&self.status), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OperatorInfo { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OperatorInfo { + const NAME: &'static str = "OperatorInfo"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OperatorInfo(bytes32 operatorId,uint8 status)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word(&self.operatorId) + .0, + ::eip712_data_word( + &self.status, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OperatorInfo { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.operatorId, + ) + + ::topic_preimage_length( + &rust.status, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.operatorId, + out, + ); + ::encode_topic_preimage( + &rust.status, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct OperatorSetParam { uint32 maxOperatorCount; uint16 kickBIPsOfOperatorStake; uint16 kickBIPsOfTotalStake; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OperatorSetParam { + pub maxOperatorCount: u32, + pub kickBIPsOfOperatorStake: u16, + pub kickBIPsOfTotalStake: u16, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<16>, + alloy::sol_types::sol_data::Uint<16>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32, u16, u16); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OperatorSetParam) -> Self { + ( + value.maxOperatorCount, + value.kickBIPsOfOperatorStake, + value.kickBIPsOfTotalStake, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OperatorSetParam { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + maxOperatorCount: tuple.0, + kickBIPsOfOperatorStake: tuple.1, + kickBIPsOfTotalStake: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OperatorSetParam { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OperatorSetParam { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.maxOperatorCount, + ), + as alloy_sol_types::SolType>::tokenize( + &self.kickBIPsOfOperatorStake, + ), + as alloy_sol_types::SolType>::tokenize( + &self.kickBIPsOfTotalStake, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OperatorSetParam { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OperatorSetParam { + const NAME: &'static str = "OperatorSetParam"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OperatorSetParam(uint32 maxOperatorCount,uint16 kickBIPsOfOperatorStake,uint16 kickBIPsOfTotalStake)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word( + &self.maxOperatorCount, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.kickBIPsOfOperatorStake, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.kickBIPsOfTotalStake, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OperatorSetParam { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.maxOperatorCount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.kickBIPsOfOperatorStake, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.kickBIPsOfTotalStake, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.maxOperatorCount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.kickBIPsOfOperatorStake, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.kickBIPsOfTotalStake, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct QuorumBitmapUpdate { uint32 updateBlockNumber; uint32 nextUpdateBlockNumber; uint192 quorumBitmap; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct QuorumBitmapUpdate { + pub updateBlockNumber: u32, + pub nextUpdateBlockNumber: u32, + pub quorumBitmap: alloy::sol_types::private::primitives::aliases::U192, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<192>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u32, + u32, + alloy::sol_types::private::primitives::aliases::U192, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: QuorumBitmapUpdate) -> Self { + ( + value.updateBlockNumber, + value.nextUpdateBlockNumber, + value.quorumBitmap, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for QuorumBitmapUpdate { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + updateBlockNumber: tuple.0, + nextUpdateBlockNumber: tuple.1, + quorumBitmap: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for QuorumBitmapUpdate { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for QuorumBitmapUpdate { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.updateBlockNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.nextUpdateBlockNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.quorumBitmap, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for QuorumBitmapUpdate { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for QuorumBitmapUpdate { + const NAME: &'static str = "QuorumBitmapUpdate"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "QuorumBitmapUpdate(uint32 updateBlockNumber,uint32 nextUpdateBlockNumber,uint192 quorumBitmap)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word( + &self.updateBlockNumber, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.nextUpdateBlockNumber, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.quorumBitmap) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for QuorumBitmapUpdate { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.updateBlockNumber, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.nextUpdateBlockNumber, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.quorumBitmap, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.updateBlockNumber, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nextUpdateBlockNumber, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.quorumBitmap, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IRegistryCoordinator`](self) contract instance. + + See the [wrapper's documentation](`IRegistryCoordinatorInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IRegistryCoordinatorInstance { + IRegistryCoordinatorInstance::::new(address, provider) + } + /**A [`IRegistryCoordinator`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IRegistryCoordinator`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IRegistryCoordinatorInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IRegistryCoordinatorInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IRegistryCoordinatorInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IRegistryCoordinatorInstance + { + /**Creates a new wrapper around an on-chain [`IRegistryCoordinator`](self) contract instance. + + See the [wrapper's documentation](`IRegistryCoordinatorInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IRegistryCoordinatorInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IRegistryCoordinatorInstance { + IRegistryCoordinatorInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IRegistryCoordinatorInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IRegistryCoordinatorInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library BN254 { + struct G1Point { + uint256 X; + uint256 Y; + } +} + +library IRegistryCoordinator { + type OperatorStatus is uint8; + struct OperatorInfo { + bytes32 operatorId; + OperatorStatus status; + } + struct OperatorSetParam { + uint32 maxOperatorCount; + uint16 kickBIPsOfOperatorStake; + uint16 kickBIPsOfTotalStake; + } + struct QuorumBitmapUpdate { + uint32 updateBlockNumber; + uint32 nextUpdateBlockNumber; + uint192 quorumBitmap; + } +} + +interface RegistryCoordinatorStorage { + event ChurnApproverUpdated(address prevChurnApprover, address newChurnApprover); + event EjectorUpdated(address prevEjector, address newEjector); + event OperatorDeregistered(address indexed operator, bytes32 indexed operatorId); + event OperatorRegistered(address indexed operator, bytes32 indexed operatorId); + event OperatorSetParamsUpdated(uint8 indexed quorumNumber, IRegistryCoordinator.OperatorSetParam operatorSetParams); + event QuorumBlockNumberUpdated(uint8 indexed quorumNumber, uint256 blocknumber); + + function OPERATOR_CHURN_APPROVAL_TYPEHASH() external view returns (bytes32); + function PUBKEY_REGISTRATION_TYPEHASH() external view returns (bytes32); + function blsApkRegistry() external view returns (address); + function churnApprover() external view returns (address); + function ejectOperator(address operator, bytes memory quorumNumbers) external; + function ejectionCooldown() external view returns (uint256); + function ejector() external view returns (address); + function getCurrentQuorumBitmap(bytes32 operatorId) external view returns (uint192); + function getOperator(address operator) external view returns (IRegistryCoordinator.OperatorInfo memory); + function getOperatorFromId(bytes32 operatorId) external view returns (address operator); + function getOperatorId(address operator) external view returns (bytes32); + function getOperatorSetParams(uint8 quorumNumber) external view returns (IRegistryCoordinator.OperatorSetParam memory); + function getOperatorStatus(address operator) external view returns (IRegistryCoordinator.OperatorStatus); + function getQuorumBitmapAtBlockNumberByIndex(bytes32 operatorId, uint32 blockNumber, uint256 index) external view returns (uint192); + function getQuorumBitmapHistoryLength(bytes32 operatorId) external view returns (uint256); + function getQuorumBitmapIndicesAtBlockNumber(uint32 blockNumber, bytes32[] memory operatorIds) external view returns (uint32[] memory); + function getQuorumBitmapUpdateByIndex(bytes32 operatorId, uint256 index) external view returns (IRegistryCoordinator.QuorumBitmapUpdate memory); + function indexRegistry() external view returns (address); + function isChurnApproverSaltUsed(bytes32) external view returns (bool); + function lastEjectionTimestamp(address) external view returns (uint256); + function numRegistries() external view returns (uint256); + function owner() external view returns (address); + function pubkeyRegistrationMessageHash(address operator) external view returns (BN254.G1Point memory); + function quorumCount() external view returns (uint8); + function quorumUpdateBlockNumber(uint8) external view returns (uint256); + function registries(uint256) external view returns (address); + function serviceManager() external view returns (address); + function stakeRegistry() external view returns (address); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "OPERATOR_CHURN_APPROVAL_TYPEHASH", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "PUBKEY_REGISTRATION_TYPEHASH", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "blsApkRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IBLSApkRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "churnApprover", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "ejectOperator", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "ejectionCooldown", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "ejector", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getCurrentQuorumBitmap", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint192", + "internalType": "uint192" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperator", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IRegistryCoordinator.OperatorInfo", + "components": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "status", + "type": "uint8", + "internalType": "enum IRegistryCoordinator.OperatorStatus" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorFromId", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorId", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorSetParams", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IRegistryCoordinator.OperatorSetParam", + "components": [ + { + "name": "maxOperatorCount", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "kickBIPsOfOperatorStake", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "kickBIPsOfTotalStake", + "type": "uint16", + "internalType": "uint16" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorStatus", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "enum IRegistryCoordinator.OperatorStatus" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getQuorumBitmapAtBlockNumberByIndex", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint192", + "internalType": "uint192" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getQuorumBitmapHistoryLength", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getQuorumBitmapIndicesAtBlockNumber", + "inputs": [ + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "operatorIds", + "type": "bytes32[]", + "internalType": "bytes32[]" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32[]", + "internalType": "uint32[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getQuorumBitmapUpdateByIndex", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IRegistryCoordinator.QuorumBitmapUpdate", + "components": [ + { + "name": "updateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "nextUpdateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "quorumBitmap", + "type": "uint192", + "internalType": "uint192" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "indexRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IIndexRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isChurnApproverSaltUsed", + "inputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "lastEjectionTimestamp", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "numRegistries", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pubkeyRegistrationMessageHash", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "quorumCount", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "quorumUpdateBlockNumber", + "inputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registries", + "inputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "serviceManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IServiceManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "stakeRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStakeRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "ChurnApproverUpdated", + "inputs": [ + { + "name": "prevChurnApprover", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newChurnApprover", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "EjectorUpdated", + "inputs": [ + { + "name": "prevEjector", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newEjector", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorDeregistered", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "operatorId", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorRegistered", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "operatorId", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorSetParamsUpdated", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "indexed": true, + "internalType": "uint8" + }, + { + "name": "operatorSetParams", + "type": "tuple", + "indexed": false, + "internalType": "struct IRegistryCoordinator.OperatorSetParam", + "components": [ + { + "name": "maxOperatorCount", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "kickBIPsOfOperatorStake", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "kickBIPsOfTotalStake", + "type": "uint16", + "internalType": "uint16" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "QuorumBlockNumberUpdated", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "indexed": true, + "internalType": "uint8" + }, + { + "name": "blocknumber", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod RegistryCoordinatorStorage { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Event with signature `ChurnApproverUpdated(address,address)` and selector `0x315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c`. + ```solidity + event ChurnApproverUpdated(address prevChurnApprover, address newChurnApprover); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct ChurnApproverUpdated { + #[allow(missing_docs)] + pub prevChurnApprover: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newChurnApprover: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ChurnApproverUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "ChurnApproverUpdated(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 49u8, 84u8, 87u8, 216u8, 168u8, 254u8, 96u8, 240u8, 74u8, 241u8, 124u8, 22u8, + 226u8, 245u8, 165u8, 225u8, 219u8, 97u8, 43u8, 49u8, 100u8, 142u8, 88u8, 3u8, + 3u8, 96u8, 117u8, 158u8, 248u8, 243u8, 82u8, 140u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + prevChurnApprover: data.0, + newChurnApprover: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.prevChurnApprover, + ), + ::tokenize( + &self.newChurnApprover, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ChurnApproverUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ChurnApproverUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ChurnApproverUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `EjectorUpdated(address,address)` and selector `0x8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9`. + ```solidity + event EjectorUpdated(address prevEjector, address newEjector); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct EjectorUpdated { + #[allow(missing_docs)] + pub prevEjector: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newEjector: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for EjectorUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "EjectorUpdated(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 143u8, 48u8, 171u8, 9u8, 244u8, 58u8, 108u8, 21u8, 125u8, 127u8, 206u8, 126u8, + 10u8, 19u8, 192u8, 3u8, 4u8, 44u8, 28u8, 149u8, 232u8, 167u8, 46u8, 122u8, + 20u8, 106u8, 33u8, 192u8, 202u8, 162u8, 77u8, 201u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + prevEjector: data.0, + newEjector: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.prevEjector, + ), + ::tokenize( + &self.newEjector, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for EjectorUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&EjectorUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &EjectorUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorDeregistered(address,bytes32)` and selector `0x396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e4`. + ```solidity + event OperatorDeregistered(address indexed operator, bytes32 indexed operatorId); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorDeregistered { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorDeregistered { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + const SIGNATURE: &'static str = "OperatorDeregistered(address,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 57u8, 111u8, 220u8, 177u8, 128u8, 203u8, 15u8, 234u8, 38u8, 146u8, 129u8, 19u8, + 251u8, 15u8, 209u8, 195u8, 84u8, 152u8, 99u8, 249u8, 205u8, 86u8, 62u8, 106u8, + 24u8, 79u8, 29u8, 87u8, 129u8, 22u8, 200u8, 228u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: topics.1, + operatorId: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.operator.clone(), + self.operatorId.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + out[2usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.operatorId); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorDeregistered { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorDeregistered> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorDeregistered) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorRegistered(address,bytes32)` and selector `0xe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe`. + ```solidity + event OperatorRegistered(address indexed operator, bytes32 indexed operatorId); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorRegistered { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorRegistered { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + const SIGNATURE: &'static str = "OperatorRegistered(address,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 232u8, 230u8, 140u8, 239u8, 28u8, 58u8, 118u8, 30u8, 215u8, 190u8, 126u8, + 132u8, 99u8, 163u8, 117u8, 242u8, 127u8, 123u8, 195u8, 53u8, 229u8, 24u8, 36u8, + 34u8, 60u8, 172u8, 206u8, 99u8, 110u8, 197u8, 195u8, 254u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operator: topics.1, + operatorId: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.operator.clone(), + self.operatorId.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.operator, + ); + out[2usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.operatorId); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorRegistered { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorRegistered> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorRegistered) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorSetParamsUpdated(uint8,(uint32,uint16,uint16))` and selector `0x3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac`. + ```solidity + event OperatorSetParamsUpdated(uint8 indexed quorumNumber, IRegistryCoordinator.OperatorSetParam operatorSetParams); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorSetParamsUpdated { + #[allow(missing_docs)] + pub quorumNumber: u8, + #[allow(missing_docs)] + pub operatorSetParams: + ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorSetParamsUpdated { + type DataTuple<'a> = (IRegistryCoordinator::OperatorSetParam,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + const SIGNATURE: &'static str = + "OperatorSetParamsUpdated(uint8,(uint32,uint16,uint16))"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 62u8, 230u8, 254u8, 141u8, 84u8, 97u8, 2u8, 68u8, 195u8, 233u8, 211u8, 192u8, + 102u8, 174u8, 74u8, 238u8, 153u8, 120u8, 132u8, 170u8, 40u8, 241u8, 6u8, 22u8, + 174u8, 130u8, 25u8, 37u8, 64u8, 19u8, 24u8, 172u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + quorumNumber: topics.1, + operatorSetParams: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.operatorSetParams, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorSetParamsUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorSetParamsUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorSetParamsUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `QuorumBlockNumberUpdated(uint8,uint256)` and selector `0x46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4`. + ```solidity + event QuorumBlockNumberUpdated(uint8 indexed quorumNumber, uint256 blocknumber); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct QuorumBlockNumberUpdated { + #[allow(missing_docs)] + pub quorumNumber: u8, + #[allow(missing_docs)] + pub blocknumber: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for QuorumBlockNumberUpdated { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + const SIGNATURE: &'static str = "QuorumBlockNumberUpdated(uint8,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 70u8, 7u8, 125u8, 85u8, 51u8, 7u8, 99u8, 241u8, 98u8, 105u8, 253u8, 117u8, + 229u8, 118u8, 22u8, 99u8, 244u8, 25u8, 45u8, 39u8, 145u8, 116u8, 124u8, 1u8, + 137u8, 177u8, 106u8, 211u8, 29u8, 176u8, 125u8, 180u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + quorumNumber: topics.1, + blocknumber: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.blocknumber, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for QuorumBlockNumberUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&QuorumBlockNumberUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &QuorumBlockNumberUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `OPERATOR_CHURN_APPROVAL_TYPEHASH()` and selector `0xca0de882`. + ```solidity + function OPERATOR_CHURN_APPROVAL_TYPEHASH() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OPERATOR_CHURN_APPROVAL_TYPEHASHCall {} + ///Container type for the return parameters of the [`OPERATOR_CHURN_APPROVAL_TYPEHASH()`](OPERATOR_CHURN_APPROVAL_TYPEHASHCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OPERATOR_CHURN_APPROVAL_TYPEHASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OPERATOR_CHURN_APPROVAL_TYPEHASHCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OPERATOR_CHURN_APPROVAL_TYPEHASHCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OPERATOR_CHURN_APPROVAL_TYPEHASHReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OPERATOR_CHURN_APPROVAL_TYPEHASHReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for OPERATOR_CHURN_APPROVAL_TYPEHASHCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = OPERATOR_CHURN_APPROVAL_TYPEHASHReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "OPERATOR_CHURN_APPROVAL_TYPEHASH()"; + const SELECTOR: [u8; 4] = [202u8, 13u8, 232u8, 130u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `PUBKEY_REGISTRATION_TYPEHASH()` and selector `0x9feab859`. + ```solidity + function PUBKEY_REGISTRATION_TYPEHASH() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct PUBKEY_REGISTRATION_TYPEHASHCall {} + ///Container type for the return parameters of the [`PUBKEY_REGISTRATION_TYPEHASH()`](PUBKEY_REGISTRATION_TYPEHASHCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct PUBKEY_REGISTRATION_TYPEHASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: PUBKEY_REGISTRATION_TYPEHASHCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for PUBKEY_REGISTRATION_TYPEHASHCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: PUBKEY_REGISTRATION_TYPEHASHReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for PUBKEY_REGISTRATION_TYPEHASHReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for PUBKEY_REGISTRATION_TYPEHASHCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = PUBKEY_REGISTRATION_TYPEHASHReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "PUBKEY_REGISTRATION_TYPEHASH()"; + const SELECTOR: [u8; 4] = [159u8, 234u8, 184u8, 89u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `blsApkRegistry()` and selector `0x5df45946`. + ```solidity + function blsApkRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct blsApkRegistryCall {} + ///Container type for the return parameters of the [`blsApkRegistry()`](blsApkRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct blsApkRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: blsApkRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for blsApkRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: blsApkRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for blsApkRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for blsApkRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = blsApkRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "blsApkRegistry()"; + const SELECTOR: [u8; 4] = [93u8, 244u8, 89u8, 70u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `churnApprover()` and selector `0x054310e6`. + ```solidity + function churnApprover() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct churnApproverCall {} + ///Container type for the return parameters of the [`churnApprover()`](churnApproverCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct churnApproverReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: churnApproverCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for churnApproverCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: churnApproverReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for churnApproverReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for churnApproverCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = churnApproverReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "churnApprover()"; + const SELECTOR: [u8; 4] = [5u8, 67u8, 16u8, 230u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `ejectOperator(address,bytes)` and selector `0x6e3b17db`. + ```solidity + function ejectOperator(address operator, bytes memory quorumNumbers) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ejectOperatorCall { + pub operator: alloy::sol_types::private::Address, + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`ejectOperator(address,bytes)`](ejectOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ejectOperatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ejectOperatorCall) -> Self { + (value.operator, value.quorumNumbers) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ejectOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + quorumNumbers: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ejectOperatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ejectOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ejectOperatorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ejectOperatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ejectOperator(address,bytes)"; + const SELECTOR: [u8; 4] = [110u8, 59u8, 23u8, 219u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `ejectionCooldown()` and selector `0xa96f783e`. + ```solidity + function ejectionCooldown() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ejectionCooldownCall {} + ///Container type for the return parameters of the [`ejectionCooldown()`](ejectionCooldownCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ejectionCooldownReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ejectionCooldownCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ejectionCooldownCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ejectionCooldownReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ejectionCooldownReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ejectionCooldownCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ejectionCooldownReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ejectionCooldown()"; + const SELECTOR: [u8; 4] = [169u8, 111u8, 120u8, 62u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `ejector()` and selector `0x28f61b31`. + ```solidity + function ejector() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ejectorCall {} + ///Container type for the return parameters of the [`ejector()`](ejectorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ejectorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ejectorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ejectorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ejectorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ejectorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ejectorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ejectorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ejector()"; + const SELECTOR: [u8; 4] = [40u8, 246u8, 27u8, 49u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getCurrentQuorumBitmap(bytes32)` and selector `0x871ef049`. + ```solidity + function getCurrentQuorumBitmap(bytes32 operatorId) external view returns (uint192); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getCurrentQuorumBitmapCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`getCurrentQuorumBitmap(bytes32)`](getCurrentQuorumBitmapCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getCurrentQuorumBitmapReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U192, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCurrentQuorumBitmapCall) -> Self { + (value.operatorId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCurrentQuorumBitmapCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<192>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U192,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCurrentQuorumBitmapReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCurrentQuorumBitmapReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getCurrentQuorumBitmapCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getCurrentQuorumBitmapReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<192>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getCurrentQuorumBitmap(bytes32)"; + const SELECTOR: [u8; 4] = [135u8, 30u8, 240u8, 73u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperator(address)` and selector `0x5865c60c`. + ```solidity + function getOperator(address operator) external view returns (IRegistryCoordinator.OperatorInfo memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getOperator(address)`](getOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IRegistryCoordinator::OperatorInfo,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorReturn; + type ReturnTuple<'a> = (IRegistryCoordinator::OperatorInfo,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperator(address)"; + const SELECTOR: [u8; 4] = [88u8, 101u8, 198u8, 12u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorFromId(bytes32)` and selector `0x296bb064`. + ```solidity + function getOperatorFromId(bytes32 operatorId) external view returns (address operator); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorFromIdCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`getOperatorFromId(bytes32)`](getOperatorFromIdCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorFromIdReturn { + pub operator: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorFromIdCall) -> Self { + (value.operatorId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorFromIdCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorFromIdReturn) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorFromIdReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorFromIdCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorFromIdReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorFromId(bytes32)"; + const SELECTOR: [u8; 4] = [41u8, 107u8, 176u8, 100u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorId(address)` and selector `0x13542a4e`. + ```solidity + function getOperatorId(address operator) external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorIdCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getOperatorId(address)`](getOperatorIdCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorIdReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorIdCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorIdCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorIdReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorIdReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorIdCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorIdReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorId(address)"; + const SELECTOR: [u8; 4] = [19u8, 84u8, 42u8, 78u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorSetParams(uint8)` and selector `0xe65797ad`. + ```solidity + function getOperatorSetParams(uint8 quorumNumber) external view returns (IRegistryCoordinator.OperatorSetParam memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorSetParamsCall { + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`getOperatorSetParams(uint8)`](getOperatorSetParamsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorSetParamsReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorSetParamsCall) -> Self { + (value.quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorSetParamsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IRegistryCoordinator::OperatorSetParam,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorSetParamsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorSetParamsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorSetParamsCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorSetParamsReturn; + type ReturnTuple<'a> = (IRegistryCoordinator::OperatorSetParam,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorSetParams(uint8)"; + const SELECTOR: [u8; 4] = [230u8, 87u8, 151u8, 173u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorStatus(address)` and selector `0xfd39105a`. + ```solidity + function getOperatorStatus(address operator) external view returns (IRegistryCoordinator.OperatorStatus); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorStatusCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getOperatorStatus(address)`](getOperatorStatusCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorStatusReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorStatusCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorStatusCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IRegistryCoordinator::OperatorStatus,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorStatusReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorStatusReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorStatusCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorStatusReturn; + type ReturnTuple<'a> = (IRegistryCoordinator::OperatorStatus,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorStatus(address)"; + const SELECTOR: [u8; 4] = [253u8, 57u8, 16u8, 90u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getQuorumBitmapAtBlockNumberByIndex(bytes32,uint32,uint256)` and selector `0x04ec6351`. + ```solidity + function getQuorumBitmapAtBlockNumberByIndex(bytes32 operatorId, uint32 blockNumber, uint256 index) external view returns (uint192); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumBitmapAtBlockNumberByIndexCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub blockNumber: u32, + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getQuorumBitmapAtBlockNumberByIndex(bytes32,uint32,uint256)`](getQuorumBitmapAtBlockNumberByIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumBitmapAtBlockNumberByIndexReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U192, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + u32, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumBitmapAtBlockNumberByIndexCall) -> Self { + (value.operatorId, value.blockNumber, value.index) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumBitmapAtBlockNumberByIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + blockNumber: tuple.1, + index: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<192>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U192,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumBitmapAtBlockNumberByIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumBitmapAtBlockNumberByIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getQuorumBitmapAtBlockNumberByIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getQuorumBitmapAtBlockNumberByIndexReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<192>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "getQuorumBitmapAtBlockNumberByIndex(bytes32,uint32,uint256)"; + const SELECTOR: [u8; 4] = [4u8, 236u8, 99u8, 81u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.blockNumber), + as alloy_sol_types::SolType>::tokenize(&self.index), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getQuorumBitmapHistoryLength(bytes32)` and selector `0x03fd3492`. + ```solidity + function getQuorumBitmapHistoryLength(bytes32 operatorId) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumBitmapHistoryLengthCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`getQuorumBitmapHistoryLength(bytes32)`](getQuorumBitmapHistoryLengthCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumBitmapHistoryLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumBitmapHistoryLengthCall) -> Self { + (value.operatorId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumBitmapHistoryLengthCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumBitmapHistoryLengthReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumBitmapHistoryLengthReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getQuorumBitmapHistoryLengthCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getQuorumBitmapHistoryLengthReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getQuorumBitmapHistoryLength(bytes32)"; + const SELECTOR: [u8; 4] = [3u8, 253u8, 52u8, 146u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getQuorumBitmapIndicesAtBlockNumber(uint32,bytes32[])` and selector `0xc391425e`. + ```solidity + function getQuorumBitmapIndicesAtBlockNumber(uint32 blockNumber, bytes32[] memory operatorIds) external view returns (uint32[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumBitmapIndicesAtBlockNumberCall { + pub blockNumber: u32, + pub operatorIds: alloy::sol_types::private::Vec>, + } + ///Container type for the return parameters of the [`getQuorumBitmapIndicesAtBlockNumber(uint32,bytes32[])`](getQuorumBitmapIndicesAtBlockNumberCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumBitmapIndicesAtBlockNumberReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Array>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u32, + alloy::sol_types::private::Vec>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumBitmapIndicesAtBlockNumberCall) -> Self { + (value.blockNumber, value.operatorIds) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumBitmapIndicesAtBlockNumberCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + blockNumber: tuple.0, + operatorIds: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumBitmapIndicesAtBlockNumberReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumBitmapIndicesAtBlockNumberReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getQuorumBitmapIndicesAtBlockNumberCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Array>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getQuorumBitmapIndicesAtBlockNumberReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getQuorumBitmapIndicesAtBlockNumber(uint32,bytes32[])"; + const SELECTOR: [u8; 4] = [195u8, 145u8, 66u8, 94u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.blockNumber), + , + > as alloy_sol_types::SolType>::tokenize(&self.operatorIds), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getQuorumBitmapUpdateByIndex(bytes32,uint256)` and selector `0x1eb812da`. + ```solidity + function getQuorumBitmapUpdateByIndex(bytes32 operatorId, uint256 index) external view returns (IRegistryCoordinator.QuorumBitmapUpdate memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumBitmapUpdateByIndexCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getQuorumBitmapUpdateByIndex(bytes32,uint256)`](getQuorumBitmapUpdateByIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getQuorumBitmapUpdateByIndexReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumBitmapUpdateByIndexCall) -> Self { + (value.operatorId, value.index) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumBitmapUpdateByIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + index: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IRegistryCoordinator::QuorumBitmapUpdate,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getQuorumBitmapUpdateByIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getQuorumBitmapUpdateByIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getQuorumBitmapUpdateByIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getQuorumBitmapUpdateByIndexReturn; + type ReturnTuple<'a> = (IRegistryCoordinator::QuorumBitmapUpdate,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getQuorumBitmapUpdateByIndex(bytes32,uint256)"; + const SELECTOR: [u8; 4] = [30u8, 184u8, 18u8, 218u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.index), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `indexRegistry()` and selector `0x9e9923c2`. + ```solidity + function indexRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct indexRegistryCall {} + ///Container type for the return parameters of the [`indexRegistry()`](indexRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct indexRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: indexRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for indexRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: indexRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for indexRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for indexRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = indexRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "indexRegistry()"; + const SELECTOR: [u8; 4] = [158u8, 153u8, 35u8, 194u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `isChurnApproverSaltUsed(bytes32)` and selector `0x1478851f`. + ```solidity + function isChurnApproverSaltUsed(bytes32) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isChurnApproverSaltUsedCall { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`isChurnApproverSaltUsed(bytes32)`](isChurnApproverSaltUsedCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isChurnApproverSaltUsedReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isChurnApproverSaltUsedCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isChurnApproverSaltUsedCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: isChurnApproverSaltUsedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for isChurnApproverSaltUsedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for isChurnApproverSaltUsedCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = isChurnApproverSaltUsedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "isChurnApproverSaltUsed(bytes32)"; + const SELECTOR: [u8; 4] = [20u8, 120u8, 133u8, 31u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._0), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `lastEjectionTimestamp(address)` and selector `0x125e0584`. + ```solidity + function lastEjectionTimestamp(address) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct lastEjectionTimestampCall { + pub _0: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`lastEjectionTimestamp(address)`](lastEjectionTimestampCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct lastEjectionTimestampReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: lastEjectionTimestampCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for lastEjectionTimestampCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: lastEjectionTimestampReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for lastEjectionTimestampReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for lastEjectionTimestampCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = lastEjectionTimestampReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "lastEjectionTimestamp(address)"; + const SELECTOR: [u8; 4] = [18u8, 94u8, 5u8, 132u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `numRegistries()` and selector `0xd72d8dd6`. + ```solidity + function numRegistries() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct numRegistriesCall {} + ///Container type for the return parameters of the [`numRegistries()`](numRegistriesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct numRegistriesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: numRegistriesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for numRegistriesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: numRegistriesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for numRegistriesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for numRegistriesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = numRegistriesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "numRegistries()"; + const SELECTOR: [u8; 4] = [215u8, 45u8, 141u8, 214u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. + ```solidity + function owner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pubkeyRegistrationMessageHash(address)` and selector `0x3c2a7f4c`. + ```solidity + function pubkeyRegistrationMessageHash(address operator) external view returns (BN254.G1Point memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pubkeyRegistrationMessageHashCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`pubkeyRegistrationMessageHash(address)`](pubkeyRegistrationMessageHashCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pubkeyRegistrationMessageHashReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pubkeyRegistrationMessageHashCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pubkeyRegistrationMessageHashCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (BN254::G1Point,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pubkeyRegistrationMessageHashReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pubkeyRegistrationMessageHashReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pubkeyRegistrationMessageHashCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pubkeyRegistrationMessageHashReturn; + type ReturnTuple<'a> = (BN254::G1Point,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pubkeyRegistrationMessageHash(address)"; + const SELECTOR: [u8; 4] = [60u8, 42u8, 127u8, 76u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `quorumCount()` and selector `0x9aa1653d`. + ```solidity + function quorumCount() external view returns (uint8); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct quorumCountCall {} + ///Container type for the return parameters of the [`quorumCount()`](quorumCountCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct quorumCountReturn { + pub _0: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: quorumCountCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for quorumCountCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: quorumCountReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for quorumCountReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for quorumCountCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = quorumCountReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "quorumCount()"; + const SELECTOR: [u8; 4] = [154u8, 161u8, 101u8, 61u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `quorumUpdateBlockNumber(uint8)` and selector `0x249a0c42`. + ```solidity + function quorumUpdateBlockNumber(uint8) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct quorumUpdateBlockNumberCall { + pub _0: u8, + } + ///Container type for the return parameters of the [`quorumUpdateBlockNumber(uint8)`](quorumUpdateBlockNumberCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct quorumUpdateBlockNumberReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: quorumUpdateBlockNumberCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for quorumUpdateBlockNumberCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: quorumUpdateBlockNumberReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for quorumUpdateBlockNumberReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for quorumUpdateBlockNumberCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = quorumUpdateBlockNumberReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "quorumUpdateBlockNumber(uint8)"; + const SELECTOR: [u8; 4] = [36u8, 154u8, 12u8, 66u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registries(uint256)` and selector `0x6347c900`. + ```solidity + function registries(uint256) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registriesCall { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`registries(uint256)`](registriesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registriesReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registriesCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registriesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registriesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registriesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registriesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registriesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registries(uint256)"; + const SELECTOR: [u8; 4] = [99u8, 71u8, 201u8, 0u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `serviceManager()` and selector `0x3998fdd3`. + ```solidity + function serviceManager() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct serviceManagerCall {} + ///Container type for the return parameters of the [`serviceManager()`](serviceManagerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct serviceManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: serviceManagerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for serviceManagerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: serviceManagerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for serviceManagerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for serviceManagerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = serviceManagerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "serviceManager()"; + const SELECTOR: [u8; 4] = [57u8, 152u8, 253u8, 211u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `stakeRegistry()` and selector `0x68304835`. + ```solidity + function stakeRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakeRegistryCall {} + ///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakeRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakeRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakeRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakeRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakeRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for stakeRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = stakeRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "stakeRegistry()"; + const SELECTOR: [u8; 4] = [104u8, 48u8, 72u8, 53u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`RegistryCoordinatorStorage`](self) function calls. + pub enum RegistryCoordinatorStorageCalls { + OPERATOR_CHURN_APPROVAL_TYPEHASH(OPERATOR_CHURN_APPROVAL_TYPEHASHCall), + PUBKEY_REGISTRATION_TYPEHASH(PUBKEY_REGISTRATION_TYPEHASHCall), + blsApkRegistry(blsApkRegistryCall), + churnApprover(churnApproverCall), + ejectOperator(ejectOperatorCall), + ejectionCooldown(ejectionCooldownCall), + ejector(ejectorCall), + getCurrentQuorumBitmap(getCurrentQuorumBitmapCall), + getOperator(getOperatorCall), + getOperatorFromId(getOperatorFromIdCall), + getOperatorId(getOperatorIdCall), + getOperatorSetParams(getOperatorSetParamsCall), + getOperatorStatus(getOperatorStatusCall), + getQuorumBitmapAtBlockNumberByIndex(getQuorumBitmapAtBlockNumberByIndexCall), + getQuorumBitmapHistoryLength(getQuorumBitmapHistoryLengthCall), + getQuorumBitmapIndicesAtBlockNumber(getQuorumBitmapIndicesAtBlockNumberCall), + getQuorumBitmapUpdateByIndex(getQuorumBitmapUpdateByIndexCall), + indexRegistry(indexRegistryCall), + isChurnApproverSaltUsed(isChurnApproverSaltUsedCall), + lastEjectionTimestamp(lastEjectionTimestampCall), + numRegistries(numRegistriesCall), + owner(ownerCall), + pubkeyRegistrationMessageHash(pubkeyRegistrationMessageHashCall), + quorumCount(quorumCountCall), + quorumUpdateBlockNumber(quorumUpdateBlockNumberCall), + registries(registriesCall), + serviceManager(serviceManagerCall), + stakeRegistry(stakeRegistryCall), + } + #[automatically_derived] + impl RegistryCoordinatorStorageCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [3u8, 253u8, 52u8, 146u8], + [4u8, 236u8, 99u8, 81u8], + [5u8, 67u8, 16u8, 230u8], + [18u8, 94u8, 5u8, 132u8], + [19u8, 84u8, 42u8, 78u8], + [20u8, 120u8, 133u8, 31u8], + [30u8, 184u8, 18u8, 218u8], + [36u8, 154u8, 12u8, 66u8], + [40u8, 246u8, 27u8, 49u8], + [41u8, 107u8, 176u8, 100u8], + [57u8, 152u8, 253u8, 211u8], + [60u8, 42u8, 127u8, 76u8], + [88u8, 101u8, 198u8, 12u8], + [93u8, 244u8, 89u8, 70u8], + [99u8, 71u8, 201u8, 0u8], + [104u8, 48u8, 72u8, 53u8], + [110u8, 59u8, 23u8, 219u8], + [135u8, 30u8, 240u8, 73u8], + [141u8, 165u8, 203u8, 91u8], + [154u8, 161u8, 101u8, 61u8], + [158u8, 153u8, 35u8, 194u8], + [159u8, 234u8, 184u8, 89u8], + [169u8, 111u8, 120u8, 62u8], + [195u8, 145u8, 66u8, 94u8], + [202u8, 13u8, 232u8, 130u8], + [215u8, 45u8, 141u8, 214u8], + [230u8, 87u8, 151u8, 173u8], + [253u8, 57u8, 16u8, 90u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for RegistryCoordinatorStorageCalls { + const NAME: &'static str = "RegistryCoordinatorStorageCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 28usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::OPERATOR_CHURN_APPROVAL_TYPEHASH(_) => { + ::SELECTOR + } + Self::PUBKEY_REGISTRATION_TYPEHASH(_) => { + ::SELECTOR + } + Self::blsApkRegistry(_) => { + ::SELECTOR + } + Self::churnApprover(_) => ::SELECTOR, + Self::ejectOperator(_) => ::SELECTOR, + Self::ejectionCooldown(_) => { + ::SELECTOR + } + Self::ejector(_) => ::SELECTOR, + Self::getCurrentQuorumBitmap(_) => { + ::SELECTOR + } + Self::getOperator(_) => ::SELECTOR, + Self::getOperatorFromId(_) => { + ::SELECTOR + } + Self::getOperatorId(_) => ::SELECTOR, + Self::getOperatorSetParams(_) => { + ::SELECTOR + } + Self::getOperatorStatus(_) => { + ::SELECTOR + } + Self::getQuorumBitmapAtBlockNumberByIndex(_) => { + ::SELECTOR + } + Self::getQuorumBitmapHistoryLength(_) => { + ::SELECTOR + } + Self::getQuorumBitmapIndicesAtBlockNumber(_) => { + ::SELECTOR + } + Self::getQuorumBitmapUpdateByIndex(_) => { + ::SELECTOR + } + Self::indexRegistry(_) => ::SELECTOR, + Self::isChurnApproverSaltUsed(_) => { + ::SELECTOR + } + Self::lastEjectionTimestamp(_) => { + ::SELECTOR + } + Self::numRegistries(_) => ::SELECTOR, + Self::owner(_) => ::SELECTOR, + Self::pubkeyRegistrationMessageHash(_) => { + ::SELECTOR + } + Self::quorumCount(_) => ::SELECTOR, + Self::quorumUpdateBlockNumber(_) => { + ::SELECTOR + } + Self::registries(_) => ::SELECTOR, + Self::serviceManager(_) => { + ::SELECTOR + } + Self::stakeRegistry(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result< + RegistryCoordinatorStorageCalls, + >] = &[ + { + fn getQuorumBitmapHistoryLength( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + RegistryCoordinatorStorageCalls::getQuorumBitmapHistoryLength, + ) + } + getQuorumBitmapHistoryLength + }, + { + fn getQuorumBitmapAtBlockNumberByIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + RegistryCoordinatorStorageCalls::getQuorumBitmapAtBlockNumberByIndex, + ) + } + getQuorumBitmapAtBlockNumberByIndex + }, + { + fn churnApprover( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorStorageCalls::churnApprover) + } + churnApprover + }, + { + fn lastEjectionTimestamp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorStorageCalls::lastEjectionTimestamp) + } + lastEjectionTimestamp + }, + { + fn getOperatorId( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorStorageCalls::getOperatorId) + } + getOperatorId + }, + { + fn isChurnApproverSaltUsed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorStorageCalls::isChurnApproverSaltUsed) + } + isChurnApproverSaltUsed + }, + { + fn getQuorumBitmapUpdateByIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + RegistryCoordinatorStorageCalls::getQuorumBitmapUpdateByIndex, + ) + } + getQuorumBitmapUpdateByIndex + }, + { + fn quorumUpdateBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorStorageCalls::quorumUpdateBlockNumber) + } + quorumUpdateBlockNumber + }, + { + fn ejector( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(RegistryCoordinatorStorageCalls::ejector) + } + ejector + }, + { + fn getOperatorFromId( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorStorageCalls::getOperatorFromId) + } + getOperatorFromId + }, + { + fn serviceManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorStorageCalls::serviceManager) + } + serviceManager + }, + { + fn pubkeyRegistrationMessageHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + RegistryCoordinatorStorageCalls::pubkeyRegistrationMessageHash, + ) + } + pubkeyRegistrationMessageHash + }, + { + fn getOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorStorageCalls::getOperator) + } + getOperator + }, + { + fn blsApkRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorStorageCalls::blsApkRegistry) + } + blsApkRegistry + }, + { + fn registries( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(RegistryCoordinatorStorageCalls::registries) + } + registries + }, + { + fn stakeRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorStorageCalls::stakeRegistry) + } + stakeRegistry + }, + { + fn ejectOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorStorageCalls::ejectOperator) + } + ejectOperator + }, + { + fn getCurrentQuorumBitmap( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorStorageCalls::getCurrentQuorumBitmap) + } + getCurrentQuorumBitmap + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(RegistryCoordinatorStorageCalls::owner) + } + owner + }, + { + fn quorumCount( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorStorageCalls::quorumCount) + } + quorumCount + }, + { + fn indexRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorStorageCalls::indexRegistry) + } + indexRegistry + }, + { + fn PUBKEY_REGISTRATION_TYPEHASH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + RegistryCoordinatorStorageCalls::PUBKEY_REGISTRATION_TYPEHASH, + ) + } + PUBKEY_REGISTRATION_TYPEHASH + }, + { + fn ejectionCooldown( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorStorageCalls::ejectionCooldown) + } + ejectionCooldown + }, + { + fn getQuorumBitmapIndicesAtBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + RegistryCoordinatorStorageCalls::getQuorumBitmapIndicesAtBlockNumber, + ) + } + getQuorumBitmapIndicesAtBlockNumber + }, + { + fn OPERATOR_CHURN_APPROVAL_TYPEHASH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + RegistryCoordinatorStorageCalls::OPERATOR_CHURN_APPROVAL_TYPEHASH, + ) + } + OPERATOR_CHURN_APPROVAL_TYPEHASH + }, + { + fn numRegistries( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorStorageCalls::numRegistries) + } + numRegistries + }, + { + fn getOperatorSetParams( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorStorageCalls::getOperatorSetParams) + } + getOperatorSetParams + }, + { + fn getOperatorStatus( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(RegistryCoordinatorStorageCalls::getOperatorStatus) + } + getOperatorStatus + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::OPERATOR_CHURN_APPROVAL_TYPEHASH(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::PUBKEY_REGISTRATION_TYPEHASH(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::blsApkRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::churnApprover(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::ejectOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::ejectionCooldown(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::ejector(inner) => { + ::abi_encoded_size(inner) + } + Self::getCurrentQuorumBitmap(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorFromId(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorId(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorSetParams(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorStatus(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getQuorumBitmapAtBlockNumberByIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getQuorumBitmapHistoryLength(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getQuorumBitmapIndicesAtBlockNumber(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getQuorumBitmapUpdateByIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::indexRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::isChurnApproverSaltUsed(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::lastEjectionTimestamp(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::numRegistries(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::pubkeyRegistrationMessageHash(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::quorumCount(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::quorumUpdateBlockNumber(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registries(inner) => { + ::abi_encoded_size(inner) + } + Self::serviceManager(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::stakeRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::OPERATOR_CHURN_APPROVAL_TYPEHASH(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::PUBKEY_REGISTRATION_TYPEHASH(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::blsApkRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::churnApprover(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::ejectOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::ejectionCooldown(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::ejector(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getCurrentQuorumBitmap(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperatorFromId(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperatorId(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperatorSetParams(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getOperatorStatus(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getQuorumBitmapAtBlockNumberByIndex(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getQuorumBitmapHistoryLength(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getQuorumBitmapIndicesAtBlockNumber(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getQuorumBitmapUpdateByIndex(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::indexRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::isChurnApproverSaltUsed(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::lastEjectionTimestamp(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::numRegistries(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::pubkeyRegistrationMessageHash(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::quorumCount(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::quorumUpdateBlockNumber(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registries(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::serviceManager(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::stakeRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`RegistryCoordinatorStorage`](self) events. + pub enum RegistryCoordinatorStorageEvents { + ChurnApproverUpdated(ChurnApproverUpdated), + EjectorUpdated(EjectorUpdated), + OperatorDeregistered(OperatorDeregistered), + OperatorRegistered(OperatorRegistered), + OperatorSetParamsUpdated(OperatorSetParamsUpdated), + QuorumBlockNumberUpdated(QuorumBlockNumberUpdated), + } + #[automatically_derived] + impl RegistryCoordinatorStorageEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 49u8, 84u8, 87u8, 216u8, 168u8, 254u8, 96u8, 240u8, 74u8, 241u8, 124u8, 22u8, + 226u8, 245u8, 165u8, 225u8, 219u8, 97u8, 43u8, 49u8, 100u8, 142u8, 88u8, 3u8, 3u8, + 96u8, 117u8, 158u8, 248u8, 243u8, 82u8, 140u8, + ], + [ + 57u8, 111u8, 220u8, 177u8, 128u8, 203u8, 15u8, 234u8, 38u8, 146u8, 129u8, 19u8, + 251u8, 15u8, 209u8, 195u8, 84u8, 152u8, 99u8, 249u8, 205u8, 86u8, 62u8, 106u8, + 24u8, 79u8, 29u8, 87u8, 129u8, 22u8, 200u8, 228u8, + ], + [ + 62u8, 230u8, 254u8, 141u8, 84u8, 97u8, 2u8, 68u8, 195u8, 233u8, 211u8, 192u8, + 102u8, 174u8, 74u8, 238u8, 153u8, 120u8, 132u8, 170u8, 40u8, 241u8, 6u8, 22u8, + 174u8, 130u8, 25u8, 37u8, 64u8, 19u8, 24u8, 172u8, + ], + [ + 70u8, 7u8, 125u8, 85u8, 51u8, 7u8, 99u8, 241u8, 98u8, 105u8, 253u8, 117u8, 229u8, + 118u8, 22u8, 99u8, 244u8, 25u8, 45u8, 39u8, 145u8, 116u8, 124u8, 1u8, 137u8, 177u8, + 106u8, 211u8, 29u8, 176u8, 125u8, 180u8, + ], + [ + 143u8, 48u8, 171u8, 9u8, 244u8, 58u8, 108u8, 21u8, 125u8, 127u8, 206u8, 126u8, + 10u8, 19u8, 192u8, 3u8, 4u8, 44u8, 28u8, 149u8, 232u8, 167u8, 46u8, 122u8, 20u8, + 106u8, 33u8, 192u8, 202u8, 162u8, 77u8, 201u8, + ], + [ + 232u8, 230u8, 140u8, 239u8, 28u8, 58u8, 118u8, 30u8, 215u8, 190u8, 126u8, 132u8, + 99u8, 163u8, 117u8, 242u8, 127u8, 123u8, 195u8, 53u8, 229u8, 24u8, 36u8, 34u8, + 60u8, 172u8, 206u8, 99u8, 110u8, 197u8, 195u8, 254u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for RegistryCoordinatorStorageEvents { + const NAME: &'static str = "RegistryCoordinatorStorageEvents"; + const COUNT: usize = 6usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::ChurnApproverUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::EjectorUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorDeregistered) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorRegistered) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorSetParamsUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::QuorumBlockNumberUpdated) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for RegistryCoordinatorStorageEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::ChurnApproverUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::EjectorUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorDeregistered(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorRegistered(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorSetParamsUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::QuorumBlockNumberUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::ChurnApproverUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::EjectorUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorDeregistered(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorRegistered(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorSetParamsUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::QuorumBlockNumberUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`RegistryCoordinatorStorage`](self) contract instance. + + See the [wrapper's documentation](`RegistryCoordinatorStorageInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> RegistryCoordinatorStorageInstance { + RegistryCoordinatorStorageInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + RegistryCoordinatorStorageInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + RegistryCoordinatorStorageInstance::::deploy_builder(provider) + } + /**A [`RegistryCoordinatorStorage`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`RegistryCoordinatorStorage`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct RegistryCoordinatorStorageInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for RegistryCoordinatorStorageInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("RegistryCoordinatorStorageInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > RegistryCoordinatorStorageInstance + { + /**Creates a new wrapper around an on-chain [`RegistryCoordinatorStorage`](self) contract instance. + + See the [wrapper's documentation](`RegistryCoordinatorStorageInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl RegistryCoordinatorStorageInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> RegistryCoordinatorStorageInstance { + RegistryCoordinatorStorageInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > RegistryCoordinatorStorageInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`OPERATOR_CHURN_APPROVAL_TYPEHASH`] function. + pub fn OPERATOR_CHURN_APPROVAL_TYPEHASH( + &self, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&OPERATOR_CHURN_APPROVAL_TYPEHASHCall {}) + } + ///Creates a new call builder for the [`PUBKEY_REGISTRATION_TYPEHASH`] function. + pub fn PUBKEY_REGISTRATION_TYPEHASH( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&PUBKEY_REGISTRATION_TYPEHASHCall {}) + } + ///Creates a new call builder for the [`blsApkRegistry`] function. + pub fn blsApkRegistry( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&blsApkRegistryCall {}) + } + ///Creates a new call builder for the [`churnApprover`] function. + pub fn churnApprover(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&churnApproverCall {}) + } + ///Creates a new call builder for the [`ejectOperator`] function. + pub fn ejectOperator( + &self, + operator: alloy::sol_types::private::Address, + quorumNumbers: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&ejectOperatorCall { + operator, + quorumNumbers, + }) + } + ///Creates a new call builder for the [`ejectionCooldown`] function. + pub fn ejectionCooldown( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&ejectionCooldownCall {}) + } + ///Creates a new call builder for the [`ejector`] function. + pub fn ejector(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ejectorCall {}) + } + ///Creates a new call builder for the [`getCurrentQuorumBitmap`] function. + pub fn getCurrentQuorumBitmap( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getCurrentQuorumBitmapCall { operatorId }) + } + ///Creates a new call builder for the [`getOperator`] function. + pub fn getOperator( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorCall { operator }) + } + ///Creates a new call builder for the [`getOperatorFromId`] function. + pub fn getOperatorFromId( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorFromIdCall { operatorId }) + } + ///Creates a new call builder for the [`getOperatorId`] function. + pub fn getOperatorId( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorIdCall { operator }) + } + ///Creates a new call builder for the [`getOperatorSetParams`] function. + pub fn getOperatorSetParams( + &self, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorSetParamsCall { quorumNumber }) + } + ///Creates a new call builder for the [`getOperatorStatus`] function. + pub fn getOperatorStatus( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorStatusCall { operator }) + } + ///Creates a new call builder for the [`getQuorumBitmapAtBlockNumberByIndex`] function. + pub fn getQuorumBitmapAtBlockNumberByIndex( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + blockNumber: u32, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&getQuorumBitmapAtBlockNumberByIndexCall { + operatorId, + blockNumber, + index, + }) + } + ///Creates a new call builder for the [`getQuorumBitmapHistoryLength`] function. + pub fn getQuorumBitmapHistoryLength( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getQuorumBitmapHistoryLengthCall { operatorId }) + } + ///Creates a new call builder for the [`getQuorumBitmapIndicesAtBlockNumber`] function. + pub fn getQuorumBitmapIndicesAtBlockNumber( + &self, + blockNumber: u32, + operatorIds: alloy::sol_types::private::Vec>, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&getQuorumBitmapIndicesAtBlockNumberCall { + blockNumber, + operatorIds, + }) + } + ///Creates a new call builder for the [`getQuorumBitmapUpdateByIndex`] function. + pub fn getQuorumBitmapUpdateByIndex( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getQuorumBitmapUpdateByIndexCall { operatorId, index }) + } + ///Creates a new call builder for the [`indexRegistry`] function. + pub fn indexRegistry(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&indexRegistryCall {}) + } + ///Creates a new call builder for the [`isChurnApproverSaltUsed`] function. + pub fn isChurnApproverSaltUsed( + &self, + _0: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&isChurnApproverSaltUsedCall { _0 }) + } + ///Creates a new call builder for the [`lastEjectionTimestamp`] function. + pub fn lastEjectionTimestamp( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&lastEjectionTimestampCall { _0 }) + } + ///Creates a new call builder for the [`numRegistries`] function. + pub fn numRegistries(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&numRegistriesCall {}) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`pubkeyRegistrationMessageHash`] function. + pub fn pubkeyRegistrationMessageHash( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&pubkeyRegistrationMessageHashCall { operator }) + } + ///Creates a new call builder for the [`quorumCount`] function. + pub fn quorumCount(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&quorumCountCall {}) + } + ///Creates a new call builder for the [`quorumUpdateBlockNumber`] function. + pub fn quorumUpdateBlockNumber( + &self, + _0: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&quorumUpdateBlockNumberCall { _0 }) + } + ///Creates a new call builder for the [`registries`] function. + pub fn registries( + &self, + _0: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®istriesCall { _0 }) + } + ///Creates a new call builder for the [`serviceManager`] function. + pub fn serviceManager( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&serviceManagerCall {}) + } + ///Creates a new call builder for the [`stakeRegistry`] function. + pub fn stakeRegistry(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&stakeRegistryCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > RegistryCoordinatorStorageInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`ChurnApproverUpdated`] event. + pub fn ChurnApproverUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`EjectorUpdated`] event. + pub fn EjectorUpdated_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorDeregistered`] event. + pub fn OperatorDeregistered_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorRegistered`] event. + pub fn OperatorRegistered_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorSetParamsUpdated`] event. + pub fn OperatorSetParamsUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`QuorumBlockNumberUpdated`] event. + pub fn QuorumBlockNumberUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/safecastupgradeable.rs b/crates/utils/src/safecastupgradeable.rs new file mode 100644 index 00000000..351ca766 --- /dev/null +++ b/crates/utils/src/safecastupgradeable.rs @@ -0,0 +1,221 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface SafeCastUpgradeable {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod SafeCastUpgradeable { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a493000db9d2fbfb61c0ec00f58a2ec5748780ff166099f8c227ff4959f426d764736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xA4\x93\0\r\xB9\xD2\xFB\xFBa\xC0\xEC\0\xF5\x8A.\xC5t\x87\x80\xFF\x16`\x99\xF8\xC2'\xFFIY\xF4&\xD7dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a493000db9d2fbfb61c0ec00f58a2ec5748780ff166099f8c227ff4959f426d764736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xA4\x93\0\r\xB9\xD2\xFB\xFBa\xC0\xEC\0\xF5\x8A.\xC5t\x87\x80\xFF\x16`\x99\xF8\xC2'\xFFIY\xF4&\xD7dsolcC\0\x08\x0C\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`SafeCastUpgradeable`](self) contract instance. + + See the [wrapper's documentation](`SafeCastUpgradeableInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> SafeCastUpgradeableInstance { + SafeCastUpgradeableInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + SafeCastUpgradeableInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + SafeCastUpgradeableInstance::::deploy_builder(provider) + } + /**A [`SafeCastUpgradeable`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`SafeCastUpgradeable`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct SafeCastUpgradeableInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for SafeCastUpgradeableInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("SafeCastUpgradeableInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > SafeCastUpgradeableInstance + { + /**Creates a new wrapper around an on-chain [`SafeCastUpgradeable`](self) contract instance. + + See the [wrapper's documentation](`SafeCastUpgradeableInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl SafeCastUpgradeableInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> SafeCastUpgradeableInstance { + SafeCastUpgradeableInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > SafeCastUpgradeableInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > SafeCastUpgradeableInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/safeerc20.rs b/crates/utils/src/safeerc20.rs new file mode 100644 index 00000000..082e6549 --- /dev/null +++ b/crates/utils/src/safeerc20.rs @@ -0,0 +1,219 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface SafeERC20 {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod SafeERC20 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122049d94ff5a46e62e2f9bd04916090407b188d7d40badf72cea2e8a0afcfd68ed064736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 I\xD9O\xF5\xA4nb\xE2\xF9\xBD\x04\x91`\x90@{\x18\x8D}@\xBA\xDFr\xCE\xA2\xE8\xA0\xAF\xCF\xD6\x8E\xD0dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122049d94ff5a46e62e2f9bd04916090407b188d7d40badf72cea2e8a0afcfd68ed064736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 I\xD9O\xF5\xA4nb\xE2\xF9\xBD\x04\x91`\x90@{\x18\x8D}@\xBA\xDFr\xCE\xA2\xE8\xA0\xAF\xCF\xD6\x8E\xD0dsolcC\0\x08\x0C\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`SafeERC20`](self) contract instance. + + See the [wrapper's documentation](`SafeERC20Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> SafeERC20Instance { + SafeERC20Instance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + SafeERC20Instance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + SafeERC20Instance::::deploy_builder(provider) + } + /**A [`SafeERC20`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`SafeERC20`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct SafeERC20Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for SafeERC20Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("SafeERC20Instance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > SafeERC20Instance + { + /**Creates a new wrapper around an on-chain [`SafeERC20`](self) contract instance. + + See the [wrapper's documentation](`SafeERC20Instance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl SafeERC20Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> SafeERC20Instance { + SafeERC20Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > SafeERC20Instance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > SafeERC20Instance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/servicemanagerbase.rs b/crates/utils/src/servicemanagerbase.rs new file mode 100644 index 00000000..406f9e34 --- /dev/null +++ b/crates/utils/src/servicemanagerbase.rs @@ -0,0 +1,3678 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library IRewardsCoordinator { + struct RewardsSubmission { StrategyAndMultiplier[] strategiesAndMultipliers; address token; uint256 amount; uint32 startTimestamp; uint32 duration; } + struct StrategyAndMultiplier { address strategy; uint96 multiplier; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IRewardsCoordinator { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct RewardsSubmission { StrategyAndMultiplier[] strategiesAndMultipliers; address token; uint256 amount; uint32 startTimestamp; uint32 duration; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct RewardsSubmission { + pub strategiesAndMultipliers: alloy::sol_types::private::Vec< + ::RustType, + >, + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::primitives::aliases::U256, + pub startTimestamp: u32, + pub duration: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + u32, + u32, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: RewardsSubmission) -> Self { + ( + value.strategiesAndMultipliers, + value.token, + value.amount, + value.startTimestamp, + value.duration, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for RewardsSubmission { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategiesAndMultipliers: tuple.0, + token: tuple.1, + amount: tuple.2, + startTimestamp: tuple.3, + duration: tuple.4, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for RewardsSubmission { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for RewardsSubmission { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.strategiesAndMultipliers, + ), + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.startTimestamp), + as alloy_sol_types::SolType>::tokenize(&self.duration), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for RewardsSubmission { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for RewardsSubmission { + const NAME: &'static str = "RewardsSubmission"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "RewardsSubmission(StrategyAndMultiplier[] strategiesAndMultipliers,address token,uint256 amount,uint32 startTimestamp,uint32 duration)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + let mut components = alloy_sol_types::private::Vec::with_capacity(1); + components.push( + ::eip712_root_type(), + ); + components.extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word( + &self.strategiesAndMultipliers, + ) + .0, + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.startTimestamp, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.duration) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for RewardsSubmission { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.strategiesAndMultipliers, + ) + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.startTimestamp, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.duration, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.strategiesAndMultipliers, + out, + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.startTimestamp, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.duration, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct StrategyAndMultiplier { address strategy; uint96 multiplier; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct StrategyAndMultiplier { + pub strategy: alloy::sol_types::private::Address, + pub multiplier: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<96>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U96, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: StrategyAndMultiplier) -> Self { + (value.strategy, value.multiplier) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for StrategyAndMultiplier { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategy: tuple.0, + multiplier: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for StrategyAndMultiplier { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for StrategyAndMultiplier { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.multiplier, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for StrategyAndMultiplier { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for StrategyAndMultiplier { + const NAME: &'static str = "StrategyAndMultiplier"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "StrategyAndMultiplier(address strategy,uint96 multiplier)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.strategy, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.multiplier) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for StrategyAndMultiplier { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.strategy, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.multiplier, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.strategy, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.multiplier, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IRewardsCoordinator`](self) contract instance. + + See the [wrapper's documentation](`IRewardsCoordinatorInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IRewardsCoordinatorInstance { + IRewardsCoordinatorInstance::::new(address, provider) + } + /**A [`IRewardsCoordinator`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IRewardsCoordinator`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IRewardsCoordinatorInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IRewardsCoordinatorInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IRewardsCoordinatorInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IRewardsCoordinatorInstance + { + /**Creates a new wrapper around an on-chain [`IRewardsCoordinator`](self) contract instance. + + See the [wrapper's documentation](`IRewardsCoordinatorInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IRewardsCoordinatorInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IRewardsCoordinatorInstance { + IRewardsCoordinatorInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IRewardsCoordinatorInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IRewardsCoordinatorInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library ISignatureUtils { + struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ISignatureUtils { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SignatureWithSaltAndExpiry { + pub signature: alloy::sol_types::private::Bytes, + pub salt: alloy::sol_types::private::FixedBytes<32>, + pub expiry: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: SignatureWithSaltAndExpiry) -> Self { + (value.signature, value.salt, value.expiry) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for SignatureWithSaltAndExpiry { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + signature: tuple.0, + salt: tuple.1, + expiry: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for SignatureWithSaltAndExpiry { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for SignatureWithSaltAndExpiry { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.signature, + ), + as alloy_sol_types::SolType>::tokenize(&self.salt), + as alloy_sol_types::SolType>::tokenize(&self.expiry), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for SignatureWithSaltAndExpiry { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for SignatureWithSaltAndExpiry { + const NAME: &'static str = "SignatureWithSaltAndExpiry"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "SignatureWithSaltAndExpiry(bytes signature,bytes32 salt,uint256 expiry)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.signature, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.salt) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.expiry) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for SignatureWithSaltAndExpiry { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.signature, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.salt) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.expiry, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.signature, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.salt, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.expiry, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ISignatureUtilsInstance { + ISignatureUtilsInstance::::new(address, provider) + } + /**A [`ISignatureUtils`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ISignatureUtils`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ISignatureUtilsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ISignatureUtilsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ISignatureUtilsInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ISignatureUtilsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ISignatureUtilsInstance { + ISignatureUtilsInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library IRewardsCoordinator { + struct RewardsSubmission { + StrategyAndMultiplier[] strategiesAndMultipliers; + address token; + uint256 amount; + uint32 startTimestamp; + uint32 duration; + } + struct StrategyAndMultiplier { + address strategy; + uint96 multiplier; + } +} + +library ISignatureUtils { + struct SignatureWithSaltAndExpiry { + bytes signature; + bytes32 salt; + uint256 expiry; + } +} + +interface ServiceManagerBase { + event Initialized(uint8 version); + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + event RewardsInitiatorUpdated(address prevRewardsInitiator, address newRewardsInitiator); + + function avsDirectory() external view returns (address); + function createAVSRewardsSubmission(IRewardsCoordinator.RewardsSubmission[] memory rewardsSubmissions) external; + function deregisterOperatorFromAVS(address operator) external; + function getOperatorRestakedStrategies(address operator) external view returns (address[] memory); + function getRestakeableStrategies() external view returns (address[] memory); + function owner() external view returns (address); + function registerOperatorToAVS(address operator, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external; + function renounceOwnership() external; + function rewardsInitiator() external view returns (address); + function setRewardsInitiator(address newRewardsInitiator) external; + function transferOwnership(address newOwner) external; + function updateAVSMetadataURI(string memory _metadataURI) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "avsDirectory", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "createAVSRewardsSubmission", + "inputs": [ + { + "name": "rewardsSubmissions", + "type": "tuple[]", + "internalType": "struct IRewardsCoordinator.RewardsSubmission[]", + "components": [ + { + "name": "strategiesAndMultipliers", + "type": "tuple[]", + "internalType": "struct IRewardsCoordinator.StrategyAndMultiplier[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "startTimestamp", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "duration", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "deregisterOperatorFromAVS", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getOperatorRestakedStrategies", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getRestakeableStrategies", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registerOperatorToAVS", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "operatorSignature", + "type": "tuple", + "internalType": "struct ISignatureUtils.SignatureWithSaltAndExpiry", + "components": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "salt", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "rewardsInitiator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setRewardsInitiator", + "inputs": [ + { + "name": "newRewardsInitiator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateAVSMetadataURI", + "inputs": [ + { + "name": "_metadataURI", + "type": "string", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RewardsInitiatorUpdated", + "inputs": [ + { + "name": "prevRewardsInitiator", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newRewardsInitiator", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ServiceManagerBase { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`. + ```solidity + event Initialized(uint8 version); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Initialized { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "Initialized(uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, + 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, + 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { version: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.version, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Initialized { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Initialized> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Initialized) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. + ```solidity + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub previousOwner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, + 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, + 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + previousOwner: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.previousOwner.clone(), + self.newOwner.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.previousOwner, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `RewardsInitiatorUpdated(address,address)` and selector `0xe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3`. + ```solidity + event RewardsInitiatorUpdated(address prevRewardsInitiator, address newRewardsInitiator); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct RewardsInitiatorUpdated { + #[allow(missing_docs)] + pub prevRewardsInitiator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newRewardsInitiator: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for RewardsInitiatorUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "RewardsInitiatorUpdated(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 225u8, 28u8, 221u8, 241u8, 129u8, 106u8, 67u8, 49u8, 140u8, 161u8, 117u8, + 187u8, 197u8, 44u8, 208u8, 24u8, 84u8, 54u8, 233u8, 203u8, 234u8, 215u8, 200u8, + 58u8, 204u8, 84u8, 167u8, 62u8, 70u8, 23u8, 23u8, 227u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + prevRewardsInitiator: data.0, + newRewardsInitiator: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.prevRewardsInitiator, + ), + ::tokenize( + &self.newRewardsInitiator, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for RewardsInitiatorUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&RewardsInitiatorUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &RewardsInitiatorUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `avsDirectory()` and selector `0x6b3aa72e`. + ```solidity + function avsDirectory() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct avsDirectoryCall {} + ///Container type for the return parameters of the [`avsDirectory()`](avsDirectoryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct avsDirectoryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: avsDirectoryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for avsDirectoryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: avsDirectoryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for avsDirectoryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for avsDirectoryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = avsDirectoryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "avsDirectory()"; + const SELECTOR: [u8; 4] = [107u8, 58u8, 167u8, 46u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])` and selector `0xfce36c7d`. + ```solidity + function createAVSRewardsSubmission(IRewardsCoordinator.RewardsSubmission[] memory rewardsSubmissions) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct createAVSRewardsSubmissionCall { + pub rewardsSubmissions: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])`](createAVSRewardsSubmissionCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct createAVSRewardsSubmissionReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: createAVSRewardsSubmissionCall) -> Self { + (value.rewardsSubmissions,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for createAVSRewardsSubmissionCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + rewardsSubmissions: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: createAVSRewardsSubmissionReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for createAVSRewardsSubmissionReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for createAVSRewardsSubmissionCall { + type Parameters<'a> = + (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = createAVSRewardsSubmissionReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])"; + const SELECTOR: [u8; 4] = [252u8, 227u8, 108u8, 125u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( as alloy_sol_types::SolType>::tokenize( + &self.rewardsSubmissions, + ),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `deregisterOperatorFromAVS(address)` and selector `0xa364f4da`. + ```solidity + function deregisterOperatorFromAVS(address operator) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorFromAVSCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`deregisterOperatorFromAVS(address)`](deregisterOperatorFromAVSCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorFromAVSReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorFromAVSCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorFromAVSCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorFromAVSReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorFromAVSReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for deregisterOperatorFromAVSCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = deregisterOperatorFromAVSReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "deregisterOperatorFromAVS(address)"; + const SELECTOR: [u8; 4] = [163u8, 100u8, 244u8, 218u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorRestakedStrategies(address)` and selector `0x33cfb7b7`. + ```solidity + function getOperatorRestakedStrategies(address operator) external view returns (address[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorRestakedStrategiesCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getOperatorRestakedStrategies(address)`](getOperatorRestakedStrategiesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorRestakedStrategiesReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorRestakedStrategiesCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorRestakedStrategiesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorRestakedStrategiesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorRestakedStrategiesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorRestakedStrategiesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorRestakedStrategiesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorRestakedStrategies(address)"; + const SELECTOR: [u8; 4] = [51u8, 207u8, 183u8, 183u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getRestakeableStrategies()` and selector `0xe481af9d`. + ```solidity + function getRestakeableStrategies() external view returns (address[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getRestakeableStrategiesCall {} + ///Container type for the return parameters of the [`getRestakeableStrategies()`](getRestakeableStrategiesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getRestakeableStrategiesReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getRestakeableStrategiesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getRestakeableStrategiesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getRestakeableStrategiesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getRestakeableStrategiesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getRestakeableStrategiesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getRestakeableStrategiesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getRestakeableStrategies()"; + const SELECTOR: [u8; 4] = [228u8, 129u8, 175u8, 157u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. + ```solidity + function owner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registerOperatorToAVS(address,(bytes,bytes32,uint256))` and selector `0x9926ee7d`. + ```solidity + function registerOperatorToAVS(address operator, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorToAVSCall { + pub operator: alloy::sol_types::private::Address, + pub operatorSignature: + ::RustType, + } + ///Container type for the return parameters of the [`registerOperatorToAVS(address,(bytes,bytes32,uint256))`](registerOperatorToAVSCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorToAVSReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithSaltAndExpiry, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorToAVSCall) -> Self { + (value.operator, value.operatorSignature) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorToAVSCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + operatorSignature: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorToAVSReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorToAVSReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registerOperatorToAVSCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithSaltAndExpiry, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registerOperatorToAVSReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "registerOperatorToAVS(address,(bytes,bytes32,uint256))"; + const SELECTOR: [u8; 4] = [153u8, 38u8, 238u8, 125u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.operatorSignature, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `renounceOwnership()` and selector `0x715018a6`. + ```solidity + function renounceOwnership() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct renounceOwnershipCall {} + ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct renounceOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for renounceOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for renounceOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for renounceOwnershipCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = renounceOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "renounceOwnership()"; + const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `rewardsInitiator()` and selector `0xfc299dee`. + ```solidity + function rewardsInitiator() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct rewardsInitiatorCall {} + ///Container type for the return parameters of the [`rewardsInitiator()`](rewardsInitiatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct rewardsInitiatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: rewardsInitiatorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for rewardsInitiatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: rewardsInitiatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for rewardsInitiatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for rewardsInitiatorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = rewardsInitiatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "rewardsInitiator()"; + const SELECTOR: [u8; 4] = [252u8, 41u8, 157u8, 238u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setRewardsInitiator(address)` and selector `0x3bc28c8c`. + ```solidity + function setRewardsInitiator(address newRewardsInitiator) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setRewardsInitiatorCall { + pub newRewardsInitiator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setRewardsInitiator(address)`](setRewardsInitiatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setRewardsInitiatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setRewardsInitiatorCall) -> Self { + (value.newRewardsInitiator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setRewardsInitiatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newRewardsInitiator: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setRewardsInitiatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setRewardsInitiatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setRewardsInitiatorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setRewardsInitiatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setRewardsInitiator(address)"; + const SELECTOR: [u8; 4] = [59u8, 194u8, 140u8, 140u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newRewardsInitiator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. + ```solidity + function transferOwnership(address newOwner) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateAVSMetadataURI(string)` and selector `0xa98fb355`. + ```solidity + function updateAVSMetadataURI(string memory _metadataURI) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateAVSMetadataURICall { + pub _metadataURI: alloy::sol_types::private::String, + } + ///Container type for the return parameters of the [`updateAVSMetadataURI(string)`](updateAVSMetadataURICall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateAVSMetadataURIReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateAVSMetadataURICall) -> Self { + (value._metadataURI,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateAVSMetadataURICall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _metadataURI: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateAVSMetadataURIReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateAVSMetadataURIReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateAVSMetadataURICall { + type Parameters<'a> = (alloy::sol_types::sol_data::String,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateAVSMetadataURIReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateAVSMetadataURI(string)"; + const SELECTOR: [u8; 4] = [169u8, 143u8, 179u8, 85u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._metadataURI, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`ServiceManagerBase`](self) function calls. + pub enum ServiceManagerBaseCalls { + avsDirectory(avsDirectoryCall), + createAVSRewardsSubmission(createAVSRewardsSubmissionCall), + deregisterOperatorFromAVS(deregisterOperatorFromAVSCall), + getOperatorRestakedStrategies(getOperatorRestakedStrategiesCall), + getRestakeableStrategies(getRestakeableStrategiesCall), + owner(ownerCall), + registerOperatorToAVS(registerOperatorToAVSCall), + renounceOwnership(renounceOwnershipCall), + rewardsInitiator(rewardsInitiatorCall), + setRewardsInitiator(setRewardsInitiatorCall), + transferOwnership(transferOwnershipCall), + updateAVSMetadataURI(updateAVSMetadataURICall), + } + #[automatically_derived] + impl ServiceManagerBaseCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [51u8, 207u8, 183u8, 183u8], + [59u8, 194u8, 140u8, 140u8], + [107u8, 58u8, 167u8, 46u8], + [113u8, 80u8, 24u8, 166u8], + [141u8, 165u8, 203u8, 91u8], + [153u8, 38u8, 238u8, 125u8], + [163u8, 100u8, 244u8, 218u8], + [169u8, 143u8, 179u8, 85u8], + [228u8, 129u8, 175u8, 157u8], + [242u8, 253u8, 227u8, 139u8], + [252u8, 41u8, 157u8, 238u8], + [252u8, 227u8, 108u8, 125u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ServiceManagerBaseCalls { + const NAME: &'static str = "ServiceManagerBaseCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 12usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::avsDirectory(_) => ::SELECTOR, + Self::createAVSRewardsSubmission(_) => { + ::SELECTOR + } + Self::deregisterOperatorFromAVS(_) => { + ::SELECTOR + } + Self::getOperatorRestakedStrategies(_) => { + ::SELECTOR + } + Self::getRestakeableStrategies(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::registerOperatorToAVS(_) => { + ::SELECTOR + } + Self::renounceOwnership(_) => { + ::SELECTOR + } + Self::rewardsInitiator(_) => { + ::SELECTOR + } + Self::setRewardsInitiator(_) => { + ::SELECTOR + } + Self::transferOwnership(_) => { + ::SELECTOR + } + Self::updateAVSMetadataURI(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn getOperatorRestakedStrategies( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ServiceManagerBaseCalls::getOperatorRestakedStrategies) + } + getOperatorRestakedStrategies + }, + { + fn setRewardsInitiator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ServiceManagerBaseCalls::setRewardsInitiator) + } + setRewardsInitiator + }, + { + fn avsDirectory( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ServiceManagerBaseCalls::avsDirectory) + } + avsDirectory + }, + { + fn renounceOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ServiceManagerBaseCalls::renounceOwnership) + } + renounceOwnership + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(ServiceManagerBaseCalls::owner) + } + owner + }, + { + fn registerOperatorToAVS( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ServiceManagerBaseCalls::registerOperatorToAVS) + } + registerOperatorToAVS + }, + { + fn deregisterOperatorFromAVS( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ServiceManagerBaseCalls::deregisterOperatorFromAVS) + } + deregisterOperatorFromAVS + }, + { + fn updateAVSMetadataURI( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ServiceManagerBaseCalls::updateAVSMetadataURI) + } + updateAVSMetadataURI + }, + { + fn getRestakeableStrategies( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ServiceManagerBaseCalls::getRestakeableStrategies) + } + getRestakeableStrategies + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ServiceManagerBaseCalls::transferOwnership) + } + transferOwnership + }, + { + fn rewardsInitiator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ServiceManagerBaseCalls::rewardsInitiator) + } + rewardsInitiator + }, + { + fn createAVSRewardsSubmission( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ServiceManagerBaseCalls::createAVSRewardsSubmission) + } + createAVSRewardsSubmission + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::avsDirectory(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::createAVSRewardsSubmission(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::deregisterOperatorFromAVS(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorRestakedStrategies(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getRestakeableStrategies(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::registerOperatorToAVS(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::renounceOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::rewardsInitiator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setRewardsInitiator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::updateAVSMetadataURI(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::avsDirectory(inner) => { + ::abi_encode_raw(inner, out) + } + Self::createAVSRewardsSubmission(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::deregisterOperatorFromAVS(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getOperatorRestakedStrategies(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getRestakeableStrategies(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::registerOperatorToAVS(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::renounceOwnership(inner) => { + ::abi_encode_raw(inner, out) + } + Self::rewardsInitiator(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setRewardsInitiator(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw(inner, out) + } + Self::updateAVSMetadataURI(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + } + } + } + ///Container for all the [`ServiceManagerBase`](self) events. + pub enum ServiceManagerBaseEvents { + Initialized(Initialized), + OwnershipTransferred(OwnershipTransferred), + RewardsInitiatorUpdated(RewardsInitiatorUpdated), + } + #[automatically_derived] + impl ServiceManagerBaseEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, 56u8, + 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, 96u8, + 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ], + [ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, 208u8, + 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, 175u8, 227u8, + 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ], + [ + 225u8, 28u8, 221u8, 241u8, 129u8, 106u8, 67u8, 49u8, 140u8, 161u8, 117u8, 187u8, + 197u8, 44u8, 208u8, 24u8, 84u8, 54u8, 233u8, 203u8, 234u8, 215u8, 200u8, 58u8, + 204u8, 84u8, 167u8, 62u8, 70u8, 23u8, 23u8, 227u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for ServiceManagerBaseEvents { + const NAME: &'static str = "ServiceManagerBaseEvents"; + const COUNT: usize = 3usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::Initialized) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OwnershipTransferred) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::RewardsInitiatorUpdated) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ServiceManagerBaseEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::RewardsInitiatorUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::RewardsInitiatorUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ServiceManagerBase`](self) contract instance. + + See the [wrapper's documentation](`ServiceManagerBaseInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ServiceManagerBaseInstance { + ServiceManagerBaseInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + ServiceManagerBaseInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + ServiceManagerBaseInstance::::deploy_builder(provider) + } + /**A [`ServiceManagerBase`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ServiceManagerBase`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ServiceManagerBaseInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ServiceManagerBaseInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ServiceManagerBaseInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ServiceManagerBaseInstance + { + /**Creates a new wrapper around an on-chain [`ServiceManagerBase`](self) contract instance. + + See the [wrapper's documentation](`ServiceManagerBaseInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ServiceManagerBaseInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ServiceManagerBaseInstance { + ServiceManagerBaseInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ServiceManagerBaseInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`avsDirectory`] function. + pub fn avsDirectory(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&avsDirectoryCall {}) + } + ///Creates a new call builder for the [`createAVSRewardsSubmission`] function. + pub fn createAVSRewardsSubmission( + &self, + rewardsSubmissions: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&createAVSRewardsSubmissionCall { rewardsSubmissions }) + } + ///Creates a new call builder for the [`deregisterOperatorFromAVS`] function. + pub fn deregisterOperatorFromAVS( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&deregisterOperatorFromAVSCall { operator }) + } + ///Creates a new call builder for the [`getOperatorRestakedStrategies`] function. + pub fn getOperatorRestakedStrategies( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorRestakedStrategiesCall { operator }) + } + ///Creates a new call builder for the [`getRestakeableStrategies`] function. + pub fn getRestakeableStrategies( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getRestakeableStrategiesCall {}) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`registerOperatorToAVS`] function. + pub fn registerOperatorToAVS( + &self, + operator: alloy::sol_types::private::Address, + operatorSignature: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterOperatorToAVSCall { + operator, + operatorSignature, + }) + } + ///Creates a new call builder for the [`renounceOwnership`] function. + pub fn renounceOwnership( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&renounceOwnershipCall {}) + } + ///Creates a new call builder for the [`rewardsInitiator`] function. + pub fn rewardsInitiator( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&rewardsInitiatorCall {}) + } + ///Creates a new call builder for the [`setRewardsInitiator`] function. + pub fn setRewardsInitiator( + &self, + newRewardsInitiator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setRewardsInitiatorCall { + newRewardsInitiator, + }) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + ///Creates a new call builder for the [`updateAVSMetadataURI`] function. + pub fn updateAVSMetadataURI( + &self, + _metadataURI: alloy::sol_types::private::String, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateAVSMetadataURICall { _metadataURI }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ServiceManagerBaseInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Initialized`] event. + pub fn Initialized_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`RewardsInitiatorUpdated`] event. + pub fn RewardsInitiatorUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/servicemanagerbasestorage.rs b/crates/utils/src/servicemanagerbasestorage.rs new file mode 100644 index 00000000..4c53c813 --- /dev/null +++ b/crates/utils/src/servicemanagerbasestorage.rs @@ -0,0 +1,3534 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library IRewardsCoordinator { + struct RewardsSubmission { StrategyAndMultiplier[] strategiesAndMultipliers; address token; uint256 amount; uint32 startTimestamp; uint32 duration; } + struct StrategyAndMultiplier { address strategy; uint96 multiplier; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IRewardsCoordinator { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct RewardsSubmission { StrategyAndMultiplier[] strategiesAndMultipliers; address token; uint256 amount; uint32 startTimestamp; uint32 duration; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct RewardsSubmission { + pub strategiesAndMultipliers: alloy::sol_types::private::Vec< + ::RustType, + >, + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::primitives::aliases::U256, + pub startTimestamp: u32, + pub duration: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + u32, + u32, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: RewardsSubmission) -> Self { + ( + value.strategiesAndMultipliers, + value.token, + value.amount, + value.startTimestamp, + value.duration, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for RewardsSubmission { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategiesAndMultipliers: tuple.0, + token: tuple.1, + amount: tuple.2, + startTimestamp: tuple.3, + duration: tuple.4, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for RewardsSubmission { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for RewardsSubmission { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.strategiesAndMultipliers, + ), + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.startTimestamp), + as alloy_sol_types::SolType>::tokenize(&self.duration), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for RewardsSubmission { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for RewardsSubmission { + const NAME: &'static str = "RewardsSubmission"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "RewardsSubmission(StrategyAndMultiplier[] strategiesAndMultipliers,address token,uint256 amount,uint32 startTimestamp,uint32 duration)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + let mut components = alloy_sol_types::private::Vec::with_capacity(1); + components.push( + ::eip712_root_type(), + ); + components.extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word( + &self.strategiesAndMultipliers, + ) + .0, + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.startTimestamp, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.duration) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for RewardsSubmission { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.strategiesAndMultipliers, + ) + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.startTimestamp, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.duration, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.strategiesAndMultipliers, + out, + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.startTimestamp, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.duration, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct StrategyAndMultiplier { address strategy; uint96 multiplier; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct StrategyAndMultiplier { + pub strategy: alloy::sol_types::private::Address, + pub multiplier: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<96>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U96, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: StrategyAndMultiplier) -> Self { + (value.strategy, value.multiplier) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for StrategyAndMultiplier { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategy: tuple.0, + multiplier: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for StrategyAndMultiplier { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for StrategyAndMultiplier { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.multiplier, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for StrategyAndMultiplier { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for StrategyAndMultiplier { + const NAME: &'static str = "StrategyAndMultiplier"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "StrategyAndMultiplier(address strategy,uint96 multiplier)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.strategy, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.multiplier) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for StrategyAndMultiplier { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.strategy, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.multiplier, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.strategy, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.multiplier, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IRewardsCoordinator`](self) contract instance. + + See the [wrapper's documentation](`IRewardsCoordinatorInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IRewardsCoordinatorInstance { + IRewardsCoordinatorInstance::::new(address, provider) + } + /**A [`IRewardsCoordinator`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IRewardsCoordinator`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IRewardsCoordinatorInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IRewardsCoordinatorInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IRewardsCoordinatorInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IRewardsCoordinatorInstance + { + /**Creates a new wrapper around an on-chain [`IRewardsCoordinator`](self) contract instance. + + See the [wrapper's documentation](`IRewardsCoordinatorInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IRewardsCoordinatorInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IRewardsCoordinatorInstance { + IRewardsCoordinatorInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IRewardsCoordinatorInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IRewardsCoordinatorInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library ISignatureUtils { + struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ISignatureUtils { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SignatureWithSaltAndExpiry { + pub signature: alloy::sol_types::private::Bytes, + pub salt: alloy::sol_types::private::FixedBytes<32>, + pub expiry: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: SignatureWithSaltAndExpiry) -> Self { + (value.signature, value.salt, value.expiry) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for SignatureWithSaltAndExpiry { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + signature: tuple.0, + salt: tuple.1, + expiry: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for SignatureWithSaltAndExpiry { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for SignatureWithSaltAndExpiry { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.signature, + ), + as alloy_sol_types::SolType>::tokenize(&self.salt), + as alloy_sol_types::SolType>::tokenize(&self.expiry), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for SignatureWithSaltAndExpiry { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for SignatureWithSaltAndExpiry { + const NAME: &'static str = "SignatureWithSaltAndExpiry"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "SignatureWithSaltAndExpiry(bytes signature,bytes32 salt,uint256 expiry)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.signature, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.salt) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.expiry) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for SignatureWithSaltAndExpiry { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.signature, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.salt) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.expiry, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.signature, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.salt, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.expiry, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ISignatureUtilsInstance { + ISignatureUtilsInstance::::new(address, provider) + } + /**A [`ISignatureUtils`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ISignatureUtils`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ISignatureUtilsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ISignatureUtilsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ISignatureUtilsInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance. + + See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ISignatureUtilsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ISignatureUtilsInstance { + ISignatureUtilsInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureUtilsInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library IRewardsCoordinator { + struct RewardsSubmission { + StrategyAndMultiplier[] strategiesAndMultipliers; + address token; + uint256 amount; + uint32 startTimestamp; + uint32 duration; + } + struct StrategyAndMultiplier { + address strategy; + uint96 multiplier; + } +} + +library ISignatureUtils { + struct SignatureWithSaltAndExpiry { + bytes signature; + bytes32 salt; + uint256 expiry; + } +} + +interface ServiceManagerBaseStorage { + event Initialized(uint8 version); + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + event RewardsInitiatorUpdated(address prevRewardsInitiator, address newRewardsInitiator); + + function avsDirectory() external view returns (address); + function createAVSRewardsSubmission(IRewardsCoordinator.RewardsSubmission[] memory rewardsSubmissions) external; + function deregisterOperatorFromAVS(address operator) external; + function getOperatorRestakedStrategies(address operator) external view returns (address[] memory); + function getRestakeableStrategies() external view returns (address[] memory); + function owner() external view returns (address); + function registerOperatorToAVS(address operator, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external; + function renounceOwnership() external; + function rewardsInitiator() external view returns (address); + function transferOwnership(address newOwner) external; + function updateAVSMetadataURI(string memory _metadataURI) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "avsDirectory", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "createAVSRewardsSubmission", + "inputs": [ + { + "name": "rewardsSubmissions", + "type": "tuple[]", + "internalType": "struct IRewardsCoordinator.RewardsSubmission[]", + "components": [ + { + "name": "strategiesAndMultipliers", + "type": "tuple[]", + "internalType": "struct IRewardsCoordinator.StrategyAndMultiplier[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "startTimestamp", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "duration", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "deregisterOperatorFromAVS", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getOperatorRestakedStrategies", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getRestakeableStrategies", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registerOperatorToAVS", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "operatorSignature", + "type": "tuple", + "internalType": "struct ISignatureUtils.SignatureWithSaltAndExpiry", + "components": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "salt", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "rewardsInitiator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateAVSMetadataURI", + "inputs": [ + { + "name": "_metadataURI", + "type": "string", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RewardsInitiatorUpdated", + "inputs": [ + { + "name": "prevRewardsInitiator", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newRewardsInitiator", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ServiceManagerBaseStorage { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`. + ```solidity + event Initialized(uint8 version); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Initialized { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "Initialized(uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, + 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, + 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { version: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.version, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Initialized { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Initialized> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Initialized) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. + ```solidity + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub previousOwner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, + 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, + 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + previousOwner: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.previousOwner.clone(), + self.newOwner.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.previousOwner, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `RewardsInitiatorUpdated(address,address)` and selector `0xe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3`. + ```solidity + event RewardsInitiatorUpdated(address prevRewardsInitiator, address newRewardsInitiator); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct RewardsInitiatorUpdated { + #[allow(missing_docs)] + pub prevRewardsInitiator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newRewardsInitiator: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for RewardsInitiatorUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "RewardsInitiatorUpdated(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 225u8, 28u8, 221u8, 241u8, 129u8, 106u8, 67u8, 49u8, 140u8, 161u8, 117u8, + 187u8, 197u8, 44u8, 208u8, 24u8, 84u8, 54u8, 233u8, 203u8, 234u8, 215u8, 200u8, + 58u8, 204u8, 84u8, 167u8, 62u8, 70u8, 23u8, 23u8, 227u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + prevRewardsInitiator: data.0, + newRewardsInitiator: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.prevRewardsInitiator, + ), + ::tokenize( + &self.newRewardsInitiator, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for RewardsInitiatorUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&RewardsInitiatorUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &RewardsInitiatorUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `avsDirectory()` and selector `0x6b3aa72e`. + ```solidity + function avsDirectory() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct avsDirectoryCall {} + ///Container type for the return parameters of the [`avsDirectory()`](avsDirectoryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct avsDirectoryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: avsDirectoryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for avsDirectoryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: avsDirectoryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for avsDirectoryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for avsDirectoryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = avsDirectoryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "avsDirectory()"; + const SELECTOR: [u8; 4] = [107u8, 58u8, 167u8, 46u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])` and selector `0xfce36c7d`. + ```solidity + function createAVSRewardsSubmission(IRewardsCoordinator.RewardsSubmission[] memory rewardsSubmissions) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct createAVSRewardsSubmissionCall { + pub rewardsSubmissions: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])`](createAVSRewardsSubmissionCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct createAVSRewardsSubmissionReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: createAVSRewardsSubmissionCall) -> Self { + (value.rewardsSubmissions,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for createAVSRewardsSubmissionCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + rewardsSubmissions: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: createAVSRewardsSubmissionReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for createAVSRewardsSubmissionReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for createAVSRewardsSubmissionCall { + type Parameters<'a> = + (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = createAVSRewardsSubmissionReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])"; + const SELECTOR: [u8; 4] = [252u8, 227u8, 108u8, 125u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( as alloy_sol_types::SolType>::tokenize( + &self.rewardsSubmissions, + ),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `deregisterOperatorFromAVS(address)` and selector `0xa364f4da`. + ```solidity + function deregisterOperatorFromAVS(address operator) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorFromAVSCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`deregisterOperatorFromAVS(address)`](deregisterOperatorFromAVSCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorFromAVSReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorFromAVSCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorFromAVSCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorFromAVSReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorFromAVSReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for deregisterOperatorFromAVSCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = deregisterOperatorFromAVSReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "deregisterOperatorFromAVS(address)"; + const SELECTOR: [u8; 4] = [163u8, 100u8, 244u8, 218u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorRestakedStrategies(address)` and selector `0x33cfb7b7`. + ```solidity + function getOperatorRestakedStrategies(address operator) external view returns (address[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorRestakedStrategiesCall { + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getOperatorRestakedStrategies(address)`](getOperatorRestakedStrategiesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorRestakedStrategiesReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorRestakedStrategiesCall) -> Self { + (value.operator,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorRestakedStrategiesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operator: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorRestakedStrategiesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorRestakedStrategiesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorRestakedStrategiesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorRestakedStrategiesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorRestakedStrategies(address)"; + const SELECTOR: [u8; 4] = [51u8, 207u8, 183u8, 183u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getRestakeableStrategies()` and selector `0xe481af9d`. + ```solidity + function getRestakeableStrategies() external view returns (address[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getRestakeableStrategiesCall {} + ///Container type for the return parameters of the [`getRestakeableStrategies()`](getRestakeableStrategiesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getRestakeableStrategiesReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getRestakeableStrategiesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getRestakeableStrategiesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getRestakeableStrategiesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getRestakeableStrategiesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getRestakeableStrategiesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getRestakeableStrategiesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getRestakeableStrategies()"; + const SELECTOR: [u8; 4] = [228u8, 129u8, 175u8, 157u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. + ```solidity + function owner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registerOperatorToAVS(address,(bytes,bytes32,uint256))` and selector `0x9926ee7d`. + ```solidity + function registerOperatorToAVS(address operator, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorToAVSCall { + pub operator: alloy::sol_types::private::Address, + pub operatorSignature: + ::RustType, + } + ///Container type for the return parameters of the [`registerOperatorToAVS(address,(bytes,bytes32,uint256))`](registerOperatorToAVSCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorToAVSReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithSaltAndExpiry, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorToAVSCall) -> Self { + (value.operator, value.operatorSignature) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorToAVSCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + operatorSignature: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorToAVSReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorToAVSReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registerOperatorToAVSCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + ISignatureUtils::SignatureWithSaltAndExpiry, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registerOperatorToAVSReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "registerOperatorToAVS(address,(bytes,bytes32,uint256))"; + const SELECTOR: [u8; 4] = [153u8, 38u8, 238u8, 125u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.operatorSignature, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `renounceOwnership()` and selector `0x715018a6`. + ```solidity + function renounceOwnership() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct renounceOwnershipCall {} + ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct renounceOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for renounceOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for renounceOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for renounceOwnershipCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = renounceOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "renounceOwnership()"; + const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `rewardsInitiator()` and selector `0xfc299dee`. + ```solidity + function rewardsInitiator() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct rewardsInitiatorCall {} + ///Container type for the return parameters of the [`rewardsInitiator()`](rewardsInitiatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct rewardsInitiatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: rewardsInitiatorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for rewardsInitiatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: rewardsInitiatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for rewardsInitiatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for rewardsInitiatorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = rewardsInitiatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "rewardsInitiator()"; + const SELECTOR: [u8; 4] = [252u8, 41u8, 157u8, 238u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. + ```solidity + function transferOwnership(address newOwner) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateAVSMetadataURI(string)` and selector `0xa98fb355`. + ```solidity + function updateAVSMetadataURI(string memory _metadataURI) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateAVSMetadataURICall { + pub _metadataURI: alloy::sol_types::private::String, + } + ///Container type for the return parameters of the [`updateAVSMetadataURI(string)`](updateAVSMetadataURICall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateAVSMetadataURIReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateAVSMetadataURICall) -> Self { + (value._metadataURI,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateAVSMetadataURICall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _metadataURI: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateAVSMetadataURIReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateAVSMetadataURIReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateAVSMetadataURICall { + type Parameters<'a> = (alloy::sol_types::sol_data::String,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateAVSMetadataURIReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateAVSMetadataURI(string)"; + const SELECTOR: [u8; 4] = [169u8, 143u8, 179u8, 85u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._metadataURI, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`ServiceManagerBaseStorage`](self) function calls. + pub enum ServiceManagerBaseStorageCalls { + avsDirectory(avsDirectoryCall), + createAVSRewardsSubmission(createAVSRewardsSubmissionCall), + deregisterOperatorFromAVS(deregisterOperatorFromAVSCall), + getOperatorRestakedStrategies(getOperatorRestakedStrategiesCall), + getRestakeableStrategies(getRestakeableStrategiesCall), + owner(ownerCall), + registerOperatorToAVS(registerOperatorToAVSCall), + renounceOwnership(renounceOwnershipCall), + rewardsInitiator(rewardsInitiatorCall), + transferOwnership(transferOwnershipCall), + updateAVSMetadataURI(updateAVSMetadataURICall), + } + #[automatically_derived] + impl ServiceManagerBaseStorageCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [51u8, 207u8, 183u8, 183u8], + [107u8, 58u8, 167u8, 46u8], + [113u8, 80u8, 24u8, 166u8], + [141u8, 165u8, 203u8, 91u8], + [153u8, 38u8, 238u8, 125u8], + [163u8, 100u8, 244u8, 218u8], + [169u8, 143u8, 179u8, 85u8], + [228u8, 129u8, 175u8, 157u8], + [242u8, 253u8, 227u8, 139u8], + [252u8, 41u8, 157u8, 238u8], + [252u8, 227u8, 108u8, 125u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ServiceManagerBaseStorageCalls { + const NAME: &'static str = "ServiceManagerBaseStorageCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 11usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::avsDirectory(_) => ::SELECTOR, + Self::createAVSRewardsSubmission(_) => { + ::SELECTOR + } + Self::deregisterOperatorFromAVS(_) => { + ::SELECTOR + } + Self::getOperatorRestakedStrategies(_) => { + ::SELECTOR + } + Self::getRestakeableStrategies(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::registerOperatorToAVS(_) => { + ::SELECTOR + } + Self::renounceOwnership(_) => { + ::SELECTOR + } + Self::rewardsInitiator(_) => { + ::SELECTOR + } + Self::transferOwnership(_) => { + ::SELECTOR + } + Self::updateAVSMetadataURI(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result< + ServiceManagerBaseStorageCalls, + >] = &[ + { + fn getOperatorRestakedStrategies( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + ServiceManagerBaseStorageCalls::getOperatorRestakedStrategies, + ) + } + getOperatorRestakedStrategies + }, + { + fn avsDirectory( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ServiceManagerBaseStorageCalls::avsDirectory) + } + avsDirectory + }, + { + fn renounceOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ServiceManagerBaseStorageCalls::renounceOwnership) + } + renounceOwnership + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(ServiceManagerBaseStorageCalls::owner) + } + owner + }, + { + fn registerOperatorToAVS( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ServiceManagerBaseStorageCalls::registerOperatorToAVS) + } + registerOperatorToAVS + }, + { + fn deregisterOperatorFromAVS( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ServiceManagerBaseStorageCalls::deregisterOperatorFromAVS) + } + deregisterOperatorFromAVS + }, + { + fn updateAVSMetadataURI( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ServiceManagerBaseStorageCalls::updateAVSMetadataURI) + } + updateAVSMetadataURI + }, + { + fn getRestakeableStrategies( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ServiceManagerBaseStorageCalls::getRestakeableStrategies) + } + getRestakeableStrategies + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ServiceManagerBaseStorageCalls::transferOwnership) + } + transferOwnership + }, + { + fn rewardsInitiator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(ServiceManagerBaseStorageCalls::rewardsInitiator) + } + rewardsInitiator + }, + { + fn createAVSRewardsSubmission( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, + validate, + ) + .map( + ServiceManagerBaseStorageCalls::createAVSRewardsSubmission, + ) + } + createAVSRewardsSubmission + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::avsDirectory(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::createAVSRewardsSubmission(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::deregisterOperatorFromAVS(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorRestakedStrategies(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getRestakeableStrategies(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::registerOperatorToAVS(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::renounceOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::rewardsInitiator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::updateAVSMetadataURI(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::avsDirectory(inner) => { + ::abi_encode_raw(inner, out) + } + Self::createAVSRewardsSubmission(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::deregisterOperatorFromAVS(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getOperatorRestakedStrategies(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getRestakeableStrategies(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::registerOperatorToAVS(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::renounceOwnership(inner) => { + ::abi_encode_raw(inner, out) + } + Self::rewardsInitiator(inner) => { + ::abi_encode_raw(inner, out) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw(inner, out) + } + Self::updateAVSMetadataURI(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + } + } + } + ///Container for all the [`ServiceManagerBaseStorage`](self) events. + pub enum ServiceManagerBaseStorageEvents { + Initialized(Initialized), + OwnershipTransferred(OwnershipTransferred), + RewardsInitiatorUpdated(RewardsInitiatorUpdated), + } + #[automatically_derived] + impl ServiceManagerBaseStorageEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, 56u8, + 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, 96u8, + 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ], + [ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, 208u8, + 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, 175u8, 227u8, + 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ], + [ + 225u8, 28u8, 221u8, 241u8, 129u8, 106u8, 67u8, 49u8, 140u8, 161u8, 117u8, 187u8, + 197u8, 44u8, 208u8, 24u8, 84u8, 54u8, 233u8, 203u8, 234u8, 215u8, 200u8, 58u8, + 204u8, 84u8, 167u8, 62u8, 70u8, 23u8, 23u8, 227u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for ServiceManagerBaseStorageEvents { + const NAME: &'static str = "ServiceManagerBaseStorageEvents"; + const COUNT: usize = 3usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::Initialized) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OwnershipTransferred) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::RewardsInitiatorUpdated) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ServiceManagerBaseStorageEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::RewardsInitiatorUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::RewardsInitiatorUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ServiceManagerBaseStorage`](self) contract instance. + + See the [wrapper's documentation](`ServiceManagerBaseStorageInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ServiceManagerBaseStorageInstance { + ServiceManagerBaseStorageInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + ServiceManagerBaseStorageInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + ServiceManagerBaseStorageInstance::::deploy_builder(provider) + } + /**A [`ServiceManagerBaseStorage`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ServiceManagerBaseStorage`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ServiceManagerBaseStorageInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ServiceManagerBaseStorageInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ServiceManagerBaseStorageInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ServiceManagerBaseStorageInstance + { + /**Creates a new wrapper around an on-chain [`ServiceManagerBaseStorage`](self) contract instance. + + See the [wrapper's documentation](`ServiceManagerBaseStorageInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ServiceManagerBaseStorageInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ServiceManagerBaseStorageInstance { + ServiceManagerBaseStorageInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ServiceManagerBaseStorageInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`avsDirectory`] function. + pub fn avsDirectory(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&avsDirectoryCall {}) + } + ///Creates a new call builder for the [`createAVSRewardsSubmission`] function. + pub fn createAVSRewardsSubmission( + &self, + rewardsSubmissions: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&createAVSRewardsSubmissionCall { rewardsSubmissions }) + } + ///Creates a new call builder for the [`deregisterOperatorFromAVS`] function. + pub fn deregisterOperatorFromAVS( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&deregisterOperatorFromAVSCall { operator }) + } + ///Creates a new call builder for the [`getOperatorRestakedStrategies`] function. + pub fn getOperatorRestakedStrategies( + &self, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorRestakedStrategiesCall { operator }) + } + ///Creates a new call builder for the [`getRestakeableStrategies`] function. + pub fn getRestakeableStrategies( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getRestakeableStrategiesCall {}) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`registerOperatorToAVS`] function. + pub fn registerOperatorToAVS( + &self, + operator: alloy::sol_types::private::Address, + operatorSignature: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterOperatorToAVSCall { + operator, + operatorSignature, + }) + } + ///Creates a new call builder for the [`renounceOwnership`] function. + pub fn renounceOwnership( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&renounceOwnershipCall {}) + } + ///Creates a new call builder for the [`rewardsInitiator`] function. + pub fn rewardsInitiator( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&rewardsInitiatorCall {}) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + ///Creates a new call builder for the [`updateAVSMetadataURI`] function. + pub fn updateAVSMetadataURI( + &self, + _metadataURI: alloy::sol_types::private::String, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateAVSMetadataURICall { _metadataURI }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ServiceManagerBaseStorageInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Initialized`] event. + pub fn Initialized_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`RewardsInitiatorUpdated`] event. + pub fn RewardsInitiatorUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/servicemanagerrouter.rs b/crates/utils/src/servicemanagerrouter.rs new file mode 100644 index 00000000..3a6cbb04 --- /dev/null +++ b/crates/utils/src/servicemanagerrouter.rs @@ -0,0 +1,806 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ServiceManagerRouter { + function FAILED_CALL_ADDRESS() external view returns (address); + function getOperatorRestakedStrategies(address serviceManager, address operator) external view returns (address[] memory); + function getRestakeableStrategies(address serviceManager) external view returns (address[] memory); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "FAILED_CALL_ADDRESS", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorRestakedStrategies", + "inputs": [ + { + "name": "serviceManager", + "type": "address", + "internalType": "address" + }, + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getRestakeableStrategies", + "inputs": [ + { + "name": "serviceManager", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ServiceManagerRouter { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50610453806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632702747d14610046578063793e1c8e1461006f5780637be6aa6b14610090575b600080fd5b61005961005436600461023e565b6100a3565b6040516100669190610277565b60405180910390f35b61007861dead81565b6040516001600160a01b039091168152602001610066565b61005961009e3660046102c4565b6100fd565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b03166333cfb7b760e01b1790526060906100f3848261013a565b9150505b92915050565b6040805160048152602481019091526020810180516001600160e01b031663e481af9d60e01b179052606090610133838261013a565b9392505050565b6060600080846001600160a01b03168460405161015791906102e1565b600060405180830381855afa9150503d8060008114610192576040519150601f19603f3d011682016040523d82523d6000602084013e610197565b606091505b50915091508180156101aa575060008151115b156101cc57808060200190518101906101c39190610342565b925050506100f7565b6040805160018082528183019092526000916020808301908036833701905050905061dead8160008151811061020457610204610407565b6001600160a01b039092166020928302919091019091015292506100f7915050565b6001600160a01b038116811461023b57600080fd5b50565b6000806040838503121561025157600080fd5b823561025c81610226565b9150602083013561026c81610226565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b818110156102b85783516001600160a01b031683529284019291840191600101610293565b50909695505050505050565b6000602082840312156102d657600080fd5b813561013381610226565b6000825160005b8181101561030257602081860181015185830152016102e8565b81811115610311576000828501525b509190910192915050565b634e487b7160e01b600052604160045260246000fd5b805161033d81610226565b919050565b6000602080838503121561035557600080fd5b825167ffffffffffffffff8082111561036d57600080fd5b818501915085601f83011261038157600080fd5b8151818111156103935761039361031c565b8060051b604051601f19603f830116810181811085821117156103b8576103b861031c565b6040529182528482019250838101850191888311156103d657600080fd5b938501935b828510156103fb576103ec85610332565b845293850193928501926103db565b98975050505050505050565b634e487b7160e01b600052603260045260246000fdfea264697066735822122018c491ec65df7d21fd74a964940c0eae275f20c32209c1f4e5ba7e615ccbb73d64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x04S\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c'\x02t}\x14a\0FW\x80cy>\x1C\x8E\x14a\0oW\x80c{\xE6\xAAk\x14a\0\x90W[`\0\x80\xFD[a\0Ya\0T6`\x04a\x02>V[a\0\xA3V[`@Qa\0f\x91\x90a\x02wV[`@Q\x80\x91\x03\x90\xF3[a\0xa\xDE\xAD\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0fV[a\0Ya\0\x9E6`\x04a\x02\xC4V[a\0\xFDV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16`$\x80\x83\x01\x91\x90\x91R\x82Q\x80\x83\x03\x90\x91\x01\x81R`D\x90\x91\x01\x90\x91R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c3\xCF\xB7\xB7`\xE0\x1B\x17\x90R``\x90a\0\xF3\x84\x82a\x01:V[\x91PP[\x92\x91PPV[`@\x80Q`\x04\x81R`$\x81\x01\x90\x91R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xE4\x81\xAF\x9D`\xE0\x1B\x17\x90R``\x90a\x013\x83\x82a\x01:V[\x93\x92PPPV[```\0\x80\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa\x01W\x91\x90a\x02\xE1V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x01\x92W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\x97V[``\x91P[P\x91P\x91P\x81\x80\x15a\x01\xAAWP`\0\x81Q\x11[\x15a\x01\xCCW\x80\x80` \x01\x90Q\x81\x01\x90a\x01\xC3\x91\x90a\x03BV[\x92PPPa\0\xF7V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90Pa\xDE\xAD\x81`\0\x81Q\x81\x10a\x02\x04Wa\x02\x04a\x04\x07V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x92Pa\0\xF7\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x02;W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a\x02QW`\0\x80\xFD[\x825a\x02\\\x81a\x02&V[\x91P` \x83\x015a\x02l\x81a\x02&V[\x80\x91PP\x92P\x92\x90PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x02\xB8W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x02\x93V[P\x90\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a\x02\xD6W`\0\x80\xFD[\x815a\x013\x81a\x02&V[`\0\x82Q`\0[\x81\x81\x10\x15a\x03\x02W` \x81\x86\x01\x81\x01Q\x85\x83\x01R\x01a\x02\xE8V[\x81\x81\x11\x15a\x03\x11W`\0\x82\x85\x01R[P\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x80Qa\x03=\x81a\x02&V[\x91\x90PV[`\0` \x80\x83\x85\x03\x12\x15a\x03UW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x03mW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x03\x81W`\0\x80\xFD[\x81Q\x81\x81\x11\x15a\x03\x93Wa\x03\x93a\x03\x1CV[\x80`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x85\x82\x11\x17\x15a\x03\xB8Wa\x03\xB8a\x03\x1CV[`@R\x91\x82R\x84\x82\x01\x92P\x83\x81\x01\x85\x01\x91\x88\x83\x11\x15a\x03\xD6W`\0\x80\xFD[\x93\x85\x01\x93[\x82\x85\x10\x15a\x03\xFBWa\x03\xEC\x85a\x032V[\x84R\x93\x85\x01\x93\x92\x85\x01\x92a\x03\xDBV[\x98\x97PPPPPPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 \x18\xC4\x91\xECe\xDF}!\xFDt\xA9d\x94\x0C\x0E\xAE'_ \xC3\"\t\xC1\xF4\xE5\xBA~a\\\xCB\xB7=dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100415760003560e01c80632702747d14610046578063793e1c8e1461006f5780637be6aa6b14610090575b600080fd5b61005961005436600461023e565b6100a3565b6040516100669190610277565b60405180910390f35b61007861dead81565b6040516001600160a01b039091168152602001610066565b61005961009e3660046102c4565b6100fd565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b03166333cfb7b760e01b1790526060906100f3848261013a565b9150505b92915050565b6040805160048152602481019091526020810180516001600160e01b031663e481af9d60e01b179052606090610133838261013a565b9392505050565b6060600080846001600160a01b03168460405161015791906102e1565b600060405180830381855afa9150503d8060008114610192576040519150601f19603f3d011682016040523d82523d6000602084013e610197565b606091505b50915091508180156101aa575060008151115b156101cc57808060200190518101906101c39190610342565b925050506100f7565b6040805160018082528183019092526000916020808301908036833701905050905061dead8160008151811061020457610204610407565b6001600160a01b039092166020928302919091019091015292506100f7915050565b6001600160a01b038116811461023b57600080fd5b50565b6000806040838503121561025157600080fd5b823561025c81610226565b9150602083013561026c81610226565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b818110156102b85783516001600160a01b031683529284019291840191600101610293565b50909695505050505050565b6000602082840312156102d657600080fd5b813561013381610226565b6000825160005b8181101561030257602081860181015185830152016102e8565b81811115610311576000828501525b509190910192915050565b634e487b7160e01b600052604160045260246000fd5b805161033d81610226565b919050565b6000602080838503121561035557600080fd5b825167ffffffffffffffff8082111561036d57600080fd5b818501915085601f83011261038157600080fd5b8151818111156103935761039361031c565b8060051b604051601f19603f830116810181811085821117156103b8576103b861031c565b6040529182528482019250838101850191888311156103d657600080fd5b938501935b828510156103fb576103ec85610332565b845293850193928501926103db565b98975050505050505050565b634e487b7160e01b600052603260045260246000fdfea264697066735822122018c491ec65df7d21fd74a964940c0eae275f20c32209c1f4e5ba7e615ccbb73d64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c'\x02t}\x14a\0FW\x80cy>\x1C\x8E\x14a\0oW\x80c{\xE6\xAAk\x14a\0\x90W[`\0\x80\xFD[a\0Ya\0T6`\x04a\x02>V[a\0\xA3V[`@Qa\0f\x91\x90a\x02wV[`@Q\x80\x91\x03\x90\xF3[a\0xa\xDE\xAD\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0fV[a\0Ya\0\x9E6`\x04a\x02\xC4V[a\0\xFDV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16`$\x80\x83\x01\x91\x90\x91R\x82Q\x80\x83\x03\x90\x91\x01\x81R`D\x90\x91\x01\x90\x91R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c3\xCF\xB7\xB7`\xE0\x1B\x17\x90R``\x90a\0\xF3\x84\x82a\x01:V[\x91PP[\x92\x91PPV[`@\x80Q`\x04\x81R`$\x81\x01\x90\x91R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xE4\x81\xAF\x9D`\xE0\x1B\x17\x90R``\x90a\x013\x83\x82a\x01:V[\x93\x92PPPV[```\0\x80\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa\x01W\x91\x90a\x02\xE1V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x01\x92W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\x97V[``\x91P[P\x91P\x91P\x81\x80\x15a\x01\xAAWP`\0\x81Q\x11[\x15a\x01\xCCW\x80\x80` \x01\x90Q\x81\x01\x90a\x01\xC3\x91\x90a\x03BV[\x92PPPa\0\xF7V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90Pa\xDE\xAD\x81`\0\x81Q\x81\x10a\x02\x04Wa\x02\x04a\x04\x07V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x92Pa\0\xF7\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x02;W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a\x02QW`\0\x80\xFD[\x825a\x02\\\x81a\x02&V[\x91P` \x83\x015a\x02l\x81a\x02&V[\x80\x91PP\x92P\x92\x90PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x02\xB8W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x02\x93V[P\x90\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a\x02\xD6W`\0\x80\xFD[\x815a\x013\x81a\x02&V[`\0\x82Q`\0[\x81\x81\x10\x15a\x03\x02W` \x81\x86\x01\x81\x01Q\x85\x83\x01R\x01a\x02\xE8V[\x81\x81\x11\x15a\x03\x11W`\0\x82\x85\x01R[P\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x80Qa\x03=\x81a\x02&V[\x91\x90PV[`\0` \x80\x83\x85\x03\x12\x15a\x03UW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x03mW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x03\x81W`\0\x80\xFD[\x81Q\x81\x81\x11\x15a\x03\x93Wa\x03\x93a\x03\x1CV[\x80`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x85\x82\x11\x17\x15a\x03\xB8Wa\x03\xB8a\x03\x1CV[`@R\x91\x82R\x84\x82\x01\x92P\x83\x81\x01\x85\x01\x91\x88\x83\x11\x15a\x03\xD6W`\0\x80\xFD[\x93\x85\x01\x93[\x82\x85\x10\x15a\x03\xFBWa\x03\xEC\x85a\x032V[\x84R\x93\x85\x01\x93\x92\x85\x01\x92a\x03\xDBV[\x98\x97PPPPPPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 \x18\xC4\x91\xECe\xDF}!\xFDt\xA9d\x94\x0C\x0E\xAE'_ \xC3\"\t\xC1\xF4\xE5\xBA~a\\\xCB\xB7=dsolcC\0\x08\x0C\x003", + ); + /**Function with signature `FAILED_CALL_ADDRESS()` and selector `0x793e1c8e`. + ```solidity + function FAILED_CALL_ADDRESS() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct FAILED_CALL_ADDRESSCall {} + ///Container type for the return parameters of the [`FAILED_CALL_ADDRESS()`](FAILED_CALL_ADDRESSCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct FAILED_CALL_ADDRESSReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: FAILED_CALL_ADDRESSCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FAILED_CALL_ADDRESSCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: FAILED_CALL_ADDRESSReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FAILED_CALL_ADDRESSReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for FAILED_CALL_ADDRESSCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = FAILED_CALL_ADDRESSReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "FAILED_CALL_ADDRESS()"; + const SELECTOR: [u8; 4] = [121u8, 62u8, 28u8, 142u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorRestakedStrategies(address,address)` and selector `0x2702747d`. + ```solidity + function getOperatorRestakedStrategies(address serviceManager, address operator) external view returns (address[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorRestakedStrategiesCall { + pub serviceManager: alloy::sol_types::private::Address, + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getOperatorRestakedStrategies(address,address)`](getOperatorRestakedStrategiesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getOperatorRestakedStrategiesReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorRestakedStrategiesCall) -> Self { + (value.serviceManager, value.operator) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorRestakedStrategiesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + serviceManager: tuple.0, + operator: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getOperatorRestakedStrategiesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getOperatorRestakedStrategiesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorRestakedStrategiesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorRestakedStrategiesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorRestakedStrategies(address,address)"; + const SELECTOR: [u8; 4] = [39u8, 2u8, 116u8, 125u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.serviceManager, + ), + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getRestakeableStrategies(address)` and selector `0x7be6aa6b`. + ```solidity + function getRestakeableStrategies(address serviceManager) external view returns (address[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getRestakeableStrategiesCall { + pub serviceManager: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getRestakeableStrategies(address)`](getRestakeableStrategiesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getRestakeableStrategiesReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getRestakeableStrategiesCall) -> Self { + (value.serviceManager,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getRestakeableStrategiesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + serviceManager: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getRestakeableStrategiesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getRestakeableStrategiesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getRestakeableStrategiesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getRestakeableStrategiesReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getRestakeableStrategies(address)"; + const SELECTOR: [u8; 4] = [123u8, 230u8, 170u8, 107u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.serviceManager, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`ServiceManagerRouter`](self) function calls. + pub enum ServiceManagerRouterCalls { + FAILED_CALL_ADDRESS(FAILED_CALL_ADDRESSCall), + getOperatorRestakedStrategies(getOperatorRestakedStrategiesCall), + getRestakeableStrategies(getRestakeableStrategiesCall), + } + #[automatically_derived] + impl ServiceManagerRouterCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [39u8, 2u8, 116u8, 125u8], + [121u8, 62u8, 28u8, 142u8], + [123u8, 230u8, 170u8, 107u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ServiceManagerRouterCalls { + const NAME: &'static str = "ServiceManagerRouterCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 3usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::FAILED_CALL_ADDRESS(_) => { + ::SELECTOR + } + Self::getOperatorRestakedStrategies(_) => { + ::SELECTOR + } + Self::getRestakeableStrategies(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn getOperatorRestakedStrategies( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + ServiceManagerRouterCalls::getOperatorRestakedStrategies, + ) + } + getOperatorRestakedStrategies + }, + { + fn FAILED_CALL_ADDRESS( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ServiceManagerRouterCalls::FAILED_CALL_ADDRESS) + } + FAILED_CALL_ADDRESS + }, + { + fn getRestakeableStrategies( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(ServiceManagerRouterCalls::getRestakeableStrategies) + } + getRestakeableStrategies + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::FAILED_CALL_ADDRESS(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getOperatorRestakedStrategies(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getRestakeableStrategies(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::FAILED_CALL_ADDRESS(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getOperatorRestakedStrategies(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::getRestakeableStrategies(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ServiceManagerRouter`](self) contract instance. + + See the [wrapper's documentation](`ServiceManagerRouterInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ServiceManagerRouterInstance { + ServiceManagerRouterInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + ServiceManagerRouterInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + ServiceManagerRouterInstance::::deploy_builder(provider) + } + /**A [`ServiceManagerRouter`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`ServiceManagerRouter`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ServiceManagerRouterInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ServiceManagerRouterInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ServiceManagerRouterInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ServiceManagerRouterInstance + { + /**Creates a new wrapper around an on-chain [`ServiceManagerRouter`](self) contract instance. + + See the [wrapper's documentation](`ServiceManagerRouterInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ServiceManagerRouterInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ServiceManagerRouterInstance { + ServiceManagerRouterInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ServiceManagerRouterInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`FAILED_CALL_ADDRESS`] function. + pub fn FAILED_CALL_ADDRESS( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&FAILED_CALL_ADDRESSCall {}) + } + ///Creates a new call builder for the [`getOperatorRestakedStrategies`] function. + pub fn getOperatorRestakedStrategies( + &self, + serviceManager: alloy::sol_types::private::Address, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getOperatorRestakedStrategiesCall { + serviceManager, + operator, + }) + } + ///Creates a new call builder for the [`getRestakeableStrategies`] function. + pub fn getRestakeableStrategies( + &self, + serviceManager: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getRestakeableStrategiesCall { serviceManager }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ServiceManagerRouterInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/signaturecheckerupgradeable.rs b/crates/utils/src/signaturecheckerupgradeable.rs new file mode 100644 index 00000000..0c932e36 --- /dev/null +++ b/crates/utils/src/signaturecheckerupgradeable.rs @@ -0,0 +1,222 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface SignatureCheckerUpgradeable {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod SignatureCheckerUpgradeable { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203648a75f514f014b69fbc17103a045ba9cf08ad84d5ce2c179e199b13570112f64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 6H\xA7_QO\x01Ki\xFB\xC1q\x03\xA0E\xBA\x9C\xF0\x8A\xD8M\\\xE2\xC1y\xE1\x99\xB15p\x11/dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203648a75f514f014b69fbc17103a045ba9cf08ad84d5ce2c179e199b13570112f64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 6H\xA7_QO\x01Ki\xFB\xC1q\x03\xA0E\xBA\x9C\xF0\x8A\xD8M\\\xE2\xC1y\xE1\x99\xB15p\x11/dsolcC\0\x08\x0C\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`SignatureCheckerUpgradeable`](self) contract instance. + + See the [wrapper's documentation](`SignatureCheckerUpgradeableInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> SignatureCheckerUpgradeableInstance { + SignatureCheckerUpgradeableInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + SignatureCheckerUpgradeableInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + SignatureCheckerUpgradeableInstance::::deploy_builder(provider) + } + /**A [`SignatureCheckerUpgradeable`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`SignatureCheckerUpgradeable`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct SignatureCheckerUpgradeableInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for SignatureCheckerUpgradeableInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("SignatureCheckerUpgradeableInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > SignatureCheckerUpgradeableInstance + { + /**Creates a new wrapper around an on-chain [`SignatureCheckerUpgradeable`](self) contract instance. + + See the [wrapper's documentation](`SignatureCheckerUpgradeableInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl SignatureCheckerUpgradeableInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> SignatureCheckerUpgradeableInstance { + SignatureCheckerUpgradeableInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > SignatureCheckerUpgradeableInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > SignatureCheckerUpgradeableInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/stakeregistry.rs b/crates/utils/src/stakeregistry.rs new file mode 100644 index 00000000..1624da06 --- /dev/null +++ b/crates/utils/src/stakeregistry.rs @@ -0,0 +1,7822 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library IStakeRegistry { + struct StakeUpdate { uint32 updateBlockNumber; uint32 nextUpdateBlockNumber; uint96 stake; } + struct StrategyParams { address strategy; uint96 multiplier; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IStakeRegistry { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct StakeUpdate { uint32 updateBlockNumber; uint32 nextUpdateBlockNumber; uint96 stake; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct StakeUpdate { + pub updateBlockNumber: u32, + pub nextUpdateBlockNumber: u32, + pub stake: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<96>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u32, + u32, + alloy::sol_types::private::primitives::aliases::U96, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: StakeUpdate) -> Self { + ( + value.updateBlockNumber, + value.nextUpdateBlockNumber, + value.stake, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for StakeUpdate { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + updateBlockNumber: tuple.0, + nextUpdateBlockNumber: tuple.1, + stake: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for StakeUpdate { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for StakeUpdate { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.updateBlockNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.nextUpdateBlockNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.stake, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for StakeUpdate { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for StakeUpdate { + const NAME: &'static str = "StakeUpdate"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "StakeUpdate(uint32 updateBlockNumber,uint32 nextUpdateBlockNumber,uint96 stake)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word( + &self.updateBlockNumber, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.nextUpdateBlockNumber, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.stake) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for StakeUpdate { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.updateBlockNumber, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.nextUpdateBlockNumber, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.stake) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.updateBlockNumber, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nextUpdateBlockNumber, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.stake, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct StrategyParams { address strategy; uint96 multiplier; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct StrategyParams { + pub strategy: alloy::sol_types::private::Address, + pub multiplier: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<96>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U96, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: StrategyParams) -> Self { + (value.strategy, value.multiplier) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for StrategyParams { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategy: tuple.0, + multiplier: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for StrategyParams { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for StrategyParams { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.multiplier, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for StrategyParams { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for StrategyParams { + const NAME: &'static str = "StrategyParams"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "StrategyParams(address strategy,uint96 multiplier)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.strategy, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.multiplier) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for StrategyParams { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.strategy, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.multiplier, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.strategy, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.multiplier, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IStakeRegistry`](self) contract instance. + + See the [wrapper's documentation](`IStakeRegistryInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IStakeRegistryInstance { + IStakeRegistryInstance::::new(address, provider) + } + /**A [`IStakeRegistry`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IStakeRegistry`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IStakeRegistryInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IStakeRegistryInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IStakeRegistryInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IStakeRegistryInstance + { + /**Creates a new wrapper around an on-chain [`IStakeRegistry`](self) contract instance. + + See the [wrapper's documentation](`IStakeRegistryInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IStakeRegistryInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IStakeRegistryInstance { + IStakeRegistryInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IStakeRegistryInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IStakeRegistryInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library IStakeRegistry { + struct StakeUpdate { + uint32 updateBlockNumber; + uint32 nextUpdateBlockNumber; + uint96 stake; + } + struct StrategyParams { + address strategy; + uint96 multiplier; + } +} + +interface StakeRegistry { + event MinimumStakeForQuorumUpdated(uint8 indexed quorumNumber, uint96 minimumStake); + event OperatorStakeUpdate(bytes32 indexed operatorId, uint8 quorumNumber, uint96 stake); + event QuorumCreated(uint8 indexed quorumNumber); + event StrategyAddedToQuorum(uint8 indexed quorumNumber, address strategy); + event StrategyMultiplierUpdated(uint8 indexed quorumNumber, address strategy, uint256 multiplier); + event StrategyRemovedFromQuorum(uint8 indexed quorumNumber, address strategy); + + constructor(address _registryCoordinator, address _delegationManager); + + function MAX_WEIGHING_FUNCTION_LENGTH() external view returns (uint8); + function WEIGHTING_DIVISOR() external view returns (uint256); + function addStrategies(uint8 quorumNumber, IStakeRegistry.StrategyParams[] memory _strategyParams) external; + function delegation() external view returns (address); + function deregisterOperator(bytes32 operatorId, bytes memory quorumNumbers) external; + function getCurrentStake(bytes32 operatorId, uint8 quorumNumber) external view returns (uint96); + function getCurrentTotalStake(uint8 quorumNumber) external view returns (uint96); + function getLatestStakeUpdate(bytes32 operatorId, uint8 quorumNumber) external view returns (IStakeRegistry.StakeUpdate memory); + function getStakeAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) external view returns (uint96); + function getStakeAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, bytes32 operatorId, uint256 index) external view returns (uint96); + function getStakeHistory(bytes32 operatorId, uint8 quorumNumber) external view returns (IStakeRegistry.StakeUpdate[] memory); + function getStakeHistoryLength(bytes32 operatorId, uint8 quorumNumber) external view returns (uint256); + function getStakeUpdateAtIndex(uint8 quorumNumber, bytes32 operatorId, uint256 index) external view returns (IStakeRegistry.StakeUpdate memory); + function getStakeUpdateIndexAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) external view returns (uint32); + function getTotalStakeAtBlockNumberFromIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) external view returns (uint96); + function getTotalStakeHistoryLength(uint8 quorumNumber) external view returns (uint256); + function getTotalStakeIndicesAtBlockNumber(uint32 blockNumber, bytes memory quorumNumbers) external view returns (uint32[] memory); + function getTotalStakeUpdateAtIndex(uint8 quorumNumber, uint256 index) external view returns (IStakeRegistry.StakeUpdate memory); + function initializeQuorum(uint8 quorumNumber, uint96 minimumStake, IStakeRegistry.StrategyParams[] memory _strategyParams) external; + function minimumStakeForQuorum(uint8) external view returns (uint96); + function modifyStrategyParams(uint8 quorumNumber, uint256[] memory strategyIndices, uint96[] memory newMultipliers) external; + function registerOperator(address operator, bytes32 operatorId, bytes memory quorumNumbers) external returns (uint96[] memory, uint96[] memory); + function registryCoordinator() external view returns (address); + function removeStrategies(uint8 quorumNumber, uint256[] memory indicesToRemove) external; + function setMinimumStakeForQuorum(uint8 quorumNumber, uint96 minimumStake) external; + function strategiesPerQuorum(uint8, uint256) external view returns (address); + function strategyParams(uint8, uint256) external view returns (address strategy, uint96 multiplier); + function strategyParamsByIndex(uint8 quorumNumber, uint256 index) external view returns (IStakeRegistry.StrategyParams memory); + function strategyParamsLength(uint8 quorumNumber) external view returns (uint256); + function updateOperatorStake(address operator, bytes32 operatorId, bytes memory quorumNumbers) external returns (uint192); + function weightOfOperatorForQuorum(uint8 quorumNumber, address operator) external view returns (uint96); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_registryCoordinator", + "type": "address", + "internalType": "contract IRegistryCoordinator" + }, + { + "name": "_delegationManager", + "type": "address", + "internalType": "contract IDelegationManager" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "MAX_WEIGHING_FUNCTION_LENGTH", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "WEIGHTING_DIVISOR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "addStrategies", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "_strategyParams", + "type": "tuple[]", + "internalType": "struct IStakeRegistry.StrategyParams[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "delegation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IDelegationManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "deregisterOperator", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getCurrentStake", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getCurrentTotalStake", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getLatestStakeUpdate", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IStakeRegistry.StakeUpdate", + "components": [ + { + "name": "updateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "nextUpdateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "stake", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getStakeAtBlockNumber", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getStakeAtBlockNumberAndIndex", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getStakeHistory", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple[]", + "internalType": "struct IStakeRegistry.StakeUpdate[]", + "components": [ + { + "name": "updateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "nextUpdateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "stake", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getStakeHistoryLength", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getStakeUpdateAtIndex", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IStakeRegistry.StakeUpdate", + "components": [ + { + "name": "updateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "nextUpdateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "stake", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getStakeUpdateIndexAtBlockNumber", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getTotalStakeAtBlockNumberFromIndex", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getTotalStakeHistoryLength", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getTotalStakeIndicesAtBlockNumber", + "inputs": [ + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32[]", + "internalType": "uint32[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getTotalStakeUpdateAtIndex", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IStakeRegistry.StakeUpdate", + "components": [ + { + "name": "updateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "nextUpdateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "stake", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initializeQuorum", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "minimumStake", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "_strategyParams", + "type": "tuple[]", + "internalType": "struct IStakeRegistry.StrategyParams[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "minimumStakeForQuorum", + "inputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "modifyStrategyParams", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "strategyIndices", + "type": "uint256[]", + "internalType": "uint256[]" + }, + { + "name": "newMultipliers", + "type": "uint96[]", + "internalType": "uint96[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registerOperator", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "uint96[]", + "internalType": "uint96[]" + }, + { + "name": "", + "type": "uint96[]", + "internalType": "uint96[]" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registryCoordinator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "removeStrategies", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "indicesToRemove", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setMinimumStakeForQuorum", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "minimumStake", + "type": "uint96", + "internalType": "uint96" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "strategiesPerQuorum", + "inputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStrategy" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "strategyParams", + "inputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "strategyParamsByIndex", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IStakeRegistry.StrategyParams", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "strategyParamsLength", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "updateOperatorStake", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "uint192", + "internalType": "uint192" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "weightOfOperatorForQuorum", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "MinimumStakeForQuorumUpdated", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "indexed": true, + "internalType": "uint8" + }, + { + "name": "minimumStake", + "type": "uint96", + "indexed": false, + "internalType": "uint96" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorStakeUpdate", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "quorumNumber", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + }, + { + "name": "stake", + "type": "uint96", + "indexed": false, + "internalType": "uint96" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "QuorumCreated", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "indexed": true, + "internalType": "uint8" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StrategyAddedToQuorum", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "indexed": true, + "internalType": "uint8" + }, + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StrategyMultiplierUpdated", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "indexed": true, + "internalType": "uint8" + }, + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StrategyRemovedFromQuorum", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "indexed": true, + "internalType": "uint8" + }, + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod StakeRegistry { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60c06040523480156200001157600080fd5b50604051620033c8380380620033c8833981016040819052620000349162000065565b6001600160a01b0391821660a05216608052620000a4565b6001600160a01b03811681146200006257600080fd5b50565b600080604083850312156200007957600080fd5b825162000086816200004c565b602084015190925062000099816200004c565b809150509250929050565b60805160a0516132e9620000df6000396000818161037a01528181611a470152611b7901526000818161052901526118a801526132e96000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612803565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e36600461281e565b610597565b604051610217929190612848565b61025461024f36600461287f565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a3660046128fa565b610602565b005b61029461028f3660046129bb565b610860565b604051610217929190612a5a565b6102b56102b0366004612a7f565b610a78565b6040516102179190612aab565b61020d6102d0366004612803565b60ff1660009081526003602052604090205490565b61020d6102f3366004612a7f565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612a7f565b610b17565b61020d670de0b6b3a764000081565b61027f610345366004612bb4565b610b30565b61035d6103583660046129bb565b610e78565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc366004612c70565b610f17565b6040516102179190612cc2565b61039c6103fc36600461281e565b611157565b61041461040f366004612d00565b61118f565b6040516102179190612d33565b61043461042f36600461281e565b611227565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f36600461281e565b6112a1565b61027f610482366004612d7f565b611330565b61027f610495366004612da9565b611351565b6102546104a8366004612803565b6000602081905290815260409020546001600160601b031681565b61027f6104d1366004612e75565b6113c3565b6102546104e4366004612ec2565b6113df565b6102546104f7366004612803565b61145d565b61050f61050a366004612efe565b6114b0565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b610254610559366004612f3a565b6114c5565b61041461056c366004612a7f565b61155a565b61025461057f366004612efe565b61163f565b61027f610592366004612f7c565b6116a0565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b6000826105ec816117cb565b60006105f88585611847565b5095945050505050565b61060a611a45565b84610614816117cb565b838061068f576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f766964656460648201526084015b60405180910390fd5b8281146107045760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610686565b60ff87166000908152600360205260408120905b828110156108555785858281811061073257610732612fd9565b90506020020160208101906107479190612fef565b8289898481811061075a5761075a612fd9565b905060200201358154811061077157610771612fd9565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106107da576107da612fd9565b90506020020135815481106107f1576107f1612fd9565b6000918252602090912001546001600160a01b031688888581811061081857610818612fd9565b905060200201602081019061082d9190612fef565b60405161083b929190612848565b60405180910390a28061084d81613020565b915050610718565b505050505050505050565b60608061086b611b6e565b6000836001600160401b0381111561088557610885612b23565b6040519080825280602002602001820160405280156108ae578160200160208202803683370190505b5090506000846001600160401b038111156108cb576108cb612b23565b6040519080825280602002602001820160405280156108f4578160200160208202803683370190505b50905060005b85811015610a6a57600087878381811061091657610916612fd9565b919091013560f81c915061092b9050816117cb565b600080610938838d611847565b91509150806109d55760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610686565b60006109e28c8585611c21565b9050828786815181106109f7576109f7612fd9565b60200260200101906001600160601b031690816001600160601b031681525050610a218482611ea1565b868681518110610a3357610a33612fd9565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610a6290613020565b9150506108fa565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610b0a576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610ab1565b5050505090505b92915050565b600080610b24848461155a565b60400151949350505050565b610b38611a45565b81610b42816117cb565b815180610bb75760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610686565b60ff841660009081526003602090815260408083206004909252822090915b83811015610e6f578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610c1657610c16612fd9565b602002602001015181548110610c2e57610c2e612fd9565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610c8c57610c8c612fd9565b602002602001015181548110610ca457610ca4612fd9565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610ce49060019061303b565b81548110610cf457610cf4612fd9565b9060005260206000200183878381518110610d1157610d11612fd9565b602002602001015181548110610d2957610d29612fd9565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080610d7c57610d7c613052565b60008281526020812082016000199081019190915501905581548290610da49060019061303b565b81548110610db457610db4612fd9565b9060005260206000200160009054906101000a90046001600160a01b031682878381518110610de557610de5612fd9565b602002602001015181548110610dfd57610dfd612fd9565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081805480610e3b57610e3b613052565b600082815260209020810160001990810180546001600160a01b031916905501905580610e6781613020565b915050610bd6565b50505050505050565b6000610e82611b6e565b6000805b838110156105f8576000858583818110610ea257610ea2612fd9565b919091013560f81c9150610eb79050816117cb565b600080610ec4838b611847565b9150915080610ee65760009150600160ff84161b6001600160c01b0386161794505b6000610ef38a8585611c21565b9050610eff8482611ea1565b50505050508080610f0f90613020565b915050610e86565b60606000826001600160401b03811115610f3357610f33612b23565b604051908082528060200260200182016040528015610f5c578160200160208202803683370190505b50905060005b8381101561114c576000858583818110610f7e57610f7e612fd9565b919091013560f81c9150610f939050816117cb565b60ff81166000908152600160205260408120805463ffffffff8a169290610fbc57610fbc612fd9565b60009182526020909120015463ffffffff1611156110685760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610686565b60ff8116600090815260016020526040812054905b818110156111365760ff8316600090815260016020819052604090912063ffffffff8b16916110ac848661303b565b6110b6919061303b565b815481106110c6576110c6612fd9565b60009182526020909120015463ffffffff16116111245760016110e9828461303b565b6110f3919061303b565b85858151811061110557611105612fd9565b602002602001019063ffffffff16908163ffffffff1681525050611136565b8061112e81613020565b91505061107d565b505050808061114490613020565b915050610f62565b5090505b9392505050565b6004602052816000526040600020818154811061117357600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106111d4576111d4612fd9565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff8316600090815260036020526040902080548390811061125f5761125f612fd9565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260019052919091208054839081106112de576112de612fd9565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b611338611a45565b81611342816117cb565b61134c838361201b565b505050565b611359611b6e565b60005b818110156113bd57600083838381811061137857611378612fd9565b919091013560f81c915061138d9050816117cb565b600061139b86836000611c21565b90506113a78282611ea1565b50505080806113b590613020565b91505061135c565b50505050565b6113cb611a45565b816113d5816117cb565b61134c8383612084565b60ff8316600090815260016020526040812080548291908490811061140657611406612fd9565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610b2481856124c7565b60ff8116600090815260016020819052604082208054909161147e9161303b565b8154811061148e5761148e612fd9565b600091825260209091200154600160401b90046001600160601b031692915050565b60006114bd848484612641565b949350505050565b600082815260026020908152604080832060ff8816845290915281208054829190849081106114f6576114f6612fd9565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b9093049290921690820152905061154d81866124c7565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff871683528152848220548551938401865282845290830182905293820152909190816115b3579150610b119050565b600085815260026020908152604080832060ff8816845290915290206115da60018461303b565b815481106115ea576115ea612fd9565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610b11915050565b600083815260026020908152604080832060ff861684529091528120611666858585612641565b63ffffffff168154811061167c5761167c612fd9565b600091825260209091200154600160401b90046001600160601b0316949350505050565b6116a8611b6e565b60ff8316600090815260016020526040902054156117265760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610686565b6117308382612084565b61173a838361201b565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b60ff81166000908152600160205260409020546118445760405162461bcd60e51b815260206004820152603160248201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726044820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b6064820152608401610686565b50565b6000806000806118668660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016926390041347926118db928c9201613068565b600060405180830381865afa1580156118f8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261192091908101906130c7565b905060005b83811015611a115760ff8916600090815260036020526040902080548290811061195157611951612fd9565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b031690820152835190945083908390811061199f5761199f612fd9565b602002602001015111156119ff57670de0b6b3a764000083602001516001600160601b03168383815181106119d6576119d6612fd9565b60200260200101516119e89190613157565b6119f29190613176565b6119fc9086613198565b94505b80611a0981613020565b915050611925565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac791906131c3565b6001600160a01b0316336001600160a01b031614611b6c5760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60448201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746064820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608482015260a401610686565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b6c5760405162461bcd60e51b815260206004820152604c60248201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960448201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260648201526b3ca1b7b7b93234b730ba37b960a11b608482015260a401610686565b600083815260026020908152604080832060ff86168452909152812054819080611ce557600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055611e47565b600086815260026020908152604080832060ff891684529091528120611d0c60018461303b565b81548110611d1c57611d1c612fd9565b600091825260209091200180546001600160601b03600160401b909104811694509091508516831415611d555760009350505050611150565b80544363ffffffff90811691161415611d8f578054600160401b600160a01b031916600160401b6001600160601b03871602178155611e45565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a2611e9782856127a7565b9695505050505050565b60ff821660009081526001602081905260408220805491839190611ec5908461303b565b81548110611ed557611ed5612fd9565b9060005260206000200190508360001415611f045754600160401b90046001600160601b03169150610b119050565b8054600090611f2390600160401b90046001600160601b0316866127bf565b82549091504363ffffffff90811691161415611f60578154600160401b600160a01b031916600160401b6001600160601b03831602178255612012565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b60008151116120e95760405162461bcd60e51b8152602060048201526038602482015260008051602061329483398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610686565b805160ff83166000908152600360209081526040909120549061210c83836131e0565b111561217c5760405162461bcd60e51b8152602060048201526045602482015260008051602061329483398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610686565b60005b828110156124c05760005b61219482846131e0565b811015612275578482815181106121ad576121ad612fd9565b6020026020010151600001516001600160a01b0316600360008860ff1660ff16815260200190815260200160002082815481106121ec576121ec612fd9565b6000918252602090912001546001600160a01b031614156122635760405162461bcd60e51b815260206004820152603d602482015260008051602061329483398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610686565b8061226d81613020565b91505061218a565b50600084828151811061228a5761228a612fd9565b6020026020010151602001516001600160601b03161161230f5760405162461bcd60e51b8152602060048201526046602482015260008051602061329483398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610686565b60ff85166000908152600360205260409020845185908390811061233557612335612fd9565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff871682526004905260409020845185908390811061239a5761239a612fd9565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f54049086908490811061241157612411612fd9565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7585838151811061246e5761246e612fd9565b60200260200101516000015186848151811061248c5761248c612fd9565b6020026020010151602001516040516124a6929190612848565b60405180910390a2806124b881613020565b91505061217f565b5050505050565b816000015163ffffffff168163ffffffff16101561256c5760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610686565b602082015163ffffffff1615806125925750816020015163ffffffff168163ffffffff16105b61263d5760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610686565b5050565b600083815260026020908152604080832060ff86168452909152812054805b80156126e257600086815260026020908152604080832060ff89168452909152902063ffffffff85169061269560018461303b565b815481106126a5576126a5612fd9565b60009182526020909120015463ffffffff16116126d0576126c760018261303b565b92505050611150565b806126da816131f8565b915050612660565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610686565b60006111506001600160601b0380851690841661320f565b6000808212156127e3576127d28261324e565b6127dc908461326b565b9050610b11565b6127dc8284613198565b803560ff811681146127fe57600080fd5b919050565b60006020828403121561281557600080fd5b611150826127ed565b6000806040838503121561283157600080fd5b61283a836127ed565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b038116811461184457600080fd5b6000806040838503121561289257600080fd5b61289b836127ed565b915060208301356128ab8161286a565b809150509250929050565b60008083601f8401126128c857600080fd5b5081356001600160401b038111156128df57600080fd5b6020830191508360208260051b8501011115611a3e57600080fd5b60008060008060006060868803121561291257600080fd5b61291b866127ed565b945060208601356001600160401b038082111561293757600080fd5b61294389838a016128b6565b9096509450604088013591508082111561295c57600080fd5b50612969888289016128b6565b969995985093965092949392505050565b60008083601f84011261298c57600080fd5b5081356001600160401b038111156129a357600080fd5b602083019150836020828501011115611a3e57600080fd5b600080600080606085870312156129d157600080fd5b84356129dc8161286a565b93506020850135925060408501356001600160401b038111156129fe57600080fd5b612a0a8782880161297a565b95989497509550505050565b600081518084526020808501945080840160005b83811015612a4f5781516001600160601b031687529582019590820190600101612a2a565b509495945050505050565b604081526000612a6d6040830185612a16565b82810360208401526120128185612a16565b60008060408385031215612a9257600080fd5b82359150612aa2602084016127ed565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612b1757612b0483855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612ac7565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612b5b57612b5b612b23565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612b8957612b89612b23565b604052919050565b60006001600160401b03821115612baa57612baa612b23565b5060051b60200190565b60008060408385031215612bc757600080fd5b612bd0836127ed565b91506020808401356001600160401b03811115612bec57600080fd5b8401601f81018613612bfd57600080fd5b8035612c10612c0b82612b91565b612b61565b81815260059190911b82018301908381019088831115612c2f57600080fd5b928401925b82841015612c4d57833582529284019290840190612c34565b80955050505050509250929050565b803563ffffffff811681146127fe57600080fd5b600080600060408486031215612c8557600080fd5b612c8e84612c5c565b925060208401356001600160401b03811115612ca957600080fd5b612cb58682870161297a565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612b1757835163ffffffff1683529284019291840191600101612cde565b600080600060608486031215612d1557600080fd5b612d1e846127ed565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610b11565b80356001600160601b03811681146127fe57600080fd5b60008060408385031215612d9257600080fd5b612d9b836127ed565b9150612aa260208401612d68565b600080600060408486031215612dbe57600080fd5b8335925060208401356001600160401b03811115612ca957600080fd5b600082601f830112612dec57600080fd5b81356020612dfc612c0b83612b91565b82815260069290921b84018101918181019086841115612e1b57600080fd5b8286015b84811015612e6a5760408189031215612e385760008081fd5b612e40612b39565b8135612e4b8161286a565b8152612e58828601612d68565b81860152835291830191604001612e1f565b509695505050505050565b60008060408385031215612e8857600080fd5b612e91836127ed565b915060208301356001600160401b03811115612eac57600080fd5b612eb885828601612ddb565b9150509250929050565b600080600060608486031215612ed757600080fd5b612ee0846127ed565b9250612eee60208501612c5c565b9150604084013590509250925092565b600080600060608486031215612f1357600080fd5b83359250612f23602085016127ed565b9150612f3160408501612c5c565b90509250925092565b60008060008060808587031215612f5057600080fd5b612f59856127ed565b9350612f6760208601612c5c565b93969395505050506040820135916060013590565b600080600060608486031215612f9157600080fd5b612f9a846127ed565b9250612fa860208501612d68565b915060408401356001600160401b03811115612fc357600080fd5b612fcf86828701612ddb565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561300157600080fd5b61115082612d68565b634e487b7160e01b600052601160045260246000fd5b60006000198214156130345761303461300a565b5060010190565b60008282101561304d5761304d61300a565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b818110156130b957855485168352600195860195928401920161309b565b509098975050505050505050565b600060208083850312156130da57600080fd5b82516001600160401b038111156130f057600080fd5b8301601f8101851361310157600080fd5b805161310f612c0b82612b91565b81815260059190911b8201830190838101908783111561312e57600080fd5b928401925b8284101561314c57835182529284019290840190613133565b979650505050505050565b60008160001904831182151516156131715761317161300a565b500290565b60008261319357634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b038083168185168083038211156131ba576131ba61300a565b01949350505050565b6000602082840312156131d557600080fd5b81516111508161286a565b600082198211156131f3576131f361300a565b500190565b6000816132075761320761300a565b506000190190565b60008083128015600160ff1b85018412161561322d5761322d61300a565b6001600160ff1b03840183138116156132485761324861300a565b50500390565b6000600160ff1b8214156132645761326461300a565b5060000390565b60006001600160601b038381169083168181101561328b5761328b61300a565b03939250505056fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a264697066735822122055bf78a9addcfc53e668f5d4aa34693b1a33cd55facc1b2c53fbb2b06fa027ba64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xC0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\x003\xC88\x03\x80b\x003\xC8\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0eV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\xA0R\x16`\x80Rb\0\0\xA4V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0bW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\0yW`\0\x80\xFD[\x82Qb\0\0\x86\x81b\0\0LV[` \x84\x01Q\x90\x92Pb\0\0\x99\x81b\0\0LV[\x80\x91PP\x92P\x92\x90PV[`\x80Q`\xA0Qa2\xE9b\0\0\xDF`\09`\0\x81\x81a\x03z\x01R\x81\x81a\x1AG\x01Ra\x1By\x01R`\0\x81\x81a\x05)\x01Ra\x18\xA8\x01Ra2\xE9`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\xE5W`\x005`\xE0\x1C\x80c\x9F<\xCFe\x11a\x01\x0FW\x80c\xC8)LV\x11a\0\xA2W\x80c\xF2\xBE\x94\xAE\x11a\0qW\x80c\xF2\xBE\x94\xAE\x14a\x05KW\x80c\xF8Q\xE1\x98\x14a\x05^W\x80c\xFA(\xC6'\x14a\x05qW\x80c\xFFiJw\x14a\x05\x84W`\0\x80\xFD[\x80c\xC8)LV\x14a\x04\xD6W\x80c\xD5\xEC\xCC\x05\x14a\x04\xE9W\x80c\xDD\x98F\xB9\x14a\x04\xFCW\x80c\xDF\\\xF7#\x14a\x05$W`\0\x80\xFD[\x80c\xBC\x9A@\xC3\x11a\0\xDEW\x80c\xBC\x9A@\xC3\x14a\x04tW\x80c\xBD)\xB8\xCD\x14a\x04\x87W\x80c\xC4gx\xA5\x14a\x04\x9AW\x80c\xC6\x01R}\x14a\x04\xC3W`\0\x80\xFD[\x80c\x9F<\xCFe\x14a\x03\xEEW\x80c\xACk\xFB\x03\x14a\x04\x01W\x80c\xAD\xC8\x04\xDA\x14a\x04!W\x80c\xB6\x90Kx\x14a\x04aW`\0\x80\xFD[\x80cK\xD2n\t\x11a\x01\x87W\x80cf\xAC\xFE\xFE\x11a\x01VW\x80cf\xAC\xFE\xFE\x14a\x03JW\x80cm\x14\xA9\x87\x14a\x03uW\x80c|\x17#G\x14a\x03\xB4W\x80c\x81\xC0u\x02\x14a\x03\xCEW`\0\x80\xFD[\x80cK\xD2n\t\x14a\x02\xE5W\x80cT\x01\xED'\x14a\x03\x15W\x80c^Zgu\x14a\x03(W\x80c_\x1F-w\x14a\x037W`\0\x80\xFD[\x80c \xB6b\x98\x11a\x01\xC3W\x80c \xB6b\x98\x14a\x02lW\x80c%PGw\x14a\x02\x81W\x80c,\xD9Y@\x14a\x02\xA2W\x80c<\xA5\xA5\xF5\x14a\x02\xC2W`\0\x80\xFD[\x80c\x04\x91\xB4\x1C\x14a\x01\xEAW\x80c\x08s$a\x14a\x02 W\x80c\x1F\x9Bt\xE0\x14a\x02AW[`\0\x80\xFD[a\x02\ra\x01\xF86`\x04a(\x03V[`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x023a\x02.6`\x04a(\x1EV[a\x05\x97V[`@Qa\x02\x17\x92\x91\x90a(HV[a\x02Ta\x02O6`\x04a(\x7FV[a\x05\xE0V[`@Q`\x01`\x01``\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x17V[a\x02\x7Fa\x02z6`\x04a(\xFAV[a\x06\x02V[\0[a\x02\x94a\x02\x8F6`\x04a)\xBBV[a\x08`V[`@Qa\x02\x17\x92\x91\x90a*ZV[a\x02\xB5a\x02\xB06`\x04a*\x7FV[a\nxV[`@Qa\x02\x17\x91\x90a*\xABV[a\x02\ra\x02\xD06`\x04a(\x03V[`\xFF\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[a\x02\ra\x02\xF36`\x04a*\x7FV[`\0\x91\x82R`\x02` \x90\x81R`@\x80\x84 `\xFF\x93\x90\x93\x16\x84R\x91\x90R\x90 T\x90V[a\x02Ta\x03#6`\x04a*\x7FV[a\x0B\x17V[a\x02\rg\r\xE0\xB6\xB3\xA7d\0\0\x81V[a\x02\x7Fa\x03E6`\x04a+\xB4V[a\x0B0V[a\x03]a\x03X6`\x04a)\xBBV[a\x0ExV[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x17V[a\x03\x9C\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x17V[a\x03\xBC` \x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x02\x17V[a\x03\xE1a\x03\xDC6`\x04a,pV[a\x0F\x17V[`@Qa\x02\x17\x91\x90a,\xC2V[a\x03\x9Ca\x03\xFC6`\x04a(\x1EV[a\x11WV[a\x04\x14a\x04\x0F6`\x04a-\0V[a\x11\x8FV[`@Qa\x02\x17\x91\x90a-3V[a\x044a\x04/6`\x04a(\x1EV[a\x12'V[`@\x80Q\x82Q`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x92\x83\x01Q`\x01`\x01``\x1B\x03\x16\x92\x81\x01\x92\x90\x92R\x01a\x02\x17V[a\x04\x14a\x04o6`\x04a(\x1EV[a\x12\xA1V[a\x02\x7Fa\x04\x826`\x04a-\x7FV[a\x130V[a\x02\x7Fa\x04\x956`\x04a-\xA9V[a\x13QV[a\x02Ta\x04\xA86`\x04a(\x03V[`\0` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01``\x1B\x03\x16\x81V[a\x02\x7Fa\x04\xD16`\x04a.uV[a\x13\xC3V[a\x02Ta\x04\xE46`\x04a.\xC2V[a\x13\xDFV[a\x02Ta\x04\xF76`\x04a(\x03V[a\x14]V[a\x05\x0Fa\x05\n6`\x04a.\xFEV[a\x14\xB0V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\x17V[a\x03\x9C\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x02Ta\x05Y6`\x04a/:V[a\x14\xC5V[a\x04\x14a\x05l6`\x04a*\x7FV[a\x15ZV[a\x02Ta\x05\x7F6`\x04a.\xFEV[a\x16?V[a\x02\x7Fa\x05\x926`\x04a/|V[a\x16\xA0V[`\x03` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x05\xB3W`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x81\x16\x92P`\x01`\xA0\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x90P\x82V[`\0\x82a\x05\xEC\x81a\x17\xCBV[`\0a\x05\xF8\x85\x85a\x18GV[P\x95\x94PPPPPV[a\x06\na\x1AEV[\x84a\x06\x14\x81a\x17\xCBV[\x83\x80a\x06\x8FW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FStakeRegistry.modifyStrategyPara`D\x82\x01R\x7Fms: no strategy indices provided`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[\x82\x81\x14a\x07\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`9`$\x82\x01R\x7FStakeRegistry.modifyStrategyPara`D\x82\x01R\x7Fms: input length mismatch\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x86V[`\xFF\x87\x16`\0\x90\x81R`\x03` R`@\x81 \x90[\x82\x81\x10\x15a\x08UW\x85\x85\x82\x81\x81\x10a\x072Wa\x072a/\xD9V[\x90P` \x02\x01` \x81\x01\x90a\x07G\x91\x90a/\xEFV[\x82\x89\x89\x84\x81\x81\x10a\x07ZWa\x07Za/\xD9V[\x90P` \x02\x015\x81T\x81\x10a\x07qWa\x07qa/\xD9V[\x90`\0R` `\0 \x01`\0\x01`\x14a\x01\0\n\x81T\x81`\x01`\x01``\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01``\x1B\x03\x16\x02\x17\x90UP\x88`\xFF\x16\x7F\x11\xA5d\x13\"\xDA\x1D\xFFV\xA4\xB6n\xAA\xC3\x1F\xFAFR\x95\xEC\xE9\x07\xCD\x1647y;M\0\x9Au\x83\x8A\x8A\x85\x81\x81\x10a\x07\xDAWa\x07\xDAa/\xD9V[\x90P` \x02\x015\x81T\x81\x10a\x07\xF1Wa\x07\xF1a/\xD9V[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\x08\x18Wa\x08\x18a/\xD9V[\x90P` \x02\x01` \x81\x01\x90a\x08-\x91\x90a/\xEFV[`@Qa\x08;\x92\x91\x90a(HV[`@Q\x80\x91\x03\x90\xA2\x80a\x08M\x81a0 V[\x91PPa\x07\x18V[PPPPPPPPPV[``\x80a\x08ka\x1BnV[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\x85Wa\x08\x85a+#V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08\xAEW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\xCBWa\x08\xCBa+#V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08\xF4W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85\x81\x10\x15a\njW`\0\x87\x87\x83\x81\x81\x10a\t\x16Wa\t\x16a/\xD9V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\t+\x90P\x81a\x17\xCBV[`\0\x80a\t8\x83\x8Da\x18GV[\x91P\x91P\x80a\t\xD5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`[`$\x82\x01R\x7FStakeRegistry.registerOperator: `D\x82\x01R\x7FOperator does not meet minimum s`d\x82\x01R\x7Ftake requirement for quorum\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x06\x86V[`\0a\t\xE2\x8C\x85\x85a\x1C!V[\x90P\x82\x87\x86\x81Q\x81\x10a\t\xF7Wa\t\xF7a/\xD9V[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\n!\x84\x82a\x1E\xA1V[\x86\x86\x81Q\x81\x10a\n3Wa\n3a/\xD9V[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPPPPP\x80\x80a\nb\x90a0 V[\x91PPa\x08\xFAV[P\x90\x97\x90\x96P\x94PPPPPV[`\0\x82\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x85\x16\x84R\x82R\x80\x83 \x80T\x82Q\x81\x85\x02\x81\x01\x85\x01\x90\x93R\x80\x83R``\x94\x92\x93\x91\x92\x90\x91\x84\x01[\x82\x82\x10\x15a\x0B\nW`\0\x84\x81R` \x90\x81\x90 `@\x80Q``\x81\x01\x82R\x91\x85\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x84R`\x01` \x1B\x82\x04\x16\x83\x85\x01R`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x90\x82\x01R\x82R`\x01\x90\x92\x01\x91\x01a\n\xB1V[PPPP\x90P[\x92\x91PPV[`\0\x80a\x0B$\x84\x84a\x15ZV[`@\x01Q\x94\x93PPPPV[a\x0B8a\x1AEV[\x81a\x0BB\x81a\x17\xCBV[\x81Q\x80a\x0B\xB7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FStakeRegistry.removeStrategies: `D\x82\x01R\x7Fno indices to remove provided\0\0\0`d\x82\x01R`\x84\x01a\x06\x86V[`\xFF\x84\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 `\x04\x90\x92R\x82 \x90\x91[\x83\x81\x10\x15a\x0EoW\x86`\xFF\x16\x7F1\xFA.,\xD2\x80\xC97^\x13\xFF\xCF=\x81\xE27\x81\0\x18n@X\xF8\xD3\xDD\xB6\x90\xB8-\xCD1\xF7\x84\x88\x84\x81Q\x81\x10a\x0C\x16Wa\x0C\x16a/\xD9V[` \x02` \x01\x01Q\x81T\x81\x10a\x0C.Wa\x0C.a/\xD9V[`\0\x91\x82R` \x91\x82\x90 \x01T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R\x01`@Q\x80\x91\x03\x90\xA2\x86`\xFF\x16\x7F\x11\xA5d\x13\"\xDA\x1D\xFFV\xA4\xB6n\xAA\xC3\x1F\xFAFR\x95\xEC\xE9\x07\xCD\x1647y;M\0\x9Au\x84\x88\x84\x81Q\x81\x10a\x0C\x8CWa\x0C\x8Ca/\xD9V[` \x02` \x01\x01Q\x81T\x81\x10a\x0C\xA4Wa\x0C\xA4a/\xD9V[`\0\x91\x82R` \x80\x83 \x91\x90\x91\x01T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x82R\x91\x81\x01\x92\x90\x92R\x01`@Q\x80\x91\x03\x90\xA2\x82T\x83\x90a\x0C\xE4\x90`\x01\x90a0;V[\x81T\x81\x10a\x0C\xF4Wa\x0C\xF4a/\xD9V[\x90`\0R` `\0 \x01\x83\x87\x83\x81Q\x81\x10a\r\x11Wa\r\x11a/\xD9V[` \x02` \x01\x01Q\x81T\x81\x10a\r)Wa\r)a/\xD9V[`\0\x91\x82R` \x90\x91 \x82T\x91\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x82\x17\x81U\x91T`\x01`\x01``\x1B\x03`\x01`\xA0\x1B\x91\x82\x90\x04\x16\x02\x17\x90U\x82T\x83\x90\x80a\r|Wa\r|a0RV[`\0\x82\x81R` \x81 \x82\x01`\0\x19\x90\x81\x01\x91\x90\x91U\x01\x90U\x81T\x82\x90a\r\xA4\x90`\x01\x90a0;V[\x81T\x81\x10a\r\xB4Wa\r\xB4a/\xD9V[\x90`\0R` `\0 \x01`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x82\x87\x83\x81Q\x81\x10a\r\xE5Wa\r\xE5a/\xD9V[` \x02` \x01\x01Q\x81T\x81\x10a\r\xFDWa\r\xFDa/\xD9V[\x90`\0R` `\0 \x01`\0a\x01\0\n\x81T\x81`\x01`\x01`\xA0\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`\xA0\x1B\x03\x16\x02\x17\x90UP\x81\x80T\x80a\x0E;Wa\x0E;a0RV[`\0\x82\x81R` \x90 \x81\x01`\0\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90U\x80a\x0Eg\x81a0 V[\x91PPa\x0B\xD6V[PPPPPPPV[`\0a\x0E\x82a\x1BnV[`\0\x80[\x83\x81\x10\x15a\x05\xF8W`\0\x85\x85\x83\x81\x81\x10a\x0E\xA2Wa\x0E\xA2a/\xD9V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\x0E\xB7\x90P\x81a\x17\xCBV[`\0\x80a\x0E\xC4\x83\x8Ba\x18GV[\x91P\x91P\x80a\x0E\xE6W`\0\x91P`\x01`\xFF\x84\x16\x1B`\x01`\x01`\xC0\x1B\x03\x86\x16\x17\x94P[`\0a\x0E\xF3\x8A\x85\x85a\x1C!V[\x90Pa\x0E\xFF\x84\x82a\x1E\xA1V[PPPPP\x80\x80a\x0F\x0F\x90a0 V[\x91PPa\x0E\x86V[```\0\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0F3Wa\x0F3a+#V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F\\W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83\x81\x10\x15a\x11LW`\0\x85\x85\x83\x81\x81\x10a\x0F~Wa\x0F~a/\xD9V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\x0F\x93\x90P\x81a\x17\xCBV[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 \x80Tc\xFF\xFF\xFF\xFF\x8A\x16\x92\x90a\x0F\xBCWa\x0F\xBCa/\xD9V[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x10hW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`[`$\x82\x01R\x7FStakeRegistry.getTotalStakeIndic`D\x82\x01R\x7FesAtBlockNumber: quorum has no s`d\x82\x01R\x7Ftake history at blockNumber\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x06\x86V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 T\x90[\x81\x81\x10\x15a\x116W`\xFF\x83\x16`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 c\xFF\xFF\xFF\xFF\x8B\x16\x91a\x10\xAC\x84\x86a0;V[a\x10\xB6\x91\x90a0;V[\x81T\x81\x10a\x10\xC6Wa\x10\xC6a/\xD9V[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a\x11$W`\x01a\x10\xE9\x82\x84a0;V[a\x10\xF3\x91\x90a0;V[\x85\x85\x81Q\x81\x10a\x11\x05Wa\x11\x05a/\xD9V[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x116V[\x80a\x11.\x81a0 V[\x91PPa\x10}V[PPP\x80\x80a\x11D\x90a0 V[\x91PPa\x0FbV[P\x90P[\x93\x92PPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x11sW`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x91P\x82\x90PV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x82\x84\x01\x82\x90R\x85\x82R`\x02\x81R\x83\x82 `\xFF\x88\x16\x83R\x90R\x91\x90\x91 \x80T\x83\x90\x81\x10a\x11\xD4Wa\x11\xD4a/\xD9V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x84R`\x01` \x1B\x82\x04\x16\x93\x83\x01\x93\x90\x93R`\x01`@\x1B\x90\x92\x04`\x01`\x01``\x1B\x03\x16\x91\x81\x01\x91\x90\x91R\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\xFF\x83\x16`\0\x90\x81R`\x03` R`@\x90 \x80T\x83\x90\x81\x10a\x12_Wa\x12_a/\xD9V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q\x80\x82\x01\x90\x91R\x91\x01T`\x01`\x01`\xA0\x1B\x03\x81\x16\x82R`\x01`\xA0\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91\x81\x01\x91\x90\x91R\x93\x92PPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x82\x84\x01\x82\x90R`\xFF\x86\x16\x82R`\x01\x90R\x91\x90\x91 \x80T\x83\x90\x81\x10a\x12\xDEWa\x12\xDEa/\xD9V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x84R`\x01` \x1B\x82\x04\x16\x93\x83\x01\x93\x90\x93R`\x01`@\x1B\x90\x92\x04`\x01`\x01``\x1B\x03\x16\x91\x81\x01\x91\x90\x91R\x93\x92PPPV[a\x138a\x1AEV[\x81a\x13B\x81a\x17\xCBV[a\x13L\x83\x83a \x1BV[PPPV[a\x13Ya\x1BnV[`\0[\x81\x81\x10\x15a\x13\xBDW`\0\x83\x83\x83\x81\x81\x10a\x13xWa\x13xa/\xD9V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\x13\x8D\x90P\x81a\x17\xCBV[`\0a\x13\x9B\x86\x83`\0a\x1C!V[\x90Pa\x13\xA7\x82\x82a\x1E\xA1V[PPP\x80\x80a\x13\xB5\x90a0 V[\x91PPa\x13\\V[PPPPV[a\x13\xCBa\x1AEV[\x81a\x13\xD5\x81a\x17\xCBV[a\x13L\x83\x83a \x84V[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x14\x06Wa\x14\x06a/\xD9V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x82\x04\x16\x93\x82\x01\x93\x90\x93R`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x93\x04\x92\x90\x92\x16\x90\x82\x01R\x90Pa\x0B$\x81\x85a$\xC7V[`\xFF\x81\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x90\x91a\x14~\x91a0;V[\x81T\x81\x10a\x14\x8EWa\x14\x8Ea/\xD9V[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[`\0a\x14\xBD\x84\x84\x84a&AV[\x94\x93PPPPV[`\0\x82\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x14\xF6Wa\x14\xF6a/\xD9V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x82\x04\x16\x93\x82\x01\x93\x90\x93R`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x93\x04\x92\x90\x92\x16\x90\x82\x01R\x90Pa\x15M\x81\x86a$\xC7V[`@\x01Q\x95\x94PPPPPV[`@\x80Q``\x80\x82\x01\x83R`\0\x80\x83R` \x80\x84\x01\x82\x90R\x83\x85\x01\x82\x90R\x86\x82R`\x02\x81R\x84\x82 `\xFF\x87\x16\x83R\x81R\x84\x82 T\x85Q\x93\x84\x01\x86R\x82\x84R\x90\x83\x01\x82\x90R\x93\x82\x01R\x90\x91\x90\x81a\x15\xB3W\x91Pa\x0B\x11\x90PV[`\0\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x15\xDA`\x01\x84a0;V[\x81T\x81\x10a\x15\xEAWa\x15\xEAa/\xD9V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x82\x04\x16\x93\x82\x01\x93\x90\x93R`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x93\x04\x92\x90\x92\x16\x90\x82\x01R\x92Pa\x0B\x11\x91PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x16f\x85\x85\x85a&AV[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x16|Wa\x16|a/\xD9V[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x94\x93PPPPV[a\x16\xA8a\x1BnV[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x17&W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FStakeRegistry.initializeQuorum: `D\x82\x01Rtquorum already exists`X\x1B`d\x82\x01R`\x84\x01a\x06\x86V[a\x170\x83\x82a \x84V[a\x17:\x83\x83a \x1BV[PP`\xFF\x16`\0\x90\x81R`\x01` \x81\x81R`@\x80\x84 \x81Q``\x81\x01\x83Rc\xFF\xFF\xFF\xFFC\x81\x16\x82R\x81\x85\x01\x87\x81R\x93\x82\x01\x87\x81R\x83T\x96\x87\x01\x84U\x92\x87R\x93\x90\x95 \x94Q\x94\x90\x93\x01\x80T\x91Q\x93Q`\x01`\x01``\x1B\x03\x16`\x01`@\x1B\x02`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x94\x84\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x93\x16\x95\x90\x93\x16\x94\x90\x94\x17\x17\x91\x90\x91\x16\x17\x90UV[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x90 Ta\x18DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`1`$\x82\x01R\x7FStakeRegistry.quorumExists: quor`D\x82\x01Rp\x1D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`z\x1B`d\x82\x01R`\x84\x01a\x06\x86V[PV[`\0\x80`\0\x80a\x18f\x86`\xFF\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x90\x91P`\xFF\x87\x16`\0\x90\x81R`\x04` \x81\x90R`@\x80\x83 \x90Qc\x90\x04\x13G`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x92c\x90\x04\x13G\x92a\x18\xDB\x92\x8C\x92\x01a0hV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x18\xF8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x19 \x91\x90\x81\x01\x90a0\xC7V[\x90P`\0[\x83\x81\x10\x15a\x1A\x11W`\xFF\x89\x16`\0\x90\x81R`\x03` R`@\x90 \x80T\x82\x90\x81\x10a\x19QWa\x19Qa/\xD9V[`\0\x91\x82R` \x80\x83 `@\x80Q\x80\x82\x01\x90\x91R\x92\x01T`\x01`\x01`\xA0\x1B\x03\x81\x16\x83R`\x01`\xA0\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x90\x82\x01R\x83Q\x90\x94P\x83\x90\x83\x90\x81\x10a\x19\x9FWa\x19\x9Fa/\xD9V[` \x02` \x01\x01Q\x11\x15a\x19\xFFWg\r\xE0\xB6\xB3\xA7d\0\0\x83` \x01Q`\x01`\x01``\x1B\x03\x16\x83\x83\x81Q\x81\x10a\x19\xD6Wa\x19\xD6a/\xD9V[` \x02` \x01\x01Qa\x19\xE8\x91\x90a1WV[a\x19\xF2\x91\x90a1vV[a\x19\xFC\x90\x86a1\x98V[\x94P[\x80a\x1A\t\x81a0 V[\x91PPa\x19%V[PPP`\xFF\x86\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x91\x93PP`\x01`\x01``\x1B\x03\x90\x81\x16\x90\x83\x16\x10\x15\x90P[\x92P\x92\x90PV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\xA3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xC7\x91\x90a1\xC3V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1BlW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R\x7FStakeRegistry.onlyCoordinatorOwn`D\x82\x01R\x7Fer: caller is not the owner of t`d\x82\x01Ru42\x9092\xB3\xB4\xB9\xBA9<\xA1\xB7\xB7\xB924\xB70\xBA7\xB9`Q\x1B`\x84\x82\x01R`\xA4\x01a\x06\x86V[V[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x1BlW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`L`$\x82\x01R\x7FStakeRegistry.onlyRegistryCoordi`D\x82\x01R\x7Fnator: caller is not the Registr`d\x82\x01Rk<\xA1\xB7\xB7\xB924\xB70\xBA7\xB9`\xA1\x1B`\x84\x82\x01R`\xA4\x01a\x06\x86V[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x81\x90\x80a\x1C\xE5W`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x82R\x80\x83 \x81Q``\x81\x01\x83Rc\xFF\xFF\xFF\xFFC\x81\x16\x82R\x81\x85\x01\x86\x81R`\x01`\x01``\x1B\x03\x80\x8C\x16\x95\x84\x01\x95\x86R\x84T`\x01\x81\x01\x86U\x94\x88R\x95\x90\x96 \x91Q\x91\x90\x92\x01\x80T\x95Q\x93Q\x90\x94\x16`\x01`@\x1B\x02`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x93\x83\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x96\x16\x91\x90\x92\x16\x17\x93\x90\x93\x17\x16\x91\x90\x91\x17\x90Ua\x1EGV[`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a\x1D\x0C`\x01\x84a0;V[\x81T\x81\x10a\x1D\x1CWa\x1D\x1Ca/\xD9V[`\0\x91\x82R` \x90\x91 \x01\x80T`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x94P\x90\x91P\x85\x16\x83\x14\x15a\x1DUW`\0\x93PPPPa\x11PV[\x80TCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a\x1D\x8FW\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua\x1EEV[\x80Tg\xFF\xFF\xFF\xFF\0\0\0\0\x19\x16`\x01` \x1BCc\xFF\xFF\xFF\xFF\x90\x81\x16\x82\x81\x02\x93\x90\x93\x17\x84U`\0\x8A\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x8D\x16\x84R\x82R\x80\x83 \x81Q``\x81\x01\x83R\x96\x87R\x86\x83\x01\x84\x81R`\x01`\x01``\x1B\x03\x8D\x81\x16\x93\x89\x01\x93\x84R\x82T`\x01\x81\x01\x84U\x92\x86R\x93\x90\x94 \x96Q\x96\x01\x80T\x93Q\x91Q\x96\x85\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x94\x16\x93\x90\x93\x17\x93\x16\x90\x93\x02\x91\x90\x91\x17`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B\x93\x90\x92\x16\x92\x90\x92\x02\x17\x90U[P[`@\x80Q`\xFF\x87\x16\x81R`\x01`\x01``\x1B\x03\x86\x16` \x82\x01R\x87\x91\x7F/R}R~\x95\xD8\xFE@\xAE\xC5Swt;\xB7y\x08}\xA3\xF6\xD0\xD0\x8F\x12\xE3dD\xDAb2}\x91\x01`@Q\x80\x91\x03\x90\xA2a\x1E\x97\x82\x85a'\xA7V[\x96\x95PPPPPPV[`\xFF\x82\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a\x1E\xC5\x90\x84a0;V[\x81T\x81\x10a\x1E\xD5Wa\x1E\xD5a/\xD9V[\x90`\0R` `\0 \x01\x90P\x83`\0\x14\x15a\x1F\x04WT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\x0B\x11\x90PV[\x80T`\0\x90a\x1F#\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a'\xBFV[\x82T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a\x1F`W\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua \x12V[\x81Tc\xFF\xFF\xFF\xFFC\x81\x16`\x01` \x1B\x81\x81\x02g\xFF\xFF\xFF\xFF\0\0\0\0\x19\x90\x94\x16\x93\x90\x93\x17\x85U`\xFF\x89\x16`\0\x90\x81R`\x01` \x81\x81R`@\x80\x84 \x81Q``\x81\x01\x83R\x95\x86R\x85\x83\x01\x85\x81R`\x01`\x01``\x1B\x03\x80\x8B\x16\x93\x88\x01\x93\x84R\x82T\x95\x86\x01\x83U\x91\x86R\x92\x90\x94 \x94Q\x94\x90\x92\x01\x80T\x91Q\x92Q\x90\x93\x16`\x01`@\x1B\x02`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x92\x86\x16\x90\x96\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x91\x16\x93\x90\x94\x16\x92\x90\x92\x17\x92\x90\x92\x17\x16\x91\x90\x91\x17\x90U[\x95\x94PPPPPV[`\xFF\x82\x16`\0\x81\x81R` \x81\x81R`@\x91\x82\x90 \x80Tk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01``\x1B\x03\x86\x16\x90\x81\x17\x90\x91U\x91Q\x91\x82R\x7F&\xEE\xCF\xF2\xB7\x0B\nq\x10O\xF4\xD9@\xBAqb\xD2:\x95\xC2Hw\x1F\xC4\x87\xA7\xBE\x17\xA5\x96\xB3\xCF\x91\x01`@Q\x80\x91\x03\x90\xA2PPV[`\0\x81Q\x11a \xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R`\0\x80Q` a2\x94\x839\x81Q\x91R`D\x82\x01R\x7F: no strategies provided\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x86V[\x80Q`\xFF\x83\x16`\0\x90\x81R`\x03` \x90\x81R`@\x90\x91 T\x90a!\x0C\x83\x83a1\xE0V[\x11\x15a!|W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`E`$\x82\x01R`\0\x80Q` a2\x94\x839\x81Q\x91R`D\x82\x01R\x7F: exceed MAX_WEIGHING_FUNCTION_L`d\x82\x01Rd\x08\xA9\xC8\xEA\x89`\xDB\x1B`\x84\x82\x01R`\xA4\x01a\x06\x86V[`\0[\x82\x81\x10\x15a$\xC0W`\0[a!\x94\x82\x84a1\xE0V[\x81\x10\x15a\"uW\x84\x82\x81Q\x81\x10a!\xADWa!\xADa/\xD9V[` \x02` \x01\x01Q`\0\x01Q`\x01`\x01`\xA0\x1B\x03\x16`\x03`\0\x88`\xFF\x16`\xFF\x16\x81R` \x01\x90\x81R` \x01`\0 \x82\x81T\x81\x10a!\xECWa!\xECa/\xD9V[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\"cW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R`\0\x80Q` a2\x94\x839\x81Q\x91R`D\x82\x01R\x7F: cannot add same strategy 2x\0\0\0`d\x82\x01R`\x84\x01a\x06\x86V[\x80a\"m\x81a0 V[\x91PPa!\x8AV[P`\0\x84\x82\x81Q\x81\x10a\"\x8AWa\"\x8Aa/\xD9V[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x11a#\x0FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R`\0\x80Q` a2\x94\x839\x81Q\x91R`D\x82\x01R\x7F: cannot add strategy with zero `d\x82\x01Re\x1D\xD9ZY\xDA\x1D`\xD2\x1B`\x84\x82\x01R`\xA4\x01a\x06\x86V[`\xFF\x85\x16`\0\x90\x81R`\x03` R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a#5Wa#5a/\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q\x82T`\x01\x81\x01\x84U`\0\x93\x84R\x82\x84 \x82Q\x92\x84\x01Q`\x01`\x01``\x1B\x03\x16`\x01`\xA0\x1B\x02`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x92\x90\x92\x17\x91\x01U`\xFF\x87\x16\x82R`\x04\x90R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a#\x9AWa#\x9Aa/\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQ\x82T`\x01\x81\x01\x84U`\0\x93\x84R\x91\x90\x92 \x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90U\x83Q`\xFF\x86\x16\x90\x7F\x10V^V\xCA\xCB\xF3.\xCA&yE\xF0T\xFE\xC0.Yu\x002\xD1\x13\xD30!\x82\xAD\x96\x7FT\x04\x90\x86\x90\x84\x90\x81\x10a$\x11Wa$\x11a/\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQ`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R\x01`@Q\x80\x91\x03\x90\xA2\x84`\xFF\x16\x7F\x11\xA5d\x13\"\xDA\x1D\xFFV\xA4\xB6n\xAA\xC3\x1F\xFAFR\x95\xEC\xE9\x07\xCD\x1647y;M\0\x9Au\x85\x83\x81Q\x81\x10a$nWa$na/\xD9V[` \x02` \x01\x01Q`\0\x01Q\x86\x84\x81Q\x81\x10a$\x8CWa$\x8Ca/\xD9V[` \x02` \x01\x01Q` \x01Q`@Qa$\xA6\x92\x91\x90a(HV[`@Q\x80\x91\x03\x90\xA2\x80a$\xB8\x81a0 V[\x91PPa!\x7FV[PPPPPV[\x81`\0\x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10\x15a%lW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R\x7FStakeRegistry._validateStakeUpda`D\x82\x01R\x7FteAtBlockNumber: stakeUpdate is `d\x82\x01Ru397\xB6\x900\xB3:2\xB9\x10167\xB1\xB5\xA7:\xB6\xB12\xB9`Q\x1B`\x84\x82\x01R`\xA4\x01a\x06\x86V[` \x82\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a%\x92WP\x81` \x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10[a&=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`j`$\x82\x01R\x7FStakeRegistry._validateStakeUpda`D\x82\x01R\x7FteAtBlockNumber: there is a newe`d\x82\x01R\x7Fr stakeUpdate available before b`\x84\x82\x01Ri67\xB1\xB5\xA7:\xB6\xB12\xB9`\xB1\x1B`\xA4\x82\x01R`\xC4\x01a\x06\x86V[PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a&\xE2W`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x90 c\xFF\xFF\xFF\xFF\x85\x16\x90a&\x95`\x01\x84a0;V[\x81T\x81\x10a&\xA5Wa&\xA5a/\xD9V[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a&\xD0Wa&\xC7`\x01\x82a0;V[\x92PPPa\x11PV[\x80a&\xDA\x81a1\xF8V[\x91PPa&`V[P`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x81`$\x82\x01R\x7FStakeRegistry._getStakeUpdateInd`D\x82\x01R\x7FexForOperatorAtBlockNumber: no s`d\x82\x01R\x7Ftake update found for operatorId`\x84\x82\x01R\x7F and quorumNumber at block numbe`\xA4\x82\x01R`9`\xF9\x1B`\xC4\x82\x01R`\xE4\x01a\x06\x86V[`\0a\x11P`\x01`\x01``\x1B\x03\x80\x85\x16\x90\x84\x16a2\x0FV[`\0\x80\x82\x12\x15a'\xE3Wa'\xD2\x82a2NV[a'\xDC\x90\x84a2kV[\x90Pa\x0B\x11V[a'\xDC\x82\x84a1\x98V[\x805`\xFF\x81\x16\x81\x14a'\xFEW`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a(\x15W`\0\x80\xFD[a\x11P\x82a'\xEDV[`\0\x80`@\x83\x85\x03\x12\x15a(1W`\0\x80\xFD[a(:\x83a'\xEDV[\x94` \x93\x90\x93\x015\x93PPPV[`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x82R`\x01`\x01``\x1B\x03\x16` \x82\x01R`@\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x18DW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a(\x92W`\0\x80\xFD[a(\x9B\x83a'\xEDV[\x91P` \x83\x015a(\xAB\x81a(jV[\x80\x91PP\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a(\xC8W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xDFW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x1A>W`\0\x80\xFD[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a)\x12W`\0\x80\xFD[a)\x1B\x86a'\xEDV[\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a)7W`\0\x80\xFD[a)C\x89\x83\x8A\x01a(\xB6V[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a)\\W`\0\x80\xFD[Pa)i\x88\x82\x89\x01a(\xB6V[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a)\x8CW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a)\xA3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x1A>W`\0\x80\xFD[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a)\xD1W`\0\x80\xFD[\x845a)\xDC\x81a(jV[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a)\xFEW`\0\x80\xFD[a*\n\x87\x82\x88\x01a)zV[\x95\x98\x94\x97P\x95PPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*OW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a**V[P\x94\x95\x94PPPPPV[`@\x81R`\0a*m`@\x83\x01\x85a*\x16V[\x82\x81\x03` \x84\x01Ra \x12\x81\x85a*\x16V[`\0\x80`@\x83\x85\x03\x12\x15a*\x92W`\0\x80\xFD[\x825\x91Pa*\xA2` \x84\x01a'\xEDV[\x90P\x92P\x92\x90PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a+\x17Wa+\x04\x83\x85Qc\xFF\xFF\xFF\xFF\x80\x82Q\x16\x83R\x80` \x83\x01Q\x16` \x84\x01RP`\x01`\x01``\x1B\x03`@\x82\x01Q\x16`@\x83\x01RPPV[\x92\x84\x01\x92``\x92\x90\x92\x01\x91`\x01\x01a*\xC7V[P\x90\x96\x95PPPPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+[Wa+[a+#V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\x89Wa+\x89a+#V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a+\xAAWa+\xAAa+#V[P`\x05\x1B` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a+\xC7W`\0\x80\xFD[a+\xD0\x83a'\xEDV[\x91P` \x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xECW`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a+\xFDW`\0\x80\xFD[\x805a,\x10a,\x0B\x82a+\x91V[a+aV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15a,/W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a,MW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a,4V[\x80\x95PPPPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a'\xFEW`\0\x80\xFD[`\0\x80`\0`@\x84\x86\x03\x12\x15a,\x85W`\0\x80\xFD[a,\x8E\x84a,\\V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xA9W`\0\x80\xFD[a,\xB5\x86\x82\x87\x01a)zV[\x94\x97\x90\x96P\x93\x94PPPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a+\x17W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a,\xDEV[`\0\x80`\0``\x84\x86\x03\x12\x15a-\x15W`\0\x80\xFD[a-\x1E\x84a'\xEDV[\x95` \x85\x015\x95P`@\x90\x94\x015\x93\x92PPPV[\x81Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x84\x01Q\x90\x91\x16\x90\x82\x01R`@\x80\x83\x01Q`\x01`\x01``\x1B\x03\x16\x90\x82\x01R``\x81\x01a\x0B\x11V[\x805`\x01`\x01``\x1B\x03\x81\x16\x81\x14a'\xFEW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a-\x92W`\0\x80\xFD[a-\x9B\x83a'\xEDV[\x91Pa*\xA2` \x84\x01a-hV[`\0\x80`\0`@\x84\x86\x03\x12\x15a-\xBEW`\0\x80\xFD[\x835\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xA9W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a-\xECW`\0\x80\xFD[\x815` a-\xFCa,\x0B\x83a+\x91V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a.\x1BW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a.jW`@\x81\x89\x03\x12\x15a.8W`\0\x80\x81\xFD[a.@a+9V[\x815a.K\x81a(jV[\x81Ra.X\x82\x86\x01a-hV[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01a.\x1FV[P\x96\x95PPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a.\x88W`\0\x80\xFD[a.\x91\x83a'\xEDV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xACW`\0\x80\xFD[a.\xB8\x85\x82\x86\x01a-\xDBV[\x91PP\x92P\x92\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a.\xD7W`\0\x80\xFD[a.\xE0\x84a'\xEDV[\x92Pa.\xEE` \x85\x01a,\\V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`\0``\x84\x86\x03\x12\x15a/\x13W`\0\x80\xFD[\x835\x92Pa/#` \x85\x01a'\xEDV[\x91Pa/1`@\x85\x01a,\\V[\x90P\x92P\x92P\x92V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a/PW`\0\x80\xFD[a/Y\x85a'\xEDV[\x93Pa/g` \x86\x01a,\\V[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a/\x91W`\0\x80\xFD[a/\x9A\x84a'\xEDV[\x92Pa/\xA8` \x85\x01a-hV[\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xC3W`\0\x80\xFD[a/\xCF\x86\x82\x87\x01a-\xDBV[\x91PP\x92P\x92P\x92V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a0\x01W`\0\x80\xFD[a\x11P\x82a-hV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a04Wa04a0\nV[P`\x01\x01\x90V[`\0\x82\x82\x10\x15a0MWa0Ma0\nV[P\x03\x90V[cNH{q`\xE0\x1B`\0R`1`\x04R`$`\0\xFD[`\0`@\x82\x01`\x01\x80`\xA0\x1B\x03\x80\x86\x16\x84R` `@\x81\x86\x01R\x82\x86T\x80\x85R``\x87\x01\x91P\x87`\0R\x82`\0 \x94P`\0[\x81\x81\x10\x15a0\xB9W\x85T\x85\x16\x83R`\x01\x95\x86\x01\x95\x92\x84\x01\x92\x01a0\x9BV[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a0\xDAW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xF0W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a1\x01W`\0\x80\xFD[\x80Qa1\x0Fa,\x0B\x82a+\x91V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a1.W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a1LW\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a13V[\x97\x96PPPPPPPV[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a1qWa1qa0\nV[P\x02\x90V[`\0\x82a1\x93WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0`\x01`\x01``\x1B\x03\x80\x83\x16\x81\x85\x16\x80\x83\x03\x82\x11\x15a1\xBAWa1\xBAa0\nV[\x01\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a1\xD5W`\0\x80\xFD[\x81Qa\x11P\x81a(jV[`\0\x82\x19\x82\x11\x15a1\xF3Wa1\xF3a0\nV[P\x01\x90V[`\0\x81a2\x07Wa2\x07a0\nV[P`\0\x19\x01\x90V[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a2-Wa2-a0\nV[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a2HWa2Ha0\nV[PP\x03\x90V[`\0`\x01`\xFF\x1B\x82\x14\x15a2dWa2da0\nV[P`\0\x03\x90V[`\0`\x01`\x01``\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15a2\x8BWa2\x8Ba0\nV[\x03\x93\x92PPPV\xFEStakeRegistry._addStrategyParams\xA2dipfsX\"\x12 U\xBFx\xA9\xAD\xDC\xFCS\xE6h\xF5\xD4\xAA4i;\x1A3\xCDU\xFA\xCC\x1B,S\xFB\xB2\xB0o\xA0'\xBAdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612803565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e36600461281e565b610597565b604051610217929190612848565b61025461024f36600461287f565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a3660046128fa565b610602565b005b61029461028f3660046129bb565b610860565b604051610217929190612a5a565b6102b56102b0366004612a7f565b610a78565b6040516102179190612aab565b61020d6102d0366004612803565b60ff1660009081526003602052604090205490565b61020d6102f3366004612a7f565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612a7f565b610b17565b61020d670de0b6b3a764000081565b61027f610345366004612bb4565b610b30565b61035d6103583660046129bb565b610e78565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc366004612c70565b610f17565b6040516102179190612cc2565b61039c6103fc36600461281e565b611157565b61041461040f366004612d00565b61118f565b6040516102179190612d33565b61043461042f36600461281e565b611227565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f36600461281e565b6112a1565b61027f610482366004612d7f565b611330565b61027f610495366004612da9565b611351565b6102546104a8366004612803565b6000602081905290815260409020546001600160601b031681565b61027f6104d1366004612e75565b6113c3565b6102546104e4366004612ec2565b6113df565b6102546104f7366004612803565b61145d565b61050f61050a366004612efe565b6114b0565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b610254610559366004612f3a565b6114c5565b61041461056c366004612a7f565b61155a565b61025461057f366004612efe565b61163f565b61027f610592366004612f7c565b6116a0565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b6000826105ec816117cb565b60006105f88585611847565b5095945050505050565b61060a611a45565b84610614816117cb565b838061068f576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f766964656460648201526084015b60405180910390fd5b8281146107045760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610686565b60ff87166000908152600360205260408120905b828110156108555785858281811061073257610732612fd9565b90506020020160208101906107479190612fef565b8289898481811061075a5761075a612fd9565b905060200201358154811061077157610771612fd9565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106107da576107da612fd9565b90506020020135815481106107f1576107f1612fd9565b6000918252602090912001546001600160a01b031688888581811061081857610818612fd9565b905060200201602081019061082d9190612fef565b60405161083b929190612848565b60405180910390a28061084d81613020565b915050610718565b505050505050505050565b60608061086b611b6e565b6000836001600160401b0381111561088557610885612b23565b6040519080825280602002602001820160405280156108ae578160200160208202803683370190505b5090506000846001600160401b038111156108cb576108cb612b23565b6040519080825280602002602001820160405280156108f4578160200160208202803683370190505b50905060005b85811015610a6a57600087878381811061091657610916612fd9565b919091013560f81c915061092b9050816117cb565b600080610938838d611847565b91509150806109d55760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610686565b60006109e28c8585611c21565b9050828786815181106109f7576109f7612fd9565b60200260200101906001600160601b031690816001600160601b031681525050610a218482611ea1565b868681518110610a3357610a33612fd9565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610a6290613020565b9150506108fa565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610b0a576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610ab1565b5050505090505b92915050565b600080610b24848461155a565b60400151949350505050565b610b38611a45565b81610b42816117cb565b815180610bb75760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610686565b60ff841660009081526003602090815260408083206004909252822090915b83811015610e6f578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610c1657610c16612fd9565b602002602001015181548110610c2e57610c2e612fd9565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610c8c57610c8c612fd9565b602002602001015181548110610ca457610ca4612fd9565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610ce49060019061303b565b81548110610cf457610cf4612fd9565b9060005260206000200183878381518110610d1157610d11612fd9565b602002602001015181548110610d2957610d29612fd9565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080610d7c57610d7c613052565b60008281526020812082016000199081019190915501905581548290610da49060019061303b565b81548110610db457610db4612fd9565b9060005260206000200160009054906101000a90046001600160a01b031682878381518110610de557610de5612fd9565b602002602001015181548110610dfd57610dfd612fd9565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081805480610e3b57610e3b613052565b600082815260209020810160001990810180546001600160a01b031916905501905580610e6781613020565b915050610bd6565b50505050505050565b6000610e82611b6e565b6000805b838110156105f8576000858583818110610ea257610ea2612fd9565b919091013560f81c9150610eb79050816117cb565b600080610ec4838b611847565b9150915080610ee65760009150600160ff84161b6001600160c01b0386161794505b6000610ef38a8585611c21565b9050610eff8482611ea1565b50505050508080610f0f90613020565b915050610e86565b60606000826001600160401b03811115610f3357610f33612b23565b604051908082528060200260200182016040528015610f5c578160200160208202803683370190505b50905060005b8381101561114c576000858583818110610f7e57610f7e612fd9565b919091013560f81c9150610f939050816117cb565b60ff81166000908152600160205260408120805463ffffffff8a169290610fbc57610fbc612fd9565b60009182526020909120015463ffffffff1611156110685760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610686565b60ff8116600090815260016020526040812054905b818110156111365760ff8316600090815260016020819052604090912063ffffffff8b16916110ac848661303b565b6110b6919061303b565b815481106110c6576110c6612fd9565b60009182526020909120015463ffffffff16116111245760016110e9828461303b565b6110f3919061303b565b85858151811061110557611105612fd9565b602002602001019063ffffffff16908163ffffffff1681525050611136565b8061112e81613020565b91505061107d565b505050808061114490613020565b915050610f62565b5090505b9392505050565b6004602052816000526040600020818154811061117357600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106111d4576111d4612fd9565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff8316600090815260036020526040902080548390811061125f5761125f612fd9565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260019052919091208054839081106112de576112de612fd9565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b611338611a45565b81611342816117cb565b61134c838361201b565b505050565b611359611b6e565b60005b818110156113bd57600083838381811061137857611378612fd9565b919091013560f81c915061138d9050816117cb565b600061139b86836000611c21565b90506113a78282611ea1565b50505080806113b590613020565b91505061135c565b50505050565b6113cb611a45565b816113d5816117cb565b61134c8383612084565b60ff8316600090815260016020526040812080548291908490811061140657611406612fd9565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610b2481856124c7565b60ff8116600090815260016020819052604082208054909161147e9161303b565b8154811061148e5761148e612fd9565b600091825260209091200154600160401b90046001600160601b031692915050565b60006114bd848484612641565b949350505050565b600082815260026020908152604080832060ff8816845290915281208054829190849081106114f6576114f6612fd9565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b9093049290921690820152905061154d81866124c7565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff871683528152848220548551938401865282845290830182905293820152909190816115b3579150610b119050565b600085815260026020908152604080832060ff8816845290915290206115da60018461303b565b815481106115ea576115ea612fd9565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610b11915050565b600083815260026020908152604080832060ff861684529091528120611666858585612641565b63ffffffff168154811061167c5761167c612fd9565b600091825260209091200154600160401b90046001600160601b0316949350505050565b6116a8611b6e565b60ff8316600090815260016020526040902054156117265760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610686565b6117308382612084565b61173a838361201b565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b60ff81166000908152600160205260409020546118445760405162461bcd60e51b815260206004820152603160248201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726044820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b6064820152608401610686565b50565b6000806000806118668660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016926390041347926118db928c9201613068565b600060405180830381865afa1580156118f8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261192091908101906130c7565b905060005b83811015611a115760ff8916600090815260036020526040902080548290811061195157611951612fd9565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b031690820152835190945083908390811061199f5761199f612fd9565b602002602001015111156119ff57670de0b6b3a764000083602001516001600160601b03168383815181106119d6576119d6612fd9565b60200260200101516119e89190613157565b6119f29190613176565b6119fc9086613198565b94505b80611a0981613020565b915050611925565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac791906131c3565b6001600160a01b0316336001600160a01b031614611b6c5760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60448201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746064820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608482015260a401610686565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b6c5760405162461bcd60e51b815260206004820152604c60248201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960448201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260648201526b3ca1b7b7b93234b730ba37b960a11b608482015260a401610686565b600083815260026020908152604080832060ff86168452909152812054819080611ce557600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055611e47565b600086815260026020908152604080832060ff891684529091528120611d0c60018461303b565b81548110611d1c57611d1c612fd9565b600091825260209091200180546001600160601b03600160401b909104811694509091508516831415611d555760009350505050611150565b80544363ffffffff90811691161415611d8f578054600160401b600160a01b031916600160401b6001600160601b03871602178155611e45565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a2611e9782856127a7565b9695505050505050565b60ff821660009081526001602081905260408220805491839190611ec5908461303b565b81548110611ed557611ed5612fd9565b9060005260206000200190508360001415611f045754600160401b90046001600160601b03169150610b119050565b8054600090611f2390600160401b90046001600160601b0316866127bf565b82549091504363ffffffff90811691161415611f60578154600160401b600160a01b031916600160401b6001600160601b03831602178255612012565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b60008151116120e95760405162461bcd60e51b8152602060048201526038602482015260008051602061329483398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610686565b805160ff83166000908152600360209081526040909120549061210c83836131e0565b111561217c5760405162461bcd60e51b8152602060048201526045602482015260008051602061329483398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610686565b60005b828110156124c05760005b61219482846131e0565b811015612275578482815181106121ad576121ad612fd9565b6020026020010151600001516001600160a01b0316600360008860ff1660ff16815260200190815260200160002082815481106121ec576121ec612fd9565b6000918252602090912001546001600160a01b031614156122635760405162461bcd60e51b815260206004820152603d602482015260008051602061329483398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610686565b8061226d81613020565b91505061218a565b50600084828151811061228a5761228a612fd9565b6020026020010151602001516001600160601b03161161230f5760405162461bcd60e51b8152602060048201526046602482015260008051602061329483398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610686565b60ff85166000908152600360205260409020845185908390811061233557612335612fd9565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff871682526004905260409020845185908390811061239a5761239a612fd9565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f54049086908490811061241157612411612fd9565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7585838151811061246e5761246e612fd9565b60200260200101516000015186848151811061248c5761248c612fd9565b6020026020010151602001516040516124a6929190612848565b60405180910390a2806124b881613020565b91505061217f565b5050505050565b816000015163ffffffff168163ffffffff16101561256c5760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610686565b602082015163ffffffff1615806125925750816020015163ffffffff168163ffffffff16105b61263d5760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610686565b5050565b600083815260026020908152604080832060ff86168452909152812054805b80156126e257600086815260026020908152604080832060ff89168452909152902063ffffffff85169061269560018461303b565b815481106126a5576126a5612fd9565b60009182526020909120015463ffffffff16116126d0576126c760018261303b565b92505050611150565b806126da816131f8565b915050612660565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610686565b60006111506001600160601b0380851690841661320f565b6000808212156127e3576127d28261324e565b6127dc908461326b565b9050610b11565b6127dc8284613198565b803560ff811681146127fe57600080fd5b919050565b60006020828403121561281557600080fd5b611150826127ed565b6000806040838503121561283157600080fd5b61283a836127ed565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b038116811461184457600080fd5b6000806040838503121561289257600080fd5b61289b836127ed565b915060208301356128ab8161286a565b809150509250929050565b60008083601f8401126128c857600080fd5b5081356001600160401b038111156128df57600080fd5b6020830191508360208260051b8501011115611a3e57600080fd5b60008060008060006060868803121561291257600080fd5b61291b866127ed565b945060208601356001600160401b038082111561293757600080fd5b61294389838a016128b6565b9096509450604088013591508082111561295c57600080fd5b50612969888289016128b6565b969995985093965092949392505050565b60008083601f84011261298c57600080fd5b5081356001600160401b038111156129a357600080fd5b602083019150836020828501011115611a3e57600080fd5b600080600080606085870312156129d157600080fd5b84356129dc8161286a565b93506020850135925060408501356001600160401b038111156129fe57600080fd5b612a0a8782880161297a565b95989497509550505050565b600081518084526020808501945080840160005b83811015612a4f5781516001600160601b031687529582019590820190600101612a2a565b509495945050505050565b604081526000612a6d6040830185612a16565b82810360208401526120128185612a16565b60008060408385031215612a9257600080fd5b82359150612aa2602084016127ed565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612b1757612b0483855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612ac7565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612b5b57612b5b612b23565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612b8957612b89612b23565b604052919050565b60006001600160401b03821115612baa57612baa612b23565b5060051b60200190565b60008060408385031215612bc757600080fd5b612bd0836127ed565b91506020808401356001600160401b03811115612bec57600080fd5b8401601f81018613612bfd57600080fd5b8035612c10612c0b82612b91565b612b61565b81815260059190911b82018301908381019088831115612c2f57600080fd5b928401925b82841015612c4d57833582529284019290840190612c34565b80955050505050509250929050565b803563ffffffff811681146127fe57600080fd5b600080600060408486031215612c8557600080fd5b612c8e84612c5c565b925060208401356001600160401b03811115612ca957600080fd5b612cb58682870161297a565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612b1757835163ffffffff1683529284019291840191600101612cde565b600080600060608486031215612d1557600080fd5b612d1e846127ed565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610b11565b80356001600160601b03811681146127fe57600080fd5b60008060408385031215612d9257600080fd5b612d9b836127ed565b9150612aa260208401612d68565b600080600060408486031215612dbe57600080fd5b8335925060208401356001600160401b03811115612ca957600080fd5b600082601f830112612dec57600080fd5b81356020612dfc612c0b83612b91565b82815260069290921b84018101918181019086841115612e1b57600080fd5b8286015b84811015612e6a5760408189031215612e385760008081fd5b612e40612b39565b8135612e4b8161286a565b8152612e58828601612d68565b81860152835291830191604001612e1f565b509695505050505050565b60008060408385031215612e8857600080fd5b612e91836127ed565b915060208301356001600160401b03811115612eac57600080fd5b612eb885828601612ddb565b9150509250929050565b600080600060608486031215612ed757600080fd5b612ee0846127ed565b9250612eee60208501612c5c565b9150604084013590509250925092565b600080600060608486031215612f1357600080fd5b83359250612f23602085016127ed565b9150612f3160408501612c5c565b90509250925092565b60008060008060808587031215612f5057600080fd5b612f59856127ed565b9350612f6760208601612c5c565b93969395505050506040820135916060013590565b600080600060608486031215612f9157600080fd5b612f9a846127ed565b9250612fa860208501612d68565b915060408401356001600160401b03811115612fc357600080fd5b612fcf86828701612ddb565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561300157600080fd5b61115082612d68565b634e487b7160e01b600052601160045260246000fd5b60006000198214156130345761303461300a565b5060010190565b60008282101561304d5761304d61300a565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b818110156130b957855485168352600195860195928401920161309b565b509098975050505050505050565b600060208083850312156130da57600080fd5b82516001600160401b038111156130f057600080fd5b8301601f8101851361310157600080fd5b805161310f612c0b82612b91565b81815260059190911b8201830190838101908783111561312e57600080fd5b928401925b8284101561314c57835182529284019290840190613133565b979650505050505050565b60008160001904831182151516156131715761317161300a565b500290565b60008261319357634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b038083168185168083038211156131ba576131ba61300a565b01949350505050565b6000602082840312156131d557600080fd5b81516111508161286a565b600082198211156131f3576131f361300a565b500190565b6000816132075761320761300a565b506000190190565b60008083128015600160ff1b85018412161561322d5761322d61300a565b6001600160ff1b03840183138116156132485761324861300a565b50500390565b6000600160ff1b8214156132645761326461300a565b5060000390565b60006001600160601b038381169083168181101561328b5761328b61300a565b03939250505056fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a264697066735822122055bf78a9addcfc53e668f5d4aa34693b1a33cd55facc1b2c53fbb2b06fa027ba64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\xE5W`\x005`\xE0\x1C\x80c\x9F<\xCFe\x11a\x01\x0FW\x80c\xC8)LV\x11a\0\xA2W\x80c\xF2\xBE\x94\xAE\x11a\0qW\x80c\xF2\xBE\x94\xAE\x14a\x05KW\x80c\xF8Q\xE1\x98\x14a\x05^W\x80c\xFA(\xC6'\x14a\x05qW\x80c\xFFiJw\x14a\x05\x84W`\0\x80\xFD[\x80c\xC8)LV\x14a\x04\xD6W\x80c\xD5\xEC\xCC\x05\x14a\x04\xE9W\x80c\xDD\x98F\xB9\x14a\x04\xFCW\x80c\xDF\\\xF7#\x14a\x05$W`\0\x80\xFD[\x80c\xBC\x9A@\xC3\x11a\0\xDEW\x80c\xBC\x9A@\xC3\x14a\x04tW\x80c\xBD)\xB8\xCD\x14a\x04\x87W\x80c\xC4gx\xA5\x14a\x04\x9AW\x80c\xC6\x01R}\x14a\x04\xC3W`\0\x80\xFD[\x80c\x9F<\xCFe\x14a\x03\xEEW\x80c\xACk\xFB\x03\x14a\x04\x01W\x80c\xAD\xC8\x04\xDA\x14a\x04!W\x80c\xB6\x90Kx\x14a\x04aW`\0\x80\xFD[\x80cK\xD2n\t\x11a\x01\x87W\x80cf\xAC\xFE\xFE\x11a\x01VW\x80cf\xAC\xFE\xFE\x14a\x03JW\x80cm\x14\xA9\x87\x14a\x03uW\x80c|\x17#G\x14a\x03\xB4W\x80c\x81\xC0u\x02\x14a\x03\xCEW`\0\x80\xFD[\x80cK\xD2n\t\x14a\x02\xE5W\x80cT\x01\xED'\x14a\x03\x15W\x80c^Zgu\x14a\x03(W\x80c_\x1F-w\x14a\x037W`\0\x80\xFD[\x80c \xB6b\x98\x11a\x01\xC3W\x80c \xB6b\x98\x14a\x02lW\x80c%PGw\x14a\x02\x81W\x80c,\xD9Y@\x14a\x02\xA2W\x80c<\xA5\xA5\xF5\x14a\x02\xC2W`\0\x80\xFD[\x80c\x04\x91\xB4\x1C\x14a\x01\xEAW\x80c\x08s$a\x14a\x02 W\x80c\x1F\x9Bt\xE0\x14a\x02AW[`\0\x80\xFD[a\x02\ra\x01\xF86`\x04a(\x03V[`\xFF\x16`\0\x90\x81R`\x01` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x023a\x02.6`\x04a(\x1EV[a\x05\x97V[`@Qa\x02\x17\x92\x91\x90a(HV[a\x02Ta\x02O6`\x04a(\x7FV[a\x05\xE0V[`@Q`\x01`\x01``\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x17V[a\x02\x7Fa\x02z6`\x04a(\xFAV[a\x06\x02V[\0[a\x02\x94a\x02\x8F6`\x04a)\xBBV[a\x08`V[`@Qa\x02\x17\x92\x91\x90a*ZV[a\x02\xB5a\x02\xB06`\x04a*\x7FV[a\nxV[`@Qa\x02\x17\x91\x90a*\xABV[a\x02\ra\x02\xD06`\x04a(\x03V[`\xFF\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[a\x02\ra\x02\xF36`\x04a*\x7FV[`\0\x91\x82R`\x02` \x90\x81R`@\x80\x84 `\xFF\x93\x90\x93\x16\x84R\x91\x90R\x90 T\x90V[a\x02Ta\x03#6`\x04a*\x7FV[a\x0B\x17V[a\x02\rg\r\xE0\xB6\xB3\xA7d\0\0\x81V[a\x02\x7Fa\x03E6`\x04a+\xB4V[a\x0B0V[a\x03]a\x03X6`\x04a)\xBBV[a\x0ExV[`@Q`\x01`\x01`\xC0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x17V[a\x03\x9C\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x17V[a\x03\xBC` \x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x02\x17V[a\x03\xE1a\x03\xDC6`\x04a,pV[a\x0F\x17V[`@Qa\x02\x17\x91\x90a,\xC2V[a\x03\x9Ca\x03\xFC6`\x04a(\x1EV[a\x11WV[a\x04\x14a\x04\x0F6`\x04a-\0V[a\x11\x8FV[`@Qa\x02\x17\x91\x90a-3V[a\x044a\x04/6`\x04a(\x1EV[a\x12'V[`@\x80Q\x82Q`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x92\x83\x01Q`\x01`\x01``\x1B\x03\x16\x92\x81\x01\x92\x90\x92R\x01a\x02\x17V[a\x04\x14a\x04o6`\x04a(\x1EV[a\x12\xA1V[a\x02\x7Fa\x04\x826`\x04a-\x7FV[a\x130V[a\x02\x7Fa\x04\x956`\x04a-\xA9V[a\x13QV[a\x02Ta\x04\xA86`\x04a(\x03V[`\0` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01``\x1B\x03\x16\x81V[a\x02\x7Fa\x04\xD16`\x04a.uV[a\x13\xC3V[a\x02Ta\x04\xE46`\x04a.\xC2V[a\x13\xDFV[a\x02Ta\x04\xF76`\x04a(\x03V[a\x14]V[a\x05\x0Fa\x05\n6`\x04a.\xFEV[a\x14\xB0V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\x17V[a\x03\x9C\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x02Ta\x05Y6`\x04a/:V[a\x14\xC5V[a\x04\x14a\x05l6`\x04a*\x7FV[a\x15ZV[a\x02Ta\x05\x7F6`\x04a.\xFEV[a\x16?V[a\x02\x7Fa\x05\x926`\x04a/|V[a\x16\xA0V[`\x03` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x05\xB3W`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x81\x16\x92P`\x01`\xA0\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x90P\x82V[`\0\x82a\x05\xEC\x81a\x17\xCBV[`\0a\x05\xF8\x85\x85a\x18GV[P\x95\x94PPPPPV[a\x06\na\x1AEV[\x84a\x06\x14\x81a\x17\xCBV[\x83\x80a\x06\x8FW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FStakeRegistry.modifyStrategyPara`D\x82\x01R\x7Fms: no strategy indices provided`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[\x82\x81\x14a\x07\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`9`$\x82\x01R\x7FStakeRegistry.modifyStrategyPara`D\x82\x01R\x7Fms: input length mismatch\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x86V[`\xFF\x87\x16`\0\x90\x81R`\x03` R`@\x81 \x90[\x82\x81\x10\x15a\x08UW\x85\x85\x82\x81\x81\x10a\x072Wa\x072a/\xD9V[\x90P` \x02\x01` \x81\x01\x90a\x07G\x91\x90a/\xEFV[\x82\x89\x89\x84\x81\x81\x10a\x07ZWa\x07Za/\xD9V[\x90P` \x02\x015\x81T\x81\x10a\x07qWa\x07qa/\xD9V[\x90`\0R` `\0 \x01`\0\x01`\x14a\x01\0\n\x81T\x81`\x01`\x01``\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01``\x1B\x03\x16\x02\x17\x90UP\x88`\xFF\x16\x7F\x11\xA5d\x13\"\xDA\x1D\xFFV\xA4\xB6n\xAA\xC3\x1F\xFAFR\x95\xEC\xE9\x07\xCD\x1647y;M\0\x9Au\x83\x8A\x8A\x85\x81\x81\x10a\x07\xDAWa\x07\xDAa/\xD9V[\x90P` \x02\x015\x81T\x81\x10a\x07\xF1Wa\x07\xF1a/\xD9V[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\x08\x18Wa\x08\x18a/\xD9V[\x90P` \x02\x01` \x81\x01\x90a\x08-\x91\x90a/\xEFV[`@Qa\x08;\x92\x91\x90a(HV[`@Q\x80\x91\x03\x90\xA2\x80a\x08M\x81a0 V[\x91PPa\x07\x18V[PPPPPPPPPV[``\x80a\x08ka\x1BnV[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\x85Wa\x08\x85a+#V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08\xAEW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\xCBWa\x08\xCBa+#V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08\xF4W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x85\x81\x10\x15a\njW`\0\x87\x87\x83\x81\x81\x10a\t\x16Wa\t\x16a/\xD9V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\t+\x90P\x81a\x17\xCBV[`\0\x80a\t8\x83\x8Da\x18GV[\x91P\x91P\x80a\t\xD5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`[`$\x82\x01R\x7FStakeRegistry.registerOperator: `D\x82\x01R\x7FOperator does not meet minimum s`d\x82\x01R\x7Ftake requirement for quorum\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x06\x86V[`\0a\t\xE2\x8C\x85\x85a\x1C!V[\x90P\x82\x87\x86\x81Q\x81\x10a\t\xF7Wa\t\xF7a/\xD9V[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\n!\x84\x82a\x1E\xA1V[\x86\x86\x81Q\x81\x10a\n3Wa\n3a/\xD9V[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPPPPP\x80\x80a\nb\x90a0 V[\x91PPa\x08\xFAV[P\x90\x97\x90\x96P\x94PPPPPV[`\0\x82\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x85\x16\x84R\x82R\x80\x83 \x80T\x82Q\x81\x85\x02\x81\x01\x85\x01\x90\x93R\x80\x83R``\x94\x92\x93\x91\x92\x90\x91\x84\x01[\x82\x82\x10\x15a\x0B\nW`\0\x84\x81R` \x90\x81\x90 `@\x80Q``\x81\x01\x82R\x91\x85\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x84R`\x01` \x1B\x82\x04\x16\x83\x85\x01R`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x90\x82\x01R\x82R`\x01\x90\x92\x01\x91\x01a\n\xB1V[PPPP\x90P[\x92\x91PPV[`\0\x80a\x0B$\x84\x84a\x15ZV[`@\x01Q\x94\x93PPPPV[a\x0B8a\x1AEV[\x81a\x0BB\x81a\x17\xCBV[\x81Q\x80a\x0B\xB7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FStakeRegistry.removeStrategies: `D\x82\x01R\x7Fno indices to remove provided\0\0\0`d\x82\x01R`\x84\x01a\x06\x86V[`\xFF\x84\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 `\x04\x90\x92R\x82 \x90\x91[\x83\x81\x10\x15a\x0EoW\x86`\xFF\x16\x7F1\xFA.,\xD2\x80\xC97^\x13\xFF\xCF=\x81\xE27\x81\0\x18n@X\xF8\xD3\xDD\xB6\x90\xB8-\xCD1\xF7\x84\x88\x84\x81Q\x81\x10a\x0C\x16Wa\x0C\x16a/\xD9V[` \x02` \x01\x01Q\x81T\x81\x10a\x0C.Wa\x0C.a/\xD9V[`\0\x91\x82R` \x91\x82\x90 \x01T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R\x01`@Q\x80\x91\x03\x90\xA2\x86`\xFF\x16\x7F\x11\xA5d\x13\"\xDA\x1D\xFFV\xA4\xB6n\xAA\xC3\x1F\xFAFR\x95\xEC\xE9\x07\xCD\x1647y;M\0\x9Au\x84\x88\x84\x81Q\x81\x10a\x0C\x8CWa\x0C\x8Ca/\xD9V[` \x02` \x01\x01Q\x81T\x81\x10a\x0C\xA4Wa\x0C\xA4a/\xD9V[`\0\x91\x82R` \x80\x83 \x91\x90\x91\x01T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x82R\x91\x81\x01\x92\x90\x92R\x01`@Q\x80\x91\x03\x90\xA2\x82T\x83\x90a\x0C\xE4\x90`\x01\x90a0;V[\x81T\x81\x10a\x0C\xF4Wa\x0C\xF4a/\xD9V[\x90`\0R` `\0 \x01\x83\x87\x83\x81Q\x81\x10a\r\x11Wa\r\x11a/\xD9V[` \x02` \x01\x01Q\x81T\x81\x10a\r)Wa\r)a/\xD9V[`\0\x91\x82R` \x90\x91 \x82T\x91\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x82\x17\x81U\x91T`\x01`\x01``\x1B\x03`\x01`\xA0\x1B\x91\x82\x90\x04\x16\x02\x17\x90U\x82T\x83\x90\x80a\r|Wa\r|a0RV[`\0\x82\x81R` \x81 \x82\x01`\0\x19\x90\x81\x01\x91\x90\x91U\x01\x90U\x81T\x82\x90a\r\xA4\x90`\x01\x90a0;V[\x81T\x81\x10a\r\xB4Wa\r\xB4a/\xD9V[\x90`\0R` `\0 \x01`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x82\x87\x83\x81Q\x81\x10a\r\xE5Wa\r\xE5a/\xD9V[` \x02` \x01\x01Q\x81T\x81\x10a\r\xFDWa\r\xFDa/\xD9V[\x90`\0R` `\0 \x01`\0a\x01\0\n\x81T\x81`\x01`\x01`\xA0\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`\xA0\x1B\x03\x16\x02\x17\x90UP\x81\x80T\x80a\x0E;Wa\x0E;a0RV[`\0\x82\x81R` \x90 \x81\x01`\0\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90U\x80a\x0Eg\x81a0 V[\x91PPa\x0B\xD6V[PPPPPPPV[`\0a\x0E\x82a\x1BnV[`\0\x80[\x83\x81\x10\x15a\x05\xF8W`\0\x85\x85\x83\x81\x81\x10a\x0E\xA2Wa\x0E\xA2a/\xD9V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\x0E\xB7\x90P\x81a\x17\xCBV[`\0\x80a\x0E\xC4\x83\x8Ba\x18GV[\x91P\x91P\x80a\x0E\xE6W`\0\x91P`\x01`\xFF\x84\x16\x1B`\x01`\x01`\xC0\x1B\x03\x86\x16\x17\x94P[`\0a\x0E\xF3\x8A\x85\x85a\x1C!V[\x90Pa\x0E\xFF\x84\x82a\x1E\xA1V[PPPPP\x80\x80a\x0F\x0F\x90a0 V[\x91PPa\x0E\x86V[```\0\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0F3Wa\x0F3a+#V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F\\W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83\x81\x10\x15a\x11LW`\0\x85\x85\x83\x81\x81\x10a\x0F~Wa\x0F~a/\xD9V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\x0F\x93\x90P\x81a\x17\xCBV[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 \x80Tc\xFF\xFF\xFF\xFF\x8A\x16\x92\x90a\x0F\xBCWa\x0F\xBCa/\xD9V[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x10hW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`[`$\x82\x01R\x7FStakeRegistry.getTotalStakeIndic`D\x82\x01R\x7FesAtBlockNumber: quorum has no s`d\x82\x01R\x7Ftake history at blockNumber\0\0\0\0\0`\x84\x82\x01R`\xA4\x01a\x06\x86V[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x81 T\x90[\x81\x81\x10\x15a\x116W`\xFF\x83\x16`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 c\xFF\xFF\xFF\xFF\x8B\x16\x91a\x10\xAC\x84\x86a0;V[a\x10\xB6\x91\x90a0;V[\x81T\x81\x10a\x10\xC6Wa\x10\xC6a/\xD9V[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a\x11$W`\x01a\x10\xE9\x82\x84a0;V[a\x10\xF3\x91\x90a0;V[\x85\x85\x81Q\x81\x10a\x11\x05Wa\x11\x05a/\xD9V[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x116V[\x80a\x11.\x81a0 V[\x91PPa\x10}V[PPP\x80\x80a\x11D\x90a0 V[\x91PPa\x0FbV[P\x90P[\x93\x92PPPV[`\x04` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x11sW`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x91P\x82\x90PV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x82\x84\x01\x82\x90R\x85\x82R`\x02\x81R\x83\x82 `\xFF\x88\x16\x83R\x90R\x91\x90\x91 \x80T\x83\x90\x81\x10a\x11\xD4Wa\x11\xD4a/\xD9V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x84R`\x01` \x1B\x82\x04\x16\x93\x83\x01\x93\x90\x93R`\x01`@\x1B\x90\x92\x04`\x01`\x01``\x1B\x03\x16\x91\x81\x01\x91\x90\x91R\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\xFF\x83\x16`\0\x90\x81R`\x03` R`@\x90 \x80T\x83\x90\x81\x10a\x12_Wa\x12_a/\xD9V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q\x80\x82\x01\x90\x91R\x91\x01T`\x01`\x01`\xA0\x1B\x03\x81\x16\x82R`\x01`\xA0\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91\x81\x01\x91\x90\x91R\x93\x92PPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x82\x84\x01\x82\x90R`\xFF\x86\x16\x82R`\x01\x90R\x91\x90\x91 \x80T\x83\x90\x81\x10a\x12\xDEWa\x12\xDEa/\xD9V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x84R`\x01` \x1B\x82\x04\x16\x93\x83\x01\x93\x90\x93R`\x01`@\x1B\x90\x92\x04`\x01`\x01``\x1B\x03\x16\x91\x81\x01\x91\x90\x91R\x93\x92PPPV[a\x138a\x1AEV[\x81a\x13B\x81a\x17\xCBV[a\x13L\x83\x83a \x1BV[PPPV[a\x13Ya\x1BnV[`\0[\x81\x81\x10\x15a\x13\xBDW`\0\x83\x83\x83\x81\x81\x10a\x13xWa\x13xa/\xD9V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\x13\x8D\x90P\x81a\x17\xCBV[`\0a\x13\x9B\x86\x83`\0a\x1C!V[\x90Pa\x13\xA7\x82\x82a\x1E\xA1V[PPP\x80\x80a\x13\xB5\x90a0 V[\x91PPa\x13\\V[PPPPV[a\x13\xCBa\x1AEV[\x81a\x13\xD5\x81a\x17\xCBV[a\x13L\x83\x83a \x84V[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x14\x06Wa\x14\x06a/\xD9V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x82\x04\x16\x93\x82\x01\x93\x90\x93R`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x93\x04\x92\x90\x92\x16\x90\x82\x01R\x90Pa\x0B$\x81\x85a$\xC7V[`\xFF\x81\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x90\x91a\x14~\x91a0;V[\x81T\x81\x10a\x14\x8EWa\x14\x8Ea/\xD9V[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[`\0a\x14\xBD\x84\x84\x84a&AV[\x94\x93PPPPV[`\0\x82\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x14\xF6Wa\x14\xF6a/\xD9V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x82\x04\x16\x93\x82\x01\x93\x90\x93R`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x93\x04\x92\x90\x92\x16\x90\x82\x01R\x90Pa\x15M\x81\x86a$\xC7V[`@\x01Q\x95\x94PPPPPV[`@\x80Q``\x80\x82\x01\x83R`\0\x80\x83R` \x80\x84\x01\x82\x90R\x83\x85\x01\x82\x90R\x86\x82R`\x02\x81R\x84\x82 `\xFF\x87\x16\x83R\x81R\x84\x82 T\x85Q\x93\x84\x01\x86R\x82\x84R\x90\x83\x01\x82\x90R\x93\x82\x01R\x90\x91\x90\x81a\x15\xB3W\x91Pa\x0B\x11\x90PV[`\0\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x15\xDA`\x01\x84a0;V[\x81T\x81\x10a\x15\xEAWa\x15\xEAa/\xD9V[`\0\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x82\x04\x16\x93\x82\x01\x93\x90\x93R`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x93\x04\x92\x90\x92\x16\x90\x82\x01R\x92Pa\x0B\x11\x91PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x16f\x85\x85\x85a&AV[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x16|Wa\x16|a/\xD9V[`\0\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x94\x93PPPPV[a\x16\xA8a\x1BnV[`\xFF\x83\x16`\0\x90\x81R`\x01` R`@\x90 T\x15a\x17&W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`5`$\x82\x01R\x7FStakeRegistry.initializeQuorum: `D\x82\x01Rtquorum already exists`X\x1B`d\x82\x01R`\x84\x01a\x06\x86V[a\x170\x83\x82a \x84V[a\x17:\x83\x83a \x1BV[PP`\xFF\x16`\0\x90\x81R`\x01` \x81\x81R`@\x80\x84 \x81Q``\x81\x01\x83Rc\xFF\xFF\xFF\xFFC\x81\x16\x82R\x81\x85\x01\x87\x81R\x93\x82\x01\x87\x81R\x83T\x96\x87\x01\x84U\x92\x87R\x93\x90\x95 \x94Q\x94\x90\x93\x01\x80T\x91Q\x93Q`\x01`\x01``\x1B\x03\x16`\x01`@\x1B\x02`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x94\x84\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x93\x16\x95\x90\x93\x16\x94\x90\x94\x17\x17\x91\x90\x91\x16\x17\x90UV[`\xFF\x81\x16`\0\x90\x81R`\x01` R`@\x90 Ta\x18DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`1`$\x82\x01R\x7FStakeRegistry.quorumExists: quor`D\x82\x01Rp\x1D[H\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`z\x1B`d\x82\x01R`\x84\x01a\x06\x86V[PV[`\0\x80`\0\x80a\x18f\x86`\xFF\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R\x90\x91P`\xFF\x87\x16`\0\x90\x81R`\x04` \x81\x90R`@\x80\x83 \x90Qc\x90\x04\x13G`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x92c\x90\x04\x13G\x92a\x18\xDB\x92\x8C\x92\x01a0hV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x18\xF8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x19 \x91\x90\x81\x01\x90a0\xC7V[\x90P`\0[\x83\x81\x10\x15a\x1A\x11W`\xFF\x89\x16`\0\x90\x81R`\x03` R`@\x90 \x80T\x82\x90\x81\x10a\x19QWa\x19Qa/\xD9V[`\0\x91\x82R` \x80\x83 `@\x80Q\x80\x82\x01\x90\x91R\x92\x01T`\x01`\x01`\xA0\x1B\x03\x81\x16\x83R`\x01`\xA0\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x90\x82\x01R\x83Q\x90\x94P\x83\x90\x83\x90\x81\x10a\x19\x9FWa\x19\x9Fa/\xD9V[` \x02` \x01\x01Q\x11\x15a\x19\xFFWg\r\xE0\xB6\xB3\xA7d\0\0\x83` \x01Q`\x01`\x01``\x1B\x03\x16\x83\x83\x81Q\x81\x10a\x19\xD6Wa\x19\xD6a/\xD9V[` \x02` \x01\x01Qa\x19\xE8\x91\x90a1WV[a\x19\xF2\x91\x90a1vV[a\x19\xFC\x90\x86a1\x98V[\x94P[\x80a\x1A\t\x81a0 V[\x91PPa\x19%V[PPP`\xFF\x86\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x91\x93PP`\x01`\x01``\x1B\x03\x90\x81\x16\x90\x83\x16\x10\x15\x90P[\x92P\x92\x90PV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\xA3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xC7\x91\x90a1\xC3V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1BlW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R\x7FStakeRegistry.onlyCoordinatorOwn`D\x82\x01R\x7Fer: caller is not the owner of t`d\x82\x01Ru42\x9092\xB3\xB4\xB9\xBA9<\xA1\xB7\xB7\xB924\xB70\xBA7\xB9`Q\x1B`\x84\x82\x01R`\xA4\x01a\x06\x86V[V[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x1BlW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`L`$\x82\x01R\x7FStakeRegistry.onlyRegistryCoordi`D\x82\x01R\x7Fnator: caller is not the Registr`d\x82\x01Rk<\xA1\xB7\xB7\xB924\xB70\xBA7\xB9`\xA1\x1B`\x84\x82\x01R`\xA4\x01a\x06\x86V[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x81\x90\x80a\x1C\xE5W`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x82R\x80\x83 \x81Q``\x81\x01\x83Rc\xFF\xFF\xFF\xFFC\x81\x16\x82R\x81\x85\x01\x86\x81R`\x01`\x01``\x1B\x03\x80\x8C\x16\x95\x84\x01\x95\x86R\x84T`\x01\x81\x01\x86U\x94\x88R\x95\x90\x96 \x91Q\x91\x90\x92\x01\x80T\x95Q\x93Q\x90\x94\x16`\x01`@\x1B\x02`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x93\x83\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x96\x16\x91\x90\x92\x16\x17\x93\x90\x93\x17\x16\x91\x90\x91\x17\x90Ua\x1EGV[`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a\x1D\x0C`\x01\x84a0;V[\x81T\x81\x10a\x1D\x1CWa\x1D\x1Ca/\xD9V[`\0\x91\x82R` \x90\x91 \x01\x80T`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x94P\x90\x91P\x85\x16\x83\x14\x15a\x1DUW`\0\x93PPPPa\x11PV[\x80TCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a\x1D\x8FW\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua\x1EEV[\x80Tg\xFF\xFF\xFF\xFF\0\0\0\0\x19\x16`\x01` \x1BCc\xFF\xFF\xFF\xFF\x90\x81\x16\x82\x81\x02\x93\x90\x93\x17\x84U`\0\x8A\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x8D\x16\x84R\x82R\x80\x83 \x81Q``\x81\x01\x83R\x96\x87R\x86\x83\x01\x84\x81R`\x01`\x01``\x1B\x03\x8D\x81\x16\x93\x89\x01\x93\x84R\x82T`\x01\x81\x01\x84U\x92\x86R\x93\x90\x94 \x96Q\x96\x01\x80T\x93Q\x91Q\x96\x85\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x94\x16\x93\x90\x93\x17\x93\x16\x90\x93\x02\x91\x90\x91\x17`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B\x93\x90\x92\x16\x92\x90\x92\x02\x17\x90U[P[`@\x80Q`\xFF\x87\x16\x81R`\x01`\x01``\x1B\x03\x86\x16` \x82\x01R\x87\x91\x7F/R}R~\x95\xD8\xFE@\xAE\xC5Swt;\xB7y\x08}\xA3\xF6\xD0\xD0\x8F\x12\xE3dD\xDAb2}\x91\x01`@Q\x80\x91\x03\x90\xA2a\x1E\x97\x82\x85a'\xA7V[\x96\x95PPPPPPV[`\xFF\x82\x16`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a\x1E\xC5\x90\x84a0;V[\x81T\x81\x10a\x1E\xD5Wa\x1E\xD5a/\xD9V[\x90`\0R` `\0 \x01\x90P\x83`\0\x14\x15a\x1F\x04WT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\x0B\x11\x90PV[\x80T`\0\x90a\x1F#\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a'\xBFV[\x82T\x90\x91PCc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x16\x14\x15a\x1F`W\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua \x12V[\x81Tc\xFF\xFF\xFF\xFFC\x81\x16`\x01` \x1B\x81\x81\x02g\xFF\xFF\xFF\xFF\0\0\0\0\x19\x90\x94\x16\x93\x90\x93\x17\x85U`\xFF\x89\x16`\0\x90\x81R`\x01` \x81\x81R`@\x80\x84 \x81Q``\x81\x01\x83R\x95\x86R\x85\x83\x01\x85\x81R`\x01`\x01``\x1B\x03\x80\x8B\x16\x93\x88\x01\x93\x84R\x82T\x95\x86\x01\x83U\x91\x86R\x92\x90\x94 \x94Q\x94\x90\x92\x01\x80T\x91Q\x92Q\x90\x93\x16`\x01`@\x1B\x02`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x92\x86\x16\x90\x96\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x91\x16\x93\x90\x94\x16\x92\x90\x92\x17\x92\x90\x92\x17\x16\x91\x90\x91\x17\x90U[\x95\x94PPPPPV[`\xFF\x82\x16`\0\x81\x81R` \x81\x81R`@\x91\x82\x90 \x80Tk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01``\x1B\x03\x86\x16\x90\x81\x17\x90\x91U\x91Q\x91\x82R\x7F&\xEE\xCF\xF2\xB7\x0B\nq\x10O\xF4\xD9@\xBAqb\xD2:\x95\xC2Hw\x1F\xC4\x87\xA7\xBE\x17\xA5\x96\xB3\xCF\x91\x01`@Q\x80\x91\x03\x90\xA2PPV[`\0\x81Q\x11a \xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R`\0\x80Q` a2\x94\x839\x81Q\x91R`D\x82\x01R\x7F: no strategies provided\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06\x86V[\x80Q`\xFF\x83\x16`\0\x90\x81R`\x03` \x90\x81R`@\x90\x91 T\x90a!\x0C\x83\x83a1\xE0V[\x11\x15a!|W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`E`$\x82\x01R`\0\x80Q` a2\x94\x839\x81Q\x91R`D\x82\x01R\x7F: exceed MAX_WEIGHING_FUNCTION_L`d\x82\x01Rd\x08\xA9\xC8\xEA\x89`\xDB\x1B`\x84\x82\x01R`\xA4\x01a\x06\x86V[`\0[\x82\x81\x10\x15a$\xC0W`\0[a!\x94\x82\x84a1\xE0V[\x81\x10\x15a\"uW\x84\x82\x81Q\x81\x10a!\xADWa!\xADa/\xD9V[` \x02` \x01\x01Q`\0\x01Q`\x01`\x01`\xA0\x1B\x03\x16`\x03`\0\x88`\xFF\x16`\xFF\x16\x81R` \x01\x90\x81R` \x01`\0 \x82\x81T\x81\x10a!\xECWa!\xECa/\xD9V[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\"cW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R`\0\x80Q` a2\x94\x839\x81Q\x91R`D\x82\x01R\x7F: cannot add same strategy 2x\0\0\0`d\x82\x01R`\x84\x01a\x06\x86V[\x80a\"m\x81a0 V[\x91PPa!\x8AV[P`\0\x84\x82\x81Q\x81\x10a\"\x8AWa\"\x8Aa/\xD9V[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x11a#\x0FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R`\0\x80Q` a2\x94\x839\x81Q\x91R`D\x82\x01R\x7F: cannot add strategy with zero `d\x82\x01Re\x1D\xD9ZY\xDA\x1D`\xD2\x1B`\x84\x82\x01R`\xA4\x01a\x06\x86V[`\xFF\x85\x16`\0\x90\x81R`\x03` R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a#5Wa#5a/\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q\x82T`\x01\x81\x01\x84U`\0\x93\x84R\x82\x84 \x82Q\x92\x84\x01Q`\x01`\x01``\x1B\x03\x16`\x01`\xA0\x1B\x02`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x92\x90\x92\x17\x91\x01U`\xFF\x87\x16\x82R`\x04\x90R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a#\x9AWa#\x9Aa/\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQ\x82T`\x01\x81\x01\x84U`\0\x93\x84R\x91\x90\x92 \x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90U\x83Q`\xFF\x86\x16\x90\x7F\x10V^V\xCA\xCB\xF3.\xCA&yE\xF0T\xFE\xC0.Yu\x002\xD1\x13\xD30!\x82\xAD\x96\x7FT\x04\x90\x86\x90\x84\x90\x81\x10a$\x11Wa$\x11a/\xD9V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQ`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R\x01`@Q\x80\x91\x03\x90\xA2\x84`\xFF\x16\x7F\x11\xA5d\x13\"\xDA\x1D\xFFV\xA4\xB6n\xAA\xC3\x1F\xFAFR\x95\xEC\xE9\x07\xCD\x1647y;M\0\x9Au\x85\x83\x81Q\x81\x10a$nWa$na/\xD9V[` \x02` \x01\x01Q`\0\x01Q\x86\x84\x81Q\x81\x10a$\x8CWa$\x8Ca/\xD9V[` \x02` \x01\x01Q` \x01Q`@Qa$\xA6\x92\x91\x90a(HV[`@Q\x80\x91\x03\x90\xA2\x80a$\xB8\x81a0 V[\x91PPa!\x7FV[PPPPPV[\x81`\0\x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10\x15a%lW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`V`$\x82\x01R\x7FStakeRegistry._validateStakeUpda`D\x82\x01R\x7FteAtBlockNumber: stakeUpdate is `d\x82\x01Ru397\xB6\x900\xB3:2\xB9\x10167\xB1\xB5\xA7:\xB6\xB12\xB9`Q\x1B`\x84\x82\x01R`\xA4\x01a\x06\x86V[` \x82\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a%\x92WP\x81` \x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10[a&=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`j`$\x82\x01R\x7FStakeRegistry._validateStakeUpda`D\x82\x01R\x7FteAtBlockNumber: there is a newe`d\x82\x01R\x7Fr stakeUpdate available before b`\x84\x82\x01Ri67\xB1\xB5\xA7:\xB6\xB12\xB9`\xB1\x1B`\xA4\x82\x01R`\xC4\x01a\x06\x86V[PPV[`\0\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a&\xE2W`\0\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x90 c\xFF\xFF\xFF\xFF\x85\x16\x90a&\x95`\x01\x84a0;V[\x81T\x81\x10a&\xA5Wa&\xA5a/\xD9V[`\0\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a&\xD0Wa&\xC7`\x01\x82a0;V[\x92PPPa\x11PV[\x80a&\xDA\x81a1\xF8V[\x91PPa&`V[P`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x81`$\x82\x01R\x7FStakeRegistry._getStakeUpdateInd`D\x82\x01R\x7FexForOperatorAtBlockNumber: no s`d\x82\x01R\x7Ftake update found for operatorId`\x84\x82\x01R\x7F and quorumNumber at block numbe`\xA4\x82\x01R`9`\xF9\x1B`\xC4\x82\x01R`\xE4\x01a\x06\x86V[`\0a\x11P`\x01`\x01``\x1B\x03\x80\x85\x16\x90\x84\x16a2\x0FV[`\0\x80\x82\x12\x15a'\xE3Wa'\xD2\x82a2NV[a'\xDC\x90\x84a2kV[\x90Pa\x0B\x11V[a'\xDC\x82\x84a1\x98V[\x805`\xFF\x81\x16\x81\x14a'\xFEW`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a(\x15W`\0\x80\xFD[a\x11P\x82a'\xEDV[`\0\x80`@\x83\x85\x03\x12\x15a(1W`\0\x80\xFD[a(:\x83a'\xEDV[\x94` \x93\x90\x93\x015\x93PPPV[`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x82R`\x01`\x01``\x1B\x03\x16` \x82\x01R`@\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x18DW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a(\x92W`\0\x80\xFD[a(\x9B\x83a'\xEDV[\x91P` \x83\x015a(\xAB\x81a(jV[\x80\x91PP\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a(\xC8W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xDFW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x1A>W`\0\x80\xFD[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a)\x12W`\0\x80\xFD[a)\x1B\x86a'\xEDV[\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a)7W`\0\x80\xFD[a)C\x89\x83\x8A\x01a(\xB6V[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a)\\W`\0\x80\xFD[Pa)i\x88\x82\x89\x01a(\xB6V[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a)\x8CW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a)\xA3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x1A>W`\0\x80\xFD[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a)\xD1W`\0\x80\xFD[\x845a)\xDC\x81a(jV[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a)\xFEW`\0\x80\xFD[a*\n\x87\x82\x88\x01a)zV[\x95\x98\x94\x97P\x95PPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a*OW\x81Q`\x01`\x01``\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a**V[P\x94\x95\x94PPPPPV[`@\x81R`\0a*m`@\x83\x01\x85a*\x16V[\x82\x81\x03` \x84\x01Ra \x12\x81\x85a*\x16V[`\0\x80`@\x83\x85\x03\x12\x15a*\x92W`\0\x80\xFD[\x825\x91Pa*\xA2` \x84\x01a'\xEDV[\x90P\x92P\x92\x90PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a+\x17Wa+\x04\x83\x85Qc\xFF\xFF\xFF\xFF\x80\x82Q\x16\x83R\x80` \x83\x01Q\x16` \x84\x01RP`\x01`\x01``\x1B\x03`@\x82\x01Q\x16`@\x83\x01RPPV[\x92\x84\x01\x92``\x92\x90\x92\x01\x91`\x01\x01a*\xC7V[P\x90\x96\x95PPPPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+[Wa+[a+#V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\x89Wa+\x89a+#V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a+\xAAWa+\xAAa+#V[P`\x05\x1B` \x01\x90V[`\0\x80`@\x83\x85\x03\x12\x15a+\xC7W`\0\x80\xFD[a+\xD0\x83a'\xEDV[\x91P` \x80\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xECW`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a+\xFDW`\0\x80\xFD[\x805a,\x10a,\x0B\x82a+\x91V[a+aV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x88\x83\x11\x15a,/W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a,MW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a,4V[\x80\x95PPPPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a'\xFEW`\0\x80\xFD[`\0\x80`\0`@\x84\x86\x03\x12\x15a,\x85W`\0\x80\xFD[a,\x8E\x84a,\\V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xA9W`\0\x80\xFD[a,\xB5\x86\x82\x87\x01a)zV[\x94\x97\x90\x96P\x93\x94PPPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a+\x17W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a,\xDEV[`\0\x80`\0``\x84\x86\x03\x12\x15a-\x15W`\0\x80\xFD[a-\x1E\x84a'\xEDV[\x95` \x85\x015\x95P`@\x90\x94\x015\x93\x92PPPV[\x81Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x84\x01Q\x90\x91\x16\x90\x82\x01R`@\x80\x83\x01Q`\x01`\x01``\x1B\x03\x16\x90\x82\x01R``\x81\x01a\x0B\x11V[\x805`\x01`\x01``\x1B\x03\x81\x16\x81\x14a'\xFEW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a-\x92W`\0\x80\xFD[a-\x9B\x83a'\xEDV[\x91Pa*\xA2` \x84\x01a-hV[`\0\x80`\0`@\x84\x86\x03\x12\x15a-\xBEW`\0\x80\xFD[\x835\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xA9W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a-\xECW`\0\x80\xFD[\x815` a-\xFCa,\x0B\x83a+\x91V[\x82\x81R`\x06\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a.\x1BW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a.jW`@\x81\x89\x03\x12\x15a.8W`\0\x80\x81\xFD[a.@a+9V[\x815a.K\x81a(jV[\x81Ra.X\x82\x86\x01a-hV[\x81\x86\x01R\x83R\x91\x83\x01\x91`@\x01a.\x1FV[P\x96\x95PPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a.\x88W`\0\x80\xFD[a.\x91\x83a'\xEDV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xACW`\0\x80\xFD[a.\xB8\x85\x82\x86\x01a-\xDBV[\x91PP\x92P\x92\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a.\xD7W`\0\x80\xFD[a.\xE0\x84a'\xEDV[\x92Pa.\xEE` \x85\x01a,\\V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`\0``\x84\x86\x03\x12\x15a/\x13W`\0\x80\xFD[\x835\x92Pa/#` \x85\x01a'\xEDV[\x91Pa/1`@\x85\x01a,\\V[\x90P\x92P\x92P\x92V[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a/PW`\0\x80\xFD[a/Y\x85a'\xEDV[\x93Pa/g` \x86\x01a,\\V[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a/\x91W`\0\x80\xFD[a/\x9A\x84a'\xEDV[\x92Pa/\xA8` \x85\x01a-hV[\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xC3W`\0\x80\xFD[a/\xCF\x86\x82\x87\x01a-\xDBV[\x91PP\x92P\x92P\x92V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a0\x01W`\0\x80\xFD[a\x11P\x82a-hV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a04Wa04a0\nV[P`\x01\x01\x90V[`\0\x82\x82\x10\x15a0MWa0Ma0\nV[P\x03\x90V[cNH{q`\xE0\x1B`\0R`1`\x04R`$`\0\xFD[`\0`@\x82\x01`\x01\x80`\xA0\x1B\x03\x80\x86\x16\x84R` `@\x81\x86\x01R\x82\x86T\x80\x85R``\x87\x01\x91P\x87`\0R\x82`\0 \x94P`\0[\x81\x81\x10\x15a0\xB9W\x85T\x85\x16\x83R`\x01\x95\x86\x01\x95\x92\x84\x01\x92\x01a0\x9BV[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a0\xDAW`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xF0W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a1\x01W`\0\x80\xFD[\x80Qa1\x0Fa,\x0B\x82a+\x91V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a1.W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a1LW\x83Q\x82R\x92\x84\x01\x92\x90\x84\x01\x90a13V[\x97\x96PPPPPPPV[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a1qWa1qa0\nV[P\x02\x90V[`\0\x82a1\x93WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0`\x01`\x01``\x1B\x03\x80\x83\x16\x81\x85\x16\x80\x83\x03\x82\x11\x15a1\xBAWa1\xBAa0\nV[\x01\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a1\xD5W`\0\x80\xFD[\x81Qa\x11P\x81a(jV[`\0\x82\x19\x82\x11\x15a1\xF3Wa1\xF3a0\nV[P\x01\x90V[`\0\x81a2\x07Wa2\x07a0\nV[P`\0\x19\x01\x90V[`\0\x80\x83\x12\x80\x15`\x01`\xFF\x1B\x85\x01\x84\x12\x16\x15a2-Wa2-a0\nV[`\x01`\x01`\xFF\x1B\x03\x84\x01\x83\x13\x81\x16\x15a2HWa2Ha0\nV[PP\x03\x90V[`\0`\x01`\xFF\x1B\x82\x14\x15a2dWa2da0\nV[P`\0\x03\x90V[`\0`\x01`\x01``\x1B\x03\x83\x81\x16\x90\x83\x16\x81\x81\x10\x15a2\x8BWa2\x8Ba0\nV[\x03\x93\x92PPPV\xFEStakeRegistry._addStrategyParams\xA2dipfsX\"\x12 U\xBFx\xA9\xAD\xDC\xFCS\xE6h\xF5\xD4\xAA4i;\x1A3\xCDU\xFA\xCC\x1B,S\xFB\xB2\xB0o\xA0'\xBAdsolcC\0\x08\x0C\x003", + ); + /**Event with signature `MinimumStakeForQuorumUpdated(uint8,uint96)` and selector `0x26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf`. + ```solidity + event MinimumStakeForQuorumUpdated(uint8 indexed quorumNumber, uint96 minimumStake); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct MinimumStakeForQuorumUpdated { + #[allow(missing_docs)] + pub quorumNumber: u8, + #[allow(missing_docs)] + pub minimumStake: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for MinimumStakeForQuorumUpdated { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + const SIGNATURE: &'static str = "MinimumStakeForQuorumUpdated(uint8,uint96)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 38u8, 238u8, 207u8, 242u8, 183u8, 11u8, 10u8, 113u8, 16u8, 79u8, 244u8, 217u8, + 64u8, 186u8, 113u8, 98u8, 210u8, 58u8, 149u8, 194u8, 72u8, 119u8, 31u8, 196u8, + 135u8, 167u8, 190u8, 23u8, 165u8, 150u8, 179u8, 207u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + quorumNumber: topics.1, + minimumStake: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.minimumStake, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for MinimumStakeForQuorumUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&MinimumStakeForQuorumUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &MinimumStakeForQuorumUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorStakeUpdate(bytes32,uint8,uint96)` and selector `0x2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d`. + ```solidity + event OperatorStakeUpdate(bytes32 indexed operatorId, uint8 quorumNumber, uint96 stake); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorStakeUpdate { + #[allow(missing_docs)] + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub quorumNumber: u8, + #[allow(missing_docs)] + pub stake: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorStakeUpdate { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<96>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + const SIGNATURE: &'static str = "OperatorStakeUpdate(bytes32,uint8,uint96)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 47u8, 82u8, 125u8, 82u8, 126u8, 149u8, 216u8, 254u8, 64u8, 174u8, 197u8, 83u8, + 119u8, 116u8, 59u8, 183u8, 121u8, 8u8, 125u8, 163u8, 246u8, 208u8, 208u8, + 143u8, 18u8, 227u8, 100u8, 68u8, 218u8, 98u8, 50u8, 125u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operatorId: topics.1, + quorumNumber: data.0, + stake: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.stake, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.operatorId.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.operatorId); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorStakeUpdate { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorStakeUpdate> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorStakeUpdate) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `QuorumCreated(uint8)` and selector `0x831a9c86c45bb303caf3f064be2bc2b9fd4ecf19e47c4ac02a61e75dabfe55b4`. + ```solidity + event QuorumCreated(uint8 indexed quorumNumber); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct QuorumCreated { + #[allow(missing_docs)] + pub quorumNumber: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for QuorumCreated { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + const SIGNATURE: &'static str = "QuorumCreated(uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 131u8, 26u8, 156u8, 134u8, 196u8, 91u8, 179u8, 3u8, 202u8, 243u8, 240u8, 100u8, + 190u8, 43u8, 194u8, 185u8, 253u8, 78u8, 207u8, 25u8, 228u8, 124u8, 74u8, 192u8, + 42u8, 97u8, 231u8, 93u8, 171u8, 254u8, 85u8, 180u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + quorumNumber: topics.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for QuorumCreated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&QuorumCreated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &QuorumCreated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `StrategyAddedToQuorum(uint8,address)` and selector `0x10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f5404`. + ```solidity + event StrategyAddedToQuorum(uint8 indexed quorumNumber, address strategy); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct StrategyAddedToQuorum { + #[allow(missing_docs)] + pub quorumNumber: u8, + #[allow(missing_docs)] + pub strategy: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for StrategyAddedToQuorum { + type DataTuple<'a> = (alloy::sol_types::sol_data::Address,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + const SIGNATURE: &'static str = "StrategyAddedToQuorum(uint8,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 16u8, 86u8, 94u8, 86u8, 202u8, 203u8, 243u8, 46u8, 202u8, 38u8, 121u8, 69u8, + 240u8, 84u8, 254u8, 192u8, 46u8, 89u8, 117u8, 0u8, 50u8, 209u8, 19u8, 211u8, + 48u8, 33u8, 130u8, 173u8, 150u8, 127u8, 84u8, 4u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + quorumNumber: topics.1, + strategy: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.strategy, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for StrategyAddedToQuorum { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&StrategyAddedToQuorum> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &StrategyAddedToQuorum) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `StrategyMultiplierUpdated(uint8,address,uint256)` and selector `0x11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75`. + ```solidity + event StrategyMultiplierUpdated(uint8 indexed quorumNumber, address strategy, uint256 multiplier); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct StrategyMultiplierUpdated { + #[allow(missing_docs)] + pub quorumNumber: u8, + #[allow(missing_docs)] + pub strategy: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub multiplier: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for StrategyMultiplierUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + const SIGNATURE: &'static str = "StrategyMultiplierUpdated(uint8,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 17u8, 165u8, 100u8, 19u8, 34u8, 218u8, 29u8, 255u8, 86u8, 164u8, 182u8, 110u8, + 170u8, 195u8, 31u8, 250u8, 70u8, 82u8, 149u8, 236u8, 233u8, 7u8, 205u8, 22u8, + 52u8, 55u8, 121u8, 59u8, 77u8, 0u8, 154u8, 117u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + quorumNumber: topics.1, + strategy: data.0, + multiplier: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.multiplier, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for StrategyMultiplierUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&StrategyMultiplierUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &StrategyMultiplierUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `StrategyRemovedFromQuorum(uint8,address)` and selector `0x31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f7`. + ```solidity + event StrategyRemovedFromQuorum(uint8 indexed quorumNumber, address strategy); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct StrategyRemovedFromQuorum { + #[allow(missing_docs)] + pub quorumNumber: u8, + #[allow(missing_docs)] + pub strategy: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for StrategyRemovedFromQuorum { + type DataTuple<'a> = (alloy::sol_types::sol_data::Address,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + const SIGNATURE: &'static str = "StrategyRemovedFromQuorum(uint8,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 49u8, 250u8, 46u8, 44u8, 210u8, 128u8, 201u8, 55u8, 94u8, 19u8, 255u8, 207u8, + 61u8, 129u8, 226u8, 55u8, 129u8, 0u8, 24u8, 110u8, 64u8, 88u8, 248u8, 211u8, + 221u8, 182u8, 144u8, 184u8, 45u8, 205u8, 49u8, 247u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + quorumNumber: topics.1, + strategy: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.strategy, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for StrategyRemovedFromQuorum { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&StrategyRemovedFromQuorum> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &StrategyRemovedFromQuorum) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. + ```solidity + constructor(address _registryCoordinator, address _delegationManager); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _registryCoordinator: alloy::sol_types::private::Address, + pub _delegationManager: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value._registryCoordinator, value._delegationManager) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _registryCoordinator: tuple.0, + _delegationManager: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._registryCoordinator, + ), + ::tokenize( + &self._delegationManager, + ), + ) + } + } + }; + /**Function with signature `MAX_WEIGHING_FUNCTION_LENGTH()` and selector `0x7c172347`. + ```solidity + function MAX_WEIGHING_FUNCTION_LENGTH() external view returns (uint8); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct MAX_WEIGHING_FUNCTION_LENGTHCall {} + ///Container type for the return parameters of the [`MAX_WEIGHING_FUNCTION_LENGTH()`](MAX_WEIGHING_FUNCTION_LENGTHCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct MAX_WEIGHING_FUNCTION_LENGTHReturn { + pub _0: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: MAX_WEIGHING_FUNCTION_LENGTHCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for MAX_WEIGHING_FUNCTION_LENGTHCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: MAX_WEIGHING_FUNCTION_LENGTHReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for MAX_WEIGHING_FUNCTION_LENGTHReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for MAX_WEIGHING_FUNCTION_LENGTHCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = MAX_WEIGHING_FUNCTION_LENGTHReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "MAX_WEIGHING_FUNCTION_LENGTH()"; + const SELECTOR: [u8; 4] = [124u8, 23u8, 35u8, 71u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `WEIGHTING_DIVISOR()` and selector `0x5e5a6775`. + ```solidity + function WEIGHTING_DIVISOR() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct WEIGHTING_DIVISORCall {} + ///Container type for the return parameters of the [`WEIGHTING_DIVISOR()`](WEIGHTING_DIVISORCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct WEIGHTING_DIVISORReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: WEIGHTING_DIVISORCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for WEIGHTING_DIVISORCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: WEIGHTING_DIVISORReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for WEIGHTING_DIVISORReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for WEIGHTING_DIVISORCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = WEIGHTING_DIVISORReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "WEIGHTING_DIVISOR()"; + const SELECTOR: [u8; 4] = [94u8, 90u8, 103u8, 117u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `addStrategies(uint8,(address,uint96)[])` and selector `0xc601527d`. + ```solidity + function addStrategies(uint8 quorumNumber, IStakeRegistry.StrategyParams[] memory _strategyParams) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct addStrategiesCall { + pub quorumNumber: u8, + pub _strategyParams: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`addStrategies(uint8,(address,uint96)[])`](addStrategiesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct addStrategiesReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u8, + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: addStrategiesCall) -> Self { + (value.quorumNumber, value._strategyParams) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for addStrategiesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + _strategyParams: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: addStrategiesReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for addStrategiesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for addStrategiesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Array, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = addStrategiesReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "addStrategies(uint8,(address,uint96)[])"; + const SELECTOR: [u8; 4] = [198u8, 1u8, 82u8, 125u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + as alloy_sol_types::SolType>::tokenize(&self._strategyParams), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `delegation()` and selector `0xdf5cf723`. + ```solidity + function delegation() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegationCall {} + ///Container type for the return parameters of the [`delegation()`](delegationCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for delegationCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = delegationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "delegation()"; + const SELECTOR: [u8; 4] = [223u8, 92u8, 247u8, 35u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `deregisterOperator(bytes32,bytes)` and selector `0xbd29b8cd`. + ```solidity + function deregisterOperator(bytes32 operatorId, bytes memory quorumNumbers) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`deregisterOperator(bytes32,bytes)`](deregisterOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorCall) -> Self { + (value.operatorId, value.quorumNumbers) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + quorumNumbers: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for deregisterOperatorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = deregisterOperatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "deregisterOperator(bytes32,bytes)"; + const SELECTOR: [u8; 4] = [189u8, 41u8, 184u8, 205u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getCurrentStake(bytes32,uint8)` and selector `0x5401ed27`. + ```solidity + function getCurrentStake(bytes32 operatorId, uint8 quorumNumber) external view returns (uint96); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getCurrentStakeCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`getCurrentStake(bytes32,uint8)`](getCurrentStakeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getCurrentStakeReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>, u8); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCurrentStakeCall) -> Self { + (value.operatorId, value.quorumNumber) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCurrentStakeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + quorumNumber: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U96,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCurrentStakeReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCurrentStakeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getCurrentStakeCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getCurrentStakeReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getCurrentStake(bytes32,uint8)"; + const SELECTOR: [u8; 4] = [84u8, 1u8, 237u8, 39u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getCurrentTotalStake(uint8)` and selector `0xd5eccc05`. + ```solidity + function getCurrentTotalStake(uint8 quorumNumber) external view returns (uint96); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getCurrentTotalStakeCall { + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`getCurrentTotalStake(uint8)`](getCurrentTotalStakeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getCurrentTotalStakeReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCurrentTotalStakeCall) -> Self { + (value.quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCurrentTotalStakeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U96,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCurrentTotalStakeReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCurrentTotalStakeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getCurrentTotalStakeCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getCurrentTotalStakeReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getCurrentTotalStake(uint8)"; + const SELECTOR: [u8; 4] = [213u8, 236u8, 204u8, 5u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getLatestStakeUpdate(bytes32,uint8)` and selector `0xf851e198`. + ```solidity + function getLatestStakeUpdate(bytes32 operatorId, uint8 quorumNumber) external view returns (IStakeRegistry.StakeUpdate memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLatestStakeUpdateCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`getLatestStakeUpdate(bytes32,uint8)`](getLatestStakeUpdateCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLatestStakeUpdateReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>, u8); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLatestStakeUpdateCall) -> Self { + (value.operatorId, value.quorumNumber) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLatestStakeUpdateCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + quorumNumber: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IStakeRegistry::StakeUpdate,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLatestStakeUpdateReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLatestStakeUpdateReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getLatestStakeUpdateCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getLatestStakeUpdateReturn; + type ReturnTuple<'a> = (IStakeRegistry::StakeUpdate,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getLatestStakeUpdate(bytes32,uint8)"; + const SELECTOR: [u8; 4] = [248u8, 81u8, 225u8, 152u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getStakeAtBlockNumber(bytes32,uint8,uint32)` and selector `0xfa28c627`. + ```solidity + function getStakeAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) external view returns (uint96); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeAtBlockNumberCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumber: u8, + pub blockNumber: u32, + } + ///Container type for the return parameters of the [`getStakeAtBlockNumber(bytes32,uint8,uint32)`](getStakeAtBlockNumberCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeAtBlockNumberReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>, u8, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeAtBlockNumberCall) -> Self { + (value.operatorId, value.quorumNumber, value.blockNumber) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeAtBlockNumberCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + quorumNumber: tuple.1, + blockNumber: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U96,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeAtBlockNumberReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeAtBlockNumberReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getStakeAtBlockNumberCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getStakeAtBlockNumberReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getStakeAtBlockNumber(bytes32,uint8,uint32)"; + const SELECTOR: [u8; 4] = [250u8, 40u8, 198u8, 39u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + as alloy_sol_types::SolType>::tokenize(&self.blockNumber), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getStakeAtBlockNumberAndIndex(uint8,uint32,bytes32,uint256)` and selector `0xf2be94ae`. + ```solidity + function getStakeAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, bytes32 operatorId, uint256 index) external view returns (uint96); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeAtBlockNumberAndIndexCall { + pub quorumNumber: u8, + pub blockNumber: u32, + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getStakeAtBlockNumberAndIndex(uint8,uint32,bytes32,uint256)`](getStakeAtBlockNumberAndIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeAtBlockNumberAndIndexReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u8, + u32, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeAtBlockNumberAndIndexCall) -> Self { + ( + value.quorumNumber, + value.blockNumber, + value.operatorId, + value.index, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeAtBlockNumberAndIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + blockNumber: tuple.1, + operatorId: tuple.2, + index: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U96,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeAtBlockNumberAndIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeAtBlockNumberAndIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getStakeAtBlockNumberAndIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getStakeAtBlockNumberAndIndexReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "getStakeAtBlockNumberAndIndex(uint8,uint32,bytes32,uint256)"; + const SELECTOR: [u8; 4] = [242u8, 190u8, 148u8, 174u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + as alloy_sol_types::SolType>::tokenize(&self.blockNumber), + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.index), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getStakeHistory(bytes32,uint8)` and selector `0x2cd95940`. + ```solidity + function getStakeHistory(bytes32 operatorId, uint8 quorumNumber) external view returns (IStakeRegistry.StakeUpdate[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeHistoryCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`getStakeHistory(bytes32,uint8)`](getStakeHistoryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeHistoryReturn { + pub _0: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>, u8); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeHistoryCall) -> Self { + (value.operatorId, value.quorumNumber) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeHistoryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + quorumNumber: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeHistoryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeHistoryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getStakeHistoryCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getStakeHistoryReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getStakeHistory(bytes32,uint8)"; + const SELECTOR: [u8; 4] = [44u8, 217u8, 89u8, 64u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getStakeHistoryLength(bytes32,uint8)` and selector `0x4bd26e09`. + ```solidity + function getStakeHistoryLength(bytes32 operatorId, uint8 quorumNumber) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeHistoryLengthCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`getStakeHistoryLength(bytes32,uint8)`](getStakeHistoryLengthCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeHistoryLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>, u8); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeHistoryLengthCall) -> Self { + (value.operatorId, value.quorumNumber) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeHistoryLengthCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + quorumNumber: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeHistoryLengthReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeHistoryLengthReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getStakeHistoryLengthCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getStakeHistoryLengthReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getStakeHistoryLength(bytes32,uint8)"; + const SELECTOR: [u8; 4] = [75u8, 210u8, 110u8, 9u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getStakeUpdateAtIndex(uint8,bytes32,uint256)` and selector `0xac6bfb03`. + ```solidity + function getStakeUpdateAtIndex(uint8 quorumNumber, bytes32 operatorId, uint256 index) external view returns (IStakeRegistry.StakeUpdate memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeUpdateAtIndexCall { + pub quorumNumber: u8, + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getStakeUpdateAtIndex(uint8,bytes32,uint256)`](getStakeUpdateAtIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u8, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeUpdateAtIndexCall) -> Self { + (value.quorumNumber, value.operatorId, value.index) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeUpdateAtIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + operatorId: tuple.1, + index: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IStakeRegistry::StakeUpdate,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeUpdateAtIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeUpdateAtIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getStakeUpdateAtIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getStakeUpdateAtIndexReturn; + type ReturnTuple<'a> = (IStakeRegistry::StakeUpdate,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getStakeUpdateAtIndex(uint8,bytes32,uint256)"; + const SELECTOR: [u8; 4] = [172u8, 107u8, 251u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.index), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getStakeUpdateIndexAtBlockNumber(bytes32,uint8,uint32)` and selector `0xdd9846b9`. + ```solidity + function getStakeUpdateIndexAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) external view returns (uint32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeUpdateIndexAtBlockNumberCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumber: u8, + pub blockNumber: u32, + } + ///Container type for the return parameters of the [`getStakeUpdateIndexAtBlockNumber(bytes32,uint8,uint32)`](getStakeUpdateIndexAtBlockNumberCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeUpdateIndexAtBlockNumberReturn { + pub _0: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>, u8, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeUpdateIndexAtBlockNumberCall) -> Self { + (value.operatorId, value.quorumNumber, value.blockNumber) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeUpdateIndexAtBlockNumberCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + quorumNumber: tuple.1, + blockNumber: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeUpdateIndexAtBlockNumberReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeUpdateIndexAtBlockNumberReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getStakeUpdateIndexAtBlockNumberCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getStakeUpdateIndexAtBlockNumberReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "getStakeUpdateIndexAtBlockNumber(bytes32,uint8,uint32)"; + const SELECTOR: [u8; 4] = [221u8, 152u8, 70u8, 185u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + as alloy_sol_types::SolType>::tokenize(&self.blockNumber), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getTotalStakeAtBlockNumberFromIndex(uint8,uint32,uint256)` and selector `0xc8294c56`. + ```solidity + function getTotalStakeAtBlockNumberFromIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) external view returns (uint96); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getTotalStakeAtBlockNumberFromIndexCall { + pub quorumNumber: u8, + pub blockNumber: u32, + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getTotalStakeAtBlockNumberFromIndex(uint8,uint32,uint256)`](getTotalStakeAtBlockNumberFromIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getTotalStakeAtBlockNumberFromIndexReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u8, + u32, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getTotalStakeAtBlockNumberFromIndexCall) -> Self { + (value.quorumNumber, value.blockNumber, value.index) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getTotalStakeAtBlockNumberFromIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + blockNumber: tuple.1, + index: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U96,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getTotalStakeAtBlockNumberFromIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getTotalStakeAtBlockNumberFromIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getTotalStakeAtBlockNumberFromIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getTotalStakeAtBlockNumberFromIndexReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "getTotalStakeAtBlockNumberFromIndex(uint8,uint32,uint256)"; + const SELECTOR: [u8; 4] = [200u8, 41u8, 76u8, 86u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.blockNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getTotalStakeHistoryLength(uint8)` and selector `0x0491b41c`. + ```solidity + function getTotalStakeHistoryLength(uint8 quorumNumber) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getTotalStakeHistoryLengthCall { + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`getTotalStakeHistoryLength(uint8)`](getTotalStakeHistoryLengthCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getTotalStakeHistoryLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getTotalStakeHistoryLengthCall) -> Self { + (value.quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getTotalStakeHistoryLengthCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getTotalStakeHistoryLengthReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getTotalStakeHistoryLengthReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getTotalStakeHistoryLengthCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getTotalStakeHistoryLengthReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getTotalStakeHistoryLength(uint8)"; + const SELECTOR: [u8; 4] = [4u8, 145u8, 180u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getTotalStakeIndicesAtBlockNumber(uint32,bytes)` and selector `0x81c07502`. + ```solidity + function getTotalStakeIndicesAtBlockNumber(uint32 blockNumber, bytes memory quorumNumbers) external view returns (uint32[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getTotalStakeIndicesAtBlockNumberCall { + pub blockNumber: u32, + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`getTotalStakeIndicesAtBlockNumber(uint32,bytes)`](getTotalStakeIndicesAtBlockNumberCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getTotalStakeIndicesAtBlockNumberReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32, alloy::sol_types::private::Bytes); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getTotalStakeIndicesAtBlockNumberCall) -> Self { + (value.blockNumber, value.quorumNumbers) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getTotalStakeIndicesAtBlockNumberCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + blockNumber: tuple.0, + quorumNumbers: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getTotalStakeIndicesAtBlockNumberReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getTotalStakeIndicesAtBlockNumberReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getTotalStakeIndicesAtBlockNumberCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getTotalStakeIndicesAtBlockNumberReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getTotalStakeIndicesAtBlockNumber(uint32,bytes)"; + const SELECTOR: [u8; 4] = [129u8, 192u8, 117u8, 2u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.blockNumber, + ), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getTotalStakeUpdateAtIndex(uint8,uint256)` and selector `0xb6904b78`. + ```solidity + function getTotalStakeUpdateAtIndex(uint8 quorumNumber, uint256 index) external view returns (IStakeRegistry.StakeUpdate memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getTotalStakeUpdateAtIndexCall { + pub quorumNumber: u8, + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getTotalStakeUpdateAtIndex(uint8,uint256)`](getTotalStakeUpdateAtIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getTotalStakeUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (u8, alloy::sol_types::private::primitives::aliases::U256); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getTotalStakeUpdateAtIndexCall) -> Self { + (value.quorumNumber, value.index) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getTotalStakeUpdateAtIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + index: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IStakeRegistry::StakeUpdate,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getTotalStakeUpdateAtIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getTotalStakeUpdateAtIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getTotalStakeUpdateAtIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getTotalStakeUpdateAtIndexReturn; + type ReturnTuple<'a> = (IStakeRegistry::StakeUpdate,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getTotalStakeUpdateAtIndex(uint8,uint256)"; + const SELECTOR: [u8; 4] = [182u8, 144u8, 75u8, 120u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `initializeQuorum(uint8,uint96,(address,uint96)[])` and selector `0xff694a77`. + ```solidity + function initializeQuorum(uint8 quorumNumber, uint96 minimumStake, IStakeRegistry.StrategyParams[] memory _strategyParams) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeQuorumCall { + pub quorumNumber: u8, + pub minimumStake: alloy::sol_types::private::primitives::aliases::U96, + pub _strategyParams: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`initializeQuorum(uint8,uint96,(address,uint96)[])`](initializeQuorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeQuorumReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<96>, + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u8, + alloy::sol_types::private::primitives::aliases::U96, + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeQuorumCall) -> Self { + ( + value.quorumNumber, + value.minimumStake, + value._strategyParams, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeQuorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + minimumStake: tuple.1, + _strategyParams: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeQuorumReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeQuorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for initializeQuorumCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<96>, + alloy::sol_types::sol_data::Array, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = initializeQuorumReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "initializeQuorum(uint8,uint96,(address,uint96)[])"; + const SELECTOR: [u8; 4] = [255u8, 105u8, 74u8, 119u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + as alloy_sol_types::SolType>::tokenize(&self.minimumStake), + as alloy_sol_types::SolType>::tokenize(&self._strategyParams), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `minimumStakeForQuorum(uint8)` and selector `0xc46778a5`. + ```solidity + function minimumStakeForQuorum(uint8) external view returns (uint96); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct minimumStakeForQuorumCall { + pub _0: u8, + } + ///Container type for the return parameters of the [`minimumStakeForQuorum(uint8)`](minimumStakeForQuorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct minimumStakeForQuorumReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: minimumStakeForQuorumCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for minimumStakeForQuorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U96,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: minimumStakeForQuorumReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for minimumStakeForQuorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for minimumStakeForQuorumCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = minimumStakeForQuorumReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "minimumStakeForQuorum(uint8)"; + const SELECTOR: [u8; 4] = [196u8, 103u8, 120u8, 165u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `modifyStrategyParams(uint8,uint256[],uint96[])` and selector `0x20b66298`. + ```solidity + function modifyStrategyParams(uint8 quorumNumber, uint256[] memory strategyIndices, uint96[] memory newMultipliers) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct modifyStrategyParamsCall { + pub quorumNumber: u8, + pub strategyIndices: + alloy::sol_types::private::Vec, + pub newMultipliers: + alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`modifyStrategyParams(uint8,uint256[],uint96[])`](modifyStrategyParamsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct modifyStrategyParamsReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u8, + alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: modifyStrategyParamsCall) -> Self { + ( + value.quorumNumber, + value.strategyIndices, + value.newMultipliers, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for modifyStrategyParamsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + strategyIndices: tuple.1, + newMultipliers: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: modifyStrategyParamsReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for modifyStrategyParamsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for modifyStrategyParamsCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = modifyStrategyParamsReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "modifyStrategyParams(uint8,uint256[],uint96[])"; + const SELECTOR: [u8; 4] = [32u8, 182u8, 98u8, 152u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + , + > as alloy_sol_types::SolType>::tokenize(&self.strategyIndices), + , + > as alloy_sol_types::SolType>::tokenize(&self.newMultipliers), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registerOperator(address,bytes32,bytes)` and selector `0x25504777`. + ```solidity + function registerOperator(address operator, bytes32 operatorId, bytes memory quorumNumbers) external returns (uint96[] memory, uint96[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorCall { + pub operator: alloy::sol_types::private::Address, + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`registerOperator(address,bytes32,bytes)`](registerOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorReturn { + pub _0: alloy::sol_types::private::Vec, + pub _1: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorCall) -> Self { + (value.operator, value.operatorId, value.quorumNumbers) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + operatorId: tuple.1, + quorumNumbers: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorReturn) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registerOperatorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registerOperatorReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registerOperator(address,bytes32,bytes)"; + const SELECTOR: [u8; 4] = [37u8, 80u8, 71u8, 119u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registryCoordinator()` and selector `0x6d14a987`. + ```solidity + function registryCoordinator() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registryCoordinatorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registryCoordinatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registryCoordinator()"; + const SELECTOR: [u8; 4] = [109u8, 20u8, 169u8, 135u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `removeStrategies(uint8,uint256[])` and selector `0x5f1f2d77`. + ```solidity + function removeStrategies(uint8 quorumNumber, uint256[] memory indicesToRemove) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct removeStrategiesCall { + pub quorumNumber: u8, + pub indicesToRemove: + alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`removeStrategies(uint8,uint256[])`](removeStrategiesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct removeStrategiesReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Array>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u8, + alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: removeStrategiesCall) -> Self { + (value.quorumNumber, value.indicesToRemove) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for removeStrategiesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + indicesToRemove: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: removeStrategiesReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for removeStrategiesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for removeStrategiesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Array>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = removeStrategiesReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "removeStrategies(uint8,uint256[])"; + const SELECTOR: [u8; 4] = [95u8, 31u8, 45u8, 119u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + , + > as alloy_sol_types::SolType>::tokenize(&self.indicesToRemove), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setMinimumStakeForQuorum(uint8,uint96)` and selector `0xbc9a40c3`. + ```solidity + function setMinimumStakeForQuorum(uint8 quorumNumber, uint96 minimumStake) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setMinimumStakeForQuorumCall { + pub quorumNumber: u8, + pub minimumStake: alloy::sol_types::private::primitives::aliases::U96, + } + ///Container type for the return parameters of the [`setMinimumStakeForQuorum(uint8,uint96)`](setMinimumStakeForQuorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setMinimumStakeForQuorumReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<96>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (u8, alloy::sol_types::private::primitives::aliases::U96); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setMinimumStakeForQuorumCall) -> Self { + (value.quorumNumber, value.minimumStake) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setMinimumStakeForQuorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + minimumStake: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setMinimumStakeForQuorumReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setMinimumStakeForQuorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setMinimumStakeForQuorumCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<96>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setMinimumStakeForQuorumReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setMinimumStakeForQuorum(uint8,uint96)"; + const SELECTOR: [u8; 4] = [188u8, 154u8, 64u8, 195u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.minimumStake, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `strategiesPerQuorum(uint8,uint256)` and selector `0x9f3ccf65`. + ```solidity + function strategiesPerQuorum(uint8, uint256) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategiesPerQuorumCall { + pub _0: u8, + pub _1: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`strategiesPerQuorum(uint8,uint256)`](strategiesPerQuorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategiesPerQuorumReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (u8, alloy::sol_types::private::primitives::aliases::U256); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategiesPerQuorumCall) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategiesPerQuorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategiesPerQuorumReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategiesPerQuorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for strategiesPerQuorumCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = strategiesPerQuorumReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "strategiesPerQuorum(uint8,uint256)"; + const SELECTOR: [u8; 4] = [159u8, 60u8, 207u8, 101u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._0, + ), + as alloy_sol_types::SolType>::tokenize( + &self._1, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `strategyParams(uint8,uint256)` and selector `0x08732461`. + ```solidity + function strategyParams(uint8, uint256) external view returns (address strategy, uint96 multiplier); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyParamsCall { + pub _0: u8, + pub _1: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`strategyParams(uint8,uint256)`](strategyParamsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyParamsReturn { + pub strategy: alloy::sol_types::private::Address, + pub multiplier: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (u8, alloy::sol_types::private::primitives::aliases::U256); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyParamsCall) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyParamsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<96>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U96, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyParamsReturn) -> Self { + (value.strategy, value.multiplier) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyParamsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategy: tuple.0, + multiplier: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for strategyParamsCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = strategyParamsReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<96>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "strategyParams(uint8,uint256)"; + const SELECTOR: [u8; 4] = [8u8, 115u8, 36u8, 97u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._0, + ), + as alloy_sol_types::SolType>::tokenize( + &self._1, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `strategyParamsByIndex(uint8,uint256)` and selector `0xadc804da`. + ```solidity + function strategyParamsByIndex(uint8 quorumNumber, uint256 index) external view returns (IStakeRegistry.StrategyParams memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyParamsByIndexCall { + pub quorumNumber: u8, + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`strategyParamsByIndex(uint8,uint256)`](strategyParamsByIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyParamsByIndexReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (u8, alloy::sol_types::private::primitives::aliases::U256); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyParamsByIndexCall) -> Self { + (value.quorumNumber, value.index) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyParamsByIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + index: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IStakeRegistry::StrategyParams,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyParamsByIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyParamsByIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for strategyParamsByIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = strategyParamsByIndexReturn; + type ReturnTuple<'a> = (IStakeRegistry::StrategyParams,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "strategyParamsByIndex(uint8,uint256)"; + const SELECTOR: [u8; 4] = [173u8, 200u8, 4u8, 218u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `strategyParamsLength(uint8)` and selector `0x3ca5a5f5`. + ```solidity + function strategyParamsLength(uint8 quorumNumber) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyParamsLengthCall { + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`strategyParamsLength(uint8)`](strategyParamsLengthCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyParamsLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyParamsLengthCall) -> Self { + (value.quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyParamsLengthCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyParamsLengthReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyParamsLengthReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for strategyParamsLengthCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = strategyParamsLengthReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "strategyParamsLength(uint8)"; + const SELECTOR: [u8; 4] = [60u8, 165u8, 165u8, 245u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateOperatorStake(address,bytes32,bytes)` and selector `0x66acfefe`. + ```solidity + function updateOperatorStake(address operator, bytes32 operatorId, bytes memory quorumNumbers) external returns (uint192); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorStakeCall { + pub operator: alloy::sol_types::private::Address, + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`updateOperatorStake(address,bytes32,bytes)`](updateOperatorStakeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorStakeReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U192, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorStakeCall) -> Self { + (value.operator, value.operatorId, value.quorumNumbers) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorStakeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + operatorId: tuple.1, + quorumNumbers: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<192>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U192,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorStakeReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorStakeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateOperatorStakeCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateOperatorStakeReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<192>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateOperatorStake(address,bytes32,bytes)"; + const SELECTOR: [u8; 4] = [102u8, 172u8, 254u8, 254u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `weightOfOperatorForQuorum(uint8,address)` and selector `0x1f9b74e0`. + ```solidity + function weightOfOperatorForQuorum(uint8 quorumNumber, address operator) external view returns (uint96); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct weightOfOperatorForQuorumCall { + pub quorumNumber: u8, + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`weightOfOperatorForQuorum(uint8,address)`](weightOfOperatorForQuorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct weightOfOperatorForQuorumReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8, alloy::sol_types::private::Address); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: weightOfOperatorForQuorumCall) -> Self { + (value.quorumNumber, value.operator) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for weightOfOperatorForQuorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + operator: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U96,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: weightOfOperatorForQuorumReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for weightOfOperatorForQuorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for weightOfOperatorForQuorumCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = weightOfOperatorForQuorumReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "weightOfOperatorForQuorum(uint8,address)"; + const SELECTOR: [u8; 4] = [31u8, 155u8, 116u8, 224u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`StakeRegistry`](self) function calls. + pub enum StakeRegistryCalls { + MAX_WEIGHING_FUNCTION_LENGTH(MAX_WEIGHING_FUNCTION_LENGTHCall), + WEIGHTING_DIVISOR(WEIGHTING_DIVISORCall), + addStrategies(addStrategiesCall), + delegation(delegationCall), + deregisterOperator(deregisterOperatorCall), + getCurrentStake(getCurrentStakeCall), + getCurrentTotalStake(getCurrentTotalStakeCall), + getLatestStakeUpdate(getLatestStakeUpdateCall), + getStakeAtBlockNumber(getStakeAtBlockNumberCall), + getStakeAtBlockNumberAndIndex(getStakeAtBlockNumberAndIndexCall), + getStakeHistory(getStakeHistoryCall), + getStakeHistoryLength(getStakeHistoryLengthCall), + getStakeUpdateAtIndex(getStakeUpdateAtIndexCall), + getStakeUpdateIndexAtBlockNumber(getStakeUpdateIndexAtBlockNumberCall), + getTotalStakeAtBlockNumberFromIndex(getTotalStakeAtBlockNumberFromIndexCall), + getTotalStakeHistoryLength(getTotalStakeHistoryLengthCall), + getTotalStakeIndicesAtBlockNumber(getTotalStakeIndicesAtBlockNumberCall), + getTotalStakeUpdateAtIndex(getTotalStakeUpdateAtIndexCall), + initializeQuorum(initializeQuorumCall), + minimumStakeForQuorum(minimumStakeForQuorumCall), + modifyStrategyParams(modifyStrategyParamsCall), + registerOperator(registerOperatorCall), + registryCoordinator(registryCoordinatorCall), + removeStrategies(removeStrategiesCall), + setMinimumStakeForQuorum(setMinimumStakeForQuorumCall), + strategiesPerQuorum(strategiesPerQuorumCall), + strategyParams(strategyParamsCall), + strategyParamsByIndex(strategyParamsByIndexCall), + strategyParamsLength(strategyParamsLengthCall), + updateOperatorStake(updateOperatorStakeCall), + weightOfOperatorForQuorum(weightOfOperatorForQuorumCall), + } + #[automatically_derived] + impl StakeRegistryCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [4u8, 145u8, 180u8, 28u8], + [8u8, 115u8, 36u8, 97u8], + [31u8, 155u8, 116u8, 224u8], + [32u8, 182u8, 98u8, 152u8], + [37u8, 80u8, 71u8, 119u8], + [44u8, 217u8, 89u8, 64u8], + [60u8, 165u8, 165u8, 245u8], + [75u8, 210u8, 110u8, 9u8], + [84u8, 1u8, 237u8, 39u8], + [94u8, 90u8, 103u8, 117u8], + [95u8, 31u8, 45u8, 119u8], + [102u8, 172u8, 254u8, 254u8], + [109u8, 20u8, 169u8, 135u8], + [124u8, 23u8, 35u8, 71u8], + [129u8, 192u8, 117u8, 2u8], + [159u8, 60u8, 207u8, 101u8], + [172u8, 107u8, 251u8, 3u8], + [173u8, 200u8, 4u8, 218u8], + [182u8, 144u8, 75u8, 120u8], + [188u8, 154u8, 64u8, 195u8], + [189u8, 41u8, 184u8, 205u8], + [196u8, 103u8, 120u8, 165u8], + [198u8, 1u8, 82u8, 125u8], + [200u8, 41u8, 76u8, 86u8], + [213u8, 236u8, 204u8, 5u8], + [221u8, 152u8, 70u8, 185u8], + [223u8, 92u8, 247u8, 35u8], + [242u8, 190u8, 148u8, 174u8], + [248u8, 81u8, 225u8, 152u8], + [250u8, 40u8, 198u8, 39u8], + [255u8, 105u8, 74u8, 119u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for StakeRegistryCalls { + const NAME: &'static str = "StakeRegistryCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 31usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::MAX_WEIGHING_FUNCTION_LENGTH(_) => { + ::SELECTOR + } + Self::WEIGHTING_DIVISOR(_) => { + ::SELECTOR + } + Self::addStrategies(_) => ::SELECTOR, + Self::delegation(_) => ::SELECTOR, + Self::deregisterOperator(_) => { + ::SELECTOR + } + Self::getCurrentStake(_) => { + ::SELECTOR + } + Self::getCurrentTotalStake(_) => { + ::SELECTOR + } + Self::getLatestStakeUpdate(_) => { + ::SELECTOR + } + Self::getStakeAtBlockNumber(_) => { + ::SELECTOR + } + Self::getStakeAtBlockNumberAndIndex(_) => { + ::SELECTOR + } + Self::getStakeHistory(_) => { + ::SELECTOR + } + Self::getStakeHistoryLength(_) => { + ::SELECTOR + } + Self::getStakeUpdateAtIndex(_) => { + ::SELECTOR + } + Self::getStakeUpdateIndexAtBlockNumber(_) => { + ::SELECTOR + } + Self::getTotalStakeAtBlockNumberFromIndex(_) => { + ::SELECTOR + } + Self::getTotalStakeHistoryLength(_) => { + ::SELECTOR + } + Self::getTotalStakeIndicesAtBlockNumber(_) => { + ::SELECTOR + } + Self::getTotalStakeUpdateAtIndex(_) => { + ::SELECTOR + } + Self::initializeQuorum(_) => { + ::SELECTOR + } + Self::minimumStakeForQuorum(_) => { + ::SELECTOR + } + Self::modifyStrategyParams(_) => { + ::SELECTOR + } + Self::registerOperator(_) => { + ::SELECTOR + } + Self::registryCoordinator(_) => { + ::SELECTOR + } + Self::removeStrategies(_) => { + ::SELECTOR + } + Self::setMinimumStakeForQuorum(_) => { + ::SELECTOR + } + Self::strategiesPerQuorum(_) => { + ::SELECTOR + } + Self::strategyParams(_) => { + ::SELECTOR + } + Self::strategyParamsByIndex(_) => { + ::SELECTOR + } + Self::strategyParamsLength(_) => { + ::SELECTOR + } + Self::updateOperatorStake(_) => { + ::SELECTOR + } + Self::weightOfOperatorForQuorum(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn getTotalStakeHistoryLength( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(StakeRegistryCalls::getTotalStakeHistoryLength) + } + getTotalStakeHistoryLength + }, + { + fn strategyParams( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryCalls::strategyParams) + } + strategyParams + }, + { + fn weightOfOperatorForQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryCalls::weightOfOperatorForQuorum) + } + weightOfOperatorForQuorum + }, + { + fn modifyStrategyParams( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryCalls::modifyStrategyParams) + } + modifyStrategyParams + }, + { + fn registerOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryCalls::registerOperator) + } + registerOperator + }, + { + fn getStakeHistory( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryCalls::getStakeHistory) + } + getStakeHistory + }, + { + fn strategyParamsLength( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryCalls::strategyParamsLength) + } + strategyParamsLength + }, + { + fn getStakeHistoryLength( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryCalls::getStakeHistoryLength) + } + getStakeHistoryLength + }, + { + fn getCurrentStake( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryCalls::getCurrentStake) + } + getCurrentStake + }, + { + fn WEIGHTING_DIVISOR( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryCalls::WEIGHTING_DIVISOR) + } + WEIGHTING_DIVISOR + }, + { + fn removeStrategies( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryCalls::removeStrategies) + } + removeStrategies + }, + { + fn updateOperatorStake( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryCalls::updateOperatorStake) + } + updateOperatorStake + }, + { + fn registryCoordinator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryCalls::registryCoordinator) + } + registryCoordinator + }, + { + fn MAX_WEIGHING_FUNCTION_LENGTH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(StakeRegistryCalls::MAX_WEIGHING_FUNCTION_LENGTH) + } + MAX_WEIGHING_FUNCTION_LENGTH + }, + { + fn getTotalStakeIndicesAtBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(StakeRegistryCalls::getTotalStakeIndicesAtBlockNumber) + } + getTotalStakeIndicesAtBlockNumber + }, + { + fn strategiesPerQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryCalls::strategiesPerQuorum) + } + strategiesPerQuorum + }, + { + fn getStakeUpdateAtIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryCalls::getStakeUpdateAtIndex) + } + getStakeUpdateAtIndex + }, + { + fn strategyParamsByIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryCalls::strategyParamsByIndex) + } + strategyParamsByIndex + }, + { + fn getTotalStakeUpdateAtIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(StakeRegistryCalls::getTotalStakeUpdateAtIndex) + } + getTotalStakeUpdateAtIndex + }, + { + fn setMinimumStakeForQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryCalls::setMinimumStakeForQuorum) + } + setMinimumStakeForQuorum + }, + { + fn deregisterOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryCalls::deregisterOperator) + } + deregisterOperator + }, + { + fn minimumStakeForQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryCalls::minimumStakeForQuorum) + } + minimumStakeForQuorum + }, + { + fn addStrategies( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryCalls::addStrategies) + } + addStrategies + }, + { + fn getTotalStakeAtBlockNumberFromIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(StakeRegistryCalls::getTotalStakeAtBlockNumberFromIndex) + } + getTotalStakeAtBlockNumberFromIndex + }, + { + fn getCurrentTotalStake( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryCalls::getCurrentTotalStake) + } + getCurrentTotalStake + }, + { + fn getStakeUpdateIndexAtBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(StakeRegistryCalls::getStakeUpdateIndexAtBlockNumber) + } + getStakeUpdateIndexAtBlockNumber + }, + { + fn delegation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StakeRegistryCalls::delegation) + } + delegation + }, + { + fn getStakeAtBlockNumberAndIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(StakeRegistryCalls::getStakeAtBlockNumberAndIndex) + } + getStakeAtBlockNumberAndIndex + }, + { + fn getLatestStakeUpdate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryCalls::getLatestStakeUpdate) + } + getLatestStakeUpdate + }, + { + fn getStakeAtBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryCalls::getStakeAtBlockNumber) + } + getStakeAtBlockNumber + }, + { + fn initializeQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryCalls::initializeQuorum) + } + initializeQuorum + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::MAX_WEIGHING_FUNCTION_LENGTH(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::WEIGHTING_DIVISOR(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::addStrategies(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::delegation(inner) => { + ::abi_encoded_size(inner) + } + Self::deregisterOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getCurrentStake(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getCurrentTotalStake(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getLatestStakeUpdate(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getStakeAtBlockNumber(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getStakeAtBlockNumberAndIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getStakeHistory(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getStakeHistoryLength(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getStakeUpdateAtIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getStakeUpdateIndexAtBlockNumber(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getTotalStakeAtBlockNumberFromIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getTotalStakeHistoryLength(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getTotalStakeIndicesAtBlockNumber(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getTotalStakeUpdateAtIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::initializeQuorum(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::minimumStakeForQuorum(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::modifyStrategyParams(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registerOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registryCoordinator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::removeStrategies(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setMinimumStakeForQuorum(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::strategiesPerQuorum(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::strategyParams(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::strategyParamsByIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::strategyParamsLength(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::updateOperatorStake(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::weightOfOperatorForQuorum(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::MAX_WEIGHING_FUNCTION_LENGTH(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::WEIGHTING_DIVISOR(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::addStrategies(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::delegation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::deregisterOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getCurrentStake(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getCurrentTotalStake(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getLatestStakeUpdate(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getStakeAtBlockNumber(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getStakeAtBlockNumberAndIndex(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getStakeHistory(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getStakeHistoryLength(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getStakeUpdateAtIndex(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getStakeUpdateIndexAtBlockNumber(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getTotalStakeAtBlockNumberFromIndex(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getTotalStakeHistoryLength(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getTotalStakeIndicesAtBlockNumber(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getTotalStakeUpdateAtIndex(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::initializeQuorum(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::minimumStakeForQuorum(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::modifyStrategyParams(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registerOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registryCoordinator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::removeStrategies(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setMinimumStakeForQuorum(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::strategiesPerQuorum(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::strategyParams(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::strategyParamsByIndex(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::strategyParamsLength(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::updateOperatorStake(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::weightOfOperatorForQuorum(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`StakeRegistry`](self) events. + pub enum StakeRegistryEvents { + MinimumStakeForQuorumUpdated(MinimumStakeForQuorumUpdated), + OperatorStakeUpdate(OperatorStakeUpdate), + QuorumCreated(QuorumCreated), + StrategyAddedToQuorum(StrategyAddedToQuorum), + StrategyMultiplierUpdated(StrategyMultiplierUpdated), + StrategyRemovedFromQuorum(StrategyRemovedFromQuorum), + } + #[automatically_derived] + impl StakeRegistryEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 16u8, 86u8, 94u8, 86u8, 202u8, 203u8, 243u8, 46u8, 202u8, 38u8, 121u8, 69u8, 240u8, + 84u8, 254u8, 192u8, 46u8, 89u8, 117u8, 0u8, 50u8, 209u8, 19u8, 211u8, 48u8, 33u8, + 130u8, 173u8, 150u8, 127u8, 84u8, 4u8, + ], + [ + 17u8, 165u8, 100u8, 19u8, 34u8, 218u8, 29u8, 255u8, 86u8, 164u8, 182u8, 110u8, + 170u8, 195u8, 31u8, 250u8, 70u8, 82u8, 149u8, 236u8, 233u8, 7u8, 205u8, 22u8, 52u8, + 55u8, 121u8, 59u8, 77u8, 0u8, 154u8, 117u8, + ], + [ + 38u8, 238u8, 207u8, 242u8, 183u8, 11u8, 10u8, 113u8, 16u8, 79u8, 244u8, 217u8, + 64u8, 186u8, 113u8, 98u8, 210u8, 58u8, 149u8, 194u8, 72u8, 119u8, 31u8, 196u8, + 135u8, 167u8, 190u8, 23u8, 165u8, 150u8, 179u8, 207u8, + ], + [ + 47u8, 82u8, 125u8, 82u8, 126u8, 149u8, 216u8, 254u8, 64u8, 174u8, 197u8, 83u8, + 119u8, 116u8, 59u8, 183u8, 121u8, 8u8, 125u8, 163u8, 246u8, 208u8, 208u8, 143u8, + 18u8, 227u8, 100u8, 68u8, 218u8, 98u8, 50u8, 125u8, + ], + [ + 49u8, 250u8, 46u8, 44u8, 210u8, 128u8, 201u8, 55u8, 94u8, 19u8, 255u8, 207u8, 61u8, + 129u8, 226u8, 55u8, 129u8, 0u8, 24u8, 110u8, 64u8, 88u8, 248u8, 211u8, 221u8, + 182u8, 144u8, 184u8, 45u8, 205u8, 49u8, 247u8, + ], + [ + 131u8, 26u8, 156u8, 134u8, 196u8, 91u8, 179u8, 3u8, 202u8, 243u8, 240u8, 100u8, + 190u8, 43u8, 194u8, 185u8, 253u8, 78u8, 207u8, 25u8, 228u8, 124u8, 74u8, 192u8, + 42u8, 97u8, 231u8, 93u8, 171u8, 254u8, 85u8, 180u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for StakeRegistryEvents { + const NAME: &'static str = "StakeRegistryEvents"; + const COUNT: usize = 6usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some( + ::SIGNATURE_HASH, + ) => ::decode_raw_log( + topics, data, validate, + ) + .map(Self::MinimumStakeForQuorumUpdated), + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorStakeUpdate) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::QuorumCreated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::StrategyAddedToQuorum) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::StrategyMultiplierUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::StrategyRemovedFromQuorum) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for StakeRegistryEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::MinimumStakeForQuorumUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorStakeUpdate(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::QuorumCreated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::StrategyAddedToQuorum(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::StrategyMultiplierUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::StrategyRemovedFromQuorum(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::MinimumStakeForQuorumUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorStakeUpdate(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::QuorumCreated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::StrategyAddedToQuorum(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::StrategyMultiplierUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::StrategyRemovedFromQuorum(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`StakeRegistry`](self) contract instance. + + See the [wrapper's documentation](`StakeRegistryInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> StakeRegistryInstance { + StakeRegistryInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _registryCoordinator: alloy::sol_types::private::Address, + _delegationManager: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future>> + { + StakeRegistryInstance::::deploy(provider, _registryCoordinator, _delegationManager) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _registryCoordinator: alloy::sol_types::private::Address, + _delegationManager: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + StakeRegistryInstance::::deploy_builder( + provider, + _registryCoordinator, + _delegationManager, + ) + } + /**A [`StakeRegistry`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StakeRegistry`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct StakeRegistryInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StakeRegistryInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StakeRegistryInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StakeRegistryInstance + { + /**Creates a new wrapper around an on-chain [`StakeRegistry`](self) contract instance. + + See the [wrapper's documentation](`StakeRegistryInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _registryCoordinator: alloy::sol_types::private::Address, + _delegationManager: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = + Self::deploy_builder(provider, _registryCoordinator, _delegationManager); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _registryCoordinator: alloy::sol_types::private::Address, + _delegationManager: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode(&constructorCall { + _registryCoordinator, + _delegationManager, + })[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl StakeRegistryInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StakeRegistryInstance { + StakeRegistryInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StakeRegistryInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`MAX_WEIGHING_FUNCTION_LENGTH`] function. + pub fn MAX_WEIGHING_FUNCTION_LENGTH( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&MAX_WEIGHING_FUNCTION_LENGTHCall {}) + } + ///Creates a new call builder for the [`WEIGHTING_DIVISOR`] function. + pub fn WEIGHTING_DIVISOR( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&WEIGHTING_DIVISORCall {}) + } + ///Creates a new call builder for the [`addStrategies`] function. + pub fn addStrategies( + &self, + quorumNumber: u8, + _strategyParams: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&addStrategiesCall { + quorumNumber, + _strategyParams, + }) + } + ///Creates a new call builder for the [`delegation`] function. + pub fn delegation(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&delegationCall {}) + } + ///Creates a new call builder for the [`deregisterOperator`] function. + pub fn deregisterOperator( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumbers: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&deregisterOperatorCall { + operatorId, + quorumNumbers, + }) + } + ///Creates a new call builder for the [`getCurrentStake`] function. + pub fn getCurrentStake( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getCurrentStakeCall { + operatorId, + quorumNumber, + }) + } + ///Creates a new call builder for the [`getCurrentTotalStake`] function. + pub fn getCurrentTotalStake( + &self, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getCurrentTotalStakeCall { quorumNumber }) + } + ///Creates a new call builder for the [`getLatestStakeUpdate`] function. + pub fn getLatestStakeUpdate( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getLatestStakeUpdateCall { + operatorId, + quorumNumber, + }) + } + ///Creates a new call builder for the [`getStakeAtBlockNumber`] function. + pub fn getStakeAtBlockNumber( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumber: u8, + blockNumber: u32, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getStakeAtBlockNumberCall { + operatorId, + quorumNumber, + blockNumber, + }) + } + ///Creates a new call builder for the [`getStakeAtBlockNumberAndIndex`] function. + pub fn getStakeAtBlockNumberAndIndex( + &self, + quorumNumber: u8, + blockNumber: u32, + operatorId: alloy::sol_types::private::FixedBytes<32>, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getStakeAtBlockNumberAndIndexCall { + quorumNumber, + blockNumber, + operatorId, + index, + }) + } + ///Creates a new call builder for the [`getStakeHistory`] function. + pub fn getStakeHistory( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getStakeHistoryCall { + operatorId, + quorumNumber, + }) + } + ///Creates a new call builder for the [`getStakeHistoryLength`] function. + pub fn getStakeHistoryLength( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getStakeHistoryLengthCall { + operatorId, + quorumNumber, + }) + } + ///Creates a new call builder for the [`getStakeUpdateAtIndex`] function. + pub fn getStakeUpdateAtIndex( + &self, + quorumNumber: u8, + operatorId: alloy::sol_types::private::FixedBytes<32>, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getStakeUpdateAtIndexCall { + quorumNumber, + operatorId, + index, + }) + } + ///Creates a new call builder for the [`getStakeUpdateIndexAtBlockNumber`] function. + pub fn getStakeUpdateIndexAtBlockNumber( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumber: u8, + blockNumber: u32, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&getStakeUpdateIndexAtBlockNumberCall { + operatorId, + quorumNumber, + blockNumber, + }) + } + ///Creates a new call builder for the [`getTotalStakeAtBlockNumberFromIndex`] function. + pub fn getTotalStakeAtBlockNumberFromIndex( + &self, + quorumNumber: u8, + blockNumber: u32, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&getTotalStakeAtBlockNumberFromIndexCall { + quorumNumber, + blockNumber, + index, + }) + } + ///Creates a new call builder for the [`getTotalStakeHistoryLength`] function. + pub fn getTotalStakeHistoryLength( + &self, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getTotalStakeHistoryLengthCall { quorumNumber }) + } + ///Creates a new call builder for the [`getTotalStakeIndicesAtBlockNumber`] function. + pub fn getTotalStakeIndicesAtBlockNumber( + &self, + blockNumber: u32, + quorumNumbers: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&getTotalStakeIndicesAtBlockNumberCall { + blockNumber, + quorumNumbers, + }) + } + ///Creates a new call builder for the [`getTotalStakeUpdateAtIndex`] function. + pub fn getTotalStakeUpdateAtIndex( + &self, + quorumNumber: u8, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getTotalStakeUpdateAtIndexCall { + quorumNumber, + index, + }) + } + ///Creates a new call builder for the [`initializeQuorum`] function. + pub fn initializeQuorum( + &self, + quorumNumber: u8, + minimumStake: alloy::sol_types::private::primitives::aliases::U96, + _strategyParams: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initializeQuorumCall { + quorumNumber, + minimumStake, + _strategyParams, + }) + } + ///Creates a new call builder for the [`minimumStakeForQuorum`] function. + pub fn minimumStakeForQuorum( + &self, + _0: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&minimumStakeForQuorumCall { _0 }) + } + ///Creates a new call builder for the [`modifyStrategyParams`] function. + pub fn modifyStrategyParams( + &self, + quorumNumber: u8, + strategyIndices: alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + newMultipliers: alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U96, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&modifyStrategyParamsCall { + quorumNumber, + strategyIndices, + newMultipliers, + }) + } + ///Creates a new call builder for the [`registerOperator`] function. + pub fn registerOperator( + &self, + operator: alloy::sol_types::private::Address, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumbers: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterOperatorCall { + operator, + operatorId, + quorumNumbers, + }) + } + ///Creates a new call builder for the [`registryCoordinator`] function. + pub fn registryCoordinator( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®istryCoordinatorCall {}) + } + ///Creates a new call builder for the [`removeStrategies`] function. + pub fn removeStrategies( + &self, + quorumNumber: u8, + indicesToRemove: alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&removeStrategiesCall { + quorumNumber, + indicesToRemove, + }) + } + ///Creates a new call builder for the [`setMinimumStakeForQuorum`] function. + pub fn setMinimumStakeForQuorum( + &self, + quorumNumber: u8, + minimumStake: alloy::sol_types::private::primitives::aliases::U96, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setMinimumStakeForQuorumCall { + quorumNumber, + minimumStake, + }) + } + ///Creates a new call builder for the [`strategiesPerQuorum`] function. + pub fn strategiesPerQuorum( + &self, + _0: u8, + _1: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&strategiesPerQuorumCall { _0, _1 }) + } + ///Creates a new call builder for the [`strategyParams`] function. + pub fn strategyParams( + &self, + _0: u8, + _1: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&strategyParamsCall { _0, _1 }) + } + ///Creates a new call builder for the [`strategyParamsByIndex`] function. + pub fn strategyParamsByIndex( + &self, + quorumNumber: u8, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&strategyParamsByIndexCall { + quorumNumber, + index, + }) + } + ///Creates a new call builder for the [`strategyParamsLength`] function. + pub fn strategyParamsLength( + &self, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&strategyParamsLengthCall { quorumNumber }) + } + ///Creates a new call builder for the [`updateOperatorStake`] function. + pub fn updateOperatorStake( + &self, + operator: alloy::sol_types::private::Address, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumbers: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateOperatorStakeCall { + operator, + operatorId, + quorumNumbers, + }) + } + ///Creates a new call builder for the [`weightOfOperatorForQuorum`] function. + pub fn weightOfOperatorForQuorum( + &self, + quorumNumber: u8, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&weightOfOperatorForQuorumCall { + quorumNumber, + operator, + }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StakeRegistryInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`MinimumStakeForQuorumUpdated`] event. + pub fn MinimumStakeForQuorumUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorStakeUpdate`] event. + pub fn OperatorStakeUpdate_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`QuorumCreated`] event. + pub fn QuorumCreated_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`StrategyAddedToQuorum`] event. + pub fn StrategyAddedToQuorum_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`StrategyMultiplierUpdated`] event. + pub fn StrategyMultiplierUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`StrategyRemovedFromQuorum`] event. + pub fn StrategyRemovedFromQuorum_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/stakeregistrystorage.rs b/crates/utils/src/stakeregistrystorage.rs new file mode 100644 index 00000000..489fa6e9 --- /dev/null +++ b/crates/utils/src/stakeregistrystorage.rs @@ -0,0 +1,7341 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library IStakeRegistry { + struct StakeUpdate { uint32 updateBlockNumber; uint32 nextUpdateBlockNumber; uint96 stake; } + struct StrategyParams { address strategy; uint96 multiplier; } +} +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IStakeRegistry { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct StakeUpdate { uint32 updateBlockNumber; uint32 nextUpdateBlockNumber; uint96 stake; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct StakeUpdate { + pub updateBlockNumber: u32, + pub nextUpdateBlockNumber: u32, + pub stake: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<96>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u32, + u32, + alloy::sol_types::private::primitives::aliases::U96, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: StakeUpdate) -> Self { + ( + value.updateBlockNumber, + value.nextUpdateBlockNumber, + value.stake, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for StakeUpdate { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + updateBlockNumber: tuple.0, + nextUpdateBlockNumber: tuple.1, + stake: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for StakeUpdate { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for StakeUpdate { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.updateBlockNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.nextUpdateBlockNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.stake, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for StakeUpdate { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for StakeUpdate { + const NAME: &'static str = "StakeUpdate"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "StakeUpdate(uint32 updateBlockNumber,uint32 nextUpdateBlockNumber,uint96 stake)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word( + &self.updateBlockNumber, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.nextUpdateBlockNumber, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.stake) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for StakeUpdate { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.updateBlockNumber, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.nextUpdateBlockNumber, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.stake) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.updateBlockNumber, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nextUpdateBlockNumber, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.stake, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct StrategyParams { address strategy; uint96 multiplier; } + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct StrategyParams { + pub strategy: alloy::sol_types::private::Address, + pub multiplier: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<96>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U96, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: StrategyParams) -> Self { + (value.strategy, value.multiplier) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for StrategyParams { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategy: tuple.0, + multiplier: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for StrategyParams { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for StrategyParams { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.multiplier, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec) { + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for StrategyParams { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = + as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for StrategyParams { + const NAME: &'static str = "StrategyParams"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "StrategyParams(address strategy,uint96 multiplier)", + ) + } + #[inline] + fn eip712_components( + ) -> alloy_sol_types::private::Vec> + { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.strategy, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.multiplier) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for StrategyParams { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.strategy, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.multiplier, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve(::topic_preimage_length(rust)); + ::encode_topic_preimage( + &rust.strategy, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.multiplier, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IStakeRegistry`](self) contract instance. + + See the [wrapper's documentation](`IStakeRegistryInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IStakeRegistryInstance { + IStakeRegistryInstance::::new(address, provider) + } + /**A [`IStakeRegistry`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IStakeRegistry`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IStakeRegistryInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IStakeRegistryInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IStakeRegistryInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IStakeRegistryInstance + { + /**Creates a new wrapper around an on-chain [`IStakeRegistry`](self) contract instance. + + See the [wrapper's documentation](`IStakeRegistryInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IStakeRegistryInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IStakeRegistryInstance { + IStakeRegistryInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IStakeRegistryInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IStakeRegistryInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library IStakeRegistry { + struct StakeUpdate { + uint32 updateBlockNumber; + uint32 nextUpdateBlockNumber; + uint96 stake; + } + struct StrategyParams { + address strategy; + uint96 multiplier; + } +} + +interface StakeRegistryStorage { + event MinimumStakeForQuorumUpdated(uint8 indexed quorumNumber, uint96 minimumStake); + event OperatorStakeUpdate(bytes32 indexed operatorId, uint8 quorumNumber, uint96 stake); + event QuorumCreated(uint8 indexed quorumNumber); + event StrategyAddedToQuorum(uint8 indexed quorumNumber, address strategy); + event StrategyMultiplierUpdated(uint8 indexed quorumNumber, address strategy, uint256 multiplier); + event StrategyRemovedFromQuorum(uint8 indexed quorumNumber, address strategy); + + function MAX_WEIGHING_FUNCTION_LENGTH() external view returns (uint8); + function WEIGHTING_DIVISOR() external view returns (uint256); + function addStrategies(uint8 quorumNumber, IStakeRegistry.StrategyParams[] memory strategyParams) external; + function delegation() external view returns (address); + function deregisterOperator(bytes32 operatorId, bytes memory quorumNumbers) external; + function getCurrentStake(bytes32 operatorId, uint8 quorumNumber) external view returns (uint96); + function getCurrentTotalStake(uint8 quorumNumber) external view returns (uint96); + function getLatestStakeUpdate(bytes32 operatorId, uint8 quorumNumber) external view returns (IStakeRegistry.StakeUpdate memory); + function getStakeAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) external view returns (uint96); + function getStakeAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, bytes32 operatorId, uint256 index) external view returns (uint96); + function getStakeHistory(bytes32 operatorId, uint8 quorumNumber) external view returns (IStakeRegistry.StakeUpdate[] memory); + function getStakeUpdateAtIndex(uint8 quorumNumber, bytes32 operatorId, uint256 index) external view returns (IStakeRegistry.StakeUpdate memory); + function getStakeUpdateIndexAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) external view returns (uint32); + function getTotalStakeAtBlockNumberFromIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) external view returns (uint96); + function getTotalStakeHistoryLength(uint8 quorumNumber) external view returns (uint256); + function getTotalStakeIndicesAtBlockNumber(uint32 blockNumber, bytes memory quorumNumbers) external view returns (uint32[] memory); + function getTotalStakeUpdateAtIndex(uint8 quorumNumber, uint256 index) external view returns (IStakeRegistry.StakeUpdate memory); + function initializeQuorum(uint8 quorumNumber, uint96 minimumStake, IStakeRegistry.StrategyParams[] memory strategyParams) external; + function minimumStakeForQuorum(uint8) external view returns (uint96); + function modifyStrategyParams(uint8 quorumNumber, uint256[] memory strategyIndices, uint96[] memory newMultipliers) external; + function registerOperator(address operator, bytes32 operatorId, bytes memory quorumNumbers) external returns (uint96[] memory, uint96[] memory); + function registryCoordinator() external view returns (address); + function removeStrategies(uint8 quorumNumber, uint256[] memory indicesToRemove) external; + function strategiesPerQuorum(uint8, uint256) external view returns (address); + function strategyParams(uint8, uint256) external view returns (address strategy, uint96 multiplier); + function strategyParamsByIndex(uint8 quorumNumber, uint256 index) external view returns (IStakeRegistry.StrategyParams memory); + function strategyParamsLength(uint8 quorumNumber) external view returns (uint256); + function updateOperatorStake(address operator, bytes32 operatorId, bytes memory quorumNumbers) external returns (uint192); + function weightOfOperatorForQuorum(uint8 quorumNumber, address operator) external view returns (uint96); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "MAX_WEIGHING_FUNCTION_LENGTH", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "WEIGHTING_DIVISOR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "addStrategies", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "strategyParams", + "type": "tuple[]", + "internalType": "struct IStakeRegistry.StrategyParams[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "delegation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IDelegationManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "deregisterOperator", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getCurrentStake", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getCurrentTotalStake", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getLatestStakeUpdate", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IStakeRegistry.StakeUpdate", + "components": [ + { + "name": "updateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "nextUpdateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "stake", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getStakeAtBlockNumber", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getStakeAtBlockNumberAndIndex", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getStakeHistory", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple[]", + "internalType": "struct IStakeRegistry.StakeUpdate[]", + "components": [ + { + "name": "updateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "nextUpdateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "stake", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getStakeUpdateAtIndex", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IStakeRegistry.StakeUpdate", + "components": [ + { + "name": "updateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "nextUpdateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "stake", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getStakeUpdateIndexAtBlockNumber", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getTotalStakeAtBlockNumberFromIndex", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getTotalStakeHistoryLength", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getTotalStakeIndicesAtBlockNumber", + "inputs": [ + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32[]", + "internalType": "uint32[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getTotalStakeUpdateAtIndex", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IStakeRegistry.StakeUpdate", + "components": [ + { + "name": "updateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "nextUpdateBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "stake", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initializeQuorum", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "minimumStake", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "strategyParams", + "type": "tuple[]", + "internalType": "struct IStakeRegistry.StrategyParams[]", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "minimumStakeForQuorum", + "inputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "modifyStrategyParams", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "strategyIndices", + "type": "uint256[]", + "internalType": "uint256[]" + }, + { + "name": "newMultipliers", + "type": "uint96[]", + "internalType": "uint96[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registerOperator", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "uint96[]", + "internalType": "uint96[]" + }, + { + "name": "", + "type": "uint96[]", + "internalType": "uint96[]" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registryCoordinator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "removeStrategies", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "indicesToRemove", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "strategiesPerQuorum", + "inputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStrategy" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "strategyParams", + "inputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "strategyParamsByIndex", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IStakeRegistry.StrategyParams", + "components": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "strategyParamsLength", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "updateOperatorStake", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "uint192", + "internalType": "uint192" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "weightOfOperatorForQuorum", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "MinimumStakeForQuorumUpdated", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "indexed": true, + "internalType": "uint8" + }, + { + "name": "minimumStake", + "type": "uint96", + "indexed": false, + "internalType": "uint96" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorStakeUpdate", + "inputs": [ + { + "name": "operatorId", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "quorumNumber", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + }, + { + "name": "stake", + "type": "uint96", + "indexed": false, + "internalType": "uint96" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "QuorumCreated", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "indexed": true, + "internalType": "uint8" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StrategyAddedToQuorum", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "indexed": true, + "internalType": "uint8" + }, + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StrategyMultiplierUpdated", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "indexed": true, + "internalType": "uint8" + }, + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + }, + { + "name": "multiplier", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StrategyRemovedFromQuorum", + "inputs": [ + { + "name": "quorumNumber", + "type": "uint8", + "indexed": true, + "internalType": "uint8" + }, + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod StakeRegistryStorage { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Event with signature `MinimumStakeForQuorumUpdated(uint8,uint96)` and selector `0x26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf`. + ```solidity + event MinimumStakeForQuorumUpdated(uint8 indexed quorumNumber, uint96 minimumStake); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct MinimumStakeForQuorumUpdated { + #[allow(missing_docs)] + pub quorumNumber: u8, + #[allow(missing_docs)] + pub minimumStake: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for MinimumStakeForQuorumUpdated { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + const SIGNATURE: &'static str = "MinimumStakeForQuorumUpdated(uint8,uint96)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 38u8, 238u8, 207u8, 242u8, 183u8, 11u8, 10u8, 113u8, 16u8, 79u8, 244u8, 217u8, + 64u8, 186u8, 113u8, 98u8, 210u8, 58u8, 149u8, 194u8, 72u8, 119u8, 31u8, 196u8, + 135u8, 167u8, 190u8, 23u8, 165u8, 150u8, 179u8, 207u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + quorumNumber: topics.1, + minimumStake: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.minimumStake, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for MinimumStakeForQuorumUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&MinimumStakeForQuorumUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &MinimumStakeForQuorumUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OperatorStakeUpdate(bytes32,uint8,uint96)` and selector `0x2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d`. + ```solidity + event OperatorStakeUpdate(bytes32 indexed operatorId, uint8 quorumNumber, uint96 stake); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OperatorStakeUpdate { + #[allow(missing_docs)] + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub quorumNumber: u8, + #[allow(missing_docs)] + pub stake: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OperatorStakeUpdate { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<96>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + const SIGNATURE: &'static str = "OperatorStakeUpdate(bytes32,uint8,uint96)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 47u8, 82u8, 125u8, 82u8, 126u8, 149u8, 216u8, 254u8, 64u8, 174u8, 197u8, 83u8, + 119u8, 116u8, 59u8, 183u8, 121u8, 8u8, 125u8, 163u8, 246u8, 208u8, 208u8, + 143u8, 18u8, 227u8, 100u8, 68u8, 218u8, 98u8, 50u8, 125u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + operatorId: topics.1, + quorumNumber: data.0, + stake: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.stake, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.operatorId.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.operatorId); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OperatorStakeUpdate { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OperatorStakeUpdate> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OperatorStakeUpdate) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `QuorumCreated(uint8)` and selector `0x831a9c86c45bb303caf3f064be2bc2b9fd4ecf19e47c4ac02a61e75dabfe55b4`. + ```solidity + event QuorumCreated(uint8 indexed quorumNumber); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct QuorumCreated { + #[allow(missing_docs)] + pub quorumNumber: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for QuorumCreated { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + const SIGNATURE: &'static str = "QuorumCreated(uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 131u8, 26u8, 156u8, 134u8, 196u8, 91u8, 179u8, 3u8, 202u8, 243u8, 240u8, 100u8, + 190u8, 43u8, 194u8, 185u8, 253u8, 78u8, 207u8, 25u8, 228u8, 124u8, 74u8, 192u8, + 42u8, 97u8, 231u8, 93u8, 171u8, 254u8, 85u8, 180u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + quorumNumber: topics.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for QuorumCreated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&QuorumCreated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &QuorumCreated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `StrategyAddedToQuorum(uint8,address)` and selector `0x10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f5404`. + ```solidity + event StrategyAddedToQuorum(uint8 indexed quorumNumber, address strategy); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct StrategyAddedToQuorum { + #[allow(missing_docs)] + pub quorumNumber: u8, + #[allow(missing_docs)] + pub strategy: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for StrategyAddedToQuorum { + type DataTuple<'a> = (alloy::sol_types::sol_data::Address,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + const SIGNATURE: &'static str = "StrategyAddedToQuorum(uint8,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 16u8, 86u8, 94u8, 86u8, 202u8, 203u8, 243u8, 46u8, 202u8, 38u8, 121u8, 69u8, + 240u8, 84u8, 254u8, 192u8, 46u8, 89u8, 117u8, 0u8, 50u8, 209u8, 19u8, 211u8, + 48u8, 33u8, 130u8, 173u8, 150u8, 127u8, 84u8, 4u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + quorumNumber: topics.1, + strategy: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.strategy, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for StrategyAddedToQuorum { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&StrategyAddedToQuorum> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &StrategyAddedToQuorum) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `StrategyMultiplierUpdated(uint8,address,uint256)` and selector `0x11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75`. + ```solidity + event StrategyMultiplierUpdated(uint8 indexed quorumNumber, address strategy, uint256 multiplier); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct StrategyMultiplierUpdated { + #[allow(missing_docs)] + pub quorumNumber: u8, + #[allow(missing_docs)] + pub strategy: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub multiplier: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for StrategyMultiplierUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + const SIGNATURE: &'static str = "StrategyMultiplierUpdated(uint8,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 17u8, 165u8, 100u8, 19u8, 34u8, 218u8, 29u8, 255u8, 86u8, 164u8, 182u8, 110u8, + 170u8, 195u8, 31u8, 250u8, 70u8, 82u8, 149u8, 236u8, 233u8, 7u8, 205u8, 22u8, + 52u8, 55u8, 121u8, 59u8, 77u8, 0u8, 154u8, 117u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + quorumNumber: topics.1, + strategy: data.0, + multiplier: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.multiplier, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for StrategyMultiplierUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&StrategyMultiplierUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &StrategyMultiplierUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `StrategyRemovedFromQuorum(uint8,address)` and selector `0x31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f7`. + ```solidity + event StrategyRemovedFromQuorum(uint8 indexed quorumNumber, address strategy); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct StrategyRemovedFromQuorum { + #[allow(missing_docs)] + pub quorumNumber: u8, + #[allow(missing_docs)] + pub strategy: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for StrategyRemovedFromQuorum { + type DataTuple<'a> = (alloy::sol_types::sol_data::Address,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + const SIGNATURE: &'static str = "StrategyRemovedFromQuorum(uint8,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 49u8, 250u8, 46u8, 44u8, 210u8, 128u8, 201u8, 55u8, 94u8, 19u8, 255u8, 207u8, + 61u8, 129u8, 226u8, 55u8, 129u8, 0u8, 24u8, 110u8, 64u8, 88u8, 248u8, 211u8, + 221u8, 182u8, 144u8, 184u8, 45u8, 205u8, 49u8, 247u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + quorumNumber: topics.1, + strategy: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.strategy, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for StrategyRemovedFromQuorum { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&StrategyRemovedFromQuorum> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &StrategyRemovedFromQuorum) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `MAX_WEIGHING_FUNCTION_LENGTH()` and selector `0x7c172347`. + ```solidity + function MAX_WEIGHING_FUNCTION_LENGTH() external view returns (uint8); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct MAX_WEIGHING_FUNCTION_LENGTHCall {} + ///Container type for the return parameters of the [`MAX_WEIGHING_FUNCTION_LENGTH()`](MAX_WEIGHING_FUNCTION_LENGTHCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct MAX_WEIGHING_FUNCTION_LENGTHReturn { + pub _0: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: MAX_WEIGHING_FUNCTION_LENGTHCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for MAX_WEIGHING_FUNCTION_LENGTHCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: MAX_WEIGHING_FUNCTION_LENGTHReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for MAX_WEIGHING_FUNCTION_LENGTHReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for MAX_WEIGHING_FUNCTION_LENGTHCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = MAX_WEIGHING_FUNCTION_LENGTHReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "MAX_WEIGHING_FUNCTION_LENGTH()"; + const SELECTOR: [u8; 4] = [124u8, 23u8, 35u8, 71u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `WEIGHTING_DIVISOR()` and selector `0x5e5a6775`. + ```solidity + function WEIGHTING_DIVISOR() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct WEIGHTING_DIVISORCall {} + ///Container type for the return parameters of the [`WEIGHTING_DIVISOR()`](WEIGHTING_DIVISORCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct WEIGHTING_DIVISORReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: WEIGHTING_DIVISORCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for WEIGHTING_DIVISORCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: WEIGHTING_DIVISORReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for WEIGHTING_DIVISORReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for WEIGHTING_DIVISORCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = WEIGHTING_DIVISORReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "WEIGHTING_DIVISOR()"; + const SELECTOR: [u8; 4] = [94u8, 90u8, 103u8, 117u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `addStrategies(uint8,(address,uint96)[])` and selector `0xc601527d`. + ```solidity + function addStrategies(uint8 quorumNumber, IStakeRegistry.StrategyParams[] memory strategyParams) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct addStrategiesCall { + pub quorumNumber: u8, + pub strategyParams: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`addStrategies(uint8,(address,uint96)[])`](addStrategiesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct addStrategiesReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u8, + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: addStrategiesCall) -> Self { + (value.quorumNumber, value.strategyParams) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for addStrategiesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + strategyParams: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: addStrategiesReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for addStrategiesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for addStrategiesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Array, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = addStrategiesReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "addStrategies(uint8,(address,uint96)[])"; + const SELECTOR: [u8; 4] = [198u8, 1u8, 82u8, 125u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + as alloy_sol_types::SolType>::tokenize(&self.strategyParams), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `delegation()` and selector `0xdf5cf723`. + ```solidity + function delegation() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegationCall {} + ///Container type for the return parameters of the [`delegation()`](delegationCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for delegationCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = delegationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "delegation()"; + const SELECTOR: [u8; 4] = [223u8, 92u8, 247u8, 35u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `deregisterOperator(bytes32,bytes)` and selector `0xbd29b8cd`. + ```solidity + function deregisterOperator(bytes32 operatorId, bytes memory quorumNumbers) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`deregisterOperator(bytes32,bytes)`](deregisterOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct deregisterOperatorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorCall) -> Self { + (value.operatorId, value.quorumNumbers) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + quorumNumbers: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: deregisterOperatorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for deregisterOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for deregisterOperatorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = deregisterOperatorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "deregisterOperator(bytes32,bytes)"; + const SELECTOR: [u8; 4] = [189u8, 41u8, 184u8, 205u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getCurrentStake(bytes32,uint8)` and selector `0x5401ed27`. + ```solidity + function getCurrentStake(bytes32 operatorId, uint8 quorumNumber) external view returns (uint96); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getCurrentStakeCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`getCurrentStake(bytes32,uint8)`](getCurrentStakeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getCurrentStakeReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>, u8); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCurrentStakeCall) -> Self { + (value.operatorId, value.quorumNumber) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCurrentStakeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + quorumNumber: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U96,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCurrentStakeReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCurrentStakeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getCurrentStakeCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getCurrentStakeReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getCurrentStake(bytes32,uint8)"; + const SELECTOR: [u8; 4] = [84u8, 1u8, 237u8, 39u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getCurrentTotalStake(uint8)` and selector `0xd5eccc05`. + ```solidity + function getCurrentTotalStake(uint8 quorumNumber) external view returns (uint96); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getCurrentTotalStakeCall { + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`getCurrentTotalStake(uint8)`](getCurrentTotalStakeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getCurrentTotalStakeReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCurrentTotalStakeCall) -> Self { + (value.quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCurrentTotalStakeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U96,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getCurrentTotalStakeReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getCurrentTotalStakeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getCurrentTotalStakeCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getCurrentTotalStakeReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getCurrentTotalStake(uint8)"; + const SELECTOR: [u8; 4] = [213u8, 236u8, 204u8, 5u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getLatestStakeUpdate(bytes32,uint8)` and selector `0xf851e198`. + ```solidity + function getLatestStakeUpdate(bytes32 operatorId, uint8 quorumNumber) external view returns (IStakeRegistry.StakeUpdate memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLatestStakeUpdateCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`getLatestStakeUpdate(bytes32,uint8)`](getLatestStakeUpdateCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getLatestStakeUpdateReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>, u8); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLatestStakeUpdateCall) -> Self { + (value.operatorId, value.quorumNumber) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLatestStakeUpdateCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + quorumNumber: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IStakeRegistry::StakeUpdate,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getLatestStakeUpdateReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getLatestStakeUpdateReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getLatestStakeUpdateCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getLatestStakeUpdateReturn; + type ReturnTuple<'a> = (IStakeRegistry::StakeUpdate,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getLatestStakeUpdate(bytes32,uint8)"; + const SELECTOR: [u8; 4] = [248u8, 81u8, 225u8, 152u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getStakeAtBlockNumber(bytes32,uint8,uint32)` and selector `0xfa28c627`. + ```solidity + function getStakeAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) external view returns (uint96); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeAtBlockNumberCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumber: u8, + pub blockNumber: u32, + } + ///Container type for the return parameters of the [`getStakeAtBlockNumber(bytes32,uint8,uint32)`](getStakeAtBlockNumberCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeAtBlockNumberReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>, u8, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeAtBlockNumberCall) -> Self { + (value.operatorId, value.quorumNumber, value.blockNumber) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeAtBlockNumberCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + quorumNumber: tuple.1, + blockNumber: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U96,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeAtBlockNumberReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeAtBlockNumberReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getStakeAtBlockNumberCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getStakeAtBlockNumberReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getStakeAtBlockNumber(bytes32,uint8,uint32)"; + const SELECTOR: [u8; 4] = [250u8, 40u8, 198u8, 39u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + as alloy_sol_types::SolType>::tokenize(&self.blockNumber), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getStakeAtBlockNumberAndIndex(uint8,uint32,bytes32,uint256)` and selector `0xf2be94ae`. + ```solidity + function getStakeAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, bytes32 operatorId, uint256 index) external view returns (uint96); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeAtBlockNumberAndIndexCall { + pub quorumNumber: u8, + pub blockNumber: u32, + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getStakeAtBlockNumberAndIndex(uint8,uint32,bytes32,uint256)`](getStakeAtBlockNumberAndIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeAtBlockNumberAndIndexReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u8, + u32, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeAtBlockNumberAndIndexCall) -> Self { + ( + value.quorumNumber, + value.blockNumber, + value.operatorId, + value.index, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeAtBlockNumberAndIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + blockNumber: tuple.1, + operatorId: tuple.2, + index: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U96,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeAtBlockNumberAndIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeAtBlockNumberAndIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getStakeAtBlockNumberAndIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getStakeAtBlockNumberAndIndexReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "getStakeAtBlockNumberAndIndex(uint8,uint32,bytes32,uint256)"; + const SELECTOR: [u8; 4] = [242u8, 190u8, 148u8, 174u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + as alloy_sol_types::SolType>::tokenize(&self.blockNumber), + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.index), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getStakeHistory(bytes32,uint8)` and selector `0x2cd95940`. + ```solidity + function getStakeHistory(bytes32 operatorId, uint8 quorumNumber) external view returns (IStakeRegistry.StakeUpdate[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeHistoryCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`getStakeHistory(bytes32,uint8)`](getStakeHistoryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeHistoryReturn { + pub _0: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>, u8); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeHistoryCall) -> Self { + (value.operatorId, value.quorumNumber) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeHistoryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + quorumNumber: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeHistoryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeHistoryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getStakeHistoryCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getStakeHistoryReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getStakeHistory(bytes32,uint8)"; + const SELECTOR: [u8; 4] = [44u8, 217u8, 89u8, 64u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getStakeUpdateAtIndex(uint8,bytes32,uint256)` and selector `0xac6bfb03`. + ```solidity + function getStakeUpdateAtIndex(uint8 quorumNumber, bytes32 operatorId, uint256 index) external view returns (IStakeRegistry.StakeUpdate memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeUpdateAtIndexCall { + pub quorumNumber: u8, + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getStakeUpdateAtIndex(uint8,bytes32,uint256)`](getStakeUpdateAtIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u8, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeUpdateAtIndexCall) -> Self { + (value.quorumNumber, value.operatorId, value.index) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeUpdateAtIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + operatorId: tuple.1, + index: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IStakeRegistry::StakeUpdate,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeUpdateAtIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeUpdateAtIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getStakeUpdateAtIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getStakeUpdateAtIndexReturn; + type ReturnTuple<'a> = (IStakeRegistry::StakeUpdate,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getStakeUpdateAtIndex(uint8,bytes32,uint256)"; + const SELECTOR: [u8; 4] = [172u8, 107u8, 251u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.index), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getStakeUpdateIndexAtBlockNumber(bytes32,uint8,uint32)` and selector `0xdd9846b9`. + ```solidity + function getStakeUpdateIndexAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) external view returns (uint32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeUpdateIndexAtBlockNumberCall { + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumber: u8, + pub blockNumber: u32, + } + ///Container type for the return parameters of the [`getStakeUpdateIndexAtBlockNumber(bytes32,uint8,uint32)`](getStakeUpdateIndexAtBlockNumberCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getStakeUpdateIndexAtBlockNumberReturn { + pub _0: u32, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>, u8, u32); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeUpdateIndexAtBlockNumberCall) -> Self { + (value.operatorId, value.quorumNumber, value.blockNumber) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeUpdateIndexAtBlockNumberCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorId: tuple.0, + quorumNumber: tuple.1, + blockNumber: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getStakeUpdateIndexAtBlockNumberReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getStakeUpdateIndexAtBlockNumberReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getStakeUpdateIndexAtBlockNumberCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getStakeUpdateIndexAtBlockNumberReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "getStakeUpdateIndexAtBlockNumber(bytes32,uint8,uint32)"; + const SELECTOR: [u8; 4] = [221u8, 152u8, 70u8, 185u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + as alloy_sol_types::SolType>::tokenize(&self.blockNumber), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getTotalStakeAtBlockNumberFromIndex(uint8,uint32,uint256)` and selector `0xc8294c56`. + ```solidity + function getTotalStakeAtBlockNumberFromIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) external view returns (uint96); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getTotalStakeAtBlockNumberFromIndexCall { + pub quorumNumber: u8, + pub blockNumber: u32, + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getTotalStakeAtBlockNumberFromIndex(uint8,uint32,uint256)`](getTotalStakeAtBlockNumberFromIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getTotalStakeAtBlockNumberFromIndexReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u8, + u32, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getTotalStakeAtBlockNumberFromIndexCall) -> Self { + (value.quorumNumber, value.blockNumber, value.index) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getTotalStakeAtBlockNumberFromIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + blockNumber: tuple.1, + index: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U96,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getTotalStakeAtBlockNumberFromIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getTotalStakeAtBlockNumberFromIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getTotalStakeAtBlockNumberFromIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getTotalStakeAtBlockNumberFromIndexReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "getTotalStakeAtBlockNumberFromIndex(uint8,uint32,uint256)"; + const SELECTOR: [u8; 4] = [200u8, 41u8, 76u8, 86u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.blockNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getTotalStakeHistoryLength(uint8)` and selector `0x0491b41c`. + ```solidity + function getTotalStakeHistoryLength(uint8 quorumNumber) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getTotalStakeHistoryLengthCall { + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`getTotalStakeHistoryLength(uint8)`](getTotalStakeHistoryLengthCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getTotalStakeHistoryLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getTotalStakeHistoryLengthCall) -> Self { + (value.quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getTotalStakeHistoryLengthCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getTotalStakeHistoryLengthReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getTotalStakeHistoryLengthReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getTotalStakeHistoryLengthCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getTotalStakeHistoryLengthReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getTotalStakeHistoryLength(uint8)"; + const SELECTOR: [u8; 4] = [4u8, 145u8, 180u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getTotalStakeIndicesAtBlockNumber(uint32,bytes)` and selector `0x81c07502`. + ```solidity + function getTotalStakeIndicesAtBlockNumber(uint32 blockNumber, bytes memory quorumNumbers) external view returns (uint32[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getTotalStakeIndicesAtBlockNumberCall { + pub blockNumber: u32, + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`getTotalStakeIndicesAtBlockNumber(uint32,bytes)`](getTotalStakeIndicesAtBlockNumberCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getTotalStakeIndicesAtBlockNumberReturn { + pub _0: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32, alloy::sol_types::private::Bytes); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getTotalStakeIndicesAtBlockNumberCall) -> Self { + (value.blockNumber, value.quorumNumbers) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getTotalStakeIndicesAtBlockNumberCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + blockNumber: tuple.0, + quorumNumbers: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getTotalStakeIndicesAtBlockNumberReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getTotalStakeIndicesAtBlockNumberReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getTotalStakeIndicesAtBlockNumberCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getTotalStakeIndicesAtBlockNumberReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getTotalStakeIndicesAtBlockNumber(uint32,bytes)"; + const SELECTOR: [u8; 4] = [129u8, 192u8, 117u8, 2u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.blockNumber, + ), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getTotalStakeUpdateAtIndex(uint8,uint256)` and selector `0xb6904b78`. + ```solidity + function getTotalStakeUpdateAtIndex(uint8 quorumNumber, uint256 index) external view returns (IStakeRegistry.StakeUpdate memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getTotalStakeUpdateAtIndexCall { + pub quorumNumber: u8, + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`getTotalStakeUpdateAtIndex(uint8,uint256)`](getTotalStakeUpdateAtIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getTotalStakeUpdateAtIndexReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (u8, alloy::sol_types::private::primitives::aliases::U256); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getTotalStakeUpdateAtIndexCall) -> Self { + (value.quorumNumber, value.index) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getTotalStakeUpdateAtIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + index: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IStakeRegistry::StakeUpdate,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getTotalStakeUpdateAtIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getTotalStakeUpdateAtIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getTotalStakeUpdateAtIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getTotalStakeUpdateAtIndexReturn; + type ReturnTuple<'a> = (IStakeRegistry::StakeUpdate,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getTotalStakeUpdateAtIndex(uint8,uint256)"; + const SELECTOR: [u8; 4] = [182u8, 144u8, 75u8, 120u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `initializeQuorum(uint8,uint96,(address,uint96)[])` and selector `0xff694a77`. + ```solidity + function initializeQuorum(uint8 quorumNumber, uint96 minimumStake, IStakeRegistry.StrategyParams[] memory strategyParams) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeQuorumCall { + pub quorumNumber: u8, + pub minimumStake: alloy::sol_types::private::primitives::aliases::U96, + pub strategyParams: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`initializeQuorum(uint8,uint96,(address,uint96)[])`](initializeQuorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeQuorumReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<96>, + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u8, + alloy::sol_types::private::primitives::aliases::U96, + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeQuorumCall) -> Self { + (value.quorumNumber, value.minimumStake, value.strategyParams) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeQuorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + minimumStake: tuple.1, + strategyParams: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeQuorumReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeQuorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for initializeQuorumCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<96>, + alloy::sol_types::sol_data::Array, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = initializeQuorumReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "initializeQuorum(uint8,uint96,(address,uint96)[])"; + const SELECTOR: [u8; 4] = [255u8, 105u8, 74u8, 119u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + as alloy_sol_types::SolType>::tokenize(&self.minimumStake), + as alloy_sol_types::SolType>::tokenize(&self.strategyParams), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `minimumStakeForQuorum(uint8)` and selector `0xc46778a5`. + ```solidity + function minimumStakeForQuorum(uint8) external view returns (uint96); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct minimumStakeForQuorumCall { + pub _0: u8, + } + ///Container type for the return parameters of the [`minimumStakeForQuorum(uint8)`](minimumStakeForQuorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct minimumStakeForQuorumReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: minimumStakeForQuorumCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for minimumStakeForQuorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U96,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: minimumStakeForQuorumReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for minimumStakeForQuorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for minimumStakeForQuorumCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = minimumStakeForQuorumReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "minimumStakeForQuorum(uint8)"; + const SELECTOR: [u8; 4] = [196u8, 103u8, 120u8, 165u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `modifyStrategyParams(uint8,uint256[],uint96[])` and selector `0x20b66298`. + ```solidity + function modifyStrategyParams(uint8 quorumNumber, uint256[] memory strategyIndices, uint96[] memory newMultipliers) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct modifyStrategyParamsCall { + pub quorumNumber: u8, + pub strategyIndices: + alloy::sol_types::private::Vec, + pub newMultipliers: + alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`modifyStrategyParams(uint8,uint256[],uint96[])`](modifyStrategyParamsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct modifyStrategyParamsReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u8, + alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: modifyStrategyParamsCall) -> Self { + ( + value.quorumNumber, + value.strategyIndices, + value.newMultipliers, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for modifyStrategyParamsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + strategyIndices: tuple.1, + newMultipliers: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: modifyStrategyParamsReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for modifyStrategyParamsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for modifyStrategyParamsCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = modifyStrategyParamsReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "modifyStrategyParams(uint8,uint256[],uint96[])"; + const SELECTOR: [u8; 4] = [32u8, 182u8, 98u8, 152u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + , + > as alloy_sol_types::SolType>::tokenize(&self.strategyIndices), + , + > as alloy_sol_types::SolType>::tokenize(&self.newMultipliers), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registerOperator(address,bytes32,bytes)` and selector `0x25504777`. + ```solidity + function registerOperator(address operator, bytes32 operatorId, bytes memory quorumNumbers) external returns (uint96[] memory, uint96[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorCall { + pub operator: alloy::sol_types::private::Address, + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`registerOperator(address,bytes32,bytes)`](registerOperatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registerOperatorReturn { + pub _0: alloy::sol_types::private::Vec, + pub _1: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorCall) -> Self { + (value.operator, value.operatorId, value.quorumNumbers) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + operatorId: tuple.1, + quorumNumbers: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registerOperatorReturn) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registerOperatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registerOperatorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registerOperatorReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Array>, + alloy::sol_types::sol_data::Array>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registerOperator(address,bytes32,bytes)"; + const SELECTOR: [u8; 4] = [37u8, 80u8, 71u8, 119u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registryCoordinator()` and selector `0x6d14a987`. + ```solidity + function registryCoordinator() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for registryCoordinatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registryCoordinatorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = registryCoordinatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registryCoordinator()"; + const SELECTOR: [u8; 4] = [109u8, 20u8, 169u8, 135u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `removeStrategies(uint8,uint256[])` and selector `0x5f1f2d77`. + ```solidity + function removeStrategies(uint8 quorumNumber, uint256[] memory indicesToRemove) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct removeStrategiesCall { + pub quorumNumber: u8, + pub indicesToRemove: + alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`removeStrategies(uint8,uint256[])`](removeStrategiesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct removeStrategiesReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Array>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u8, + alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: removeStrategiesCall) -> Self { + (value.quorumNumber, value.indicesToRemove) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for removeStrategiesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + indicesToRemove: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: removeStrategiesReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for removeStrategiesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for removeStrategiesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Array>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = removeStrategiesReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "removeStrategies(uint8,uint256[])"; + const SELECTOR: [u8; 4] = [95u8, 31u8, 45u8, 119u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.quorumNumber), + , + > as alloy_sol_types::SolType>::tokenize(&self.indicesToRemove), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `strategiesPerQuorum(uint8,uint256)` and selector `0x9f3ccf65`. + ```solidity + function strategiesPerQuorum(uint8, uint256) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategiesPerQuorumCall { + pub _0: u8, + pub _1: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`strategiesPerQuorum(uint8,uint256)`](strategiesPerQuorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategiesPerQuorumReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (u8, alloy::sol_types::private::primitives::aliases::U256); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategiesPerQuorumCall) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategiesPerQuorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategiesPerQuorumReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategiesPerQuorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for strategiesPerQuorumCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = strategiesPerQuorumReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "strategiesPerQuorum(uint8,uint256)"; + const SELECTOR: [u8; 4] = [159u8, 60u8, 207u8, 101u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._0, + ), + as alloy_sol_types::SolType>::tokenize( + &self._1, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `strategyParams(uint8,uint256)` and selector `0x08732461`. + ```solidity + function strategyParams(uint8, uint256) external view returns (address strategy, uint96 multiplier); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyParamsCall { + pub _0: u8, + pub _1: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`strategyParams(uint8,uint256)`](strategyParamsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyParamsReturn { + pub strategy: alloy::sol_types::private::Address, + pub multiplier: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (u8, alloy::sol_types::private::primitives::aliases::U256); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyParamsCall) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyParamsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<96>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U96, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyParamsReturn) -> Self { + (value.strategy, value.multiplier) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyParamsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategy: tuple.0, + multiplier: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for strategyParamsCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = strategyParamsReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<96>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "strategyParams(uint8,uint256)"; + const SELECTOR: [u8; 4] = [8u8, 115u8, 36u8, 97u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._0, + ), + as alloy_sol_types::SolType>::tokenize( + &self._1, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `strategyParamsByIndex(uint8,uint256)` and selector `0xadc804da`. + ```solidity + function strategyParamsByIndex(uint8 quorumNumber, uint256 index) external view returns (IStakeRegistry.StrategyParams memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyParamsByIndexCall { + pub quorumNumber: u8, + pub index: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`strategyParamsByIndex(uint8,uint256)`](strategyParamsByIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyParamsByIndexReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (u8, alloy::sol_types::private::primitives::aliases::U256); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyParamsByIndexCall) -> Self { + (value.quorumNumber, value.index) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyParamsByIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + index: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (IStakeRegistry::StrategyParams,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (::RustType,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyParamsByIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyParamsByIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for strategyParamsByIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = strategyParamsByIndexReturn; + type ReturnTuple<'a> = (IStakeRegistry::StrategyParams,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "strategyParamsByIndex(uint8,uint256)"; + const SELECTOR: [u8; 4] = [173u8, 200u8, 4u8, 218u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `strategyParamsLength(uint8)` and selector `0x3ca5a5f5`. + ```solidity + function strategyParamsLength(uint8 quorumNumber) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyParamsLengthCall { + pub quorumNumber: u8, + } + ///Container type for the return parameters of the [`strategyParamsLength(uint8)`](strategyParamsLengthCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyParamsLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyParamsLengthCall) -> Self { + (value.quorumNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyParamsLengthCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyParamsLengthReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyParamsLengthReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for strategyParamsLengthCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = strategyParamsLengthReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "strategyParamsLength(uint8)"; + const SELECTOR: [u8; 4] = [60u8, 165u8, 165u8, 245u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `updateOperatorStake(address,bytes32,bytes)` and selector `0x66acfefe`. + ```solidity + function updateOperatorStake(address operator, bytes32 operatorId, bytes memory quorumNumbers) external returns (uint192); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorStakeCall { + pub operator: alloy::sol_types::private::Address, + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`updateOperatorStake(address,bytes32,bytes)`](updateOperatorStakeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateOperatorStakeReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U192, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorStakeCall) -> Self { + (value.operator, value.operatorId, value.quorumNumbers) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorStakeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + operatorId: tuple.1, + quorumNumbers: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<192>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U192,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateOperatorStakeReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateOperatorStakeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateOperatorStakeCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateOperatorStakeReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<192>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateOperatorStake(address,bytes32,bytes)"; + const SELECTOR: [u8; 4] = [102u8, 172u8, 254u8, 254u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + as alloy_sol_types::SolType>::tokenize(&self.operatorId), + ::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `weightOfOperatorForQuorum(uint8,address)` and selector `0x1f9b74e0`. + ```solidity + function weightOfOperatorForQuorum(uint8 quorumNumber, address operator) external view returns (uint96); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct weightOfOperatorForQuorumCall { + pub quorumNumber: u8, + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`weightOfOperatorForQuorum(uint8,address)`](weightOfOperatorForQuorumCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct weightOfOperatorForQuorumReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U96, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8, alloy::sol_types::private::Address); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: weightOfOperatorForQuorumCall) -> Self { + (value.quorumNumber, value.operator) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for weightOfOperatorForQuorumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + quorumNumber: tuple.0, + operator: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U96,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: weightOfOperatorForQuorumReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for weightOfOperatorForQuorumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for weightOfOperatorForQuorumCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = weightOfOperatorForQuorumReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "weightOfOperatorForQuorum(uint8,address)"; + const SELECTOR: [u8; 4] = [31u8, 155u8, 116u8, 224u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.quorumNumber, + ), + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`StakeRegistryStorage`](self) function calls. + pub enum StakeRegistryStorageCalls { + MAX_WEIGHING_FUNCTION_LENGTH(MAX_WEIGHING_FUNCTION_LENGTHCall), + WEIGHTING_DIVISOR(WEIGHTING_DIVISORCall), + addStrategies(addStrategiesCall), + delegation(delegationCall), + deregisterOperator(deregisterOperatorCall), + getCurrentStake(getCurrentStakeCall), + getCurrentTotalStake(getCurrentTotalStakeCall), + getLatestStakeUpdate(getLatestStakeUpdateCall), + getStakeAtBlockNumber(getStakeAtBlockNumberCall), + getStakeAtBlockNumberAndIndex(getStakeAtBlockNumberAndIndexCall), + getStakeHistory(getStakeHistoryCall), + getStakeUpdateAtIndex(getStakeUpdateAtIndexCall), + getStakeUpdateIndexAtBlockNumber(getStakeUpdateIndexAtBlockNumberCall), + getTotalStakeAtBlockNumberFromIndex(getTotalStakeAtBlockNumberFromIndexCall), + getTotalStakeHistoryLength(getTotalStakeHistoryLengthCall), + getTotalStakeIndicesAtBlockNumber(getTotalStakeIndicesAtBlockNumberCall), + getTotalStakeUpdateAtIndex(getTotalStakeUpdateAtIndexCall), + initializeQuorum(initializeQuorumCall), + minimumStakeForQuorum(minimumStakeForQuorumCall), + modifyStrategyParams(modifyStrategyParamsCall), + registerOperator(registerOperatorCall), + registryCoordinator(registryCoordinatorCall), + removeStrategies(removeStrategiesCall), + strategiesPerQuorum(strategiesPerQuorumCall), + strategyParams(strategyParamsCall), + strategyParamsByIndex(strategyParamsByIndexCall), + strategyParamsLength(strategyParamsLengthCall), + updateOperatorStake(updateOperatorStakeCall), + weightOfOperatorForQuorum(weightOfOperatorForQuorumCall), + } + #[automatically_derived] + impl StakeRegistryStorageCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [4u8, 145u8, 180u8, 28u8], + [8u8, 115u8, 36u8, 97u8], + [31u8, 155u8, 116u8, 224u8], + [32u8, 182u8, 98u8, 152u8], + [37u8, 80u8, 71u8, 119u8], + [44u8, 217u8, 89u8, 64u8], + [60u8, 165u8, 165u8, 245u8], + [84u8, 1u8, 237u8, 39u8], + [94u8, 90u8, 103u8, 117u8], + [95u8, 31u8, 45u8, 119u8], + [102u8, 172u8, 254u8, 254u8], + [109u8, 20u8, 169u8, 135u8], + [124u8, 23u8, 35u8, 71u8], + [129u8, 192u8, 117u8, 2u8], + [159u8, 60u8, 207u8, 101u8], + [172u8, 107u8, 251u8, 3u8], + [173u8, 200u8, 4u8, 218u8], + [182u8, 144u8, 75u8, 120u8], + [189u8, 41u8, 184u8, 205u8], + [196u8, 103u8, 120u8, 165u8], + [198u8, 1u8, 82u8, 125u8], + [200u8, 41u8, 76u8, 86u8], + [213u8, 236u8, 204u8, 5u8], + [221u8, 152u8, 70u8, 185u8], + [223u8, 92u8, 247u8, 35u8], + [242u8, 190u8, 148u8, 174u8], + [248u8, 81u8, 225u8, 152u8], + [250u8, 40u8, 198u8, 39u8], + [255u8, 105u8, 74u8, 119u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for StakeRegistryStorageCalls { + const NAME: &'static str = "StakeRegistryStorageCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 29usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::MAX_WEIGHING_FUNCTION_LENGTH(_) => { + ::SELECTOR + } + Self::WEIGHTING_DIVISOR(_) => { + ::SELECTOR + } + Self::addStrategies(_) => ::SELECTOR, + Self::delegation(_) => ::SELECTOR, + Self::deregisterOperator(_) => { + ::SELECTOR + } + Self::getCurrentStake(_) => { + ::SELECTOR + } + Self::getCurrentTotalStake(_) => { + ::SELECTOR + } + Self::getLatestStakeUpdate(_) => { + ::SELECTOR + } + Self::getStakeAtBlockNumber(_) => { + ::SELECTOR + } + Self::getStakeAtBlockNumberAndIndex(_) => { + ::SELECTOR + } + Self::getStakeHistory(_) => { + ::SELECTOR + } + Self::getStakeUpdateAtIndex(_) => { + ::SELECTOR + } + Self::getStakeUpdateIndexAtBlockNumber(_) => { + ::SELECTOR + } + Self::getTotalStakeAtBlockNumberFromIndex(_) => { + ::SELECTOR + } + Self::getTotalStakeHistoryLength(_) => { + ::SELECTOR + } + Self::getTotalStakeIndicesAtBlockNumber(_) => { + ::SELECTOR + } + Self::getTotalStakeUpdateAtIndex(_) => { + ::SELECTOR + } + Self::initializeQuorum(_) => { + ::SELECTOR + } + Self::minimumStakeForQuorum(_) => { + ::SELECTOR + } + Self::modifyStrategyParams(_) => { + ::SELECTOR + } + Self::registerOperator(_) => { + ::SELECTOR + } + Self::registryCoordinator(_) => { + ::SELECTOR + } + Self::removeStrategies(_) => { + ::SELECTOR + } + Self::strategiesPerQuorum(_) => { + ::SELECTOR + } + Self::strategyParams(_) => { + ::SELECTOR + } + Self::strategyParamsByIndex(_) => { + ::SELECTOR + } + Self::strategyParamsLength(_) => { + ::SELECTOR + } + Self::updateOperatorStake(_) => { + ::SELECTOR + } + Self::weightOfOperatorForQuorum(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn getTotalStakeHistoryLength( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(StakeRegistryStorageCalls::getTotalStakeHistoryLength) + } + getTotalStakeHistoryLength + }, + { + fn strategyParams( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryStorageCalls::strategyParams) + } + strategyParams + }, + { + fn weightOfOperatorForQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryStorageCalls::weightOfOperatorForQuorum) + } + weightOfOperatorForQuorum + }, + { + fn modifyStrategyParams( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryStorageCalls::modifyStrategyParams) + } + modifyStrategyParams + }, + { + fn registerOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryStorageCalls::registerOperator) + } + registerOperator + }, + { + fn getStakeHistory( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryStorageCalls::getStakeHistory) + } + getStakeHistory + }, + { + fn strategyParamsLength( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryStorageCalls::strategyParamsLength) + } + strategyParamsLength + }, + { + fn getCurrentStake( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryStorageCalls::getCurrentStake) + } + getCurrentStake + }, + { + fn WEIGHTING_DIVISOR( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryStorageCalls::WEIGHTING_DIVISOR) + } + WEIGHTING_DIVISOR + }, + { + fn removeStrategies( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryStorageCalls::removeStrategies) + } + removeStrategies + }, + { + fn updateOperatorStake( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryStorageCalls::updateOperatorStake) + } + updateOperatorStake + }, + { + fn registryCoordinator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryStorageCalls::registryCoordinator) + } + registryCoordinator + }, + { + fn MAX_WEIGHING_FUNCTION_LENGTH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(StakeRegistryStorageCalls::MAX_WEIGHING_FUNCTION_LENGTH) + } + MAX_WEIGHING_FUNCTION_LENGTH + }, + { + fn getTotalStakeIndicesAtBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + StakeRegistryStorageCalls::getTotalStakeIndicesAtBlockNumber, + ) + } + getTotalStakeIndicesAtBlockNumber + }, + { + fn strategiesPerQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryStorageCalls::strategiesPerQuorum) + } + strategiesPerQuorum + }, + { + fn getStakeUpdateAtIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryStorageCalls::getStakeUpdateAtIndex) + } + getStakeUpdateAtIndex + }, + { + fn strategyParamsByIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryStorageCalls::strategyParamsByIndex) + } + strategyParamsByIndex + }, + { + fn getTotalStakeUpdateAtIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(StakeRegistryStorageCalls::getTotalStakeUpdateAtIndex) + } + getTotalStakeUpdateAtIndex + }, + { + fn deregisterOperator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryStorageCalls::deregisterOperator) + } + deregisterOperator + }, + { + fn minimumStakeForQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryStorageCalls::minimumStakeForQuorum) + } + minimumStakeForQuorum + }, + { + fn addStrategies( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryStorageCalls::addStrategies) + } + addStrategies + }, + { + fn getTotalStakeAtBlockNumberFromIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + StakeRegistryStorageCalls::getTotalStakeAtBlockNumberFromIndex, + ) + } + getTotalStakeAtBlockNumberFromIndex + }, + { + fn getCurrentTotalStake( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryStorageCalls::getCurrentTotalStake) + } + getCurrentTotalStake + }, + { + fn getStakeUpdateIndexAtBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + StakeRegistryStorageCalls::getStakeUpdateIndexAtBlockNumber, + ) + } + getStakeUpdateIndexAtBlockNumber + }, + { + fn delegation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StakeRegistryStorageCalls::delegation) + } + delegation + }, + { + fn getStakeAtBlockNumberAndIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + StakeRegistryStorageCalls::getStakeAtBlockNumberAndIndex, + ) + } + getStakeAtBlockNumberAndIndex + }, + { + fn getLatestStakeUpdate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryStorageCalls::getLatestStakeUpdate) + } + getLatestStakeUpdate + }, + { + fn getStakeAtBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryStorageCalls::getStakeAtBlockNumber) + } + getStakeAtBlockNumber + }, + { + fn initializeQuorum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StakeRegistryStorageCalls::initializeQuorum) + } + initializeQuorum + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::MAX_WEIGHING_FUNCTION_LENGTH(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::WEIGHTING_DIVISOR(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::addStrategies(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::delegation(inner) => { + ::abi_encoded_size(inner) + } + Self::deregisterOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getCurrentStake(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getCurrentTotalStake(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getLatestStakeUpdate(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getStakeAtBlockNumber(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getStakeAtBlockNumberAndIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getStakeHistory(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getStakeUpdateAtIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getStakeUpdateIndexAtBlockNumber(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getTotalStakeAtBlockNumberFromIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getTotalStakeHistoryLength(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getTotalStakeIndicesAtBlockNumber(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getTotalStakeUpdateAtIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::initializeQuorum(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::minimumStakeForQuorum(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::modifyStrategyParams(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registerOperator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::registryCoordinator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::removeStrategies(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::strategiesPerQuorum(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::strategyParams(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::strategyParamsByIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::strategyParamsLength(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::updateOperatorStake(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::weightOfOperatorForQuorum(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::MAX_WEIGHING_FUNCTION_LENGTH(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::WEIGHTING_DIVISOR(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::addStrategies(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::delegation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::deregisterOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getCurrentStake(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getCurrentTotalStake(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getLatestStakeUpdate(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getStakeAtBlockNumber(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getStakeAtBlockNumberAndIndex(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getStakeHistory(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getStakeUpdateAtIndex(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getStakeUpdateIndexAtBlockNumber(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getTotalStakeAtBlockNumberFromIndex(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getTotalStakeHistoryLength(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getTotalStakeIndicesAtBlockNumber(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getTotalStakeUpdateAtIndex(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::initializeQuorum(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::minimumStakeForQuorum(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::modifyStrategyParams(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registerOperator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::registryCoordinator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::removeStrategies(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::strategiesPerQuorum(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::strategyParams(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::strategyParamsByIndex(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::strategyParamsLength(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::updateOperatorStake(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::weightOfOperatorForQuorum(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`StakeRegistryStorage`](self) events. + pub enum StakeRegistryStorageEvents { + MinimumStakeForQuorumUpdated(MinimumStakeForQuorumUpdated), + OperatorStakeUpdate(OperatorStakeUpdate), + QuorumCreated(QuorumCreated), + StrategyAddedToQuorum(StrategyAddedToQuorum), + StrategyMultiplierUpdated(StrategyMultiplierUpdated), + StrategyRemovedFromQuorum(StrategyRemovedFromQuorum), + } + #[automatically_derived] + impl StakeRegistryStorageEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 16u8, 86u8, 94u8, 86u8, 202u8, 203u8, 243u8, 46u8, 202u8, 38u8, 121u8, 69u8, 240u8, + 84u8, 254u8, 192u8, 46u8, 89u8, 117u8, 0u8, 50u8, 209u8, 19u8, 211u8, 48u8, 33u8, + 130u8, 173u8, 150u8, 127u8, 84u8, 4u8, + ], + [ + 17u8, 165u8, 100u8, 19u8, 34u8, 218u8, 29u8, 255u8, 86u8, 164u8, 182u8, 110u8, + 170u8, 195u8, 31u8, 250u8, 70u8, 82u8, 149u8, 236u8, 233u8, 7u8, 205u8, 22u8, 52u8, + 55u8, 121u8, 59u8, 77u8, 0u8, 154u8, 117u8, + ], + [ + 38u8, 238u8, 207u8, 242u8, 183u8, 11u8, 10u8, 113u8, 16u8, 79u8, 244u8, 217u8, + 64u8, 186u8, 113u8, 98u8, 210u8, 58u8, 149u8, 194u8, 72u8, 119u8, 31u8, 196u8, + 135u8, 167u8, 190u8, 23u8, 165u8, 150u8, 179u8, 207u8, + ], + [ + 47u8, 82u8, 125u8, 82u8, 126u8, 149u8, 216u8, 254u8, 64u8, 174u8, 197u8, 83u8, + 119u8, 116u8, 59u8, 183u8, 121u8, 8u8, 125u8, 163u8, 246u8, 208u8, 208u8, 143u8, + 18u8, 227u8, 100u8, 68u8, 218u8, 98u8, 50u8, 125u8, + ], + [ + 49u8, 250u8, 46u8, 44u8, 210u8, 128u8, 201u8, 55u8, 94u8, 19u8, 255u8, 207u8, 61u8, + 129u8, 226u8, 55u8, 129u8, 0u8, 24u8, 110u8, 64u8, 88u8, 248u8, 211u8, 221u8, + 182u8, 144u8, 184u8, 45u8, 205u8, 49u8, 247u8, + ], + [ + 131u8, 26u8, 156u8, 134u8, 196u8, 91u8, 179u8, 3u8, 202u8, 243u8, 240u8, 100u8, + 190u8, 43u8, 194u8, 185u8, 253u8, 78u8, 207u8, 25u8, 228u8, 124u8, 74u8, 192u8, + 42u8, 97u8, 231u8, 93u8, 171u8, 254u8, 85u8, 180u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for StakeRegistryStorageEvents { + const NAME: &'static str = "StakeRegistryStorageEvents"; + const COUNT: usize = 6usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some( + ::SIGNATURE_HASH, + ) => ::decode_raw_log( + topics, data, validate, + ) + .map(Self::MinimumStakeForQuorumUpdated), + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::OperatorStakeUpdate) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::QuorumCreated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::StrategyAddedToQuorum) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::StrategyMultiplierUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::StrategyRemovedFromQuorum) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for StakeRegistryStorageEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::MinimumStakeForQuorumUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OperatorStakeUpdate(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::QuorumCreated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::StrategyAddedToQuorum(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::StrategyMultiplierUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::StrategyRemovedFromQuorum(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::MinimumStakeForQuorumUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OperatorStakeUpdate(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::QuorumCreated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::StrategyAddedToQuorum(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::StrategyMultiplierUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::StrategyRemovedFromQuorum(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`StakeRegistryStorage`](self) contract instance. + + See the [wrapper's documentation](`StakeRegistryStorageInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> StakeRegistryStorageInstance { + StakeRegistryStorageInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + StakeRegistryStorageInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + StakeRegistryStorageInstance::::deploy_builder(provider) + } + /**A [`StakeRegistryStorage`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StakeRegistryStorage`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct StakeRegistryStorageInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StakeRegistryStorageInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StakeRegistryStorageInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StakeRegistryStorageInstance + { + /**Creates a new wrapper around an on-chain [`StakeRegistryStorage`](self) contract instance. + + See the [wrapper's documentation](`StakeRegistryStorageInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl StakeRegistryStorageInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StakeRegistryStorageInstance { + StakeRegistryStorageInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StakeRegistryStorageInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`MAX_WEIGHING_FUNCTION_LENGTH`] function. + pub fn MAX_WEIGHING_FUNCTION_LENGTH( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&MAX_WEIGHING_FUNCTION_LENGTHCall {}) + } + ///Creates a new call builder for the [`WEIGHTING_DIVISOR`] function. + pub fn WEIGHTING_DIVISOR( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&WEIGHTING_DIVISORCall {}) + } + ///Creates a new call builder for the [`addStrategies`] function. + pub fn addStrategies( + &self, + quorumNumber: u8, + strategyParams: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&addStrategiesCall { + quorumNumber, + strategyParams, + }) + } + ///Creates a new call builder for the [`delegation`] function. + pub fn delegation(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&delegationCall {}) + } + ///Creates a new call builder for the [`deregisterOperator`] function. + pub fn deregisterOperator( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumbers: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&deregisterOperatorCall { + operatorId, + quorumNumbers, + }) + } + ///Creates a new call builder for the [`getCurrentStake`] function. + pub fn getCurrentStake( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getCurrentStakeCall { + operatorId, + quorumNumber, + }) + } + ///Creates a new call builder for the [`getCurrentTotalStake`] function. + pub fn getCurrentTotalStake( + &self, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getCurrentTotalStakeCall { quorumNumber }) + } + ///Creates a new call builder for the [`getLatestStakeUpdate`] function. + pub fn getLatestStakeUpdate( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getLatestStakeUpdateCall { + operatorId, + quorumNumber, + }) + } + ///Creates a new call builder for the [`getStakeAtBlockNumber`] function. + pub fn getStakeAtBlockNumber( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumber: u8, + blockNumber: u32, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getStakeAtBlockNumberCall { + operatorId, + quorumNumber, + blockNumber, + }) + } + ///Creates a new call builder for the [`getStakeAtBlockNumberAndIndex`] function. + pub fn getStakeAtBlockNumberAndIndex( + &self, + quorumNumber: u8, + blockNumber: u32, + operatorId: alloy::sol_types::private::FixedBytes<32>, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getStakeAtBlockNumberAndIndexCall { + quorumNumber, + blockNumber, + operatorId, + index, + }) + } + ///Creates a new call builder for the [`getStakeHistory`] function. + pub fn getStakeHistory( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getStakeHistoryCall { + operatorId, + quorumNumber, + }) + } + ///Creates a new call builder for the [`getStakeUpdateAtIndex`] function. + pub fn getStakeUpdateAtIndex( + &self, + quorumNumber: u8, + operatorId: alloy::sol_types::private::FixedBytes<32>, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getStakeUpdateAtIndexCall { + quorumNumber, + operatorId, + index, + }) + } + ///Creates a new call builder for the [`getStakeUpdateIndexAtBlockNumber`] function. + pub fn getStakeUpdateIndexAtBlockNumber( + &self, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumber: u8, + blockNumber: u32, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&getStakeUpdateIndexAtBlockNumberCall { + operatorId, + quorumNumber, + blockNumber, + }) + } + ///Creates a new call builder for the [`getTotalStakeAtBlockNumberFromIndex`] function. + pub fn getTotalStakeAtBlockNumberFromIndex( + &self, + quorumNumber: u8, + blockNumber: u32, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&getTotalStakeAtBlockNumberFromIndexCall { + quorumNumber, + blockNumber, + index, + }) + } + ///Creates a new call builder for the [`getTotalStakeHistoryLength`] function. + pub fn getTotalStakeHistoryLength( + &self, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getTotalStakeHistoryLengthCall { quorumNumber }) + } + ///Creates a new call builder for the [`getTotalStakeIndicesAtBlockNumber`] function. + pub fn getTotalStakeIndicesAtBlockNumber( + &self, + blockNumber: u32, + quorumNumbers: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&getTotalStakeIndicesAtBlockNumberCall { + blockNumber, + quorumNumbers, + }) + } + ///Creates a new call builder for the [`getTotalStakeUpdateAtIndex`] function. + pub fn getTotalStakeUpdateAtIndex( + &self, + quorumNumber: u8, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getTotalStakeUpdateAtIndexCall { + quorumNumber, + index, + }) + } + ///Creates a new call builder for the [`initializeQuorum`] function. + pub fn initializeQuorum( + &self, + quorumNumber: u8, + minimumStake: alloy::sol_types::private::primitives::aliases::U96, + strategyParams: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initializeQuorumCall { + quorumNumber, + minimumStake, + strategyParams, + }) + } + ///Creates a new call builder for the [`minimumStakeForQuorum`] function. + pub fn minimumStakeForQuorum( + &self, + _0: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&minimumStakeForQuorumCall { _0 }) + } + ///Creates a new call builder for the [`modifyStrategyParams`] function. + pub fn modifyStrategyParams( + &self, + quorumNumber: u8, + strategyIndices: alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + newMultipliers: alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U96, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&modifyStrategyParamsCall { + quorumNumber, + strategyIndices, + newMultipliers, + }) + } + ///Creates a new call builder for the [`registerOperator`] function. + pub fn registerOperator( + &self, + operator: alloy::sol_types::private::Address, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumbers: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®isterOperatorCall { + operator, + operatorId, + quorumNumbers, + }) + } + ///Creates a new call builder for the [`registryCoordinator`] function. + pub fn registryCoordinator( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(®istryCoordinatorCall {}) + } + ///Creates a new call builder for the [`removeStrategies`] function. + pub fn removeStrategies( + &self, + quorumNumber: u8, + indicesToRemove: alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&removeStrategiesCall { + quorumNumber, + indicesToRemove, + }) + } + ///Creates a new call builder for the [`strategiesPerQuorum`] function. + pub fn strategiesPerQuorum( + &self, + _0: u8, + _1: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&strategiesPerQuorumCall { _0, _1 }) + } + ///Creates a new call builder for the [`strategyParams`] function. + pub fn strategyParams( + &self, + _0: u8, + _1: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&strategyParamsCall { _0, _1 }) + } + ///Creates a new call builder for the [`strategyParamsByIndex`] function. + pub fn strategyParamsByIndex( + &self, + quorumNumber: u8, + index: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&strategyParamsByIndexCall { + quorumNumber, + index, + }) + } + ///Creates a new call builder for the [`strategyParamsLength`] function. + pub fn strategyParamsLength( + &self, + quorumNumber: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&strategyParamsLengthCall { quorumNumber }) + } + ///Creates a new call builder for the [`updateOperatorStake`] function. + pub fn updateOperatorStake( + &self, + operator: alloy::sol_types::private::Address, + operatorId: alloy::sol_types::private::FixedBytes<32>, + quorumNumbers: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateOperatorStakeCall { + operator, + operatorId, + quorumNumbers, + }) + } + ///Creates a new call builder for the [`weightOfOperatorForQuorum`] function. + pub fn weightOfOperatorForQuorum( + &self, + quorumNumber: u8, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&weightOfOperatorForQuorumCall { + quorumNumber, + operator, + }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StakeRegistryStorageInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`MinimumStakeForQuorumUpdated`] event. + pub fn MinimumStakeForQuorumUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OperatorStakeUpdate`] event. + pub fn OperatorStakeUpdate_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`QuorumCreated`] event. + pub fn QuorumCreated_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`StrategyAddedToQuorum`] event. + pub fn StrategyAddedToQuorum_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`StrategyMultiplierUpdated`] event. + pub fn StrategyMultiplierUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`StrategyRemovedFromQuorum`] event. + pub fn StrategyRemovedFromQuorum_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/storageslot.rs b/crates/utils/src/storageslot.rs new file mode 100644 index 00000000..6900660d --- /dev/null +++ b/crates/utils/src/storageslot.rs @@ -0,0 +1,219 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface StorageSlot {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod StorageSlot { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d9c7fee30a73e4b2ba04705e451e9c19b802f42eb2f4ea417e940ec729c9308164736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xD9\xC7\xFE\xE3\ns\xE4\xB2\xBA\x04p^E\x1E\x9C\x19\xB8\x02\xF4.\xB2\xF4\xEAA~\x94\x0E\xC7)\xC90\x81dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d9c7fee30a73e4b2ba04705e451e9c19b802f42eb2f4ea417e940ec729c9308164736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xD9\xC7\xFE\xE3\ns\xE4\xB2\xBA\x04p^E\x1E\x9C\x19\xB8\x02\xF4.\xB2\xF4\xEAA~\x94\x0E\xC7)\xC90\x81dsolcC\0\x08\x0C\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`StorageSlot`](self) contract instance. + + See the [wrapper's documentation](`StorageSlotInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> StorageSlotInstance { + StorageSlotInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + StorageSlotInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + StorageSlotInstance::::deploy_builder(provider) + } + /**A [`StorageSlot`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StorageSlot`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct StorageSlotInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StorageSlotInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StorageSlotInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StorageSlotInstance + { + /**Creates a new wrapper around an on-chain [`StorageSlot`](self) contract instance. + + See the [wrapper's documentation](`StorageSlotInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl StorageSlotInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StorageSlotInstance { + StorageSlotInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StorageSlotInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StorageSlotInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/strategybase.rs b/crates/utils/src/strategybase.rs new file mode 100644 index 00000000..997df148 --- /dev/null +++ b/crates/utils/src/strategybase.rs @@ -0,0 +1,4265 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface StrategyBase { + event Initialized(uint8 version); + event Paused(address indexed account, uint256 newPausedStatus); + event PauserRegistrySet(address pauserRegistry, address newPauserRegistry); + event Unpaused(address indexed account, uint256 newPausedStatus); + + constructor(address _strategyManager); + + function deposit(address token, uint256 amount) external returns (uint256 newShares); + function explanation() external pure returns (string memory); + function initialize(address _underlyingToken, address _pauserRegistry) external; + function pause(uint256 newPausedStatus) external; + function pauseAll() external; + function paused(uint8 index) external view returns (bool); + function paused() external view returns (uint256); + function pauserRegistry() external view returns (address); + function setPauserRegistry(address newPauserRegistry) external; + function shares(address user) external view returns (uint256); + function sharesToUnderlying(uint256 amountShares) external view returns (uint256); + function sharesToUnderlyingView(uint256 amountShares) external view returns (uint256); + function strategyManager() external view returns (address); + function totalShares() external view returns (uint256); + function underlyingToShares(uint256 amountUnderlying) external view returns (uint256); + function underlyingToSharesView(uint256 amountUnderlying) external view returns (uint256); + function underlyingToken() external view returns (address); + function unpause(uint256 newPausedStatus) external; + function userUnderlying(address user) external returns (uint256); + function userUnderlyingView(address user) external view returns (uint256); + function withdraw(address recipient, address token, uint256 amountShares) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_strategyManager", + "type": "address", + "internalType": "contract IStrategyManager" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "deposit", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "newShares", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "explanation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "_underlyingToken", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "_pauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "pause", + "inputs": [ + { + "name": "newPausedStatus", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "pauseAll", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "paused", + "inputs": [ + { + "name": "index", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "paused", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pauserRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setPauserRegistry", + "inputs": [ + { + "name": "newPauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "shares", + "inputs": [ + { + "name": "user", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "sharesToUnderlying", + "inputs": [ + { + "name": "amountShares", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "sharesToUnderlyingView", + "inputs": [ + { + "name": "amountShares", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "strategyManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStrategyManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "totalShares", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "underlyingToShares", + "inputs": [ + { + "name": "amountUnderlying", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "underlyingToSharesView", + "inputs": [ + { + "name": "amountUnderlying", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "underlyingToken", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IERC20" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "unpause", + "inputs": [ + { + "name": "newPausedStatus", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "userUnderlying", + "inputs": [ + { + "name": "user", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "userUnderlyingView", + "inputs": [ + { + "name": "user", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "withdraw", + "inputs": [ + { + "name": "recipient", + "type": "address", + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "amountShares", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Paused", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newPausedStatus", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "PauserRegistrySet", + "inputs": [ + { + "name": "pauserRegistry", + "type": "address", + "indexed": false, + "internalType": "contract IPauserRegistry" + }, + { + "name": "newPauserRegistry", + "type": "address", + "indexed": false, + "internalType": "contract IPauserRegistry" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Unpaused", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newPausedStatus", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod StrategyBase { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60a060405234801561001057600080fd5b50604051620018b9380380620018b98339810160408190526100319161010c565b6001600160a01b03811660805261004661004c565b5061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b60805161174c6200016d6000396000818161019901528181610570015281816109550152610a20015261174c6000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b8578063ab5921e11161007c578063ab5921e11461029c578063ce7c2ac2146102b1578063d9caed12146102c4578063e3dae51c146102d7578063f3e73875146102ea578063fabc1cbc146102fd57600080fd5b80635c975abb146102425780637a8b26371461024a578063886f11951461025d5780638c871019146102765780638f6a62401461028957600080fd5b806347e7ef24116100ff57806347e7ef24146101d2578063485cc955146101e5578063553ca5f8146101f8578063595c6a671461020b5780635ac86ab71461021357600080fd5b806310d67a2f1461013c578063136439dd146101515780632495a5991461016457806339b70e38146101945780633a98ef39146101bb575b600080fd5b61014f61014a3660046113db565b610310565b005b61014f61015f3660046113f8565b6103cc565b603254610177906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101777f000000000000000000000000000000000000000000000000000000000000000081565b6101c460335481565b60405190815260200161018b565b6101c46101e0366004611411565b610510565b61014f6101f336600461143d565b6106b4565b6101c46102063660046113db565b6107c9565b61014f6107dd565b610232610221366004611476565b6001805460ff9092161b9081161490565b604051901515815260200161018b565b6001546101c4565b6101c46102583660046113f8565b6108a9565b600054610177906201000090046001600160a01b031681565b6101c46102843660046113f8565b6108f4565b6101c46102973660046113db565b6108ff565b6102a461090d565b60405161018b91906114c9565b6101c46102bf3660046113db565b61092d565b61014f6102d23660046114fc565b6109c2565b6101c46102e53660046113f8565b610b8b565b6101c46102f83660046113f8565b610bc4565b61014f61030b3660046113f8565b610bcf565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610363573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610387919061153d565b6001600160a01b0316336001600160a01b0316146103c05760405162461bcd60e51b81526004016103b79061155a565b60405180910390fd5b6103c981610d2b565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d91906115a4565b6104595760405162461bcd60e51b81526004016103b7906115c6565b600154818116146104d25760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156105655760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105dd5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b6105e78484610e30565b60335460006105f86103e883611624565b905060006103e8610607610eb0565b6106119190611624565b9050600061061f878361163c565b90508061062c8489611653565b6106369190611672565b95508561069c5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103b7565b6106a68685611624565b603355505050505092915050565b600054610100900460ff16158080156106d45750600054600160ff909116105b806106ee5750303b1580156106ee575060005460ff166001145b6107515760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103b7565b6000805460ff191660011790558015610774576000805461ff0019166101001790555b61077e8383610f22565b80156107c4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006107d76102588361092d565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561082a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084e91906115a4565b61086a5760405162461bcd60e51b81526004016103b7906115c6565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e86033546108bc9190611624565b905060006103e86108cb610eb0565b6108d59190611624565b9050816108e28583611653565b6108ec9190611672565b949350505050565b60006107d782610b8b565b60006107d76102f88361092d565b60606040518060800160405280604d81526020016116ca604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa15801561099e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d79190611694565b6001805460029081161415610a155760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a8d5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b610a98848484610fb3565b60335480831115610b275760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103b7565b6000610b356103e883611624565b905060006103e8610b44610eb0565b610b4e9190611624565b9050600082610b5d8784611653565b610b679190611672565b9050610b73868561163c565b603355610b81888883611036565b5050505050505050565b6000806103e8603354610b9e9190611624565b905060006103e8610bad610eb0565b610bb79190611624565b9050806108e28386611653565b60006107d7826108a9565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c46919061153d565b6001600160a01b0316336001600160a01b031614610c765760405162461bcd60e51b81526004016103b79061155a565b600154198119600154191614610cf45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610505565b6001600160a01b038116610db95760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103b7565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b03838116911614610eac5760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b60648201526084016103b7565b5050565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d9190611694565b905090565b600054610100900460ff16610f8d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b7565b603280546001600160a01b0319166001600160a01b038416179055610eac81600061104a565b6032546001600160a01b038381169116146107c45760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e000000000060648201526084016103b7565b6107c46001600160a01b0383168483611136565b6000546201000090046001600160a01b031615801561107157506001600160a01b03821615155b6110f35760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610eac82610d2b565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526107c4928692916000916111c6918516908490611243565b8051909150156107c457808060200190518101906111e491906115a4565b6107c45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103b7565b6060611252848460008561125c565b90505b9392505050565b6060824710156112bd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103b7565b6001600160a01b0385163b6113145760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b7565b600080866001600160a01b0316858760405161133091906116ad565b60006040518083038185875af1925050503d806000811461136d576040519150601f19603f3d011682016040523d82523d6000602084013e611372565b606091505b509150915061138282828661138d565b979650505050505050565b6060831561139c575081611255565b8251156113ac5782518084602001fd5b8160405162461bcd60e51b81526004016103b791906114c9565b6001600160a01b03811681146103c957600080fd5b6000602082840312156113ed57600080fd5b8135611255816113c6565b60006020828403121561140a57600080fd5b5035919050565b6000806040838503121561142457600080fd5b823561142f816113c6565b946020939093013593505050565b6000806040838503121561145057600080fd5b823561145b816113c6565b9150602083013561146b816113c6565b809150509250929050565b60006020828403121561148857600080fd5b813560ff8116811461125557600080fd5b60005b838110156114b457818101518382015260200161149c565b838111156114c3576000848401525b50505050565b60208152600082518060208401526114e8816040850160208701611499565b601f01601f19169190910160400192915050565b60008060006060848603121561151157600080fd5b833561151c816113c6565b9250602084013561152c816113c6565b929592945050506040919091013590565b60006020828403121561154f57600080fd5b8151611255816113c6565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156115b657600080fd5b8151801515811461125557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082198211156116375761163761160e565b500190565b60008282101561164e5761164e61160e565b500390565b600081600019048311821515161561166d5761166d61160e565b500290565b60008261168f57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156116a657600080fd5b5051919050565b600082516116bf818460208701611499565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a264697066735822122025b35f1032ae6d3bb61b4872fd219220df0429496a9440af55981863d55a694564736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qb\0\x18\xB98\x03\x80b\0\x18\xB9\x839\x81\x01`@\x81\x90Ra\x001\x91a\x01\x0CV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80Ra\0Fa\0LV[Pa\x01=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\x87\x91\x90a\x15=V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x03\xC0W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x15ZV[`@Q\x80\x91\x03\x90\xFD[a\x03\xC9\x81a\r+V[PV[`\0T`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01Rb\x01\0\0\x90\x91\x04`\x01`\x01`\xA0\x1B\x03\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\x19W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04=\x91\x90a\x15\xA4V[a\x04YW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x15\xC6V[`\x01T\x81\x81\x16\x14a\x04\xD2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.pause: invalid attempt `D\x82\x01R\x7Fto unpause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x03\xB7V[`\x01\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01[`@Q\x80\x91\x03\x90\xA2PV[`\x01\x80T`\0\x91\x82\x91\x81\x16\x14\x15a\x05eW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01Rx\x14\x18]\\\xD8X\x9B\x19N\x88\x1A[\x99\x19^\x08\x1A\\\xC8\x1C\x18]\\\xD9Y`:\x1B`D\x82\x01R`d\x01a\x03\xB7V[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x05\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x03\xB7V[a\x05\xE7\x84\x84a\x0E0V[`3T`\0a\x05\xF8a\x03\xE8\x83a\x16$V[\x90P`\0a\x03\xE8a\x06\x07a\x0E\xB0V[a\x06\x11\x91\x90a\x16$V[\x90P`\0a\x06\x1F\x87\x83a\x16=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08N\x91\x90a\x15\xA4V[a\x08jW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x15\xC6V[`\0\x19`\x01\x81\x90U`@Q\x90\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2V[`\0\x80a\x03\xE8`3Ta\x08\xBC\x91\x90a\x16$V[\x90P`\0a\x03\xE8a\x08\xCBa\x0E\xB0V[a\x08\xD5\x91\x90a\x16$V[\x90P\x81a\x08\xE2\x85\x83a\x16SV[a\x08\xEC\x91\x90a\x16rV[\x94\x93PPPPV[`\0a\x07\xD7\x82a\x0B\x8BV[`\0a\x07\xD7a\x02\xF8\x83a\t-V[```@Q\x80`\x80\x01`@R\x80`M\x81R` \x01a\x16\xCA`M\x919\x90P\x90V[`@Qc=?\x06\xC9`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R0`$\x83\x01R`\0\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90cz~\r\x92\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\x9EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xD7\x91\x90a\x16\x94V[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\n\x15W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01Rx\x14\x18]\\\xD8X\x9B\x19N\x88\x1A[\x99\x19^\x08\x1A\\\xC8\x1C\x18]\\\xD9Y`:\x1B`D\x82\x01R`d\x01a\x03\xB7V[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\n\x8DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x03\xB7V[a\n\x98\x84\x84\x84a\x0F\xB3V[`3T\x80\x83\x11\x15a\x0B'W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`M`$\x82\x01R\x7FStrategyBase.withdraw: amountSha`D\x82\x01R\x7Fres must be less than or equal t`d\x82\x01Rlo totalShares`\x98\x1B`\x84\x82\x01R`\xA4\x01a\x03\xB7V[`\0a\x0B5a\x03\xE8\x83a\x16$V[\x90P`\0a\x03\xE8a\x0BDa\x0E\xB0V[a\x0BN\x91\x90a\x16$V[\x90P`\0\x82a\x0B]\x87\x84a\x16SV[a\x0Bg\x91\x90a\x16rV[\x90Pa\x0Bs\x86\x85a\x16=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0CF\x91\x90a\x15=V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0CvW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x15ZV[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\x0C\xF4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.unpause: invalid attemp`D\x82\x01R\x7Ft to pause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x03\xB7V[`\x01\x81\x90U`@Q\x81\x81R3\x90\x7F5\x82\xD1\x82\x8E&\xBFV\xBD\x80\x15\x02\xBC\x02\x1A\xC0\xBC\x8A\xFBW\xC8&\xE4\x98kEY<\x8F\xAD8\x9C\x90` \x01a\x05\x05V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\xB9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FPausable._setPauserRegistry: new`D\x82\x01R\x7FPauserRegistry cannot be the zer`d\x82\x01Rho address`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\x03\xB7V[`\0T`@\x80Q`\x01`\x01`\xA0\x1B\x03b\x01\0\0\x90\x93\x04\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7Fn\x9F\xCDS\x98\x96\xFC\xA6\x0E\x8B\x0F\x01\xDDX\x023\xE4\x8Ak\x0F}\xF0\x13\xB8\x9B\xA7\xF5e\x86\x9A\xCD\xB6\x91\x01`@Q\x80\x91\x03\x90\xA1`\0\x80T`\x01`\x01`\xA0\x1B\x03\x90\x92\x16b\x01\0\0\x02b\x01\0\0`\x01`\xB0\x1B\x03\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[`2T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14a\x0E\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`6`$\x82\x01R\x7FStrategyBase.deposit: Can only d`D\x82\x01Ru2\xB87\xB9\xB4\xBA\x10:\xB722\xB96<\xB4\xB73\xAA7\xB5\xB2\xB7`Q\x1B`d\x82\x01R`\x84\x01a\x03\xB7V[PPV[`2T`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\0\x91`\x01`\x01`\xA0\x1B\x03\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xF9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\x1D\x91\x90a\x16\x94V[\x90P\x90V[`\0Ta\x01\0\x90\x04`\xFF\x16a\x0F\x8DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`+`$\x82\x01R\x7FInitializable: contract is not i`D\x82\x01Rjnitializing`\xA8\x1B`d\x82\x01R`\x84\x01a\x03\xB7V[`2\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x17\x90Ua\x0E\xAC\x81`\0a\x10JV[`2T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14a\x07\xC4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`;`$\x82\x01R\x7FStrategyBase.withdraw: Can only `D\x82\x01R\x7Fwithdraw the strategy token\0\0\0\0\0`d\x82\x01R`\x84\x01a\x03\xB7V[a\x07\xC4`\x01`\x01`\xA0\x1B\x03\x83\x16\x84\x83a\x116V[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x10qWP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a\x10\xF3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FPausable._initializePauser: _ini`D\x82\x01R\x7FtializePauser() can only be call`d\x82\x01Rfed once`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x03\xB7V[`\x01\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2a\x0E\xAC\x82a\r+V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`$\x83\x01R`D\x80\x83\x01\x85\x90R\x83Q\x80\x84\x03\x90\x91\x01\x81R`d\x90\x92\x01\x83R` \x80\x83\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xA9\x05\x9C\xBB`\xE0\x1B\x17\x90R\x83Q\x80\x85\x01\x90\x94R\x80\x84R\x7FSafeERC20: low-level call failed\x90\x84\x01Ra\x07\xC4\x92\x86\x92\x91`\0\x91a\x11\xC6\x91\x85\x16\x90\x84\x90a\x12CV[\x80Q\x90\x91P\x15a\x07\xC4W\x80\x80` \x01\x90Q\x81\x01\x90a\x11\xE4\x91\x90a\x15\xA4V[a\x07\xC4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`*`$\x82\x01R\x7FSafeERC20: ERC20 operation did n`D\x82\x01Ri\x1B\xDD\x08\x1C\xDDX\xD8\xD9YY`\xB2\x1B`d\x82\x01R`\x84\x01a\x03\xB7V[``a\x12R\x84\x84`\0\x85a\x12\\V[\x90P[\x93\x92PPPV[``\x82G\x10\x15a\x12\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FAddress: insufficient balance fo`D\x82\x01Re\x1C\x88\x18\xD8[\x1B`\xD2\x1B`d\x82\x01R`\x84\x01a\x03\xB7V[`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x13\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01a\x03\xB7V[`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa\x130\x91\x90a\x16\xADV[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x13mW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x13rV[``\x91P[P\x91P\x91Pa\x13\x82\x82\x82\x86a\x13\x8DV[\x97\x96PPPPPPPV[``\x83\x15a\x13\x9CWP\x81a\x12UV[\x82Q\x15a\x13\xACW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x91\x90a\x14\xC9V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x13\xEDW`\0\x80\xFD[\x815a\x12U\x81a\x13\xC6V[`\0` \x82\x84\x03\x12\x15a\x14\nW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x14$W`\0\x80\xFD[\x825a\x14/\x81a\x13\xC6V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x14PW`\0\x80\xFD[\x825a\x14[\x81a\x13\xC6V[\x91P` \x83\x015a\x14k\x81a\x13\xC6V[\x80\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x14\x88W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x12UW`\0\x80\xFD[`\0[\x83\x81\x10\x15a\x14\xB4W\x81\x81\x01Q\x83\x82\x01R` \x01a\x14\x9CV[\x83\x81\x11\x15a\x14\xC3W`\0\x84\x84\x01R[PPPPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x14\xE8\x81`@\x85\x01` \x87\x01a\x14\x99V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x15\x11W`\0\x80\xFD[\x835a\x15\x1C\x81a\x13\xC6V[\x92P` \x84\x015a\x15,\x81a\x13\xC6V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\x15OW`\0\x80\xFD[\x81Qa\x12U\x81a\x13\xC6V[` \x80\x82R`*\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Ri9\x90:\xB780\xBA\xB9\xB2\xB9`\xB1\x1B``\x82\x01R`\x80\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x15\xB6W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x12UW`\0\x80\xFD[` \x80\x82R`(\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Rg9\x9080\xBA\xB9\xB2\xB9`\xC1\x1B``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\x167Wa\x167a\x16\x0EV[P\x01\x90V[`\0\x82\x82\x10\x15a\x16NWa\x16Na\x16\x0EV[P\x03\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x16mWa\x16ma\x16\x0EV[P\x02\x90V[`\0\x82a\x16\x8FWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0` \x82\x84\x03\x12\x15a\x16\xA6W`\0\x80\xFD[PQ\x91\x90PV[`\0\x82Qa\x16\xBF\x81\x84` \x87\x01a\x14\x99V[\x91\x90\x91\x01\x92\x91PPV\xFEBase Strategy implementation to inherit from for more complex implementations\xA2dipfsX\"\x12 %\xB3_\x102\xAEm;\xB6\x1BHr\xFD!\x92 \xDF\x04)Ij\x94@\xAFU\x98\x18c\xD5ZiEdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b8578063ab5921e11161007c578063ab5921e11461029c578063ce7c2ac2146102b1578063d9caed12146102c4578063e3dae51c146102d7578063f3e73875146102ea578063fabc1cbc146102fd57600080fd5b80635c975abb146102425780637a8b26371461024a578063886f11951461025d5780638c871019146102765780638f6a62401461028957600080fd5b806347e7ef24116100ff57806347e7ef24146101d2578063485cc955146101e5578063553ca5f8146101f8578063595c6a671461020b5780635ac86ab71461021357600080fd5b806310d67a2f1461013c578063136439dd146101515780632495a5991461016457806339b70e38146101945780633a98ef39146101bb575b600080fd5b61014f61014a3660046113db565b610310565b005b61014f61015f3660046113f8565b6103cc565b603254610177906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101777f000000000000000000000000000000000000000000000000000000000000000081565b6101c460335481565b60405190815260200161018b565b6101c46101e0366004611411565b610510565b61014f6101f336600461143d565b6106b4565b6101c46102063660046113db565b6107c9565b61014f6107dd565b610232610221366004611476565b6001805460ff9092161b9081161490565b604051901515815260200161018b565b6001546101c4565b6101c46102583660046113f8565b6108a9565b600054610177906201000090046001600160a01b031681565b6101c46102843660046113f8565b6108f4565b6101c46102973660046113db565b6108ff565b6102a461090d565b60405161018b91906114c9565b6101c46102bf3660046113db565b61092d565b61014f6102d23660046114fc565b6109c2565b6101c46102e53660046113f8565b610b8b565b6101c46102f83660046113f8565b610bc4565b61014f61030b3660046113f8565b610bcf565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610363573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610387919061153d565b6001600160a01b0316336001600160a01b0316146103c05760405162461bcd60e51b81526004016103b79061155a565b60405180910390fd5b6103c981610d2b565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d91906115a4565b6104595760405162461bcd60e51b81526004016103b7906115c6565b600154818116146104d25760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156105655760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105dd5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b6105e78484610e30565b60335460006105f86103e883611624565b905060006103e8610607610eb0565b6106119190611624565b9050600061061f878361163c565b90508061062c8489611653565b6106369190611672565b95508561069c5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103b7565b6106a68685611624565b603355505050505092915050565b600054610100900460ff16158080156106d45750600054600160ff909116105b806106ee5750303b1580156106ee575060005460ff166001145b6107515760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103b7565b6000805460ff191660011790558015610774576000805461ff0019166101001790555b61077e8383610f22565b80156107c4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006107d76102588361092d565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561082a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084e91906115a4565b61086a5760405162461bcd60e51b81526004016103b7906115c6565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e86033546108bc9190611624565b905060006103e86108cb610eb0565b6108d59190611624565b9050816108e28583611653565b6108ec9190611672565b949350505050565b60006107d782610b8b565b60006107d76102f88361092d565b60606040518060800160405280604d81526020016116ca604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa15801561099e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d79190611694565b6001805460029081161415610a155760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a8d5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b610a98848484610fb3565b60335480831115610b275760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103b7565b6000610b356103e883611624565b905060006103e8610b44610eb0565b610b4e9190611624565b9050600082610b5d8784611653565b610b679190611672565b9050610b73868561163c565b603355610b81888883611036565b5050505050505050565b6000806103e8603354610b9e9190611624565b905060006103e8610bad610eb0565b610bb79190611624565b9050806108e28386611653565b60006107d7826108a9565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c46919061153d565b6001600160a01b0316336001600160a01b031614610c765760405162461bcd60e51b81526004016103b79061155a565b600154198119600154191614610cf45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610505565b6001600160a01b038116610db95760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103b7565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b03838116911614610eac5760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b60648201526084016103b7565b5050565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d9190611694565b905090565b600054610100900460ff16610f8d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b7565b603280546001600160a01b0319166001600160a01b038416179055610eac81600061104a565b6032546001600160a01b038381169116146107c45760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e000000000060648201526084016103b7565b6107c46001600160a01b0383168483611136565b6000546201000090046001600160a01b031615801561107157506001600160a01b03821615155b6110f35760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610eac82610d2b565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526107c4928692916000916111c6918516908490611243565b8051909150156107c457808060200190518101906111e491906115a4565b6107c45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103b7565b6060611252848460008561125c565b90505b9392505050565b6060824710156112bd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103b7565b6001600160a01b0385163b6113145760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b7565b600080866001600160a01b0316858760405161133091906116ad565b60006040518083038185875af1925050503d806000811461136d576040519150601f19603f3d011682016040523d82523d6000602084013e611372565b606091505b509150915061138282828661138d565b979650505050505050565b6060831561139c575081611255565b8251156113ac5782518084602001fd5b8160405162461bcd60e51b81526004016103b791906114c9565b6001600160a01b03811681146103c957600080fd5b6000602082840312156113ed57600080fd5b8135611255816113c6565b60006020828403121561140a57600080fd5b5035919050565b6000806040838503121561142457600080fd5b823561142f816113c6565b946020939093013593505050565b6000806040838503121561145057600080fd5b823561145b816113c6565b9150602083013561146b816113c6565b809150509250929050565b60006020828403121561148857600080fd5b813560ff8116811461125557600080fd5b60005b838110156114b457818101518382015260200161149c565b838111156114c3576000848401525b50505050565b60208152600082518060208401526114e8816040850160208701611499565b601f01601f19169190910160400192915050565b60008060006060848603121561151157600080fd5b833561151c816113c6565b9250602084013561152c816113c6565b929592945050506040919091013590565b60006020828403121561154f57600080fd5b8151611255816113c6565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156115b657600080fd5b8151801515811461125557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082198211156116375761163761160e565b500190565b60008282101561164e5761164e61160e565b500390565b600081600019048311821515161561166d5761166d61160e565b500290565b60008261168f57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156116a657600080fd5b5051919050565b600082516116bf818460208701611499565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a264697066735822122025b35f1032ae6d3bb61b4872fd219220df0429496a9440af55981863d55a694564736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x017W`\x005`\xE0\x1C\x80c\\\x97Z\xBB\x11a\0\xB8W\x80c\xABY!\xE1\x11a\0|W\x80c\xABY!\xE1\x14a\x02\x9CW\x80c\xCE|*\xC2\x14a\x02\xB1W\x80c\xD9\xCA\xED\x12\x14a\x02\xC4W\x80c\xE3\xDA\xE5\x1C\x14a\x02\xD7W\x80c\xF3\xE78u\x14a\x02\xEAW\x80c\xFA\xBC\x1C\xBC\x14a\x02\xFDW`\0\x80\xFD[\x80c\\\x97Z\xBB\x14a\x02BW\x80cz\x8B&7\x14a\x02JW\x80c\x88o\x11\x95\x14a\x02]W\x80c\x8C\x87\x10\x19\x14a\x02vW\x80c\x8Fjb@\x14a\x02\x89W`\0\x80\xFD[\x80cG\xE7\xEF$\x11a\0\xFFW\x80cG\xE7\xEF$\x14a\x01\xD2W\x80cH\\\xC9U\x14a\x01\xE5W\x80cU<\xA5\xF8\x14a\x01\xF8W\x80cY\\jg\x14a\x02\x0BW\x80cZ\xC8j\xB7\x14a\x02\x13W`\0\x80\xFD[\x80c\x10\xD6z/\x14a\x01=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\x87\x91\x90a\x15=V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x03\xC0W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x15ZV[`@Q\x80\x91\x03\x90\xFD[a\x03\xC9\x81a\r+V[PV[`\0T`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01Rb\x01\0\0\x90\x91\x04`\x01`\x01`\xA0\x1B\x03\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\x19W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04=\x91\x90a\x15\xA4V[a\x04YW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x15\xC6V[`\x01T\x81\x81\x16\x14a\x04\xD2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.pause: invalid attempt `D\x82\x01R\x7Fto unpause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x03\xB7V[`\x01\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01[`@Q\x80\x91\x03\x90\xA2PV[`\x01\x80T`\0\x91\x82\x91\x81\x16\x14\x15a\x05eW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01Rx\x14\x18]\\\xD8X\x9B\x19N\x88\x1A[\x99\x19^\x08\x1A\\\xC8\x1C\x18]\\\xD9Y`:\x1B`D\x82\x01R`d\x01a\x03\xB7V[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x05\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x03\xB7V[a\x05\xE7\x84\x84a\x0E0V[`3T`\0a\x05\xF8a\x03\xE8\x83a\x16$V[\x90P`\0a\x03\xE8a\x06\x07a\x0E\xB0V[a\x06\x11\x91\x90a\x16$V[\x90P`\0a\x06\x1F\x87\x83a\x16=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08N\x91\x90a\x15\xA4V[a\x08jW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x15\xC6V[`\0\x19`\x01\x81\x90U`@Q\x90\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2V[`\0\x80a\x03\xE8`3Ta\x08\xBC\x91\x90a\x16$V[\x90P`\0a\x03\xE8a\x08\xCBa\x0E\xB0V[a\x08\xD5\x91\x90a\x16$V[\x90P\x81a\x08\xE2\x85\x83a\x16SV[a\x08\xEC\x91\x90a\x16rV[\x94\x93PPPPV[`\0a\x07\xD7\x82a\x0B\x8BV[`\0a\x07\xD7a\x02\xF8\x83a\t-V[```@Q\x80`\x80\x01`@R\x80`M\x81R` \x01a\x16\xCA`M\x919\x90P\x90V[`@Qc=?\x06\xC9`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R0`$\x83\x01R`\0\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90cz~\r\x92\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\x9EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xD7\x91\x90a\x16\x94V[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\n\x15W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01Rx\x14\x18]\\\xD8X\x9B\x19N\x88\x1A[\x99\x19^\x08\x1A\\\xC8\x1C\x18]\\\xD9Y`:\x1B`D\x82\x01R`d\x01a\x03\xB7V[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\n\x8DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x03\xB7V[a\n\x98\x84\x84\x84a\x0F\xB3V[`3T\x80\x83\x11\x15a\x0B'W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`M`$\x82\x01R\x7FStrategyBase.withdraw: amountSha`D\x82\x01R\x7Fres must be less than or equal t`d\x82\x01Rlo totalShares`\x98\x1B`\x84\x82\x01R`\xA4\x01a\x03\xB7V[`\0a\x0B5a\x03\xE8\x83a\x16$V[\x90P`\0a\x03\xE8a\x0BDa\x0E\xB0V[a\x0BN\x91\x90a\x16$V[\x90P`\0\x82a\x0B]\x87\x84a\x16SV[a\x0Bg\x91\x90a\x16rV[\x90Pa\x0Bs\x86\x85a\x16=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0CF\x91\x90a\x15=V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0CvW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x90a\x15ZV[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\x0C\xF4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.unpause: invalid attemp`D\x82\x01R\x7Ft to pause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x03\xB7V[`\x01\x81\x90U`@Q\x81\x81R3\x90\x7F5\x82\xD1\x82\x8E&\xBFV\xBD\x80\x15\x02\xBC\x02\x1A\xC0\xBC\x8A\xFBW\xC8&\xE4\x98kEY<\x8F\xAD8\x9C\x90` \x01a\x05\x05V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\xB9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FPausable._setPauserRegistry: new`D\x82\x01R\x7FPauserRegistry cannot be the zer`d\x82\x01Rho address`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\x03\xB7V[`\0T`@\x80Q`\x01`\x01`\xA0\x1B\x03b\x01\0\0\x90\x93\x04\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7Fn\x9F\xCDS\x98\x96\xFC\xA6\x0E\x8B\x0F\x01\xDDX\x023\xE4\x8Ak\x0F}\xF0\x13\xB8\x9B\xA7\xF5e\x86\x9A\xCD\xB6\x91\x01`@Q\x80\x91\x03\x90\xA1`\0\x80T`\x01`\x01`\xA0\x1B\x03\x90\x92\x16b\x01\0\0\x02b\x01\0\0`\x01`\xB0\x1B\x03\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[`2T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14a\x0E\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`6`$\x82\x01R\x7FStrategyBase.deposit: Can only d`D\x82\x01Ru2\xB87\xB9\xB4\xBA\x10:\xB722\xB96<\xB4\xB73\xAA7\xB5\xB2\xB7`Q\x1B`d\x82\x01R`\x84\x01a\x03\xB7V[PPV[`2T`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\0\x91`\x01`\x01`\xA0\x1B\x03\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xF9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\x1D\x91\x90a\x16\x94V[\x90P\x90V[`\0Ta\x01\0\x90\x04`\xFF\x16a\x0F\x8DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`+`$\x82\x01R\x7FInitializable: contract is not i`D\x82\x01Rjnitializing`\xA8\x1B`d\x82\x01R`\x84\x01a\x03\xB7V[`2\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x17\x90Ua\x0E\xAC\x81`\0a\x10JV[`2T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14a\x07\xC4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`;`$\x82\x01R\x7FStrategyBase.withdraw: Can only `D\x82\x01R\x7Fwithdraw the strategy token\0\0\0\0\0`d\x82\x01R`\x84\x01a\x03\xB7V[a\x07\xC4`\x01`\x01`\xA0\x1B\x03\x83\x16\x84\x83a\x116V[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x10qWP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a\x10\xF3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FPausable._initializePauser: _ini`D\x82\x01R\x7FtializePauser() can only be call`d\x82\x01Rfed once`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x03\xB7V[`\x01\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2a\x0E\xAC\x82a\r+V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`$\x83\x01R`D\x80\x83\x01\x85\x90R\x83Q\x80\x84\x03\x90\x91\x01\x81R`d\x90\x92\x01\x83R` \x80\x83\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xA9\x05\x9C\xBB`\xE0\x1B\x17\x90R\x83Q\x80\x85\x01\x90\x94R\x80\x84R\x7FSafeERC20: low-level call failed\x90\x84\x01Ra\x07\xC4\x92\x86\x92\x91`\0\x91a\x11\xC6\x91\x85\x16\x90\x84\x90a\x12CV[\x80Q\x90\x91P\x15a\x07\xC4W\x80\x80` \x01\x90Q\x81\x01\x90a\x11\xE4\x91\x90a\x15\xA4V[a\x07\xC4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`*`$\x82\x01R\x7FSafeERC20: ERC20 operation did n`D\x82\x01Ri\x1B\xDD\x08\x1C\xDDX\xD8\xD9YY`\xB2\x1B`d\x82\x01R`\x84\x01a\x03\xB7V[``a\x12R\x84\x84`\0\x85a\x12\\V[\x90P[\x93\x92PPPV[``\x82G\x10\x15a\x12\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FAddress: insufficient balance fo`D\x82\x01Re\x1C\x88\x18\xD8[\x1B`\xD2\x1B`d\x82\x01R`\x84\x01a\x03\xB7V[`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x13\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01a\x03\xB7V[`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa\x130\x91\x90a\x16\xADV[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x13mW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x13rV[``\x91P[P\x91P\x91Pa\x13\x82\x82\x82\x86a\x13\x8DV[\x97\x96PPPPPPPV[``\x83\x15a\x13\x9CWP\x81a\x12UV[\x82Q\x15a\x13\xACW\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xB7\x91\x90a\x14\xC9V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xC9W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x13\xEDW`\0\x80\xFD[\x815a\x12U\x81a\x13\xC6V[`\0` \x82\x84\x03\x12\x15a\x14\nW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x14$W`\0\x80\xFD[\x825a\x14/\x81a\x13\xC6V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x14PW`\0\x80\xFD[\x825a\x14[\x81a\x13\xC6V[\x91P` \x83\x015a\x14k\x81a\x13\xC6V[\x80\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x14\x88W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x12UW`\0\x80\xFD[`\0[\x83\x81\x10\x15a\x14\xB4W\x81\x81\x01Q\x83\x82\x01R` \x01a\x14\x9CV[\x83\x81\x11\x15a\x14\xC3W`\0\x84\x84\x01R[PPPPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x14\xE8\x81`@\x85\x01` \x87\x01a\x14\x99V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x15\x11W`\0\x80\xFD[\x835a\x15\x1C\x81a\x13\xC6V[\x92P` \x84\x015a\x15,\x81a\x13\xC6V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\x15OW`\0\x80\xFD[\x81Qa\x12U\x81a\x13\xC6V[` \x80\x82R`*\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Ri9\x90:\xB780\xBA\xB9\xB2\xB9`\xB1\x1B``\x82\x01R`\x80\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x15\xB6W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x12UW`\0\x80\xFD[` \x80\x82R`(\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Rg9\x9080\xBA\xB9\xB2\xB9`\xC1\x1B``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\x167Wa\x167a\x16\x0EV[P\x01\x90V[`\0\x82\x82\x10\x15a\x16NWa\x16Na\x16\x0EV[P\x03\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x16mWa\x16ma\x16\x0EV[P\x02\x90V[`\0\x82a\x16\x8FWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0` \x82\x84\x03\x12\x15a\x16\xA6W`\0\x80\xFD[PQ\x91\x90PV[`\0\x82Qa\x16\xBF\x81\x84` \x87\x01a\x14\x99V[\x91\x90\x91\x01\x92\x91PPV\xFEBase Strategy implementation to inherit from for more complex implementations\xA2dipfsX\"\x12 %\xB3_\x102\xAEm;\xB6\x1BHr\xFD!\x92 \xDF\x04)Ij\x94@\xAFU\x98\x18c\xD5ZiEdsolcC\0\x08\x0C\x003", + ); + /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`. + ```solidity + event Initialized(uint8 version); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Initialized { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "Initialized(uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, + 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, + 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { version: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.version, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Initialized { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Initialized> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Initialized) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Paused(address,uint256)` and selector `0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d`. + ```solidity + event Paused(address indexed account, uint256 newPausedStatus); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Paused { + #[allow(missing_docs)] + pub account: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Paused { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Paused(address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8, 188u8, + 152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8, 11u8, 182u8, + 224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + account: topics.1, + newPausedStatus: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.account.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.account, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Paused { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Paused> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Paused) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `PauserRegistrySet(address,address)` and selector `0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6`. + ```solidity + event PauserRegistrySet(address pauserRegistry, address newPauserRegistry); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct PauserRegistrySet { + #[allow(missing_docs)] + pub pauserRegistry: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newPauserRegistry: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for PauserRegistrySet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "PauserRegistrySet(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 110u8, 159u8, 205u8, 83u8, 152u8, 150u8, 252u8, 166u8, 14u8, 139u8, 15u8, 1u8, + 221u8, 88u8, 2u8, 51u8, 228u8, 138u8, 107u8, 15u8, 125u8, 240u8, 19u8, 184u8, + 155u8, 167u8, 245u8, 101u8, 134u8, 154u8, 205u8, 182u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + pauserRegistry: data.0, + newPauserRegistry: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.pauserRegistry, + ), + ::tokenize( + &self.newPauserRegistry, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for PauserRegistrySet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&PauserRegistrySet> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &PauserRegistrySet) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Unpaused(address,uint256)` and selector `0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c`. + ```solidity + event Unpaused(address indexed account, uint256 newPausedStatus); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Unpaused { + #[allow(missing_docs)] + pub account: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Unpaused { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Unpaused(address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8, 2u8, + 188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8, 228u8, 152u8, + 107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + account: topics.1, + newPausedStatus: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.account.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.account, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Unpaused { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Unpaused> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Unpaused) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. + ```solidity + constructor(address _strategyManager); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _strategyManager: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value._strategyManager,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _strategyManager: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._strategyManager, + ), + ) + } + } + }; + /**Function with signature `deposit(address,uint256)` and selector `0x47e7ef24`. + ```solidity + function deposit(address token, uint256 amount) external returns (uint256 newShares); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct depositCall { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`deposit(address,uint256)`](depositCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct depositReturn { + pub newShares: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: depositCall) -> Self { + (value.token, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for depositCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: depositReturn) -> Self { + (value.newShares,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for depositReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newShares: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for depositCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = depositReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "deposit(address,uint256)"; + const SELECTOR: [u8; 4] = [71u8, 231u8, 239u8, 36u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize( + &self.amount, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `explanation()` and selector `0xab5921e1`. + ```solidity + function explanation() external pure returns (string memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct explanationCall {} + ///Container type for the return parameters of the [`explanation()`](explanationCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct explanationReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: explanationCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for explanationCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: explanationReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for explanationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for explanationCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = explanationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "explanation()"; + const SELECTOR: [u8; 4] = [171u8, 89u8, 33u8, 225u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `initialize(address,address)` and selector `0x485cc955`. + ```solidity + function initialize(address _underlyingToken, address _pauserRegistry) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeCall { + pub _underlyingToken: alloy::sol_types::private::Address, + pub _pauserRegistry: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`initialize(address,address)`](initializeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeCall) -> Self { + (value._underlyingToken, value._pauserRegistry) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _underlyingToken: tuple.0, + _pauserRegistry: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for initializeCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = initializeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "initialize(address,address)"; + const SELECTOR: [u8; 4] = [72u8, 92u8, 201u8, 85u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._underlyingToken, + ), + ::tokenize( + &self._pauserRegistry, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pause(uint256)` and selector `0x136439dd`. + ```solidity + function pause(uint256 newPausedStatus) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseCall { + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`pause(uint256)`](pauseCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseCall) -> Self { + (value.newPausedStatus,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newPausedStatus: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauseCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pauseReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pause(uint256)"; + const SELECTOR: [u8; 4] = [19u8, 100u8, 57u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pauseAll()` and selector `0x595c6a67`. + ```solidity + function pauseAll() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseAllCall {} + ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseAllReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseAllCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseAllCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseAllReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseAllReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauseAllCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pauseAllReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pauseAll()"; + const SELECTOR: [u8; 4] = [89u8, 92u8, 106u8, 103u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `paused(uint8)` and selector `0x5ac86ab7`. + ```solidity + function paused(uint8 index) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_0Call { + pub index: u8, + } + ///Container type for the return parameters of the [`paused(uint8)`](paused_0Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_0Return { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_0Call) -> Self { + (value.index,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_0Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { index: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_0Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_0Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for paused_0Call { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = paused_0Return; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "paused(uint8)"; + const SELECTOR: [u8; 4] = [90u8, 200u8, 106u8, 183u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `paused()` and selector `0x5c975abb`. + ```solidity + function paused() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_1Call {} + ///Container type for the return parameters of the [`paused()`](paused_1Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_1Return { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_1Call) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_1Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for paused_1Call { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = paused_1Return; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "paused()"; + const SELECTOR: [u8; 4] = [92u8, 151u8, 90u8, 187u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pauserRegistry()` and selector `0x886f1195`. + ```solidity + function pauserRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauserRegistryCall {} + ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauserRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauserRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauserRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauserRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauserRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauserRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pauserRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pauserRegistry()"; + const SELECTOR: [u8; 4] = [136u8, 111u8, 17u8, 149u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setPauserRegistry(address)` and selector `0x10d67a2f`. + ```solidity + function setPauserRegistry(address newPauserRegistry) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setPauserRegistryCall { + pub newPauserRegistry: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setPauserRegistry(address)`](setPauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setPauserRegistryReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setPauserRegistryCall) -> Self { + (value.newPauserRegistry,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setPauserRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newPauserRegistry: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setPauserRegistryReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setPauserRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setPauserRegistryCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setPauserRegistryReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setPauserRegistry(address)"; + const SELECTOR: [u8; 4] = [16u8, 214u8, 122u8, 47u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newPauserRegistry, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `shares(address)` and selector `0xce7c2ac2`. + ```solidity + function shares(address user) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct sharesCall { + pub user: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`shares(address)`](sharesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct sharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: sharesCall) -> Self { + (value.user,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for sharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { user: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: sharesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for sharesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for sharesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = sharesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "shares(address)"; + const SELECTOR: [u8; 4] = [206u8, 124u8, 42u8, 194u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.user, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `sharesToUnderlying(uint256)` and selector `0xf3e73875`. + ```solidity + function sharesToUnderlying(uint256 amountShares) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct sharesToUnderlyingCall { + pub amountShares: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`sharesToUnderlying(uint256)`](sharesToUnderlyingCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct sharesToUnderlyingReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: sharesToUnderlyingCall) -> Self { + (value.amountShares,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for sharesToUnderlyingCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + amountShares: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: sharesToUnderlyingReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for sharesToUnderlyingReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for sharesToUnderlyingCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = sharesToUnderlyingReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "sharesToUnderlying(uint256)"; + const SELECTOR: [u8; 4] = [243u8, 231u8, 56u8, 117u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.amountShares, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `sharesToUnderlyingView(uint256)` and selector `0x7a8b2637`. + ```solidity + function sharesToUnderlyingView(uint256 amountShares) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct sharesToUnderlyingViewCall { + pub amountShares: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`sharesToUnderlyingView(uint256)`](sharesToUnderlyingViewCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct sharesToUnderlyingViewReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: sharesToUnderlyingViewCall) -> Self { + (value.amountShares,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for sharesToUnderlyingViewCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + amountShares: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: sharesToUnderlyingViewReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for sharesToUnderlyingViewReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for sharesToUnderlyingViewCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = sharesToUnderlyingViewReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "sharesToUnderlyingView(uint256)"; + const SELECTOR: [u8; 4] = [122u8, 139u8, 38u8, 55u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.amountShares, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `strategyManager()` and selector `0x39b70e38`. + ```solidity + function strategyManager() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyManagerCall {} + ///Container type for the return parameters of the [`strategyManager()`](strategyManagerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyManagerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyManagerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyManagerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyManagerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for strategyManagerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = strategyManagerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "strategyManager()"; + const SELECTOR: [u8; 4] = [57u8, 183u8, 14u8, 56u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `totalShares()` and selector `0x3a98ef39`. + ```solidity + function totalShares() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalSharesCall {} + ///Container type for the return parameters of the [`totalShares()`](totalSharesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalSharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalSharesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalSharesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalSharesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for totalSharesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = totalSharesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "totalShares()"; + const SELECTOR: [u8; 4] = [58u8, 152u8, 239u8, 57u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `underlyingToShares(uint256)` and selector `0x8c871019`. + ```solidity + function underlyingToShares(uint256 amountUnderlying) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct underlyingToSharesCall { + pub amountUnderlying: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`underlyingToShares(uint256)`](underlyingToSharesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct underlyingToSharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: underlyingToSharesCall) -> Self { + (value.amountUnderlying,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for underlyingToSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + amountUnderlying: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: underlyingToSharesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for underlyingToSharesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for underlyingToSharesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = underlyingToSharesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "underlyingToShares(uint256)"; + const SELECTOR: [u8; 4] = [140u8, 135u8, 16u8, 25u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.amountUnderlying, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `underlyingToSharesView(uint256)` and selector `0xe3dae51c`. + ```solidity + function underlyingToSharesView(uint256 amountUnderlying) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct underlyingToSharesViewCall { + pub amountUnderlying: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`underlyingToSharesView(uint256)`](underlyingToSharesViewCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct underlyingToSharesViewReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: underlyingToSharesViewCall) -> Self { + (value.amountUnderlying,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for underlyingToSharesViewCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + amountUnderlying: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: underlyingToSharesViewReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for underlyingToSharesViewReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for underlyingToSharesViewCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = underlyingToSharesViewReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "underlyingToSharesView(uint256)"; + const SELECTOR: [u8; 4] = [227u8, 218u8, 229u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.amountUnderlying, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `underlyingToken()` and selector `0x2495a599`. + ```solidity + function underlyingToken() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct underlyingTokenCall {} + ///Container type for the return parameters of the [`underlyingToken()`](underlyingTokenCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct underlyingTokenReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: underlyingTokenCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for underlyingTokenCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: underlyingTokenReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for underlyingTokenReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for underlyingTokenCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = underlyingTokenReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "underlyingToken()"; + const SELECTOR: [u8; 4] = [36u8, 149u8, 165u8, 153u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `unpause(uint256)` and selector `0xfabc1cbc`. + ```solidity + function unpause(uint256 newPausedStatus) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct unpauseCall { + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`unpause(uint256)`](unpauseCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct unpauseReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: unpauseCall) -> Self { + (value.newPausedStatus,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for unpauseCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newPausedStatus: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: unpauseReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for unpauseReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for unpauseCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = unpauseReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "unpause(uint256)"; + const SELECTOR: [u8; 4] = [250u8, 188u8, 28u8, 188u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `userUnderlying(address)` and selector `0x8f6a6240`. + ```solidity + function userUnderlying(address user) external returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct userUnderlyingCall { + pub user: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`userUnderlying(address)`](userUnderlyingCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct userUnderlyingReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: userUnderlyingCall) -> Self { + (value.user,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for userUnderlyingCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { user: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: userUnderlyingReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for userUnderlyingReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for userUnderlyingCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = userUnderlyingReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "userUnderlying(address)"; + const SELECTOR: [u8; 4] = [143u8, 106u8, 98u8, 64u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.user, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `userUnderlyingView(address)` and selector `0x553ca5f8`. + ```solidity + function userUnderlyingView(address user) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct userUnderlyingViewCall { + pub user: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`userUnderlyingView(address)`](userUnderlyingViewCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct userUnderlyingViewReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: userUnderlyingViewCall) -> Self { + (value.user,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for userUnderlyingViewCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { user: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: userUnderlyingViewReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for userUnderlyingViewReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for userUnderlyingViewCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = userUnderlyingViewReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "userUnderlyingView(address)"; + const SELECTOR: [u8; 4] = [85u8, 60u8, 165u8, 248u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.user, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `withdraw(address,address,uint256)` and selector `0xd9caed12`. + ```solidity + function withdraw(address recipient, address token, uint256 amountShares) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct withdrawCall { + pub recipient: alloy::sol_types::private::Address, + pub token: alloy::sol_types::private::Address, + pub amountShares: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`withdraw(address,address,uint256)`](withdrawCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct withdrawReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: withdrawCall) -> Self { + (value.recipient, value.token, value.amountShares) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + recipient: tuple.0, + token: tuple.1, + amountShares: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: withdrawReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for withdrawCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = withdrawReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "withdraw(address,address,uint256)"; + const SELECTOR: [u8; 4] = [217u8, 202u8, 237u8, 18u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.recipient, + ), + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize( + &self.amountShares, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`StrategyBase`](self) function calls. + pub enum StrategyBaseCalls { + deposit(depositCall), + explanation(explanationCall), + initialize(initializeCall), + pause(pauseCall), + pauseAll(pauseAllCall), + paused_0(paused_0Call), + paused_1(paused_1Call), + pauserRegistry(pauserRegistryCall), + setPauserRegistry(setPauserRegistryCall), + shares(sharesCall), + sharesToUnderlying(sharesToUnderlyingCall), + sharesToUnderlyingView(sharesToUnderlyingViewCall), + strategyManager(strategyManagerCall), + totalShares(totalSharesCall), + underlyingToShares(underlyingToSharesCall), + underlyingToSharesView(underlyingToSharesViewCall), + underlyingToken(underlyingTokenCall), + unpause(unpauseCall), + userUnderlying(userUnderlyingCall), + userUnderlyingView(userUnderlyingViewCall), + withdraw(withdrawCall), + } + #[automatically_derived] + impl StrategyBaseCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [16u8, 214u8, 122u8, 47u8], + [19u8, 100u8, 57u8, 221u8], + [36u8, 149u8, 165u8, 153u8], + [57u8, 183u8, 14u8, 56u8], + [58u8, 152u8, 239u8, 57u8], + [71u8, 231u8, 239u8, 36u8], + [72u8, 92u8, 201u8, 85u8], + [85u8, 60u8, 165u8, 248u8], + [89u8, 92u8, 106u8, 103u8], + [90u8, 200u8, 106u8, 183u8], + [92u8, 151u8, 90u8, 187u8], + [122u8, 139u8, 38u8, 55u8], + [136u8, 111u8, 17u8, 149u8], + [140u8, 135u8, 16u8, 25u8], + [143u8, 106u8, 98u8, 64u8], + [171u8, 89u8, 33u8, 225u8], + [206u8, 124u8, 42u8, 194u8], + [217u8, 202u8, 237u8, 18u8], + [227u8, 218u8, 229u8, 28u8], + [243u8, 231u8, 56u8, 117u8], + [250u8, 188u8, 28u8, 188u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for StrategyBaseCalls { + const NAME: &'static str = "StrategyBaseCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 21usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::deposit(_) => ::SELECTOR, + Self::explanation(_) => ::SELECTOR, + Self::initialize(_) => ::SELECTOR, + Self::pause(_) => ::SELECTOR, + Self::pauseAll(_) => ::SELECTOR, + Self::paused_0(_) => ::SELECTOR, + Self::paused_1(_) => ::SELECTOR, + Self::pauserRegistry(_) => { + ::SELECTOR + } + Self::setPauserRegistry(_) => { + ::SELECTOR + } + Self::shares(_) => ::SELECTOR, + Self::sharesToUnderlying(_) => { + ::SELECTOR + } + Self::sharesToUnderlyingView(_) => { + ::SELECTOR + } + Self::strategyManager(_) => { + ::SELECTOR + } + Self::totalShares(_) => ::SELECTOR, + Self::underlyingToShares(_) => { + ::SELECTOR + } + Self::underlyingToSharesView(_) => { + ::SELECTOR + } + Self::underlyingToken(_) => { + ::SELECTOR + } + Self::unpause(_) => ::SELECTOR, + Self::userUnderlying(_) => { + ::SELECTOR + } + Self::userUnderlyingView(_) => { + ::SELECTOR + } + Self::withdraw(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn setPauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyBaseCalls::setPauserRegistry) + } + setPauserRegistry + }, + { + fn pause( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyBaseCalls::pause) + } + pause + }, + { + fn underlyingToken( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyBaseCalls::underlyingToken) + } + underlyingToken + }, + { + fn strategyManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyBaseCalls::strategyManager) + } + strategyManager + }, + { + fn totalShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyBaseCalls::totalShares) + } + totalShares + }, + { + fn deposit( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyBaseCalls::deposit) + } + deposit + }, + { + fn initialize( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyBaseCalls::initialize) + } + initialize + }, + { + fn userUnderlyingView( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyBaseCalls::userUnderlyingView) + } + userUnderlyingView + }, + { + fn pauseAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyBaseCalls::pauseAll) + } + pauseAll + }, + { + fn paused_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyBaseCalls::paused_0) + } + paused_0 + }, + { + fn paused_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyBaseCalls::paused_1) + } + paused_1 + }, + { + fn sharesToUnderlyingView( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyBaseCalls::sharesToUnderlyingView) + } + sharesToUnderlyingView + }, + { + fn pauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyBaseCalls::pauserRegistry) + } + pauserRegistry + }, + { + fn underlyingToShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyBaseCalls::underlyingToShares) + } + underlyingToShares + }, + { + fn userUnderlying( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyBaseCalls::userUnderlying) + } + userUnderlying + }, + { + fn explanation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyBaseCalls::explanation) + } + explanation + }, + { + fn shares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyBaseCalls::shares) + } + shares + }, + { + fn withdraw( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyBaseCalls::withdraw) + } + withdraw + }, + { + fn underlyingToSharesView( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyBaseCalls::underlyingToSharesView) + } + underlyingToSharesView + }, + { + fn sharesToUnderlying( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyBaseCalls::sharesToUnderlying) + } + sharesToUnderlying + }, + { + fn unpause( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyBaseCalls::unpause) + } + unpause + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::deposit(inner) => { + ::abi_encoded_size(inner) + } + Self::explanation(inner) => { + ::abi_encoded_size(inner) + } + Self::initialize(inner) => { + ::abi_encoded_size(inner) + } + Self::pause(inner) => { + ::abi_encoded_size(inner) + } + Self::pauseAll(inner) => { + ::abi_encoded_size(inner) + } + Self::paused_0(inner) => { + ::abi_encoded_size(inner) + } + Self::paused_1(inner) => { + ::abi_encoded_size(inner) + } + Self::pauserRegistry(inner) => { + ::abi_encoded_size(inner) + } + Self::setPauserRegistry(inner) => { + ::abi_encoded_size(inner) + } + Self::shares(inner) => { + ::abi_encoded_size(inner) + } + Self::sharesToUnderlying(inner) => { + ::abi_encoded_size(inner) + } + Self::sharesToUnderlyingView(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::strategyManager(inner) => { + ::abi_encoded_size(inner) + } + Self::totalShares(inner) => { + ::abi_encoded_size(inner) + } + Self::underlyingToShares(inner) => { + ::abi_encoded_size(inner) + } + Self::underlyingToSharesView(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::underlyingToken(inner) => { + ::abi_encoded_size(inner) + } + Self::unpause(inner) => { + ::abi_encoded_size(inner) + } + Self::userUnderlying(inner) => { + ::abi_encoded_size(inner) + } + Self::userUnderlyingView(inner) => { + ::abi_encoded_size(inner) + } + Self::withdraw(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::deposit(inner) => { + ::abi_encode_raw(inner, out) + } + Self::explanation(inner) => { + ::abi_encode_raw(inner, out) + } + Self::initialize(inner) => { + ::abi_encode_raw(inner, out) + } + Self::pause(inner) => { + ::abi_encode_raw(inner, out) + } + Self::pauseAll(inner) => { + ::abi_encode_raw(inner, out) + } + Self::paused_0(inner) => { + ::abi_encode_raw(inner, out) + } + Self::paused_1(inner) => { + ::abi_encode_raw(inner, out) + } + Self::pauserRegistry(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setPauserRegistry(inner) => { + ::abi_encode_raw(inner, out) + } + Self::shares(inner) => { + ::abi_encode_raw(inner, out) + } + Self::sharesToUnderlying(inner) => { + ::abi_encode_raw(inner, out) + } + Self::sharesToUnderlyingView(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::strategyManager(inner) => { + ::abi_encode_raw(inner, out) + } + Self::totalShares(inner) => { + ::abi_encode_raw(inner, out) + } + Self::underlyingToShares(inner) => { + ::abi_encode_raw(inner, out) + } + Self::underlyingToSharesView(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::underlyingToken(inner) => { + ::abi_encode_raw(inner, out) + } + Self::unpause(inner) => { + ::abi_encode_raw(inner, out) + } + Self::userUnderlying(inner) => { + ::abi_encode_raw(inner, out) + } + Self::userUnderlyingView(inner) => { + ::abi_encode_raw(inner, out) + } + Self::withdraw(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`StrategyBase`](self) events. + pub enum StrategyBaseEvents { + Initialized(Initialized), + Paused(Paused), + PauserRegistrySet(PauserRegistrySet), + Unpaused(Unpaused), + } + #[automatically_derived] + impl StrategyBaseEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8, 2u8, + 188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8, 228u8, 152u8, + 107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8, + ], + [ + 110u8, 159u8, 205u8, 83u8, 152u8, 150u8, 252u8, 166u8, 14u8, 139u8, 15u8, 1u8, + 221u8, 88u8, 2u8, 51u8, 228u8, 138u8, 107u8, 15u8, 125u8, 240u8, 19u8, 184u8, + 155u8, 167u8, 245u8, 101u8, 134u8, 154u8, 205u8, 182u8, + ], + [ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, 56u8, + 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, 96u8, + 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ], + [ + 171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8, 188u8, + 152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8, 11u8, 182u8, + 224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for StrategyBaseEvents { + const NAME: &'static str = "StrategyBaseEvents"; + const COUNT: usize = 4usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::Initialized) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::Paused) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::PauserRegistrySet) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::Unpaused) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for StrategyBaseEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Paused(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::PauserRegistrySet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Unpaused(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Paused(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::PauserRegistrySet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Unpaused(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`StrategyBase`](self) contract instance. + + See the [wrapper's documentation](`StrategyBaseInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> StrategyBaseInstance { + StrategyBaseInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _strategyManager: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future>> + { + StrategyBaseInstance::::deploy(provider, _strategyManager) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _strategyManager: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + StrategyBaseInstance::::deploy_builder(provider, _strategyManager) + } + /**A [`StrategyBase`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StrategyBase`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct StrategyBaseInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StrategyBaseInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StrategyBaseInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StrategyBaseInstance + { + /**Creates a new wrapper around an on-chain [`StrategyBase`](self) contract instance. + + See the [wrapper's documentation](`StrategyBaseInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _strategyManager: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, _strategyManager); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _strategyManager: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode(&constructorCall { + _strategyManager, + })[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl StrategyBaseInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StrategyBaseInstance { + StrategyBaseInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StrategyBaseInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`deposit`] function. + pub fn deposit( + &self, + token: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&depositCall { token, amount }) + } + ///Creates a new call builder for the [`explanation`] function. + pub fn explanation(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&explanationCall {}) + } + ///Creates a new call builder for the [`initialize`] function. + pub fn initialize( + &self, + _underlyingToken: alloy::sol_types::private::Address, + _pauserRegistry: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initializeCall { + _underlyingToken, + _pauserRegistry, + }) + } + ///Creates a new call builder for the [`pause`] function. + pub fn pause( + &self, + newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&pauseCall { newPausedStatus }) + } + ///Creates a new call builder for the [`pauseAll`] function. + pub fn pauseAll(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&pauseAllCall {}) + } + ///Creates a new call builder for the [`paused_0`] function. + pub fn paused_0( + &self, + index: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&paused_0Call { index }) + } + ///Creates a new call builder for the [`paused_1`] function. + pub fn paused_1(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&paused_1Call {}) + } + ///Creates a new call builder for the [`pauserRegistry`] function. + pub fn pauserRegistry( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&pauserRegistryCall {}) + } + ///Creates a new call builder for the [`setPauserRegistry`] function. + pub fn setPauserRegistry( + &self, + newPauserRegistry: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setPauserRegistryCall { newPauserRegistry }) + } + ///Creates a new call builder for the [`shares`] function. + pub fn shares( + &self, + user: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&sharesCall { user }) + } + ///Creates a new call builder for the [`sharesToUnderlying`] function. + pub fn sharesToUnderlying( + &self, + amountShares: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&sharesToUnderlyingCall { amountShares }) + } + ///Creates a new call builder for the [`sharesToUnderlyingView`] function. + pub fn sharesToUnderlyingView( + &self, + amountShares: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&sharesToUnderlyingViewCall { amountShares }) + } + ///Creates a new call builder for the [`strategyManager`] function. + pub fn strategyManager( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&strategyManagerCall {}) + } + ///Creates a new call builder for the [`totalShares`] function. + pub fn totalShares(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&totalSharesCall {}) + } + ///Creates a new call builder for the [`underlyingToShares`] function. + pub fn underlyingToShares( + &self, + amountUnderlying: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&underlyingToSharesCall { amountUnderlying }) + } + ///Creates a new call builder for the [`underlyingToSharesView`] function. + pub fn underlyingToSharesView( + &self, + amountUnderlying: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&underlyingToSharesViewCall { amountUnderlying }) + } + ///Creates a new call builder for the [`underlyingToken`] function. + pub fn underlyingToken( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&underlyingTokenCall {}) + } + ///Creates a new call builder for the [`unpause`] function. + pub fn unpause( + &self, + newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&unpauseCall { newPausedStatus }) + } + ///Creates a new call builder for the [`userUnderlying`] function. + pub fn userUnderlying( + &self, + user: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&userUnderlyingCall { user }) + } + ///Creates a new call builder for the [`userUnderlyingView`] function. + pub fn userUnderlyingView( + &self, + user: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&userUnderlyingViewCall { user }) + } + ///Creates a new call builder for the [`withdraw`] function. + pub fn withdraw( + &self, + recipient: alloy::sol_types::private::Address, + token: alloy::sol_types::private::Address, + amountShares: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&withdrawCall { + recipient, + token, + amountShares, + }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StrategyBaseInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Initialized`] event. + pub fn Initialized_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Paused`] event. + pub fn Paused_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`PauserRegistrySet`] event. + pub fn PauserRegistrySet_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Unpaused`] event. + pub fn Unpaused_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/strategybasetvllimits.rs b/crates/utils/src/strategybasetvllimits.rs new file mode 100644 index 00000000..e3f13136 --- /dev/null +++ b/crates/utils/src/strategybasetvllimits.rs @@ -0,0 +1,5395 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface StrategyBaseTVLLimits { + event Initialized(uint8 version); + event MaxPerDepositUpdated(uint256 previousValue, uint256 newValue); + event MaxTotalDepositsUpdated(uint256 previousValue, uint256 newValue); + event Paused(address indexed account, uint256 newPausedStatus); + event PauserRegistrySet(address pauserRegistry, address newPauserRegistry); + event Unpaused(address indexed account, uint256 newPausedStatus); + + constructor(address _strategyManager); + + function deposit(address token, uint256 amount) external returns (uint256 newShares); + function explanation() external pure returns (string memory); + function getTVLLimits() external view returns (uint256, uint256); + function initialize(uint256 _maxPerDeposit, uint256 _maxTotalDeposits, address _underlyingToken, address _pauserRegistry) external; + function initialize(address _underlyingToken, address _pauserRegistry) external; + function maxPerDeposit() external view returns (uint256); + function maxTotalDeposits() external view returns (uint256); + function pause(uint256 newPausedStatus) external; + function pauseAll() external; + function paused(uint8 index) external view returns (bool); + function paused() external view returns (uint256); + function pauserRegistry() external view returns (address); + function setPauserRegistry(address newPauserRegistry) external; + function setTVLLimits(uint256 newMaxPerDeposit, uint256 newMaxTotalDeposits) external; + function shares(address user) external view returns (uint256); + function sharesToUnderlying(uint256 amountShares) external view returns (uint256); + function sharesToUnderlyingView(uint256 amountShares) external view returns (uint256); + function strategyManager() external view returns (address); + function totalShares() external view returns (uint256); + function underlyingToShares(uint256 amountUnderlying) external view returns (uint256); + function underlyingToSharesView(uint256 amountUnderlying) external view returns (uint256); + function underlyingToken() external view returns (address); + function unpause(uint256 newPausedStatus) external; + function userUnderlying(address user) external returns (uint256); + function userUnderlyingView(address user) external view returns (uint256); + function withdraw(address recipient, address token, uint256 amountShares) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_strategyManager", + "type": "address", + "internalType": "contract IStrategyManager" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "deposit", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "newShares", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "explanation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "getTVLLimits", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "_maxPerDeposit", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_maxTotalDeposits", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_underlyingToken", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "_pauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "_underlyingToken", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "_pauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "maxPerDeposit", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "maxTotalDeposits", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pause", + "inputs": [ + { + "name": "newPausedStatus", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "pauseAll", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "paused", + "inputs": [ + { + "name": "index", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "paused", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pauserRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setPauserRegistry", + "inputs": [ + { + "name": "newPauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setTVLLimits", + "inputs": [ + { + "name": "newMaxPerDeposit", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "newMaxTotalDeposits", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "shares", + "inputs": [ + { + "name": "user", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "sharesToUnderlying", + "inputs": [ + { + "name": "amountShares", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "sharesToUnderlyingView", + "inputs": [ + { + "name": "amountShares", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "strategyManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStrategyManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "totalShares", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "underlyingToShares", + "inputs": [ + { + "name": "amountUnderlying", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "underlyingToSharesView", + "inputs": [ + { + "name": "amountUnderlying", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "underlyingToken", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IERC20" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "unpause", + "inputs": [ + { + "name": "newPausedStatus", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "userUnderlying", + "inputs": [ + { + "name": "user", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "userUnderlyingView", + "inputs": [ + { + "name": "user", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "withdraw", + "inputs": [ + { + "name": "recipient", + "type": "address", + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "amountShares", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "MaxPerDepositUpdated", + "inputs": [ + { + "name": "previousValue", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "newValue", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "MaxTotalDepositsUpdated", + "inputs": [ + { + "name": "previousValue", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "newValue", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Paused", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newPausedStatus", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "PauserRegistrySet", + "inputs": [ + { + "name": "pauserRegistry", + "type": "address", + "indexed": false, + "internalType": "contract IPauserRegistry" + }, + { + "name": "newPauserRegistry", + "type": "address", + "indexed": false, + "internalType": "contract IPauserRegistry" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Unpaused", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newPausedStatus", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod StrategyBaseTVLLimits { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60a06040523480156200001157600080fd5b5060405162001d5c38038062001d5c833981016040819052620000349162000116565b6001600160a01b038116608052806200004c62000054565b505062000148565b600054610100900460ff1615620000c15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000114576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b608051611be36200017960003960008181610216015281816107a901528181610b470152610c120152611be36000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c80635c975abb116100de578063ab5921e111610097578063df6fadc111610071578063df6fadc114610366578063e3dae51c14610381578063f3e7387514610394578063fabc1cbc146103a757600080fd5b8063ab5921e11461032b578063ce7c2ac214610340578063d9caed121461035357600080fd5b80635c975abb146102c857806361b01b5d146102d05780637a8b2637146102d9578063886f1195146102ec5780638c871019146103055780638f6a62401461031857600080fd5b80633a98ef391161014b578063485cc95511610125578063485cc9551461026b578063553ca5f81461027e578063595c6a67146102915780635ac86ab71461029957600080fd5b80633a98ef391461023857806343fe08b01461024f57806347e7ef241461025857600080fd5b8063019e27291461019357806310d67a2f146101a857806311c70c9d146101bb578063136439dd146101ce5780632495a599146101e157806339b70e3814610211575b600080fd5b6101a66101a13660046117b8565b6103ba565b005b6101a66101b6366004611802565b61049d565b6101a66101c936600461181f565b610550565b6101a66101dc366004611841565b610605565b6032546101f4906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101f47f000000000000000000000000000000000000000000000000000000000000000081565b61024160335481565b604051908152602001610208565b61024160645481565b61024161026636600461185a565b610749565b6101a6610279366004611886565b6108ed565b61024161028c366004611802565b6109bb565b6101a66109cf565b6102b86102a73660046118bf565b6001805460ff9092161b9081161490565b6040519015158152602001610208565b600154610241565b61024160655481565b6102416102e7366004611841565b610a9b565b6000546101f4906201000090046001600160a01b031681565b610241610313366004611841565b610ae6565b610241610326366004611802565b610af1565b610333610aff565b6040516102089190611912565b61024161034e366004611802565b610b1f565b6101a6610361366004611945565b610bb4565b60645460655460408051928352602083019190915201610208565b61024161038f366004611841565b610d7d565b6102416103a2366004611841565b610db6565b6101a66103b5366004611841565b610dc1565b600054610100900460ff16158080156103da5750600054600160ff909116105b806103f45750303b1580156103f4575060005460ff166001145b6104195760405162461bcd60e51b815260040161041090611986565b60405180910390fd5b6000805460ff19166001179055801561043c576000805461ff0019166101001790555b6104468585610f1d565b610450838361102a565b8015610496576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051491906119d4565b6001600160a01b0316336001600160a01b0316146105445760405162461bcd60e51b8152600401610410906119f1565b61054d816110bb565b50565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c791906119d4565b6001600160a01b0316336001600160a01b0316146105f75760405162461bcd60e51b8152600401610410906119f1565b6106018282610f1d565b5050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610652573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106769190611a3b565b6106925760405162461bcd60e51b815260040161041090611a5d565b6001548181161461070b5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001805460009182918116141561079e5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108165760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b61082084846111c0565b60335460006108316103e883611abb565b905060006103e86108406112a2565b61084a9190611abb565b905060006108588783611ad3565b9050806108658489611aea565b61086f9190611b09565b9550856108d55760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b6064820152608401610410565b6108df8685611abb565b603355505050505092915050565b600054610100900460ff161580801561090d5750600054600160ff909116105b806109275750303b158015610927575060005460ff166001145b6109435760405162461bcd60e51b815260040161041090611986565b6000805460ff191660011790558015610966576000805461ff0019166101001790555b610970838361102a565b80156109b6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006109c96102e783610b1f565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a409190611a3b565b610a5c5760405162461bcd60e51b815260040161041090611a5d565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e8603354610aae9190611abb565b905060006103e8610abd6112a2565b610ac79190611abb565b905081610ad48583611aea565b610ade9190611b09565b949350505050565b60006109c982610d7d565b60006109c96103a283610b1f565b60606040518060800160405280604d8152602001611b61604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610b90573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c99190611b2b565b6001805460029081161415610c075760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c7f5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b610c8a848484611314565b60335480831115610d195760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a401610410565b6000610d276103e883611abb565b905060006103e8610d366112a2565b610d409190611abb565b9050600082610d4f8784611aea565b610d599190611b09565b9050610d658685611ad3565b603355610d73888883611397565b5050505050505050565b6000806103e8603354610d909190611abb565b905060006103e8610d9f6112a2565b610da99190611abb565b905080610ad48386611aea565b60006109c982610a9b565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3891906119d4565b6001600160a01b0316336001600160a01b031614610e685760405162461bcd60e51b8152600401610410906119f1565b600154198119600154191614610ee65760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161073e565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a18082111561101f5760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794261736554564c4c696d6974732e5f73657454564c4c696d60448201527f6974733a206d61785065724465706f7369742065786365656473206d6178546f60648201526a74616c4465706f7369747360a81b608482015260a401610410565b606491909155606555565b600054610100900460ff166110955760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610410565b603280546001600160a01b0319166001600160a01b0384161790556106018160006113ab565b6001600160a01b0381166111495760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610410565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60645481111561122a5760405162461bcd60e51b815260206004820152602f60248201527f53747261746567794261736554564c4c696d6974733a206d617820706572206460448201526e195c1bdcda5d08195e18d959591959608a1b6064820152608401610410565b6065546112356112a2565b11156112985760405162461bcd60e51b815260206004820152602c60248201527f53747261746567794261736554564c4c696d6974733a206d6178206465706f7360448201526b1a5d1cc8195e18d95959195960a21b6064820152608401610410565b6106018282611497565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156112eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130f9190611b2b565b905090565b6032546001600160a01b038381169116146109b65760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e00000000006064820152608401610410565b6109b66001600160a01b0383168483611513565b6000546201000090046001600160a01b03161580156113d257506001600160a01b03821615155b6114545760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610601826110bb565b6032546001600160a01b038381169116146106015760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b6064820152608401610410565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526109b6928692916000916115a3918516908490611620565b8051909150156109b657808060200190518101906115c19190611a3b565b6109b65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610410565b606061162f8484600085611639565b90505b9392505050565b60608247101561169a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610410565b6001600160a01b0385163b6116f15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610410565b600080866001600160a01b0316858760405161170d9190611b44565b60006040518083038185875af1925050503d806000811461174a576040519150601f19603f3d011682016040523d82523d6000602084013e61174f565b606091505b509150915061175f82828661176a565b979650505050505050565b60608315611779575081611632565b8251156117895782518084602001fd5b8160405162461bcd60e51b81526004016104109190611912565b6001600160a01b038116811461054d57600080fd5b600080600080608085870312156117ce57600080fd5b843593506020850135925060408501356117e7816117a3565b915060608501356117f7816117a3565b939692955090935050565b60006020828403121561181457600080fd5b8135611632816117a3565b6000806040838503121561183257600080fd5b50508035926020909101359150565b60006020828403121561185357600080fd5b5035919050565b6000806040838503121561186d57600080fd5b8235611878816117a3565b946020939093013593505050565b6000806040838503121561189957600080fd5b82356118a4816117a3565b915060208301356118b4816117a3565b809150509250929050565b6000602082840312156118d157600080fd5b813560ff8116811461163257600080fd5b60005b838110156118fd5781810151838201526020016118e5565b8381111561190c576000848401525b50505050565b60208152600082518060208401526119318160408501602087016118e2565b601f01601f19169190910160400192915050565b60008060006060848603121561195a57600080fd5b8335611965816117a3565b92506020840135611975816117a3565b929592945050506040919091013590565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6000602082840312156119e657600080fd5b8151611632816117a3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611a4d57600080fd5b8151801515811461163257600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611ace57611ace611aa5565b500190565b600082821015611ae557611ae5611aa5565b500390565b6000816000190483118215151615611b0457611b04611aa5565b500290565b600082611b2657634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611b3d57600080fd5b5051919050565b60008251611b568184602087016118e2565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212204112a75df884a07f55b081677eb067dc6e24c942e163b4ef04a0cea4b7183af264736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\x1D\\8\x03\x80b\0\x1D\\\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01\x16V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80R\x80b\0\0Lb\0\0TV[PPb\0\x01HV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xC1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FInitializable: contract is initi`D\x82\x01Rfalizing`\xC8\x1B`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[`\0T`\xFF\x90\x81\x16\x10\x15b\0\x01\x14W`\0\x80T`\xFF\x19\x16`\xFF\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[V[`\0` \x82\x84\x03\x12\x15b\0\x01)W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01AW`\0\x80\xFD[\x93\x92PPPV[`\x80Qa\x1B\xE3b\0\x01y`\09`\0\x81\x81a\x02\x16\x01R\x81\x81a\x07\xA9\x01R\x81\x81a\x0BG\x01Ra\x0C\x12\x01Ra\x1B\xE3`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\x8EW`\x005`\xE0\x1C\x80c\\\x97Z\xBB\x11a\0\xDEW\x80c\xABY!\xE1\x11a\0\x97W\x80c\xDFo\xAD\xC1\x11a\0qW\x80c\xDFo\xAD\xC1\x14a\x03fW\x80c\xE3\xDA\xE5\x1C\x14a\x03\x81W\x80c\xF3\xE78u\x14a\x03\x94W\x80c\xFA\xBC\x1C\xBC\x14a\x03\xA7W`\0\x80\xFD[\x80c\xABY!\xE1\x14a\x03+W\x80c\xCE|*\xC2\x14a\x03@W\x80c\xD9\xCA\xED\x12\x14a\x03SW`\0\x80\xFD[\x80c\\\x97Z\xBB\x14a\x02\xC8W\x80ca\xB0\x1B]\x14a\x02\xD0W\x80cz\x8B&7\x14a\x02\xD9W\x80c\x88o\x11\x95\x14a\x02\xECW\x80c\x8C\x87\x10\x19\x14a\x03\x05W\x80c\x8Fjb@\x14a\x03\x18W`\0\x80\xFD[\x80c:\x98\xEF9\x11a\x01KW\x80cH\\\xC9U\x11a\x01%W\x80cH\\\xC9U\x14a\x02kW\x80cU<\xA5\xF8\x14a\x02~W\x80cY\\jg\x14a\x02\x91W\x80cZ\xC8j\xB7\x14a\x02\x99W`\0\x80\xFD[\x80c:\x98\xEF9\x14a\x028W\x80cC\xFE\x08\xB0\x14a\x02OW\x80cG\xE7\xEF$\x14a\x02XW`\0\x80\xFD[\x80c\x01\x9E')\x14a\x01\x93W\x80c\x10\xD6z/\x14a\x01\xA8W\x80c\x11\xC7\x0C\x9D\x14a\x01\xBBW\x80c\x13d9\xDD\x14a\x01\xCEW\x80c$\x95\xA5\x99\x14a\x01\xE1W\x80c9\xB7\x0E8\x14a\x02\x11W[`\0\x80\xFD[a\x01\xA6a\x01\xA16`\x04a\x17\xB8V[a\x03\xBAV[\0[a\x01\xA6a\x01\xB66`\x04a\x18\x02V[a\x04\x9DV[a\x01\xA6a\x01\xC96`\x04a\x18\x1FV[a\x05PV[a\x01\xA6a\x01\xDC6`\x04a\x18AV[a\x06\x05V[`2Ta\x01\xF4\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\xF4\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x02A`3T\x81V[`@Q\x90\x81R` \x01a\x02\x08V[a\x02A`dT\x81V[a\x02Aa\x02f6`\x04a\x18ZV[a\x07IV[a\x01\xA6a\x02y6`\x04a\x18\x86V[a\x08\xEDV[a\x02Aa\x02\x8C6`\x04a\x18\x02V[a\t\xBBV[a\x01\xA6a\t\xCFV[a\x02\xB8a\x02\xA76`\x04a\x18\xBFV[`\x01\x80T`\xFF\x90\x92\x16\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x02\x08V[`\x01Ta\x02AV[a\x02A`eT\x81V[a\x02Aa\x02\xE76`\x04a\x18AV[a\n\x9BV[`\0Ta\x01\xF4\x90b\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x02Aa\x03\x136`\x04a\x18AV[a\n\xE6V[a\x02Aa\x03&6`\x04a\x18\x02V[a\n\xF1V[a\x033a\n\xFFV[`@Qa\x02\x08\x91\x90a\x19\x12V[a\x02Aa\x03N6`\x04a\x18\x02V[a\x0B\x1FV[a\x01\xA6a\x03a6`\x04a\x19EV[a\x0B\xB4V[`dT`eT`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x02\x08V[a\x02Aa\x03\x8F6`\x04a\x18AV[a\r}V[a\x02Aa\x03\xA26`\x04a\x18AV[a\r\xB6V[a\x01\xA6a\x03\xB56`\x04a\x18AV[a\r\xC1V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x03\xDAWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x03\xF4WP0;\x15\x80\x15a\x03\xF4WP`\0T`\xFF\x16`\x01\x14[a\x04\x19W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x10\x90a\x19\x86V[`@Q\x80\x91\x03\x90\xFD[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x04=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x14\x91\x90a\x19\xD4V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x05DW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x10\x90a\x19\xF1V[a\x05M\x81a\x10\xBBV[PV[`\0`\x02\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xEA\xB6mz`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\xA3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xC7\x91\x90a\x19\xD4V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x05\xF7W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x10\x90a\x19\xF1V[a\x06\x01\x82\x82a\x0F\x1DV[PPV[`\0T`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01Rb\x01\0\0\x90\x91\x04`\x01`\x01`\xA0\x1B\x03\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06RW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06v\x91\x90a\x1A;V[a\x06\x92W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x10\x90a\x1A]V[`\x01T\x81\x81\x16\x14a\x07\x0BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.pause: invalid attempt `D\x82\x01R\x7Fto unpause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x04\x10V[`\x01\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01[`@Q\x80\x91\x03\x90\xA2PV[`\x01\x80T`\0\x91\x82\x91\x81\x16\x14\x15a\x07\x9EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01Rx\x14\x18]\\\xD8X\x9B\x19N\x88\x1A[\x99\x19^\x08\x1A\\\xC8\x1C\x18]\\\xD9Y`:\x1B`D\x82\x01R`d\x01a\x04\x10V[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x08\x16W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x04\x10V[a\x08 \x84\x84a\x11\xC0V[`3T`\0a\x081a\x03\xE8\x83a\x1A\xBBV[\x90P`\0a\x03\xE8a\x08@a\x12\xA2V[a\x08J\x91\x90a\x1A\xBBV[\x90P`\0a\x08X\x87\x83a\x1A\xD3V[\x90P\x80a\x08e\x84\x89a\x1A\xEAV[a\x08o\x91\x90a\x1B\tV[\x95P\x85a\x08\xD5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FStrategyBase.deposit: newShares `D\x82\x01Rmcannot be zero`\x90\x1B`d\x82\x01R`\x84\x01a\x04\x10V[a\x08\xDF\x86\x85a\x1A\xBBV[`3UPPPPP\x92\x91PPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\t\rWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\t'WP0;\x15\x80\x15a\t'WP`\0T`\xFF\x16`\x01\x14[a\tCW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x10\x90a\x19\x86V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\tfW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\tp\x83\x83a\x10*V[\x80\x15a\t\xB6W`\0\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPV[`\0a\t\xC9a\x02\xE7\x83a\x0B\x1FV[\x92\x91PPV[`\0T`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01Rb\x01\0\0\x90\x91\x04`\x01`\x01`\xA0\x1B\x03\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\x1CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n@\x91\x90a\x1A;V[a\n\\W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x10\x90a\x1A]V[`\0\x19`\x01\x81\x90U`@Q\x90\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2V[`\0\x80a\x03\xE8`3Ta\n\xAE\x91\x90a\x1A\xBBV[\x90P`\0a\x03\xE8a\n\xBDa\x12\xA2V[a\n\xC7\x91\x90a\x1A\xBBV[\x90P\x81a\n\xD4\x85\x83a\x1A\xEAV[a\n\xDE\x91\x90a\x1B\tV[\x94\x93PPPPV[`\0a\t\xC9\x82a\r}V[`\0a\t\xC9a\x03\xA2\x83a\x0B\x1FV[```@Q\x80`\x80\x01`@R\x80`M\x81R` \x01a\x1Ba`M\x919\x90P\x90V[`@Qc=?\x06\xC9`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R0`$\x83\x01R`\0\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90cz~\r\x92\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\x90W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xC9\x91\x90a\x1B+V[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\x0C\x07W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01Rx\x14\x18]\\\xD8X\x9B\x19N\x88\x1A[\x99\x19^\x08\x1A\\\xC8\x1C\x18]\\\xD9Y`:\x1B`D\x82\x01R`d\x01a\x04\x10V[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x0C\x7FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x04\x10V[a\x0C\x8A\x84\x84\x84a\x13\x14V[`3T\x80\x83\x11\x15a\r\x19W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`M`$\x82\x01R\x7FStrategyBase.withdraw: amountSha`D\x82\x01R\x7Fres must be less than or equal t`d\x82\x01Rlo totalShares`\x98\x1B`\x84\x82\x01R`\xA4\x01a\x04\x10V[`\0a\r'a\x03\xE8\x83a\x1A\xBBV[\x90P`\0a\x03\xE8a\r6a\x12\xA2V[a\r@\x91\x90a\x1A\xBBV[\x90P`\0\x82a\rO\x87\x84a\x1A\xEAV[a\rY\x91\x90a\x1B\tV[\x90Pa\re\x86\x85a\x1A\xD3V[`3Ua\rs\x88\x88\x83a\x13\x97V[PPPPPPPPV[`\0\x80a\x03\xE8`3Ta\r\x90\x91\x90a\x1A\xBBV[\x90P`\0a\x03\xE8a\r\x9Fa\x12\xA2V[a\r\xA9\x91\x90a\x1A\xBBV[\x90P\x80a\n\xD4\x83\x86a\x1A\xEAV[`\0a\t\xC9\x82a\n\x9BV[`\0`\x02\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xEA\xB6mz`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\x14W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E8\x91\x90a\x19\xD4V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0EhW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x10\x90a\x19\xF1V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\x0E\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.unpause: invalid attemp`D\x82\x01R\x7Ft to pause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x04\x10V[`\x01\x81\x90U`@Q\x81\x81R3\x90\x7F5\x82\xD1\x82\x8E&\xBFV\xBD\x80\x15\x02\xBC\x02\x1A\xC0\xBC\x8A\xFBW\xC8&\xE4\x98kEY<\x8F\xAD8\x9C\x90` \x01a\x07>V[`dT`@\x80Q\x91\x82R` \x82\x01\x84\x90R\x7F\xF9~\xD4\xE0\x83\xAC\xACg\x83\0%\xEC\xBCum\x8F\xE8G\xCD\xBD\xCAL\xEE?\xE1\xE1(\xE9\x8BT\xEC\xB5\x91\x01`@Q\x80\x91\x03\x90\xA1`eT`@\x80Q\x91\x82R` \x82\x01\x83\x90R\x7Fj\xB1\x81\xE0D\x0B\xFB\xF4\xBA\xCD\xF2\xE9\x96ts\\\xE6c\x80\x05I\x06\x88\xC5\xF9\x94\xF59\x93S\xE4R\x91\x01`@Q\x80\x91\x03\x90\xA1\x80\x82\x11\x15a\x10\x1FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`K`$\x82\x01R\x7FStrategyBaseTVLLimits._setTVLLim`D\x82\x01R\x7Fits: maxPerDeposit exceeds maxTo`d\x82\x01RjtalDeposits`\xA8\x1B`\x84\x82\x01R`\xA4\x01a\x04\x10V[`d\x91\x90\x91U`eUV[`\0Ta\x01\0\x90\x04`\xFF\x16a\x10\x95W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`+`$\x82\x01R\x7FInitializable: contract is not i`D\x82\x01Rjnitializing`\xA8\x1B`d\x82\x01R`\x84\x01a\x04\x10V[`2\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x17\x90Ua\x06\x01\x81`\0a\x13\xABV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x11IW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FPausable._setPauserRegistry: new`D\x82\x01R\x7FPauserRegistry cannot be the zer`d\x82\x01Rho address`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\x04\x10V[`\0T`@\x80Q`\x01`\x01`\xA0\x1B\x03b\x01\0\0\x90\x93\x04\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7Fn\x9F\xCDS\x98\x96\xFC\xA6\x0E\x8B\x0F\x01\xDDX\x023\xE4\x8Ak\x0F}\xF0\x13\xB8\x9B\xA7\xF5e\x86\x9A\xCD\xB6\x91\x01`@Q\x80\x91\x03\x90\xA1`\0\x80T`\x01`\x01`\xA0\x1B\x03\x90\x92\x16b\x01\0\0\x02b\x01\0\0`\x01`\xB0\x1B\x03\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[`dT\x81\x11\x15a\x12*W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FStrategyBaseTVLLimits: max per d`D\x82\x01Rn\x19\\\x1B\xDC\xDA]\x08\x19^\x18\xD9YY\x19Y`\x8A\x1B`d\x82\x01R`\x84\x01a\x04\x10V[`eTa\x125a\x12\xA2V[\x11\x15a\x12\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`,`$\x82\x01R\x7FStrategyBaseTVLLimits: max depos`D\x82\x01Rk\x1A]\x1C\xC8\x19^\x18\xD9YY\x19Y`\xA2\x1B`d\x82\x01R`\x84\x01a\x04\x10V[a\x06\x01\x82\x82a\x14\x97V[`2T`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\0\x91`\x01`\x01`\xA0\x1B\x03\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12\xEBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\x0F\x91\x90a\x1B+V[\x90P\x90V[`2T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14a\t\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`;`$\x82\x01R\x7FStrategyBase.withdraw: Can only `D\x82\x01R\x7Fwithdraw the strategy token\0\0\0\0\0`d\x82\x01R`\x84\x01a\x04\x10V[a\t\xB6`\x01`\x01`\xA0\x1B\x03\x83\x16\x84\x83a\x15\x13V[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x13\xD2WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a\x14TW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FPausable._initializePauser: _ini`D\x82\x01R\x7FtializePauser() can only be call`d\x82\x01Rfed once`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x04\x10V[`\x01\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2a\x06\x01\x82a\x10\xBBV[`2T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14a\x06\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`6`$\x82\x01R\x7FStrategyBase.deposit: Can only d`D\x82\x01Ru2\xB87\xB9\xB4\xBA\x10:\xB722\xB96<\xB4\xB73\xAA7\xB5\xB2\xB7`Q\x1B`d\x82\x01R`\x84\x01a\x04\x10V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`$\x83\x01R`D\x80\x83\x01\x85\x90R\x83Q\x80\x84\x03\x90\x91\x01\x81R`d\x90\x92\x01\x83R` \x80\x83\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xA9\x05\x9C\xBB`\xE0\x1B\x17\x90R\x83Q\x80\x85\x01\x90\x94R\x80\x84R\x7FSafeERC20: low-level call failed\x90\x84\x01Ra\t\xB6\x92\x86\x92\x91`\0\x91a\x15\xA3\x91\x85\x16\x90\x84\x90a\x16 V[\x80Q\x90\x91P\x15a\t\xB6W\x80\x80` \x01\x90Q\x81\x01\x90a\x15\xC1\x91\x90a\x1A;V[a\t\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`*`$\x82\x01R\x7FSafeERC20: ERC20 operation did n`D\x82\x01Ri\x1B\xDD\x08\x1C\xDDX\xD8\xD9YY`\xB2\x1B`d\x82\x01R`\x84\x01a\x04\x10V[``a\x16/\x84\x84`\0\x85a\x169V[\x90P[\x93\x92PPPV[``\x82G\x10\x15a\x16\x9AW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FAddress: insufficient balance fo`D\x82\x01Re\x1C\x88\x18\xD8[\x1B`\xD2\x1B`d\x82\x01R`\x84\x01a\x04\x10V[`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x16\xF1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01a\x04\x10V[`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa\x17\r\x91\x90a\x1BDV[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x17JW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x17OV[``\x91P[P\x91P\x91Pa\x17_\x82\x82\x86a\x17jV[\x97\x96PPPPPPPV[``\x83\x15a\x17yWP\x81a\x162V[\x82Q\x15a\x17\x89W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x10\x91\x90a\x19\x12V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x05MW`\0\x80\xFD[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x17\xCEW`\0\x80\xFD[\x845\x93P` \x85\x015\x92P`@\x85\x015a\x17\xE7\x81a\x17\xA3V[\x91P``\x85\x015a\x17\xF7\x81a\x17\xA3V[\x93\x96\x92\x95P\x90\x93PPV[`\0` \x82\x84\x03\x12\x15a\x18\x14W`\0\x80\xFD[\x815a\x162\x81a\x17\xA3V[`\0\x80`@\x83\x85\x03\x12\x15a\x182W`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[`\0` \x82\x84\x03\x12\x15a\x18SW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x18mW`\0\x80\xFD[\x825a\x18x\x81a\x17\xA3V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x18\x99W`\0\x80\xFD[\x825a\x18\xA4\x81a\x17\xA3V[\x91P` \x83\x015a\x18\xB4\x81a\x17\xA3V[\x80\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x18\xD1W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x162W`\0\x80\xFD[`\0[\x83\x81\x10\x15a\x18\xFDW\x81\x81\x01Q\x83\x82\x01R` \x01a\x18\xE5V[\x83\x81\x11\x15a\x19\x0CW`\0\x84\x84\x01R[PPPPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x191\x81`@\x85\x01` \x87\x01a\x18\xE2V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x19ZW`\0\x80\xFD[\x835a\x19e\x81a\x17\xA3V[\x92P` \x84\x015a\x19u\x81a\x17\xA3V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[` \x80\x82R`.\x90\x82\x01R\x7FInitializable: contract is alrea`@\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B``\x82\x01R`\x80\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x19\xE6W`\0\x80\xFD[\x81Qa\x162\x81a\x17\xA3V[` \x80\x82R`*\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Ri9\x90:\xB780\xBA\xB9\xB2\xB9`\xB1\x1B``\x82\x01R`\x80\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x1AMW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x162W`\0\x80\xFD[` \x80\x82R`(\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Rg9\x9080\xBA\xB9\xB2\xB9`\xC1\x1B``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\x1A\xCEWa\x1A\xCEa\x1A\xA5V[P\x01\x90V[`\0\x82\x82\x10\x15a\x1A\xE5Wa\x1A\xE5a\x1A\xA5V[P\x03\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x1B\x04Wa\x1B\x04a\x1A\xA5V[P\x02\x90V[`\0\x82a\x1B&WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0` \x82\x84\x03\x12\x15a\x1B=W`\0\x80\xFD[PQ\x91\x90PV[`\0\x82Qa\x1BV\x81\x84` \x87\x01a\x18\xE2V[\x91\x90\x91\x01\x92\x91PPV\xFEBase Strategy implementation to inherit from for more complex implementations\xA2dipfsX\"\x12 A\x12\xA7]\xF8\x84\xA0\x7FU\xB0\x81g~\xB0g\xDCn$\xC9B\xE1c\xB4\xEF\x04\xA0\xCE\xA4\xB7\x18:\xF2dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b506004361061018e5760003560e01c80635c975abb116100de578063ab5921e111610097578063df6fadc111610071578063df6fadc114610366578063e3dae51c14610381578063f3e7387514610394578063fabc1cbc146103a757600080fd5b8063ab5921e11461032b578063ce7c2ac214610340578063d9caed121461035357600080fd5b80635c975abb146102c857806361b01b5d146102d05780637a8b2637146102d9578063886f1195146102ec5780638c871019146103055780638f6a62401461031857600080fd5b80633a98ef391161014b578063485cc95511610125578063485cc9551461026b578063553ca5f81461027e578063595c6a67146102915780635ac86ab71461029957600080fd5b80633a98ef391461023857806343fe08b01461024f57806347e7ef241461025857600080fd5b8063019e27291461019357806310d67a2f146101a857806311c70c9d146101bb578063136439dd146101ce5780632495a599146101e157806339b70e3814610211575b600080fd5b6101a66101a13660046117b8565b6103ba565b005b6101a66101b6366004611802565b61049d565b6101a66101c936600461181f565b610550565b6101a66101dc366004611841565b610605565b6032546101f4906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101f47f000000000000000000000000000000000000000000000000000000000000000081565b61024160335481565b604051908152602001610208565b61024160645481565b61024161026636600461185a565b610749565b6101a6610279366004611886565b6108ed565b61024161028c366004611802565b6109bb565b6101a66109cf565b6102b86102a73660046118bf565b6001805460ff9092161b9081161490565b6040519015158152602001610208565b600154610241565b61024160655481565b6102416102e7366004611841565b610a9b565b6000546101f4906201000090046001600160a01b031681565b610241610313366004611841565b610ae6565b610241610326366004611802565b610af1565b610333610aff565b6040516102089190611912565b61024161034e366004611802565b610b1f565b6101a6610361366004611945565b610bb4565b60645460655460408051928352602083019190915201610208565b61024161038f366004611841565b610d7d565b6102416103a2366004611841565b610db6565b6101a66103b5366004611841565b610dc1565b600054610100900460ff16158080156103da5750600054600160ff909116105b806103f45750303b1580156103f4575060005460ff166001145b6104195760405162461bcd60e51b815260040161041090611986565b60405180910390fd5b6000805460ff19166001179055801561043c576000805461ff0019166101001790555b6104468585610f1d565b610450838361102a565b8015610496576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051491906119d4565b6001600160a01b0316336001600160a01b0316146105445760405162461bcd60e51b8152600401610410906119f1565b61054d816110bb565b50565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c791906119d4565b6001600160a01b0316336001600160a01b0316146105f75760405162461bcd60e51b8152600401610410906119f1565b6106018282610f1d565b5050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610652573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106769190611a3b565b6106925760405162461bcd60e51b815260040161041090611a5d565b6001548181161461070b5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001805460009182918116141561079e5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108165760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b61082084846111c0565b60335460006108316103e883611abb565b905060006103e86108406112a2565b61084a9190611abb565b905060006108588783611ad3565b9050806108658489611aea565b61086f9190611b09565b9550856108d55760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b6064820152608401610410565b6108df8685611abb565b603355505050505092915050565b600054610100900460ff161580801561090d5750600054600160ff909116105b806109275750303b158015610927575060005460ff166001145b6109435760405162461bcd60e51b815260040161041090611986565b6000805460ff191660011790558015610966576000805461ff0019166101001790555b610970838361102a565b80156109b6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006109c96102e783610b1f565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a409190611a3b565b610a5c5760405162461bcd60e51b815260040161041090611a5d565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e8603354610aae9190611abb565b905060006103e8610abd6112a2565b610ac79190611abb565b905081610ad48583611aea565b610ade9190611b09565b949350505050565b60006109c982610d7d565b60006109c96103a283610b1f565b60606040518060800160405280604d8152602001611b61604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610b90573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c99190611b2b565b6001805460029081161415610c075760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c7f5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b610c8a848484611314565b60335480831115610d195760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a401610410565b6000610d276103e883611abb565b905060006103e8610d366112a2565b610d409190611abb565b9050600082610d4f8784611aea565b610d599190611b09565b9050610d658685611ad3565b603355610d73888883611397565b5050505050505050565b6000806103e8603354610d909190611abb565b905060006103e8610d9f6112a2565b610da99190611abb565b905080610ad48386611aea565b60006109c982610a9b565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3891906119d4565b6001600160a01b0316336001600160a01b031614610e685760405162461bcd60e51b8152600401610410906119f1565b600154198119600154191614610ee65760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161073e565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a18082111561101f5760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794261736554564c4c696d6974732e5f73657454564c4c696d60448201527f6974733a206d61785065724465706f7369742065786365656473206d6178546f60648201526a74616c4465706f7369747360a81b608482015260a401610410565b606491909155606555565b600054610100900460ff166110955760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610410565b603280546001600160a01b0319166001600160a01b0384161790556106018160006113ab565b6001600160a01b0381166111495760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610410565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60645481111561122a5760405162461bcd60e51b815260206004820152602f60248201527f53747261746567794261736554564c4c696d6974733a206d617820706572206460448201526e195c1bdcda5d08195e18d959591959608a1b6064820152608401610410565b6065546112356112a2565b11156112985760405162461bcd60e51b815260206004820152602c60248201527f53747261746567794261736554564c4c696d6974733a206d6178206465706f7360448201526b1a5d1cc8195e18d95959195960a21b6064820152608401610410565b6106018282611497565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156112eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130f9190611b2b565b905090565b6032546001600160a01b038381169116146109b65760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e00000000006064820152608401610410565b6109b66001600160a01b0383168483611513565b6000546201000090046001600160a01b03161580156113d257506001600160a01b03821615155b6114545760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610601826110bb565b6032546001600160a01b038381169116146106015760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b6064820152608401610410565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526109b6928692916000916115a3918516908490611620565b8051909150156109b657808060200190518101906115c19190611a3b565b6109b65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610410565b606061162f8484600085611639565b90505b9392505050565b60608247101561169a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610410565b6001600160a01b0385163b6116f15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610410565b600080866001600160a01b0316858760405161170d9190611b44565b60006040518083038185875af1925050503d806000811461174a576040519150601f19603f3d011682016040523d82523d6000602084013e61174f565b606091505b509150915061175f82828661176a565b979650505050505050565b60608315611779575081611632565b8251156117895782518084602001fd5b8160405162461bcd60e51b81526004016104109190611912565b6001600160a01b038116811461054d57600080fd5b600080600080608085870312156117ce57600080fd5b843593506020850135925060408501356117e7816117a3565b915060608501356117f7816117a3565b939692955090935050565b60006020828403121561181457600080fd5b8135611632816117a3565b6000806040838503121561183257600080fd5b50508035926020909101359150565b60006020828403121561185357600080fd5b5035919050565b6000806040838503121561186d57600080fd5b8235611878816117a3565b946020939093013593505050565b6000806040838503121561189957600080fd5b82356118a4816117a3565b915060208301356118b4816117a3565b809150509250929050565b6000602082840312156118d157600080fd5b813560ff8116811461163257600080fd5b60005b838110156118fd5781810151838201526020016118e5565b8381111561190c576000848401525b50505050565b60208152600082518060208401526119318160408501602087016118e2565b601f01601f19169190910160400192915050565b60008060006060848603121561195a57600080fd5b8335611965816117a3565b92506020840135611975816117a3565b929592945050506040919091013590565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6000602082840312156119e657600080fd5b8151611632816117a3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611a4d57600080fd5b8151801515811461163257600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611ace57611ace611aa5565b500190565b600082821015611ae557611ae5611aa5565b500390565b6000816000190483118215151615611b0457611b04611aa5565b500290565b600082611b2657634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611b3d57600080fd5b5051919050565b60008251611b568184602087016118e2565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212204112a75df884a07f55b081677eb067dc6e24c942e163b4ef04a0cea4b7183af264736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\x8EW`\x005`\xE0\x1C\x80c\\\x97Z\xBB\x11a\0\xDEW\x80c\xABY!\xE1\x11a\0\x97W\x80c\xDFo\xAD\xC1\x11a\0qW\x80c\xDFo\xAD\xC1\x14a\x03fW\x80c\xE3\xDA\xE5\x1C\x14a\x03\x81W\x80c\xF3\xE78u\x14a\x03\x94W\x80c\xFA\xBC\x1C\xBC\x14a\x03\xA7W`\0\x80\xFD[\x80c\xABY!\xE1\x14a\x03+W\x80c\xCE|*\xC2\x14a\x03@W\x80c\xD9\xCA\xED\x12\x14a\x03SW`\0\x80\xFD[\x80c\\\x97Z\xBB\x14a\x02\xC8W\x80ca\xB0\x1B]\x14a\x02\xD0W\x80cz\x8B&7\x14a\x02\xD9W\x80c\x88o\x11\x95\x14a\x02\xECW\x80c\x8C\x87\x10\x19\x14a\x03\x05W\x80c\x8Fjb@\x14a\x03\x18W`\0\x80\xFD[\x80c:\x98\xEF9\x11a\x01KW\x80cH\\\xC9U\x11a\x01%W\x80cH\\\xC9U\x14a\x02kW\x80cU<\xA5\xF8\x14a\x02~W\x80cY\\jg\x14a\x02\x91W\x80cZ\xC8j\xB7\x14a\x02\x99W`\0\x80\xFD[\x80c:\x98\xEF9\x14a\x028W\x80cC\xFE\x08\xB0\x14a\x02OW\x80cG\xE7\xEF$\x14a\x02XW`\0\x80\xFD[\x80c\x01\x9E')\x14a\x01\x93W\x80c\x10\xD6z/\x14a\x01\xA8W\x80c\x11\xC7\x0C\x9D\x14a\x01\xBBW\x80c\x13d9\xDD\x14a\x01\xCEW\x80c$\x95\xA5\x99\x14a\x01\xE1W\x80c9\xB7\x0E8\x14a\x02\x11W[`\0\x80\xFD[a\x01\xA6a\x01\xA16`\x04a\x17\xB8V[a\x03\xBAV[\0[a\x01\xA6a\x01\xB66`\x04a\x18\x02V[a\x04\x9DV[a\x01\xA6a\x01\xC96`\x04a\x18\x1FV[a\x05PV[a\x01\xA6a\x01\xDC6`\x04a\x18AV[a\x06\x05V[`2Ta\x01\xF4\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\xF4\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x02A`3T\x81V[`@Q\x90\x81R` \x01a\x02\x08V[a\x02A`dT\x81V[a\x02Aa\x02f6`\x04a\x18ZV[a\x07IV[a\x01\xA6a\x02y6`\x04a\x18\x86V[a\x08\xEDV[a\x02Aa\x02\x8C6`\x04a\x18\x02V[a\t\xBBV[a\x01\xA6a\t\xCFV[a\x02\xB8a\x02\xA76`\x04a\x18\xBFV[`\x01\x80T`\xFF\x90\x92\x16\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x02\x08V[`\x01Ta\x02AV[a\x02A`eT\x81V[a\x02Aa\x02\xE76`\x04a\x18AV[a\n\x9BV[`\0Ta\x01\xF4\x90b\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x02Aa\x03\x136`\x04a\x18AV[a\n\xE6V[a\x02Aa\x03&6`\x04a\x18\x02V[a\n\xF1V[a\x033a\n\xFFV[`@Qa\x02\x08\x91\x90a\x19\x12V[a\x02Aa\x03N6`\x04a\x18\x02V[a\x0B\x1FV[a\x01\xA6a\x03a6`\x04a\x19EV[a\x0B\xB4V[`dT`eT`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x02\x08V[a\x02Aa\x03\x8F6`\x04a\x18AV[a\r}V[a\x02Aa\x03\xA26`\x04a\x18AV[a\r\xB6V[a\x01\xA6a\x03\xB56`\x04a\x18AV[a\r\xC1V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x03\xDAWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x03\xF4WP0;\x15\x80\x15a\x03\xF4WP`\0T`\xFF\x16`\x01\x14[a\x04\x19W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x10\x90a\x19\x86V[`@Q\x80\x91\x03\x90\xFD[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x04=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x14\x91\x90a\x19\xD4V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x05DW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x10\x90a\x19\xF1V[a\x05M\x81a\x10\xBBV[PV[`\0`\x02\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xEA\xB6mz`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\xA3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xC7\x91\x90a\x19\xD4V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x05\xF7W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x10\x90a\x19\xF1V[a\x06\x01\x82\x82a\x0F\x1DV[PPV[`\0T`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01Rb\x01\0\0\x90\x91\x04`\x01`\x01`\xA0\x1B\x03\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06RW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06v\x91\x90a\x1A;V[a\x06\x92W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x10\x90a\x1A]V[`\x01T\x81\x81\x16\x14a\x07\x0BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.pause: invalid attempt `D\x82\x01R\x7Fto unpause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x04\x10V[`\x01\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01[`@Q\x80\x91\x03\x90\xA2PV[`\x01\x80T`\0\x91\x82\x91\x81\x16\x14\x15a\x07\x9EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01Rx\x14\x18]\\\xD8X\x9B\x19N\x88\x1A[\x99\x19^\x08\x1A\\\xC8\x1C\x18]\\\xD9Y`:\x1B`D\x82\x01R`d\x01a\x04\x10V[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x08\x16W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x04\x10V[a\x08 \x84\x84a\x11\xC0V[`3T`\0a\x081a\x03\xE8\x83a\x1A\xBBV[\x90P`\0a\x03\xE8a\x08@a\x12\xA2V[a\x08J\x91\x90a\x1A\xBBV[\x90P`\0a\x08X\x87\x83a\x1A\xD3V[\x90P\x80a\x08e\x84\x89a\x1A\xEAV[a\x08o\x91\x90a\x1B\tV[\x95P\x85a\x08\xD5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FStrategyBase.deposit: newShares `D\x82\x01Rmcannot be zero`\x90\x1B`d\x82\x01R`\x84\x01a\x04\x10V[a\x08\xDF\x86\x85a\x1A\xBBV[`3UPPPPP\x92\x91PPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\t\rWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\t'WP0;\x15\x80\x15a\t'WP`\0T`\xFF\x16`\x01\x14[a\tCW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x10\x90a\x19\x86V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\tfW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\tp\x83\x83a\x10*V[\x80\x15a\t\xB6W`\0\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPV[`\0a\t\xC9a\x02\xE7\x83a\x0B\x1FV[\x92\x91PPV[`\0T`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01Rb\x01\0\0\x90\x91\x04`\x01`\x01`\xA0\x1B\x03\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\x1CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n@\x91\x90a\x1A;V[a\n\\W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x10\x90a\x1A]V[`\0\x19`\x01\x81\x90U`@Q\x90\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2V[`\0\x80a\x03\xE8`3Ta\n\xAE\x91\x90a\x1A\xBBV[\x90P`\0a\x03\xE8a\n\xBDa\x12\xA2V[a\n\xC7\x91\x90a\x1A\xBBV[\x90P\x81a\n\xD4\x85\x83a\x1A\xEAV[a\n\xDE\x91\x90a\x1B\tV[\x94\x93PPPPV[`\0a\t\xC9\x82a\r}V[`\0a\t\xC9a\x03\xA2\x83a\x0B\x1FV[```@Q\x80`\x80\x01`@R\x80`M\x81R` \x01a\x1Ba`M\x919\x90P\x90V[`@Qc=?\x06\xC9`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R0`$\x83\x01R`\0\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90cz~\r\x92\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\x90W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xC9\x91\x90a\x1B+V[`\x01\x80T`\x02\x90\x81\x16\x14\x15a\x0C\x07W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01Rx\x14\x18]\\\xD8X\x9B\x19N\x88\x1A[\x99\x19^\x08\x1A\\\xC8\x1C\x18]\\\xD9Y`:\x1B`D\x82\x01R`d\x01a\x04\x10V[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x0C\x7FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrategyBase.onlyStrategyManager`D\x82\x01R`d\x01a\x04\x10V[a\x0C\x8A\x84\x84\x84a\x13\x14V[`3T\x80\x83\x11\x15a\r\x19W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`M`$\x82\x01R\x7FStrategyBase.withdraw: amountSha`D\x82\x01R\x7Fres must be less than or equal t`d\x82\x01Rlo totalShares`\x98\x1B`\x84\x82\x01R`\xA4\x01a\x04\x10V[`\0a\r'a\x03\xE8\x83a\x1A\xBBV[\x90P`\0a\x03\xE8a\r6a\x12\xA2V[a\r@\x91\x90a\x1A\xBBV[\x90P`\0\x82a\rO\x87\x84a\x1A\xEAV[a\rY\x91\x90a\x1B\tV[\x90Pa\re\x86\x85a\x1A\xD3V[`3Ua\rs\x88\x88\x83a\x13\x97V[PPPPPPPPV[`\0\x80a\x03\xE8`3Ta\r\x90\x91\x90a\x1A\xBBV[\x90P`\0a\x03\xE8a\r\x9Fa\x12\xA2V[a\r\xA9\x91\x90a\x1A\xBBV[\x90P\x80a\n\xD4\x83\x86a\x1A\xEAV[`\0a\t\xC9\x82a\n\x9BV[`\0`\x02\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xEA\xB6mz`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\x14W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E8\x91\x90a\x19\xD4V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0EhW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x10\x90a\x19\xF1V[`\x01T\x19\x81\x19`\x01T\x19\x16\x14a\x0E\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.unpause: invalid attemp`D\x82\x01R\x7Ft to pause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x04\x10V[`\x01\x81\x90U`@Q\x81\x81R3\x90\x7F5\x82\xD1\x82\x8E&\xBFV\xBD\x80\x15\x02\xBC\x02\x1A\xC0\xBC\x8A\xFBW\xC8&\xE4\x98kEY<\x8F\xAD8\x9C\x90` \x01a\x07>V[`dT`@\x80Q\x91\x82R` \x82\x01\x84\x90R\x7F\xF9~\xD4\xE0\x83\xAC\xACg\x83\0%\xEC\xBCum\x8F\xE8G\xCD\xBD\xCAL\xEE?\xE1\xE1(\xE9\x8BT\xEC\xB5\x91\x01`@Q\x80\x91\x03\x90\xA1`eT`@\x80Q\x91\x82R` \x82\x01\x83\x90R\x7Fj\xB1\x81\xE0D\x0B\xFB\xF4\xBA\xCD\xF2\xE9\x96ts\\\xE6c\x80\x05I\x06\x88\xC5\xF9\x94\xF59\x93S\xE4R\x91\x01`@Q\x80\x91\x03\x90\xA1\x80\x82\x11\x15a\x10\x1FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`K`$\x82\x01R\x7FStrategyBaseTVLLimits._setTVLLim`D\x82\x01R\x7Fits: maxPerDeposit exceeds maxTo`d\x82\x01RjtalDeposits`\xA8\x1B`\x84\x82\x01R`\xA4\x01a\x04\x10V[`d\x91\x90\x91U`eUV[`\0Ta\x01\0\x90\x04`\xFF\x16a\x10\x95W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`+`$\x82\x01R\x7FInitializable: contract is not i`D\x82\x01Rjnitializing`\xA8\x1B`d\x82\x01R`\x84\x01a\x04\x10V[`2\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x17\x90Ua\x06\x01\x81`\0a\x13\xABV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x11IW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FPausable._setPauserRegistry: new`D\x82\x01R\x7FPauserRegistry cannot be the zer`d\x82\x01Rho address`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\x04\x10V[`\0T`@\x80Q`\x01`\x01`\xA0\x1B\x03b\x01\0\0\x90\x93\x04\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7Fn\x9F\xCDS\x98\x96\xFC\xA6\x0E\x8B\x0F\x01\xDDX\x023\xE4\x8Ak\x0F}\xF0\x13\xB8\x9B\xA7\xF5e\x86\x9A\xCD\xB6\x91\x01`@Q\x80\x91\x03\x90\xA1`\0\x80T`\x01`\x01`\xA0\x1B\x03\x90\x92\x16b\x01\0\0\x02b\x01\0\0`\x01`\xB0\x1B\x03\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[`dT\x81\x11\x15a\x12*W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FStrategyBaseTVLLimits: max per d`D\x82\x01Rn\x19\\\x1B\xDC\xDA]\x08\x19^\x18\xD9YY\x19Y`\x8A\x1B`d\x82\x01R`\x84\x01a\x04\x10V[`eTa\x125a\x12\xA2V[\x11\x15a\x12\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`,`$\x82\x01R\x7FStrategyBaseTVLLimits: max depos`D\x82\x01Rk\x1A]\x1C\xC8\x19^\x18\xD9YY\x19Y`\xA2\x1B`d\x82\x01R`\x84\x01a\x04\x10V[a\x06\x01\x82\x82a\x14\x97V[`2T`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\0\x91`\x01`\x01`\xA0\x1B\x03\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12\xEBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\x0F\x91\x90a\x1B+V[\x90P\x90V[`2T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14a\t\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`;`$\x82\x01R\x7FStrategyBase.withdraw: Can only `D\x82\x01R\x7Fwithdraw the strategy token\0\0\0\0\0`d\x82\x01R`\x84\x01a\x04\x10V[a\t\xB6`\x01`\x01`\xA0\x1B\x03\x83\x16\x84\x83a\x15\x13V[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a\x13\xD2WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a\x14TW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FPausable._initializePauser: _ini`D\x82\x01R\x7FtializePauser() can only be call`d\x82\x01Rfed once`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x04\x10V[`\x01\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2a\x06\x01\x82a\x10\xBBV[`2T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14a\x06\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`6`$\x82\x01R\x7FStrategyBase.deposit: Can only d`D\x82\x01Ru2\xB87\xB9\xB4\xBA\x10:\xB722\xB96<\xB4\xB73\xAA7\xB5\xB2\xB7`Q\x1B`d\x82\x01R`\x84\x01a\x04\x10V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`$\x83\x01R`D\x80\x83\x01\x85\x90R\x83Q\x80\x84\x03\x90\x91\x01\x81R`d\x90\x92\x01\x83R` \x80\x83\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xA9\x05\x9C\xBB`\xE0\x1B\x17\x90R\x83Q\x80\x85\x01\x90\x94R\x80\x84R\x7FSafeERC20: low-level call failed\x90\x84\x01Ra\t\xB6\x92\x86\x92\x91`\0\x91a\x15\xA3\x91\x85\x16\x90\x84\x90a\x16 V[\x80Q\x90\x91P\x15a\t\xB6W\x80\x80` \x01\x90Q\x81\x01\x90a\x15\xC1\x91\x90a\x1A;V[a\t\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`*`$\x82\x01R\x7FSafeERC20: ERC20 operation did n`D\x82\x01Ri\x1B\xDD\x08\x1C\xDDX\xD8\xD9YY`\xB2\x1B`d\x82\x01R`\x84\x01a\x04\x10V[``a\x16/\x84\x84`\0\x85a\x169V[\x90P[\x93\x92PPPV[``\x82G\x10\x15a\x16\x9AW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FAddress: insufficient balance fo`D\x82\x01Re\x1C\x88\x18\xD8[\x1B`\xD2\x1B`d\x82\x01R`\x84\x01a\x04\x10V[`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x16\xF1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01a\x04\x10V[`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa\x17\r\x91\x90a\x1BDV[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x17JW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x17OV[``\x91P[P\x91P\x91Pa\x17_\x82\x82\x86a\x17jV[\x97\x96PPPPPPPV[``\x83\x15a\x17yWP\x81a\x162V[\x82Q\x15a\x17\x89W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x10\x91\x90a\x19\x12V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x05MW`\0\x80\xFD[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x17\xCEW`\0\x80\xFD[\x845\x93P` \x85\x015\x92P`@\x85\x015a\x17\xE7\x81a\x17\xA3V[\x91P``\x85\x015a\x17\xF7\x81a\x17\xA3V[\x93\x96\x92\x95P\x90\x93PPV[`\0` \x82\x84\x03\x12\x15a\x18\x14W`\0\x80\xFD[\x815a\x162\x81a\x17\xA3V[`\0\x80`@\x83\x85\x03\x12\x15a\x182W`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[`\0` \x82\x84\x03\x12\x15a\x18SW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x18mW`\0\x80\xFD[\x825a\x18x\x81a\x17\xA3V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x18\x99W`\0\x80\xFD[\x825a\x18\xA4\x81a\x17\xA3V[\x91P` \x83\x015a\x18\xB4\x81a\x17\xA3V[\x80\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x18\xD1W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x162W`\0\x80\xFD[`\0[\x83\x81\x10\x15a\x18\xFDW\x81\x81\x01Q\x83\x82\x01R` \x01a\x18\xE5V[\x83\x81\x11\x15a\x19\x0CW`\0\x84\x84\x01R[PPPPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x191\x81`@\x85\x01` \x87\x01a\x18\xE2V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x19ZW`\0\x80\xFD[\x835a\x19e\x81a\x17\xA3V[\x92P` \x84\x015a\x19u\x81a\x17\xA3V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[` \x80\x82R`.\x90\x82\x01R\x7FInitializable: contract is alrea`@\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B``\x82\x01R`\x80\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x19\xE6W`\0\x80\xFD[\x81Qa\x162\x81a\x17\xA3V[` \x80\x82R`*\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Ri9\x90:\xB780\xBA\xB9\xB2\xB9`\xB1\x1B``\x82\x01R`\x80\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x1AMW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x162W`\0\x80\xFD[` \x80\x82R`(\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Rg9\x9080\xBA\xB9\xB2\xB9`\xC1\x1B``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a\x1A\xCEWa\x1A\xCEa\x1A\xA5V[P\x01\x90V[`\0\x82\x82\x10\x15a\x1A\xE5Wa\x1A\xE5a\x1A\xA5V[P\x03\x90V[`\0\x81`\0\x19\x04\x83\x11\x82\x15\x15\x16\x15a\x1B\x04Wa\x1B\x04a\x1A\xA5V[P\x02\x90V[`\0\x82a\x1B&WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0` \x82\x84\x03\x12\x15a\x1B=W`\0\x80\xFD[PQ\x91\x90PV[`\0\x82Qa\x1BV\x81\x84` \x87\x01a\x18\xE2V[\x91\x90\x91\x01\x92\x91PPV\xFEBase Strategy implementation to inherit from for more complex implementations\xA2dipfsX\"\x12 A\x12\xA7]\xF8\x84\xA0\x7FU\xB0\x81g~\xB0g\xDCn$\xC9B\xE1c\xB4\xEF\x04\xA0\xCE\xA4\xB7\x18:\xF2dsolcC\0\x08\x0C\x003", + ); + /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`. + ```solidity + event Initialized(uint8 version); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Initialized { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "Initialized(uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, + 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, + 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { version: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.version, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Initialized { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Initialized> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Initialized) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `MaxPerDepositUpdated(uint256,uint256)` and selector `0xf97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5`. + ```solidity + event MaxPerDepositUpdated(uint256 previousValue, uint256 newValue); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct MaxPerDepositUpdated { + #[allow(missing_docs)] + pub previousValue: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub newValue: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for MaxPerDepositUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "MaxPerDepositUpdated(uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 249u8, 126u8, 212u8, 224u8, 131u8, 172u8, 172u8, 103u8, 131u8, 0u8, 37u8, + 236u8, 188u8, 117u8, 109u8, 143u8, 232u8, 71u8, 205u8, 189u8, 202u8, 76u8, + 238u8, 63u8, 225u8, 225u8, 40u8, 233u8, 139u8, 84u8, 236u8, 181u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + previousValue: data.0, + newValue: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.previousValue, + ), + as alloy_sol_types::SolType>::tokenize( + &self.newValue, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for MaxPerDepositUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&MaxPerDepositUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &MaxPerDepositUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `MaxTotalDepositsUpdated(uint256,uint256)` and selector `0x6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452`. + ```solidity + event MaxTotalDepositsUpdated(uint256 previousValue, uint256 newValue); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct MaxTotalDepositsUpdated { + #[allow(missing_docs)] + pub previousValue: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub newValue: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for MaxTotalDepositsUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "MaxTotalDepositsUpdated(uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 106u8, 177u8, 129u8, 224u8, 68u8, 11u8, 251u8, 244u8, 186u8, 205u8, 242u8, + 233u8, 150u8, 116u8, 115u8, 92u8, 230u8, 99u8, 128u8, 5u8, 73u8, 6u8, 136u8, + 197u8, 249u8, 148u8, 245u8, 57u8, 147u8, 83u8, 228u8, 82u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + previousValue: data.0, + newValue: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.previousValue, + ), + as alloy_sol_types::SolType>::tokenize( + &self.newValue, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for MaxTotalDepositsUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&MaxTotalDepositsUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &MaxTotalDepositsUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Paused(address,uint256)` and selector `0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d`. + ```solidity + event Paused(address indexed account, uint256 newPausedStatus); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Paused { + #[allow(missing_docs)] + pub account: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Paused { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Paused(address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8, 188u8, + 152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8, 11u8, 182u8, + 224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + account: topics.1, + newPausedStatus: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.account.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.account, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Paused { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Paused> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Paused) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `PauserRegistrySet(address,address)` and selector `0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6`. + ```solidity + event PauserRegistrySet(address pauserRegistry, address newPauserRegistry); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct PauserRegistrySet { + #[allow(missing_docs)] + pub pauserRegistry: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newPauserRegistry: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for PauserRegistrySet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "PauserRegistrySet(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 110u8, 159u8, 205u8, 83u8, 152u8, 150u8, 252u8, 166u8, 14u8, 139u8, 15u8, 1u8, + 221u8, 88u8, 2u8, 51u8, 228u8, 138u8, 107u8, 15u8, 125u8, 240u8, 19u8, 184u8, + 155u8, 167u8, 245u8, 101u8, 134u8, 154u8, 205u8, 182u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + pauserRegistry: data.0, + newPauserRegistry: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.pauserRegistry, + ), + ::tokenize( + &self.newPauserRegistry, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for PauserRegistrySet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&PauserRegistrySet> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &PauserRegistrySet) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Unpaused(address,uint256)` and selector `0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c`. + ```solidity + event Unpaused(address indexed account, uint256 newPausedStatus); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Unpaused { + #[allow(missing_docs)] + pub account: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Unpaused { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Unpaused(address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8, 2u8, + 188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8, 228u8, 152u8, + 107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + account: topics.1, + newPausedStatus: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.account.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.account, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Unpaused { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Unpaused> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Unpaused) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. + ```solidity + constructor(address _strategyManager); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _strategyManager: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value._strategyManager,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _strategyManager: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._strategyManager, + ), + ) + } + } + }; + /**Function with signature `deposit(address,uint256)` and selector `0x47e7ef24`. + ```solidity + function deposit(address token, uint256 amount) external returns (uint256 newShares); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct depositCall { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`deposit(address,uint256)`](depositCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct depositReturn { + pub newShares: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: depositCall) -> Self { + (value.token, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for depositCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: depositReturn) -> Self { + (value.newShares,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for depositReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newShares: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for depositCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = depositReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "deposit(address,uint256)"; + const SELECTOR: [u8; 4] = [71u8, 231u8, 239u8, 36u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize( + &self.amount, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `explanation()` and selector `0xab5921e1`. + ```solidity + function explanation() external pure returns (string memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct explanationCall {} + ///Container type for the return parameters of the [`explanation()`](explanationCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct explanationReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: explanationCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for explanationCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: explanationReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for explanationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for explanationCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = explanationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "explanation()"; + const SELECTOR: [u8; 4] = [171u8, 89u8, 33u8, 225u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getTVLLimits()` and selector `0xdf6fadc1`. + ```solidity + function getTVLLimits() external view returns (uint256, uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getTVLLimitsCall {} + ///Container type for the return parameters of the [`getTVLLimits()`](getTVLLimitsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getTVLLimitsReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + pub _1: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getTVLLimitsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getTVLLimitsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getTVLLimitsReturn) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getTVLLimitsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getTVLLimitsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getTVLLimitsReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getTVLLimits()"; + const SELECTOR: [u8; 4] = [223u8, 111u8, 173u8, 193u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `initialize(uint256,uint256,address,address)` and selector `0x019e2729`. + ```solidity + function initialize(uint256 _maxPerDeposit, uint256 _maxTotalDeposits, address _underlyingToken, address _pauserRegistry) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initialize_0Call { + pub _maxPerDeposit: alloy::sol_types::private::primitives::aliases::U256, + pub _maxTotalDeposits: alloy::sol_types::private::primitives::aliases::U256, + pub _underlyingToken: alloy::sol_types::private::Address, + pub _pauserRegistry: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`initialize(uint256,uint256,address,address)`](initialize_0Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initialize_0Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initialize_0Call) -> Self { + ( + value._maxPerDeposit, + value._maxTotalDeposits, + value._underlyingToken, + value._pauserRegistry, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initialize_0Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _maxPerDeposit: tuple.0, + _maxTotalDeposits: tuple.1, + _underlyingToken: tuple.2, + _pauserRegistry: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initialize_0Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initialize_0Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for initialize_0Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = initialize_0Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "initialize(uint256,uint256,address,address)"; + const SELECTOR: [u8; 4] = [1u8, 158u8, 39u8, 41u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self._maxPerDeposit, + ), + as alloy_sol_types::SolType>::tokenize( + &self._maxTotalDeposits, + ), + ::tokenize( + &self._underlyingToken, + ), + ::tokenize( + &self._pauserRegistry, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `initialize(address,address)` and selector `0x485cc955`. + ```solidity + function initialize(address _underlyingToken, address _pauserRegistry) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initialize_1Call { + pub _underlyingToken: alloy::sol_types::private::Address, + pub _pauserRegistry: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`initialize(address,address)`](initialize_1Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initialize_1Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initialize_1Call) -> Self { + (value._underlyingToken, value._pauserRegistry) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initialize_1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _underlyingToken: tuple.0, + _pauserRegistry: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initialize_1Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initialize_1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for initialize_1Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = initialize_1Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "initialize(address,address)"; + const SELECTOR: [u8; 4] = [72u8, 92u8, 201u8, 85u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._underlyingToken, + ), + ::tokenize( + &self._pauserRegistry, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `maxPerDeposit()` and selector `0x43fe08b0`. + ```solidity + function maxPerDeposit() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct maxPerDepositCall {} + ///Container type for the return parameters of the [`maxPerDeposit()`](maxPerDepositCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct maxPerDepositReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: maxPerDepositCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for maxPerDepositCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: maxPerDepositReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for maxPerDepositReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for maxPerDepositCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = maxPerDepositReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "maxPerDeposit()"; + const SELECTOR: [u8; 4] = [67u8, 254u8, 8u8, 176u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `maxTotalDeposits()` and selector `0x61b01b5d`. + ```solidity + function maxTotalDeposits() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct maxTotalDepositsCall {} + ///Container type for the return parameters of the [`maxTotalDeposits()`](maxTotalDepositsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct maxTotalDepositsReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: maxTotalDepositsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for maxTotalDepositsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: maxTotalDepositsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for maxTotalDepositsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for maxTotalDepositsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = maxTotalDepositsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "maxTotalDeposits()"; + const SELECTOR: [u8; 4] = [97u8, 176u8, 27u8, 93u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pause(uint256)` and selector `0x136439dd`. + ```solidity + function pause(uint256 newPausedStatus) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseCall { + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`pause(uint256)`](pauseCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseCall) -> Self { + (value.newPausedStatus,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newPausedStatus: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauseCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pauseReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pause(uint256)"; + const SELECTOR: [u8; 4] = [19u8, 100u8, 57u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pauseAll()` and selector `0x595c6a67`. + ```solidity + function pauseAll() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseAllCall {} + ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseAllReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseAllCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseAllCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseAllReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseAllReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauseAllCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pauseAllReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pauseAll()"; + const SELECTOR: [u8; 4] = [89u8, 92u8, 106u8, 103u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `paused(uint8)` and selector `0x5ac86ab7`. + ```solidity + function paused(uint8 index) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_0Call { + pub index: u8, + } + ///Container type for the return parameters of the [`paused(uint8)`](paused_0Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_0Return { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_0Call) -> Self { + (value.index,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_0Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { index: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_0Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_0Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for paused_0Call { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = paused_0Return; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "paused(uint8)"; + const SELECTOR: [u8; 4] = [90u8, 200u8, 106u8, 183u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `paused()` and selector `0x5c975abb`. + ```solidity + function paused() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_1Call {} + ///Container type for the return parameters of the [`paused()`](paused_1Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_1Return { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_1Call) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_1Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for paused_1Call { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = paused_1Return; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "paused()"; + const SELECTOR: [u8; 4] = [92u8, 151u8, 90u8, 187u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pauserRegistry()` and selector `0x886f1195`. + ```solidity + function pauserRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauserRegistryCall {} + ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauserRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauserRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauserRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauserRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauserRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauserRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pauserRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pauserRegistry()"; + const SELECTOR: [u8; 4] = [136u8, 111u8, 17u8, 149u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setPauserRegistry(address)` and selector `0x10d67a2f`. + ```solidity + function setPauserRegistry(address newPauserRegistry) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setPauserRegistryCall { + pub newPauserRegistry: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setPauserRegistry(address)`](setPauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setPauserRegistryReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setPauserRegistryCall) -> Self { + (value.newPauserRegistry,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setPauserRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newPauserRegistry: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setPauserRegistryReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setPauserRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setPauserRegistryCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setPauserRegistryReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setPauserRegistry(address)"; + const SELECTOR: [u8; 4] = [16u8, 214u8, 122u8, 47u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newPauserRegistry, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setTVLLimits(uint256,uint256)` and selector `0x11c70c9d`. + ```solidity + function setTVLLimits(uint256 newMaxPerDeposit, uint256 newMaxTotalDeposits) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setTVLLimitsCall { + pub newMaxPerDeposit: alloy::sol_types::private::primitives::aliases::U256, + pub newMaxTotalDeposits: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`setTVLLimits(uint256,uint256)`](setTVLLimitsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setTVLLimitsReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setTVLLimitsCall) -> Self { + (value.newMaxPerDeposit, value.newMaxTotalDeposits) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setTVLLimitsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newMaxPerDeposit: tuple.0, + newMaxTotalDeposits: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setTVLLimitsReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setTVLLimitsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setTVLLimitsCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setTVLLimitsReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setTVLLimits(uint256,uint256)"; + const SELECTOR: [u8; 4] = [17u8, 199u8, 12u8, 157u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newMaxPerDeposit, + ), + as alloy_sol_types::SolType>::tokenize( + &self.newMaxTotalDeposits, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `shares(address)` and selector `0xce7c2ac2`. + ```solidity + function shares(address user) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct sharesCall { + pub user: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`shares(address)`](sharesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct sharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: sharesCall) -> Self { + (value.user,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for sharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { user: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: sharesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for sharesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for sharesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = sharesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "shares(address)"; + const SELECTOR: [u8; 4] = [206u8, 124u8, 42u8, 194u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.user, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `sharesToUnderlying(uint256)` and selector `0xf3e73875`. + ```solidity + function sharesToUnderlying(uint256 amountShares) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct sharesToUnderlyingCall { + pub amountShares: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`sharesToUnderlying(uint256)`](sharesToUnderlyingCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct sharesToUnderlyingReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: sharesToUnderlyingCall) -> Self { + (value.amountShares,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for sharesToUnderlyingCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + amountShares: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: sharesToUnderlyingReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for sharesToUnderlyingReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for sharesToUnderlyingCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = sharesToUnderlyingReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "sharesToUnderlying(uint256)"; + const SELECTOR: [u8; 4] = [243u8, 231u8, 56u8, 117u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.amountShares, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `sharesToUnderlyingView(uint256)` and selector `0x7a8b2637`. + ```solidity + function sharesToUnderlyingView(uint256 amountShares) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct sharesToUnderlyingViewCall { + pub amountShares: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`sharesToUnderlyingView(uint256)`](sharesToUnderlyingViewCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct sharesToUnderlyingViewReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: sharesToUnderlyingViewCall) -> Self { + (value.amountShares,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for sharesToUnderlyingViewCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + amountShares: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: sharesToUnderlyingViewReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for sharesToUnderlyingViewReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for sharesToUnderlyingViewCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = sharesToUnderlyingViewReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "sharesToUnderlyingView(uint256)"; + const SELECTOR: [u8; 4] = [122u8, 139u8, 38u8, 55u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.amountShares, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `strategyManager()` and selector `0x39b70e38`. + ```solidity + function strategyManager() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyManagerCall {} + ///Container type for the return parameters of the [`strategyManager()`](strategyManagerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyManagerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyManagerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyManagerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyManagerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for strategyManagerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = strategyManagerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "strategyManager()"; + const SELECTOR: [u8; 4] = [57u8, 183u8, 14u8, 56u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `totalShares()` and selector `0x3a98ef39`. + ```solidity + function totalShares() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalSharesCall {} + ///Container type for the return parameters of the [`totalShares()`](totalSharesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalSharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalSharesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalSharesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalSharesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for totalSharesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = totalSharesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "totalShares()"; + const SELECTOR: [u8; 4] = [58u8, 152u8, 239u8, 57u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `underlyingToShares(uint256)` and selector `0x8c871019`. + ```solidity + function underlyingToShares(uint256 amountUnderlying) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct underlyingToSharesCall { + pub amountUnderlying: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`underlyingToShares(uint256)`](underlyingToSharesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct underlyingToSharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: underlyingToSharesCall) -> Self { + (value.amountUnderlying,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for underlyingToSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + amountUnderlying: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: underlyingToSharesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for underlyingToSharesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for underlyingToSharesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = underlyingToSharesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "underlyingToShares(uint256)"; + const SELECTOR: [u8; 4] = [140u8, 135u8, 16u8, 25u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.amountUnderlying, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `underlyingToSharesView(uint256)` and selector `0xe3dae51c`. + ```solidity + function underlyingToSharesView(uint256 amountUnderlying) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct underlyingToSharesViewCall { + pub amountUnderlying: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`underlyingToSharesView(uint256)`](underlyingToSharesViewCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct underlyingToSharesViewReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: underlyingToSharesViewCall) -> Self { + (value.amountUnderlying,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for underlyingToSharesViewCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + amountUnderlying: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: underlyingToSharesViewReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for underlyingToSharesViewReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for underlyingToSharesViewCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = underlyingToSharesViewReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "underlyingToSharesView(uint256)"; + const SELECTOR: [u8; 4] = [227u8, 218u8, 229u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.amountUnderlying, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `underlyingToken()` and selector `0x2495a599`. + ```solidity + function underlyingToken() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct underlyingTokenCall {} + ///Container type for the return parameters of the [`underlyingToken()`](underlyingTokenCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct underlyingTokenReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: underlyingTokenCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for underlyingTokenCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: underlyingTokenReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for underlyingTokenReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for underlyingTokenCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = underlyingTokenReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "underlyingToken()"; + const SELECTOR: [u8; 4] = [36u8, 149u8, 165u8, 153u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `unpause(uint256)` and selector `0xfabc1cbc`. + ```solidity + function unpause(uint256 newPausedStatus) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct unpauseCall { + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`unpause(uint256)`](unpauseCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct unpauseReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: unpauseCall) -> Self { + (value.newPausedStatus,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for unpauseCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newPausedStatus: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: unpauseReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for unpauseReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for unpauseCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = unpauseReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "unpause(uint256)"; + const SELECTOR: [u8; 4] = [250u8, 188u8, 28u8, 188u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `userUnderlying(address)` and selector `0x8f6a6240`. + ```solidity + function userUnderlying(address user) external returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct userUnderlyingCall { + pub user: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`userUnderlying(address)`](userUnderlyingCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct userUnderlyingReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: userUnderlyingCall) -> Self { + (value.user,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for userUnderlyingCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { user: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: userUnderlyingReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for userUnderlyingReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for userUnderlyingCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = userUnderlyingReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "userUnderlying(address)"; + const SELECTOR: [u8; 4] = [143u8, 106u8, 98u8, 64u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.user, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `userUnderlyingView(address)` and selector `0x553ca5f8`. + ```solidity + function userUnderlyingView(address user) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct userUnderlyingViewCall { + pub user: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`userUnderlyingView(address)`](userUnderlyingViewCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct userUnderlyingViewReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: userUnderlyingViewCall) -> Self { + (value.user,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for userUnderlyingViewCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { user: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: userUnderlyingViewReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for userUnderlyingViewReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for userUnderlyingViewCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = userUnderlyingViewReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "userUnderlyingView(address)"; + const SELECTOR: [u8; 4] = [85u8, 60u8, 165u8, 248u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.user, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `withdraw(address,address,uint256)` and selector `0xd9caed12`. + ```solidity + function withdraw(address recipient, address token, uint256 amountShares) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct withdrawCall { + pub recipient: alloy::sol_types::private::Address, + pub token: alloy::sol_types::private::Address, + pub amountShares: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`withdraw(address,address,uint256)`](withdrawCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct withdrawReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: withdrawCall) -> Self { + (value.recipient, value.token, value.amountShares) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + recipient: tuple.0, + token: tuple.1, + amountShares: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: withdrawReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for withdrawCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = withdrawReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "withdraw(address,address,uint256)"; + const SELECTOR: [u8; 4] = [217u8, 202u8, 237u8, 18u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.recipient, + ), + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize( + &self.amountShares, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`StrategyBaseTVLLimits`](self) function calls. + pub enum StrategyBaseTVLLimitsCalls { + deposit(depositCall), + explanation(explanationCall), + getTVLLimits(getTVLLimitsCall), + initialize_0(initialize_0Call), + initialize_1(initialize_1Call), + maxPerDeposit(maxPerDepositCall), + maxTotalDeposits(maxTotalDepositsCall), + pause(pauseCall), + pauseAll(pauseAllCall), + paused_0(paused_0Call), + paused_1(paused_1Call), + pauserRegistry(pauserRegistryCall), + setPauserRegistry(setPauserRegistryCall), + setTVLLimits(setTVLLimitsCall), + shares(sharesCall), + sharesToUnderlying(sharesToUnderlyingCall), + sharesToUnderlyingView(sharesToUnderlyingViewCall), + strategyManager(strategyManagerCall), + totalShares(totalSharesCall), + underlyingToShares(underlyingToSharesCall), + underlyingToSharesView(underlyingToSharesViewCall), + underlyingToken(underlyingTokenCall), + unpause(unpauseCall), + userUnderlying(userUnderlyingCall), + userUnderlyingView(userUnderlyingViewCall), + withdraw(withdrawCall), + } + #[automatically_derived] + impl StrategyBaseTVLLimitsCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [1u8, 158u8, 39u8, 41u8], + [16u8, 214u8, 122u8, 47u8], + [17u8, 199u8, 12u8, 157u8], + [19u8, 100u8, 57u8, 221u8], + [36u8, 149u8, 165u8, 153u8], + [57u8, 183u8, 14u8, 56u8], + [58u8, 152u8, 239u8, 57u8], + [67u8, 254u8, 8u8, 176u8], + [71u8, 231u8, 239u8, 36u8], + [72u8, 92u8, 201u8, 85u8], + [85u8, 60u8, 165u8, 248u8], + [89u8, 92u8, 106u8, 103u8], + [90u8, 200u8, 106u8, 183u8], + [92u8, 151u8, 90u8, 187u8], + [97u8, 176u8, 27u8, 93u8], + [122u8, 139u8, 38u8, 55u8], + [136u8, 111u8, 17u8, 149u8], + [140u8, 135u8, 16u8, 25u8], + [143u8, 106u8, 98u8, 64u8], + [171u8, 89u8, 33u8, 225u8], + [206u8, 124u8, 42u8, 194u8], + [217u8, 202u8, 237u8, 18u8], + [223u8, 111u8, 173u8, 193u8], + [227u8, 218u8, 229u8, 28u8], + [243u8, 231u8, 56u8, 117u8], + [250u8, 188u8, 28u8, 188u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for StrategyBaseTVLLimitsCalls { + const NAME: &'static str = "StrategyBaseTVLLimitsCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 26usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::deposit(_) => ::SELECTOR, + Self::explanation(_) => ::SELECTOR, + Self::getTVLLimits(_) => ::SELECTOR, + Self::initialize_0(_) => ::SELECTOR, + Self::initialize_1(_) => ::SELECTOR, + Self::maxPerDeposit(_) => ::SELECTOR, + Self::maxTotalDeposits(_) => { + ::SELECTOR + } + Self::pause(_) => ::SELECTOR, + Self::pauseAll(_) => ::SELECTOR, + Self::paused_0(_) => ::SELECTOR, + Self::paused_1(_) => ::SELECTOR, + Self::pauserRegistry(_) => { + ::SELECTOR + } + Self::setPauserRegistry(_) => { + ::SELECTOR + } + Self::setTVLLimits(_) => ::SELECTOR, + Self::shares(_) => ::SELECTOR, + Self::sharesToUnderlying(_) => { + ::SELECTOR + } + Self::sharesToUnderlyingView(_) => { + ::SELECTOR + } + Self::strategyManager(_) => { + ::SELECTOR + } + Self::totalShares(_) => ::SELECTOR, + Self::underlyingToShares(_) => { + ::SELECTOR + } + Self::underlyingToSharesView(_) => { + ::SELECTOR + } + Self::underlyingToken(_) => { + ::SELECTOR + } + Self::unpause(_) => ::SELECTOR, + Self::userUnderlying(_) => { + ::SELECTOR + } + Self::userUnderlyingView(_) => { + ::SELECTOR + } + Self::withdraw(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn initialize_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyBaseTVLLimitsCalls::initialize_0) + } + initialize_0 + }, + { + fn setPauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyBaseTVLLimitsCalls::setPauserRegistry) + } + setPauserRegistry + }, + { + fn setTVLLimits( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyBaseTVLLimitsCalls::setTVLLimits) + } + setTVLLimits + }, + { + fn pause( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyBaseTVLLimitsCalls::pause) + } + pause + }, + { + fn underlyingToken( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyBaseTVLLimitsCalls::underlyingToken) + } + underlyingToken + }, + { + fn strategyManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyBaseTVLLimitsCalls::strategyManager) + } + strategyManager + }, + { + fn totalShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyBaseTVLLimitsCalls::totalShares) + } + totalShares + }, + { + fn maxPerDeposit( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyBaseTVLLimitsCalls::maxPerDeposit) + } + maxPerDeposit + }, + { + fn deposit( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyBaseTVLLimitsCalls::deposit) + } + deposit + }, + { + fn initialize_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyBaseTVLLimitsCalls::initialize_1) + } + initialize_1 + }, + { + fn userUnderlyingView( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyBaseTVLLimitsCalls::userUnderlyingView) + } + userUnderlyingView + }, + { + fn pauseAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyBaseTVLLimitsCalls::pauseAll) + } + pauseAll + }, + { + fn paused_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyBaseTVLLimitsCalls::paused_0) + } + paused_0 + }, + { + fn paused_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyBaseTVLLimitsCalls::paused_1) + } + paused_1 + }, + { + fn maxTotalDeposits( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyBaseTVLLimitsCalls::maxTotalDeposits) + } + maxTotalDeposits + }, + { + fn sharesToUnderlyingView( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyBaseTVLLimitsCalls::sharesToUnderlyingView) + } + sharesToUnderlyingView + }, + { + fn pauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyBaseTVLLimitsCalls::pauserRegistry) + } + pauserRegistry + }, + { + fn underlyingToShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyBaseTVLLimitsCalls::underlyingToShares) + } + underlyingToShares + }, + { + fn userUnderlying( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyBaseTVLLimitsCalls::userUnderlying) + } + userUnderlying + }, + { + fn explanation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyBaseTVLLimitsCalls::explanation) + } + explanation + }, + { + fn shares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyBaseTVLLimitsCalls::shares) + } + shares + }, + { + fn withdraw( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyBaseTVLLimitsCalls::withdraw) + } + withdraw + }, + { + fn getTVLLimits( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyBaseTVLLimitsCalls::getTVLLimits) + } + getTVLLimits + }, + { + fn underlyingToSharesView( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyBaseTVLLimitsCalls::underlyingToSharesView) + } + underlyingToSharesView + }, + { + fn sharesToUnderlying( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyBaseTVLLimitsCalls::sharesToUnderlying) + } + sharesToUnderlying + }, + { + fn unpause( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyBaseTVLLimitsCalls::unpause) + } + unpause + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::deposit(inner) => { + ::abi_encoded_size(inner) + } + Self::explanation(inner) => { + ::abi_encoded_size(inner) + } + Self::getTVLLimits(inner) => { + ::abi_encoded_size(inner) + } + Self::initialize_0(inner) => { + ::abi_encoded_size(inner) + } + Self::initialize_1(inner) => { + ::abi_encoded_size(inner) + } + Self::maxPerDeposit(inner) => { + ::abi_encoded_size(inner) + } + Self::maxTotalDeposits(inner) => { + ::abi_encoded_size(inner) + } + Self::pause(inner) => { + ::abi_encoded_size(inner) + } + Self::pauseAll(inner) => { + ::abi_encoded_size(inner) + } + Self::paused_0(inner) => { + ::abi_encoded_size(inner) + } + Self::paused_1(inner) => { + ::abi_encoded_size(inner) + } + Self::pauserRegistry(inner) => { + ::abi_encoded_size(inner) + } + Self::setPauserRegistry(inner) => { + ::abi_encoded_size(inner) + } + Self::setTVLLimits(inner) => { + ::abi_encoded_size(inner) + } + Self::shares(inner) => { + ::abi_encoded_size(inner) + } + Self::sharesToUnderlying(inner) => { + ::abi_encoded_size(inner) + } + Self::sharesToUnderlyingView(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::strategyManager(inner) => { + ::abi_encoded_size(inner) + } + Self::totalShares(inner) => { + ::abi_encoded_size(inner) + } + Self::underlyingToShares(inner) => { + ::abi_encoded_size(inner) + } + Self::underlyingToSharesView(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::underlyingToken(inner) => { + ::abi_encoded_size(inner) + } + Self::unpause(inner) => { + ::abi_encoded_size(inner) + } + Self::userUnderlying(inner) => { + ::abi_encoded_size(inner) + } + Self::userUnderlyingView(inner) => { + ::abi_encoded_size(inner) + } + Self::withdraw(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::deposit(inner) => { + ::abi_encode_raw(inner, out) + } + Self::explanation(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getTVLLimits(inner) => { + ::abi_encode_raw(inner, out) + } + Self::initialize_0(inner) => { + ::abi_encode_raw(inner, out) + } + Self::initialize_1(inner) => { + ::abi_encode_raw(inner, out) + } + Self::maxPerDeposit(inner) => { + ::abi_encode_raw(inner, out) + } + Self::maxTotalDeposits(inner) => { + ::abi_encode_raw(inner, out) + } + Self::pause(inner) => { + ::abi_encode_raw(inner, out) + } + Self::pauseAll(inner) => { + ::abi_encode_raw(inner, out) + } + Self::paused_0(inner) => { + ::abi_encode_raw(inner, out) + } + Self::paused_1(inner) => { + ::abi_encode_raw(inner, out) + } + Self::pauserRegistry(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setPauserRegistry(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setTVLLimits(inner) => { + ::abi_encode_raw(inner, out) + } + Self::shares(inner) => { + ::abi_encode_raw(inner, out) + } + Self::sharesToUnderlying(inner) => { + ::abi_encode_raw(inner, out) + } + Self::sharesToUnderlyingView(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::strategyManager(inner) => { + ::abi_encode_raw(inner, out) + } + Self::totalShares(inner) => { + ::abi_encode_raw(inner, out) + } + Self::underlyingToShares(inner) => { + ::abi_encode_raw(inner, out) + } + Self::underlyingToSharesView(inner) => { + ::abi_encode_raw( + inner, out, + ) + } + Self::underlyingToken(inner) => { + ::abi_encode_raw(inner, out) + } + Self::unpause(inner) => { + ::abi_encode_raw(inner, out) + } + Self::userUnderlying(inner) => { + ::abi_encode_raw(inner, out) + } + Self::userUnderlyingView(inner) => { + ::abi_encode_raw(inner, out) + } + Self::withdraw(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`StrategyBaseTVLLimits`](self) events. + pub enum StrategyBaseTVLLimitsEvents { + Initialized(Initialized), + MaxPerDepositUpdated(MaxPerDepositUpdated), + MaxTotalDepositsUpdated(MaxTotalDepositsUpdated), + Paused(Paused), + PauserRegistrySet(PauserRegistrySet), + Unpaused(Unpaused), + } + #[automatically_derived] + impl StrategyBaseTVLLimitsEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8, 2u8, + 188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8, 228u8, 152u8, + 107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8, + ], + [ + 106u8, 177u8, 129u8, 224u8, 68u8, 11u8, 251u8, 244u8, 186u8, 205u8, 242u8, 233u8, + 150u8, 116u8, 115u8, 92u8, 230u8, 99u8, 128u8, 5u8, 73u8, 6u8, 136u8, 197u8, 249u8, + 148u8, 245u8, 57u8, 147u8, 83u8, 228u8, 82u8, + ], + [ + 110u8, 159u8, 205u8, 83u8, 152u8, 150u8, 252u8, 166u8, 14u8, 139u8, 15u8, 1u8, + 221u8, 88u8, 2u8, 51u8, 228u8, 138u8, 107u8, 15u8, 125u8, 240u8, 19u8, 184u8, + 155u8, 167u8, 245u8, 101u8, 134u8, 154u8, 205u8, 182u8, + ], + [ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, 56u8, + 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, 96u8, + 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ], + [ + 171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8, 188u8, + 152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8, 11u8, 182u8, + 224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8, + ], + [ + 249u8, 126u8, 212u8, 224u8, 131u8, 172u8, 172u8, 103u8, 131u8, 0u8, 37u8, 236u8, + 188u8, 117u8, 109u8, 143u8, 232u8, 71u8, 205u8, 189u8, 202u8, 76u8, 238u8, 63u8, + 225u8, 225u8, 40u8, 233u8, 139u8, 84u8, 236u8, 181u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for StrategyBaseTVLLimitsEvents { + const NAME: &'static str = "StrategyBaseTVLLimitsEvents"; + const COUNT: usize = 6usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::Initialized) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::MaxPerDepositUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::MaxTotalDepositsUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::Paused) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::PauserRegistrySet) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::Unpaused) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for StrategyBaseTVLLimitsEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::MaxPerDepositUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::MaxTotalDepositsUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Paused(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::PauserRegistrySet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Unpaused(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::MaxPerDepositUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::MaxTotalDepositsUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Paused(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::PauserRegistrySet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Unpaused(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`StrategyBaseTVLLimits`](self) contract instance. + + See the [wrapper's documentation](`StrategyBaseTVLLimitsInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> StrategyBaseTVLLimitsInstance { + StrategyBaseTVLLimitsInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _strategyManager: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + StrategyBaseTVLLimitsInstance::::deploy(provider, _strategyManager) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _strategyManager: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + StrategyBaseTVLLimitsInstance::::deploy_builder(provider, _strategyManager) + } + /**A [`StrategyBaseTVLLimits`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StrategyBaseTVLLimits`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct StrategyBaseTVLLimitsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StrategyBaseTVLLimitsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StrategyBaseTVLLimitsInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StrategyBaseTVLLimitsInstance + { + /**Creates a new wrapper around an on-chain [`StrategyBaseTVLLimits`](self) contract instance. + + See the [wrapper's documentation](`StrategyBaseTVLLimitsInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _strategyManager: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, _strategyManager); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _strategyManager: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode(&constructorCall { + _strategyManager, + })[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl StrategyBaseTVLLimitsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StrategyBaseTVLLimitsInstance { + StrategyBaseTVLLimitsInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StrategyBaseTVLLimitsInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`deposit`] function. + pub fn deposit( + &self, + token: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&depositCall { token, amount }) + } + ///Creates a new call builder for the [`explanation`] function. + pub fn explanation(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&explanationCall {}) + } + ///Creates a new call builder for the [`getTVLLimits`] function. + pub fn getTVLLimits(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&getTVLLimitsCall {}) + } + ///Creates a new call builder for the [`initialize_0`] function. + pub fn initialize_0( + &self, + _maxPerDeposit: alloy::sol_types::private::primitives::aliases::U256, + _maxTotalDeposits: alloy::sol_types::private::primitives::aliases::U256, + _underlyingToken: alloy::sol_types::private::Address, + _pauserRegistry: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initialize_0Call { + _maxPerDeposit, + _maxTotalDeposits, + _underlyingToken, + _pauserRegistry, + }) + } + ///Creates a new call builder for the [`initialize_1`] function. + pub fn initialize_1( + &self, + _underlyingToken: alloy::sol_types::private::Address, + _pauserRegistry: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initialize_1Call { + _underlyingToken, + _pauserRegistry, + }) + } + ///Creates a new call builder for the [`maxPerDeposit`] function. + pub fn maxPerDeposit(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&maxPerDepositCall {}) + } + ///Creates a new call builder for the [`maxTotalDeposits`] function. + pub fn maxTotalDeposits( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&maxTotalDepositsCall {}) + } + ///Creates a new call builder for the [`pause`] function. + pub fn pause( + &self, + newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&pauseCall { newPausedStatus }) + } + ///Creates a new call builder for the [`pauseAll`] function. + pub fn pauseAll(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&pauseAllCall {}) + } + ///Creates a new call builder for the [`paused_0`] function. + pub fn paused_0( + &self, + index: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&paused_0Call { index }) + } + ///Creates a new call builder for the [`paused_1`] function. + pub fn paused_1(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&paused_1Call {}) + } + ///Creates a new call builder for the [`pauserRegistry`] function. + pub fn pauserRegistry( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&pauserRegistryCall {}) + } + ///Creates a new call builder for the [`setPauserRegistry`] function. + pub fn setPauserRegistry( + &self, + newPauserRegistry: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setPauserRegistryCall { newPauserRegistry }) + } + ///Creates a new call builder for the [`setTVLLimits`] function. + pub fn setTVLLimits( + &self, + newMaxPerDeposit: alloy::sol_types::private::primitives::aliases::U256, + newMaxTotalDeposits: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setTVLLimitsCall { + newMaxPerDeposit, + newMaxTotalDeposits, + }) + } + ///Creates a new call builder for the [`shares`] function. + pub fn shares( + &self, + user: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&sharesCall { user }) + } + ///Creates a new call builder for the [`sharesToUnderlying`] function. + pub fn sharesToUnderlying( + &self, + amountShares: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&sharesToUnderlyingCall { amountShares }) + } + ///Creates a new call builder for the [`sharesToUnderlyingView`] function. + pub fn sharesToUnderlyingView( + &self, + amountShares: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&sharesToUnderlyingViewCall { amountShares }) + } + ///Creates a new call builder for the [`strategyManager`] function. + pub fn strategyManager( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&strategyManagerCall {}) + } + ///Creates a new call builder for the [`totalShares`] function. + pub fn totalShares(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&totalSharesCall {}) + } + ///Creates a new call builder for the [`underlyingToShares`] function. + pub fn underlyingToShares( + &self, + amountUnderlying: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&underlyingToSharesCall { amountUnderlying }) + } + ///Creates a new call builder for the [`underlyingToSharesView`] function. + pub fn underlyingToSharesView( + &self, + amountUnderlying: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&underlyingToSharesViewCall { amountUnderlying }) + } + ///Creates a new call builder for the [`underlyingToken`] function. + pub fn underlyingToken( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&underlyingTokenCall {}) + } + ///Creates a new call builder for the [`unpause`] function. + pub fn unpause( + &self, + newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&unpauseCall { newPausedStatus }) + } + ///Creates a new call builder for the [`userUnderlying`] function. + pub fn userUnderlying( + &self, + user: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&userUnderlyingCall { user }) + } + ///Creates a new call builder for the [`userUnderlyingView`] function. + pub fn userUnderlyingView( + &self, + user: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&userUnderlyingViewCall { user }) + } + ///Creates a new call builder for the [`withdraw`] function. + pub fn withdraw( + &self, + recipient: alloy::sol_types::private::Address, + token: alloy::sol_types::private::Address, + amountShares: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&withdrawCall { + recipient, + token, + amountShares, + }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StrategyBaseTVLLimitsInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Initialized`] event. + pub fn Initialized_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`MaxPerDepositUpdated`] event. + pub fn MaxPerDepositUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`MaxTotalDepositsUpdated`] event. + pub fn MaxTotalDepositsUpdated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Paused`] event. + pub fn Paused_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`PauserRegistrySet`] event. + pub fn PauserRegistrySet_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Unpaused`] event. + pub fn Unpaused_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/strategymanager.rs b/crates/utils/src/strategymanager.rs new file mode 100644 index 00000000..604e305a --- /dev/null +++ b/crates/utils/src/strategymanager.rs @@ -0,0 +1,7679 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface StrategyManager { + event Deposit(address staker, address token, address strategy, uint256 shares); + event Initialized(uint8 version); + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + event Paused(address indexed account, uint256 newPausedStatus); + event PauserRegistrySet(address pauserRegistry, address newPauserRegistry); + event StrategyAddedToDepositWhitelist(address strategy); + event StrategyRemovedFromDepositWhitelist(address strategy); + event StrategyWhitelisterChanged(address previousAddress, address newAddress); + event Unpaused(address indexed account, uint256 newPausedStatus); + event UpdatedThirdPartyTransfersForbidden(address strategy, bool value); + + constructor(address _delegation, address _eigenPodManager, address _slasher); + + function DEPOSIT_TYPEHASH() external view returns (bytes32); + function DOMAIN_TYPEHASH() external view returns (bytes32); + function addShares(address staker, address token, address strategy, uint256 shares) external; + function addStrategiesToDepositWhitelist(address[] memory strategiesToWhitelist, bool[] memory thirdPartyTransfersForbiddenValues) external; + function delegation() external view returns (address); + function depositIntoStrategy(address strategy, address token, uint256 amount) external returns (uint256 shares); + function depositIntoStrategyWithSignature(address strategy, address token, uint256 amount, address staker, uint256 expiry, bytes memory signature) external returns (uint256 shares); + function domainSeparator() external view returns (bytes32); + function eigenPodManager() external view returns (address); + function getDeposits(address staker) external view returns (address[] memory, uint256[] memory); + function initialize(address initialOwner, address initialStrategyWhitelister, address _pauserRegistry, uint256 initialPausedStatus) external; + function nonces(address) external view returns (uint256); + function owner() external view returns (address); + function pause(uint256 newPausedStatus) external; + function pauseAll() external; + function paused(uint8 index) external view returns (bool); + function paused() external view returns (uint256); + function pauserRegistry() external view returns (address); + function removeShares(address staker, address strategy, uint256 shares) external; + function removeStrategiesFromDepositWhitelist(address[] memory strategiesToRemoveFromWhitelist) external; + function renounceOwnership() external; + function setPauserRegistry(address newPauserRegistry) external; + function setStrategyWhitelister(address newStrategyWhitelister) external; + function setThirdPartyTransfersForbidden(address strategy, bool value) external; + function slasher() external view returns (address); + function stakerStrategyList(address, uint256) external view returns (address); + function stakerStrategyListLength(address staker) external view returns (uint256); + function stakerStrategyShares(address, address) external view returns (uint256); + function strategyIsWhitelistedForDeposit(address) external view returns (bool); + function strategyWhitelister() external view returns (address); + function thirdPartyTransfersForbidden(address) external view returns (bool); + function transferOwnership(address newOwner) external; + function unpause(uint256 newPausedStatus) external; + function withdrawSharesAsTokens(address recipient, address strategy, uint256 shares, address token) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_delegation", + "type": "address", + "internalType": "contract IDelegationManager" + }, + { + "name": "_eigenPodManager", + "type": "address", + "internalType": "contract IEigenPodManager" + }, + { + "name": "_slasher", + "type": "address", + "internalType": "contract ISlasher" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "DEPOSIT_TYPEHASH", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "DOMAIN_TYPEHASH", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "addShares", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "addStrategiesToDepositWhitelist", + "inputs": [ + { + "name": "strategiesToWhitelist", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "thirdPartyTransfersForbiddenValues", + "type": "bool[]", + "internalType": "bool[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "delegation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IDelegationManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "depositIntoStrategy", + "inputs": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "depositIntoStrategyWithSignature", + "inputs": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "domainSeparator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "eigenPodManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IEigenPodManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getDeposits", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "initialOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "initialStrategyWhitelister", + "type": "address", + "internalType": "address" + }, + { + "name": "_pauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + }, + { + "name": "initialPausedStatus", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "nonces", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pause", + "inputs": [ + { + "name": "newPausedStatus", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "pauseAll", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "paused", + "inputs": [ + { + "name": "index", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "paused", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pauserRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "removeShares", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "removeStrategiesFromDepositWhitelist", + "inputs": [ + { + "name": "strategiesToRemoveFromWhitelist", + "type": "address[]", + "internalType": "contract IStrategy[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setPauserRegistry", + "inputs": [ + { + "name": "newPauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setStrategyWhitelister", + "inputs": [ + { + "name": "newStrategyWhitelister", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setThirdPartyTransfersForbidden", + "inputs": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "value", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "slasher", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ISlasher" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "stakerStrategyList", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStrategy" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "stakerStrategyListLength", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "stakerStrategyShares", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "address", + "internalType": "contract IStrategy" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "strategyIsWhitelistedForDeposit", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStrategy" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "strategyWhitelister", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "thirdPartyTransfersForbidden", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStrategy" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "unpause", + "inputs": [ + { + "name": "newPausedStatus", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "withdrawSharesAsTokens", + "inputs": [ + { + "name": "recipient", + "type": "address", + "internalType": "address" + }, + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Deposit", + "inputs": [ + { + "name": "staker", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": false, + "internalType": "contract IERC20" + }, + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + }, + { + "name": "shares", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Paused", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newPausedStatus", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "PauserRegistrySet", + "inputs": [ + { + "name": "pauserRegistry", + "type": "address", + "indexed": false, + "internalType": "contract IPauserRegistry" + }, + { + "name": "newPauserRegistry", + "type": "address", + "indexed": false, + "internalType": "contract IPauserRegistry" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StrategyAddedToDepositWhitelist", + "inputs": [ + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StrategyRemovedFromDepositWhitelist", + "inputs": [ + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StrategyWhitelisterChanged", + "inputs": [ + { + "name": "previousAddress", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newAddress", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Unpaused", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newPausedStatus", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "UpdatedThirdPartyTransfersForbidden", + "inputs": [ + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + }, + { + "name": "value", + "type": "bool", + "indexed": false, + "internalType": "bool" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod StrategyManager { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6101006040523480156200001257600080fd5b506040516200338a3803806200338a833981016040819052620000359162000140565b6001600160a01b0380841660805280831660a052811660c0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e0516131a0620001ea60003960006114bb0152600061046e0152600061028501526000818161051a01528181610b8401528181610ed101528181610f250152611a7101526131a06000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063c6656702116100ad578063df5cf7231161007c578063df5cf72314610515578063e7a050aa1461053c578063f2fde38b1461054f578063f698da2514610562578063fabc1cbc1461056a57600080fd5b8063c6656702146104c9578063cbc2bd62146104dc578063cf756fdf146104ef578063df5b35471461050257600080fd5b8063b1344271116100e9578063b134427114610469578063b5d8b5b814610490578063c4623ea1146104a3578063c608c7f3146104b657600080fd5b80638da5cb5b1461040157806394f649dd14610412578063967fc0d2146104335780639b4da03d1461044657600080fd5b80635ac86ab71161019d5780637a7e0d921161016c5780637a7e0d92146103675780637ecebe0014610392578063886f1195146103b25780638b8aac3c146103c55780638c80d4e5146103ee57600080fd5b80635ac86ab7146103015780635c975abb14610334578063663c1de41461033c578063715018a61461035f57600080fd5b80634665bcda116101d95780634665bcda1461028057806348825e94146102bf5780634e5a4263146102e6578063595c6a67146102f957600080fd5b806310d67a2f1461020b578063136439dd1461022057806320606b701461023357806332e89ace1461026d575b600080fd5b61021e6102193660046129e8565b61057d565b005b61021e61022e366004612a05565b610639565b61025a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61025a61027b366004612a34565b610778565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610264565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102f4366004612b3d565b610a66565b61021e610a9e565b61032461030f366004612b76565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61032461034a3660046129e8565b60d16020526000908152604090205460ff1681565b61021e610b65565b61025a610375366004612b99565b60cd60209081526000928352604080842090915290825290205481565b61025a6103a03660046129e8565b60ca6020526000908152604090205481565b6097546102a7906001600160a01b031681565b61025a6103d33660046129e8565b6001600160a01b0316600090815260ce602052604090205490565b61021e6103fc366004612bc7565b610b79565b6033546001600160a01b03166102a7565b6104256104203660046129e8565b610bd2565b604051610264929190612c08565b60cb546102a7906001600160a01b031681565b6103246104543660046129e8565b60d36020526000908152604090205460ff1681565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61021e61049e366004612cd1565b610d52565b61021e6104b1366004612d13565b610ec6565b61021e6104c4366004612d64565b610f1a565b61021e6104d73660046129e8565b610fd2565b6102a76104ea366004612db7565b610fe3565b61021e6104fd366004612d13565b61101b565b61021e610510366004612de3565b61114f565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61025a61054a366004612bc7565b611378565b61021e61055d3660046129e8565b611441565b61025a6114b7565b61021e610578366004612a05565b6114f5565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612e4f565b6001600160a01b0316336001600160a01b03161461062d5760405162461bcd60e51b815260040161062490612e6c565b60405180910390fd5b61063681611651565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190612eb6565b6106c15760405162461bcd60e51b815260040161062490612ed3565b6098548181161461073a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6098546000908190600190811614156107cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156108225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b60026065556001600160a01b038816600090815260d3602052604090205460ff16156108c95760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a401610624565b4284101561094b5760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a401610624565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a036114b7565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a46888288611748565b610a52888c8c8c611907565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610a905760405162461bcd60e51b815260040161062490612f1b565b610a9a8282611ad6565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190612eb6565b610b265760405162461bcd60e51b815260040161062490612ed3565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610b6d611b44565b610b776000611b9e565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bc15760405162461bcd60e51b815260040161062490612f85565b610bcc838383611bf0565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c0a57610c0a612a1e565b604051908082528060200260200182016040528015610c33578160200160208202803683370190505b50905060005b82811015610cc4576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610c7857610c78612fe3565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610cb157610cb1612fe3565b6020908102919091010152600101610c39565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d4057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d22575b50505050509150935093505050915091565b60cb546001600160a01b03163314610d7c5760405162461bcd60e51b815260040161062490612f1b565b8060005b81811015610bcc5760d16000858584818110610d9e57610d9e612fe3565b9050602002016020810190610db391906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1615610ebe57600060d16000868685818110610ded57610ded612fe3565b9050602002016020810190610e0291906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610e5d57610e5d612fe3565b9050602002016020810190610e7291906129e8565b6040516001600160a01b03909116815260200160405180910390a1610ebe848483818110610ea257610ea2612fe3565b9050602002016020810190610eb791906129e8565b6000611ad6565b600101610d80565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f0e5760405162461bcd60e51b815260040161062490612f85565b610bcc84848484611d4c565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f625760405162461bcd60e51b815260040161062490612f85565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b158015610fb457600080fd5b505af1158015610fc8573d6000803e3d6000fd5b5050505050505050565b610fda611b44565b61063681611fd9565b60ce6020528160005260406000208181548110610fff57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff161580801561103b5750600054600160ff909116105b806110555750303b158015611055575060005460ff166001145b6110b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610624565b6000805460ff1916600117905580156110db576000805461ff0019166101001790555b6110e3612042565b60c9556110f083836120d9565b6110f985611b9e565b61110284611fd9565b8015611148576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146111795760405162461bcd60e51b815260040161062490612f1b565b8281146112025760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a401610624565b8260005b818110156113705760d1600087878481811061122457611224612fe3565b905060200201602081019061123991906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1661136857600160d1600088888581811061127257611272612fe3565b905060200201602081019061128791906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106112e2576112e2612fe3565b90506020020160208101906112f791906129e8565b6040516001600160a01b03909116815260200160405180910390a161136886868381811061132757611327612fe3565b905060200201602081019061133c91906129e8565b85858481811061134e5761134e612fe3565b90506020020160208101906113639190612ff9565b611ad6565b600101611206565b505050505050565b6098546000908190600190811614156113cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156114225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b600260655561143333868686611907565b600160655595945050505050565b611449611b44565b6001600160a01b0381166114ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610624565b61063681611b9e565b60007f00000000000000000000000000000000000000000000000000000000000000004614156114e8575060c95490565b6114f0612042565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611548573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156c9190612e4f565b6001600160a01b0316336001600160a01b03161461159c5760405162461bcd60e51b815260040161062490612e6c565b60985419811960985419161461161a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161076d565b6001600160a01b0381166116df5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610624565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b1561186757604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90611788908690869060040161306e565b602060405180830381865afa1580156117a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c99190613087565b6001600160e01b031916146118625760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610624565b505050565b826001600160a01b031661187b83836121bf565b6001600160a01b0316146118625760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610624565b6001600160a01b038316600090815260d16020526040812054849060ff166119ad5760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a401610624565b6119c26001600160a01b0385163387866121e3565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3591906130b1565b9150611a4386858785611d4c565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610b775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081611c655760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f2100006064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611cf75760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b6064820152608401610624565b6001600160a01b03808616600090815260cd602090815260408083209388168352929052208382039081905590831415611d3f57611d35858561223d565b6001915050611d45565b60009150505b9392505050565b6001600160a01b038416611dc85760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f2061646472657373000000000000006064820152608401610624565b80611e345760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b6064820152608401610624565b6001600160a01b03808516600090815260cd6020908152604080832093861683529290522054611f45576001600160a01b038416600090815260ce602090815260409091205410611f065760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a401610624565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd6020908152604080832093861683529290529081208054839290611f7c9084906130e0565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b03161580156120fa57506001600160a01b03821615155b61217c5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610a9a82611651565b60008060006121ce858561242f565b915091506121db8161249f565b509392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610bcc90859061265a565b6001600160a01b038216600090815260ce6020526040812054905b81811015612358576001600160a01b03848116600090815260ce602052604090208054918516918390811061228f5761228f612fe3565b6000918252602090912001546001600160a01b03161415612350576001600160a01b038416600090815260ce6020526040902080546122d0906001906130f8565b815481106122e0576122e0612fe3565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061231d5761231d612fe3565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612358565b600101612258565b818114156123e05760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a401610624565b6001600160a01b038416600090815260ce602052604090208054806124075761240761310f565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604114156124665760208301516040840151606085015160001a61245a8782858561272c565b94509450505050612498565b8251604014156124905760208301516040840151612485868383612819565b935093505050612498565b506000905060025b9250929050565b60008160048111156124b3576124b3613125565b14156124bc5750565b60018160048111156124d0576124d0613125565b141561251e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610624565b600281600481111561253257612532613125565b14156125805760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610624565b600381600481111561259457612594613125565b14156125ed5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610624565b600481600481111561260157612601613125565b14156106365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610624565b60006126af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128529092919063ffffffff16565b80519091501561186257808060200190518101906126cd9190612eb6565b6118625760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610624565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127635750600090506003612810565b8460ff16601b1415801561277b57508460ff16601c14155b1561278c5750600090506004612810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661280957600060019250925050612810565b9150600090505b94509492505050565b6000806001600160ff1b0383168161283660ff86901c601b6130e0565b90506128448782888561272c565b935093505050935093915050565b60606128618484600085612869565b949350505050565b6060824710156128ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610624565b6001600160a01b0385163b6129215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610624565b600080866001600160a01b0316858760405161293d919061313b565b60006040518083038185875af1925050503d806000811461297a576040519150601f19603f3d011682016040523d82523d6000602084013e61297f565b606091505b509150915061298f82828661299a565b979650505050505050565b606083156129a9575081611d45565b8251156129b95782518084602001fd5b8160405162461bcd60e51b81526004016106249190613157565b6001600160a01b038116811461063657600080fd5b6000602082840312156129fa57600080fd5b8135611d45816129d3565b600060208284031215612a1757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215612a4d57600080fd5b8635612a58816129d3565b95506020870135612a68816129d3565b9450604087013593506060870135612a7f816129d3565b92506080870135915060a087013567ffffffffffffffff80821115612aa357600080fd5b818901915089601f830112612ab757600080fd5b813581811115612ac957612ac9612a1e565b604051601f8201601f19908116603f01168101908382118183101715612af157612af1612a1e565b816040528281528c6020848701011115612b0a57600080fd5b8260208601602083013760006020848301015280955050505050509295509295509295565b801515811461063657600080fd5b60008060408385031215612b5057600080fd5b8235612b5b816129d3565b91506020830135612b6b81612b2f565b809150509250929050565b600060208284031215612b8857600080fd5b813560ff81168114611d4557600080fd5b60008060408385031215612bac57600080fd5b8235612bb7816129d3565b91506020830135612b6b816129d3565b600080600060608486031215612bdc57600080fd5b8335612be7816129d3565b92506020840135612bf7816129d3565b929592945050506040919091013590565b604080825283519082018190526000906020906060840190828701845b82811015612c4a5781516001600160a01b031684529284019290840190600101612c25565b5050508381038285015284518082528583019183019060005b81811015612c7f57835183529284019291840191600101612c63565b5090979650505050505050565b60008083601f840112612c9e57600080fd5b50813567ffffffffffffffff811115612cb657600080fd5b6020830191508360208260051b850101111561249857600080fd5b60008060208385031215612ce457600080fd5b823567ffffffffffffffff811115612cfb57600080fd5b612d0785828601612c8c565b90969095509350505050565b60008060008060808587031215612d2957600080fd5b8435612d34816129d3565b93506020850135612d44816129d3565b92506040850135612d54816129d3565b9396929550929360600135925050565b60008060008060808587031215612d7a57600080fd5b8435612d85816129d3565b93506020850135612d95816129d3565b9250604085013591506060850135612dac816129d3565b939692955090935050565b60008060408385031215612dca57600080fd5b8235612dd5816129d3565b946020939093013593505050565b60008060008060408587031215612df957600080fd5b843567ffffffffffffffff80821115612e1157600080fd5b612e1d88838901612c8c565b90965094506020870135915080821115612e3657600080fd5b50612e4387828801612c8c565b95989497509550505050565b600060208284031215612e6157600080fd5b8151611d45816129d3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612ec857600080fd5b8151611d4581612b2f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561300b57600080fd5b8135611d4581612b2f565b60005b83811015613031578181015183820152602001613019565b83811115610bcc5750506000910152565b6000815180845261305a816020860160208601613016565b601f01601f19169290920160200192915050565b8281526040602082015260006128616040830184613042565b60006020828403121561309957600080fd5b81516001600160e01b031981168114611d4557600080fd5b6000602082840312156130c357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156130f3576130f36130ca565b500190565b60008282101561310a5761310a6130ca565b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000825161314d818460208701613016565b9190910192915050565b602081526000611d45602083018461304256fea2646970667358221220d180df656724cd64941454eb81318c28ec9c3751aeea874928c7a64c46a9297864736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"a\x01\0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\x003\x8A8\x03\x80b\x003\x8A\x839\x81\x01`@\x81\x90Rb\0\x005\x91b\0\x01@V[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\x80R\x80\x83\x16`\xA0R\x81\x16`\xC0Rb\0\0Xb\0\0eV[PPF`\xE0RPb\0\x01\x94V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xD2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FInitializable: contract is initi`D\x82\x01Rfalizing`\xC8\x1B`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[`\0T`\xFF\x90\x81\x16\x10\x15b\0\x01%W`\0\x80T`\xFF\x19\x16`\xFF\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01=W`\0\x80\xFD[PV[`\0\x80`\0``\x84\x86\x03\x12\x15b\0\x01VW`\0\x80\xFD[\x83Qb\0\x01c\x81b\0\x01'V[` \x85\x01Q\x90\x93Pb\0\x01v\x81b\0\x01'V[`@\x85\x01Q\x90\x92Pb\0\x01\x89\x81b\0\x01'V[\x80\x91PP\x92P\x92P\x92V[`\x80Q`\xA0Q`\xC0Q`\xE0Qa1\xA0b\0\x01\xEA`\09`\0a\x14\xBB\x01R`\0a\x04n\x01R`\0a\x02\x85\x01R`\0\x81\x81a\x05\x1A\x01R\x81\x81a\x0B\x84\x01R\x81\x81a\x0E\xD1\x01R\x81\x81a\x0F%\x01Ra\x1Aq\x01Ra1\xA0`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x02\x06W`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\x01\x1AW\x80c\xC6eg\x02\x11a\0\xADW\x80c\xDF\\\xF7#\x11a\0|W\x80c\xDF\\\xF7#\x14a\x05\x15W\x80c\xE7\xA0P\xAA\x14a\x05\xA1\x14a\x04\xA3W\x80c\xC6\x08\xC7\xF3\x14a\x04\xB6W`\0\x80\xFD[\x80c\x8D\xA5\xCB[\x14a\x04\x01W\x80c\x94\xF6I\xDD\x14a\x04\x12W\x80c\x96\x7F\xC0\xD2\x14a\x043W\x80c\x9BM\xA0=\x14a\x04FW`\0\x80\xFD[\x80cZ\xC8j\xB7\x11a\x01\x9DW\x80cz~\r\x92\x11a\x01lW\x80cz~\r\x92\x14a\x03gW\x80c~\xCE\xBE\0\x14a\x03\x92W\x80c\x88o\x11\x95\x14a\x03\xB2W\x80c\x8B\x8A\xAC<\x14a\x03\xC5W\x80c\x8C\x80\xD4\xE5\x14a\x03\xEEW`\0\x80\xFD[\x80cZ\xC8j\xB7\x14a\x03\x01W\x80c\\\x97Z\xBB\x14a\x034W\x80cf<\x1D\xE4\x14a\x03=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xF4\x91\x90a.OV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06-W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06$\x90a.lV[`@Q\x80\x91\x03\x90\xFD[a\x066\x81a\x16QV[PV[`\x97T`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\x81W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xA5\x91\x90a.\xB6V[a\x06\xC1W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06$\x90a.\xD3V[`\x98T\x81\x81\x16\x14a\x07:W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.pause: invalid attempt `D\x82\x01R\x7Fto unpause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06$V[`\x98\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01[`@Q\x80\x91\x03\x90\xA2PV[`\x98T`\0\x90\x81\x90`\x01\x90\x81\x16\x14\x15a\x07\xCFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01Rx\x14\x18]\\\xD8X\x9B\x19N\x88\x1A[\x99\x19^\x08\x1A\\\xC8\x1C\x18]\\\xD9Y`:\x1B`D\x82\x01R`d\x01a\x06$V[`\x02`eT\x14\x15a\x08\"W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06$V[`\x02`eU`\x01`\x01`\xA0\x1B\x03\x88\x16`\0\x90\x81R`\xD3` R`@\x90 T`\xFF\x16\x15a\x08\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R\x7FStrategyManager.depositIntoStrat`D\x82\x01R\x7FegyWithSignature: third transfer`d\x82\x01Ri\x1C\xC8\x19\x1A\\\xD8X\x9B\x19Y`\xB2\x1B`\x84\x82\x01R`\xA4\x01a\x06$V[B\x84\x10\x15a\tKW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R\x7FStrategyManager.depositIntoStrat`D\x82\x01R\x7FegyWithSignature: signature expi`d\x82\x01Rb\x1C\x99Y`\xEA\x1B`\x84\x82\x01R`\xA4\x01a\x06$V[`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\0\x81\x81R`\xCA` \x90\x81R`@\x80\x83 T\x81Q\x7FC7\xF8-\x14.A\xF2\xA8\xC1\x05G\xCD\x8C\x85\x9B\xDD\xB9\"b\xA6\x10X\xE7xB\xE2M\x9D\xEA\x92$\x93\x81\x01\x93\x90\x93R\x90\x82\x01\x93\x90\x93R\x8B\x84\x16``\x82\x01R\x92\x8A\x16`\x80\x84\x01R`\xA0\x83\x01\x89\x90R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x87\x90R\x90\x91a\x01\0\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 `\x01`\x01`\xA0\x1B\x03\x8A\x16`\0\x90\x81R`\xCA\x90\x93R\x90\x82 `\x01\x85\x01\x90U\x91Pa\n\x03a\x14\xB7V[`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x91\x90\x91R`B\x81\x01\x83\x90R`b\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90Pa\nF\x88\x82\x88a\x17HV[a\nR\x88\x8C\x8C\x8Ca\x19\x07V[`\x01`eU\x9B\x9APPPPPPPPPPPV[`\xCBT`\x01`\x01`\xA0\x1B\x03\x163\x14a\n\x90W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06$\x90a/\x1BV[a\n\x9A\x82\x82a\x1A\xD6V[PPV[`\x97T`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\xE6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\n\x91\x90a.\xB6V[a\x0B&W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06$\x90a.\xD3V[`\0\x19`\x98\x81\x90U`@Q\x90\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2V[a\x0Bma\x1BDV[a\x0Bw`\0a\x1B\x9EV[V[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x0B\xC1W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06$\x90a/\x85V[a\x0B\xCC\x83\x83\x83a\x1B\xF0V[PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\xCE` R`@\x81 T``\x91\x82\x91\x90\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0C\nWa\x0C\na*\x1EV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0C3W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82\x81\x10\x15a\x0C\xC4W`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\xCD` \x90\x81R`@\x80\x83 `\xCE\x90\x92R\x82 \x80T\x91\x92\x91\x84\x90\x81\x10a\x0CxWa\x0Cxa/\xE3V[`\0\x91\x82R` \x80\x83 \x90\x91\x01T`\x01`\x01`\xA0\x1B\x03\x16\x83R\x82\x01\x92\x90\x92R`@\x01\x90 T\x82Q\x83\x90\x83\x90\x81\x10a\x0C\xB1Wa\x0C\xB1a/\xE3V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0C9V[P`\xCE`\0\x86`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01`\0 \x81\x81\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\r@W` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\r\"W[PPPPP\x91P\x93P\x93PPP\x91P\x91V[`\xCBT`\x01`\x01`\xA0\x1B\x03\x163\x14a\r|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06$\x90a/\x1BV[\x80`\0[\x81\x81\x10\x15a\x0B\xCCW`\xD1`\0\x85\x85\x84\x81\x81\x10a\r\x9EWa\r\x9Ea/\xE3V[\x90P` \x02\x01` \x81\x01\x90a\r\xB3\x91\x90a)\xE8V[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x81\x01\x91\x90\x91R`@\x01`\0 T`\xFF\x16\x15a\x0E\xBEW`\0`\xD1`\0\x86\x86\x85\x81\x81\x10a\r\xEDWa\r\xEDa/\xE3V[\x90P` \x02\x01` \x81\x01\x90a\x0E\x02\x91\x90a)\xE8V[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x81\x01\x91\x90\x91R`@\x01`\0 \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90U\x7F@tA;KD>NX\x01\x9F(U\xA8vQ\x135\x8C|r\xE3\x95\t\xC6\xAFE\xFC\x0F[\xA00\x84\x84\x83\x81\x81\x10a\x0E]Wa\x0E]a/\xE3V[\x90P` \x02\x01` \x81\x01\x90a\x0Er\x91\x90a)\xE8V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1a\x0E\xBE\x84\x84\x83\x81\x81\x10a\x0E\xA2Wa\x0E\xA2a/\xE3V[\x90P` \x02\x01` \x81\x01\x90a\x0E\xB7\x91\x90a)\xE8V[`\0a\x1A\xD6V[`\x01\x01a\r\x80V[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x0F\x0EW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06$\x90a/\x85V[a\x0B\xCC\x84\x84\x84\x84a\x1DLV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x0FbW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06$\x90a/\x85V[`@Qcl\xE5v\x89`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R\x82\x81\x16`$\x83\x01R`D\x82\x01\x84\x90R\x84\x16\x90c\xD9\xCA\xED\x12\x90`d\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xB4W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xC8W=`\0\x80>=`\0\xFD[PPPPPPPPV[a\x0F\xDAa\x1BDV[a\x066\x81a\x1F\xD9V[`\xCE` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x0F\xFFW`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x91P\x82\x90PV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x10;WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x10UWP0;\x15\x80\x15a\x10UWP`\0T`\xFF\x16`\x01\x14[a\x10\xB8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01a\x06$V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x10\xDBW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x10\xE3a BV[`\xC9Ua\x10\xF0\x83\x83a \xD9V[a\x10\xF9\x85a\x1B\x9EV[a\x11\x02\x84a\x1F\xD9V[\x80\x15a\x11HW`\0\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPV[`\xCBT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x11yW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06$\x90a/\x1BV[\x82\x81\x14a\x12\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`K`$\x82\x01R\x7FStrategyManager.addStrategiesToD`D\x82\x01R\x7FepositWhitelist: array lengths d`d\x82\x01Rj\r\xE4\r\xCD\xEE\x84\r\xAC.\x8Cm`\xAB\x1B`\x84\x82\x01R`\xA4\x01a\x06$V[\x82`\0[\x81\x81\x10\x15a\x13pW`\xD1`\0\x87\x87\x84\x81\x81\x10a\x12$Wa\x12$a/\xE3V[\x90P` \x02\x01` \x81\x01\x90a\x129\x91\x90a)\xE8V[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x81\x01\x91\x90\x91R`@\x01`\0 T`\xFF\x16a\x13hW`\x01`\xD1`\0\x88\x88\x85\x81\x81\x10a\x12rWa\x12ra/\xE3V[\x90P` \x02\x01` \x81\x01\x90a\x12\x87\x91\x90a)\xE8V[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x81\x01\x91\x90\x91R`@\x01`\0 \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90U\x7F\x0C5\xB1}\x91\xC9n\xB2u\x1C\xD4V\xE1%/B\xA3\x86\xE5$\xEF\x9F\xF2n\xCC\x99P\x85\x9F\xDC\x04\xFE\x86\x86\x83\x81\x81\x10a\x12\xE2Wa\x12\xE2a/\xE3V[\x90P` \x02\x01` \x81\x01\x90a\x12\xF7\x91\x90a)\xE8V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1a\x13h\x86\x86\x83\x81\x81\x10a\x13'Wa\x13'a/\xE3V[\x90P` \x02\x01` \x81\x01\x90a\x13<\x91\x90a)\xE8V[\x85\x85\x84\x81\x81\x10a\x13NWa\x13Na/\xE3V[\x90P` \x02\x01` \x81\x01\x90a\x13c\x91\x90a/\xF9V[a\x1A\xD6V[`\x01\x01a\x12\x06V[PPPPPPV[`\x98T`\0\x90\x81\x90`\x01\x90\x81\x16\x14\x15a\x13\xCFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01Rx\x14\x18]\\\xD8X\x9B\x19N\x88\x1A[\x99\x19^\x08\x1A\\\xC8\x1C\x18]\\\xD9Y`:\x1B`D\x82\x01R`d\x01a\x06$V[`\x02`eT\x14\x15a\x14\"W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06$V[`\x02`eUa\x1433\x86\x86\x86a\x19\x07V[`\x01`eU\x95\x94PPPPPV[a\x14Ia\x1BDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x14\xAEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06$V[a\x066\x81a\x1B\x9EV[`\0\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0F\x14\x15a\x14\xE8WP`\xC9T\x90V[a\x14\xF0a BV[\x90P\x90V[`\x97`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xEA\xB6mz`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15HW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15l\x91\x90a.OV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x15\x9CW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06$\x90a.lV[`\x98T\x19\x81\x19`\x98T\x19\x16\x14a\x16\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.unpause: invalid attemp`D\x82\x01R\x7Ft to pause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06$V[`\x98\x81\x90U`@Q\x81\x81R3\x90\x7F5\x82\xD1\x82\x8E&\xBFV\xBD\x80\x15\x02\xBC\x02\x1A\xC0\xBC\x8A\xFBW\xC8&\xE4\x98kEY<\x8F\xAD8\x9C\x90` \x01a\x07mV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x16\xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FPausable._setPauserRegistry: new`D\x82\x01R\x7FPauserRegistry cannot be the zer`d\x82\x01Rho address`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\x06$V[`\x97T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7Fn\x9F\xCDS\x98\x96\xFC\xA6\x0E\x8B\x0F\x01\xDDX\x023\xE4\x8Ak\x0F}\xF0\x13\xB8\x9B\xA7\xF5e\x86\x9A\xCD\xB6\x91\x01`@Q\x80\x91\x03\x90\xA1`\x97\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x01`\x01`\xA0\x1B\x03\x83\x16;\x15a\x18gW`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90a\x17\x88\x90\x86\x90\x86\x90`\x04\x01a0nV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17\xA5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xC9\x91\x90a0\x87V[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x18bW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`S`$\x82\x01R\x7FEIP1271SignatureUtils.checkSigna`D\x82\x01R\x7Fture_EIP1271: ERC1271 signature `d\x82\x01Rr\x1D\x99\\\x9AY\x9AX\xD8]\x1A[\xDB\x88\x19\x98Z[\x19Y`j\x1B`\x84\x82\x01R`\xA4\x01a\x06$V[PPPV[\x82`\x01`\x01`\xA0\x1B\x03\x16a\x18{\x83\x83a!\xBFV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x18bW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FEIP1271SignatureUtils.checkSigna`D\x82\x01R\x7Fture_EIP1271: signature not from`d\x82\x01Rf\x109\xB4\xB3\xB72\xB9`\xC9\x1B`\x84\x82\x01R`\xA4\x01a\x06$V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\xD1` R`@\x81 T\x84\x90`\xFF\x16a\x19\xADW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`M`$\x82\x01R\x7FStrategyManager.onlyStrategiesWh`D\x82\x01R\x7FitelistedForDeposit: strategy no`d\x82\x01Rl\x1D\x08\x1D\xDA\x1A]\x19[\x1A\\\xDD\x19Y`\x9A\x1B`\x84\x82\x01R`\xA4\x01a\x06$V[a\x19\xC2`\x01`\x01`\xA0\x1B\x03\x85\x163\x87\x86a!\xE3V[`@Qc\x11\xF9\xFB\xC9`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R`$\x82\x01\x85\x90R\x86\x16\x90cG\xE7\xEF$\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x1A\x11W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A5\x91\x90a0\xB1V[\x91Pa\x1AC\x86\x85\x87\x85a\x1DLV[`@Qc\x14R\xB9\xD7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x87\x81\x16`\x04\x83\x01R\x86\x81\x16`$\x83\x01R`D\x82\x01\x84\x90R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c(\xA5s\xAE\x90`d\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1A\xB5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1A\xC9W=`\0\x80>=`\0\xFD[PPPPP\x94\x93PPPPV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R\x82\x15\x15` \x82\x01R\x7Fw\xD90\xDFI7y4s\xA9P$\xD8z\x98\xFD,\xCB\x9E\x92\xD3\xC2F;=\xAC\xD6]>jW\x86\x91\x01`@Q\x80\x91\x03\x90\xA1`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16`\0\x90\x81R`\xD3` R`@\x90 \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90UV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x0BwW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06$V[`3\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[`\0\x81a\x1CeW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FStrategyManager._removeShares: s`D\x82\x01R\x7FhareAmount should not be zero!\0\0`d\x82\x01R`\x84\x01a\x06$V[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\xCD` \x90\x81R`@\x80\x83 \x93\x87\x16\x83R\x92\x90R T\x80\x83\x11\x15a\x1C\xF7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FStrategyManager._removeShares: s`D\x82\x01Rr\r\x0C.L\xA8-\xAD\xEE\xAD\xCE\x84\x0E\x8D\xED\xE4\r\r,\xED`k\x1B`d\x82\x01R`\x84\x01a\x06$V[`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\0\x90\x81R`\xCD` \x90\x81R`@\x80\x83 \x93\x88\x16\x83R\x92\x90R \x83\x82\x03\x90\x81\x90U\x90\x83\x14\x15a\x1D?Wa\x1D5\x85\x85a\"=V[`\x01\x91PPa\x1DEV[`\0\x91PP[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x84\x16a\x1D\xC8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`9`$\x82\x01R\x7FStrategyManager._addShares: stak`D\x82\x01R\x7Fer cannot be zero address\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06$V[\x80a\x1E4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`6`$\x82\x01R\x7FStrategyManager._addShares: shar`D\x82\x01Rues should not be zero!`P\x1B`d\x82\x01R`\x84\x01a\x06$V[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\xCD` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R Ta\x1FEW`\x01`\x01`\xA0\x1B\x03\x84\x16`\0\x90\x81R`\xCE` \x90\x81R`@\x90\x91 T\x10a\x1F\x06W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`P`$\x82\x01R\x7FStrategyManager._addShares: depo`D\x82\x01R\x7Fsit would exceed MAX_STAKER_STRA`d\x82\x01Ro\n\x88\xA8\xEB+\xE9\x89*j\x8B\xE9\x88\xA9\xC8\xEA\x89`\x83\x1B`\x84\x82\x01R`\xA4\x01a\x06$V[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x90\x81R`\xCE` \x90\x81R`@\x82 \x80T`\x01\x81\x01\x82U\x90\x83R\x91 \x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x91\x84\x16\x91\x90\x91\x17\x90U[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\xCD` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 \x80T\x83\x92\x90a\x1F|\x90\x84\x90a0\xE0V[\x90\x91UPP`@\x80Q`\x01`\x01`\xA0\x1B\x03\x86\x81\x16\x82R\x85\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R``\x81\x01\x83\x90R\x90Q\x7F|\xFF\xF9\x08\xA4\xB5\x83\xF3d0\xB2]u\x96LE\x8D\x8E\xDE\x8A\x99\xBDa\xBEu\x0E\x97\xEE\x1B/:\x96\x91\x81\x90\x03`\x80\x01\x90\xA1PPPPV[`\xCBT`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7FBd'^Y9U\xFF\x9DaF\xA5\x1AE%\xF6\xDD\xAC\xE2\xE8\x1D\xB99\x1A\xBC\xC9\xD1\xCAH\x04})\x91\x01`@Q\x80\x91\x03\x90\xA1`\xCB\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`@\x80Q\x80\x82\x01\x82R`\n\x81Ri\"\xB4\xB3\xB2\xB7&0\xBC\xB2\xB9`\xB1\x1B` \x91\x82\x01R\x81Q\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x81\x83\x01R\x7Fq\xB6%\xCF\xADD\xBA\xC6;\x13\xDB\xA0\x7F.\x1D`\x84\xEE\x04\xB6\xF8u!\x01\xEC\xE6\x12mXN\xE6\xEA\x81\x84\x01RF``\x82\x01R0`\x80\x80\x83\x01\x91\x90\x91R\x83Q\x80\x83\x03\x90\x91\x01\x81R`\xA0\x90\x91\x01\x90\x92R\x81Q\x91\x01 \x90V[`\x97T`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a \xFAWP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a!|W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FPausable._initializePauser: _ini`D\x82\x01R\x7FtializePauser() can only be call`d\x82\x01Rfed once`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x06$V[`\x98\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2a\n\x9A\x82a\x16QV[`\0\x80`\0a!\xCE\x85\x85a$/V[\x91P\x91Pa!\xDB\x81a$\x9FV[P\x93\x92PPPV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`$\x83\x01R\x84\x16`D\x82\x01R`d\x80\x82\x01\x84\x90R\x82Q\x80\x83\x03\x90\x91\x01\x81R`\x84\x90\x91\x01\x90\x91R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c#\xB8r\xDD`\xE0\x1B\x17\x90Ra\x0B\xCC\x90\x85\x90a&ZV[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\xCE` R`@\x81 T\x90[\x81\x81\x10\x15a#XW`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x90\x81R`\xCE` R`@\x90 \x80T\x91\x85\x16\x91\x83\x90\x81\x10a\"\x8FWa\"\x8Fa/\xE3V[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a#PW`\x01`\x01`\xA0\x1B\x03\x84\x16`\0\x90\x81R`\xCE` R`@\x90 \x80Ta\"\xD0\x90`\x01\x90a0\xF8V[\x81T\x81\x10a\"\xE0Wa\"\xE0a/\xE3V[`\0\x91\x82R` \x80\x83 \x90\x91\x01T`\x01`\x01`\xA0\x1B\x03\x87\x81\x16\x84R`\xCE\x90\x92R`@\x90\x92 \x80T\x91\x90\x92\x16\x91\x90\x83\x90\x81\x10a#\x1DWa#\x1Da/\xE3V[\x90`\0R` `\0 \x01`\0a\x01\0\n\x81T\x81`\x01`\x01`\xA0\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`\xA0\x1B\x03\x16\x02\x17\x90UPa#XV[`\x01\x01a\"XV[\x81\x81\x14\x15a#\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FStrategyManager._removeStrategyF`D\x82\x01R\x7FromStakerStrategyList: strategy `d\x82\x01Rh\x1B\x9B\xDD\x08\x19\x9B\xDD[\x99`\xBA\x1B`\x84\x82\x01R`\xA4\x01a\x06$V[`\x01`\x01`\xA0\x1B\x03\x84\x16`\0\x90\x81R`\xCE` R`@\x90 \x80T\x80a$\x07Wa$\x07a1\x0FV[`\0\x82\x81R` \x90 \x81\x01`\0\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90UPPPPV[`\0\x80\x82Q`A\x14\x15a$fW` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1Aa$Z\x87\x82\x85\x85a',V[\x94P\x94PPPPa$\x98V[\x82Q`@\x14\x15a$\x90W` \x83\x01Q`@\x84\x01Qa$\x85\x86\x83\x83a(\x19V[\x93P\x93PPPa$\x98V[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15a$\xB3Wa$\xB3a1%V[\x14\x15a$\xBCWPV[`\x01\x81`\x04\x81\x11\x15a$\xD0Wa$\xD0a1%V[\x14\x15a%\x1EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FECDSA: invalid signature\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06$V[`\x02\x81`\x04\x81\x11\x15a%2Wa%2a1%V[\x14\x15a%\x80W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x06$V[`\x03\x81`\x04\x81\x11\x15a%\x94Wa%\x94a1%V[\x14\x15a%\xEDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 's' val`D\x82\x01Raue`\xF0\x1B`d\x82\x01R`\x84\x01a\x06$V[`\x04\x81`\x04\x81\x11\x15a&\x01Wa&\x01a1%V[\x14\x15a\x066W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 'v' val`D\x82\x01Raue`\xF0\x1B`d\x82\x01R`\x84\x01a\x06$V[`\0a&\xAF\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7FSafeERC20: low-level call failed\x81RP\x85`\x01`\x01`\xA0\x1B\x03\x16a(R\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80Q\x90\x91P\x15a\x18bW\x80\x80` \x01\x90Q\x81\x01\x90a&\xCD\x91\x90a.\xB6V[a\x18bW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`*`$\x82\x01R\x7FSafeERC20: ERC20 operation did n`D\x82\x01Ri\x1B\xDD\x08\x1C\xDDX\xD8\xD9YY`\xB2\x1B`d\x82\x01R`\x84\x01a\x06$V[`\0\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x83\x11\x15a'cWP`\0\x90P`\x03a(\x10V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15a'{WP\x84`\xFF\x16`\x1C\x14\x15[\x15a'\x8CWP`\0\x90P`\x04a(\x10V[`@\x80Q`\0\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a'\xE0W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16a(\tW`\0`\x01\x92P\x92PPa(\x10V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81a(6`\xFF\x86\x90\x1C`\x1Ba0\xE0V[\x90Pa(D\x87\x82\x88\x85a',V[\x93P\x93PPP\x93P\x93\x91PPV[``a(a\x84\x84`\0\x85a(iV[\x94\x93PPPPV[``\x82G\x10\x15a(\xCAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FAddress: insufficient balance fo`D\x82\x01Re\x1C\x88\x18\xD8[\x1B`\xD2\x1B`d\x82\x01R`\x84\x01a\x06$V[`\x01`\x01`\xA0\x1B\x03\x85\x16;a)!W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01a\x06$V[`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa)=\x91\x90a1;V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a)zW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a)\x7FV[``\x91P[P\x91P\x91Pa)\x8F\x82\x82\x86a)\x9AV[\x97\x96PPPPPPPV[``\x83\x15a)\xA9WP\x81a\x1DEV[\x82Q\x15a)\xB9W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06$\x91\x90a1WV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x066W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a)\xFAW`\0\x80\xFD[\x815a\x1DE\x81a)\xD3V[`\0` \x82\x84\x03\x12\x15a*\x17W`\0\x80\xFD[P5\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x80`\0\x80`\0\x80`\xC0\x87\x89\x03\x12\x15a*MW`\0\x80\xFD[\x865a*X\x81a)\xD3V[\x95P` \x87\x015a*h\x81a)\xD3V[\x94P`@\x87\x015\x93P``\x87\x015a*\x7F\x81a)\xD3V[\x92P`\x80\x87\x015\x91P`\xA0\x87\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a*\xA3W`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a*\xB7W`\0\x80\xFD[\x815\x81\x81\x11\x15a*\xC9Wa*\xC9a*\x1EV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a*\xF1Wa*\xF1a*\x1EV[\x81`@R\x82\x81R\x8C` \x84\x87\x01\x01\x11\x15a+\nW`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0` \x84\x83\x01\x01R\x80\x95PPPPPP\x92\x95P\x92\x95P\x92\x95V[\x80\x15\x15\x81\x14a\x066W`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a+PW`\0\x80\xFD[\x825a+[\x81a)\xD3V[\x91P` \x83\x015a+k\x81a+/V[\x80\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a+\x88W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x1DEW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a+\xACW`\0\x80\xFD[\x825a+\xB7\x81a)\xD3V[\x91P` \x83\x015a+k\x81a)\xD3V[`\0\x80`\0``\x84\x86\x03\x12\x15a+\xDCW`\0\x80\xFD[\x835a+\xE7\x81a)\xD3V[\x92P` \x84\x015a+\xF7\x81a)\xD3V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`@\x80\x82R\x83Q\x90\x82\x01\x81\x90R`\0\x90` \x90``\x84\x01\x90\x82\x87\x01\x84[\x82\x81\x10\x15a,JW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a,%V[PPP\x83\x81\x03\x82\x85\x01R\x84Q\x80\x82R\x85\x83\x01\x91\x83\x01\x90`\0[\x81\x81\x10\x15a,\x7FW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a,cV[P\x90\x97\x96PPPPPPPV[`\0\x80\x83`\x1F\x84\x01\x12a,\x9EW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a,\xB6W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a$\x98W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a,\xE4W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a,\xFBW`\0\x80\xFD[a-\x07\x85\x82\x86\x01a,\x8CV[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a-)W`\0\x80\xFD[\x845a-4\x81a)\xD3V[\x93P` \x85\x015a-D\x81a)\xD3V[\x92P`@\x85\x015a-T\x81a)\xD3V[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a-zW`\0\x80\xFD[\x845a-\x85\x81a)\xD3V[\x93P` \x85\x015a-\x95\x81a)\xD3V[\x92P`@\x85\x015\x91P``\x85\x015a-\xAC\x81a)\xD3V[\x93\x96\x92\x95P\x90\x93PPV[`\0\x80`@\x83\x85\x03\x12\x15a-\xCAW`\0\x80\xFD[\x825a-\xD5\x81a)\xD3V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a-\xF9W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a.\x11W`\0\x80\xFD[a.\x1D\x88\x83\x89\x01a,\x8CV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a.6W`\0\x80\xFD[Pa.C\x87\x82\x88\x01a,\x8CV[\x95\x98\x94\x97P\x95PPPPV[`\0` \x82\x84\x03\x12\x15a.aW`\0\x80\xFD[\x81Qa\x1DE\x81a)\xD3V[` \x80\x82R`*\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Ri9\x90:\xB780\xBA\xB9\xB2\xB9`\xB1\x1B``\x82\x01R`\x80\x01\x90V[`\0` \x82\x84\x03\x12\x15a.\xC8W`\0\x80\xFD[\x81Qa\x1DE\x81a+/V[` \x80\x82R`(\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Rg9\x9080\xBA\xB9\xB2\xB9`\xC1\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`D\x90\x82\x01R\x7FStrategyManager.onlyStrategyWhit`@\x82\x01R\x7Felister: not the strategyWhiteli``\x82\x01Rc9\xBA2\xB9`\xE1\x1B`\x80\x82\x01R`\xA0\x01\x90V[` \x80\x82R`@\x90\x82\x01\x81\x90R\x7FStrategyManager.onlyDelegationMa\x90\x82\x01R\x7Fnager: not the DelegationManager``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a0\x0BW`\0\x80\xFD[\x815a\x1DE\x81a+/V[`\0[\x83\x81\x10\x15a01W\x81\x81\x01Q\x83\x82\x01R` \x01a0\x19V[\x83\x81\x11\x15a\x0B\xCCWPP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra0Z\x81` \x86\x01` \x86\x01a0\x16V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[\x82\x81R`@` \x82\x01R`\0a(a`@\x83\x01\x84a0BV[`\0` \x82\x84\x03\x12\x15a0\x99W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x1DEW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a0\xC3W`\0\x80\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a0\xF3Wa0\xF3a0\xCAV[P\x01\x90V[`\0\x82\x82\x10\x15a1\nWa1\na0\xCAV[P\x03\x90V[cNH{q`\xE0\x1B`\0R`1`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`\0\x82Qa1M\x81\x84` \x87\x01a0\x16V[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0a\x1DE` \x83\x01\x84a0BV\xFE\xA2dipfsX\"\x12 \xD1\x80\xDFeg$\xCDd\x94\x14T\xEB\x811\x8C(\xEC\x9C7Q\xAE\xEA\x87I(\xC7\xA6LF\xA9)xdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063c6656702116100ad578063df5cf7231161007c578063df5cf72314610515578063e7a050aa1461053c578063f2fde38b1461054f578063f698da2514610562578063fabc1cbc1461056a57600080fd5b8063c6656702146104c9578063cbc2bd62146104dc578063cf756fdf146104ef578063df5b35471461050257600080fd5b8063b1344271116100e9578063b134427114610469578063b5d8b5b814610490578063c4623ea1146104a3578063c608c7f3146104b657600080fd5b80638da5cb5b1461040157806394f649dd14610412578063967fc0d2146104335780639b4da03d1461044657600080fd5b80635ac86ab71161019d5780637a7e0d921161016c5780637a7e0d92146103675780637ecebe0014610392578063886f1195146103b25780638b8aac3c146103c55780638c80d4e5146103ee57600080fd5b80635ac86ab7146103015780635c975abb14610334578063663c1de41461033c578063715018a61461035f57600080fd5b80634665bcda116101d95780634665bcda1461028057806348825e94146102bf5780634e5a4263146102e6578063595c6a67146102f957600080fd5b806310d67a2f1461020b578063136439dd1461022057806320606b701461023357806332e89ace1461026d575b600080fd5b61021e6102193660046129e8565b61057d565b005b61021e61022e366004612a05565b610639565b61025a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61025a61027b366004612a34565b610778565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610264565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102f4366004612b3d565b610a66565b61021e610a9e565b61032461030f366004612b76565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61032461034a3660046129e8565b60d16020526000908152604090205460ff1681565b61021e610b65565b61025a610375366004612b99565b60cd60209081526000928352604080842090915290825290205481565b61025a6103a03660046129e8565b60ca6020526000908152604090205481565b6097546102a7906001600160a01b031681565b61025a6103d33660046129e8565b6001600160a01b0316600090815260ce602052604090205490565b61021e6103fc366004612bc7565b610b79565b6033546001600160a01b03166102a7565b6104256104203660046129e8565b610bd2565b604051610264929190612c08565b60cb546102a7906001600160a01b031681565b6103246104543660046129e8565b60d36020526000908152604090205460ff1681565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61021e61049e366004612cd1565b610d52565b61021e6104b1366004612d13565b610ec6565b61021e6104c4366004612d64565b610f1a565b61021e6104d73660046129e8565b610fd2565b6102a76104ea366004612db7565b610fe3565b61021e6104fd366004612d13565b61101b565b61021e610510366004612de3565b61114f565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61025a61054a366004612bc7565b611378565b61021e61055d3660046129e8565b611441565b61025a6114b7565b61021e610578366004612a05565b6114f5565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612e4f565b6001600160a01b0316336001600160a01b03161461062d5760405162461bcd60e51b815260040161062490612e6c565b60405180910390fd5b61063681611651565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190612eb6565b6106c15760405162461bcd60e51b815260040161062490612ed3565b6098548181161461073a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6098546000908190600190811614156107cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156108225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b60026065556001600160a01b038816600090815260d3602052604090205460ff16156108c95760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a401610624565b4284101561094b5760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a401610624565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a036114b7565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a46888288611748565b610a52888c8c8c611907565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610a905760405162461bcd60e51b815260040161062490612f1b565b610a9a8282611ad6565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190612eb6565b610b265760405162461bcd60e51b815260040161062490612ed3565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610b6d611b44565b610b776000611b9e565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bc15760405162461bcd60e51b815260040161062490612f85565b610bcc838383611bf0565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c0a57610c0a612a1e565b604051908082528060200260200182016040528015610c33578160200160208202803683370190505b50905060005b82811015610cc4576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610c7857610c78612fe3565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610cb157610cb1612fe3565b6020908102919091010152600101610c39565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d4057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d22575b50505050509150935093505050915091565b60cb546001600160a01b03163314610d7c5760405162461bcd60e51b815260040161062490612f1b565b8060005b81811015610bcc5760d16000858584818110610d9e57610d9e612fe3565b9050602002016020810190610db391906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1615610ebe57600060d16000868685818110610ded57610ded612fe3565b9050602002016020810190610e0291906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610e5d57610e5d612fe3565b9050602002016020810190610e7291906129e8565b6040516001600160a01b03909116815260200160405180910390a1610ebe848483818110610ea257610ea2612fe3565b9050602002016020810190610eb791906129e8565b6000611ad6565b600101610d80565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f0e5760405162461bcd60e51b815260040161062490612f85565b610bcc84848484611d4c565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f625760405162461bcd60e51b815260040161062490612f85565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b158015610fb457600080fd5b505af1158015610fc8573d6000803e3d6000fd5b5050505050505050565b610fda611b44565b61063681611fd9565b60ce6020528160005260406000208181548110610fff57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff161580801561103b5750600054600160ff909116105b806110555750303b158015611055575060005460ff166001145b6110b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610624565b6000805460ff1916600117905580156110db576000805461ff0019166101001790555b6110e3612042565b60c9556110f083836120d9565b6110f985611b9e565b61110284611fd9565b8015611148576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146111795760405162461bcd60e51b815260040161062490612f1b565b8281146112025760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a401610624565b8260005b818110156113705760d1600087878481811061122457611224612fe3565b905060200201602081019061123991906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1661136857600160d1600088888581811061127257611272612fe3565b905060200201602081019061128791906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106112e2576112e2612fe3565b90506020020160208101906112f791906129e8565b6040516001600160a01b03909116815260200160405180910390a161136886868381811061132757611327612fe3565b905060200201602081019061133c91906129e8565b85858481811061134e5761134e612fe3565b90506020020160208101906113639190612ff9565b611ad6565b600101611206565b505050505050565b6098546000908190600190811614156113cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156114225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b600260655561143333868686611907565b600160655595945050505050565b611449611b44565b6001600160a01b0381166114ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610624565b61063681611b9e565b60007f00000000000000000000000000000000000000000000000000000000000000004614156114e8575060c95490565b6114f0612042565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611548573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156c9190612e4f565b6001600160a01b0316336001600160a01b03161461159c5760405162461bcd60e51b815260040161062490612e6c565b60985419811960985419161461161a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161076d565b6001600160a01b0381166116df5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610624565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b1561186757604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90611788908690869060040161306e565b602060405180830381865afa1580156117a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c99190613087565b6001600160e01b031916146118625760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610624565b505050565b826001600160a01b031661187b83836121bf565b6001600160a01b0316146118625760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610624565b6001600160a01b038316600090815260d16020526040812054849060ff166119ad5760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a401610624565b6119c26001600160a01b0385163387866121e3565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3591906130b1565b9150611a4386858785611d4c565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610b775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081611c655760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f2100006064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611cf75760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b6064820152608401610624565b6001600160a01b03808616600090815260cd602090815260408083209388168352929052208382039081905590831415611d3f57611d35858561223d565b6001915050611d45565b60009150505b9392505050565b6001600160a01b038416611dc85760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f2061646472657373000000000000006064820152608401610624565b80611e345760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b6064820152608401610624565b6001600160a01b03808516600090815260cd6020908152604080832093861683529290522054611f45576001600160a01b038416600090815260ce602090815260409091205410611f065760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a401610624565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd6020908152604080832093861683529290529081208054839290611f7c9084906130e0565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b03161580156120fa57506001600160a01b03821615155b61217c5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610a9a82611651565b60008060006121ce858561242f565b915091506121db8161249f565b509392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610bcc90859061265a565b6001600160a01b038216600090815260ce6020526040812054905b81811015612358576001600160a01b03848116600090815260ce602052604090208054918516918390811061228f5761228f612fe3565b6000918252602090912001546001600160a01b03161415612350576001600160a01b038416600090815260ce6020526040902080546122d0906001906130f8565b815481106122e0576122e0612fe3565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061231d5761231d612fe3565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612358565b600101612258565b818114156123e05760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a401610624565b6001600160a01b038416600090815260ce602052604090208054806124075761240761310f565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604114156124665760208301516040840151606085015160001a61245a8782858561272c565b94509450505050612498565b8251604014156124905760208301516040840151612485868383612819565b935093505050612498565b506000905060025b9250929050565b60008160048111156124b3576124b3613125565b14156124bc5750565b60018160048111156124d0576124d0613125565b141561251e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610624565b600281600481111561253257612532613125565b14156125805760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610624565b600381600481111561259457612594613125565b14156125ed5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610624565b600481600481111561260157612601613125565b14156106365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610624565b60006126af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128529092919063ffffffff16565b80519091501561186257808060200190518101906126cd9190612eb6565b6118625760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610624565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127635750600090506003612810565b8460ff16601b1415801561277b57508460ff16601c14155b1561278c5750600090506004612810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661280957600060019250925050612810565b9150600090505b94509492505050565b6000806001600160ff1b0383168161283660ff86901c601b6130e0565b90506128448782888561272c565b935093505050935093915050565b60606128618484600085612869565b949350505050565b6060824710156128ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610624565b6001600160a01b0385163b6129215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610624565b600080866001600160a01b0316858760405161293d919061313b565b60006040518083038185875af1925050503d806000811461297a576040519150601f19603f3d011682016040523d82523d6000602084013e61297f565b606091505b509150915061298f82828661299a565b979650505050505050565b606083156129a9575081611d45565b8251156129b95782518084602001fd5b8160405162461bcd60e51b81526004016106249190613157565b6001600160a01b038116811461063657600080fd5b6000602082840312156129fa57600080fd5b8135611d45816129d3565b600060208284031215612a1757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215612a4d57600080fd5b8635612a58816129d3565b95506020870135612a68816129d3565b9450604087013593506060870135612a7f816129d3565b92506080870135915060a087013567ffffffffffffffff80821115612aa357600080fd5b818901915089601f830112612ab757600080fd5b813581811115612ac957612ac9612a1e565b604051601f8201601f19908116603f01168101908382118183101715612af157612af1612a1e565b816040528281528c6020848701011115612b0a57600080fd5b8260208601602083013760006020848301015280955050505050509295509295509295565b801515811461063657600080fd5b60008060408385031215612b5057600080fd5b8235612b5b816129d3565b91506020830135612b6b81612b2f565b809150509250929050565b600060208284031215612b8857600080fd5b813560ff81168114611d4557600080fd5b60008060408385031215612bac57600080fd5b8235612bb7816129d3565b91506020830135612b6b816129d3565b600080600060608486031215612bdc57600080fd5b8335612be7816129d3565b92506020840135612bf7816129d3565b929592945050506040919091013590565b604080825283519082018190526000906020906060840190828701845b82811015612c4a5781516001600160a01b031684529284019290840190600101612c25565b5050508381038285015284518082528583019183019060005b81811015612c7f57835183529284019291840191600101612c63565b5090979650505050505050565b60008083601f840112612c9e57600080fd5b50813567ffffffffffffffff811115612cb657600080fd5b6020830191508360208260051b850101111561249857600080fd5b60008060208385031215612ce457600080fd5b823567ffffffffffffffff811115612cfb57600080fd5b612d0785828601612c8c565b90969095509350505050565b60008060008060808587031215612d2957600080fd5b8435612d34816129d3565b93506020850135612d44816129d3565b92506040850135612d54816129d3565b9396929550929360600135925050565b60008060008060808587031215612d7a57600080fd5b8435612d85816129d3565b93506020850135612d95816129d3565b9250604085013591506060850135612dac816129d3565b939692955090935050565b60008060408385031215612dca57600080fd5b8235612dd5816129d3565b946020939093013593505050565b60008060008060408587031215612df957600080fd5b843567ffffffffffffffff80821115612e1157600080fd5b612e1d88838901612c8c565b90965094506020870135915080821115612e3657600080fd5b50612e4387828801612c8c565b95989497509550505050565b600060208284031215612e6157600080fd5b8151611d45816129d3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612ec857600080fd5b8151611d4581612b2f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561300b57600080fd5b8135611d4581612b2f565b60005b83811015613031578181015183820152602001613019565b83811115610bcc5750506000910152565b6000815180845261305a816020860160208601613016565b601f01601f19169290920160200192915050565b8281526040602082015260006128616040830184613042565b60006020828403121561309957600080fd5b81516001600160e01b031981168114611d4557600080fd5b6000602082840312156130c357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156130f3576130f36130ca565b500190565b60008282101561310a5761310a6130ca565b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000825161314d818460208701613016565b9190910192915050565b602081526000611d45602083018461304256fea2646970667358221220d180df656724cd64941454eb81318c28ec9c3751aeea874928c7a64c46a9297864736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x02\x06W`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\x01\x1AW\x80c\xC6eg\x02\x11a\0\xADW\x80c\xDF\\\xF7#\x11a\0|W\x80c\xDF\\\xF7#\x14a\x05\x15W\x80c\xE7\xA0P\xAA\x14a\x05\xA1\x14a\x04\xA3W\x80c\xC6\x08\xC7\xF3\x14a\x04\xB6W`\0\x80\xFD[\x80c\x8D\xA5\xCB[\x14a\x04\x01W\x80c\x94\xF6I\xDD\x14a\x04\x12W\x80c\x96\x7F\xC0\xD2\x14a\x043W\x80c\x9BM\xA0=\x14a\x04FW`\0\x80\xFD[\x80cZ\xC8j\xB7\x11a\x01\x9DW\x80cz~\r\x92\x11a\x01lW\x80cz~\r\x92\x14a\x03gW\x80c~\xCE\xBE\0\x14a\x03\x92W\x80c\x88o\x11\x95\x14a\x03\xB2W\x80c\x8B\x8A\xAC<\x14a\x03\xC5W\x80c\x8C\x80\xD4\xE5\x14a\x03\xEEW`\0\x80\xFD[\x80cZ\xC8j\xB7\x14a\x03\x01W\x80c\\\x97Z\xBB\x14a\x034W\x80cf<\x1D\xE4\x14a\x03=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xF4\x91\x90a.OV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06-W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06$\x90a.lV[`@Q\x80\x91\x03\x90\xFD[a\x066\x81a\x16QV[PV[`\x97T`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\x81W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xA5\x91\x90a.\xB6V[a\x06\xC1W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06$\x90a.\xD3V[`\x98T\x81\x81\x16\x14a\x07:W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.pause: invalid attempt `D\x82\x01R\x7Fto unpause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06$V[`\x98\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01[`@Q\x80\x91\x03\x90\xA2PV[`\x98T`\0\x90\x81\x90`\x01\x90\x81\x16\x14\x15a\x07\xCFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01Rx\x14\x18]\\\xD8X\x9B\x19N\x88\x1A[\x99\x19^\x08\x1A\\\xC8\x1C\x18]\\\xD9Y`:\x1B`D\x82\x01R`d\x01a\x06$V[`\x02`eT\x14\x15a\x08\"W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06$V[`\x02`eU`\x01`\x01`\xA0\x1B\x03\x88\x16`\0\x90\x81R`\xD3` R`@\x90 T`\xFF\x16\x15a\x08\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R\x7FStrategyManager.depositIntoStrat`D\x82\x01R\x7FegyWithSignature: third transfer`d\x82\x01Ri\x1C\xC8\x19\x1A\\\xD8X\x9B\x19Y`\xB2\x1B`\x84\x82\x01R`\xA4\x01a\x06$V[B\x84\x10\x15a\tKW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R\x7FStrategyManager.depositIntoStrat`D\x82\x01R\x7FegyWithSignature: signature expi`d\x82\x01Rb\x1C\x99Y`\xEA\x1B`\x84\x82\x01R`\xA4\x01a\x06$V[`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\0\x81\x81R`\xCA` \x90\x81R`@\x80\x83 T\x81Q\x7FC7\xF8-\x14.A\xF2\xA8\xC1\x05G\xCD\x8C\x85\x9B\xDD\xB9\"b\xA6\x10X\xE7xB\xE2M\x9D\xEA\x92$\x93\x81\x01\x93\x90\x93R\x90\x82\x01\x93\x90\x93R\x8B\x84\x16``\x82\x01R\x92\x8A\x16`\x80\x84\x01R`\xA0\x83\x01\x89\x90R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x87\x90R\x90\x91a\x01\0\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x81Q` \x92\x83\x01 `\x01`\x01`\xA0\x1B\x03\x8A\x16`\0\x90\x81R`\xCA\x90\x93R\x90\x82 `\x01\x85\x01\x90U\x91Pa\n\x03a\x14\xB7V[`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x91\x90\x91R`B\x81\x01\x83\x90R`b\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90Pa\nF\x88\x82\x88a\x17HV[a\nR\x88\x8C\x8C\x8Ca\x19\x07V[`\x01`eU\x9B\x9APPPPPPPPPPPV[`\xCBT`\x01`\x01`\xA0\x1B\x03\x163\x14a\n\x90W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06$\x90a/\x1BV[a\n\x9A\x82\x82a\x1A\xD6V[PPV[`\x97T`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\xE6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\n\x91\x90a.\xB6V[a\x0B&W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06$\x90a.\xD3V[`\0\x19`\x98\x81\x90U`@Q\x90\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2V[a\x0Bma\x1BDV[a\x0Bw`\0a\x1B\x9EV[V[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x0B\xC1W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06$\x90a/\x85V[a\x0B\xCC\x83\x83\x83a\x1B\xF0V[PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\xCE` R`@\x81 T``\x91\x82\x91\x90\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0C\nWa\x0C\na*\x1EV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0C3W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x82\x81\x10\x15a\x0C\xC4W`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\xCD` \x90\x81R`@\x80\x83 `\xCE\x90\x92R\x82 \x80T\x91\x92\x91\x84\x90\x81\x10a\x0CxWa\x0Cxa/\xE3V[`\0\x91\x82R` \x80\x83 \x90\x91\x01T`\x01`\x01`\xA0\x1B\x03\x16\x83R\x82\x01\x92\x90\x92R`@\x01\x90 T\x82Q\x83\x90\x83\x90\x81\x10a\x0C\xB1Wa\x0C\xB1a/\xE3V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0C9V[P`\xCE`\0\x86`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01`\0 \x81\x81\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\r@W` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\r\"W[PPPPP\x91P\x93P\x93PPP\x91P\x91V[`\xCBT`\x01`\x01`\xA0\x1B\x03\x163\x14a\r|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06$\x90a/\x1BV[\x80`\0[\x81\x81\x10\x15a\x0B\xCCW`\xD1`\0\x85\x85\x84\x81\x81\x10a\r\x9EWa\r\x9Ea/\xE3V[\x90P` \x02\x01` \x81\x01\x90a\r\xB3\x91\x90a)\xE8V[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x81\x01\x91\x90\x91R`@\x01`\0 T`\xFF\x16\x15a\x0E\xBEW`\0`\xD1`\0\x86\x86\x85\x81\x81\x10a\r\xEDWa\r\xEDa/\xE3V[\x90P` \x02\x01` \x81\x01\x90a\x0E\x02\x91\x90a)\xE8V[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x81\x01\x91\x90\x91R`@\x01`\0 \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90U\x7F@tA;KD>NX\x01\x9F(U\xA8vQ\x135\x8C|r\xE3\x95\t\xC6\xAFE\xFC\x0F[\xA00\x84\x84\x83\x81\x81\x10a\x0E]Wa\x0E]a/\xE3V[\x90P` \x02\x01` \x81\x01\x90a\x0Er\x91\x90a)\xE8V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1a\x0E\xBE\x84\x84\x83\x81\x81\x10a\x0E\xA2Wa\x0E\xA2a/\xE3V[\x90P` \x02\x01` \x81\x01\x90a\x0E\xB7\x91\x90a)\xE8V[`\0a\x1A\xD6V[`\x01\x01a\r\x80V[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x0F\x0EW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06$\x90a/\x85V[a\x0B\xCC\x84\x84\x84\x84a\x1DLV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x0FbW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06$\x90a/\x85V[`@Qcl\xE5v\x89`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R\x82\x81\x16`$\x83\x01R`D\x82\x01\x84\x90R\x84\x16\x90c\xD9\xCA\xED\x12\x90`d\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xB4W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xC8W=`\0\x80>=`\0\xFD[PPPPPPPPV[a\x0F\xDAa\x1BDV[a\x066\x81a\x1F\xD9V[`\xCE` R\x81`\0R`@`\0 \x81\x81T\x81\x10a\x0F\xFFW`\0\x80\xFD[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x91P\x82\x90PV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x10;WP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x10UWP0;\x15\x80\x15a\x10UWP`\0T`\xFF\x16`\x01\x14[a\x10\xB8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01a\x06$V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x10\xDBW`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x10\xE3a BV[`\xC9Ua\x10\xF0\x83\x83a \xD9V[a\x10\xF9\x85a\x1B\x9EV[a\x11\x02\x84a\x1F\xD9V[\x80\x15a\x11HW`\0\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPV[`\xCBT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x11yW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06$\x90a/\x1BV[\x82\x81\x14a\x12\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`K`$\x82\x01R\x7FStrategyManager.addStrategiesToD`D\x82\x01R\x7FepositWhitelist: array lengths d`d\x82\x01Rj\r\xE4\r\xCD\xEE\x84\r\xAC.\x8Cm`\xAB\x1B`\x84\x82\x01R`\xA4\x01a\x06$V[\x82`\0[\x81\x81\x10\x15a\x13pW`\xD1`\0\x87\x87\x84\x81\x81\x10a\x12$Wa\x12$a/\xE3V[\x90P` \x02\x01` \x81\x01\x90a\x129\x91\x90a)\xE8V[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x81\x01\x91\x90\x91R`@\x01`\0 T`\xFF\x16a\x13hW`\x01`\xD1`\0\x88\x88\x85\x81\x81\x10a\x12rWa\x12ra/\xE3V[\x90P` \x02\x01` \x81\x01\x90a\x12\x87\x91\x90a)\xE8V[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x81\x01\x91\x90\x91R`@\x01`\0 \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90U\x7F\x0C5\xB1}\x91\xC9n\xB2u\x1C\xD4V\xE1%/B\xA3\x86\xE5$\xEF\x9F\xF2n\xCC\x99P\x85\x9F\xDC\x04\xFE\x86\x86\x83\x81\x81\x10a\x12\xE2Wa\x12\xE2a/\xE3V[\x90P` \x02\x01` \x81\x01\x90a\x12\xF7\x91\x90a)\xE8V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1a\x13h\x86\x86\x83\x81\x81\x10a\x13'Wa\x13'a/\xE3V[\x90P` \x02\x01` \x81\x01\x90a\x13<\x91\x90a)\xE8V[\x85\x85\x84\x81\x81\x10a\x13NWa\x13Na/\xE3V[\x90P` \x02\x01` \x81\x01\x90a\x13c\x91\x90a/\xF9V[a\x1A\xD6V[`\x01\x01a\x12\x06V[PPPPPPV[`\x98T`\0\x90\x81\x90`\x01\x90\x81\x16\x14\x15a\x13\xCFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01Rx\x14\x18]\\\xD8X\x9B\x19N\x88\x1A[\x99\x19^\x08\x1A\\\xC8\x1C\x18]\\\xD9Y`:\x1B`D\x82\x01R`d\x01a\x06$V[`\x02`eT\x14\x15a\x14\"W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06$V[`\x02`eUa\x1433\x86\x86\x86a\x19\x07V[`\x01`eU\x95\x94PPPPPV[a\x14Ia\x1BDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x14\xAEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06$V[a\x066\x81a\x1B\x9EV[`\0\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0F\x14\x15a\x14\xE8WP`\xC9T\x90V[a\x14\xF0a BV[\x90P\x90V[`\x97`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xEA\xB6mz`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15HW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15l\x91\x90a.OV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x15\x9CW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06$\x90a.lV[`\x98T\x19\x81\x19`\x98T\x19\x16\x14a\x16\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.unpause: invalid attemp`D\x82\x01R\x7Ft to pause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06$V[`\x98\x81\x90U`@Q\x81\x81R3\x90\x7F5\x82\xD1\x82\x8E&\xBFV\xBD\x80\x15\x02\xBC\x02\x1A\xC0\xBC\x8A\xFBW\xC8&\xE4\x98kEY<\x8F\xAD8\x9C\x90` \x01a\x07mV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x16\xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FPausable._setPauserRegistry: new`D\x82\x01R\x7FPauserRegistry cannot be the zer`d\x82\x01Rho address`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\x06$V[`\x97T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7Fn\x9F\xCDS\x98\x96\xFC\xA6\x0E\x8B\x0F\x01\xDDX\x023\xE4\x8Ak\x0F}\xF0\x13\xB8\x9B\xA7\xF5e\x86\x9A\xCD\xB6\x91\x01`@Q\x80\x91\x03\x90\xA1`\x97\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x01`\x01`\xA0\x1B\x03\x83\x16;\x15a\x18gW`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90a\x17\x88\x90\x86\x90\x86\x90`\x04\x01a0nV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17\xA5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xC9\x91\x90a0\x87V[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x18bW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`S`$\x82\x01R\x7FEIP1271SignatureUtils.checkSigna`D\x82\x01R\x7Fture_EIP1271: ERC1271 signature `d\x82\x01Rr\x1D\x99\\\x9AY\x9AX\xD8]\x1A[\xDB\x88\x19\x98Z[\x19Y`j\x1B`\x84\x82\x01R`\xA4\x01a\x06$V[PPPV[\x82`\x01`\x01`\xA0\x1B\x03\x16a\x18{\x83\x83a!\xBFV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x18bW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FEIP1271SignatureUtils.checkSigna`D\x82\x01R\x7Fture_EIP1271: signature not from`d\x82\x01Rf\x109\xB4\xB3\xB72\xB9`\xC9\x1B`\x84\x82\x01R`\xA4\x01a\x06$V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\xD1` R`@\x81 T\x84\x90`\xFF\x16a\x19\xADW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`M`$\x82\x01R\x7FStrategyManager.onlyStrategiesWh`D\x82\x01R\x7FitelistedForDeposit: strategy no`d\x82\x01Rl\x1D\x08\x1D\xDA\x1A]\x19[\x1A\\\xDD\x19Y`\x9A\x1B`\x84\x82\x01R`\xA4\x01a\x06$V[a\x19\xC2`\x01`\x01`\xA0\x1B\x03\x85\x163\x87\x86a!\xE3V[`@Qc\x11\xF9\xFB\xC9`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R`$\x82\x01\x85\x90R\x86\x16\x90cG\xE7\xEF$\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x1A\x11W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A5\x91\x90a0\xB1V[\x91Pa\x1AC\x86\x85\x87\x85a\x1DLV[`@Qc\x14R\xB9\xD7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x87\x81\x16`\x04\x83\x01R\x86\x81\x16`$\x83\x01R`D\x82\x01\x84\x90R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c(\xA5s\xAE\x90`d\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1A\xB5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1A\xC9W=`\0\x80>=`\0\xFD[PPPPP\x94\x93PPPPV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R\x82\x15\x15` \x82\x01R\x7Fw\xD90\xDFI7y4s\xA9P$\xD8z\x98\xFD,\xCB\x9E\x92\xD3\xC2F;=\xAC\xD6]>jW\x86\x91\x01`@Q\x80\x91\x03\x90\xA1`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16`\0\x90\x81R`\xD3` R`@\x90 \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90UV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x0BwW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06$V[`3\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[`\0\x81a\x1CeW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FStrategyManager._removeShares: s`D\x82\x01R\x7FhareAmount should not be zero!\0\0`d\x82\x01R`\x84\x01a\x06$V[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\xCD` \x90\x81R`@\x80\x83 \x93\x87\x16\x83R\x92\x90R T\x80\x83\x11\x15a\x1C\xF7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FStrategyManager._removeShares: s`D\x82\x01Rr\r\x0C.L\xA8-\xAD\xEE\xAD\xCE\x84\x0E\x8D\xED\xE4\r\r,\xED`k\x1B`d\x82\x01R`\x84\x01a\x06$V[`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\0\x90\x81R`\xCD` \x90\x81R`@\x80\x83 \x93\x88\x16\x83R\x92\x90R \x83\x82\x03\x90\x81\x90U\x90\x83\x14\x15a\x1D?Wa\x1D5\x85\x85a\"=V[`\x01\x91PPa\x1DEV[`\0\x91PP[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x84\x16a\x1D\xC8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`9`$\x82\x01R\x7FStrategyManager._addShares: stak`D\x82\x01R\x7Fer cannot be zero address\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06$V[\x80a\x1E4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`6`$\x82\x01R\x7FStrategyManager._addShares: shar`D\x82\x01Rues should not be zero!`P\x1B`d\x82\x01R`\x84\x01a\x06$V[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\xCD` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R Ta\x1FEW`\x01`\x01`\xA0\x1B\x03\x84\x16`\0\x90\x81R`\xCE` \x90\x81R`@\x90\x91 T\x10a\x1F\x06W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`P`$\x82\x01R\x7FStrategyManager._addShares: depo`D\x82\x01R\x7Fsit would exceed MAX_STAKER_STRA`d\x82\x01Ro\n\x88\xA8\xEB+\xE9\x89*j\x8B\xE9\x88\xA9\xC8\xEA\x89`\x83\x1B`\x84\x82\x01R`\xA4\x01a\x06$V[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x90\x81R`\xCE` \x90\x81R`@\x82 \x80T`\x01\x81\x01\x82U\x90\x83R\x91 \x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x91\x84\x16\x91\x90\x91\x17\x90U[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\xCD` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 \x80T\x83\x92\x90a\x1F|\x90\x84\x90a0\xE0V[\x90\x91UPP`@\x80Q`\x01`\x01`\xA0\x1B\x03\x86\x81\x16\x82R\x85\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R``\x81\x01\x83\x90R\x90Q\x7F|\xFF\xF9\x08\xA4\xB5\x83\xF3d0\xB2]u\x96LE\x8D\x8E\xDE\x8A\x99\xBDa\xBEu\x0E\x97\xEE\x1B/:\x96\x91\x81\x90\x03`\x80\x01\x90\xA1PPPPV[`\xCBT`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7FBd'^Y9U\xFF\x9DaF\xA5\x1AE%\xF6\xDD\xAC\xE2\xE8\x1D\xB99\x1A\xBC\xC9\xD1\xCAH\x04})\x91\x01`@Q\x80\x91\x03\x90\xA1`\xCB\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`@\x80Q\x80\x82\x01\x82R`\n\x81Ri\"\xB4\xB3\xB2\xB7&0\xBC\xB2\xB9`\xB1\x1B` \x91\x82\x01R\x81Q\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x81\x83\x01R\x7Fq\xB6%\xCF\xADD\xBA\xC6;\x13\xDB\xA0\x7F.\x1D`\x84\xEE\x04\xB6\xF8u!\x01\xEC\xE6\x12mXN\xE6\xEA\x81\x84\x01RF``\x82\x01R0`\x80\x80\x83\x01\x91\x90\x91R\x83Q\x80\x83\x03\x90\x91\x01\x81R`\xA0\x90\x91\x01\x90\x92R\x81Q\x91\x01 \x90V[`\x97T`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a \xFAWP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a!|W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FPausable._initializePauser: _ini`D\x82\x01R\x7FtializePauser() can only be call`d\x82\x01Rfed once`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\x06$V[`\x98\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2a\n\x9A\x82a\x16QV[`\0\x80`\0a!\xCE\x85\x85a$/V[\x91P\x91Pa!\xDB\x81a$\x9FV[P\x93\x92PPPV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`$\x83\x01R\x84\x16`D\x82\x01R`d\x80\x82\x01\x84\x90R\x82Q\x80\x83\x03\x90\x91\x01\x81R`\x84\x90\x91\x01\x90\x91R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c#\xB8r\xDD`\xE0\x1B\x17\x90Ra\x0B\xCC\x90\x85\x90a&ZV[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\xCE` R`@\x81 T\x90[\x81\x81\x10\x15a#XW`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x90\x81R`\xCE` R`@\x90 \x80T\x91\x85\x16\x91\x83\x90\x81\x10a\"\x8FWa\"\x8Fa/\xE3V[`\0\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a#PW`\x01`\x01`\xA0\x1B\x03\x84\x16`\0\x90\x81R`\xCE` R`@\x90 \x80Ta\"\xD0\x90`\x01\x90a0\xF8V[\x81T\x81\x10a\"\xE0Wa\"\xE0a/\xE3V[`\0\x91\x82R` \x80\x83 \x90\x91\x01T`\x01`\x01`\xA0\x1B\x03\x87\x81\x16\x84R`\xCE\x90\x92R`@\x90\x92 \x80T\x91\x90\x92\x16\x91\x90\x83\x90\x81\x10a#\x1DWa#\x1Da/\xE3V[\x90`\0R` `\0 \x01`\0a\x01\0\n\x81T\x81`\x01`\x01`\xA0\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`\xA0\x1B\x03\x16\x02\x17\x90UPa#XV[`\x01\x01a\"XV[\x81\x81\x14\x15a#\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FStrategyManager._removeStrategyF`D\x82\x01R\x7FromStakerStrategyList: strategy `d\x82\x01Rh\x1B\x9B\xDD\x08\x19\x9B\xDD[\x99`\xBA\x1B`\x84\x82\x01R`\xA4\x01a\x06$V[`\x01`\x01`\xA0\x1B\x03\x84\x16`\0\x90\x81R`\xCE` R`@\x90 \x80T\x80a$\x07Wa$\x07a1\x0FV[`\0\x82\x81R` \x90 \x81\x01`\0\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90UPPPPV[`\0\x80\x82Q`A\x14\x15a$fW` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1Aa$Z\x87\x82\x85\x85a',V[\x94P\x94PPPPa$\x98V[\x82Q`@\x14\x15a$\x90W` \x83\x01Q`@\x84\x01Qa$\x85\x86\x83\x83a(\x19V[\x93P\x93PPPa$\x98V[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15a$\xB3Wa$\xB3a1%V[\x14\x15a$\xBCWPV[`\x01\x81`\x04\x81\x11\x15a$\xD0Wa$\xD0a1%V[\x14\x15a%\x1EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FECDSA: invalid signature\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06$V[`\x02\x81`\x04\x81\x11\x15a%2Wa%2a1%V[\x14\x15a%\x80W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\x06$V[`\x03\x81`\x04\x81\x11\x15a%\x94Wa%\x94a1%V[\x14\x15a%\xEDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 's' val`D\x82\x01Raue`\xF0\x1B`d\x82\x01R`\x84\x01a\x06$V[`\x04\x81`\x04\x81\x11\x15a&\x01Wa&\x01a1%V[\x14\x15a\x066W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 'v' val`D\x82\x01Raue`\xF0\x1B`d\x82\x01R`\x84\x01a\x06$V[`\0a&\xAF\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7FSafeERC20: low-level call failed\x81RP\x85`\x01`\x01`\xA0\x1B\x03\x16a(R\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80Q\x90\x91P\x15a\x18bW\x80\x80` \x01\x90Q\x81\x01\x90a&\xCD\x91\x90a.\xB6V[a\x18bW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`*`$\x82\x01R\x7FSafeERC20: ERC20 operation did n`D\x82\x01Ri\x1B\xDD\x08\x1C\xDDX\xD8\xD9YY`\xB2\x1B`d\x82\x01R`\x84\x01a\x06$V[`\0\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x83\x11\x15a'cWP`\0\x90P`\x03a(\x10V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15a'{WP\x84`\xFF\x16`\x1C\x14\x15[\x15a'\x8CWP`\0\x90P`\x04a(\x10V[`@\x80Q`\0\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a'\xE0W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16a(\tW`\0`\x01\x92P\x92PPa(\x10V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81a(6`\xFF\x86\x90\x1C`\x1Ba0\xE0V[\x90Pa(D\x87\x82\x88\x85a',V[\x93P\x93PPP\x93P\x93\x91PPV[``a(a\x84\x84`\0\x85a(iV[\x94\x93PPPPV[``\x82G\x10\x15a(\xCAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FAddress: insufficient balance fo`D\x82\x01Re\x1C\x88\x18\xD8[\x1B`\xD2\x1B`d\x82\x01R`\x84\x01a\x06$V[`\x01`\x01`\xA0\x1B\x03\x85\x16;a)!W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01a\x06$V[`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa)=\x91\x90a1;V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a)zW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a)\x7FV[``\x91P[P\x91P\x91Pa)\x8F\x82\x82\x86a)\x9AV[\x97\x96PPPPPPPV[``\x83\x15a)\xA9WP\x81a\x1DEV[\x82Q\x15a)\xB9W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06$\x91\x90a1WV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x066W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a)\xFAW`\0\x80\xFD[\x815a\x1DE\x81a)\xD3V[`\0` \x82\x84\x03\x12\x15a*\x17W`\0\x80\xFD[P5\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x80`\0\x80`\0\x80`\xC0\x87\x89\x03\x12\x15a*MW`\0\x80\xFD[\x865a*X\x81a)\xD3V[\x95P` \x87\x015a*h\x81a)\xD3V[\x94P`@\x87\x015\x93P``\x87\x015a*\x7F\x81a)\xD3V[\x92P`\x80\x87\x015\x91P`\xA0\x87\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a*\xA3W`\0\x80\xFD[\x81\x89\x01\x91P\x89`\x1F\x83\x01\x12a*\xB7W`\0\x80\xFD[\x815\x81\x81\x11\x15a*\xC9Wa*\xC9a*\x1EV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a*\xF1Wa*\xF1a*\x1EV[\x81`@R\x82\x81R\x8C` \x84\x87\x01\x01\x11\x15a+\nW`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0` \x84\x83\x01\x01R\x80\x95PPPPPP\x92\x95P\x92\x95P\x92\x95V[\x80\x15\x15\x81\x14a\x066W`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a+PW`\0\x80\xFD[\x825a+[\x81a)\xD3V[\x91P` \x83\x015a+k\x81a+/V[\x80\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a+\x88W`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14a\x1DEW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a+\xACW`\0\x80\xFD[\x825a+\xB7\x81a)\xD3V[\x91P` \x83\x015a+k\x81a)\xD3V[`\0\x80`\0``\x84\x86\x03\x12\x15a+\xDCW`\0\x80\xFD[\x835a+\xE7\x81a)\xD3V[\x92P` \x84\x015a+\xF7\x81a)\xD3V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`@\x80\x82R\x83Q\x90\x82\x01\x81\x90R`\0\x90` \x90``\x84\x01\x90\x82\x87\x01\x84[\x82\x81\x10\x15a,JW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x84R\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a,%V[PPP\x83\x81\x03\x82\x85\x01R\x84Q\x80\x82R\x85\x83\x01\x91\x83\x01\x90`\0[\x81\x81\x10\x15a,\x7FW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a,cV[P\x90\x97\x96PPPPPPPV[`\0\x80\x83`\x1F\x84\x01\x12a,\x9EW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a,\xB6W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a$\x98W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a,\xE4W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a,\xFBW`\0\x80\xFD[a-\x07\x85\x82\x86\x01a,\x8CV[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a-)W`\0\x80\xFD[\x845a-4\x81a)\xD3V[\x93P` \x85\x015a-D\x81a)\xD3V[\x92P`@\x85\x015a-T\x81a)\xD3V[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a-zW`\0\x80\xFD[\x845a-\x85\x81a)\xD3V[\x93P` \x85\x015a-\x95\x81a)\xD3V[\x92P`@\x85\x015\x91P``\x85\x015a-\xAC\x81a)\xD3V[\x93\x96\x92\x95P\x90\x93PPV[`\0\x80`@\x83\x85\x03\x12\x15a-\xCAW`\0\x80\xFD[\x825a-\xD5\x81a)\xD3V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a-\xF9W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a.\x11W`\0\x80\xFD[a.\x1D\x88\x83\x89\x01a,\x8CV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a.6W`\0\x80\xFD[Pa.C\x87\x82\x88\x01a,\x8CV[\x95\x98\x94\x97P\x95PPPPV[`\0` \x82\x84\x03\x12\x15a.aW`\0\x80\xFD[\x81Qa\x1DE\x81a)\xD3V[` \x80\x82R`*\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Ri9\x90:\xB780\xBA\xB9\xB2\xB9`\xB1\x1B``\x82\x01R`\x80\x01\x90V[`\0` \x82\x84\x03\x12\x15a.\xC8W`\0\x80\xFD[\x81Qa\x1DE\x81a+/V[` \x80\x82R`(\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Rg9\x9080\xBA\xB9\xB2\xB9`\xC1\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`D\x90\x82\x01R\x7FStrategyManager.onlyStrategyWhit`@\x82\x01R\x7Felister: not the strategyWhiteli``\x82\x01Rc9\xBA2\xB9`\xE1\x1B`\x80\x82\x01R`\xA0\x01\x90V[` \x80\x82R`@\x90\x82\x01\x81\x90R\x7FStrategyManager.onlyDelegationMa\x90\x82\x01R\x7Fnager: not the DelegationManager``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a0\x0BW`\0\x80\xFD[\x815a\x1DE\x81a+/V[`\0[\x83\x81\x10\x15a01W\x81\x81\x01Q\x83\x82\x01R` \x01a0\x19V[\x83\x81\x11\x15a\x0B\xCCWPP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra0Z\x81` \x86\x01` \x86\x01a0\x16V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[\x82\x81R`@` \x82\x01R`\0a(a`@\x83\x01\x84a0BV[`\0` \x82\x84\x03\x12\x15a0\x99W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x1DEW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a0\xC3W`\0\x80\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82\x19\x82\x11\x15a0\xF3Wa0\xF3a0\xCAV[P\x01\x90V[`\0\x82\x82\x10\x15a1\nWa1\na0\xCAV[P\x03\x90V[cNH{q`\xE0\x1B`\0R`1`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`\0\x82Qa1M\x81\x84` \x87\x01a0\x16V[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0a\x1DE` \x83\x01\x84a0BV\xFE\xA2dipfsX\"\x12 \xD1\x80\xDFeg$\xCDd\x94\x14T\xEB\x811\x8C(\xEC\x9C7Q\xAE\xEA\x87I(\xC7\xA6LF\xA9)xdsolcC\0\x08\x0C\x003", + ); + /**Event with signature `Deposit(address,address,address,uint256)` and selector `0x7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a96`. + ```solidity + event Deposit(address staker, address token, address strategy, uint256 shares); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Deposit { + #[allow(missing_docs)] + pub staker: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub token: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub strategy: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub shares: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Deposit { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "Deposit(address,address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 124u8, 255u8, 249u8, 8u8, 164u8, 181u8, 131u8, 243u8, 100u8, 48u8, 178u8, 93u8, + 117u8, 150u8, 76u8, 69u8, 141u8, 142u8, 222u8, 138u8, 153u8, 189u8, 97u8, + 190u8, 117u8, 14u8, 151u8, 238u8, 27u8, 47u8, 58u8, 150u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + staker: data.0, + token: data.1, + strategy: data.2, + shares: data.3, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.staker, + ), + ::tokenize( + &self.token, + ), + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.shares, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Deposit { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Deposit> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Deposit) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`. + ```solidity + event Initialized(uint8 version); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Initialized { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "Initialized(uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, + 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, + 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { version: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.version, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Initialized { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Initialized> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Initialized) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. + ```solidity + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub previousOwner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, + 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, + 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + previousOwner: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.previousOwner.clone(), + self.newOwner.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.previousOwner, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Paused(address,uint256)` and selector `0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d`. + ```solidity + event Paused(address indexed account, uint256 newPausedStatus); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Paused { + #[allow(missing_docs)] + pub account: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Paused { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Paused(address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8, 188u8, + 152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8, 11u8, 182u8, + 224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + account: topics.1, + newPausedStatus: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.account.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.account, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Paused { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Paused> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Paused) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `PauserRegistrySet(address,address)` and selector `0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6`. + ```solidity + event PauserRegistrySet(address pauserRegistry, address newPauserRegistry); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct PauserRegistrySet { + #[allow(missing_docs)] + pub pauserRegistry: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newPauserRegistry: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for PauserRegistrySet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "PauserRegistrySet(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 110u8, 159u8, 205u8, 83u8, 152u8, 150u8, 252u8, 166u8, 14u8, 139u8, 15u8, 1u8, + 221u8, 88u8, 2u8, 51u8, 228u8, 138u8, 107u8, 15u8, 125u8, 240u8, 19u8, 184u8, + 155u8, 167u8, 245u8, 101u8, 134u8, 154u8, 205u8, 182u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + pauserRegistry: data.0, + newPauserRegistry: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.pauserRegistry, + ), + ::tokenize( + &self.newPauserRegistry, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for PauserRegistrySet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&PauserRegistrySet> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &PauserRegistrySet) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `StrategyAddedToDepositWhitelist(address)` and selector `0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe`. + ```solidity + event StrategyAddedToDepositWhitelist(address strategy); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct StrategyAddedToDepositWhitelist { + #[allow(missing_docs)] + pub strategy: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for StrategyAddedToDepositWhitelist { + type DataTuple<'a> = (alloy::sol_types::sol_data::Address,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "StrategyAddedToDepositWhitelist(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 12u8, 53u8, 177u8, 125u8, 145u8, 201u8, 110u8, 178u8, 117u8, 28u8, 212u8, 86u8, + 225u8, 37u8, 47u8, 66u8, 163u8, 134u8, 229u8, 36u8, 239u8, 159u8, 242u8, 110u8, + 204u8, 153u8, 80u8, 133u8, 159u8, 220u8, 4u8, 254u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { strategy: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.strategy, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for StrategyAddedToDepositWhitelist { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&StrategyAddedToDepositWhitelist> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &StrategyAddedToDepositWhitelist) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `StrategyRemovedFromDepositWhitelist(address)` and selector `0x4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030`. + ```solidity + event StrategyRemovedFromDepositWhitelist(address strategy); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct StrategyRemovedFromDepositWhitelist { + #[allow(missing_docs)] + pub strategy: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for StrategyRemovedFromDepositWhitelist { + type DataTuple<'a> = (alloy::sol_types::sol_data::Address,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "StrategyRemovedFromDepositWhitelist(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 64u8, 116u8, 65u8, 59u8, 75u8, 68u8, 62u8, 78u8, 88u8, 1u8, 159u8, 40u8, 85u8, + 168u8, 118u8, 81u8, 19u8, 53u8, 140u8, 124u8, 114u8, 227u8, 149u8, 9u8, 198u8, + 175u8, 69u8, 252u8, 15u8, 91u8, 160u8, 48u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { strategy: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.strategy, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for StrategyRemovedFromDepositWhitelist { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&StrategyRemovedFromDepositWhitelist> for alloy_sol_types::private::LogData { + #[inline] + fn from( + this: &StrategyRemovedFromDepositWhitelist, + ) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `StrategyWhitelisterChanged(address,address)` and selector `0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29`. + ```solidity + event StrategyWhitelisterChanged(address previousAddress, address newAddress); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct StrategyWhitelisterChanged { + #[allow(missing_docs)] + pub previousAddress: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newAddress: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for StrategyWhitelisterChanged { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "StrategyWhitelisterChanged(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 66u8, 100u8, 39u8, 94u8, 89u8, 57u8, 85u8, 255u8, 157u8, 97u8, 70u8, 165u8, + 26u8, 69u8, 37u8, 246u8, 221u8, 172u8, 226u8, 232u8, 29u8, 185u8, 57u8, 26u8, + 188u8, 201u8, 209u8, 202u8, 72u8, 4u8, 125u8, 41u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + previousAddress: data.0, + newAddress: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.previousAddress, + ), + ::tokenize( + &self.newAddress, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for StrategyWhitelisterChanged { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&StrategyWhitelisterChanged> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &StrategyWhitelisterChanged) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Unpaused(address,uint256)` and selector `0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c`. + ```solidity + event Unpaused(address indexed account, uint256 newPausedStatus); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Unpaused { + #[allow(missing_docs)] + pub account: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Unpaused { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Unpaused(address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8, 2u8, + 188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8, 228u8, 152u8, + 107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + account: topics.1, + newPausedStatus: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.account.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.account, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Unpaused { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Unpaused> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Unpaused) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `UpdatedThirdPartyTransfersForbidden(address,bool)` and selector `0x77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786`. + ```solidity + event UpdatedThirdPartyTransfersForbidden(address strategy, bool value); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct UpdatedThirdPartyTransfersForbidden { + #[allow(missing_docs)] + pub strategy: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub value: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for UpdatedThirdPartyTransfersForbidden { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "UpdatedThirdPartyTransfersForbidden(address,bool)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 119u8, 217u8, 48u8, 223u8, 73u8, 55u8, 121u8, 52u8, 115u8, 169u8, 80u8, 36u8, + 216u8, 122u8, 152u8, 253u8, 44u8, 203u8, 158u8, 146u8, 211u8, 194u8, 70u8, + 59u8, 61u8, 172u8, 214u8, 93u8, 62u8, 106u8, 87u8, 134u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + strategy: data.0, + value: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.strategy, + ), + ::tokenize( + &self.value, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for UpdatedThirdPartyTransfersForbidden { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&UpdatedThirdPartyTransfersForbidden> for alloy_sol_types::private::LogData { + #[inline] + fn from( + this: &UpdatedThirdPartyTransfersForbidden, + ) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. + ```solidity + constructor(address _delegation, address _eigenPodManager, address _slasher); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _delegation: alloy::sol_types::private::Address, + pub _eigenPodManager: alloy::sol_types::private::Address, + pub _slasher: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value._delegation, value._eigenPodManager, value._slasher) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _delegation: tuple.0, + _eigenPodManager: tuple.1, + _slasher: tuple.2, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._delegation, + ), + ::tokenize( + &self._eigenPodManager, + ), + ::tokenize( + &self._slasher, + ), + ) + } + } + }; + /**Function with signature `DEPOSIT_TYPEHASH()` and selector `0x48825e94`. + ```solidity + function DEPOSIT_TYPEHASH() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DEPOSIT_TYPEHASHCall {} + ///Container type for the return parameters of the [`DEPOSIT_TYPEHASH()`](DEPOSIT_TYPEHASHCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DEPOSIT_TYPEHASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DEPOSIT_TYPEHASHCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DEPOSIT_TYPEHASHCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DEPOSIT_TYPEHASHReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DEPOSIT_TYPEHASHReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for DEPOSIT_TYPEHASHCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = DEPOSIT_TYPEHASHReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "DEPOSIT_TYPEHASH()"; + const SELECTOR: [u8; 4] = [72u8, 130u8, 94u8, 148u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `DOMAIN_TYPEHASH()` and selector `0x20606b70`. + ```solidity + function DOMAIN_TYPEHASH() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DOMAIN_TYPEHASHCall {} + ///Container type for the return parameters of the [`DOMAIN_TYPEHASH()`](DOMAIN_TYPEHASHCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DOMAIN_TYPEHASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DOMAIN_TYPEHASHCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DOMAIN_TYPEHASHCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DOMAIN_TYPEHASHReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DOMAIN_TYPEHASHReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for DOMAIN_TYPEHASHCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = DOMAIN_TYPEHASHReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "DOMAIN_TYPEHASH()"; + const SELECTOR: [u8; 4] = [32u8, 96u8, 107u8, 112u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `addShares(address,address,address,uint256)` and selector `0xc4623ea1`. + ```solidity + function addShares(address staker, address token, address strategy, uint256 shares) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct addSharesCall { + pub staker: alloy::sol_types::private::Address, + pub token: alloy::sol_types::private::Address, + pub strategy: alloy::sol_types::private::Address, + pub shares: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`addShares(address,address,address,uint256)`](addSharesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct addSharesReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: addSharesCall) -> Self { + (value.staker, value.token, value.strategy, value.shares) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for addSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + staker: tuple.0, + token: tuple.1, + strategy: tuple.2, + shares: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: addSharesReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for addSharesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for addSharesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = addSharesReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "addShares(address,address,address,uint256)"; + const SELECTOR: [u8; 4] = [196u8, 98u8, 62u8, 161u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.staker, + ), + ::tokenize( + &self.token, + ), + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.shares, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `addStrategiesToDepositWhitelist(address[],bool[])` and selector `0xdf5b3547`. + ```solidity + function addStrategiesToDepositWhitelist(address[] memory strategiesToWhitelist, bool[] memory thirdPartyTransfersForbiddenValues) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct addStrategiesToDepositWhitelistCall { + pub strategiesToWhitelist: + alloy::sol_types::private::Vec, + pub thirdPartyTransfersForbiddenValues: alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`addStrategiesToDepositWhitelist(address[],bool[])`](addStrategiesToDepositWhitelistCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct addStrategiesToDepositWhitelistReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: addStrategiesToDepositWhitelistCall) -> Self { + ( + value.strategiesToWhitelist, + value.thirdPartyTransfersForbiddenValues, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for addStrategiesToDepositWhitelistCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategiesToWhitelist: tuple.0, + thirdPartyTransfersForbiddenValues: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: addStrategiesToDepositWhitelistReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for addStrategiesToDepositWhitelistReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for addStrategiesToDepositWhitelistCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = addStrategiesToDepositWhitelistReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "addStrategiesToDepositWhitelist(address[],bool[])"; + const SELECTOR: [u8; 4] = [223u8, 91u8, 53u8, 71u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.strategiesToWhitelist, + ), + as alloy_sol_types::SolType>::tokenize( + &self.thirdPartyTransfersForbiddenValues, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `delegation()` and selector `0xdf5cf723`. + ```solidity + function delegation() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegationCall {} + ///Container type for the return parameters of the [`delegation()`](delegationCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct delegationReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: delegationReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for delegationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for delegationCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = delegationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "delegation()"; + const SELECTOR: [u8; 4] = [223u8, 92u8, 247u8, 35u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `depositIntoStrategy(address,address,uint256)` and selector `0xe7a050aa`. + ```solidity + function depositIntoStrategy(address strategy, address token, uint256 amount) external returns (uint256 shares); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct depositIntoStrategyCall { + pub strategy: alloy::sol_types::private::Address, + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`depositIntoStrategy(address,address,uint256)`](depositIntoStrategyCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct depositIntoStrategyReturn { + pub shares: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: depositIntoStrategyCall) -> Self { + (value.strategy, value.token, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for depositIntoStrategyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategy: tuple.0, + token: tuple.1, + amount: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: depositIntoStrategyReturn) -> Self { + (value.shares,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for depositIntoStrategyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { shares: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for depositIntoStrategyCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = depositIntoStrategyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "depositIntoStrategy(address,address,uint256)"; + const SELECTOR: [u8; 4] = [231u8, 160u8, 80u8, 170u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.strategy, + ), + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize( + &self.amount, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `depositIntoStrategyWithSignature(address,address,uint256,address,uint256,bytes)` and selector `0x32e89ace`. + ```solidity + function depositIntoStrategyWithSignature(address strategy, address token, uint256 amount, address staker, uint256 expiry, bytes memory signature) external returns (uint256 shares); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct depositIntoStrategyWithSignatureCall { + pub strategy: alloy::sol_types::private::Address, + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::primitives::aliases::U256, + pub staker: alloy::sol_types::private::Address, + pub expiry: alloy::sol_types::private::primitives::aliases::U256, + pub signature: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`depositIntoStrategyWithSignature(address,address,uint256,address,uint256,bytes)`](depositIntoStrategyWithSignatureCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct depositIntoStrategyWithSignatureReturn { + pub shares: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: depositIntoStrategyWithSignatureCall) -> Self { + ( + value.strategy, + value.token, + value.amount, + value.staker, + value.expiry, + value.signature, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for depositIntoStrategyWithSignatureCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategy: tuple.0, + token: tuple.1, + amount: tuple.2, + staker: tuple.3, + expiry: tuple.4, + signature: tuple.5, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: depositIntoStrategyWithSignatureReturn) -> Self { + (value.shares,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for depositIntoStrategyWithSignatureReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { shares: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for depositIntoStrategyWithSignatureCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = depositIntoStrategyWithSignatureReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "depositIntoStrategyWithSignature(address,address,uint256,address,uint256,bytes)"; + const SELECTOR: [u8; 4] = [50u8, 232u8, 154u8, 206u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.strategy, + ), + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize( + &self.amount, + ), + ::tokenize( + &self.staker, + ), + as alloy_sol_types::SolType>::tokenize( + &self.expiry, + ), + ::tokenize( + &self.signature, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `domainSeparator()` and selector `0xf698da25`. + ```solidity + function domainSeparator() external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct domainSeparatorCall {} + ///Container type for the return parameters of the [`domainSeparator()`](domainSeparatorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct domainSeparatorReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: domainSeparatorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for domainSeparatorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: domainSeparatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for domainSeparatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for domainSeparatorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = domainSeparatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "domainSeparator()"; + const SELECTOR: [u8; 4] = [246u8, 152u8, 218u8, 37u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `eigenPodManager()` and selector `0x4665bcda`. + ```solidity + function eigenPodManager() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct eigenPodManagerCall {} + ///Container type for the return parameters of the [`eigenPodManager()`](eigenPodManagerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct eigenPodManagerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: eigenPodManagerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for eigenPodManagerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: eigenPodManagerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for eigenPodManagerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for eigenPodManagerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = eigenPodManagerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "eigenPodManager()"; + const SELECTOR: [u8; 4] = [70u8, 101u8, 188u8, 218u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getDeposits(address)` and selector `0x94f649dd`. + ```solidity + function getDeposits(address staker) external view returns (address[] memory, uint256[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getDepositsCall { + pub staker: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`getDeposits(address)`](getDepositsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getDepositsReturn { + pub _0: alloy::sol_types::private::Vec, + pub _1: + alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getDepositsCall) -> Self { + (value.staker,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getDepositsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { staker: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getDepositsReturn) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getDepositsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getDepositsCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getDepositsReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getDeposits(address)"; + const SELECTOR: [u8; 4] = [148u8, 246u8, 73u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.staker, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `initialize(address,address,address,uint256)` and selector `0xcf756fdf`. + ```solidity + function initialize(address initialOwner, address initialStrategyWhitelister, address _pauserRegistry, uint256 initialPausedStatus) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeCall { + pub initialOwner: alloy::sol_types::private::Address, + pub initialStrategyWhitelister: alloy::sol_types::private::Address, + pub _pauserRegistry: alloy::sol_types::private::Address, + pub initialPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`initialize(address,address,address,uint256)`](initializeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeCall) -> Self { + ( + value.initialOwner, + value.initialStrategyWhitelister, + value._pauserRegistry, + value.initialPausedStatus, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + initialOwner: tuple.0, + initialStrategyWhitelister: tuple.1, + _pauserRegistry: tuple.2, + initialPausedStatus: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for initializeCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = initializeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "initialize(address,address,address,uint256)"; + const SELECTOR: [u8; 4] = [207u8, 117u8, 111u8, 223u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.initialOwner, + ), + ::tokenize( + &self.initialStrategyWhitelister, + ), + ::tokenize( + &self._pauserRegistry, + ), + as alloy_sol_types::SolType>::tokenize( + &self.initialPausedStatus, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `nonces(address)` and selector `0x7ecebe00`. + ```solidity + function nonces(address) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct noncesCall { + pub _0: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`nonces(address)`](noncesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct noncesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: noncesCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for noncesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: noncesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for noncesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for noncesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = noncesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "nonces(address)"; + const SELECTOR: [u8; 4] = [126u8, 206u8, 190u8, 0u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. + ```solidity + function owner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pause(uint256)` and selector `0x136439dd`. + ```solidity + function pause(uint256 newPausedStatus) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseCall { + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`pause(uint256)`](pauseCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseCall) -> Self { + (value.newPausedStatus,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newPausedStatus: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauseCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pauseReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pause(uint256)"; + const SELECTOR: [u8; 4] = [19u8, 100u8, 57u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pauseAll()` and selector `0x595c6a67`. + ```solidity + function pauseAll() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseAllCall {} + ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauseAllReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseAllCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseAllCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauseAllReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauseAllReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauseAllCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pauseAllReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pauseAll()"; + const SELECTOR: [u8; 4] = [89u8, 92u8, 106u8, 103u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `paused(uint8)` and selector `0x5ac86ab7`. + ```solidity + function paused(uint8 index) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_0Call { + pub index: u8, + } + ///Container type for the return parameters of the [`paused(uint8)`](paused_0Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_0Return { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_0Call) -> Self { + (value.index,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_0Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { index: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_0Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_0Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for paused_0Call { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = paused_0Return; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "paused(uint8)"; + const SELECTOR: [u8; 4] = [90u8, 200u8, 106u8, 183u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `paused()` and selector `0x5c975abb`. + ```solidity + function paused() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_1Call {} + ///Container type for the return parameters of the [`paused()`](paused_1Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct paused_1Return { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_1Call) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: paused_1Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for paused_1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for paused_1Call { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = paused_1Return; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "paused()"; + const SELECTOR: [u8; 4] = [92u8, 151u8, 90u8, 187u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pauserRegistry()` and selector `0x886f1195`. + ```solidity + function pauserRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauserRegistryCall {} + ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct pauserRegistryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauserRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauserRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: pauserRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for pauserRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauserRegistryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = pauserRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pauserRegistry()"; + const SELECTOR: [u8; 4] = [136u8, 111u8, 17u8, 149u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `removeShares(address,address,uint256)` and selector `0x8c80d4e5`. + ```solidity + function removeShares(address staker, address strategy, uint256 shares) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct removeSharesCall { + pub staker: alloy::sol_types::private::Address, + pub strategy: alloy::sol_types::private::Address, + pub shares: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`removeShares(address,address,uint256)`](removeSharesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct removeSharesReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: removeSharesCall) -> Self { + (value.staker, value.strategy, value.shares) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for removeSharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + staker: tuple.0, + strategy: tuple.1, + shares: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: removeSharesReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for removeSharesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for removeSharesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = removeSharesReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "removeShares(address,address,uint256)"; + const SELECTOR: [u8; 4] = [140u8, 128u8, 212u8, 229u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.staker, + ), + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.shares, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `removeStrategiesFromDepositWhitelist(address[])` and selector `0xb5d8b5b8`. + ```solidity + function removeStrategiesFromDepositWhitelist(address[] memory strategiesToRemoveFromWhitelist) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct removeStrategiesFromDepositWhitelistCall { + pub strategiesToRemoveFromWhitelist: + alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`removeStrategiesFromDepositWhitelist(address[])`](removeStrategiesFromDepositWhitelistCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct removeStrategiesFromDepositWhitelistReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: removeStrategiesFromDepositWhitelistCall) -> Self { + (value.strategiesToRemoveFromWhitelist,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for removeStrategiesFromDepositWhitelistCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategiesToRemoveFromWhitelist: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: removeStrategiesFromDepositWhitelistReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for removeStrategiesFromDepositWhitelistReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for removeStrategiesFromDepositWhitelistCall { + type Parameters<'a> = + (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = removeStrategiesFromDepositWhitelistReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "removeStrategiesFromDepositWhitelist(address[])"; + const SELECTOR: [u8; 4] = [181u8, 216u8, 181u8, 184u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( as alloy_sol_types::SolType>::tokenize( + &self.strategiesToRemoveFromWhitelist, + ),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `renounceOwnership()` and selector `0x715018a6`. + ```solidity + function renounceOwnership() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct renounceOwnershipCall {} + ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct renounceOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for renounceOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for renounceOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for renounceOwnershipCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = renounceOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "renounceOwnership()"; + const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setPauserRegistry(address)` and selector `0x10d67a2f`. + ```solidity + function setPauserRegistry(address newPauserRegistry) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setPauserRegistryCall { + pub newPauserRegistry: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setPauserRegistry(address)`](setPauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setPauserRegistryReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setPauserRegistryCall) -> Self { + (value.newPauserRegistry,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setPauserRegistryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newPauserRegistry: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setPauserRegistryReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setPauserRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setPauserRegistryCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setPauserRegistryReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setPauserRegistry(address)"; + const SELECTOR: [u8; 4] = [16u8, 214u8, 122u8, 47u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newPauserRegistry, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setStrategyWhitelister(address)` and selector `0xc6656702`. + ```solidity + function setStrategyWhitelister(address newStrategyWhitelister) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setStrategyWhitelisterCall { + pub newStrategyWhitelister: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setStrategyWhitelister(address)`](setStrategyWhitelisterCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setStrategyWhitelisterReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setStrategyWhitelisterCall) -> Self { + (value.newStrategyWhitelister,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setStrategyWhitelisterCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newStrategyWhitelister: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setStrategyWhitelisterReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setStrategyWhitelisterReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setStrategyWhitelisterCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setStrategyWhitelisterReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setStrategyWhitelister(address)"; + const SELECTOR: [u8; 4] = [198u8, 101u8, 103u8, 2u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newStrategyWhitelister, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setThirdPartyTransfersForbidden(address,bool)` and selector `0x4e5a4263`. + ```solidity + function setThirdPartyTransfersForbidden(address strategy, bool value) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setThirdPartyTransfersForbiddenCall { + pub strategy: alloy::sol_types::private::Address, + pub value: bool, + } + ///Container type for the return parameters of the [`setThirdPartyTransfersForbidden(address,bool)`](setThirdPartyTransfersForbiddenCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setThirdPartyTransfersForbiddenReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address, bool); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setThirdPartyTransfersForbiddenCall) -> Self { + (value.strategy, value.value) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setThirdPartyTransfersForbiddenCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + strategy: tuple.0, + value: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setThirdPartyTransfersForbiddenReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setThirdPartyTransfersForbiddenReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setThirdPartyTransfersForbiddenCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setThirdPartyTransfersForbiddenReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setThirdPartyTransfersForbidden(address,bool)"; + const SELECTOR: [u8; 4] = [78u8, 90u8, 66u8, 99u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.strategy, + ), + ::tokenize( + &self.value, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `slasher()` and selector `0xb1344271`. + ```solidity + function slasher() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct slasherCall {} + ///Container type for the return parameters of the [`slasher()`](slasherCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct slasherReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: slasherCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for slasherCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: slasherReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for slasherReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for slasherCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = slasherReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "slasher()"; + const SELECTOR: [u8; 4] = [177u8, 52u8, 66u8, 113u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `stakerStrategyList(address,uint256)` and selector `0xcbc2bd62`. + ```solidity + function stakerStrategyList(address, uint256) external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakerStrategyListCall { + pub _0: alloy::sol_types::private::Address, + pub _1: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`stakerStrategyList(address,uint256)`](stakerStrategyListCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakerStrategyListReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakerStrategyListCall) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakerStrategyListCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakerStrategyListReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakerStrategyListReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for stakerStrategyListCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = stakerStrategyListReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "stakerStrategyList(address,uint256)"; + const SELECTOR: [u8; 4] = [203u8, 194u8, 189u8, 98u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + as alloy_sol_types::SolType>::tokenize( + &self._1, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `stakerStrategyListLength(address)` and selector `0x8b8aac3c`. + ```solidity + function stakerStrategyListLength(address staker) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakerStrategyListLengthCall { + pub staker: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`stakerStrategyListLength(address)`](stakerStrategyListLengthCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakerStrategyListLengthReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakerStrategyListLengthCall) -> Self { + (value.staker,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakerStrategyListLengthCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { staker: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakerStrategyListLengthReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakerStrategyListLengthReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for stakerStrategyListLengthCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = stakerStrategyListLengthReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "stakerStrategyListLength(address)"; + const SELECTOR: [u8; 4] = [139u8, 138u8, 172u8, 60u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.staker, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `stakerStrategyShares(address,address)` and selector `0x7a7e0d92`. + ```solidity + function stakerStrategyShares(address, address) external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakerStrategySharesCall { + pub _0: alloy::sol_types::private::Address, + pub _1: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`stakerStrategyShares(address,address)`](stakerStrategySharesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct stakerStrategySharesReturn { + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakerStrategySharesCall) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakerStrategySharesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: stakerStrategySharesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for stakerStrategySharesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for stakerStrategySharesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = stakerStrategySharesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "stakerStrategyShares(address,address)"; + const SELECTOR: [u8; 4] = [122u8, 126u8, 13u8, 146u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + ::tokenize( + &self._1, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `strategyIsWhitelistedForDeposit(address)` and selector `0x663c1de4`. + ```solidity + function strategyIsWhitelistedForDeposit(address) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyIsWhitelistedForDepositCall { + pub _0: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`strategyIsWhitelistedForDeposit(address)`](strategyIsWhitelistedForDepositCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyIsWhitelistedForDepositReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyIsWhitelistedForDepositCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyIsWhitelistedForDepositCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyIsWhitelistedForDepositReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyIsWhitelistedForDepositReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for strategyIsWhitelistedForDepositCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = strategyIsWhitelistedForDepositReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "strategyIsWhitelistedForDeposit(address)"; + const SELECTOR: [u8; 4] = [102u8, 60u8, 29u8, 228u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `strategyWhitelister()` and selector `0x967fc0d2`. + ```solidity + function strategyWhitelister() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyWhitelisterCall {} + ///Container type for the return parameters of the [`strategyWhitelister()`](strategyWhitelisterCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct strategyWhitelisterReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyWhitelisterCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyWhitelisterCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: strategyWhitelisterReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for strategyWhitelisterReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for strategyWhitelisterCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = strategyWhitelisterReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "strategyWhitelister()"; + const SELECTOR: [u8; 4] = [150u8, 127u8, 192u8, 210u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `thirdPartyTransfersForbidden(address)` and selector `0x9b4da03d`. + ```solidity + function thirdPartyTransfersForbidden(address) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct thirdPartyTransfersForbiddenCall { + pub _0: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`thirdPartyTransfersForbidden(address)`](thirdPartyTransfersForbiddenCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct thirdPartyTransfersForbiddenReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: thirdPartyTransfersForbiddenCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for thirdPartyTransfersForbiddenCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: thirdPartyTransfersForbiddenReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for thirdPartyTransfersForbiddenReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for thirdPartyTransfersForbiddenCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = thirdPartyTransfersForbiddenReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "thirdPartyTransfersForbidden(address)"; + const SELECTOR: [u8; 4] = [155u8, 77u8, 160u8, 61u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. + ```solidity + function transferOwnership(address newOwner) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `unpause(uint256)` and selector `0xfabc1cbc`. + ```solidity + function unpause(uint256 newPausedStatus) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct unpauseCall { + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`unpause(uint256)`](unpauseCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct unpauseReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: unpauseCall) -> Self { + (value.newPausedStatus,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for unpauseCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newPausedStatus: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: unpauseReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for unpauseReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for unpauseCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = unpauseReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "unpause(uint256)"; + const SELECTOR: [u8; 4] = [250u8, 188u8, 28u8, 188u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `withdrawSharesAsTokens(address,address,uint256,address)` and selector `0xc608c7f3`. + ```solidity + function withdrawSharesAsTokens(address recipient, address strategy, uint256 shares, address token) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct withdrawSharesAsTokensCall { + pub recipient: alloy::sol_types::private::Address, + pub strategy: alloy::sol_types::private::Address, + pub shares: alloy::sol_types::private::primitives::aliases::U256, + pub token: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`withdrawSharesAsTokens(address,address,uint256,address)`](withdrawSharesAsTokensCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct withdrawSharesAsTokensReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: withdrawSharesAsTokensCall) -> Self { + (value.recipient, value.strategy, value.shares, value.token) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawSharesAsTokensCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + recipient: tuple.0, + strategy: tuple.1, + shares: tuple.2, + token: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: withdrawSharesAsTokensReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawSharesAsTokensReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for withdrawSharesAsTokensCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = withdrawSharesAsTokensReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "withdrawSharesAsTokens(address,address,uint256,address)"; + const SELECTOR: [u8; 4] = [198u8, 8u8, 199u8, 243u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.recipient, + ), + ::tokenize( + &self.strategy, + ), + as alloy_sol_types::SolType>::tokenize( + &self.shares, + ), + ::tokenize( + &self.token, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`StrategyManager`](self) function calls. + pub enum StrategyManagerCalls { + DEPOSIT_TYPEHASH(DEPOSIT_TYPEHASHCall), + DOMAIN_TYPEHASH(DOMAIN_TYPEHASHCall), + addShares(addSharesCall), + addStrategiesToDepositWhitelist(addStrategiesToDepositWhitelistCall), + delegation(delegationCall), + depositIntoStrategy(depositIntoStrategyCall), + depositIntoStrategyWithSignature(depositIntoStrategyWithSignatureCall), + domainSeparator(domainSeparatorCall), + eigenPodManager(eigenPodManagerCall), + getDeposits(getDepositsCall), + initialize(initializeCall), + nonces(noncesCall), + owner(ownerCall), + pause(pauseCall), + pauseAll(pauseAllCall), + paused_0(paused_0Call), + paused_1(paused_1Call), + pauserRegistry(pauserRegistryCall), + removeShares(removeSharesCall), + removeStrategiesFromDepositWhitelist(removeStrategiesFromDepositWhitelistCall), + renounceOwnership(renounceOwnershipCall), + setPauserRegistry(setPauserRegistryCall), + setStrategyWhitelister(setStrategyWhitelisterCall), + setThirdPartyTransfersForbidden(setThirdPartyTransfersForbiddenCall), + slasher(slasherCall), + stakerStrategyList(stakerStrategyListCall), + stakerStrategyListLength(stakerStrategyListLengthCall), + stakerStrategyShares(stakerStrategySharesCall), + strategyIsWhitelistedForDeposit(strategyIsWhitelistedForDepositCall), + strategyWhitelister(strategyWhitelisterCall), + thirdPartyTransfersForbidden(thirdPartyTransfersForbiddenCall), + transferOwnership(transferOwnershipCall), + unpause(unpauseCall), + withdrawSharesAsTokens(withdrawSharesAsTokensCall), + } + #[automatically_derived] + impl StrategyManagerCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [16u8, 214u8, 122u8, 47u8], + [19u8, 100u8, 57u8, 221u8], + [32u8, 96u8, 107u8, 112u8], + [50u8, 232u8, 154u8, 206u8], + [70u8, 101u8, 188u8, 218u8], + [72u8, 130u8, 94u8, 148u8], + [78u8, 90u8, 66u8, 99u8], + [89u8, 92u8, 106u8, 103u8], + [90u8, 200u8, 106u8, 183u8], + [92u8, 151u8, 90u8, 187u8], + [102u8, 60u8, 29u8, 228u8], + [113u8, 80u8, 24u8, 166u8], + [122u8, 126u8, 13u8, 146u8], + [126u8, 206u8, 190u8, 0u8], + [136u8, 111u8, 17u8, 149u8], + [139u8, 138u8, 172u8, 60u8], + [140u8, 128u8, 212u8, 229u8], + [141u8, 165u8, 203u8, 91u8], + [148u8, 246u8, 73u8, 221u8], + [150u8, 127u8, 192u8, 210u8], + [155u8, 77u8, 160u8, 61u8], + [177u8, 52u8, 66u8, 113u8], + [181u8, 216u8, 181u8, 184u8], + [196u8, 98u8, 62u8, 161u8], + [198u8, 8u8, 199u8, 243u8], + [198u8, 101u8, 103u8, 2u8], + [203u8, 194u8, 189u8, 98u8], + [207u8, 117u8, 111u8, 223u8], + [223u8, 91u8, 53u8, 71u8], + [223u8, 92u8, 247u8, 35u8], + [231u8, 160u8, 80u8, 170u8], + [242u8, 253u8, 227u8, 139u8], + [246u8, 152u8, 218u8, 37u8], + [250u8, 188u8, 28u8, 188u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for StrategyManagerCalls { + const NAME: &'static str = "StrategyManagerCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 34usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::DEPOSIT_TYPEHASH(_) => { + ::SELECTOR + } + Self::DOMAIN_TYPEHASH(_) => { + ::SELECTOR + } + Self::addShares(_) => ::SELECTOR, + Self::addStrategiesToDepositWhitelist(_) => { + ::SELECTOR + } + Self::delegation(_) => ::SELECTOR, + Self::depositIntoStrategy(_) => { + ::SELECTOR + } + Self::depositIntoStrategyWithSignature(_) => { + ::SELECTOR + } + Self::domainSeparator(_) => { + ::SELECTOR + } + Self::eigenPodManager(_) => { + ::SELECTOR + } + Self::getDeposits(_) => ::SELECTOR, + Self::initialize(_) => ::SELECTOR, + Self::nonces(_) => ::SELECTOR, + Self::owner(_) => ::SELECTOR, + Self::pause(_) => ::SELECTOR, + Self::pauseAll(_) => ::SELECTOR, + Self::paused_0(_) => ::SELECTOR, + Self::paused_1(_) => ::SELECTOR, + Self::pauserRegistry(_) => { + ::SELECTOR + } + Self::removeShares(_) => ::SELECTOR, + Self::removeStrategiesFromDepositWhitelist(_) => { + ::SELECTOR + } + Self::renounceOwnership(_) => { + ::SELECTOR + } + Self::setPauserRegistry(_) => { + ::SELECTOR + } + Self::setStrategyWhitelister(_) => { + ::SELECTOR + } + Self::setThirdPartyTransfersForbidden(_) => { + ::SELECTOR + } + Self::slasher(_) => ::SELECTOR, + Self::stakerStrategyList(_) => { + ::SELECTOR + } + Self::stakerStrategyListLength(_) => { + ::SELECTOR + } + Self::stakerStrategyShares(_) => { + ::SELECTOR + } + Self::strategyIsWhitelistedForDeposit(_) => { + ::SELECTOR + } + Self::strategyWhitelister(_) => { + ::SELECTOR + } + Self::thirdPartyTransfersForbidden(_) => { + ::SELECTOR + } + Self::transferOwnership(_) => { + ::SELECTOR + } + Self::unpause(_) => ::SELECTOR, + Self::withdrawSharesAsTokens(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn setPauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerCalls::setPauserRegistry) + } + setPauserRegistry + }, + { + fn pause( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyManagerCalls::pause) + } + pause + }, + { + fn DOMAIN_TYPEHASH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerCalls::DOMAIN_TYPEHASH) + } + DOMAIN_TYPEHASH + }, + { + fn depositIntoStrategyWithSignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(StrategyManagerCalls::depositIntoStrategyWithSignature) + } + depositIntoStrategyWithSignature + }, + { + fn eigenPodManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerCalls::eigenPodManager) + } + eigenPodManager + }, + { + fn DEPOSIT_TYPEHASH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerCalls::DEPOSIT_TYPEHASH) + } + DEPOSIT_TYPEHASH + }, + { + fn setThirdPartyTransfersForbidden( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(StrategyManagerCalls::setThirdPartyTransfersForbidden) + } + setThirdPartyTransfersForbidden + }, + { + fn pauseAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyManagerCalls::pauseAll) + } + pauseAll + }, + { + fn paused_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyManagerCalls::paused_0) + } + paused_0 + }, + { + fn paused_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyManagerCalls::paused_1) + } + paused_1 + }, + { + fn strategyIsWhitelistedForDeposit( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(StrategyManagerCalls::strategyIsWhitelistedForDeposit) + } + strategyIsWhitelistedForDeposit + }, + { + fn renounceOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerCalls::renounceOwnership) + } + renounceOwnership + }, + { + fn stakerStrategyShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerCalls::stakerStrategyShares) + } + stakerStrategyShares + }, + { + fn nonces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyManagerCalls::nonces) + } + nonces + }, + { + fn pauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerCalls::pauserRegistry) + } + pauserRegistry + }, + { + fn stakerStrategyListLength( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerCalls::stakerStrategyListLength) + } + stakerStrategyListLength + }, + { + fn removeShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerCalls::removeShares) + } + removeShares + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyManagerCalls::owner) + } + owner + }, + { + fn getDeposits( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerCalls::getDeposits) + } + getDeposits + }, + { + fn strategyWhitelister( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerCalls::strategyWhitelister) + } + strategyWhitelister + }, + { + fn thirdPartyTransfersForbidden( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(StrategyManagerCalls::thirdPartyTransfersForbidden) + } + thirdPartyTransfersForbidden + }, + { + fn slasher( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyManagerCalls::slasher) + } + slasher + }, + { + fn removeStrategiesFromDepositWhitelist( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + StrategyManagerCalls::removeStrategiesFromDepositWhitelist, + ) + } + removeStrategiesFromDepositWhitelist + }, + { + fn addShares( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyManagerCalls::addShares) + } + addShares + }, + { + fn withdrawSharesAsTokens( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerCalls::withdrawSharesAsTokens) + } + withdrawSharesAsTokens + }, + { + fn setStrategyWhitelister( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerCalls::setStrategyWhitelister) + } + setStrategyWhitelister + }, + { + fn stakerStrategyList( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerCalls::stakerStrategyList) + } + stakerStrategyList + }, + { + fn initialize( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyManagerCalls::initialize) + } + initialize + }, + { + fn addStrategiesToDepositWhitelist( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(StrategyManagerCalls::addStrategiesToDepositWhitelist) + } + addStrategiesToDepositWhitelist + }, + { + fn delegation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyManagerCalls::delegation) + } + delegation + }, + { + fn depositIntoStrategy( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerCalls::depositIntoStrategy) + } + depositIntoStrategy + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerCalls::transferOwnership) + } + transferOwnership + }, + { + fn domainSeparator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, validate, + ) + .map(StrategyManagerCalls::domainSeparator) + } + domainSeparator + }, + { + fn unpause( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(StrategyManagerCalls::unpause) + } + unpause + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::DEPOSIT_TYPEHASH(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::DOMAIN_TYPEHASH(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::addShares(inner) => { + ::abi_encoded_size(inner) + } + Self::addStrategiesToDepositWhitelist(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::delegation(inner) => { + ::abi_encoded_size(inner) + } + Self::depositIntoStrategy(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::depositIntoStrategyWithSignature(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::domainSeparator(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::eigenPodManager(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getDeposits(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::initialize(inner) => { + ::abi_encoded_size(inner) + } + Self::nonces(inner) => { + ::abi_encoded_size(inner) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::pause(inner) => { + ::abi_encoded_size(inner) + } + Self::pauseAll(inner) => { + ::abi_encoded_size(inner) + } + Self::paused_0(inner) => { + ::abi_encoded_size(inner) + } + Self::paused_1(inner) => { + ::abi_encoded_size(inner) + } + Self::pauserRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::removeShares(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::removeStrategiesFromDepositWhitelist(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::renounceOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setPauserRegistry(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setStrategyWhitelister(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setThirdPartyTransfersForbidden(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::slasher(inner) => { + ::abi_encoded_size(inner) + } + Self::stakerStrategyList(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::stakerStrategyListLength(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::stakerStrategyShares(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::strategyIsWhitelistedForDeposit(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::strategyWhitelister(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::thirdPartyTransfersForbidden(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::unpause(inner) => { + ::abi_encoded_size(inner) + } + Self::withdrawSharesAsTokens(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::DEPOSIT_TYPEHASH(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::DOMAIN_TYPEHASH(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::addShares(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::addStrategiesToDepositWhitelist(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::delegation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::depositIntoStrategy(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::depositIntoStrategyWithSignature(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::domainSeparator(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::eigenPodManager(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getDeposits(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::initialize(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::nonces(inner) => { + ::abi_encode_raw(inner, out) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::pause(inner) => { + ::abi_encode_raw(inner, out) + } + Self::pauseAll(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::paused_0(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::paused_1(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::pauserRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::removeShares(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::removeStrategiesFromDepositWhitelist(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::renounceOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setPauserRegistry(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setStrategyWhitelister(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setThirdPartyTransfersForbidden(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::slasher(inner) => { + ::abi_encode_raw(inner, out) + } + Self::stakerStrategyList(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::stakerStrategyListLength(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::stakerStrategyShares(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::strategyIsWhitelistedForDeposit(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::strategyWhitelister(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::thirdPartyTransfersForbidden(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::unpause(inner) => { + ::abi_encode_raw(inner, out) + } + Self::withdrawSharesAsTokens(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`StrategyManager`](self) events. + pub enum StrategyManagerEvents { + Deposit(Deposit), + Initialized(Initialized), + OwnershipTransferred(OwnershipTransferred), + Paused(Paused), + PauserRegistrySet(PauserRegistrySet), + StrategyAddedToDepositWhitelist(StrategyAddedToDepositWhitelist), + StrategyRemovedFromDepositWhitelist(StrategyRemovedFromDepositWhitelist), + StrategyWhitelisterChanged(StrategyWhitelisterChanged), + Unpaused(Unpaused), + UpdatedThirdPartyTransfersForbidden(UpdatedThirdPartyTransfersForbidden), + } + #[automatically_derived] + impl StrategyManagerEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 12u8, 53u8, 177u8, 125u8, 145u8, 201u8, 110u8, 178u8, 117u8, 28u8, 212u8, 86u8, + 225u8, 37u8, 47u8, 66u8, 163u8, 134u8, 229u8, 36u8, 239u8, 159u8, 242u8, 110u8, + 204u8, 153u8, 80u8, 133u8, 159u8, 220u8, 4u8, 254u8, + ], + [ + 53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8, 2u8, + 188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8, 228u8, 152u8, + 107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8, + ], + [ + 64u8, 116u8, 65u8, 59u8, 75u8, 68u8, 62u8, 78u8, 88u8, 1u8, 159u8, 40u8, 85u8, + 168u8, 118u8, 81u8, 19u8, 53u8, 140u8, 124u8, 114u8, 227u8, 149u8, 9u8, 198u8, + 175u8, 69u8, 252u8, 15u8, 91u8, 160u8, 48u8, + ], + [ + 66u8, 100u8, 39u8, 94u8, 89u8, 57u8, 85u8, 255u8, 157u8, 97u8, 70u8, 165u8, 26u8, + 69u8, 37u8, 246u8, 221u8, 172u8, 226u8, 232u8, 29u8, 185u8, 57u8, 26u8, 188u8, + 201u8, 209u8, 202u8, 72u8, 4u8, 125u8, 41u8, + ], + [ + 110u8, 159u8, 205u8, 83u8, 152u8, 150u8, 252u8, 166u8, 14u8, 139u8, 15u8, 1u8, + 221u8, 88u8, 2u8, 51u8, 228u8, 138u8, 107u8, 15u8, 125u8, 240u8, 19u8, 184u8, + 155u8, 167u8, 245u8, 101u8, 134u8, 154u8, 205u8, 182u8, + ], + [ + 119u8, 217u8, 48u8, 223u8, 73u8, 55u8, 121u8, 52u8, 115u8, 169u8, 80u8, 36u8, + 216u8, 122u8, 152u8, 253u8, 44u8, 203u8, 158u8, 146u8, 211u8, 194u8, 70u8, 59u8, + 61u8, 172u8, 214u8, 93u8, 62u8, 106u8, 87u8, 134u8, + ], + [ + 124u8, 255u8, 249u8, 8u8, 164u8, 181u8, 131u8, 243u8, 100u8, 48u8, 178u8, 93u8, + 117u8, 150u8, 76u8, 69u8, 141u8, 142u8, 222u8, 138u8, 153u8, 189u8, 97u8, 190u8, + 117u8, 14u8, 151u8, 238u8, 27u8, 47u8, 58u8, 150u8, + ], + [ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, 56u8, + 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, 96u8, + 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ], + [ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, 208u8, + 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, 175u8, 227u8, + 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ], + [ + 171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8, 188u8, + 152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8, 11u8, 182u8, + 224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for StrategyManagerEvents { + const NAME: &'static str = "StrategyManagerEvents"; + const COUNT: usize = 10usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Deposit) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Initialized) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::OwnershipTransferred) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Paused) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::PauserRegistrySet) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::StrategyAddedToDepositWhitelist) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::StrategyRemovedFromDepositWhitelist) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::StrategyWhitelisterChanged) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Unpaused) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::UpdatedThirdPartyTransfersForbidden) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for StrategyManagerEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Deposit(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Paused(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::PauserRegistrySet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::StrategyAddedToDepositWhitelist(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::StrategyRemovedFromDepositWhitelist(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::StrategyWhitelisterChanged(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Unpaused(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::UpdatedThirdPartyTransfersForbidden(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Deposit(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Paused(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::PauserRegistrySet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::StrategyAddedToDepositWhitelist(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::StrategyRemovedFromDepositWhitelist(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::StrategyWhitelisterChanged(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Unpaused(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::UpdatedThirdPartyTransfersForbidden(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`StrategyManager`](self) contract instance. + + See the [wrapper's documentation](`StrategyManagerInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> StrategyManagerInstance { + StrategyManagerInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _delegation: alloy::sol_types::private::Address, + _eigenPodManager: alloy::sol_types::private::Address, + _slasher: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future>> + { + StrategyManagerInstance::::deploy( + provider, + _delegation, + _eigenPodManager, + _slasher, + ) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _delegation: alloy::sol_types::private::Address, + _eigenPodManager: alloy::sol_types::private::Address, + _slasher: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + StrategyManagerInstance::::deploy_builder( + provider, + _delegation, + _eigenPodManager, + _slasher, + ) + } + /**A [`StrategyManager`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StrategyManager`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct StrategyManagerInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StrategyManagerInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StrategyManagerInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StrategyManagerInstance + { + /**Creates a new wrapper around an on-chain [`StrategyManager`](self) contract instance. + + See the [wrapper's documentation](`StrategyManagerInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _delegation: alloy::sol_types::private::Address, + _eigenPodManager: alloy::sol_types::private::Address, + _slasher: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = + Self::deploy_builder(provider, _delegation, _eigenPodManager, _slasher); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _delegation: alloy::sol_types::private::Address, + _eigenPodManager: alloy::sol_types::private::Address, + _slasher: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode(&constructorCall { + _delegation, + _eigenPodManager, + _slasher, + })[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl StrategyManagerInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StrategyManagerInstance { + StrategyManagerInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StrategyManagerInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`DEPOSIT_TYPEHASH`] function. + pub fn DEPOSIT_TYPEHASH( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&DEPOSIT_TYPEHASHCall {}) + } + ///Creates a new call builder for the [`DOMAIN_TYPEHASH`] function. + pub fn DOMAIN_TYPEHASH( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&DOMAIN_TYPEHASHCall {}) + } + ///Creates a new call builder for the [`addShares`] function. + pub fn addShares( + &self, + staker: alloy::sol_types::private::Address, + token: alloy::sol_types::private::Address, + strategy: alloy::sol_types::private::Address, + shares: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&addSharesCall { + staker, + token, + strategy, + shares, + }) + } + ///Creates a new call builder for the [`addStrategiesToDepositWhitelist`] function. + pub fn addStrategiesToDepositWhitelist( + &self, + strategiesToWhitelist: alloy::sol_types::private::Vec< + alloy::sol_types::private::Address, + >, + thirdPartyTransfersForbiddenValues: alloy::sol_types::private::Vec, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&addStrategiesToDepositWhitelistCall { + strategiesToWhitelist, + thirdPartyTransfersForbiddenValues, + }) + } + ///Creates a new call builder for the [`delegation`] function. + pub fn delegation(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&delegationCall {}) + } + ///Creates a new call builder for the [`depositIntoStrategy`] function. + pub fn depositIntoStrategy( + &self, + strategy: alloy::sol_types::private::Address, + token: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&depositIntoStrategyCall { + strategy, + token, + amount, + }) + } + ///Creates a new call builder for the [`depositIntoStrategyWithSignature`] function. + pub fn depositIntoStrategyWithSignature( + &self, + strategy: alloy::sol_types::private::Address, + token: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::primitives::aliases::U256, + staker: alloy::sol_types::private::Address, + expiry: alloy::sol_types::private::primitives::aliases::U256, + signature: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&depositIntoStrategyWithSignatureCall { + strategy, + token, + amount, + staker, + expiry, + signature, + }) + } + ///Creates a new call builder for the [`domainSeparator`] function. + pub fn domainSeparator( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&domainSeparatorCall {}) + } + ///Creates a new call builder for the [`eigenPodManager`] function. + pub fn eigenPodManager( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&eigenPodManagerCall {}) + } + ///Creates a new call builder for the [`getDeposits`] function. + pub fn getDeposits( + &self, + staker: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getDepositsCall { staker }) + } + ///Creates a new call builder for the [`initialize`] function. + pub fn initialize( + &self, + initialOwner: alloy::sol_types::private::Address, + initialStrategyWhitelister: alloy::sol_types::private::Address, + _pauserRegistry: alloy::sol_types::private::Address, + initialPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initializeCall { + initialOwner, + initialStrategyWhitelister, + _pauserRegistry, + initialPausedStatus, + }) + } + ///Creates a new call builder for the [`nonces`] function. + pub fn nonces( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&noncesCall { _0 }) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`pause`] function. + pub fn pause( + &self, + newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&pauseCall { newPausedStatus }) + } + ///Creates a new call builder for the [`pauseAll`] function. + pub fn pauseAll(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&pauseAllCall {}) + } + ///Creates a new call builder for the [`paused_0`] function. + pub fn paused_0( + &self, + index: u8, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&paused_0Call { index }) + } + ///Creates a new call builder for the [`paused_1`] function. + pub fn paused_1(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&paused_1Call {}) + } + ///Creates a new call builder for the [`pauserRegistry`] function. + pub fn pauserRegistry( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&pauserRegistryCall {}) + } + ///Creates a new call builder for the [`removeShares`] function. + pub fn removeShares( + &self, + staker: alloy::sol_types::private::Address, + strategy: alloy::sol_types::private::Address, + shares: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&removeSharesCall { + staker, + strategy, + shares, + }) + } + ///Creates a new call builder for the [`removeStrategiesFromDepositWhitelist`] function. + pub fn removeStrategiesFromDepositWhitelist( + &self, + strategiesToRemoveFromWhitelist: alloy::sol_types::private::Vec< + alloy::sol_types::private::Address, + >, + ) -> alloy_contract::SolCallBuilder + { + self.call_builder(&removeStrategiesFromDepositWhitelistCall { + strategiesToRemoveFromWhitelist, + }) + } + ///Creates a new call builder for the [`renounceOwnership`] function. + pub fn renounceOwnership( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&renounceOwnershipCall {}) + } + ///Creates a new call builder for the [`setPauserRegistry`] function. + pub fn setPauserRegistry( + &self, + newPauserRegistry: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setPauserRegistryCall { newPauserRegistry }) + } + ///Creates a new call builder for the [`setStrategyWhitelister`] function. + pub fn setStrategyWhitelister( + &self, + newStrategyWhitelister: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setStrategyWhitelisterCall { + newStrategyWhitelister, + }) + } + ///Creates a new call builder for the [`setThirdPartyTransfersForbidden`] function. + pub fn setThirdPartyTransfersForbidden( + &self, + strategy: alloy::sol_types::private::Address, + value: bool, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setThirdPartyTransfersForbiddenCall { strategy, value }) + } + ///Creates a new call builder for the [`slasher`] function. + pub fn slasher(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&slasherCall {}) + } + ///Creates a new call builder for the [`stakerStrategyList`] function. + pub fn stakerStrategyList( + &self, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&stakerStrategyListCall { _0, _1 }) + } + ///Creates a new call builder for the [`stakerStrategyListLength`] function. + pub fn stakerStrategyListLength( + &self, + staker: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&stakerStrategyListLengthCall { staker }) + } + ///Creates a new call builder for the [`stakerStrategyShares`] function. + pub fn stakerStrategyShares( + &self, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&stakerStrategySharesCall { _0, _1 }) + } + ///Creates a new call builder for the [`strategyIsWhitelistedForDeposit`] function. + pub fn strategyIsWhitelistedForDeposit( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&strategyIsWhitelistedForDepositCall { _0 }) + } + ///Creates a new call builder for the [`strategyWhitelister`] function. + pub fn strategyWhitelister( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&strategyWhitelisterCall {}) + } + ///Creates a new call builder for the [`thirdPartyTransfersForbidden`] function. + pub fn thirdPartyTransfersForbidden( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&thirdPartyTransfersForbiddenCall { _0 }) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + ///Creates a new call builder for the [`unpause`] function. + pub fn unpause( + &self, + newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&unpauseCall { newPausedStatus }) + } + ///Creates a new call builder for the [`withdrawSharesAsTokens`] function. + pub fn withdrawSharesAsTokens( + &self, + recipient: alloy::sol_types::private::Address, + strategy: alloy::sol_types::private::Address, + shares: alloy::sol_types::private::primitives::aliases::U256, + token: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&withdrawSharesAsTokensCall { + recipient, + strategy, + shares, + token, + }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StrategyManagerInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Deposit`] event. + pub fn Deposit_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Initialized`] event. + pub fn Initialized_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Paused`] event. + pub fn Paused_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`PauserRegistrySet`] event. + pub fn PauserRegistrySet_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`StrategyAddedToDepositWhitelist`] event. + pub fn StrategyAddedToDepositWhitelist_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`StrategyRemovedFromDepositWhitelist`] event. + pub fn StrategyRemovedFromDepositWhitelist_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`StrategyWhitelisterChanged`] event. + pub fn StrategyWhitelisterChanged_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Unpaused`] event. + pub fn Unpaused_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`UpdatedThirdPartyTransfersForbidden`] event. + pub fn UpdatedThirdPartyTransfersForbidden_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/strings.rs b/crates/utils/src/strings.rs new file mode 100644 index 00000000..c5150e84 --- /dev/null +++ b/crates/utils/src/strings.rs @@ -0,0 +1,219 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface Strings {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod Strings { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a1f80b9de8ef90e16ebfa04150beb3416c8944ee41e5a4056382b2166a5a2a0b64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xA1\xF8\x0B\x9D\xE8\xEF\x90\xE1n\xBF\xA0AP\xBE\xB3Al\x89D\xEEA\xE5\xA4\x05c\x82\xB2\x16jZ*\x0BdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a1f80b9de8ef90e16ebfa04150beb3416c8944ee41e5a4056382b2166a5a2a0b64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xA1\xF8\x0B\x9D\xE8\xEF\x90\xE1n\xBF\xA0AP\xBE\xB3Al\x89D\xEEA\xE5\xA4\x05c\x82\xB2\x16jZ*\x0BdsolcC\0\x08\x0C\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Strings`](self) contract instance. + + See the [wrapper's documentation](`StringsInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> StringsInstance { + StringsInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + StringsInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + StringsInstance::::deploy_builder(provider) + } + /**A [`Strings`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`Strings`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct StringsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StringsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StringsInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StringsInstance + { + /**Creates a new wrapper around an on-chain [`Strings`](self) contract instance. + + See the [wrapper's documentation](`StringsInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy(provider: P) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl StringsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StringsInstance { + StringsInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StringsInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StringsInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/stringsupgradeable.rs b/crates/utils/src/stringsupgradeable.rs new file mode 100644 index 00000000..bbe7d615 --- /dev/null +++ b/crates/utils/src/stringsupgradeable.rs @@ -0,0 +1,221 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface StringsUpgradeable {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod StringsUpgradeable { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122011fb48dd485c31a8d22fe7037c7f09984ac8eab820115d53460965a9fd57991064736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x11\xFBH\xDDH\\1\xA8\xD2/\xE7\x03|\x7F\t\x98J\xC8\xEA\xB8 \x11]SF\te\xA9\xFDW\x99\x10dsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122011fb48dd485c31a8d22fe7037c7f09984ac8eab820115d53460965a9fd57991064736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x11\xFBH\xDDH\\1\xA8\xD2/\xE7\x03|\x7F\t\x98J\xC8\xEA\xB8 \x11]SF\te\xA9\xFDW\x99\x10dsolcC\0\x08\x0C\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`StringsUpgradeable`](self) contract instance. + + See the [wrapper's documentation](`StringsUpgradeableInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> StringsUpgradeableInstance { + StringsUpgradeableInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + StringsUpgradeableInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + StringsUpgradeableInstance::::deploy_builder(provider) + } + /**A [`StringsUpgradeable`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`StringsUpgradeable`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct StringsUpgradeableInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StringsUpgradeableInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StringsUpgradeableInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StringsUpgradeableInstance + { + /**Creates a new wrapper around an on-chain [`StringsUpgradeable`](self) contract instance. + + See the [wrapper's documentation](`StringsUpgradeableInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl StringsUpgradeableInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StringsUpgradeableInstance { + StringsUpgradeableInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StringsUpgradeableInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StringsUpgradeableInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/tokenandstrategycontractsparser.rs b/crates/utils/src/tokenandstrategycontractsparser.rs new file mode 100644 index 00000000..6f5a1905 --- /dev/null +++ b/crates/utils/src/tokenandstrategycontractsparser.rs @@ -0,0 +1,427 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface TokenAndStrategyContractsParser { + function IS_SCRIPT() external view returns (bool); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_SCRIPT", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod TokenAndStrategyContractsParser { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052600c805462ff00ff191662010001179055348015602057600080fd5b5060898061002f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063f8ccbf4714602d575b600080fd5b600c54603f9062010000900460ff1681565b604051901515815260200160405180910390f3fea2646970667358221220b554c03c78d34bd0a56dfaab3a6a28d9d4d850856514e47bd387e3eacd4b3bc664736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15` W`\0\x80\xFD[P`\x89\x80a\0/`\09`\0\xF3\xFE`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`(W`\x005`\xE0\x1C\x80c\xF8\xCC\xBFG\x14`-W[`\0\x80\xFD[`\x0CT`?\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3\xFE\xA2dipfsX\"\x12 \xB5T\xC0 = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_SCRIPTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_SCRIPTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_SCRIPT()"; + const SELECTOR: [u8; 4] = [248u8, 204u8, 191u8, 71u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`TokenAndStrategyContractsParser`](self) function calls. + pub enum TokenAndStrategyContractsParserCalls { + IS_SCRIPT(IS_SCRIPTCall), + } + #[automatically_derived] + impl TokenAndStrategyContractsParserCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[248u8, 204u8, 191u8, 71u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for TokenAndStrategyContractsParserCalls { + const NAME: &'static str = "TokenAndStrategyContractsParserCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_SCRIPT(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result< + TokenAndStrategyContractsParserCalls, + >] = &[{ + fn IS_SCRIPT( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(TokenAndStrategyContractsParserCalls::IS_SCRIPT) + } + IS_SCRIPT + }]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`TokenAndStrategyContractsParser`](self) contract instance. + + See the [wrapper's documentation](`TokenAndStrategyContractsParserInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> TokenAndStrategyContractsParserInstance { + TokenAndStrategyContractsParserInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + TokenAndStrategyContractsParserInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + TokenAndStrategyContractsParserInstance::::deploy_builder(provider) + } + /**A [`TokenAndStrategyContractsParser`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`TokenAndStrategyContractsParser`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct TokenAndStrategyContractsParserInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for TokenAndStrategyContractsParserInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("TokenAndStrategyContractsParserInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TokenAndStrategyContractsParserInstance + { + /**Creates a new wrapper around an on-chain [`TokenAndStrategyContractsParser`](self) contract instance. + + See the [wrapper's documentation](`TokenAndStrategyContractsParserInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl TokenAndStrategyContractsParserInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> TokenAndStrategyContractsParserInstance { + TokenAndStrategyContractsParserInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TokenAndStrategyContractsParserInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`IS_SCRIPT`] function. + pub fn IS_SCRIPT(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_SCRIPTCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TokenAndStrategyContractsParserInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/utils/src/transparentupgradeableproxy.rs b/crates/utils/src/transparentupgradeableproxy.rs new file mode 100644 index 00000000..5f1aec40 --- /dev/null +++ b/crates/utils/src/transparentupgradeableproxy.rs @@ -0,0 +1,1649 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface TransparentUpgradeableProxy { + event AdminChanged(address previousAdmin, address newAdmin); + event BeaconUpgraded(address indexed beacon); + event Upgraded(address indexed implementation); + + constructor(address _logic, address admin_, bytes _data) payable; + + fallback() external payable; + + receive() external payable; + + function admin() external returns (address admin_); + function changeAdmin(address newAdmin) external; + function implementation() external returns (address implementation_); + function upgradeTo(address newImplementation) external; + function upgradeToAndCall(address newImplementation, bytes memory data) external payable; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_logic", + "type": "address", + "internalType": "address" + }, + { + "name": "admin_", + "type": "address", + "internalType": "address" + }, + { + "name": "_data", + "type": "bytes", + "internalType": "bytes" + } + ], + "stateMutability": "payable" + }, + { + "type": "fallback", + "stateMutability": "payable" + }, + { + "type": "receive", + "stateMutability": "payable" + }, + { + "type": "function", + "name": "admin", + "inputs": [], + "outputs": [ + { + "name": "admin_", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "changeAdmin", + "inputs": [ + { + "name": "newAdmin", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "implementation", + "inputs": [], + "outputs": [ + { + "name": "implementation_", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "upgradeTo", + "inputs": [ + { + "name": "newImplementation", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "upgradeToAndCall", + "inputs": [ + { + "name": "newImplementation", + "type": "address", + "internalType": "address" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "event", + "name": "AdminChanged", + "inputs": [ + { + "name": "previousAdmin", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newAdmin", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "BeaconUpgraded", + "inputs": [ + { + "name": "beacon", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Upgraded", + "inputs": [ + { + "name": "implementation", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod TransparentUpgradeableProxy { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405260405162000e8138038062000e81833981016040819052620000269162000490565b828162000036828260006200004d565b50620000449050826200008a565b505050620005c3565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e5a60279139620002f8565b9392505050565b60006200018060008051602062000e3a83398151915260001b620003de60201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e3a83398151915260001b620003de60201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200028c1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620002081760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000570565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f191906200058e565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b83811115620000835750506000910152565b600080600060608486031215620004a657600080fd5b620004b1846200042e565b9250620004c1602085016200042e565b60408501519092506001600160401b0380821115620004df57600080fd5b818601915086601f830112620004f457600080fd5b8151818111156200050957620005096200044b565b604051601f8201601f19908116603f011681019083821181831017156200053457620005346200044b565b816040528281528960208487010111156200054e57600080fd5b6200056183602083016020880162000461565b80955050505050509250925092565b600082516200058481846020870162000461565b9190910192915050565b6020815260008251806020840152620005af81604085016020870162000461565b601f01601f19169190910160400192915050565b61086780620005d36000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212207420b9d3a17a9b4b1279482aea62855b38b1f3c36865e13712f5632f3a487f3764736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`@Qb\0\x0E\x818\x03\x80b\0\x0E\x81\x839\x81\x01`@\x81\x90Rb\0\0&\x91b\0\x04\x90V[\x82\x81b\0\x006\x82\x82`\0b\0\0MV[Pb\0\0D\x90P\x82b\0\0\x8AV[PPPb\0\x05\xC3V[b\0\0X\x83b\0\0\xE5V[`\0\x82Q\x11\x80b\0\0fWP\x80[\x15b\0\0\x85Wb\0\0\x83\x83\x83b\0\x01'` \x1Bb\0\x02`\x17` \x1CV[P[PPPV[\x7F~dMyB/\x17\xC0\x1EH\x94\xB5\xF4\xF5\x88\xD31\xEB\xFA(e=B\xAE\x83-\xC5\x9E8\xC9y\x8Fb\0\0\xB5b\0\x01VV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x84\x16` \x83\x01R\x01`@Q\x80\x91\x03\x90\xA1b\0\0\xE2\x81b\0\x01\x8FV[PV[b\0\0\xF0\x81b\0\x02DV[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90`\0\x90\xA2PV[``b\0\x01O\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01b\0\x0EZ`'\x919b\0\x02\xF8V[\x93\x92PPPV[`\0b\0\x01\x80`\0\x80Q` b\0\x0E:\x839\x81Q\x91R`\0\x1Bb\0\x03\xDE` \x1Bb\0\x02\x08\x17` \x1CV[T`\x01`\x01`\xA0\x1B\x03\x16\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16b\0\x01\xFAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC1967: new admin is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[\x80b\0\x02#`\0\x80Q` b\0\x0E:\x839\x81Q\x91R`\0\x1Bb\0\x03\xDE` \x1Bb\0\x02\x08\x17` \x1CV[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UPV[b\0\x02Z\x81b\0\x03\xE1` \x1Bb\0\x02\x8C\x17` \x1CV[b\0\x02\xBEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FERC1967: new implementation is n`D\x82\x01Rl\x1B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x9A\x1B`d\x82\x01R`\x84\x01b\0\x01\xF1V[\x80b\0\x02#\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC`\0\x1Bb\0\x03\xDE` \x1Bb\0\x02\x08\x17` \x1CV[```\x01`\x01`\xA0\x1B\x03\x84\x16;b\0\x03bW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FAddress: delegate call to non-co`D\x82\x01Re\x1B\x9D\x1C\x98X\xDD`\xD2\x1B`d\x82\x01R`\x84\x01b\0\x01\xF1V[`\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qb\0\x03\x7F\x91\x90b\0\x05pV[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14b\0\x03\xBCW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>b\0\x03\xC1V[``\x91P[P\x90\x92P\x90Pb\0\x03\xD4\x82\x82\x86b\0\x03\xF0V[\x96\x95PPPPPPV[\x90V[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[``\x83\x15b\0\x04\x01WP\x81b\0\x01OV[\x82Q\x15b\0\x04\x12W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01b\0\x01\xF1\x91\x90b\0\x05\x8EV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x04FW`\0\x80\xFD[\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15b\0\x04~W\x81\x81\x01Q\x83\x82\x01R` \x01b\0\x04dV[\x83\x81\x11\x15b\0\0\x83WPP`\0\x91\x01RV[`\0\x80`\0``\x84\x86\x03\x12\x15b\0\x04\xA6W`\0\x80\xFD[b\0\x04\xB1\x84b\0\x04.V[\x92Pb\0\x04\xC1` \x85\x01b\0\x04.V[`@\x85\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x04\xDFW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12b\0\x04\xF4W`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\0\x05\tWb\0\x05\tb\0\x04KV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15b\0\x054Wb\0\x054b\0\x04KV[\x81`@R\x82\x81R\x89` \x84\x87\x01\x01\x11\x15b\0\x05NW`\0\x80\xFD[b\0\x05a\x83` \x83\x01` \x88\x01b\0\x04aV[\x80\x95PPPPPP\x92P\x92P\x92V[`\0\x82Qb\0\x05\x84\x81\x84` \x87\x01b\0\x04aV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Rb\0\x05\xAF\x81`@\x85\x01` \x87\x01b\0\x04aV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[a\x08g\x80b\0\x05\xD3`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\0NW`\x005`\xE0\x1C\x80c6Y\xCF\xE6\x14a\0eW\x80cO\x1E\xF2\x86\x14a\0\x85W\x80c\\`\xDA\x1B\x14a\0\x98W\x80c\x8F(9p\x14a\0\xC9W\x80c\xF8Q\xA4@\x14a\0\xE9Wa\0]V[6a\0]Wa\0[a\0\xFEV[\0[a\0[a\0\xFEV[4\x80\x15a\0qW`\0\x80\xFD[Pa\0[a\0\x806`\x04a\x06\xF1V[a\x01\x18V[a\0[a\0\x936`\x04a\x07\x0CV[a\x01_V[4\x80\x15a\0\xA4W`\0\x80\xFD[Pa\0\xADa\x01\xD0V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xD5W`\0\x80\xFD[Pa\0[a\0\xE46`\x04a\x06\xF1V[a\x02\x0BV[4\x80\x15a\0\xF5W`\0\x80\xFD[Pa\0\xADa\x025V[a\x01\x06a\x02\x9BV[a\x01\x16a\x01\x11a\x03:V[a\x03DV[V[a\x01 a\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x01WWa\x01T\x81`@Q\x80` \x01`@R\x80`\0\x81RP`\0a\x03\x9BV[PV[a\x01Ta\0\xFEV[a\x01ga\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x01\xC8Wa\x01\xC3\x83\x83\x83\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RP`\x01\x92Pa\x03\x9B\x91PPV[PPPV[a\x01\xC3a\0\xFEV[`\0a\x01\xDAa\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x02\0Wa\x01\xFBa\x03:V[\x90P\x90V[a\x02\x08a\0\xFEV[\x90V[a\x02\x13a\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x01WWa\x01T\x81a\x03\xC6V[`\0a\x02?a\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x02\0Wa\x01\xFBa\x03hV[``a\x02\x85\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x08\x0B`'\x919a\x04\x1AV[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[a\x02\xA3a\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x01\x16W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R\x7FTransparentUpgradeableProxy: adm`D\x82\x01R\x7Fin cannot fallback to proxy targ`d\x82\x01Ra\x19]`\xF2\x1B`\x84\x82\x01R`\xA4\x01[`@Q\x80\x91\x03\x90\xFD[`\0a\x01\xFBa\x04\xF7V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15a\x03cW=`\0\xF3[=`\0\xFD[`\0\x7F\xB51'hJV\x8B1s\xAE\x13\xB9\xF8\xA6\x01n$>c\xB6\xE8\xEE\x11x\xD6\xA7\x17\x85\x0B]a\x03[T`\x01`\x01`\xA0\x1B\x03\x16\x91\x90PV[a\x03\xA4\x83a\x05\x1FV[`\0\x82Q\x11\x80a\x03\xB1WP\x80[\x15a\x01\xC3Wa\x03\xC0\x83\x83a\x02`V[PPPPV[\x7F~dMyB/\x17\xC0\x1EH\x94\xB5\xF4\xF5\x88\xD31\xEB\xFA(e=B\xAE\x83-\xC5\x9E8\xC9y\x8Fa\x03\xEFa\x03hV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x84\x16` \x83\x01R\x01`@Q\x80\x91\x03\x90\xA1a\x01T\x81a\x05_V[```\x01`\x01`\xA0\x1B\x03\x84\x16;a\x04\x82W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FAddress: delegate call to non-co`D\x82\x01Re\x1B\x9D\x1C\x98X\xDD`\xD2\x1B`d\x82\x01R`\x84\x01a\x031V[`\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x04\x9D\x91\x90a\x07\xBBV[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x04\xD8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x04\xDDV[``\x91P[P\x91P\x91Pa\x04\xED\x82\x82\x86a\x06\x08V[\x96\x95PPPPPPV[`\0\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x03\x8CV[a\x05(\x81a\x06AV[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90`\0\x90\xA2PV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xC4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC1967: new admin is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x031V[\x80\x7F\xB51'hJV\x8B1s\xAE\x13\xB9\xF8\xA6\x01n$>c\xB6\xE8\xEE\x11x\xD6\xA7\x17\x85\x0B]a\x03[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UPV[``\x83\x15a\x06\x17WP\x81a\x02\x85V[\x82Q\x15a\x06'W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x031\x91\x90a\x07\xD7V[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x06\xAEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FERC1967: new implementation is n`D\x82\x01Rl\x1B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x9A\x1B`d\x82\x01R`\x84\x01a\x031V[\x80\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x05\xE7V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x06\xECW`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x07\x03W`\0\x80\xFD[a\x02\x85\x82a\x06\xD5V[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x07!W`\0\x80\xFD[a\x07*\x84a\x06\xD5V[\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x07GW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x07[W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x07jW`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x07|W`\0\x80\xFD[` \x83\x01\x94P\x80\x93PPPP\x92P\x92P\x92V[`\0[\x83\x81\x10\x15a\x07\xAAW\x81\x81\x01Q\x83\x82\x01R` \x01a\x07\x92V[\x83\x81\x11\x15a\x03\xC0WPP`\0\x91\x01RV[`\0\x82Qa\x07\xCD\x81\x84` \x87\x01a\x07\x8FV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x07\xF6\x81`@\x85\x01` \x87\x01a\x07\x8FV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 t \xB9\xD3\xA1z\x9BK\x12yH*\xEAb\x85[8\xB1\xF3\xC3he\xE17\x12\xF5c/:H\x7F7dsolcC\0\x08\x0C\x003\xB51'hJV\x8B1s\xAE\x13\xB9\xF8\xA6\x01n$>c\xB6\xE8\xEE\x11x\xD6\xA7\x17\x85\x0B]a\x03Address: low-level delegate call failed", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212207420b9d3a17a9b4b1279482aea62855b38b1f3c36865e13712f5632f3a487f3764736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x046\x10a\0NW`\x005`\xE0\x1C\x80c6Y\xCF\xE6\x14a\0eW\x80cO\x1E\xF2\x86\x14a\0\x85W\x80c\\`\xDA\x1B\x14a\0\x98W\x80c\x8F(9p\x14a\0\xC9W\x80c\xF8Q\xA4@\x14a\0\xE9Wa\0]V[6a\0]Wa\0[a\0\xFEV[\0[a\0[a\0\xFEV[4\x80\x15a\0qW`\0\x80\xFD[Pa\0[a\0\x806`\x04a\x06\xF1V[a\x01\x18V[a\0[a\0\x936`\x04a\x07\x0CV[a\x01_V[4\x80\x15a\0\xA4W`\0\x80\xFD[Pa\0\xADa\x01\xD0V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xD5W`\0\x80\xFD[Pa\0[a\0\xE46`\x04a\x06\xF1V[a\x02\x0BV[4\x80\x15a\0\xF5W`\0\x80\xFD[Pa\0\xADa\x025V[a\x01\x06a\x02\x9BV[a\x01\x16a\x01\x11a\x03:V[a\x03DV[V[a\x01 a\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x01WWa\x01T\x81`@Q\x80` \x01`@R\x80`\0\x81RP`\0a\x03\x9BV[PV[a\x01Ta\0\xFEV[a\x01ga\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x01\xC8Wa\x01\xC3\x83\x83\x83\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RP`\x01\x92Pa\x03\x9B\x91PPV[PPPV[a\x01\xC3a\0\xFEV[`\0a\x01\xDAa\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x02\0Wa\x01\xFBa\x03:V[\x90P\x90V[a\x02\x08a\0\xFEV[\x90V[a\x02\x13a\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x01WWa\x01T\x81a\x03\xC6V[`\0a\x02?a\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x02\0Wa\x01\xFBa\x03hV[``a\x02\x85\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x08\x0B`'\x919a\x04\x1AV[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x16;\x15\x15\x90V[a\x02\xA3a\x03hV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a\x01\x16W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R\x7FTransparentUpgradeableProxy: adm`D\x82\x01R\x7Fin cannot fallback to proxy targ`d\x82\x01Ra\x19]`\xF2\x1B`\x84\x82\x01R`\xA4\x01[`@Q\x80\x91\x03\x90\xFD[`\0a\x01\xFBa\x04\xF7V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15a\x03cW=`\0\xF3[=`\0\xFD[`\0\x7F\xB51'hJV\x8B1s\xAE\x13\xB9\xF8\xA6\x01n$>c\xB6\xE8\xEE\x11x\xD6\xA7\x17\x85\x0B]a\x03[T`\x01`\x01`\xA0\x1B\x03\x16\x91\x90PV[a\x03\xA4\x83a\x05\x1FV[`\0\x82Q\x11\x80a\x03\xB1WP\x80[\x15a\x01\xC3Wa\x03\xC0\x83\x83a\x02`V[PPPPV[\x7F~dMyB/\x17\xC0\x1EH\x94\xB5\xF4\xF5\x88\xD31\xEB\xFA(e=B\xAE\x83-\xC5\x9E8\xC9y\x8Fa\x03\xEFa\x03hV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x84\x16` \x83\x01R\x01`@Q\x80\x91\x03\x90\xA1a\x01T\x81a\x05_V[```\x01`\x01`\xA0\x1B\x03\x84\x16;a\x04\x82W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FAddress: delegate call to non-co`D\x82\x01Re\x1B\x9D\x1C\x98X\xDD`\xD2\x1B`d\x82\x01R`\x84\x01a\x031V[`\0\x80\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x04\x9D\x91\x90a\x07\xBBV[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x04\xD8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x04\xDDV[``\x91P[P\x91P\x91Pa\x04\xED\x82\x82\x86a\x06\x08V[\x96\x95PPPPPPV[`\0\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x03\x8CV[a\x05(\x81a\x06AV[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90`\0\x90\xA2PV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xC4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC1967: new admin is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x031V[\x80\x7F\xB51'hJV\x8B1s\xAE\x13\xB9\xF8\xA6\x01n$>c\xB6\xE8\xEE\x11x\xD6\xA7\x17\x85\x0B]a\x03[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UPV[``\x83\x15a\x06\x17WP\x81a\x02\x85V[\x82Q\x15a\x06'W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x031\x91\x90a\x07\xD7V[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x06\xAEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FERC1967: new implementation is n`D\x82\x01Rl\x1B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x9A\x1B`d\x82\x01R`\x84\x01a\x031V[\x80\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x05\xE7V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x06\xECW`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x07\x03W`\0\x80\xFD[a\x02\x85\x82a\x06\xD5V[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x07!W`\0\x80\xFD[a\x07*\x84a\x06\xD5V[\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x07GW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x07[W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x07jW`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x07|W`\0\x80\xFD[` \x83\x01\x94P\x80\x93PPPP\x92P\x92P\x92V[`\0[\x83\x81\x10\x15a\x07\xAAW\x81\x81\x01Q\x83\x82\x01R` \x01a\x07\x92V[\x83\x81\x11\x15a\x03\xC0WPP`\0\x91\x01RV[`\0\x82Qa\x07\xCD\x81\x84` \x87\x01a\x07\x8FV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x07\xF6\x81`@\x85\x01` \x87\x01a\x07\x8FV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 t \xB9\xD3\xA1z\x9BK\x12yH*\xEAb\x85[8\xB1\xF3\xC3he\xE17\x12\xF5c/:H\x7F7dsolcC\0\x08\x0C\x003", + ); + /**Event with signature `AdminChanged(address,address)` and selector `0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f`. + ```solidity + event AdminChanged(address previousAdmin, address newAdmin); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct AdminChanged { + #[allow(missing_docs)] + pub previousAdmin: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newAdmin: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for AdminChanged { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "AdminChanged(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 126u8, 100u8, 77u8, 121u8, 66u8, 47u8, 23u8, 192u8, 30u8, 72u8, 148u8, 181u8, + 244u8, 245u8, 136u8, 211u8, 49u8, 235u8, 250u8, 40u8, 101u8, 61u8, 66u8, 174u8, + 131u8, 45u8, 197u8, 158u8, 56u8, 201u8, 121u8, 143u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + previousAdmin: data.0, + newAdmin: data.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.previousAdmin, + ), + ::tokenize( + &self.newAdmin, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for AdminChanged { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&AdminChanged> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &AdminChanged) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `BeaconUpgraded(address)` and selector `0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e`. + ```solidity + event BeaconUpgraded(address indexed beacon); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct BeaconUpgraded { + #[allow(missing_docs)] + pub beacon: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for BeaconUpgraded { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "BeaconUpgraded(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 28u8, 243u8, 176u8, 58u8, 108u8, 241u8, 159u8, 162u8, 186u8, 186u8, 77u8, + 241u8, 72u8, 233u8, 220u8, 171u8, 237u8, 234u8, 127u8, 138u8, 92u8, 7u8, 132u8, + 14u8, 32u8, 126u8, 92u8, 8u8, 155u8, 233u8, 93u8, 62u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { beacon: topics.1 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.beacon.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.beacon, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for BeaconUpgraded { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&BeaconUpgraded> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &BeaconUpgraded) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`. + ```solidity + event Upgraded(address indexed implementation); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Upgraded { + #[allow(missing_docs)] + pub implementation: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Upgraded { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Upgraded(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8, + 179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8, 12u8, + 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + implementation: topics.1, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err(alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + )); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.implementation.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = ::encode_topic( + &self.implementation, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Upgraded { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Upgraded> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Upgraded) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. + ```solidity + constructor(address _logic, address admin_, bytes _data) payable; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _logic: alloy::sol_types::private::Address, + pub admin_: alloy::sol_types::private::Address, + pub _data: alloy::sol_types::private::Bytes, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value._logic, value.admin_, value._data) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _logic: tuple.0, + admin_: tuple.1, + _data: tuple.2, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._logic, + ), + ::tokenize( + &self.admin_, + ), + ::tokenize( + &self._data, + ), + ) + } + } + }; + /**Function with signature `admin()` and selector `0xf851a440`. + ```solidity + function admin() external returns (address admin_); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct adminCall {} + ///Container type for the return parameters of the [`admin()`](adminCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct adminReturn { + pub admin_: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: adminCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for adminCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: adminReturn) -> Self { + (value.admin_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for adminReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { admin_: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for adminCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = adminReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "admin()"; + const SELECTOR: [u8; 4] = [248u8, 81u8, 164u8, 64u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `changeAdmin(address)` and selector `0x8f283970`. + ```solidity + function changeAdmin(address newAdmin) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct changeAdminCall { + pub newAdmin: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`changeAdmin(address)`](changeAdminCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct changeAdminReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: changeAdminCall) -> Self { + (value.newAdmin,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for changeAdminCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newAdmin: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: changeAdminReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for changeAdminReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for changeAdminCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = changeAdminReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "changeAdmin(address)"; + const SELECTOR: [u8; 4] = [143u8, 40u8, 57u8, 112u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newAdmin, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `implementation()` and selector `0x5c60da1b`. + ```solidity + function implementation() external returns (address implementation_); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct implementationCall {} + ///Container type for the return parameters of the [`implementation()`](implementationCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct implementationReturn { + pub implementation_: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: implementationCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for implementationCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: implementationReturn) -> Self { + (value.implementation_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for implementationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + implementation_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for implementationCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = implementationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "implementation()"; + const SELECTOR: [u8; 4] = [92u8, 96u8, 218u8, 27u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `upgradeTo(address)` and selector `0x3659cfe6`. + ```solidity + function upgradeTo(address newImplementation) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct upgradeToCall { + pub newImplementation: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`upgradeTo(address)`](upgradeToCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct upgradeToReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: upgradeToCall) -> Self { + (value.newImplementation,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for upgradeToCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newImplementation: tuple.0, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: upgradeToReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for upgradeToReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for upgradeToCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = upgradeToReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "upgradeTo(address)"; + const SELECTOR: [u8; 4] = [54u8, 89u8, 207u8, 230u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newImplementation, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`. + ```solidity + function upgradeToAndCall(address newImplementation, bytes memory data) external payable; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct upgradeToAndCallCall { + pub newImplementation: alloy::sol_types::private::Address, + pub data: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct upgradeToAndCallReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: upgradeToAndCallCall) -> Self { + (value.newImplementation, value.data) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for upgradeToAndCallCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newImplementation: tuple.0, + data: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: upgradeToAndCallReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for upgradeToAndCallReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for upgradeToAndCallCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = upgradeToAndCallReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)"; + const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newImplementation, + ), + ::tokenize( + &self.data, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`TransparentUpgradeableProxy`](self) function calls. + pub enum TransparentUpgradeableProxyCalls { + admin(adminCall), + changeAdmin(changeAdminCall), + implementation(implementationCall), + upgradeTo(upgradeToCall), + upgradeToAndCall(upgradeToAndCallCall), + } + #[automatically_derived] + impl TransparentUpgradeableProxyCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [54u8, 89u8, 207u8, 230u8], + [79u8, 30u8, 242u8, 134u8], + [92u8, 96u8, 218u8, 27u8], + [143u8, 40u8, 57u8, 112u8], + [248u8, 81u8, 164u8, 64u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for TransparentUpgradeableProxyCalls { + const NAME: &'static str = "TransparentUpgradeableProxyCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 5usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::admin(_) => ::SELECTOR, + Self::changeAdmin(_) => ::SELECTOR, + Self::implementation(_) => { + ::SELECTOR + } + Self::upgradeTo(_) => ::SELECTOR, + Self::upgradeToAndCall(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result< + TransparentUpgradeableProxyCalls, + >] = &[ + { + fn upgradeTo( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(TransparentUpgradeableProxyCalls::upgradeTo) + } + upgradeTo + }, + { + fn upgradeToAndCall( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(TransparentUpgradeableProxyCalls::upgradeToAndCall) + } + upgradeToAndCall + }, + { + fn implementation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(TransparentUpgradeableProxyCalls::implementation) + } + implementation + }, + { + fn changeAdmin( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw( + data, validate, + ) + .map(TransparentUpgradeableProxyCalls::changeAdmin) + } + changeAdmin + }, + { + fn admin( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result + { + ::abi_decode_raw(data, validate) + .map(TransparentUpgradeableProxyCalls::admin) + } + admin + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::admin(inner) => { + ::abi_encoded_size(inner) + } + Self::changeAdmin(inner) => { + ::abi_encoded_size(inner) + } + Self::implementation(inner) => { + ::abi_encoded_size(inner) + } + Self::upgradeTo(inner) => { + ::abi_encoded_size(inner) + } + Self::upgradeToAndCall(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::admin(inner) => { + ::abi_encode_raw(inner, out) + } + Self::changeAdmin(inner) => { + ::abi_encode_raw(inner, out) + } + Self::implementation(inner) => { + ::abi_encode_raw(inner, out) + } + Self::upgradeTo(inner) => { + ::abi_encode_raw(inner, out) + } + Self::upgradeToAndCall(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`TransparentUpgradeableProxy`](self) events. + pub enum TransparentUpgradeableProxyEvents { + AdminChanged(AdminChanged), + BeaconUpgraded(BeaconUpgraded), + Upgraded(Upgraded), + } + #[automatically_derived] + impl TransparentUpgradeableProxyEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 28u8, 243u8, 176u8, 58u8, 108u8, 241u8, 159u8, 162u8, 186u8, 186u8, 77u8, 241u8, + 72u8, 233u8, 220u8, 171u8, 237u8, 234u8, 127u8, 138u8, 92u8, 7u8, 132u8, 14u8, + 32u8, 126u8, 92u8, 8u8, 155u8, 233u8, 93u8, 62u8, + ], + [ + 126u8, 100u8, 77u8, 121u8, 66u8, 47u8, 23u8, 192u8, 30u8, 72u8, 148u8, 181u8, + 244u8, 245u8, 136u8, 211u8, 49u8, 235u8, 250u8, 40u8, 101u8, 61u8, 66u8, 174u8, + 131u8, 45u8, 197u8, 158u8, 56u8, 201u8, 121u8, 143u8, + ], + [ + 188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8, 179u8, + 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8, 12u8, 192u8, 34u8, + 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for TransparentUpgradeableProxyEvents { + const NAME: &'static str = "TransparentUpgradeableProxyEvents"; + const COUNT: usize = 3usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::AdminChanged) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, data, validate, + ) + .map(Self::BeaconUpgraded) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log(topics, data, validate) + .map(Self::Upgraded) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }), + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for TransparentUpgradeableProxyEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::AdminChanged(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::BeaconUpgraded(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Upgraded(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::AdminChanged(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::BeaconUpgraded(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Upgraded(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`TransparentUpgradeableProxy`](self) contract instance. + + See the [wrapper's documentation](`TransparentUpgradeableProxyInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> TransparentUpgradeableProxyInstance { + TransparentUpgradeableProxyInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _logic: alloy::sol_types::private::Address, + admin_: alloy::sol_types::private::Address, + _data: alloy::sol_types::private::Bytes, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + TransparentUpgradeableProxyInstance::::deploy(provider, _logic, admin_, _data) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _logic: alloy::sol_types::private::Address, + admin_: alloy::sol_types::private::Address, + _data: alloy::sol_types::private::Bytes, + ) -> alloy_contract::RawCallBuilder { + TransparentUpgradeableProxyInstance::::deploy_builder( + provider, _logic, admin_, _data, + ) + } + /**A [`TransparentUpgradeableProxy`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`TransparentUpgradeableProxy`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct TransparentUpgradeableProxyInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for TransparentUpgradeableProxyInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("TransparentUpgradeableProxyInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TransparentUpgradeableProxyInstance + { + /**Creates a new wrapper around an on-chain [`TransparentUpgradeableProxy`](self) contract instance. + + See the [wrapper's documentation](`TransparentUpgradeableProxyInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _logic: alloy::sol_types::private::Address, + admin_: alloy::sol_types::private::Address, + _data: alloy::sol_types::private::Bytes, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, _logic, admin_, _data); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _logic: alloy::sol_types::private::Address, + admin_: alloy::sol_types::private::Address, + _data: alloy::sol_types::private::Bytes, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode(&constructorCall { + _logic, + admin_, + _data, + })[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl TransparentUpgradeableProxyInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> TransparentUpgradeableProxyInstance { + TransparentUpgradeableProxyInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TransparentUpgradeableProxyInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`admin`] function. + pub fn admin(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&adminCall {}) + } + ///Creates a new call builder for the [`changeAdmin`] function. + pub fn changeAdmin( + &self, + newAdmin: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&changeAdminCall { newAdmin }) + } + ///Creates a new call builder for the [`implementation`] function. + pub fn implementation( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&implementationCall {}) + } + ///Creates a new call builder for the [`upgradeTo`] function. + pub fn upgradeTo( + &self, + newImplementation: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&upgradeToCall { newImplementation }) + } + ///Creates a new call builder for the [`upgradeToAndCall`] function. + pub fn upgradeToAndCall( + &self, + newImplementation: alloy::sol_types::private::Address, + data: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&upgradeToAndCallCall { + newImplementation, + data, + }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TransparentUpgradeableProxyInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`AdminChanged`] event. + pub fn AdminChanged_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`BeaconUpgraded`] event. + pub fn BeaconUpgraded_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Upgraded`] event. + pub fn Upgraded_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/utils/src/updateoperators.rs b/crates/utils/src/updateoperators.rs new file mode 100644 index 00000000..b37d2297 --- /dev/null +++ b/crates/utils/src/updateoperators.rs @@ -0,0 +1,695 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface UpdateOperators { + function IS_SCRIPT() external view returns (bool); + function run() external; + function setUp() external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_SCRIPT", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "run", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setUp", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod UpdateOperators { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052600c80546201000162ff00ff19909116179055600f80546001600160a01b031916735fbdb2315678afecb367f032d93f642f64180aa317905534801561004957600080fd5b50611825806100596000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630a9254e414610046578063c040622614610050578063f8ccbf4714610058575b600080fd5b61004e61007f565b005b61004e61016e565b600c5461006b9062010000900460ff1681565b604051901515815260200160405180910390f35b600a600e55617a69461480610095575046610539145b156100ca576040518060600160405280603b8152602001611791603b913980516100c791600d916020909101906112a2565b50565b60405163f877cb1960e01b81526020600482015260086024820152674d4e454d4f4e494360c01b6044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f877cb1990606401600060405180830381865afa158015610132573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261015a91908101906113f1565b80516100c791600d916020909101906112a2565b60006101786107cc565b90506000610184610a49565b90506000600e5467ffffffffffffffff8111156101a3576101a361133b565b6040519080825280602002602001820160405280156101cc578160200160208202803683370190505b5090506000600e5467ffffffffffffffff8111156101ec576101ec61133b565b604051908082528060200260200182016040528015610215578160200160208202803683370190505b5090506000600e5467ffffffffffffffff8111156102355761023561133b565b60405190808252806020026020018201604052801561025e578160200160208202803683370190505b50905060005b600e548110156103da576000610304600d80546102809061143a565b80601f01602080910402602001604051908101604052809291908181526020018280546102ac9061143a565b80156102f95780601f106102ce576101008083540402835291602001916102f9565b820191906000526020600020905b8154815290600101906020018083116102dc57829003601f168201915b505050505083610ad0565b5090508085838151811061031a5761031a611475565b60200260200101906001600160a01b031690816001600160a01b031681525050674563918244f4000084838151811061035557610355611475565b6020026020010181815250506103aa8260001b60405160200161037a91815260200190565b6040516020818303038152906040528051906020012060001c670de0b6b3a7640000678ac7230489e80000610bd1565b8383815181106103bc576103bc611475565b602090810291909101015250806103d2816114a1565b915050610264565b5060008051602061177183398151915260001c6001600160a01b0316637fb5297f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561042757600080fd5b505af115801561043b573d6000803e3d6000fd5b5050505061044b60008484610c15565b8351610458908483610c15565b60008051602061177183398151915260001c6001600160a01b03166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156104a457600080fd5b505af11580156104b8573d6000803e3d6000fd5b5050505060005b600e548110156107c457600080607890506000610566600d80546104e29061143a565b80601f016020809104026020016040519081016040528092919081815260200182805461050e9061143a565b801561055b5780601f106105305761010080835404028352916020019161055b565b820191906000526020600020905b81548152906001019060200180831161053e57829003601f168201915b505050505085610ad0565b60405163ce817d4760e01b815260048101829052909250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063ce817d4790602401600060405180830381600087803b1580156105b757600080fd5b505af11580156105cb573d6000803e3d6000fd5b5050600f5460405163566add5160e11b815260806004820152601c60848201527f746573745f6d6f646966795f6f70657261746f725f64657461696c730000000060a4820152602481018890524360448201524260648201526001600160a01b03909116925063acd5baa2915060c401600060405180830381600087803b15801561065557600080fd5b505af1158015610669573d6000803e3d6000fd5b5050505088606001516001600160a01b031663f16172b060405180606001604052808a888151811061069d5761069d611475565b60200260200101516001600160a01b03168152602001866001600160a01b031681526020018563ffffffff168152506040518263ffffffff1660e01b8152600401610718919081516001600160a01b0390811682526020808401519091169082015260409182015163ffffffff169181019190915260600190565b600060405180830381600087803b15801561073257600080fd5b505af1158015610746573d6000803e3d6000fd5b5050505060008051602061177183398151915260001c6001600160a01b03166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561079657600080fd5b505af11580156107aa573d6000803e3d6000fd5b5050505050505080806107bc906114a1565b9150506104bf565b505050505050565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810191909152600061084d6040518060400160405280601c81526020017f656967656e6c617965725f6465706c6f796d656e745f6f757470757400000000815250610d71565b90506000610890826040518060400160405280601f81526020017f2e6164647265737365732e656967656e4c6179657250726f787941646d696e00815250610f74565b905060006108d3836040518060400160405280601e81526020017f2e6164647265737365732e656967656e4c617965725061757365725265670000815250610f74565b90506000610916846040518060400160405280601a81526020017f2e6164647265737365732e73747261746567794d616e61676572000000000000815250610f74565b9050600061095185604051806040016040528060158152602001741730b2323932b9b9b2b9973232b632b3b0ba34b7b760591b815250610f74565b90506000610994866040518060400160405280601781526020017f2e6164647265737365732e6176734469726563746f7279000000000000000000815250610f74565b905060006109cc87604051806040016040528060128152602001711730b2323932b9b9b2b99739b630b9b432b960711b815250610f74565b905060006109f28860405180606001604052806025815260200161174c60259139610f74565b60408051610100810182526001600160a01b03998a1681529789166020890152958816958701959095525091851660608501529084166080840152831660a0830152600060c083015290911660e082015292915050565b60408051808201909152600080825260208201526000610a806040518060600160405280602481526020016117cc60249139610d71565b90506000610ab0826040518060400160405280600a8152602001692e61646472657373657360b01b815250610ff1565b9050600081806020019051810190610ac891906114d1565b949350505050565b604051636229498b60e01b81526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90636229498b90610b0e908790879060040161155c565b602060405180830381865afa158015610b2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4f9190611584565b604051630884001960e21b815260048101829052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906322100064906024016020604051808303816000875af1158015610ba4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc8919061159d565b91509250929050565b6000610bde848484611072565b9050610c0e6040518060400160405280600c81526020016b109bdd5b99081c995cdd5b1d60a21b81525082611234565b9392505050565b60005b8251811015610d6b576001600160a01b038416610ca057828181518110610c4157610c41611475565b60200260200101516001600160a01b03166108fc838381518110610c6757610c67611475565b60200260200101519081150290604051600060405180830381858888f19350505050158015610c9a573d6000803e3d6000fd5b50610d59565b836001600160a01b031663a9059cbb848381518110610cc157610cc1611475565b6020026020010151848481518110610cdb57610cdb611475565b60200260200101516040518363ffffffff1660e01b8152600401610d149291906001600160a01b03929092168252602082015260400190565b6020604051808303816000875af1158015610d33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5791906115ba565b505b80610d63816114a1565b915050610c18565b50505050565b6060600060008051602061177183398151915260001c6001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015610dc4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dec91908101906113f1565b604051602001610dfc91906115dc565b60408051808303601f190181529082905263348051d760e11b82524660048301529150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015610e5e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e8691908101906113f1565b604051602001610e96919061160f565b6040516020818303038152906040529050600084604051602001610eba9190611634565b60408051601f19818403018152908290529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906360f9bb1190610efb9086908690869060200161165d565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401610f2691906116a0565b600060405180830381865afa158015610f43573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f6b91908101906113f1565b95945050505050565b604051631e19e65760e01b8152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90631e19e65790610fb090869086906004016116b3565b602060405180830381865afa158015610fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0e919061159d565b6040516385940ef160e01b8152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d906385940ef19061102d90869086906004016116b3565b600060405180830381865afa15801561104a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c0e91908101906113f1565b6000818311156110ee5760405162461bcd60e51b815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e0000606482015260840160405180910390fd5b8284101580156110fe5750818411155b1561110a575082610c0e565b600061111684846116d8565b6111219060016116ef565b90506003851115801561113357508481115b1561114a5761114285856116ef565b915050610c0e565b61115760036000196116d8565b8510158015611170575061116d856000196116d8565b81115b1561118b57611181856000196116d8565b61114290846116d8565b828511156111de57600061119f84876116d8565b905060006111ad8383611707565b9050806111bf57849350505050610c0e565b60016111cb82886116ef565b6111d591906116d8565b9350505061122c565b8385101561122c5760006111f286866116d8565b905060006112008383611707565b90508061121257859350505050610c0e565b61121c81866116d8565b6112279060016116ef565b935050505b509392505050565b611279828260405160240161124a929190611729565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b17905261127d565b5050565b6100c78180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b8280546112ae9061143a565b90600052602060002090601f0160209004810192826112d05760008555611316565b82601f106112e957805160ff1916838001178555611316565b82800160010185558215611316579182015b828111156113165782518255916020019190600101906112fb565b50611322929150611326565b5090565b5b808211156113225760008155600101611327565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561136c578181015183820152602001611354565b83811115610d6b5750506000910152565b600067ffffffffffffffff808411156113985761139861133b565b604051601f8501601f19908116603f011681019082821181831017156113c0576113c061133b565b816040528093508581528686860111156113d957600080fd5b6113e7866020830187611351565b5050509392505050565b60006020828403121561140357600080fd5b815167ffffffffffffffff81111561141a57600080fd5b8201601f8101841361142b57600080fd5b610ac88482516020840161137d565b600181811c9082168061144e57607f821691505b6020821081141561146f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156114b5576114b561148b565b5060010190565b6001600160a01b03811681146100c757600080fd5b6000604082840312156114e357600080fd5b6040516040810181811067ffffffffffffffff821117156115065761150661133b565b6040528251611514816114bc565b81526020830151611524816114bc565b60208201529392505050565b60008151808452611548816020860160208601611351565b601f01601f19169290920160200192915050565b60408152600061156f6040830185611530565b905063ffffffff831660208301529392505050565b60006020828403121561159657600080fd5b5051919050565b6000602082840312156115af57600080fd5b8151610c0e816114bc565b6000602082840312156115cc57600080fd5b81518015158114610c0e57600080fd5b600082516115ee818460208701611351565b6e2f7363726970742f6f75747075742f60881b920191825250600f01919050565b60008251611621818460208701611351565b602f60f81b920191825250600101919050565b60008251611646818460208701611351565b64173539b7b760d91b920191825250600501919050565b6000845161166f818460208901611351565b845190830190611683818360208901611351565b8451910190611696818360208801611351565b0195945050505050565b602081526000610c0e6020830184611530565b6040815260006116c66040830185611530565b8281036020840152610f6b8185611530565b6000828210156116ea576116ea61148b565b500390565b600082198211156117025761170261148b565b500190565b60008261172457634e487b7160e01b600052601260045260246000fd5b500690565b60408152600061173c6040830185611530565b9050826020830152939250505056fe2e6164647265737365732e626173655374726174656779496d706c656d656e746174696f6e885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d746573742074657374207465737420746573742074657374207465737420746573742074657374207465737420746573742074657374206a756e6b746f6b656e5f616e645f73747261746567795f6465706c6f796d656e745f6f7574707574a2646970667358221220c6186b5403cb1099c5f0c4348d42857247c79fbbe78ad228b8223eadc0e3008e64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x0C\x80Tb\x01\0\x01b\xFF\0\xFF\x19\x90\x91\x16\x17\x90U`\x0F\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16s_\xBD\xB21Vx\xAF\xEC\xB3g\xF02\xD9?d/d\x18\n\xA3\x17\x90U4\x80\x15a\0IW`\0\x80\xFD[Pa\x18%\x80a\0Y`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\n\x92T\xE4\x14a\0FW\x80c\xC0@b&\x14a\0PW\x80c\xF8\xCC\xBFG\x14a\0XW[`\0\x80\xFD[a\0Na\0\x7FV[\0[a\0Na\x01nV[`\x0CTa\0k\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\n`\x0EUaziF\x14\x80a\0\x95WPFa\x059\x14[\x15a\0\xCAW`@Q\x80``\x01`@R\x80`;\x81R` \x01a\x17\x91`;\x919\x80Qa\0\xC7\x91`\r\x91` \x90\x91\x01\x90a\x12\xA2V[PV[`@Qc\xF8w\xCB\x19`\xE0\x1B\x81R` `\x04\x82\x01R`\x08`$\x82\x01RgMNEMONIC`\xC0\x1B`D\x82\x01Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xF8w\xCB\x19\x90`d\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x012W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x01Z\x91\x90\x81\x01\x90a\x13\xF1V[\x80Qa\0\xC7\x91`\r\x91` \x90\x91\x01\x90a\x12\xA2V[`\0a\x01xa\x07\xCCV[\x90P`\0a\x01\x84a\nIV[\x90P`\0`\x0ETg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\xA3Wa\x01\xA3a\x13;V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01\xCCW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0`\x0ETg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\xECWa\x01\xECa\x13;V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02\x15W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0`\x0ETg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x025Wa\x025a\x13;V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02^W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[`\x0ET\x81\x10\x15a\x03\xDAW`\0a\x03\x04`\r\x80Ta\x02\x80\x90a\x14:V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02\xAC\x90a\x14:V[\x80\x15a\x02\xF9W\x80`\x1F\x10a\x02\xCEWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02\xF9V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\xDCW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x83a\n\xD0V[P\x90P\x80\x85\x83\x81Q\x81\x10a\x03\x1AWa\x03\x1Aa\x14uV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPPgEc\x91\x82D\xF4\0\0\x84\x83\x81Q\x81\x10a\x03UWa\x03Ua\x14uV[` \x02` \x01\x01\x81\x81RPPa\x03\xAA\x82`\0\x1B`@Q` \x01a\x03z\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1Cg\r\xE0\xB6\xB3\xA7d\0\0g\x8A\xC7#\x04\x89\xE8\0\0a\x0B\xD1V[\x83\x83\x81Q\x81\x10a\x03\xBCWa\x03\xBCa\x14uV[` \x90\x81\x02\x91\x90\x91\x01\x01RP\x80a\x03\xD2\x81a\x14\xA1V[\x91PPa\x02dV[P`\0\x80Q` a\x17q\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04'W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04;W=`\0\x80>=`\0\xFD[PPPPa\x04K`\0\x84\x84a\x0C\x15V[\x83Qa\x04X\x90\x84\x83a\x0C\x15V[`\0\x80Q` a\x17q\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04\xA4W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xB8W=`\0\x80>=`\0\xFD[PPPP`\0[`\x0ET\x81\x10\x15a\x07\xC4W`\0\x80`x\x90P`\0a\x05f`\r\x80Ta\x04\xE2\x90a\x14:V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\x0E\x90a\x14:V[\x80\x15a\x05[W\x80`\x1F\x10a\x050Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05[V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05>W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x85a\n\xD0V[`@Qc\xCE\x81}G`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R\x90\x92Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x91Pc\xCE\x81}G\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x05\xB7W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05\xCBW=`\0\x80>=`\0\xFD[PP`\x0FT`@QcVj\xDDQ`\xE1\x1B\x81R`\x80`\x04\x82\x01R`\x1C`\x84\x82\x01R\x7Ftest_modify_operator_details\0\0\0\0`\xA4\x82\x01R`$\x81\x01\x88\x90RC`D\x82\x01RB`d\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc\xAC\xD5\xBA\xA2\x91P`\xC4\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06UW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06iW=`\0\x80>=`\0\xFD[PPPP\x88``\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xF1ar\xB0`@Q\x80``\x01`@R\x80\x8A\x88\x81Q\x81\x10a\x06\x9DWa\x06\x9Da\x14uV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x86`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x85c\xFF\xFF\xFF\xFF\x16\x81RP`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x07\x18\x91\x90\x81Q`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x82R` \x80\x84\x01Q\x90\x91\x16\x90\x82\x01R`@\x91\x82\x01Qc\xFF\xFF\xFF\xFF\x16\x91\x81\x01\x91\x90\x91R``\x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x072W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x07FW=`\0\x80>=`\0\xFD[PPPP`\0\x80Q` a\x17q\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07\x96W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x07\xAAW=`\0\x80>=`\0\xFD[PPPPPPP\x80\x80a\x07\xBC\x90a\x14\xA1V[\x91PPa\x04\xBFV[PPPPPPV[`@\x80Qa\x01\0\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x82\x90R`\x80\x81\x01\x82\x90R`\xA0\x81\x01\x82\x90R`\xC0\x81\x01\x82\x90R`\xE0\x81\x01\x91\x90\x91R`\0a\x08M`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7Feigenlayer_deployment_output\0\0\0\0\x81RPa\rqV[\x90P`\0a\x08\x90\x82`@Q\x80`@\x01`@R\x80`\x1F\x81R` \x01\x7F.addresses.eigenLayerProxyAdmin\0\x81RPa\x0FtV[\x90P`\0a\x08\xD3\x83`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7F.addresses.eigenLayerPauserReg\0\0\x81RPa\x0FtV[\x90P`\0a\t\x16\x84`@Q\x80`@\x01`@R\x80`\x1A\x81R` \x01\x7F.addresses.strategyManager\0\0\0\0\0\0\x81RPa\x0FtV[\x90P`\0a\tQ\x85`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01t\x170\xB2292\xB9\xB9\xB2\xB9\x9722\xB62\xB3\xB0\xBA4\xB7\xB7`Y\x1B\x81RPa\x0FtV[\x90P`\0a\t\x94\x86`@Q\x80`@\x01`@R\x80`\x17\x81R` \x01\x7F.addresses.avsDirectory\0\0\0\0\0\0\0\0\0\x81RPa\x0FtV[\x90P`\0a\t\xCC\x87`@Q\x80`@\x01`@R\x80`\x12\x81R` \x01q\x170\xB2292\xB9\xB9\xB2\xB9\x979\xB60\xB9\xB42\xB9`q\x1B\x81RPa\x0FtV[\x90P`\0a\t\xF2\x88`@Q\x80``\x01`@R\x80`%\x81R` \x01a\x17L`%\x919a\x0FtV[`@\x80Qa\x01\0\x81\x01\x82R`\x01`\x01`\xA0\x1B\x03\x99\x8A\x16\x81R\x97\x89\x16` \x89\x01R\x95\x88\x16\x95\x87\x01\x95\x90\x95RP\x91\x85\x16``\x85\x01R\x90\x84\x16`\x80\x84\x01R\x83\x16`\xA0\x83\x01R`\0`\xC0\x83\x01R\x90\x91\x16`\xE0\x82\x01R\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0a\n\x80`@Q\x80``\x01`@R\x80`$\x81R` \x01a\x17\xCC`$\x919a\rqV[\x90P`\0a\n\xB0\x82`@Q\x80`@\x01`@R\x80`\n\x81R` \x01i.addresses`\xB0\x1B\x81RPa\x0F\xF1V[\x90P`\0\x81\x80` \x01\x90Q\x81\x01\x90a\n\xC8\x91\x90a\x14\xD1V[\x94\x93PPPPV[`@Qcb)I\x8B`\xE0\x1B\x81R`\0\x90\x81\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90cb)I\x8B\x90a\x0B\x0E\x90\x87\x90\x87\x90`\x04\x01a\x15\\V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B+W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0BO\x91\x90a\x15\x84V[`@Qc\x08\x84\0\x19`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\"\x10\0d\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0B\xA4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\xC8\x91\x90a\x15\x9DV[\x91P\x92P\x92\x90PV[`\0a\x0B\xDE\x84\x84\x84a\x10rV[\x90Pa\x0C\x0E`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01k\x10\x9B\xDD[\x99\x08\x1C\x99\\\xDD[\x1D`\xA2\x1B\x81RP\x82a\x124V[\x93\x92PPPV[`\0[\x82Q\x81\x10\x15a\rkW`\x01`\x01`\xA0\x1B\x03\x84\x16a\x0C\xA0W\x82\x81\x81Q\x81\x10a\x0CAWa\x0CAa\x14uV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16a\x08\xFC\x83\x83\x81Q\x81\x10a\x0CgWa\x0Cga\x14uV[` \x02` \x01\x01Q\x90\x81\x15\x02\x90`@Q`\0`@Q\x80\x83\x03\x81\x85\x88\x88\xF1\x93PPPP\x15\x80\x15a\x0C\x9AW=`\0\x80>=`\0\xFD[Pa\rYV[\x83`\x01`\x01`\xA0\x1B\x03\x16c\xA9\x05\x9C\xBB\x84\x83\x81Q\x81\x10a\x0C\xC1Wa\x0C\xC1a\x14uV[` \x02` \x01\x01Q\x84\x84\x81Q\x81\x10a\x0C\xDBWa\x0C\xDBa\x14uV[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\x14\x92\x91\x90`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x82R` \x82\x01R`@\x01\x90V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\r3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\rW\x91\x90a\x15\xBAV[P[\x80a\rc\x81a\x14\xA1V[\x91PPa\x0C\x18V[PPPPV[```\0`\0\x80Q` a\x17q\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16c\xD90\xA0\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r\xC4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\r\xEC\x91\x90\x81\x01\x90a\x13\xF1V[`@Q` \x01a\r\xFC\x91\x90a\x15\xDCV[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x90\x82\x90Rc4\x80Q\xD7`\xE1\x1B\x82RF`\x04\x83\x01R\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E^W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0E\x86\x91\x90\x81\x01\x90a\x13\xF1V[`@Q` \x01a\x0E\x96\x91\x90a\x16\x0FV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x84`@Q` \x01a\x0E\xBA\x91\x90a\x164V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c`\xF9\xBB\x11\x90a\x0E\xFB\x90\x86\x90\x86\x90\x86\x90` \x01a\x16]V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F&\x91\x90a\x16\xA0V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0FCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0Fk\x91\x90\x81\x01\x90a\x13\xF1V[\x95\x94PPPPPV[`@Qc\x1E\x19\xE6W`\xE0\x1B\x81R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x1E\x19\xE6W\x90a\x0F\xB0\x90\x86\x90\x86\x90`\x04\x01a\x16\xB3V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\xCDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x0E\x91\x90a\x15\x9DV[`@Qc\x85\x94\x0E\xF1`\xE0\x1B\x81R``\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x85\x94\x0E\xF1\x90a\x10-\x90\x86\x90\x86\x90`\x04\x01a\x16\xB3V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10JW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0C\x0E\x91\x90\x81\x01\x90a\x13\xF1V[`\0\x81\x83\x11\x15a\x10\xEEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FStdUtils bound(uint256,uint256,u`D\x82\x01R\x7Fint256): Max is less than min.\0\0`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[\x82\x84\x10\x15\x80\x15a\x10\xFEWP\x81\x84\x11\x15[\x15a\x11\nWP\x82a\x0C\x0EV[`\0a\x11\x16\x84\x84a\x16\xD8V[a\x11!\x90`\x01a\x16\xEFV[\x90P`\x03\x85\x11\x15\x80\x15a\x113WP\x84\x81\x11[\x15a\x11JWa\x11B\x85\x85a\x16\xEFV[\x91PPa\x0C\x0EV[a\x11W`\x03`\0\x19a\x16\xD8V[\x85\x10\x15\x80\x15a\x11pWPa\x11m\x85`\0\x19a\x16\xD8V[\x81\x11[\x15a\x11\x8BWa\x11\x81\x85`\0\x19a\x16\xD8V[a\x11B\x90\x84a\x16\xD8V[\x82\x85\x11\x15a\x11\xDEW`\0a\x11\x9F\x84\x87a\x16\xD8V[\x90P`\0a\x11\xAD\x83\x83a\x17\x07V[\x90P\x80a\x11\xBFW\x84\x93PPPPa\x0C\x0EV[`\x01a\x11\xCB\x82\x88a\x16\xEFV[a\x11\xD5\x91\x90a\x16\xD8V[\x93PPPa\x12,V[\x83\x85\x10\x15a\x12,W`\0a\x11\xF2\x86\x86a\x16\xD8V[\x90P`\0a\x12\0\x83\x83a\x17\x07V[\x90P\x80a\x12\x12W\x85\x93PPPPa\x0C\x0EV[a\x12\x1C\x81\x86a\x16\xD8V[a\x12'\x90`\x01a\x16\xEFV[\x93PPP[P\x93\x92PPPV[a\x12y\x82\x82`@Q`$\x01a\x12J\x92\x91\x90a\x17)V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c-\x83\x9C\xB3`\xE2\x1B\x17\x90Ra\x12}V[PPV[a\0\xC7\x81\x80Qjconsole.log` \x83\x01`\0\x80\x84\x83\x85Z\xFAPPPPPV[\x82\x80Ta\x12\xAE\x90a\x14:V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82a\x12\xD0W`\0\x85Ua\x13\x16V[\x82`\x1F\x10a\x12\xE9W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ua\x13\x16V[\x82\x80\x01`\x01\x01\x85U\x82\x15a\x13\x16W\x91\x82\x01[\x82\x81\x11\x15a\x13\x16W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90a\x12\xFBV[Pa\x13\"\x92\x91Pa\x13&V[P\x90V[[\x80\x82\x11\x15a\x13\"W`\0\x81U`\x01\x01a\x13'V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x13lW\x81\x81\x01Q\x83\x82\x01R` \x01a\x13TV[\x83\x81\x11\x15a\rkWPP`\0\x91\x01RV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x13\x98Wa\x13\x98a\x13;V[`@Q`\x1F\x85\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x13\xC0Wa\x13\xC0a\x13;V[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x13\xD9W`\0\x80\xFD[a\x13\xE7\x86` \x83\x01\x87a\x13QV[PPP\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x14\x03W`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14\x1AW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x14+W`\0\x80\xFD[a\n\xC8\x84\x82Q` \x84\x01a\x13}V[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x14NW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x14oWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x14\xB5Wa\x14\xB5a\x14\x8BV[P`\x01\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xC7W`\0\x80\xFD[`\0`@\x82\x84\x03\x12\x15a\x14\xE3W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x15\x06Wa\x15\x06a\x13;V[`@R\x82Qa\x15\x14\x81a\x14\xBCV[\x81R` \x83\x01Qa\x15$\x81a\x14\xBCV[` \x82\x01R\x93\x92PPPV[`\0\x81Q\x80\x84Ra\x15H\x81` \x86\x01` \x86\x01a\x13QV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`@\x81R`\0a\x15o`@\x83\x01\x85a\x150V[\x90Pc\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x15\x96W`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x15\xAFW`\0\x80\xFD[\x81Qa\x0C\x0E\x81a\x14\xBCV[`\0` \x82\x84\x03\x12\x15a\x15\xCCW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0C\x0EW`\0\x80\xFD[`\0\x82Qa\x15\xEE\x81\x84` \x87\x01a\x13QV[n/script/output/`\x88\x1B\x92\x01\x91\x82RP`\x0F\x01\x91\x90PV[`\0\x82Qa\x16!\x81\x84` \x87\x01a\x13QV[`/`\xF8\x1B\x92\x01\x91\x82RP`\x01\x01\x91\x90PV[`\0\x82Qa\x16F\x81\x84` \x87\x01a\x13QV[d\x1759\xB7\xB7`\xD9\x1B\x92\x01\x91\x82RP`\x05\x01\x91\x90PV[`\0\x84Qa\x16o\x81\x84` \x89\x01a\x13QV[\x84Q\x90\x83\x01\x90a\x16\x83\x81\x83` \x89\x01a\x13QV[\x84Q\x91\x01\x90a\x16\x96\x81\x83` \x88\x01a\x13QV[\x01\x95\x94PPPPPV[` \x81R`\0a\x0C\x0E` \x83\x01\x84a\x150V[`@\x81R`\0a\x16\xC6`@\x83\x01\x85a\x150V[\x82\x81\x03` \x84\x01Ra\x0Fk\x81\x85a\x150V[`\0\x82\x82\x10\x15a\x16\xEAWa\x16\xEAa\x14\x8BV[P\x03\x90V[`\0\x82\x19\x82\x11\x15a\x17\x02Wa\x17\x02a\x14\x8BV[P\x01\x90V[`\0\x82a\x17$WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`@\x81R`\0a\x17<`@\x83\x01\x85a\x150V[\x90P\x82` \x83\x01R\x93\x92PPPV\xFE.addresses.baseStrategyImplementation\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-test test test test test test test test test test test junktoken_and_strategy_deployment_output\xA2dipfsX\"\x12 \xC6\x18kT\x03\xCB\x10\x99\xC5\xF0\xC44\x8DB\x85rG\xC7\x9F\xBB\xE7\x8A\xD2(\xB8\">\xAD\xC0\xE3\0\x8EdsolcC\0\x08\x0C\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100415760003560e01c80630a9254e414610046578063c040622614610050578063f8ccbf4714610058575b600080fd5b61004e61007f565b005b61004e61016e565b600c5461006b9062010000900460ff1681565b604051901515815260200160405180910390f35b600a600e55617a69461480610095575046610539145b156100ca576040518060600160405280603b8152602001611791603b913980516100c791600d916020909101906112a2565b50565b60405163f877cb1960e01b81526020600482015260086024820152674d4e454d4f4e494360c01b6044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f877cb1990606401600060405180830381865afa158015610132573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261015a91908101906113f1565b80516100c791600d916020909101906112a2565b60006101786107cc565b90506000610184610a49565b90506000600e5467ffffffffffffffff8111156101a3576101a361133b565b6040519080825280602002602001820160405280156101cc578160200160208202803683370190505b5090506000600e5467ffffffffffffffff8111156101ec576101ec61133b565b604051908082528060200260200182016040528015610215578160200160208202803683370190505b5090506000600e5467ffffffffffffffff8111156102355761023561133b565b60405190808252806020026020018201604052801561025e578160200160208202803683370190505b50905060005b600e548110156103da576000610304600d80546102809061143a565b80601f01602080910402602001604051908101604052809291908181526020018280546102ac9061143a565b80156102f95780601f106102ce576101008083540402835291602001916102f9565b820191906000526020600020905b8154815290600101906020018083116102dc57829003601f168201915b505050505083610ad0565b5090508085838151811061031a5761031a611475565b60200260200101906001600160a01b031690816001600160a01b031681525050674563918244f4000084838151811061035557610355611475565b6020026020010181815250506103aa8260001b60405160200161037a91815260200190565b6040516020818303038152906040528051906020012060001c670de0b6b3a7640000678ac7230489e80000610bd1565b8383815181106103bc576103bc611475565b602090810291909101015250806103d2816114a1565b915050610264565b5060008051602061177183398151915260001c6001600160a01b0316637fb5297f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561042757600080fd5b505af115801561043b573d6000803e3d6000fd5b5050505061044b60008484610c15565b8351610458908483610c15565b60008051602061177183398151915260001c6001600160a01b03166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156104a457600080fd5b505af11580156104b8573d6000803e3d6000fd5b5050505060005b600e548110156107c457600080607890506000610566600d80546104e29061143a565b80601f016020809104026020016040519081016040528092919081815260200182805461050e9061143a565b801561055b5780601f106105305761010080835404028352916020019161055b565b820191906000526020600020905b81548152906001019060200180831161053e57829003601f168201915b505050505085610ad0565b60405163ce817d4760e01b815260048101829052909250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063ce817d4790602401600060405180830381600087803b1580156105b757600080fd5b505af11580156105cb573d6000803e3d6000fd5b5050600f5460405163566add5160e11b815260806004820152601c60848201527f746573745f6d6f646966795f6f70657261746f725f64657461696c730000000060a4820152602481018890524360448201524260648201526001600160a01b03909116925063acd5baa2915060c401600060405180830381600087803b15801561065557600080fd5b505af1158015610669573d6000803e3d6000fd5b5050505088606001516001600160a01b031663f16172b060405180606001604052808a888151811061069d5761069d611475565b60200260200101516001600160a01b03168152602001866001600160a01b031681526020018563ffffffff168152506040518263ffffffff1660e01b8152600401610718919081516001600160a01b0390811682526020808401519091169082015260409182015163ffffffff169181019190915260600190565b600060405180830381600087803b15801561073257600080fd5b505af1158015610746573d6000803e3d6000fd5b5050505060008051602061177183398151915260001c6001600160a01b03166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561079657600080fd5b505af11580156107aa573d6000803e3d6000fd5b5050505050505080806107bc906114a1565b9150506104bf565b505050505050565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810191909152600061084d6040518060400160405280601c81526020017f656967656e6c617965725f6465706c6f796d656e745f6f757470757400000000815250610d71565b90506000610890826040518060400160405280601f81526020017f2e6164647265737365732e656967656e4c6179657250726f787941646d696e00815250610f74565b905060006108d3836040518060400160405280601e81526020017f2e6164647265737365732e656967656e4c617965725061757365725265670000815250610f74565b90506000610916846040518060400160405280601a81526020017f2e6164647265737365732e73747261746567794d616e61676572000000000000815250610f74565b9050600061095185604051806040016040528060158152602001741730b2323932b9b9b2b9973232b632b3b0ba34b7b760591b815250610f74565b90506000610994866040518060400160405280601781526020017f2e6164647265737365732e6176734469726563746f7279000000000000000000815250610f74565b905060006109cc87604051806040016040528060128152602001711730b2323932b9b9b2b99739b630b9b432b960711b815250610f74565b905060006109f28860405180606001604052806025815260200161174c60259139610f74565b60408051610100810182526001600160a01b03998a1681529789166020890152958816958701959095525091851660608501529084166080840152831660a0830152600060c083015290911660e082015292915050565b60408051808201909152600080825260208201526000610a806040518060600160405280602481526020016117cc60249139610d71565b90506000610ab0826040518060400160405280600a8152602001692e61646472657373657360b01b815250610ff1565b9050600081806020019051810190610ac891906114d1565b949350505050565b604051636229498b60e01b81526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90636229498b90610b0e908790879060040161155c565b602060405180830381865afa158015610b2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4f9190611584565b604051630884001960e21b815260048101829052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906322100064906024016020604051808303816000875af1158015610ba4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc8919061159d565b91509250929050565b6000610bde848484611072565b9050610c0e6040518060400160405280600c81526020016b109bdd5b99081c995cdd5b1d60a21b81525082611234565b9392505050565b60005b8251811015610d6b576001600160a01b038416610ca057828181518110610c4157610c41611475565b60200260200101516001600160a01b03166108fc838381518110610c6757610c67611475565b60200260200101519081150290604051600060405180830381858888f19350505050158015610c9a573d6000803e3d6000fd5b50610d59565b836001600160a01b031663a9059cbb848381518110610cc157610cc1611475565b6020026020010151848481518110610cdb57610cdb611475565b60200260200101516040518363ffffffff1660e01b8152600401610d149291906001600160a01b03929092168252602082015260400190565b6020604051808303816000875af1158015610d33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5791906115ba565b505b80610d63816114a1565b915050610c18565b50505050565b6060600060008051602061177183398151915260001c6001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015610dc4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dec91908101906113f1565b604051602001610dfc91906115dc565b60408051808303601f190181529082905263348051d760e11b82524660048301529150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015610e5e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e8691908101906113f1565b604051602001610e96919061160f565b6040516020818303038152906040529050600084604051602001610eba9190611634565b60408051601f19818403018152908290529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906360f9bb1190610efb9086908690869060200161165d565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401610f2691906116a0565b600060405180830381865afa158015610f43573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f6b91908101906113f1565b95945050505050565b604051631e19e65760e01b8152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90631e19e65790610fb090869086906004016116b3565b602060405180830381865afa158015610fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0e919061159d565b6040516385940ef160e01b8152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d906385940ef19061102d90869086906004016116b3565b600060405180830381865afa15801561104a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c0e91908101906113f1565b6000818311156110ee5760405162461bcd60e51b815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e0000606482015260840160405180910390fd5b8284101580156110fe5750818411155b1561110a575082610c0e565b600061111684846116d8565b6111219060016116ef565b90506003851115801561113357508481115b1561114a5761114285856116ef565b915050610c0e565b61115760036000196116d8565b8510158015611170575061116d856000196116d8565b81115b1561118b57611181856000196116d8565b61114290846116d8565b828511156111de57600061119f84876116d8565b905060006111ad8383611707565b9050806111bf57849350505050610c0e565b60016111cb82886116ef565b6111d591906116d8565b9350505061122c565b8385101561122c5760006111f286866116d8565b905060006112008383611707565b90508061121257859350505050610c0e565b61121c81866116d8565b6112279060016116ef565b935050505b509392505050565b611279828260405160240161124a929190611729565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b17905261127d565b5050565b6100c78180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b8280546112ae9061143a565b90600052602060002090601f0160209004810192826112d05760008555611316565b82601f106112e957805160ff1916838001178555611316565b82800160010185558215611316579182015b828111156113165782518255916020019190600101906112fb565b50611322929150611326565b5090565b5b808211156113225760008155600101611327565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561136c578181015183820152602001611354565b83811115610d6b5750506000910152565b600067ffffffffffffffff808411156113985761139861133b565b604051601f8501601f19908116603f011681019082821181831017156113c0576113c061133b565b816040528093508581528686860111156113d957600080fd5b6113e7866020830187611351565b5050509392505050565b60006020828403121561140357600080fd5b815167ffffffffffffffff81111561141a57600080fd5b8201601f8101841361142b57600080fd5b610ac88482516020840161137d565b600181811c9082168061144e57607f821691505b6020821081141561146f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156114b5576114b561148b565b5060010190565b6001600160a01b03811681146100c757600080fd5b6000604082840312156114e357600080fd5b6040516040810181811067ffffffffffffffff821117156115065761150661133b565b6040528251611514816114bc565b81526020830151611524816114bc565b60208201529392505050565b60008151808452611548816020860160208601611351565b601f01601f19169290920160200192915050565b60408152600061156f6040830185611530565b905063ffffffff831660208301529392505050565b60006020828403121561159657600080fd5b5051919050565b6000602082840312156115af57600080fd5b8151610c0e816114bc565b6000602082840312156115cc57600080fd5b81518015158114610c0e57600080fd5b600082516115ee818460208701611351565b6e2f7363726970742f6f75747075742f60881b920191825250600f01919050565b60008251611621818460208701611351565b602f60f81b920191825250600101919050565b60008251611646818460208701611351565b64173539b7b760d91b920191825250600501919050565b6000845161166f818460208901611351565b845190830190611683818360208901611351565b8451910190611696818360208801611351565b0195945050505050565b602081526000610c0e6020830184611530565b6040815260006116c66040830185611530565b8281036020840152610f6b8185611530565b6000828210156116ea576116ea61148b565b500390565b600082198211156117025761170261148b565b500190565b60008261172457634e487b7160e01b600052601260045260246000fd5b500690565b60408152600061173c6040830185611530565b9050826020830152939250505056fe2e6164647265737365732e626173655374726174656779496d706c656d656e746174696f6e885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d746573742074657374207465737420746573742074657374207465737420746573742074657374207465737420746573742074657374206a756e6b746f6b656e5f616e645f73747261746567795f6465706c6f796d656e745f6f7574707574a2646970667358221220c6186b5403cb1099c5f0c4348d42857247c79fbbe78ad228b8223eadc0e3008e64736f6c634300080c0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\n\x92T\xE4\x14a\0FW\x80c\xC0@b&\x14a\0PW\x80c\xF8\xCC\xBFG\x14a\0XW[`\0\x80\xFD[a\0Na\0\x7FV[\0[a\0Na\x01nV[`\x0CTa\0k\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\n`\x0EUaziF\x14\x80a\0\x95WPFa\x059\x14[\x15a\0\xCAW`@Q\x80``\x01`@R\x80`;\x81R` \x01a\x17\x91`;\x919\x80Qa\0\xC7\x91`\r\x91` \x90\x91\x01\x90a\x12\xA2V[PV[`@Qc\xF8w\xCB\x19`\xE0\x1B\x81R` `\x04\x82\x01R`\x08`$\x82\x01RgMNEMONIC`\xC0\x1B`D\x82\x01Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xF8w\xCB\x19\x90`d\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x012W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x01Z\x91\x90\x81\x01\x90a\x13\xF1V[\x80Qa\0\xC7\x91`\r\x91` \x90\x91\x01\x90a\x12\xA2V[`\0a\x01xa\x07\xCCV[\x90P`\0a\x01\x84a\nIV[\x90P`\0`\x0ETg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\xA3Wa\x01\xA3a\x13;V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01\xCCW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0`\x0ETg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\xECWa\x01\xECa\x13;V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02\x15W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0`\x0ETg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x025Wa\x025a\x13;V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x02^W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[`\x0ET\x81\x10\x15a\x03\xDAW`\0a\x03\x04`\r\x80Ta\x02\x80\x90a\x14:V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02\xAC\x90a\x14:V[\x80\x15a\x02\xF9W\x80`\x1F\x10a\x02\xCEWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02\xF9V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\xDCW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x83a\n\xD0V[P\x90P\x80\x85\x83\x81Q\x81\x10a\x03\x1AWa\x03\x1Aa\x14uV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPPgEc\x91\x82D\xF4\0\0\x84\x83\x81Q\x81\x10a\x03UWa\x03Ua\x14uV[` \x02` \x01\x01\x81\x81RPPa\x03\xAA\x82`\0\x1B`@Q` \x01a\x03z\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\0\x1Cg\r\xE0\xB6\xB3\xA7d\0\0g\x8A\xC7#\x04\x89\xE8\0\0a\x0B\xD1V[\x83\x83\x81Q\x81\x10a\x03\xBCWa\x03\xBCa\x14uV[` \x90\x81\x02\x91\x90\x91\x01\x01RP\x80a\x03\xD2\x81a\x14\xA1V[\x91PPa\x02dV[P`\0\x80Q` a\x17q\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04'W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04;W=`\0\x80>=`\0\xFD[PPPPa\x04K`\0\x84\x84a\x0C\x15V[\x83Qa\x04X\x90\x84\x83a\x0C\x15V[`\0\x80Q` a\x17q\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04\xA4W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xB8W=`\0\x80>=`\0\xFD[PPPP`\0[`\x0ET\x81\x10\x15a\x07\xC4W`\0\x80`x\x90P`\0a\x05f`\r\x80Ta\x04\xE2\x90a\x14:V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\x0E\x90a\x14:V[\x80\x15a\x05[W\x80`\x1F\x10a\x050Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05[V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05>W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x85a\n\xD0V[`@Qc\xCE\x81}G`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R\x90\x92Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x91Pc\xCE\x81}G\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x05\xB7W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05\xCBW=`\0\x80>=`\0\xFD[PP`\x0FT`@QcVj\xDDQ`\xE1\x1B\x81R`\x80`\x04\x82\x01R`\x1C`\x84\x82\x01R\x7Ftest_modify_operator_details\0\0\0\0`\xA4\x82\x01R`$\x81\x01\x88\x90RC`D\x82\x01RB`d\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc\xAC\xD5\xBA\xA2\x91P`\xC4\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06UW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06iW=`\0\x80>=`\0\xFD[PPPP\x88``\x01Q`\x01`\x01`\xA0\x1B\x03\x16c\xF1ar\xB0`@Q\x80``\x01`@R\x80\x8A\x88\x81Q\x81\x10a\x06\x9DWa\x06\x9Da\x14uV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x86`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x85c\xFF\xFF\xFF\xFF\x16\x81RP`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x07\x18\x91\x90\x81Q`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x82R` \x80\x84\x01Q\x90\x91\x16\x90\x82\x01R`@\x91\x82\x01Qc\xFF\xFF\xFF\xFF\x16\x91\x81\x01\x91\x90\x91R``\x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x072W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x07FW=`\0\x80>=`\0\xFD[PPPP`\0\x80Q` a\x17q\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x07\x96W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x07\xAAW=`\0\x80>=`\0\xFD[PPPPPPP\x80\x80a\x07\xBC\x90a\x14\xA1V[\x91PPa\x04\xBFV[PPPPPPV[`@\x80Qa\x01\0\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x82\x90R`\x80\x81\x01\x82\x90R`\xA0\x81\x01\x82\x90R`\xC0\x81\x01\x82\x90R`\xE0\x81\x01\x91\x90\x91R`\0a\x08M`@Q\x80`@\x01`@R\x80`\x1C\x81R` \x01\x7Feigenlayer_deployment_output\0\0\0\0\x81RPa\rqV[\x90P`\0a\x08\x90\x82`@Q\x80`@\x01`@R\x80`\x1F\x81R` \x01\x7F.addresses.eigenLayerProxyAdmin\0\x81RPa\x0FtV[\x90P`\0a\x08\xD3\x83`@Q\x80`@\x01`@R\x80`\x1E\x81R` \x01\x7F.addresses.eigenLayerPauserReg\0\0\x81RPa\x0FtV[\x90P`\0a\t\x16\x84`@Q\x80`@\x01`@R\x80`\x1A\x81R` \x01\x7F.addresses.strategyManager\0\0\0\0\0\0\x81RPa\x0FtV[\x90P`\0a\tQ\x85`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01t\x170\xB2292\xB9\xB9\xB2\xB9\x9722\xB62\xB3\xB0\xBA4\xB7\xB7`Y\x1B\x81RPa\x0FtV[\x90P`\0a\t\x94\x86`@Q\x80`@\x01`@R\x80`\x17\x81R` \x01\x7F.addresses.avsDirectory\0\0\0\0\0\0\0\0\0\x81RPa\x0FtV[\x90P`\0a\t\xCC\x87`@Q\x80`@\x01`@R\x80`\x12\x81R` \x01q\x170\xB2292\xB9\xB9\xB2\xB9\x979\xB60\xB9\xB42\xB9`q\x1B\x81RPa\x0FtV[\x90P`\0a\t\xF2\x88`@Q\x80``\x01`@R\x80`%\x81R` \x01a\x17L`%\x919a\x0FtV[`@\x80Qa\x01\0\x81\x01\x82R`\x01`\x01`\xA0\x1B\x03\x99\x8A\x16\x81R\x97\x89\x16` \x89\x01R\x95\x88\x16\x95\x87\x01\x95\x90\x95RP\x91\x85\x16``\x85\x01R\x90\x84\x16`\x80\x84\x01R\x83\x16`\xA0\x83\x01R`\0`\xC0\x83\x01R\x90\x91\x16`\xE0\x82\x01R\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`\0a\n\x80`@Q\x80``\x01`@R\x80`$\x81R` \x01a\x17\xCC`$\x919a\rqV[\x90P`\0a\n\xB0\x82`@Q\x80`@\x01`@R\x80`\n\x81R` \x01i.addresses`\xB0\x1B\x81RPa\x0F\xF1V[\x90P`\0\x81\x80` \x01\x90Q\x81\x01\x90a\n\xC8\x91\x90a\x14\xD1V[\x94\x93PPPPV[`@Qcb)I\x8B`\xE0\x1B\x81R`\0\x90\x81\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90cb)I\x8B\x90a\x0B\x0E\x90\x87\x90\x87\x90`\x04\x01a\x15\\V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B+W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0BO\x91\x90a\x15\x84V[`@Qc\x08\x84\0\x19`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\"\x10\0d\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x0B\xA4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\xC8\x91\x90a\x15\x9DV[\x91P\x92P\x92\x90PV[`\0a\x0B\xDE\x84\x84\x84a\x10rV[\x90Pa\x0C\x0E`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01k\x10\x9B\xDD[\x99\x08\x1C\x99\\\xDD[\x1D`\xA2\x1B\x81RP\x82a\x124V[\x93\x92PPPV[`\0[\x82Q\x81\x10\x15a\rkW`\x01`\x01`\xA0\x1B\x03\x84\x16a\x0C\xA0W\x82\x81\x81Q\x81\x10a\x0CAWa\x0CAa\x14uV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16a\x08\xFC\x83\x83\x81Q\x81\x10a\x0CgWa\x0Cga\x14uV[` \x02` \x01\x01Q\x90\x81\x15\x02\x90`@Q`\0`@Q\x80\x83\x03\x81\x85\x88\x88\xF1\x93PPPP\x15\x80\x15a\x0C\x9AW=`\0\x80>=`\0\xFD[Pa\rYV[\x83`\x01`\x01`\xA0\x1B\x03\x16c\xA9\x05\x9C\xBB\x84\x83\x81Q\x81\x10a\x0C\xC1Wa\x0C\xC1a\x14uV[` \x02` \x01\x01Q\x84\x84\x81Q\x81\x10a\x0C\xDBWa\x0C\xDBa\x14uV[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\x14\x92\x91\x90`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x82R` \x82\x01R`@\x01\x90V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\r3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\rW\x91\x90a\x15\xBAV[P[\x80a\rc\x81a\x14\xA1V[\x91PPa\x0C\x18V[PPPPV[```\0`\0\x80Q` a\x17q\x839\x81Q\x91R`\0\x1C`\x01`\x01`\xA0\x1B\x03\x16c\xD90\xA0\xE6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r\xC4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\r\xEC\x91\x90\x81\x01\x90a\x13\xF1V[`@Q` \x01a\r\xFC\x91\x90a\x15\xDCV[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x90\x82\x90Rc4\x80Q\xD7`\xE1\x1B\x82RF`\x04\x83\x01R\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90ci\0\xA3\xAE\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E^W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0E\x86\x91\x90\x81\x01\x90a\x13\xF1V[`@Q` \x01a\x0E\x96\x91\x90a\x16\x0FV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x84`@Q` \x01a\x0E\xBA\x91\x90a\x164V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c`\xF9\xBB\x11\x90a\x0E\xFB\x90\x86\x90\x86\x90\x86\x90` \x01a\x16]V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F&\x91\x90a\x16\xA0V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0FCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0Fk\x91\x90\x81\x01\x90a\x13\xF1V[\x95\x94PPPPPV[`@Qc\x1E\x19\xE6W`\xE0\x1B\x81R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x1E\x19\xE6W\x90a\x0F\xB0\x90\x86\x90\x86\x90`\x04\x01a\x16\xB3V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\xCDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x0E\x91\x90a\x15\x9DV[`@Qc\x85\x94\x0E\xF1`\xE0\x1B\x81R``\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x85\x94\x0E\xF1\x90a\x10-\x90\x86\x90\x86\x90`\x04\x01a\x16\xB3V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10JW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0C\x0E\x91\x90\x81\x01\x90a\x13\xF1V[`\0\x81\x83\x11\x15a\x10\xEEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FStdUtils bound(uint256,uint256,u`D\x82\x01R\x7Fint256): Max is less than min.\0\0`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[\x82\x84\x10\x15\x80\x15a\x10\xFEWP\x81\x84\x11\x15[\x15a\x11\nWP\x82a\x0C\x0EV[`\0a\x11\x16\x84\x84a\x16\xD8V[a\x11!\x90`\x01a\x16\xEFV[\x90P`\x03\x85\x11\x15\x80\x15a\x113WP\x84\x81\x11[\x15a\x11JWa\x11B\x85\x85a\x16\xEFV[\x91PPa\x0C\x0EV[a\x11W`\x03`\0\x19a\x16\xD8V[\x85\x10\x15\x80\x15a\x11pWPa\x11m\x85`\0\x19a\x16\xD8V[\x81\x11[\x15a\x11\x8BWa\x11\x81\x85`\0\x19a\x16\xD8V[a\x11B\x90\x84a\x16\xD8V[\x82\x85\x11\x15a\x11\xDEW`\0a\x11\x9F\x84\x87a\x16\xD8V[\x90P`\0a\x11\xAD\x83\x83a\x17\x07V[\x90P\x80a\x11\xBFW\x84\x93PPPPa\x0C\x0EV[`\x01a\x11\xCB\x82\x88a\x16\xEFV[a\x11\xD5\x91\x90a\x16\xD8V[\x93PPPa\x12,V[\x83\x85\x10\x15a\x12,W`\0a\x11\xF2\x86\x86a\x16\xD8V[\x90P`\0a\x12\0\x83\x83a\x17\x07V[\x90P\x80a\x12\x12W\x85\x93PPPPa\x0C\x0EV[a\x12\x1C\x81\x86a\x16\xD8V[a\x12'\x90`\x01a\x16\xEFV[\x93PPP[P\x93\x92PPPV[a\x12y\x82\x82`@Q`$\x01a\x12J\x92\x91\x90a\x17)V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c-\x83\x9C\xB3`\xE2\x1B\x17\x90Ra\x12}V[PPV[a\0\xC7\x81\x80Qjconsole.log` \x83\x01`\0\x80\x84\x83\x85Z\xFAPPPPPV[\x82\x80Ta\x12\xAE\x90a\x14:V[\x90`\0R` `\0 \x90`\x1F\x01` \x90\x04\x81\x01\x92\x82a\x12\xD0W`\0\x85Ua\x13\x16V[\x82`\x1F\x10a\x12\xE9W\x80Q`\xFF\x19\x16\x83\x80\x01\x17\x85Ua\x13\x16V[\x82\x80\x01`\x01\x01\x85U\x82\x15a\x13\x16W\x91\x82\x01[\x82\x81\x11\x15a\x13\x16W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90a\x12\xFBV[Pa\x13\"\x92\x91Pa\x13&V[P\x90V[[\x80\x82\x11\x15a\x13\"W`\0\x81U`\x01\x01a\x13'V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x13lW\x81\x81\x01Q\x83\x82\x01R` \x01a\x13TV[\x83\x81\x11\x15a\rkWPP`\0\x91\x01RV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x13\x98Wa\x13\x98a\x13;V[`@Q`\x1F\x85\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x13\xC0Wa\x13\xC0a\x13;V[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x13\xD9W`\0\x80\xFD[a\x13\xE7\x86` \x83\x01\x87a\x13QV[PPP\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x14\x03W`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14\x1AW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x14+W`\0\x80\xFD[a\n\xC8\x84\x82Q` \x84\x01a\x13}V[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x14NW`\x7F\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x14oWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15a\x14\xB5Wa\x14\xB5a\x14\x8BV[P`\x01\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xC7W`\0\x80\xFD[`\0`@\x82\x84\x03\x12\x15a\x14\xE3W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x15\x06Wa\x15\x06a\x13;V[`@R\x82Qa\x15\x14\x81a\x14\xBCV[\x81R` \x83\x01Qa\x15$\x81a\x14\xBCV[` \x82\x01R\x93\x92PPPV[`\0\x81Q\x80\x84Ra\x15H\x81` \x86\x01` \x86\x01a\x13QV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`@\x81R`\0a\x15o`@\x83\x01\x85a\x150V[\x90Pc\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x15\x96W`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x15\xAFW`\0\x80\xFD[\x81Qa\x0C\x0E\x81a\x14\xBCV[`\0` \x82\x84\x03\x12\x15a\x15\xCCW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x0C\x0EW`\0\x80\xFD[`\0\x82Qa\x15\xEE\x81\x84` \x87\x01a\x13QV[n/script/output/`\x88\x1B\x92\x01\x91\x82RP`\x0F\x01\x91\x90PV[`\0\x82Qa\x16!\x81\x84` \x87\x01a\x13QV[`/`\xF8\x1B\x92\x01\x91\x82RP`\x01\x01\x91\x90PV[`\0\x82Qa\x16F\x81\x84` \x87\x01a\x13QV[d\x1759\xB7\xB7`\xD9\x1B\x92\x01\x91\x82RP`\x05\x01\x91\x90PV[`\0\x84Qa\x16o\x81\x84` \x89\x01a\x13QV[\x84Q\x90\x83\x01\x90a\x16\x83\x81\x83` \x89\x01a\x13QV[\x84Q\x91\x01\x90a\x16\x96\x81\x83` \x88\x01a\x13QV[\x01\x95\x94PPPPPV[` \x81R`\0a\x0C\x0E` \x83\x01\x84a\x150V[`@\x81R`\0a\x16\xC6`@\x83\x01\x85a\x150V[\x82\x81\x03` \x84\x01Ra\x0Fk\x81\x85a\x150V[`\0\x82\x82\x10\x15a\x16\xEAWa\x16\xEAa\x14\x8BV[P\x03\x90V[`\0\x82\x19\x82\x11\x15a\x17\x02Wa\x17\x02a\x14\x8BV[P\x01\x90V[`\0\x82a\x17$WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V[`@\x81R`\0a\x17<`@\x83\x01\x85a\x150V[\x90P\x82` \x83\x01R\x93\x92PPPV\xFE.addresses.baseStrategyImplementation\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-test test test test test test test test test test test junktoken_and_strategy_deployment_output\xA2dipfsX\"\x12 \xC6\x18kT\x03\xCB\x10\x99\xC5\xF0\xC44\x8DB\x85rG\xC7\x9F\xBB\xE7\x8A\xD2(\xB8\">\xAD\xC0\xE3\0\x8EdsolcC\0\x08\x0C\x003", + ); + /**Function with signature `IS_SCRIPT()` and selector `0xf8ccbf47`. + ```solidity + function IS_SCRIPT() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_SCRIPTCall {} + ///Container type for the return parameters of the [`IS_SCRIPT()`](IS_SCRIPTCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_SCRIPTReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_SCRIPTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_SCRIPTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_SCRIPT()"; + const SELECTOR: [u8; 4] = [248u8, 204u8, 191u8, 71u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `run()` and selector `0xc0406226`. + ```solidity + function run() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct runCall {} + ///Container type for the return parameters of the [`run()`](runCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct runReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: runCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for runCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: runReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for runReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for runCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = runReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "run()"; + const SELECTOR: [u8; 4] = [192u8, 64u8, 98u8, 38u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setUp()` and selector `0x0a9254e4`. + ```solidity + function setUp() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setUpCall {} + ///Container type for the return parameters of the [`setUp()`](setUpCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setUpReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setUpCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setUpCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setUpReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setUpReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setUpCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setUpReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setUp()"; + const SELECTOR: [u8; 4] = [10u8, 146u8, 84u8, 228u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`UpdateOperators`](self) function calls. + pub enum UpdateOperatorsCalls { + IS_SCRIPT(IS_SCRIPTCall), + run(runCall), + setUp(setUpCall), + } + #[automatically_derived] + impl UpdateOperatorsCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [10u8, 146u8, 84u8, 228u8], + [192u8, 64u8, 98u8, 38u8], + [248u8, 204u8, 191u8, 71u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for UpdateOperatorsCalls { + const NAME: &'static str = "UpdateOperatorsCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 3usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_SCRIPT(_) => ::SELECTOR, + Self::run(_) => ::SELECTOR, + Self::setUp(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) + -> alloy_sol_types::Result] = &[ + { + fn setUp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(UpdateOperatorsCalls::setUp) + } + setUp + }, + { + fn run( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(UpdateOperatorsCalls::run) + } + run + }, + { + fn IS_SCRIPT( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data, validate) + .map(UpdateOperatorsCalls::IS_SCRIPT) + } + IS_SCRIPT + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + )); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encoded_size(inner) + } + Self::run(inner) => ::abi_encoded_size(inner), + Self::setUp(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encode_raw(inner, out) + } + Self::run(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setUp(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`UpdateOperators`](self) contract instance. + + See the [wrapper's documentation](`UpdateOperatorsInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> UpdateOperatorsInstance { + UpdateOperatorsInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future>> + { + UpdateOperatorsInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> alloy_contract::RawCallBuilder { + UpdateOperatorsInstance::::deploy_builder(provider) + } + /**A [`UpdateOperators`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`UpdateOperators`](self) contract located at a given `address`, using a given + provider `P`. + + If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) + documentation on how to provide it), the `deploy` and `deploy_builder` methods can + be used to deploy a new instance of the contract. + + See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct UpdateOperatorsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for UpdateOperatorsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("UpdateOperatorsInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > UpdateOperatorsInstance + { + /**Creates a new wrapper around an on-chain [`UpdateOperators`](self) contract instance. + + See the [wrapper's documentation](`UpdateOperatorsInstance`) for more details.*/ + #[inline] + pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + + Returns a new instance of the contract, if the deployment was successful. + + For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` + and constructor arguments, if any. + + This is a simple wrapper around creating a `RawCallBuilder` with the data set to + the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl UpdateOperatorsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> UpdateOperatorsInstance { + UpdateOperatorsInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > UpdateOperatorsInstance + { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`IS_SCRIPT`] function. + pub fn IS_SCRIPT(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_SCRIPTCall {}) + } + ///Creates a new call builder for the [`run`] function. + pub fn run(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&runCall {}) + } + ///Creates a new call builder for the [`setUp`] function. + pub fn setUp(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&setUpCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > UpdateOperatorsInstance + { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/examples/avsregistry-read/examples/get_operators_stake_in_quorums_at_block.rs b/examples/avsregistry-read/examples/get_operators_stake_in_quorums_at_block.rs index c58f1bdc..f78a538b 100644 --- a/examples/avsregistry-read/examples/get_operators_stake_in_quorums_at_block.rs +++ b/examples/avsregistry-read/examples/get_operators_stake_in_quorums_at_block.rs @@ -18,17 +18,12 @@ async fn main() -> Result<()> { .await .expect("failed to build avs registry chain reader"); let block_num = 1741955; - let operators_state = avs_registry + let _operators_state = avs_registry .get_operators_stake_in_quorums_at_block( block_num, Bytes::from_hex("0x00").expect("failed to generate bytes"), ) .await?; - println!( - "operator state at block : {:?} is {:?}", - block_num, operators_state - ); - Ok(()) } diff --git a/testing/testing-utils/Cargo.toml b/testing/testing-utils/Cargo.toml index 33c0c6e4..bc4d8275 100644 --- a/testing/testing-utils/Cargo.toml +++ b/testing/testing-utils/Cargo.toml @@ -12,13 +12,10 @@ repository.workspace = true workspace = true [dependencies] -alloy-network.workspace = true alloy-primitives.workspace = true -alloy-provider.workspace = true -alloy-transport-http.workspace = true eigen-utils.workspace = true -once_cell.workspace = true serde.workspace = true serde_json.workspace = true tokio.workspace = true testcontainers.workspace = true +alloy.workspace = true \ No newline at end of file diff --git a/testing/testing-utils/src/anvil_constants.rs b/testing/testing-utils/src/anvil_constants.rs index d86efb62..8c390eb6 100644 --- a/testing/testing-utils/src/anvil_constants.rs +++ b/testing/testing-utils/src/anvil_constants.rs @@ -1,16 +1,9 @@ //! Anvil utilities -use alloy_network::Ethereum; use alloy_primitives::{address, Address}; -use alloy_provider::{ - fillers::{ChainIdFiller, FillProvider, GasFiller, JoinFill, NonceFiller}, - RootProvider, -}; -use alloy_transport_http::{Client, Http}; use eigen_utils::{ - binding::ContractsRegistry::{self, contractsReturn}, + contractsregistry::ContractsRegistry::{self, contractsReturn}, get_provider, }; -use once_cell::sync::Lazy; /// Local anvil ContractsRegistry which contains a mapping of all locally deployed EL contracts. pub const CONTRACTS_REGISTRY: Address = address!("5FbDB2315678afecb367f032d93F642f64180aa3"); @@ -22,22 +15,11 @@ pub const ANVIL_HTTP_URL: &str = "http://localhost:8545"; pub const ANVIL_WS_URL: &str = "ws://localhost:8545"; #[allow(clippy::type_complexity)] -/// Local anvil rpc url alloy instance -pub static ANVIL_RPC_URL: Lazy< - FillProvider< - JoinFill< - JoinFill, NonceFiller>, - ChainIdFiller, - >, - RootProvider>, - Http, - Ethereum, - >, -> = Lazy::new(|| get_provider(ANVIL_HTTP_URL)); /// Service Manager contract address pub async fn get_service_manager_address(rpc_url: String) -> Address { - let contracts_registry = ContractsRegistry::new(CONTRACTS_REGISTRY, get_provider(&rpc_url)); + let provider = get_provider(&rpc_url); + let contracts_registry = ContractsRegistry::new(CONTRACTS_REGISTRY, provider); let val = contracts_registry .contracts("mockAvsServiceManager".to_string()) diff --git a/testing/testing-utils/src/transaction.rs b/testing/testing-utils/src/transaction.rs index f2ff357c..cbe7381f 100644 --- a/testing/testing-utils/src/transaction.rs +++ b/testing/testing-utils/src/transaction.rs @@ -1,8 +1,7 @@ +use alloy::providers::Provider; use alloy_primitives::FixedBytes; -use alloy_provider::Provider; use eigen_utils::get_provider; use tokio::time::{sleep, Duration}; - /// Retrieves the status of a transaction from its hash. /// /// # Arguments